From 3fa6102998e270ba5e50d9949a206a50deb1dc88 Mon Sep 17 00:00:00 2001 From: Kelvin Fichter Date: Mon, 14 Dec 2020 11:58:10 -0800 Subject: [PATCH 1/4] Bumped version and depds --- packages/ovm-toolchain/package.json | 6 +- yarn.lock | 187 +++++++++++++++++++++------- 2 files changed, 142 insertions(+), 51 deletions(-) diff --git a/packages/ovm-toolchain/package.json b/packages/ovm-toolchain/package.json index 36a03fe9e5bd..f2b747f9b058 100644 --- a/packages/ovm-toolchain/package.json +++ b/packages/ovm-toolchain/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/ovm-toolchain", - "version": "0.0.1-alpha.14", + "version": "0.0.1-alpha.15", "description": "Wrappers for Ethereum dev tools", "main": "build/index.js", "private": true, @@ -73,9 +73,9 @@ "web3": "^1.2.11" }, "dependencies": { - "@eth-optimism/contracts": "^0.0.2-alpha.10", + "@eth-optimism/contracts": "^0.0.2-alpha.14", "@eth-optimism/core-utils": "^0.0.1-alpha.30", - "@eth-optimism/ethereumjs-vm": "4.2.0-alpha.1", + "@eth-optimism/ethereumjs-vm": "4.2.0-alpha.2", "@nomiclabs/buidler": "^1.4.4", "bn.js": "^5.1.3", "child_process": "^1.0.2", diff --git a/yarn.lock b/yarn.lock index c4597d30f29c..961593953ab4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,13 +39,17 @@ resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== -"@eth-optimism/contracts@^0.0.2-alpha.10": - version "0.0.2-alpha.10" - resolved "https://registry.yarnpkg.com/@eth-optimism/contracts/-/contracts-0.0.2-alpha.10.tgz#45356257f67a362d351779354130b7cacbfd674f" - integrity sha512-0Z0Jmga0Aqt6tUG9Lux9ubPpyrD8XrHN15nF+IJdRBc34Nk6hdtXiNW65rAdQcBlS+ubfNDC72J4LWNulTZiAg== +"@eth-optimism/contracts@^0.0.2-alpha.14": + version "0.0.2-alpha.14" + resolved "https://registry.yarnpkg.com/@eth-optimism/contracts/-/contracts-0.0.2-alpha.14.tgz#382ae9250e7d89e7729bcfe73ffdb85897e385c2" + integrity sha512-EeOKiQ+Tu/bZqlq2bsXJegRYHhBXlcDO+fNXG1NJyies23rcLrjR7LMocJmw/F9TpYJ08UqvOHttD5w//cntpg== dependencies: + "@eth-optimism/solc" "^0.6.12-alpha.1" + "@ethersproject/contracts" "^5.0.5" "@ethersproject/hardware-wallets" "^5.0.8" + "@openzeppelin/contracts" "^3.3.0" ethers "5.0.0" + ganache-core "^2.12.1" "@eth-optimism/contracts@^0.0.2-alpha.7": version "0.0.2-alpha.7" @@ -54,10 +58,10 @@ dependencies: ethers "5.0.0" -"@eth-optimism/ethereumjs-vm@4.2.0-alpha.1": - version "4.2.0-alpha.1" - resolved "https://registry.yarnpkg.com/@eth-optimism/ethereumjs-vm/-/ethereumjs-vm-4.2.0-alpha.1.tgz#6e0f2c2920a54a5675d79a97b3664c7c3b6ea99a" - integrity sha512-QjdjflNzJiU9gwuKHsvxZwzCqmAvdl/DJSKq2bzyNaLNlS3/0usOTSf9umpNLN/do4rQwS3thAB6vDp8ciSTSQ== +"@eth-optimism/ethereumjs-vm@4.2.0-alpha.2": + version "4.2.0-alpha.2" + resolved "https://registry.yarnpkg.com/@eth-optimism/ethereumjs-vm/-/ethereumjs-vm-4.2.0-alpha.2.tgz#e8af5e0594224c36bb9f6756cf0ff38467d265b8" + integrity sha512-9poKtgi0En8uSyhPZeM0cwjBGHRU9xwnlpvpZUuYvwP8972DzpfPEQ4zyqiOb1qNUbW9ruu2YlRyQQN70m+6/w== dependencies: async "^2.1.2" async-eventemitter "^0.2.2" @@ -162,6 +166,21 @@ semver "^5.5.0" tmp "0.0.33" +"@eth-optimism/solc@^0.6.12-alpha.1": + version "0.6.12-alpha.1" + resolved "https://registry.yarnpkg.com/@eth-optimism/solc/-/solc-0.6.12-alpha.1.tgz#041876f83b34c6afe2f19dfe9626568df6ed8590" + integrity sha512-Ky73mo+2iNJs/VTaT751nMeZ7hXns0TBAlffTOxIOsScjAZ/zi/KWsDUo3r89aV2JKXcYAU/bLidxF40MVJeUw== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + follow-redirects "^1.12.1" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + "@ethereum-waffle/chai@^2.5.1": version "2.5.1" resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-2.5.1.tgz#8bdc055952fc80ff78132571396a2771a36d97ae" @@ -548,6 +567,21 @@ "@ethersproject/logger" "^5.0.5" "@ethersproject/properties" "^5.0.3" +"@ethersproject/contracts@^5.0.5": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.8.tgz#71d3ba16853a1555be2e161a6741df186f81c73b" + integrity sha512-PecBL4vnsrpuks2lzzkRsOts8csJy338HNDKDIivbFmx92BVzh3ohOOv3XsoYPSXIHQvobF959W+aSk3RCZL/g== + dependencies: + "@ethersproject/abi" "^5.0.5" + "@ethersproject/abstract-provider" "^5.0.4" + "@ethersproject/abstract-signer" "^5.0.4" + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/hardware-wallets@^5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/hardware-wallets/-/hardware-wallets-5.0.8.tgz#cea6a6b76b7eb165fc248cc4908df82bc4725fc6" @@ -2241,6 +2275,11 @@ dependencies: "@types/node" ">= 8" +"@openzeppelin/contracts@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.3.0.tgz#ffdb693c5c349fc33bba420248dd3ac0a2d7c408" + integrity sha512-AemZEsQYtUp1WRkcmZm1div5ORfTpLquLaziCIrSagjxyKdmObxuaY1yjQ5SHFMctR8rLwp706NXTbiIRJg7pw== + "@resolver-engine/core@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.3.3.tgz#590f77d85d45bc7ecc4e06c654f41345db6ca967" @@ -5737,7 +5776,7 @@ eth-sig-util@^1.4.2: ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" ethereumjs-util "^5.1.1" -eth-sig-util@^2.5.2: +eth-sig-util@^2.0.0, eth-sig-util@^2.5.2: version "2.5.3" resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.5.3.tgz#6938308b38226e0b3085435474900b03036abcbe" integrity sha512-KpXbCKmmBUNUTGh9MRKmNkIPietfhzBqqYqysDavLseIiMUGl95k6UcPEkALAZlj41e9E6yioYXc1PC333RKqw== @@ -5886,7 +5925,7 @@ ethereumjs-abi@0.6.7: bn.js "^4.11.8" ethereumjs-util "^6.0.0" -ethereumjs-abi@^0.6.8: +ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: version "0.6.8" resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== @@ -6062,6 +6101,19 @@ ethereumjs-util@6.2.0: rlp "^2.2.3" secp256k1 "^3.0.1" +ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0, "ethjs-util-v6@npm:ethereumjs-util@6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + ethereumjs-util@^4.3.0: version "4.5.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz#f4bf9b3b515a484e3cc8781d61d9d980f7c83bd0" @@ -6086,19 +6138,6 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0, "ethjs-util-v6@npm:ethereumjs-util@6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== - dependencies: - "@types/bn.js" "^4.11.3" - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "0.1.6" - rlp "^2.2.3" - ethereumjs-util@^7.0.0, ethereumjs-util@^7.0.2, ethereumjs-util@^7.0.4: version "7.0.5" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.5.tgz#bc6e178dedbccc4b188c9ae6ae38db1906884b7b" @@ -6195,6 +6234,21 @@ ethereumjs-wallet@0.6.3: utf8 "^3.0.0" uuid "^3.3.2" +ethereumjs-wallet@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz#685e9091645cee230ad125c007658833991ed474" + integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== + dependencies: + aes-js "^3.1.1" + bs58check "^2.1.2" + ethereum-cryptography "^0.1.3" + ethereumjs-util "^6.0.0" + randombytes "^2.0.6" + safe-buffer "^5.1.2" + scryptsy "^1.2.1" + utf8 "^3.0.0" + uuid "^3.3.2" + "ethers-v4@npm:ethers@4", ethers@^4.0.0, ethers@^4.0.37, ethers@^4.0.39, ethers@^4.0.45: version "4.0.48" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.48.tgz#330c65b8133e112b0613156e57e92d9009d8fbbe" @@ -7193,6 +7247,43 @@ ganache-core@2.6.1: ethereumjs-wallet "0.6.3" web3 "1.0.0-beta.35" +ganache-core@^2.12.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.13.1.tgz#bf60399a2dd084e1090db91cbbc7ed3885dc01e4" + integrity sha512-Ewg+kNcDqXtOohe7jCcP+ZUv9EMzOx2MoqOYYP3BCfxrDh3KjBXXaKK+Let7li0TghAs9lxmBgevZku35j5YzA== + dependencies: + abstract-leveldown "3.0.0" + async "2.6.2" + bip39 "2.5.0" + cachedown "1.0.0" + clone "2.1.2" + debug "3.2.6" + encoding-down "5.0.4" + eth-sig-util "^2.0.0" + ethereumjs-abi "0.6.8" + ethereumjs-account "3.0.0" + ethereumjs-block "2.2.2" + ethereumjs-common "1.5.0" + ethereumjs-tx "2.1.2" + ethereumjs-util "6.2.1" + ethereumjs-vm "4.2.0" + heap "0.2.6" + keccak "3.0.1" + level-sublevel "6.6.4" + levelup "3.1.1" + lodash "4.17.20" + lru-cache "5.1.1" + merkle-patricia-tree "3.0.0" + patch-package "6.2.2" + seedrandom "3.0.1" + source-map-support "0.5.12" + tmp "0.1.0" + web3-provider-engine "14.2.1" + websocket "1.0.32" + optionalDependencies: + ethereumjs-wallet "0.6.5" + web3 "1.2.11" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -8633,6 +8724,14 @@ just-debounce@^1.0.0: resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= +keccak@3.0.1, keccak@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" + integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + keccak@^1.0.2: version "1.4.0" resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" @@ -8653,14 +8752,6 @@ keccak@^2.0.0: nan "^2.14.0" safe-buffer "^5.2.0" -keccak@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - keccakjs@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/keccakjs/-/keccakjs-0.2.3.tgz#5e4e969ce39689a3861f445d7752ee3477f9fe72" @@ -9131,7 +9222,7 @@ lodash@4.17.14: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.2.1: +lodash@4.17.20, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.2.1: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -9466,7 +9557,7 @@ merkle-patricia-tree@2.3.2, merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2 rlp "^2.0.0" semaphore ">=1.0.1" -merkle-patricia-tree@^3.0.0: +merkle-patricia-tree@3.0.0, merkle-patricia-tree@^3.0.0: version "3.0.0" resolved "git+https://github.com/kfichter/merkle-patricia-tree#ebd10c405be8ae909f1f82dea275a0e9ec1c8e46" dependencies: @@ -10681,7 +10772,7 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -patch-package@^6.2.2: +patch-package@6.2.2, patch-package@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39" integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== @@ -14234,6 +14325,19 @@ web3@1.0.0-beta.35: web3-shh "1.0.0-beta.35" web3-utils "1.0.0-beta.35" +web3@1.2.11, web3@^1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" + integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== + dependencies: + web3-bzz "1.2.11" + web3-core "1.2.11" + web3-eth "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-shh "1.2.11" + web3-utils "1.2.11" + web3@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.4.tgz#6e7ab799eefc9b4648c2dab63003f704a1d5e7d9" @@ -14248,19 +14352,6 @@ web3@1.2.4: web3-shh "1.2.4" web3-utils "1.2.4" -web3@^1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" - integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== - dependencies: - web3-bzz "1.2.11" - web3-core "1.2.11" - web3-eth "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-shh "1.2.11" - web3-utils "1.2.11" - webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -14277,7 +14368,7 @@ websocket@1.0.29: typedarray-to-buffer "^3.1.5" yaeti "^0.0.6" -websocket@^1.0.31: +websocket@1.0.32, websocket@^1.0.31: version "1.0.32" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== From 0d8c6012a1bb3405b16e43ee4fc7f5af55cdd16b Mon Sep 17 00:00:00 2001 From: Kelvin Fichter Date: Mon, 14 Dec 2020 11:59:07 -0800 Subject: [PATCH 2/4] Change version to 0.0.2-alpha.2 --- packages/ovm-toolchain/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ovm-toolchain/package.json b/packages/ovm-toolchain/package.json index f2b747f9b058..0b9a6b12f446 100644 --- a/packages/ovm-toolchain/package.json +++ b/packages/ovm-toolchain/package.json @@ -1,6 +1,6 @@ { "name": "@eth-optimism/ovm-toolchain", - "version": "0.0.1-alpha.15", + "version": "0.0.2-alpha.2", "description": "Wrappers for Ethereum dev tools", "main": "build/index.js", "private": true, From c0c915ee01f0c70635de45b2eb4531aabe3a1a6c Mon Sep 17 00:00:00 2001 From: Kelvin Fichter Date: Mon, 14 Dec 2020 14:34:22 -0800 Subject: [PATCH 3/4] Clean up pretty much everything --- lerna.json | 5 +- package.json | 7 +- packages/batch-submitter/package.json | 5 +- .../transaction-batch-submitter.spec.ts | 14 +- packages/core-db/README.md | 1 - packages/core-db/index.ts | 5 - packages/core-db/package.json | 65 - packages/core-db/src/app/bucket.ts | 117 - packages/core-db/src/app/db.ts | 263 - .../app/ethereum/ethereum-block-processor.ts | 247 - .../app/ethereum/ethereum-event-processor.ts | 310 - packages/core-db/src/app/ethereum/index.ts | 2 - packages/core-db/src/app/index.ts | 11 - packages/core-db/src/app/iterator.ts | 249 - packages/core-db/src/app/key/key.ts | 147 - packages/core-db/src/app/key/types.ts | 290 - packages/core-db/src/app/key/utils.ts | 191 - packages/core-db/src/app/keystore/index.ts | 2 - .../core-db/src/app/keystore/wallet-db.ts | 73 - packages/core-db/src/app/keystore/wallet.ts | 110 - packages/core-db/src/app/postgres.ts | 97 - packages/core-db/src/app/queue/index.ts | 2 - .../app/queue/queued-persisted-processor.ts | 205 - .../sequential-processing-data-service.ts | 183 - packages/core-db/src/app/range-bucket.ts | 346 -- packages/core-db/src/app/utils/index.ts | 1 - packages/core-db/src/app/utils/range.ts | 275 - packages/core-db/src/index.ts | 2 - packages/core-db/src/types/db/db.interface.ts | 188 - packages/core-db/src/types/db/index.ts | 3 - .../src/types/db/range-db.interface.ts | 87 - .../core-db/src/types/db/rdb.interface.ts | 48 - packages/core-db/src/types/ethereum/event.ts | 9 - packages/core-db/src/types/ethereum/index.ts | 2 - .../core-db/src/types/ethereum/listener.ts | 19 - packages/core-db/src/types/index.ts | 6 - packages/core-db/src/types/key.interface.ts | 44 - packages/core-db/src/types/queue/index.ts | 2 - .../queued-persisted-processor.interface.ts | 29 - ...ntial-processing-data-service.interface.ts | 52 - .../core-db/src/types/wallet-db.interface.ts | 9 - packages/core-db/test/app/db.spec.ts | 138 - .../app/ethereum/contracts/TestToken.json | 259 - .../test/app/ethereum/contracts/TestToken.sol | 44 - .../app/ethereum/contracts/waffle-config.json | 5 - .../ethereum/ethereum-block-processor.spec.ts | 306 - .../ethereum/ethereum-event-processor.spec.ts | 186 - packages/core-db/test/app/ethereum/utils.ts | 81 - .../test/app/keystore/wallet-db.spec.ts | 70 - .../core-db/test/app/keystore/wallet.spec.ts | 120 - .../app/queued-persisted-processor.spec.ts | 291 - .../core-db/test/app/range-bucket.spec.ts | 304 - ...quential-processing-data-service.dbspec.ts | 240 - packages/core-db/test/setup.ts | 24 - packages/core-db/tsconfig.json | 7 - packages/core-db/tslint.json | 7 - packages/core-utils/index.ts | 5 - packages/core-utils/package.json | 20 +- packages/core-utils/src/app/bloom_filter.ts | 84 - packages/core-utils/src/app/buffer.ts | 193 - .../core-utils/src/app/contract-deployment.ts | 148 - packages/core-utils/src/app/crypto.ts | 146 - packages/core-utils/src/app/equals.ts | 75 - packages/core-utils/src/app/ethereum.ts | 104 - packages/core-utils/src/app/index.ts | 22 - packages/core-utils/src/app/misc.ts | 329 -- packages/core-utils/src/app/number.ts | 416 -- packages/core-utils/src/app/scheduled-task.ts | 79 - .../src/app/serialization/abi-range.ts | 69 - .../core-utils/src/app/serialization/index.ts | 2 - .../src/app/serialization/serializers.ts | 32 - packages/core-utils/src/app/signatures.ts | 77 - packages/core-utils/src/app/test-utils.ts | 83 - .../src/app/time-bucketed-counter.ts | 88 - .../core-utils/src/{app => }/constants.ts | 0 packages/core-utils/src/hex-strings.ts | 61 + packages/core-utils/src/index.ts | 10 +- packages/core-utils/src/{app => }/log.ts | 5 +- .../transport/client/axios-http-client.ts | 2 +- .../src/{app => }/transport/client/index.ts | 0 .../transport/client/json-rpc-client.ts | 3 +- .../transport/client/json-rpc-http-adapter.ts | 2 +- .../transport/client/simple-client.ts | 2 +- .../src/{app => }/transport/index.ts | 0 .../transport/server/express-http-server.ts | 2 +- .../src/{app => }/transport/server/index.ts | 0 .../transport/server/json-rpc-errors.ts | 2 +- .../transport/server/json-rpc-server.ts | 2 +- .../transport/server/simple-server.ts | 0 .../src/types/contract-deployment.ts | 9 - .../core-utils/src/types/hash-algorithms.ts | 6 - packages/core-utils/src/types/index.ts | 11 +- .../core-utils/src/types/keystore/index.ts | 2 - .../src/types/keystore/keystore.interface.ts | 76 - .../src/types/keystore/wallet.interface.ts | 10 - .../src/types/{log.ts => log.types.ts} | 0 packages/core-utils/src/types/range.ts | 10 - .../src/types/serialization/index.ts | 1 - .../src/types/serialization/type.interface.ts | 5 - .../src/types/signatures.interface.ts | 28 - ...nsport.interface.ts => transport.types.ts} | 0 packages/core-utils/src/types/type-guards.ts | 39 +- packages/core-utils/test/app/buffer.spec.ts | 24 - .../test/app/contract-deployment.spec.ts | 52 - packages/core-utils/test/app/log.spec.ts | 67 - packages/core-utils/test/app/misc.spec.ts | 134 - packages/core-utils/test/app/number.spec.ts | 423 -- .../test/app/time-bucketed-counter.spec.ts | 103 - .../app/transport/json-rpc-server.spec.ts | 29 - packages/core-utils/test/app/utils.spec.ts | 27 - packages/core-utils/test/setup.ts | 21 - packages/gas-profiler/README.md | 147 - packages/gas-profiler/bin/index.ts | 71 - packages/gas-profiler/index.ts | 1 - packages/gas-profiler/package.json | 55 - packages/gas-profiler/src/gas-profiler.ts | 195 - packages/gas-profiler/src/helpers/ganache.ts | 83 - packages/gas-profiler/src/helpers/tx-trace.ts | 352 -- packages/gas-profiler/src/helpers/utils.ts | 53 - packages/gas-profiler/src/index.ts | 1 - .../src/interfaces/contract.interface.ts | 20 - .../src/interfaces/trace.interface.ts | 50 - packages/gas-profiler/tsconfig.json | 10 - packages/gas-profiler/tslint.json | 7 - packages/ovm-toolchain/package.json | 31 +- .../ovm-toolchain/src/ganache/utils/to.ts | 2 +- packages/ovm-toolchain/src/waffle/index.ts | 3 +- .../ovm-toolchain/src/waffle/waffle-v2.ts | 65 - .../ovm-toolchain/src/waffle/waffle-v3.ts | 8 +- packages/ovm-toolchain/src/watcher.ts | 2 +- .../test/test-buidler/erc20.spec.ts | 4 +- .../core/create2.spec.ts | 20 +- .../core/libraries.spec.ts | 8 +- .../core/precompiles.spec.ts | 13 +- .../core/timestamps.spec.ts | 10 +- .../erc20.spec.ts | 8 +- packages/ovm-toolchain/tsconfig.json | 6 +- packages/provider/package.json | 23 +- packages/provider/src/app/provider.ts | 16 +- packages/provider/src/app/signer.ts | 27 +- packages/provider/src/app/utils.ts | 17 +- packages/provider/test/rpc.spec.ts | 15 +- .../provider/test/sendtransaction.spec.ts | 12 +- packages/provider/test/setup.ts | 8 + packages/provider/test/signer.spec.ts | 14 +- packages/provider/tslint.json | 3 +- yarn.lock | 4993 ++++------------- 147 files changed, 1408 insertions(+), 13890 deletions(-) delete mode 100644 packages/core-db/README.md delete mode 100644 packages/core-db/index.ts delete mode 100644 packages/core-db/package.json delete mode 100644 packages/core-db/src/app/bucket.ts delete mode 100644 packages/core-db/src/app/db.ts delete mode 100644 packages/core-db/src/app/ethereum/ethereum-block-processor.ts delete mode 100644 packages/core-db/src/app/ethereum/ethereum-event-processor.ts delete mode 100644 packages/core-db/src/app/ethereum/index.ts delete mode 100644 packages/core-db/src/app/index.ts delete mode 100644 packages/core-db/src/app/iterator.ts delete mode 100644 packages/core-db/src/app/key/key.ts delete mode 100644 packages/core-db/src/app/key/types.ts delete mode 100644 packages/core-db/src/app/key/utils.ts delete mode 100644 packages/core-db/src/app/keystore/index.ts delete mode 100644 packages/core-db/src/app/keystore/wallet-db.ts delete mode 100644 packages/core-db/src/app/keystore/wallet.ts delete mode 100644 packages/core-db/src/app/postgres.ts delete mode 100644 packages/core-db/src/app/queue/index.ts delete mode 100644 packages/core-db/src/app/queue/queued-persisted-processor.ts delete mode 100644 packages/core-db/src/app/queue/sequential-processing-data-service.ts delete mode 100644 packages/core-db/src/app/range-bucket.ts delete mode 100644 packages/core-db/src/app/utils/index.ts delete mode 100644 packages/core-db/src/app/utils/range.ts delete mode 100644 packages/core-db/src/index.ts delete mode 100644 packages/core-db/src/types/db/db.interface.ts delete mode 100644 packages/core-db/src/types/db/index.ts delete mode 100644 packages/core-db/src/types/db/range-db.interface.ts delete mode 100644 packages/core-db/src/types/db/rdb.interface.ts delete mode 100644 packages/core-db/src/types/ethereum/event.ts delete mode 100644 packages/core-db/src/types/ethereum/index.ts delete mode 100644 packages/core-db/src/types/ethereum/listener.ts delete mode 100644 packages/core-db/src/types/index.ts delete mode 100644 packages/core-db/src/types/key.interface.ts delete mode 100644 packages/core-db/src/types/queue/index.ts delete mode 100644 packages/core-db/src/types/queue/queued-persisted-processor.interface.ts delete mode 100644 packages/core-db/src/types/queue/sequential-processing-data-service.interface.ts delete mode 100644 packages/core-db/src/types/wallet-db.interface.ts delete mode 100644 packages/core-db/test/app/db.spec.ts delete mode 100644 packages/core-db/test/app/ethereum/contracts/TestToken.json delete mode 100644 packages/core-db/test/app/ethereum/contracts/TestToken.sol delete mode 100644 packages/core-db/test/app/ethereum/contracts/waffle-config.json delete mode 100644 packages/core-db/test/app/ethereum/ethereum-block-processor.spec.ts delete mode 100644 packages/core-db/test/app/ethereum/ethereum-event-processor.spec.ts delete mode 100644 packages/core-db/test/app/ethereum/utils.ts delete mode 100644 packages/core-db/test/app/keystore/wallet-db.spec.ts delete mode 100644 packages/core-db/test/app/keystore/wallet.spec.ts delete mode 100644 packages/core-db/test/app/queued-persisted-processor.spec.ts delete mode 100644 packages/core-db/test/app/range-bucket.spec.ts delete mode 100644 packages/core-db/test/db/sequential-processing-data-service.dbspec.ts delete mode 100644 packages/core-db/test/setup.ts delete mode 100644 packages/core-db/tsconfig.json delete mode 100644 packages/core-db/tslint.json delete mode 100644 packages/core-utils/index.ts delete mode 100644 packages/core-utils/src/app/bloom_filter.ts delete mode 100644 packages/core-utils/src/app/buffer.ts delete mode 100644 packages/core-utils/src/app/contract-deployment.ts delete mode 100644 packages/core-utils/src/app/crypto.ts delete mode 100644 packages/core-utils/src/app/equals.ts delete mode 100644 packages/core-utils/src/app/ethereum.ts delete mode 100644 packages/core-utils/src/app/index.ts delete mode 100644 packages/core-utils/src/app/misc.ts delete mode 100644 packages/core-utils/src/app/number.ts delete mode 100644 packages/core-utils/src/app/scheduled-task.ts delete mode 100644 packages/core-utils/src/app/serialization/abi-range.ts delete mode 100644 packages/core-utils/src/app/serialization/index.ts delete mode 100644 packages/core-utils/src/app/serialization/serializers.ts delete mode 100644 packages/core-utils/src/app/signatures.ts delete mode 100644 packages/core-utils/src/app/test-utils.ts delete mode 100644 packages/core-utils/src/app/time-bucketed-counter.ts rename packages/core-utils/src/{app => }/constants.ts (100%) create mode 100644 packages/core-utils/src/hex-strings.ts rename packages/core-utils/src/{app => }/log.ts (96%) rename packages/core-utils/src/{app => }/transport/client/axios-http-client.ts (93%) rename packages/core-utils/src/{app => }/transport/client/index.ts (100%) rename packages/core-utils/src/{app => }/transport/client/json-rpc-client.ts (98%) rename packages/core-utils/src/{app => }/transport/client/json-rpc-http-adapter.ts (97%) rename packages/core-utils/src/{app => }/transport/client/simple-client.ts (99%) rename packages/core-utils/src/{app => }/transport/index.ts (100%) rename packages/core-utils/src/{app => }/transport/server/express-http-server.ts (97%) rename packages/core-utils/src/{app => }/transport/server/index.ts (100%) rename packages/core-utils/src/{app => }/transport/server/json-rpc-errors.ts (94%) rename packages/core-utils/src/{app => }/transport/server/json-rpc-server.ts (98%) rename packages/core-utils/src/{app => }/transport/server/simple-server.ts (100%) delete mode 100644 packages/core-utils/src/types/contract-deployment.ts delete mode 100644 packages/core-utils/src/types/hash-algorithms.ts delete mode 100644 packages/core-utils/src/types/keystore/index.ts delete mode 100644 packages/core-utils/src/types/keystore/keystore.interface.ts delete mode 100644 packages/core-utils/src/types/keystore/wallet.interface.ts rename packages/core-utils/src/types/{log.ts => log.types.ts} (100%) delete mode 100644 packages/core-utils/src/types/range.ts delete mode 100644 packages/core-utils/src/types/serialization/index.ts delete mode 100644 packages/core-utils/src/types/serialization/type.interface.ts delete mode 100644 packages/core-utils/src/types/signatures.interface.ts rename packages/core-utils/src/types/{transport.interface.ts => transport.types.ts} (100%) delete mode 100644 packages/core-utils/test/app/buffer.spec.ts delete mode 100644 packages/core-utils/test/app/contract-deployment.spec.ts delete mode 100644 packages/core-utils/test/app/log.spec.ts delete mode 100644 packages/core-utils/test/app/misc.spec.ts delete mode 100644 packages/core-utils/test/app/number.spec.ts delete mode 100644 packages/core-utils/test/app/time-bucketed-counter.spec.ts delete mode 100644 packages/core-utils/test/app/transport/json-rpc-server.spec.ts delete mode 100644 packages/core-utils/test/app/utils.spec.ts delete mode 100644 packages/core-utils/test/setup.ts delete mode 100644 packages/gas-profiler/README.md delete mode 100644 packages/gas-profiler/bin/index.ts delete mode 100644 packages/gas-profiler/index.ts delete mode 100644 packages/gas-profiler/package.json delete mode 100644 packages/gas-profiler/src/gas-profiler.ts delete mode 100644 packages/gas-profiler/src/helpers/ganache.ts delete mode 100644 packages/gas-profiler/src/helpers/tx-trace.ts delete mode 100644 packages/gas-profiler/src/helpers/utils.ts delete mode 100644 packages/gas-profiler/src/index.ts delete mode 100644 packages/gas-profiler/src/interfaces/contract.interface.ts delete mode 100644 packages/gas-profiler/src/interfaces/trace.interface.ts delete mode 100644 packages/gas-profiler/tsconfig.json delete mode 100644 packages/gas-profiler/tslint.json delete mode 100644 packages/ovm-toolchain/src/waffle/waffle-v2.ts rename packages/ovm-toolchain/test/{test-waffle-v2 => test-waffle}/core/create2.spec.ts (81%) rename packages/ovm-toolchain/test/{test-waffle-v2 => test-waffle}/core/libraries.spec.ts (89%) rename packages/ovm-toolchain/test/{test-waffle-v2 => test-waffle}/core/precompiles.spec.ts (82%) rename packages/ovm-toolchain/test/{test-waffle-v2 => test-waffle}/core/timestamps.spec.ts (81%) rename packages/ovm-toolchain/test/{test-waffle-v2 => test-waffle}/erc20.spec.ts (89%) create mode 100644 packages/provider/test/setup.ts diff --git a/lerna.json b/lerna.json index 7a37a146ea4d..eeae7a47b913 100644 --- a/lerna.json +++ b/lerna.json @@ -1,13 +1,10 @@ { "version": "independent", "packages": [ - "packages/contracts/*", - "packages/core-db/*", "packages/core-utils/*", "packages/ovm-toolchain/*", "packages/provider/*", - "packages/rollup-core/*", - "packages/rollup-services/*" + "packages/batch-submitter/*" ], "command": { "publish": { diff --git a/package.json b/package.json index 2a7139aebeef..74d638a42097 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "pkgparse:core": "echo ${PKGS:-'*'} | sed -e 's#,# @eth-optimism/#g' -e 's#^#@eth-optimism/#'", "pkgparse:integration": "echo ${PKGS:-'*'} | sed -e 's#,# @eth-optimism-test/#g' -e 's#^#@eth-optimism-test/#'", "lint": "wsrun -p $(yarn --silent run pkgparse) --parallel --exclude-missing lint", - "fix": "wsrun -p $(yarn --silent run pkgparse) --fast-exit --parallel --exclude-missing fix", + "lint:fix": "wsrun -p $(yarn --silent run pkgparse) --fast-exit --parallel --exclude-missing lint:fix", "clean": "wsrun -p $(yarn --silent run pkgparse) -r --fast-exit --parallel --exclude-missing clean", "clean_modules": "rm -rf node_modules && find ./packages -type d -maxdepth 2 -name \"node_modules\" -exec rm -r {} +", "clean_manual": "find ./packages -type d -maxdepth 2 -name \"build\" -exec rm -r {} +", @@ -23,7 +23,7 @@ "test": "yarn test:core && yarn test:integration", "coverage": "wsrun -p $(yarn --silent run pkgparse:core) --fast-exit --parallel --no-prefix --exclude-missing --timeout 5000 coverage", "build": "yarn run patch && lerna link && wsrun -p $(yarn --silent run pkgparse) -r --fast-exit --stages --exclude-missing build", - "all": "yarn clean && yarn build && yarn test && yarn fix && yarn lint", + "all": "yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint", "release": "yarn clean && yarn run build && lerna publish --force-publish --exact -m \"chore(@ethereum-optimism) publish %s release\"", "release:patch": "yarn clean && yarn build && lerna version prerelease --yes && lerna publish from-package --yes --force-publish -m \"chore(@ethereum-optimism) publish %s release\"", "release:rc": "yarn clean && yarn build && lerna version prerelease --yes && lerna publish from-package --yes --force-publish --npm-tag=rc -m \"chore(@ethereum-optimism) publish %s release\"", @@ -34,9 +34,6 @@ "patch:waffle": "sed -ie 's!Ganache.GanacheOpts!any!g' node_modules/ethereum-waffle/dist/waffle.d.ts ||:" }, "repository": "git+https://github.com/ethereum-optimism/optimism-monorepo.git", - "engines": { - "node": "10" - }, "keywords": [ "plasma", "group", diff --git a/packages/batch-submitter/package.json b/packages/batch-submitter/package.json index dd4b1ce85c4e..8451ddf448e2 100644 --- a/packages/batch-submitter/package.json +++ b/packages/batch-submitter/package.json @@ -10,13 +10,10 @@ "start": "node ./exec/run-batch-submitter.js", "build": "tsc -p .", "clean": "rimraf build/", - "fix": "prettier --config ../../prettier-config.json --write 'index.ts' 'src/**/*.ts'", "lint": "tslint --format stylish --project .", + "lint:fix": "prettier --config ../../prettier-config.json --write 'index.ts' 'src/**/*.ts'", "test": "buidler test --show-stack-traces" }, - "engines": { - "node": "10" - }, "keywords": [ "optimism", "ethereum", diff --git a/packages/batch-submitter/test/batch-submitter/transaction-batch-submitter.spec.ts b/packages/batch-submitter/test/batch-submitter/transaction-batch-submitter.spec.ts index d62b8afe1d0d..3a6067f9afa9 100644 --- a/packages/batch-submitter/test/batch-submitter/transaction-batch-submitter.spec.ts +++ b/packages/batch-submitter/test/batch-submitter/transaction-batch-submitter.spec.ts @@ -2,9 +2,9 @@ import { expect } from '../setup' /* External Imports */ import { ethers } from '@nomiclabs/buidler' +import { Signer, ContractFactory, Contract } from 'ethers' import { getContractInterface } from '@eth-optimism/contracts' import { smockit, MockContract } from '@eth-optimism/smock' -import { Signer, ContractFactory, Contract, BigNumber } from 'ethers' import { remove0x, getLogger } from '@eth-optimism/core-utils' /* Internal Imports */ @@ -113,6 +113,8 @@ describe('TransactionBatchSubmitter', () => { AddressManager.address, FORCE_INCLUSION_PERIOD_SECONDS ) + await unwrapped_OVM_CanonicalTransactionChain.init() + OVM_CanonicalTransactionChain = new CanonicalTransactionChainContract( unwrapped_OVM_CanonicalTransactionChain.address, getContractInterface('OVM_CanonicalTransactionChain'), @@ -175,12 +177,12 @@ describe('TransactionBatchSubmitter', () => { nextQueueElement.timestamp - 1 ) let receipt = await batchSubmitter.submitNextBatch() - let logData = remove0x(receipt.logs[0].data) + let logData = remove0x(receipt.logs[1].data) expect(parseInt(logData.slice(64 * 0, 64 * 1), 16)).to.equal(0) // _startingQueueIndex expect(parseInt(logData.slice(64 * 1, 64 * 2), 16)).to.equal(0) // _numQueueElements expect(parseInt(logData.slice(64 * 2, 64 * 3), 16)).to.equal(6) // _totalElements receipt = await batchSubmitter.submitNextBatch() - logData = remove0x(receipt.logs[0].data) + logData = remove0x(receipt.logs[1].data) expect(parseInt(logData.slice(64 * 0, 64 * 1), 16)).to.equal(0) // _startingQueueIndex expect(parseInt(logData.slice(64 * 1, 64 * 2), 16)).to.equal(0) // _numQueueElements expect(parseInt(logData.slice(64 * 2, 64 * 3), 16)).to.equal(11) // _totalElements @@ -192,12 +194,12 @@ describe('TransactionBatchSubmitter', () => { queueOrigin: QueueOrigin.L1ToL2, } as any) let receipt = await batchSubmitter.submitNextBatch() - let logData = remove0x(receipt.logs[0].data) + let logData = remove0x(receipt.logs[1].data) expect(parseInt(logData.slice(64 * 0, 64 * 1), 16)).to.equal(0) // _startingQueueIndex expect(parseInt(logData.slice(64 * 1, 64 * 2), 16)).to.equal(6) // _numQueueElements expect(parseInt(logData.slice(64 * 2, 64 * 3), 16)).to.equal(6) // _totalElements receipt = await batchSubmitter.submitNextBatch() - logData = remove0x(receipt.logs[0].data) + logData = remove0x(receipt.logs[1].data) expect(parseInt(logData.slice(64 * 0, 64 * 1), 16)).to.equal(6) // _startingQueueIndex expect(parseInt(logData.slice(64 * 1, 64 * 2), 16)).to.equal(5) // _numQueueElements expect(parseInt(logData.slice(64 * 2, 64 * 3), 16)).to.equal(11) // _totalElements @@ -230,7 +232,7 @@ describe('TransactionBatchSubmitter', () => { 6 ) const receipt = await batchSubmitter.submitNextBatch() - const logData = remove0x(receipt.logs[0].data) + const logData = remove0x(receipt.logs[1].data) expect(parseInt(logData.slice(64 * 0, 64 * 1), 16)).to.equal(0) // _startingQueueIndex expect(parseInt(logData.slice(64 * 1, 64 * 2), 16)).to.equal(8) // _numQueueElements expect(parseInt(logData.slice(64 * 2, 64 * 3), 16)).to.equal(11) // _totalElements diff --git a/packages/core-db/README.md b/packages/core-db/README.md deleted file mode 100644 index 56736a1d3fdc..000000000000 --- a/packages/core-db/README.md +++ /dev/null @@ -1 +0,0 @@ -# TODO: this. \ No newline at end of file diff --git a/packages/core-db/index.ts b/packages/core-db/index.ts deleted file mode 100644 index 15afc9aa6dc7..000000000000 --- a/packages/core-db/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -const rootPath = __dirname - -export { rootPath } -export * from './src/app' -export * from './src/types' diff --git a/packages/core-db/package.json b/packages/core-db/package.json deleted file mode 100644 index ebc644f257e4..000000000000 --- a/packages/core-db/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "@eth-optimism/core-db", - "version": "0.0.1-alpha.30", - "description": "Optimism DB Utils", - "main": "build/index.js", - "files": [ - "build/**/*.js" - ], - "scripts": { - "all": "yarn clean && yarn build && yarn test && yarn fix && yarn lint", - "build": "waffle test/app/ethereum/contracts/waffle-config.json && tsc -p .", - "clean": "rimraf build/", - "fix": "prettier --config ../../prettier-config.json --write 'index.ts' '{src,test}/**/*.ts'", - "lint": "tslint --format stylish --project .", - "test": "mocha --require ts-node/register 'test/**/*.spec.ts' --timeout 5000 --exit", - "test:db": "mocha --require ts-node/register 'test/**/*.dbspec.ts' --timeout 5000 --exit" - }, - "engines": { - "node": "10" - }, - "keywords": [ - "plasma", - "group", - "ethereum", - "client" - ], - "homepage": "https://github.com/ethereum-optimism/optimism-monorepo/tree/master/packages/core-db#readme", - "bugs": "https://github.com/ethereum-optimism/optimism-monorepo/labels/%40eth-optimism%2Fcore-db", - "license": "MIT", - "author": "Optimism", - "repository": { - "type": "git", - "url": "https://github.com/ethereum-optimism/optimism-monorepo.git" - }, - "dependencies": { - "@eth-optimism/core-utils": "^0.0.1-alpha.30", - "abstract-leveldown": "^6.2.2", - "async-lock": "^1.2.2", - "chai": "^4.2.0", - "chai-as-promised": "^7.1.1", - "debug": "^4.1.1", - "ethers": "^4.0.39", - "level": "^6.0.0", - "memdown": "^4.0.0", - "pg": "^8.3.0", - "pg-pool": "^3.2.1" - }, - "devDependencies": { - "@types/abstract-leveldown": "^5.0.1", - "@types/chai": "^4.1.7", - "@types/mocha": "^5.2.7", - "@types/node": "^12.0.7", - "chai": "^4.2.0", - "chai-as-promised": "^7.1.1", - "ethereum-waffle": "2.1.0", - "mocha": "^6.1.4", - "rimraf": "^2.6.3", - "ts-node": "^8.2.0", - "typescript": "^3.5.1" - }, - "publishConfig": { - "access": "public" - }, - "gitHead": "ccce366645fca6bad46c5cf7f7ff2f407c6ba5fd" -} diff --git a/packages/core-db/src/app/bucket.ts b/packages/core-db/src/app/bucket.ts deleted file mode 100644 index e7845446d386..000000000000 --- a/packages/core-db/src/app/bucket.ts +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Modified from bcoin's bdb (https://github.com/bcoin-org/bdb) (MIT LICENSE). - * Credit to the original author, Christopher Jeffrey (https://github.com/chjj). - */ - -/* Internal Imports */ -import { - RangeBucket, - Batch, - Bucket, - DB, - Iterator, - IteratorOptions, - K, - V, -} from '../types' - -/** - * Simple bucket implementation that forwards all - * calls up to the database but appends a prefix. - */ -export class BaseBucket implements Bucket { - constructor(readonly db: DB, readonly prefix: Buffer) {} - - /** - * Queries the value at a given key. - * @param key Key to query. - * @returns the value at that key. - */ - public async get(key: K): Promise { - return this.db.get(this.addPrefix(key)) - } - - /** - * Sets the value at a given key. - * @param key Key to set. - * @param value Value to set to. - */ - public async put(key: K, value: V): Promise { - return this.db.put(this.addPrefix(key), value) - } - - /** - * Deletes a given key. - * @param key Key to delete. - */ - public async del(key: K): Promise { - return this.db.del(this.addPrefix(key)) - } - - /** - * Checks whether a given key is set. - * @param key Key to query. - * @returns `true` if the key is set, `false` otherwise. - */ - public async has(key: K): Promise { - return this.db.has(this.addPrefix(key)) - } - - /** - * Performs a series of operations in batch. - * @param operations Operations to perform. - */ - public async batch(operations: ReadonlyArray): Promise { - return this.db.batch( - operations.map((op) => { - return { - ...op, - key: this.addPrefix(op.key), - } - }) - ) - } - - /** - * Creates an iterator with some options. - * @param options Parameters for the iterator. - * @returns the iterator instance. - */ - public iterator(options?: IteratorOptions): Iterator { - return this.db.iterator({ - ...options, - prefix: this.addPrefix(options.prefix), - }) - } - - /** - * Creates a prefixed bucket underneath - * this bucket. - * @param prefix Prefix to use for the bucket. - * @returns the bucket instance. - */ - public bucket(prefix: Buffer): Bucket { - return this.db.bucket(this.addPrefix(prefix)) - } - - /** - * Creates a prefixed range bucket underneath - * this bucket. - * @param prefix Prefix to use for the bucket. - * @returns the range bucket instance. - */ - public rangeBucket(prefix: Buffer): RangeBucket { - return this.db.rangeBucket(this.addPrefix(prefix)) - } - - /** - * Concatenates some value to this bucket's prefix. - * @param value Value to concatenate. - * @returns the value concatenated to the prefix. - */ - private addPrefix(value: Buffer): Buffer { - return value !== undefined - ? Buffer.concat([this.prefix, value]) - : this.prefix - } -} diff --git a/packages/core-db/src/app/db.ts b/packages/core-db/src/app/db.ts deleted file mode 100644 index 7d0825865e84..000000000000 --- a/packages/core-db/src/app/db.ts +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Modified from bcoin's bdb (https://github.com/bcoin-org/bdb) (MIT LICENSE). - * Credit to the original author, Christopher Jeffrey (https://github.com/chjj). - */ - -/* External Imports */ -import { - BigNumber, - bufferUtils, - getLogger, - ONE, - ZERO, -} from '@eth-optimism/core-utils' -import { AbstractOpenOptions, AbstractLevelDOWN } from 'abstract-leveldown' -const level = require('level') - -import MemDown from 'memdown' - -/* Internal Imports */ -import { - RangeBucket, - DB, - K, - V, - Batch, - IteratorOptions, - Iterator, - Bucket, -} from '../types' -import { BaseIterator } from './iterator' -import { BaseBucket } from './bucket' -import { BaseRangeBucket } from './range-bucket' - -const log = getLogger('db') -export const DEFAULT_PREFIX_LENGTH = 3 - -/** - * Checks if an error is a NotFoundError. - * @param err Error to check. - * @return `true` if the error is a NotFoundError, `false` otherwise. - */ -const isNotFound = (err: any): boolean => { - if (!err) { - return false - } - - return ( - err.notFound || - err.type === 'NotFoundError' || - /not\s*found/i.test(err.message) - ) -} - -let memId: BigNumber = ZERO -export const newInMemoryDB = (prefixLength: number = 256, options?: {}): DB => { - memId = memId.add(ONE) - return new BaseDB( - new MemDown(`newInMemoryDB/${memId.toString()}`) as any, - prefixLength - ) -} - -export const defaultLevelOptions = { - keyEncoding: 'binary', - valueEncoding: 'binary', -} -export const getLevelInstance = ( - path: string, - options = defaultLevelOptions -): AbstractLevelDOWN => { - return level(path, options) -} - -/** - * Basic DB implementation that wraps some underlying store. - */ -export class BaseDB implements DB { - constructor( - readonly db: AbstractLevelDOWN, - readonly prefixLength: number = DEFAULT_PREFIX_LENGTH - ) {} - - /** - * Opens the store. - * @param [options] Database options. - */ - public async open(options?: AbstractOpenOptions): Promise { - try { - await new Promise((resolve, reject) => { - this.db.open(options, (err) => { - if (err) { - reject(err) - log.error(`Error opening DB: ${err.message}, ${err.stack}`) - return - } - resolve() - }) - }) - } catch (err) { - throw err - } - } - - /** - * Closes the store. - */ - public async close(): Promise { - try { - await new Promise((resolve, reject) => { - this.db.close((err) => { - if (err) { - reject(err) - log.error(`Error closing DB: ${err.message}, ${err.stack}`) - return - } - resolve() - }) - }) - } catch (err) { - throw err - } - } - - /** - * Queries the value at a given key. - * @param key Key to query. - * @returns the value at that key or `null` if the key was not found. - */ - public async get(key: K): Promise { - return new Promise((resolve, reject) => { - this.db.get(key, (err, value) => { - if (err) { - if (isNotFound(err)) { - log.debug(`Key ${key.toString('hex')} not found.`) - resolve(null) - return - } - reject(err) - log.error( - `Error getting key ${key.toString('hex')}: ${err.message}, ${ - err.stack - }` - ) - return - } - resolve(value) - }) - }) - } - - /** - * Sets the value at a given key. - * @param key Key to set. - * @param value Value to set to. - */ - public async put(key: K, value: V): Promise { - return new Promise((resolve, reject) => { - this.db.put(key, value, (err) => { - if (err) { - reject(err) - log.error( - `Error putting key / value ${key.toString( - 'hex' - )} / ${value.toString('hex')}: ${err.message}, ${err.stack}` - ) - return - } - resolve() - }) - }) - } - - /** - * Deletes a given key. - * @param key Key to delete. - */ - public async del(key: K): Promise { - return new Promise((resolve, reject) => { - this.db.del(key, (err) => { - if (err) { - reject(err) - log.error( - `Error deleting key ${key.toString('hex')}: ${err.message}, ${ - err.stack - }` - ) - return - } - resolve() - }) - }) - } - - /** - * Checks whether a given key is set. - * @param key Key to query. - * @returns `true` if the key is set, `false` otherwise. - */ - public async has(key: K): Promise { - try { - await this.get(key) - return true - } catch (err) { - log.error( - `Error checking key existence: key ${key.toString('hex')}: ${ - err.message - }, ${err.stack}` - ) - return false - } - } - - /** - * Performs a series of operations in batch. - * @param operations Operations to perform. - */ - public async batch(operations: Batch[]): Promise { - return new Promise((resolve, reject) => { - this.db.batch(operations, (err) => { - if (err) { - reject(err) - log.error( - `Error executing batch operation: ${err.message}, ${err.stack}` - ) - return - } - resolve() - }) - }) - } - - /** - * Creates an iterator with some options. - * @param options Parameters for the iterator. - * @returns the iterator instance. - */ - public iterator(options?: IteratorOptions): Iterator { - return new BaseIterator(this, options) - } - - /** - * Creates a prefixed bucket underneath - * this bucket. - * @param prefix Prefix to use for the bucket. - * @returns the bucket instance. - */ - public bucket(prefix: Buffer): Bucket { - return new BaseBucket(this, bufferUtils.padLeft(prefix, this.prefixLength)) - } - - /** - * Creates a prefixed bucket underneath - * this bucket. - * @param prefix Prefix to use for the bucket. - * @returns the bucket instance. - */ - public rangeBucket(prefix: Buffer): RangeBucket { - return new BaseRangeBucket( - this, - bufferUtils.padLeft(prefix, this.prefixLength) - ) - } -} diff --git a/packages/core-db/src/app/ethereum/ethereum-block-processor.ts b/packages/core-db/src/app/ethereum/ethereum-block-processor.ts deleted file mode 100644 index 86d81774b16a..000000000000 --- a/packages/core-db/src/app/ethereum/ethereum-block-processor.ts +++ /dev/null @@ -1,247 +0,0 @@ -/* External Imports */ -import { getLogger, logError, sleep } from '@eth-optimism/core-utils' -import { Block, Provider, TransactionReceipt } from 'ethers/providers' - -/* Internal Imports */ -import { EthereumListener } from '../../types/ethereum' -import { DB } from '../../types/db' -import { Transaction } from 'ethers/utils' - -const log = getLogger('ethereum-block-processor') -const blockKey: Buffer = Buffer.from('latestBlock') - -/** - * Ethereum Block Processor - * Single place through which all block subscriptions are handled. - */ -export class EthereumBlockProcessor { - private readonly subscriptions: Set> - private currentFinalizedBlockNumber: number - - private syncInProgress: boolean - private syncCompleted: boolean - - constructor( - private readonly db: DB, - private readonly earliestBlock: number = 0, - private readonly confirmsUntilFinal: number = 1 - ) { - this.subscriptions = new Set>() - this.currentFinalizedBlockNumber = 0 - - this.syncInProgress = false - this.syncCompleted = false - if (earliestBlock < 0) { - throw Error('Earliest block must be >= 0') - } - } - - /** - * Subscribes to new blocks. - * This will also fetch and send the provided event handler all historical blocks not in - * the database unless syncPastBlocks is set to false. - * - * @param provider The provider with the connection to the blockchain - * @param handler The event handler subscribing - * @param syncPastBlocks Whether or not to fetch previous events - */ - public async subscribe( - provider: Provider, - handler: EthereumListener, - syncPastBlocks: boolean = true - ): Promise { - this.subscriptions.add(handler) - - provider.on('block', async (blockNumber) => { - try { - const finalizedBlockNumber = this.getBlockFinalizedBy(blockNumber) - - if (finalizedBlockNumber < this.earliestBlock) { - log.debug( - `Received block [${blockNumber}] which finalizes a block ${finalizedBlockNumber}, before earliest block [${this.earliestBlock}]. Ignoring...` - ) - return - } - - log.debug( - `Block [${blockNumber}] was mined! Finalizing block ${finalizedBlockNumber}` - ) - - await this.fetchAndDisseminateBlock(provider, finalizedBlockNumber) - this.currentFinalizedBlockNumber = finalizedBlockNumber - - if (!syncPastBlocks || this.syncCompleted) { - await this.storeLastProcessedBlockNumber( - this.currentFinalizedBlockNumber - ) - } - } catch (e) { - logError( - log, - `Error thrown processing block ${blockNumber}, finalizing block ${this.getBlockFinalizedBy( - blockNumber - )}. Exiting since throwing will not be caught.`, - e - ) - process.exit(1) - } - }) - - if (syncPastBlocks) { - if (this.syncCompleted) { - await handler.onSyncCompleted() - return - } - - if (!this.syncInProgress) { - this.syncInProgress = true - await this.syncBlocks(provider) - } - } - } - - /** - * Fetches the Block, waits for finalization, and broadcasts the Block for the provided block number. - * - * @param provider The provider with the connection to the blockchain - * @param blockNumber The block number - */ - private async fetchAndDisseminateBlock( - provider: Provider, - blockNumber: number - ): Promise { - log.debug(`Fetching block [${blockNumber}].`) - const block: Block = await provider.getBlock(blockNumber, true) - log.debug(`Received block: ${block.number}.`) - - this.subscriptions.forEach((h) => { - try { - // purposefully ignore promise - h.handle(block) - } catch (e) { - // Cannot silently fail here because syncing will move on as if the block was processed - logError( - log, - `Error in subscriber handling block number ${blockNumber}. Re-throwing because we cannot proceed skipping a block.`, - e - ) - throw e - } - }) - } - - /** - * Fetches historical blocks. - * - * @param provider The provider with the connection to the blockchain. - */ - private async syncBlocks(provider: Provider): Promise { - log.debug(`Syncing blocks.`) - const lastSynced = await this.getLastSyncedBlockNumber() - const syncStart = Math.max(lastSynced + 1, this.earliestBlock) - const mostRecentBlock = await this.getBlockNumber(provider) - const mostRecentFinalBlock = this.getBlockFinalizedBy(mostRecentBlock) - - log.debug( - `Starting sync with block ${syncStart}. Last synced: ${lastSynced}, earliest block: ${this.earliestBlock}, most recent un-finalized block: ${mostRecentBlock}, most recent finalized block: ${mostRecentFinalBlock}.` - ) - - if (mostRecentFinalBlock < syncStart) { - log.debug(`Up to date, not syncing.`) - this.finishSync(mostRecentFinalBlock, mostRecentFinalBlock) - return - } - - for (let i = syncStart; i <= mostRecentFinalBlock; i++) { - try { - log.debug(`Syncing past blocks: Fetching and disseminating block ${i}`) - await this.fetchAndDisseminateBlock(provider, i) - } catch (e) { - logError(log, `Error fetching and disseminating block. Retrying...`, e) - i-- - continue - } - await this.storeLastProcessedBlockNumber(i) - } - - this.finishSync(syncStart, mostRecentFinalBlock) - } - - private finishSync(syncStart: number, currentBlock: number): void { - this.syncCompleted = true - this.syncInProgress = false - - if (syncStart !== currentBlock) { - log.debug(`Synced from block [${syncStart}] to [${currentBlock}]!`) - } else { - log.debug( - `No sync necessary. Last processed and current block are the same block number: ${currentBlock}` - ) - } - - for (const callback of this.subscriptions) { - callback.onSyncCompleted().catch((e) => { - logError(log, 'Error calling Block sync callback', e) - }) - } - } - - /** - * Fetches the current block number from the given provider. - * - * @param provider The provider connected to a node - * @returns The current block number - */ - private async getBlockNumber(provider: Provider): Promise { - if (this.currentFinalizedBlockNumber === 0) { - this.currentFinalizedBlockNumber = await provider.getBlockNumber() - } - - log.debug(`Current block number: ${this.currentFinalizedBlockNumber}`) - return this.currentFinalizedBlockNumber - } - - /** - * Gets the block number finalized by the block with the provided number. - * - * @param finalizingBlock The block number that finalizes the returned block number - * @returns The block number finalized by the provided block number. - */ - private getBlockFinalizedBy(finalizingBlock: number): number { - if (this.confirmsUntilFinal <= 1) { - return finalizingBlock - } - return finalizingBlock - (this.confirmsUntilFinal - 1) - } - - /** - * Gets the last synced block number stored in the DB or earliest block -1 if there is not one. - * - * @returns The last synced block number. - */ - private async getLastSyncedBlockNumber(): Promise { - const lastSyncedBlockBuffer: Buffer = await this.db.get(blockKey) - return !!lastSyncedBlockBuffer - ? parseInt(lastSyncedBlockBuffer.toString(), 10) - : this.earliestBlock - 1 - } - - /** - * Stores the provided block number as the last processed block number - * - * @param blockNumber The block number to store. - */ - private async storeLastProcessedBlockNumber( - blockNumber: number - ): Promise { - try { - await this.db.put(blockKey, Buffer.from(blockNumber.toString())) - } catch (e) { - logError( - log, - `Error storing most recent block received [${blockNumber}]!`, - e - ) - } - } -} diff --git a/packages/core-db/src/app/ethereum/ethereum-event-processor.ts b/packages/core-db/src/app/ethereum/ethereum-event-processor.ts deleted file mode 100644 index 52e9cccf0e60..000000000000 --- a/packages/core-db/src/app/ethereum/ethereum-event-processor.ts +++ /dev/null @@ -1,310 +0,0 @@ -/* External Imports */ -import { getLogger, logError, Md5Hash } from '@eth-optimism/core-utils' -import { ethers, Contract } from 'ethers' -import { LogDescription } from 'ethers/utils' -import { Filter, Log, Provider } from 'ethers/providers' - -/* Internal Imports */ -import { EthereumEvent, EthereumListener } from '../../types/ethereum' -import { DB } from '../../types/db' - -const log = getLogger('ethereum-event-processor') - -interface SyncStatus { - syncCompleted: boolean - syncInProgress: boolean -} - -/** - * Ethereum EthereumEvent Processor - * The single class to process and disseminate all Ethereum EthereumEvent subscriptions. - */ -export class EthereumEventProcessor { - private readonly subscriptions: Map< - string, - Set> - > - private currentBlockNumber: number - - private syncStatuses: Map - - constructor( - private readonly db: DB, - private readonly earliestBlock: number = 0, - private readonly confirmsUntilFinal: number = 1 - ) { - this.subscriptions = new Map>>() - this.currentBlockNumber = 0 - - this.syncStatuses = new Map() - } - - /** - * Subscribes to the event with the provided name for the provided contract. - * This will also fetch and send the provided event handler all historical events not in - * the database unless syncPastEvents is set to false. - * - * @param contract The contract of the event - * @param eventName The event name - * @param handler The event handler subscribing - * @param syncPastEvents Whether or not to fetch previous events - */ - public async subscribe( - contract: Contract, - eventName: string, - handler: EthereumListener, - syncPastEvents: boolean = true - ): Promise { - const eventId: string = EthereumEventProcessor.getEventID( - contract.address, - eventName - ) - log.debug(`Received subscriber for event ${eventName}, ID: ${eventId}`) - - if (!this.subscriptions.has(eventId)) { - this.subscriptions.set( - eventId, - new Set>([handler]) - ) - } else { - this.subscriptions.get(eventId).add(handler) - return - } - - contract.on(contract.filters[eventName](), async (...data) => { - log.debug(`Received live event: ${JSON.stringify(data)}`) - const ethersEvent: ethers.Event = data[data.length - 1] - const event: EthereumEvent = this.createEventFromEthersEvent(ethersEvent) - - if (this.confirmsUntilFinal > 1) { - log.debug( - `Waiting for ${ - this.confirmsUntilFinal - } confirms before disseminating event: ${JSON.stringify(data)}` - ) - // TODO: What happens on re-org? I think we're stuck waiting on this confirmation that will never come forever. - try { - await contract.provider.waitForTransaction( - event.transactionHash, - this.confirmsUntilFinal - ) - } catch (e) { - logError( - log, - `Error waiting for ${ - this.confirmsUntilFinal - } confirms on event ${JSON.stringify(data)}`, - e - ) - // TODO: If this is not a re-org, this may require a restart or some other action. - // Monitor what actually happens and re-throw here if necessary. - return - } - } - - await this.handleEvent(event) - try { - await this.db.put( - Buffer.from(event.eventID), - Buffer.from(ethersEvent.blockNumber.toString(10)) - ) - } catch (e) { - logError( - log, - `Error storing most recent events block [${ethersEvent.blockNumber}]!`, - e - ) - } - }) - - if (syncPastEvents) { - // If not in progress, create a status, mark it in progress - if (!this.syncStatuses.has(eventId)) { - this.syncStatuses.set(eventId, { - syncInProgress: true, - syncCompleted: false, - }) - await this.syncPastEvents(contract, eventName, eventId) - return - } - - const syncStatus: SyncStatus = this.syncStatuses.get(eventId) - // If completed, call callback - if (syncStatus.syncCompleted) { - await handler.onSyncCompleted(eventName) - } - } - } - - /** - * Gets a unique ID for the event with the provided address and name. - * - * @param address The address of the event - * @param eventName The name of the event - * @returns The unique ID string. - */ - public static getEventID(address: string, eventName: string): string { - return Md5Hash(`${address}${eventName}`) - } - - /** - * Fetches historical events for the provided contract with the provided event name. - * - * @param contract The contract for the events. - * @param eventName The event name. - * @param eventId The local event ID to identify the event in this class. - */ - private async syncPastEvents( - contract: Contract, - eventName: string, - eventId: string - ): Promise { - log.debug(`Syncing events for event ${eventName}`) - const blockNumber = await this.getBlockNumber(contract.provider) - - const lastSyncedBlockBuffer: Buffer = await this.db.get( - Buffer.from(eventId) - ) - const lastSyncedNumber: number = !!lastSyncedBlockBuffer - ? parseInt(lastSyncedBlockBuffer.toString(), 10) - : this.earliestBlock - - if (blockNumber === lastSyncedNumber) { - log.debug(`Up to date, not syncing.`) - this.finishSync(eventId, eventName, 0) - return - } - - const filter: Filter = contract.filters[eventName]() - filter.fromBlock = lastSyncedNumber + 1 - filter.toBlock = 'latest' - - const logs: Log[] = await contract.provider.getLogs(filter) - const events: EthereumEvent[] = logs.map((l) => { - const logDesc: LogDescription = contract.interface.parseLog(l) - return EthereumEventProcessor.createEventFromLogDesc(l, logDesc, eventId) - }) - - for (const event of events) { - await this.handleEvent(event) - } - - this.finishSync(eventId, eventName, events.length) - } - - private finishSync( - eventId: string, - eventName: string, - numEvents: number - ): void { - const status: SyncStatus = this.syncStatuses.get(eventId) - status.syncCompleted = true - status.syncInProgress = false - - log.debug( - `Synced events for event ${eventName}, ${eventId}. Found ${numEvents} events` - ) - - for (const subscription of this.subscriptions.get(eventId)) { - subscription.onSyncCompleted(eventId).catch((e) => { - logError(log, 'Error calling EthereumEvent sync callback', e) - }) - } - } - - /** - * Handles an event, whether live or historical, and passes it to all subscribers. - * - * @param event The event to disseminate. - */ - private async handleEvent(event: EthereumEvent): Promise { - log.debug(`Handling event ${JSON.stringify(event)}`) - const subscribers: Set> = this.subscriptions.get(event.eventID) - - subscribers.forEach((s) => { - try { - // purposefully ignore promise - s.handle(event) - } catch (e) { - // should be logged in subscriber - } - }) - } - - /** - * Fetches the current block number from the given provider. - * - * @param provider The provider connected to a node - * @returns The current block number - */ - private async getBlockNumber(provider: Provider): Promise { - if (this.currentBlockNumber === 0) { - this.currentBlockNumber = await provider.getBlockNumber() - } - - return this.currentBlockNumber - } - - /** - * Creates a local EthereumEvent from the provided Ethers LogDesc. - * - * @param logObj The Log in question - * @param logDesc The LogDesc in question - * @param eventID The local event ID - * @returns The local EthereumEvent - */ - private static createEventFromLogDesc( - logObj: Log, - logDesc: LogDescription, - eventID: string - ): EthereumEvent { - const values = EthereumEventProcessor.getLogValues(logDesc.values) - return { - eventID, - name: logDesc.name, - signature: logDesc.signature, - values, - blockHash: logObj.blockHash, - blockNumber: logObj.blockNumber, - transactionHash: logObj.transactionHash, - } - } - - /** - * Creates a local EthereumEvent from the provided Ethers event. - * - * @param event The event in question - * @returns The local EthereumEvent - */ - private createEventFromEthersEvent(event: ethers.Event): EthereumEvent { - const values = EthereumEventProcessor.getLogValues(event.args) - return { - eventID: EthereumEventProcessor.getEventID(event.address, event.event), - name: event.event, - signature: event.eventSignature, - values, - blockHash: event.blockHash, - blockNumber: event.blockNumber, - transactionHash: event.transactionHash, - } - } - - /** - * Creates a JS object of key-value pairs for event fields and values. - * - * @param logArgs The args from the log event, including extra fields - * @returns The values. - */ - private static getLogValues(logArgs: {}): {} { - const values = { ...logArgs } - - for (let i = 0; i < logArgs['length']; i++) { - delete values[i.toString()] - } - delete values['length'] - - return values - } -} diff --git a/packages/core-db/src/app/ethereum/index.ts b/packages/core-db/src/app/ethereum/index.ts deleted file mode 100644 index b386814d2802..000000000000 --- a/packages/core-db/src/app/ethereum/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './ethereum-block-processor' -export * from './ethereum-event-processor' diff --git a/packages/core-db/src/app/index.ts b/packages/core-db/src/app/index.ts deleted file mode 100644 index 92a0d2c1637b..000000000000 --- a/packages/core-db/src/app/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -export * from './ethereum' -export * from './key/key' -export * from './keystore' -export * from './queue' -export * from './utils' - -export * from './bucket' -export * from './db' -export * from './iterator' -export * from './postgres' -export * from './range-bucket' diff --git a/packages/core-db/src/app/iterator.ts b/packages/core-db/src/app/iterator.ts deleted file mode 100644 index 0fd2d5d64a76..000000000000 --- a/packages/core-db/src/app/iterator.ts +++ /dev/null @@ -1,249 +0,0 @@ -/** - * Modified from bcoin's bdb (https://github.com/bcoin-org/bdb) (MIT LICENSE). - * Credit to the original author, Christopher Jeffrey (https://github.com/chjj). - */ - -/* External Imports */ -import { AbstractIterator } from 'abstract-leveldown' - -/* Internal Imports */ -import { Iterator, IteratorOptions, K, V, KV, DB, RangeEntry } from '../types' - -const defaultIteratorOptions: IteratorOptions = { - reverse: false, - limit: -1, - keys: true, - values: true, - keyAsBuffer: true, - valueAsBuffer: true, - prefix: Buffer.from(''), -} - -/** - * Wrapper for an abstract-leveldown compliant iterator. - */ -export class BaseIterator implements Iterator { - private readonly options: IteratorOptions - private readonly prefix: Buffer - private iterator: AbstractIterator - private finished: boolean - - constructor(readonly db: DB, options: IteratorOptions = {}) { - this.prefix = options.prefix || defaultIteratorOptions.prefix - - /** - * Option values for iterators cannot be `null` or `undefined`. - * We need to be careful not to set these values - * accidentally or risk an error in the underlying DB. - */ - - if (options.gte !== undefined) { - options.gte = this.addPrefix(options.gte) - } - if (options.lte !== undefined) { - options.lte = this.addPrefix(options.lte) - } - if (options.gt !== undefined) { - options.gt = this.addPrefix(options.gt) - } - if (options.lt !== undefined) { - options.lt = this.addPrefix(options.lt) - } - - this.options = { - ...defaultIteratorOptions, - ...options, - } - } - - /** - * Seeks to the next key:value pair in the - * iterator and returns it. - * @returns the next value in the iterator. - */ - public async next(): Promise { - this.start() - const { key, value } = await new Promise((resolve, reject) => { - this.iterator.next((err, k, v) => { - if (err) { - reject(err) - return - } - resolve({ key: k, value: v }) - }) - }) - - if (key === undefined && value === undefined) { - this.cleanup() - } - - return { key: this.removePrefix(key), value } - } - - /** - * Seeks to a target key. - * @param target Key to seek to. - */ - public async seek(target: K): Promise { - this.start() - this.iterator.seek(this.addPrefix(target)) - } - - /** - * Executes a function for each key:value pair - * remaining in the iterator. Starts seeking - * from the iterator's cursor. - * @param cb Function to be called for each key:value pair. - */ - public async each(cb: (key: Buffer, value: Buffer) => any): Promise { - while (!this.finished) { - const { key, value } = await this.next() - - if (this.finished) { - return this.end() - } - - let result: any - try { - result = cb(key, value) - - if (result instanceof Promise) { - result = await result - } - } catch (err) { - await this.end() - throw err - } - - if (result === false) { - return this.end() - } - } - - return this.end() - } - - /** - * @returns the items in the iterator. - */ - public async items(): Promise { - const items: KV[] = [] - await this.each((key, value) => { - return items.push({ - key, - value, - }) - }) - return items - } - - /** - * @returns the keys in the iterator. - */ - public async keys(): Promise { - const items = await this.items() - return items.map((item) => { - return item.key - }) - } - - /** - * @returns the values in the iterator. - */ - public async values(): Promise { - const items = await this.items() - return items.map((item) => { - return item.value - }) - } - - /** - * Ends iteration and frees up resources. - */ - public async end(): Promise { - if (!this.iterator) { - try { - this.start() - } catch (err) { - throw err - } - } - - this.cleanup() - await new Promise((resolve, reject) => { - this.iterator.end((err) => { - if (err) { - reject(err) - return - } - resolve() - }) - }) - } - - /** - * Starts iteration by creating a snapshot. - */ - private start(): void { - if (this.iterator !== undefined) { - return - } - - this.iterator = this.db.db.iterator(this.options) - } - - /** - * Cleans up the iterator. - */ - private cleanup(): void { - this.finished = true - } - - /** - * Adds a prefix to a value. - * @param value Value to add the prefix to. - * @returns the value with the prefix added. - */ - private addPrefix(value: Buffer): Buffer { - return value ? Buffer.concat([this.prefix, value]) : value - } - - /** - * Removes a prefix from a value. - * @param value Value to remove prefix from. - * @returns the value with the prefix removed. - */ - private removePrefix(value: Buffer): Buffer { - return value ? value.slice(this.prefix.length) : value - } -} - -/** - * A special purpose iterator which includes a nextRange() function that returns RangeEntrys instead of simple KVs. - * This is used by the RangeBucket class. - */ -export class BaseRangeIterator extends BaseIterator { - /** - * Constructs a RangeIterator with a particular `resultToRange()` function that will transform - * the it.next() result into a RangeEntry. - */ - constructor( - db: DB, - options: IteratorOptions = {}, - readonly resultToRange: (result: KV) => RangeEntry - ) { - super(db, options) - } - - /** - * Advances the iterator to the next key and converts its result into a RangeEntry. - * @returns the RangeEntry at the next key. - */ - public async nextRange(): Promise { - const res: KV = await this.next() - if (typeof res.key === 'undefined') { - return - } - return this.resultToRange(res) - } -} diff --git a/packages/core-db/src/app/key/key.ts b/packages/core-db/src/app/key/key.ts deleted file mode 100644 index d534aafb4d4e..000000000000 --- a/packages/core-db/src/app/key/key.ts +++ /dev/null @@ -1,147 +0,0 @@ -/** - * Modified from bcoin's bdb (https://github.com/bcoin-org/bdb) (MIT LICENSE). - * Credit to the original author, Christopher Jeffrey (https://github.com/chjj). - */ - -/* Internal Imports */ -import { types } from './types' -import { makeID, assert } from './utils' -import { Key, KeyType } from '../../types' - -type KeyTypeName = keyof typeof types - -/** - * Simple key implementation. - */ -export class BaseKey implements Key { - private id: number - private ops: KeyType[] = [] - private size = 0 - private index = -1 - - constructor(id: string | number, ops: KeyTypeName[] = []) { - this.id = makeID(id) - - for (let i = 0; i < ops.length; i++) { - const name = ops[i] - - if (!(name in types)) { - throw new Error(`Invalid type name: ${name}.`) - } - - const op = types[name] - - if (op.dynamic) { - if (this.index === -1) { - this.index = i - } - } else { - this.size += (op as any).size() - } - - this.ops.push(op) - } - } - - /** - * Gets the size of a key. - * @param args Arguments to the key. - * @returns the size of the key. - */ - public getSize(args: any[]): number { - assert(args.length === this.ops.length) - - let size = 1 + this.size - - if (this.index === -1) { - return size - } - - for (let i = this.index; i < args.length; i++) { - const op = this.ops[i] - const arg = args[i] - if (op.dynamic) { - size += op.size(arg) - } - } - - return size - } - - /** - * Encodes a key. - * @param args Arguments to encode. - * @returns the encoded key. - */ - public encode(args: any[] = []): Buffer { - assert(args.length === this.ops.length) - - const size = this.getSize(args) - const key = Buffer.allocUnsafe(size) - - key[0] = this.id - - let offset = 1 - - for (let i = 0; i < this.ops.length; i++) { - const op = this.ops[i] - const arg = args[i] - offset += op.write(key, arg, offset) - } - - return key - } - - /** - * Decodes a key to its component arguments. - * @param key Key to decode. - * @returns the components. - */ - public decode(key: Buffer): any | any[] { - if (this.ops.length === 0) { - return key - } - - if (key.length === 0 || key[0] !== this.id) { - throw new Error('Key prefix mismatch.') - } - - const args = [] - - let offset = 1 - - for (const op of this.ops) { - const arg = op.read(key, offset) - offset += op.size(arg) - args.push(arg) - } - - return args - } - - /** - * Returns the minimum value for some key. - * @param args Arguments to the key. - * @returns the minimum value for that key. - */ - public min(args: any[] = []): Buffer { - for (let i = args.length; i < this.ops.length; i++) { - const op = this.ops[i] - args.push(op.min) - } - return this.encode(args) - } - - /** - * Returns the maximum value for some key. - * @param args Arguments to the key. - * @returns the maximum value for that key. - */ - public max(args: any[] = []): Buffer { - for (let i = args.length; i < this.ops.length; i++) { - const op = this.ops[i] - args.push(op.max) - } - return this.encode(args) - } -} diff --git a/packages/core-db/src/app/key/types.ts b/packages/core-db/src/app/key/types.ts deleted file mode 100644 index 87207d19014b..000000000000 --- a/packages/core-db/src/app/key/types.ts +++ /dev/null @@ -1,290 +0,0 @@ -/** - * Modified from bcoin's bdb (https://github.com/bcoin-org/bdb) (MIT LICENSE). - * Credit to the original author, Christopher Jeffrey (https://github.com/chjj). - */ - -/* Internal Imports */ -import { - assertType, - assertLen, - sizeBuffer, - readBuffer, - writeBuffer, - sizeString, - readString, - writeString, - sizeHex, - writeHex, - BUFFER_MIN, - BUFFER_MAX, -} from './utils' - -/* tslint:disable:no-bitwise */ -export const types = { - char: { - min: '\x00', - max: '\xff', - dynamic: false, - size() { - return 1 - }, - read(k, o) { - assertLen(o + 1 <= k.length) - return String.fromCharCode(k[o]) - }, - write(k, v, o) { - assertType(typeof v === 'string') - assertType(v.length === 1) - assertLen(o + 1 <= k.length) - k[o] = v.charCodeAt(0) - return 1 - }, - }, - uint8: { - min: 0, - max: 0xff, - dynamic: false, - size() { - return 1 - }, - read(k, o) { - assertLen(o + 1 <= k.length) - return k[o] - }, - write(k, v, o) { - assertType((v & 0xff) === v) - assertLen(o + 1 <= k.length) - k[o] = v - return 1 - }, - }, - uint16: { - min: 0, - max: 0xffff, - dynamic: false, - size() { - return 2 - }, - read(k, o) { - assertLen(o + 2 <= k.length) - return k.readUInt16BE(o) - }, - write(k, v, o) { - assertType((v & 0xffff) === v) - assertLen(o + 2 <= k.length) - k.writeUInt16BE(v, o) - return 2 - }, - }, - uint32: { - min: 0, - max: 0xffffffff, - dynamic: false, - size() { - return 4 - }, - read(k, o) { - assertLen(o + 4 <= k.length) - return k.readUInt32BE(o) - }, - write(k, v, o) { - assertType(v >>> 0 === v) - assertLen(o + 4 <= k.length) - k.writeUInt32BE(v, o) - return 4 - }, - }, - uint256: { - min: Buffer.alloc(32, 0x00), - max: Buffer.alloc(32, 0xff), - dynamic: false, - size() { - return 32 - }, - read(k, o) { - assertLen(o + 32 <= k.length) - return k.slice(o, o + 32) - }, - write(k, v, o) { - assertType(Buffer.isBuffer(v)) - assertType(v.copy(k, o) === 32) - return 32 - }, - }, - buffer: { - min: BUFFER_MIN, - max: BUFFER_MAX, - dynamic: true, - size(v) { - return sizeBuffer(v) - }, - read(k, o) { - return readBuffer(k, o) - }, - write(k, v, o) { - return writeBuffer(k, v, o) - }, - }, - hex: { - min: BUFFER_MIN.toString('hex'), - max: BUFFER_MAX.toString('hex'), - dynamic: true, - size(v) { - return sizeString(v, 'hex') - }, - read(k, o) { - return readString(k, o, 'hex') - }, - write(k, v, o) { - return writeString(k, v, o, 'hex') - }, - }, - ascii: { - min: BUFFER_MIN.toString('binary'), - max: BUFFER_MAX.toString('binary'), - dynamic: true, - size(v) { - return sizeString(v, 'binary') - }, - read(k, o) { - return readString(k, o, 'binary') - }, - write(k, v, o) { - return writeString(k, v, o, 'binary') - }, - }, - utf8: { - min: BUFFER_MIN.toString('utf8'), - max: BUFFER_MAX.toString('utf8'), - dynamic: true, - size(v) { - return sizeString(v, 'utf8') - }, - read(k, o) { - return readString(k, o, 'utf8') - }, - write(k, v, o) { - return writeString(k, v, o, 'utf8') - }, - }, - hash160: { - min: Buffer.alloc(20, 0x00), - max: Buffer.alloc(20, 0xff), - dynamic: false, - size() { - return 20 - }, - read(k, o) { - assertLen(o + 20 <= k.length) - return k.slice(o, o + 20) - }, - write(k, v, o) { - assertType(Buffer.isBuffer(v)) - assertType(v.copy(k, o) === 20) - return 20 - }, - }, - hash256: { - min: Buffer.alloc(32, 0x00), - max: Buffer.alloc(32, 0xff), - dynamic: false, - size() { - return 32 - }, - read(k, o) { - assertLen(o + 32 <= k.length) - return k.slice(o, o + 32) - }, - write(k, v, o) { - assertType(Buffer.isBuffer(v)) - assertType(v.copy(k, o) === 32) - return 32 - }, - }, - hash: { - min: Buffer.alloc(1, 0x00), - max: Buffer.alloc(64, 0xff), - dynamic: true, - size(v) { - assertType(Buffer.isBuffer(v)) - return 1 + v.length - }, - read(k, o) { - assertLen(o + 1 <= k.length) - assertLen(k[o] >= 1 && k[o] <= 64) - assertLen(o + 1 + k[o] <= k.length) - return k.slice(o + 1, o + 1 + k[o]) - }, - write(k, v, o) { - assertType(Buffer.isBuffer(v)) - assertType(v.length >= 1 && v.length <= 64) - assertLen(o + 1 <= k.length) - - k[o] = v.length - - assertType(v.copy(k, o + 1) === v.length) - - return 1 + v.length - }, - }, - hhash160: { - min: Buffer.alloc(20, 0x00), - max: Buffer.alloc(20, 0xff), - dynamic: false, - size() { - return 20 - }, - read(k, o) { - assertLen(o + 20 <= k.length) - return k.toString('hex', o, o + 20) - }, - write(k, v, o) { - assertType(writeHex(k, v, o) === 20) - return 20 - }, - }, - hhash256: { - min: Buffer.alloc(32, 0x00), - max: Buffer.alloc(32, 0xff), - dynamic: false, - size() { - return 32 - }, - read(k, o) { - assertLen(o + 32 <= k.length) - return k.toString('hex', o, o + 32) - }, - write(k, v, o) { - assertType(writeHex(k, v, o) === 32) - return 32 - }, - }, - hhash: { - min: Buffer.alloc(1, 0x00), - max: Buffer.alloc(64, 0xff), - dynamic: true, - size(v) { - return 1 + sizeHex(v) - }, - read(k, o) { - assertLen(o + 1 <= k.length) - assertLen(k[o] >= 1 && k[o] <= 64) - assertLen(o + 1 + k[o] <= k.length) - return k.toString('hex', o + 1, o + 1 + k[o]) - }, - write(k, v, o) { - const size = sizeHex(v) - - assertType(size >= 1 && size <= 64) - assertLen(o + 1 <= k.length) - - k[o] = size - - assertType(writeHex(k, v, o + 1) === size) - - return 1 + size - }, - }, -} - -/* tslint:enable:no-bitwise */ diff --git a/packages/core-db/src/app/key/utils.ts b/packages/core-db/src/app/key/utils.ts deleted file mode 100644 index c22f1a5ed9d0..000000000000 --- a/packages/core-db/src/app/key/utils.ts +++ /dev/null @@ -1,191 +0,0 @@ -/** - * Modified from bcoin's bdb (https://github.com/bcoin-org/bdb) (MIT LICENSE). - * Credit to the original author, Christopher Jeffrey (https://github.com/chjj). - */ - -/** - * Checks a length assertion and throws an error - * if the assertion isn't `true`. - * @param check Length assertion to check. - */ -export const assertLen = (check: boolean): void => { - assert(check, new RangeError('Invalid length for database key.')) -} - -/** - * Checks a type assertion and throws an error - * if the assertion isn't `true`. - * @param check Type assertion to check. - */ -export const assertType = (check: boolean): void => { - assert(check, new TypeError('Invalid type for database key.')) -} - -/** - * Checks an assertion and throws an error - * if the assertion isn't `true`. - * @param check Length assertion to check. - * @param err Error to throw if the assertion fails. - */ -export const assert = (check: boolean, err?: Error): void => { - err = err || new Error('Assertion error.') - if (!check) { - if (Error.captureStackTrace) { - Error.captureStackTrace(err, assert) - } - throw err - } -} - -/** - * Parses a value into a key ID. - * @param id Value to parse. - * @returns the key ID. - */ -export const makeID = (id: string | number): number => { - let parsed: number - if (typeof id === 'string') { - assert(id.length === 1) - parsed = id.charCodeAt(0) - } else { - parsed = id - } - - /* tslint:disable-next-line:no-bitwise */ - assert((parsed & 0xff) === parsed) - assert(parsed !== 0xff) - - return parsed -} - -/** - * Computes the size of a string. - * @param value String to check. - * @param encoding Encoding of the string. - * @returns the size of the string. - */ -export const sizeString = (value: string, encoding: BufferEncoding): number => { - return 1 + Buffer.byteLength(value, encoding) -} - -/** - * Reads a string from a buffer. - * @param buf Buffer to read string from. - * @param offset Byte offset to start reading. - * @param encoding Encoding of the string. - * @returns the read string. - */ -export const readString = ( - buf: Buffer, - offset: number, - encoding: BufferEncoding -): string => { - assertLen(offset + 1 <= buf.length) - assertLen(offset + 1 + buf[offset] <= buf.length) - return buf.toString(encoding, offset + 1, offset + 1 + buf[offset]) -} - -/** - * Writes a string to a buffer. - * @param buf Buffer to write to. - * @param value Value to write. - * @param offset Offset to start writing at. - * @param encoding String encoding to use. - * @returns the size of the buffer. - */ -export const writeString = ( - buf: Buffer, - value: string, - offset: number, - encoding: BufferEncoding, - length?: number -): number => { - const size = Buffer.byteLength(value, encoding) - - assertType(size <= 255) - assertLen(offset + 1 <= buf.length) - - buf[offset] = size - - if (size > 0) { - assertType(buf.write(value, offset + 1, length, encoding) === size) - } - - return 1 + size -} - -/** - * Gets the size of a buffer. - * @param buf Buffer to check. - * @returns the size of the buffer. - */ -export const sizeBuffer = (buf: Buffer): number => { - return 1 + buf.length -} - -/** - * Reads a buffer from another buffer. - * @param buf Buffer to read. - * @param offset Offset to start reading from. - * @returns the read buffer. - */ -export const readBuffer = (buf: Buffer, offset: number): Buffer => { - assertLen(offset + 1 <= buf.length) - assertLen(offset + 1 + buf[offset] <= buf.length) - return buf.slice(offset + 1, offset + 1 + buf[offset]) -} - -/** - * Writes a buffer to another buffer. - * @param buf Buffer to write to. - * @param value Buffer to write. - * @param offset Offset to start writing from. - * @returns the length of the new buffer. - */ -export const writeBuffer = ( - buf: Buffer, - value: Buffer, - offset: number -): number => { - assertLen(value.length <= 255) - assertLen(offset + 1 <= buf.length) - buf[offset] = value.length - assertLen(value.copy(buf, offset + 1) === value.length) - return 1 + value.length -} - -/** - * Checks the hex size of an item. - * @param value Item to check. - * @returns the size of the item. - */ -export const sizeHex = (value: Buffer | string): number => { - if (Buffer.isBuffer(value)) { - return value.length - } - - /* tslint:disable-next-line:no-bitwise */ - return value.length >>> 1 -} - -/** - * Writes a hex value to a buffer. - * @param buf Buffer to write to. - * @param value Hex value to write. - * @param offset Offset to start writing from. - * @returns the size of the new buffer. - */ -export const writeHex = ( - buf: Buffer, - value: Buffer | string, - offset: number, - length?: number -): number => { - if (Buffer.isBuffer(value)) { - return value.copy(buf, offset) - } - return buf.write(value, offset, length, 'hex') -} - -export const BUFFER_MIN = Buffer.alloc(0) -export const BUFFER_MAX = Buffer.alloc(255, 0xff) diff --git a/packages/core-db/src/app/keystore/index.ts b/packages/core-db/src/app/keystore/index.ts deleted file mode 100644 index ab6614489645..000000000000 --- a/packages/core-db/src/app/keystore/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './wallet-db' -export * from './wallet' diff --git a/packages/core-db/src/app/keystore/wallet-db.ts b/packages/core-db/src/app/keystore/wallet-db.ts deleted file mode 100644 index 15f0ec2e64e0..000000000000 --- a/packages/core-db/src/app/keystore/wallet-db.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* External Imports */ -import { Keystore } from '@eth-optimism/core-utils' -import { ethers } from 'ethers' - -/* Internal Imports */ -import { KeyValueStore, WalletDB } from '../../types' - -export class DefaultWalletDB implements WalletDB { - /** - * Initializes the database wrapper. - * @param db Database instance to insert data into. - */ - constructor(private db: KeyValueStore) {} - - /** - * Adds a keystore file to the database. - * @param keystore Keystore file to add. - * @returns a Promise that resolves once the keystore has been inserted. - */ - public async putKeystore(keystore: Keystore): Promise { - const key = Buffer.from(ethers.utils.getAddress(keystore.address)) - const value = Buffer.from(JSON.stringify(keystore)) - - await this.db.put(key, value) - } - - /** - * Queries a keystore file from the database. - * @param address Address to query a keystore for. - * @returns the keystore file for the given address. - */ - public async getKeystore(address: string): Promise { - const key = Buffer.from(ethers.utils.getAddress(address)) - const value = await this.db.get(key) - - if (value === null) { - throw new Error('Keystore file does not exist.') - } - - return JSON.parse(value.toString()) - } - - /** - * Checks if the database has a specific keystore file. - * @param address Address to find a keystore file for. - * @returns `true` if the database has the keystore, `false` otherwise. - */ - public async hasKeystore(address: string): Promise { - try { - await this.getKeystore(address) - } catch (err) { - if (err.message.includes('Keystore file does not exist.')) { - return false - } else { - throw err - } - } - - return true - } - - /** - * Lists all addresses that the database has keystore files for. - * @returns all addresses with stored keystores. - */ - public async listAccounts(): Promise { - const keystores = await this.db.iterator().values() - return keystores.map((keystore) => { - const address = JSON.parse(keystore.toString()).address - return ethers.utils.getAddress(address) - }) - } -} diff --git a/packages/core-db/src/app/keystore/wallet.ts b/packages/core-db/src/app/keystore/wallet.ts deleted file mode 100644 index fc7d574fca12..000000000000 --- a/packages/core-db/src/app/keystore/wallet.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* External Imports */ -import { ethers } from 'ethers' -import { - DefaultSignatureProvider, - SignatureProvider, - Wallet, -} from '@eth-optimism/core-utils' - -/* Internal Imports */ -import { WalletDB } from '../../types' - -/** - * Simple Wallet implementation. - */ -export class DefaultWallet implements Wallet { - private unlocked: Record = {} - - /** - * Initializes the wallet. - * @param walletdb DB wrapper to get values from. - */ - - constructor(private walletdb: WalletDB) {} - - /** - * @returns the list of account addresses stored in the wallet. - */ - public async listAccounts(): Promise { - return this.walletdb.listAccounts() - } - - /** - * Creates a new account. - * @param password Password for the account. - * @returns the account address. - */ - public async createAccount(password: string): Promise { - const wallet = ethers.Wallet.createRandom() - const keystore = await wallet.encrypt(password) - await this.walletdb.putKeystore(JSON.parse(keystore)) - return wallet.address - } - - /** - * Unlocks an account. - * @param address Account to unlock. - * @param password Password for the account. - */ - public async unlockAccount(address: string, password: string): Promise { - if (!(await this.walletdb.hasKeystore(address))) { - throw new Error('Account does not exist.') - } - - const keystore = await this.walletdb.getKeystore(address) - - let wallet - try { - wallet = await ethers.Wallet.fromEncryptedJson( - JSON.stringify(keystore), - password - ) - } catch (err) { - // TODO: Figure out how to handle other decryption errors. - throw new Error('Invalid account password.') - } - - // TODO: Is there a more secure way to store unlocked accounts? - this.unlocked[address] = wallet - } - - /** - * Locks an account. - * @param address Account to lock. - */ - public async lockAccount(address: string): Promise { - delete this.unlocked[address] - } - - public async getSignatureProvider( - address: string - ): Promise { - if (!(await this.walletdb.hasKeystore(address))) { - throw new Error('Account does not exist.') - } - - if (!(address in this.unlocked)) { - throw new Error('Account is not unlocked.') - } - - return new DefaultSignatureProvider(this.unlocked[address]) - } - - /** - * Signs a message. - * @param address Address to sign the message from. - * @param message Message to sign. - * @returns the signature over the message. - */ - public async sign(address: string, message: string): Promise { - if (!(await this.walletdb.hasKeystore(address))) { - throw new Error('Account does not exist.') - } - - if (!(address in this.unlocked)) { - throw new Error('Account is not unlocked.') - } - - return this.unlocked[address].signMessage(message) - } -} diff --git a/packages/core-db/src/app/postgres.ts b/packages/core-db/src/app/postgres.ts deleted file mode 100644 index 7d7ac744e4ab..000000000000 --- a/packages/core-db/src/app/postgres.ts +++ /dev/null @@ -1,97 +0,0 @@ -/* External Imports */ -import { getLogger, logError } from '@eth-optimism/core-utils' - -/* Internal Imports */ -import { RDB, Row } from '../types/db' - -const log = getLogger('postgres-db') -const Pool = require('pg-pool') - -export class PostgresDB implements RDB { - private readonly pool - - constructor( - host: string, - port: number, - user: string, - password: string, - database: string, - poolSize: number = 10, - ssl: boolean = false - ) { - this.pool = new Pool({ - database, - user, - password, - host, - port, - ssl, - max: poolSize, - idleTimeoutMillis: 10_000, - connectionTimeoutMillis: 1000, - }) - } - - public async select(query: string, client?: any): Promise { - const c = client || (await this.pool.connect()) - try { - const res = await c.query(query) - return res.rows - } catch (e) { - logError(log, `Error executing query ${query}!`, e) - throw e - } finally { - if (!client) { - c.release() - } - } - } - - public async execute(query: string, client?: any): Promise { - const c = client || (await this.pool.connect()) - try { - // TODO: we can return IDs from here on inserts if we want this. Right now it doesn't matter. - await c.query(query) - } catch (e) { - logError(log, `Error executing query ${query}!`, e) - throw e - } finally { - if (!client) { - c.release() - } - } - } - - public async startTransaction(): Promise { - const client = await this.pool.connect() - try { - await client.query('BEGIN') - return client - } catch (e) { - logError(log, `Error creating a transaction`, e) - throw e - } - } - - public async commit(client: any): Promise { - try { - await client.query('COMMIT') - } catch (e) { - logError(log, `Error committing transaction!`, e) - throw e - } finally { - client.release() - } - } - - public async rollback(client: any): Promise { - try { - await client.query('ROLLBACK') - } catch (e) { - logError(log, `Error rolling back transaction!`, e) - throw e - } finally { - client.release() - } - } -} diff --git a/packages/core-db/src/app/queue/index.ts b/packages/core-db/src/app/queue/index.ts deleted file mode 100644 index 65b3bd8188fc..000000000000 --- a/packages/core-db/src/app/queue/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './queued-persisted-processor' -export * from './sequential-processing-data-service' diff --git a/packages/core-db/src/app/queue/queued-persisted-processor.ts b/packages/core-db/src/app/queue/queued-persisted-processor.ts deleted file mode 100644 index d762007c9753..000000000000 --- a/packages/core-db/src/app/queue/queued-persisted-processor.ts +++ /dev/null @@ -1,205 +0,0 @@ -/* External Imports */ -import { getLogger, logError, Logger, sleep } from '@eth-optimism/core-utils' - -import AsyncLock from 'async-lock' - -/* Internal Imports */ -import { - QueuedPersistedProcessor, - SequentialProcessingItem, - SequentialProcessingDataService, -} from '../../types' - -const log: Logger = getLogger('base-persisted-queue') -const lockKey: string = 'lock_key' - -export abstract class BaseQueuedPersistedProcessor - implements QueuedPersistedProcessor { - private readonly processingLock: AsyncLock - - protected constructor( - private readonly processingDataService: SequentialProcessingDataService, - private readonly persistenceKey: string, - private readonly startIndex: number = 0, - private readonly retrySleepDelayMillis: number = 1000 - ) { - this.processingLock = new AsyncLock() - } - - /** - * @inheritDoc - */ - public async add(index: number, item: T): Promise { - await this.processingDataService.persistItem( - index, - await this.serializeItem(item), - this.persistenceKey - ) - - // purposefully not awaiting response - this.handleIfReady(index, item) - } - - /** - * @inheritDoc - * - * Note: This is not async-safe in that if it is called at the same time for the same index, - * the outcome is non-deterministic. - */ - public async markProcessed(index: number): Promise { - this.log( - `Marking index ${index} as processed for processor ${this.persistenceKey}` - ) - - await this.processingDataService.updateToProcessed( - index, - this.persistenceKey - ) - - setTimeout(() => { - this.handleIfExists(index + 1) - }, 0) - } - - /** - * @inheritDoc - */ - public async getLastIndexProcessed(): Promise { - const last: number = await this.processingDataService.getLastIndexProcessed( - this.persistenceKey - ) - return Math.max(last, this.startIndex - 1) - } - - /** - * Handles the provided item, which is the next item in the queue. - * When handling is complete, whether sync or async, `markProcessed(...)` must be called. - * - * @param index The index of the item. - * @param item The item to handle. - */ - protected abstract handleNextItem(index: number, item: T): Promise - - /** - * Serializes the provided item of T type into a string. - * - * @param item The item to serialize. - * @returns The string of the serialized item. - */ - protected abstract serializeItem(item: T): Promise - - /** - * Deserializes the provided string, representing an item of T type. - * - * @param itemString The string representation of the object to deserialize. - * @returns The deserialized item. - */ - protected abstract deserializeItem(itemString: string): Promise - - /** - * Initializes the processor based on any previously-stored state. - */ - protected async init(): Promise { - const lastProcessed: number = await this.getLastIndexProcessed() - return this.handleIfExists(lastProcessed + 1) - } - - /** - * Log utility that prepends logs with this specific instance's persistence key. - * - * @param msg The message to log. - * @param error Whether or not this should be logged to error. - */ - protected log(msg: string, error: boolean = false, e?: Error): void { - const message: string = `[${this.persistenceKey}] ${msg}` - if (error) { - if (!!e) { - logError(log, message, e) - } else { - log.error(message) - } - } else { - log.debug(message) - } - } - - /** - * Log utility for logging errors. - * - * @param msg The message to log. - * @param e The associated error, if one exists. - */ - protected logError(msg: string, e?: Error): void { - this.log(msg, true, e) - } - - /** - * Handles the provided item if it is ready for processing, namely if it is - * the next to process and the one before it has been marked as complete. - * - * Note: this is not async-safe in that if it is called at the same time for the same index & item, - * the outcome is non-deterministic. - * - * @param index The index in question. - * @param item The item. - */ - private async handleIfReady(index: number, item: T): Promise { - const shouldRetry: boolean = await this.processingLock.acquire( - lockKey, - async () => { - try { - const lastProcessed: number = await this.getLastIndexProcessed() - - if (lastProcessed !== index - 1) { - this.log( - `Told to process ${index} but last index processed was ${lastProcessed}, so will not process.` - ) - return false - } - - this.log(`Handling index ${index}.`) - await this.handleNextItem(index, item) - } catch (e) { - this.log(`Error handling item ${index}. Going to retry.`, true, e) - return true - } - } - ) - - if (!shouldRetry) { - return - } - - await sleep(this.retrySleepDelayMillis) - return this.handleIfReady(index, item) - } - - /** - * Handles the item with the provided index if one exists and is not already processed. - * - * @param index The index in question. - */ - private async handleIfExists(index: number): Promise { - const item: SequentialProcessingItem = await this.processingDataService.fetchItem( - index, - this.persistenceKey - ) - - if (!item) { - this.log( - `Index ${index} not yet present. Waiting for its arrival to process it.` - ) - return - } else if (!!item.processed) { - this.log( - `Index ${index} already processed. Attempting to process ${index + 1}` - ) - setTimeout(() => { - this.handleIfExists(index + 1) - }, 0) - return - } - - return this.handleIfReady(index, await this.deserializeItem(item.data)) - } -} diff --git a/packages/core-db/src/app/queue/sequential-processing-data-service.ts b/packages/core-db/src/app/queue/sequential-processing-data-service.ts deleted file mode 100644 index 55e350a22ef9..000000000000 --- a/packages/core-db/src/app/queue/sequential-processing-data-service.ts +++ /dev/null @@ -1,183 +0,0 @@ -/* External Imports */ -import { getLogger, Logger, logError } from '@eth-optimism/core-utils' - -/* Internal Imports */ -import { - SequentialProcessingDataService, - SequentialProcessingItem, -} from '../../types/queue' -import { RDB, Row } from '../../types/db' - -const log: Logger = getLogger('sequential-processing-data-service') - -const doesColumnDataExist = ( - queryRes: Row[], - rowIndex: number, - columnName: string -): boolean => { - return ( - !!queryRes && - queryRes.length > rowIndex && - !!queryRes[rowIndex] && - queryRes[rowIndex][columnName] !== null && - queryRes[rowIndex][columnName] !== undefined - ) -} - -export class DefaultSequentialProcessingDataService - implements SequentialProcessingDataService { - constructor(private readonly rdb: RDB) {} - - /** - * @inheritDoc - */ - public async fetchItem( - index: number, - sequenceKey: string - ): Promise { - const res: Row[] = await this.rdb.select( - `SELECT data_to_process, processed - FROM sequential_processing - WHERE - sequence_key = '${sequenceKey}' - AND sequence_number = ${index}` - ) - - if (!doesColumnDataExist(res, 0, 'data_to_process')) { - return undefined - } - return { - data: res[0]['data_to_process'], - processed: !!res[0]['processed'], - } - } - - /** - * @inheritDoc - */ - public async getLastIndexProcessed(sequenceKey: string): Promise { - const res = await this.rdb.select( - `SELECT MAX(sequence_number) as last_processed - FROM sequential_processing - WHERE - sequence_key = '${sequenceKey}' - AND processed = 'TRUE'` - ) - - if (!doesColumnDataExist(res, 0, 'last_processed')) { - return -1 - } - - return parseInt(res[0]['last_processed'], 10) - } - - /** - * @inheritDoc - */ - public async persistItem( - index: number, - itemData: string, - sequenceKey: string, - processed: boolean = false - ): Promise { - try { - await this.rdb.execute( - `INSERT INTO sequential_processing(sequence_key, sequence_number, data_to_process, processed) - VALUES('${sequenceKey}', ${index}, '${itemData}', ${ - processed ? 'TRUE' : 'FALSE' - }) - ON CONFLICT ON CONSTRAINT sequential_processing_sequence_key_sequence_number_key DO UPDATE - SET data_to_process = '${itemData}'` - ) - } catch (e) { - logError( - log, - `[${sequenceKey}] Error persisting index ${index} data: ${itemData}.`, - e - ) - throw e - } - - log.debug( - `[${sequenceKey}] Persisted item with index ${index}, processed=${processed}: ${itemData}` - ) - } - - /** - * @inheritDoc - */ - public async updateToProcessed( - index: number, - sequenceKey: string - ): Promise { - await this.rdb.execute( - `UPDATE sequential_processing - SET processed = 'TRUE' - WHERE - sequence_key = '${sequenceKey}' - AND sequence_number = ${index}` - ) - log.debug(`[${sequenceKey}] index ${index} updated to processed.`) - } -} - -/** - * Mock data service used to mock out the one specified above. - */ -export class InMemoryProcessingDataService - implements SequentialProcessingDataService { - public lastProcessedIndex: Map - public items: Map> - - constructor() { - this.items = new Map>() - this.lastProcessedIndex = new Map() - } - - public async updateToProcessed( - index: number, - sequenceKey: string - ): Promise { - const map = this.items.get(sequenceKey) - if (!map) { - throw Error( - `Tried to update processed for a sequence key that contains no items (${sequenceKey})` - ) - } - const item = map.get(index) - if (!item) { - throw Error(`Tried to updated index ${index} which does not exist.`) - } - item.processed = true - this.lastProcessedIndex.set(sequenceKey, index) - } - - public async persistItem( - index: number, - data: string, - sequenceKey: string, - processed: boolean = false - ): Promise { - if (!this.items.has(sequenceKey)) { - this.items.set(sequenceKey, new Map()) - } - if (!this.items.get(sequenceKey).has(index)) { - this.items.get(sequenceKey).set(index, { processed, data }) - } - } - - public async fetchItem( - index: number, - sequenceKey: string - ): Promise { - if (!this.items.has(sequenceKey)) { - return undefined - } - return this.items.get(sequenceKey).get(index) - } - - public async getLastIndexProcessed(sequenceKey: string): Promise { - const index = this.lastProcessedIndex.get(sequenceKey) - return index === undefined ? -1 : index - } -} diff --git a/packages/core-db/src/app/range-bucket.ts b/packages/core-db/src/app/range-bucket.ts deleted file mode 100644 index 6315bd457068..000000000000 --- a/packages/core-db/src/app/range-bucket.ts +++ /dev/null @@ -1,346 +0,0 @@ -/** - * Modified from bcoin's bdb (https://github.com/bcoin-org/bdb) (MIT LICENSE). - * Credit to the original author, Christopher Jeffrey (https://github.com/chjj). - */ - -/* External Imports */ -import { - BIG_ENDIAN, - BigNumber, - Endianness, - getLogger, - ZERO, -} from '@eth-optimism/core-utils' - -/* Internal Imports */ -import { - RangeBucket, - RangeEntry, - Bucket, - Batch, - DB, - IteratorOptions, - KV, - PUT_BATCH_TYPE, - RangeIterator, -} from '../types' -import { BaseRangeIterator } from './iterator' -import { intersects } from './utils' - -/* Logging */ -const log = getLogger('range-db') - -/** - * Simple bucket implementation that forwards all - * calls up to the database but appends a prefix. - */ -export class BaseRangeBucket implements RangeBucket { - /** - * Creates the RangeBucket. - * @param db Pointer to the Level instance to be used. - * @param prefix A Buffer which is prepended to each range key. - * @param keyLength The number of bytes which should be used for the range keys. - * @param endianness The endianness of the range keys. - */ - constructor( - readonly db: DB, - readonly prefix: Buffer, - readonly keyLength: number = 16, - readonly endianness: Endianness = BIG_ENDIAN - ) {} - - /** - * Concatenates some value to this bucket's prefix. - * @param value Value to concatenate. - * @returns the value concatenated to the prefix. - */ - private addPrefix(value: Buffer): Buffer { - return value !== undefined - ? Buffer.concat([this.prefix, value]) - : this.prefix - } - - /** - * Adds the start position of a range to a Buffer value. - * This is used to generate the value we store in the DB - * because each range is stored internally as `end->start+data`. - * @param start A BigNumber representing the start position. - * @param value A Buffer value, likely to be stored. - * @returns resulting concatenation of the start key & input value - */ - private addStartToValue(start: BigNumber, value: Buffer): Buffer { - return Buffer.concat([ - start.toBuffer(this.endianness, this.keyLength), - value, - ]) - } - - /** - * Extracts the start out of a Buffer which contains `start+data` - * @param value A buffer which contains a start & the actual data - * @returns the start as a Buffer - */ - private getStartFromValue(value: Buffer): Buffer { - return value.slice(0, this.keyLength) - } - - /** - * Extracts the data out of a Buffer which contains `start+data` - * @param value A buffer which contains a start & the actual data - * @returns the start as a Buffer - */ - private getDataFromValue(value: Buffer): Buffer { - return value.slice(this.keyLength) - } - - /** - * Turns a BigNumber into a Buffer which can be used as a range key. - * In particular this means prepending the buffer with our prefix & padding zeros - * to make sure the start/end has the proper length. - * @param start A BigNumber representing the start position. - * @param value A Buffer value, likely to be stored. - * @returns resulting concatenation of the start key & input value - */ - private bnToKey(bigNum: BigNumber): Buffer { - const buf = bigNum.toBuffer(this.endianness, this.keyLength) - return Buffer.concat([this.prefix, buf]) - } - - /** - * Checks if the Buffer value contains the correct prefix. - * @param key A buffer key to our database. - * @returns true if the key starts with our prefix, false otherwise. - */ - private isCorrectPrefix(key: Buffer): boolean { - if (typeof key === 'undefined') { - return false - } - return Buffer.compare(this.prefix, key.slice(0, this.prefix.length)) === 0 - } - - /** - * Validates the range input to make sure that start < end and start >= 0. - * @param start The start of the range. - * @param end The end of the range. - * @returns true if start > end, false otherwise. - */ - private validateRange(start: BigNumber, end: BigNumber): void { - // Make sure start is less than end - if (!start.lt(end)) { - throw new Error('Start not less than end') - } - // Make sure start is greater than or equal to zero - if (!start.gte(ZERO)) { - throw new Error('Start less than zero') - } - } - - /** - * Transforms a result of the DB query (key, value) into a range object. - * @param result The resulting value which has been extracted from our DB. - * @returns a range object with {start, end, value} - */ - private resultToRange(result: KV): RangeEntry { - // Helper function which gets the start and end position from a DB seek result - return { - start: new BigNumber(this.getStartFromValue(result.value)), - end: new BigNumber(result.key.slice(this.prefix.length)), - value: this.getDataFromValue(result.value), - } - } - - /** - * Iterates through the DB to find all overlapping ranges & constructs an array of - * batch operations to delete them. This is used in `del()` and `put()` - * @param start The start of the range which we want deletion batch operations for. - * @param end The end of the range which we want deletion batch operations for. - * @returns an object which contains both the ranges we queried & the batch deletion operations. - */ - private async delBatchOps( - start: BigNumber, - end: BigNumber - ): Promise<{ ranges: RangeEntry[]; batchOps: Batch[] }> { - this.validateRange(start, end) - const ranges = await this.get(start, end) - const batchOps = [] - for (const range of ranges) { - batchOps.push({ - type: 'del', - key: this.bnToKey(range.end), - }) - } - return { ranges, batchOps } - } - - /** - * Puts a new range in the DB. Note that it maps the values to a range. - * Sometimes putting a new range will split old ranges, or delete them entirely. - * For example: put(0,5,'$') might result in `$$$$$`, then put(1,4,'#') would result in `$###$`. - * @param start The start of the range which we are putting values into. - * @param end The end of the range which we are putting values into. - * @param value The value which we will be putting in these ranges. - */ - public async put( - start: BigNumber, - end: BigNumber, - value: Buffer - ): Promise { - this.validateRange(start, end) - log.debug( - 'Putting range: [', - start.toString(16), - ',', - end.toString(16), - ') with value:', - value - ) - - // Step #1: get all overlapping ranges and queue them for deletion - // - const { ranges, batchOps } = await this.delBatchOps(start, end) - - // Step #2: Add back ranges which are split - // - // If the start position is greater than the first range's start... - if (ranges.length > 0 && start.gt(ranges[0].start)) { - // Reduce the first affected range's end position. Eg: ##### becomes ###$$ - batchOps.push({ - type: PUT_BATCH_TYPE, - key: this.bnToKey(start), - value: this.addStartToValue(ranges[0].start, ranges[0].value), - }) - } - // If the end position less than the last range's end... - if (ranges.length > 0 && ranges[ranges.length - 1].end.gt(end)) { - batchOps.push({ - type: PUT_BATCH_TYPE, - key: this.bnToKey(ranges[ranges.length - 1].end), - value: this.addStartToValue(end, ranges[ranges.length - 1].value), - }) - } - - // Step #3: Add our new range - // - batchOps.push({ - type: PUT_BATCH_TYPE, - key: this.bnToKey(end), - value: this.addStartToValue(start, value), - }) - - // Step #4: Execute the batch! - // - await this.db.batch(batchOps) - } - - /** - * Deletes all ranges which intersect with [start,end) - * @param start The start of the range we are deleting. - * @param end The end of the range we are deleting. - * @returns all of the ranges which have been deleted. - */ - public async del(start: BigNumber, end: BigNumber): Promise { - // Delete all overlapping ranges and return the values which have been deleted - const { ranges, batchOps } = await this.delBatchOps(start, end) - await this.db.batch(batchOps) - return ranges - } - - public async hasDataInRange( - start: BigNumber, - end: BigNumber - ): Promise { - // TODO: can eagerly return when true, but this is good enough or now - return (await this.get(start, end)).length > 0 - } - - /** - * Gets all ranges which intersect with [start,end) - * @param start The start of the range we are getting. - * @param end The end of the range we are getting. - * @returns all of the ranges which have been gotten. - */ - public async get(start: BigNumber, end: BigNumber): Promise { - this.validateRange(start, end) - log.debug( - 'Getting range: [', - start.toString(16), - ',', - end.toString(16), - ')' - ) - // Seek to the beginning - const it = this.db.iterator({ - gt: this.bnToKey(start), - keyAsBuffer: true, - }) - const ranges = [] - let result = await it.next() - // First make sure that the resulting value has the correct prefix. - if (!this.isCorrectPrefix(result.key)) { - // If not return because this means there are no values yet put in this RangeDB - await it.end() - return [] - } - const queryStart = this.bnToKey(start) - const queryEnd = this.bnToKey(end) - let resultStart = this.addPrefix(this.getStartFromValue(result.value)) - let resultEnd = result.key - while ( - intersects(queryStart, queryEnd, resultStart, resultEnd) && - this.isCorrectPrefix(result.key) - ) { - // If the query & result intersect, add it to our ranges array - ranges.push(this.resultToRange(result)) - // Get the next result - result = await it.next() - // Make sure the result returned a value - if (typeof result.key === 'undefined') { - break - } - // Format the result start & end as buffers with the correct prefix - resultStart = this.addPrefix(this.getStartFromValue(result.value)) - resultEnd = result.key - } - // End the iteration - await it.end() - // Return the ranges - return ranges - } - - /** - * Creates an iterator with some options. - * @param options Parameters for the iterator. - * @returns the iterator instance. - */ - public iterator(options: IteratorOptions = {}): RangeIterator { - const rangeIterator = new BaseRangeIterator( - this.db, - { - ...options, - prefix: this.addPrefix(options.prefix), - }, - (res: KV) => this.resultToRange(res) - ) - return rangeIterator - } - - /** - * Creates a prefixed bucket underneath - * this bucket. - * @param prefix Prefix to use for the bucket. - * @returns the bucket instance. - */ - public bucket(prefix: Buffer): Bucket { - return this.db.bucket(this.addPrefix(prefix)) - } - - /** - * Creates a prefixed range bucket underneath - * this bucket. - * @param prefix Prefix to use for the bucket. - * @returns the range bucket instance. - */ - public rangeBucket(prefix: Buffer): RangeBucket { - return this.db.rangeBucket(this.addPrefix(prefix)) - } -} diff --git a/packages/core-db/src/app/utils/index.ts b/packages/core-db/src/app/utils/index.ts deleted file mode 100644 index 29e028ca749c..000000000000 --- a/packages/core-db/src/app/utils/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './range' diff --git a/packages/core-db/src/app/utils/range.ts b/packages/core-db/src/app/utils/range.ts deleted file mode 100644 index 761b4f131932..000000000000 --- a/packages/core-db/src/app/utils/range.ts +++ /dev/null @@ -1,275 +0,0 @@ -/* External Imports */ -import { - BigNumber, - BlockRange, - bufferUtils, - ONE, - Range, -} from '@eth-optimism/core-utils' - -/** - * Checks if two ranges intersect, eg. [1,10) & [8,11) would return true. - * @param start1 The start of the first range. - * @param end1 The end of the first range. - * @param start2 The start of the second range. - * @param end2 The end of the second range. - * @returns true if max(start1, start2) < min(end1, end2), false otherwise. - */ -export const intersects = ( - start1: Buffer, - end1: Buffer, - start2: Buffer, - end2: Buffer -): boolean => { - const maxStart = bufferUtils.max(start1, start2) - const minEnd = bufferUtils.min(end1, end2) - return bufferUtils.lt(maxStart, minEnd) -} - -/** - * Gets the intersection of two Ranges, eg. [1,10) & [8,11) would return [8,10). - * @param range1 the first range - * @param range2 the second range - * @returns true if ranges overlap, false otherwise - */ -export const getOverlappingRange = ( - range1: Range, - range2: Range -): Range | undefined => { - const start: BigNumber = BigNumber.max(range1.start, range2.start) - const end: BigNumber = BigNumber.min(range1.end, range2.end) - - return start.lt(end) ? { start, end } : undefined -} - -/** - * Checks if two ranges intersect, eg. [1,10) & [8,11) would return true. - * @param range1 the first range - * @param range2 the second range - * @returns true if ranges overlap, false otherwise - */ -export const rangesIntersect = (range1: Range, range2: Range): boolean => { - return !!getOverlappingRange(range1, range2) -} - -/** - * Checks whether or not a Range is entirely contained within another Range (inclusive) - * - * @param subset the Range that is being checked as the subset - * @param superset the Range that is being checked as the superset - * @returns true if subset is a subset of superset, false otherwise - */ -export const isRangeSubset = (subset: Range, superset: Range): boolean => { - return ( - subset !== undefined && - superset !== undefined && - subset.start.gte(superset.start) && - subset.end.lte(superset.end) - ) -} - -/** - * Determines whether the provided Ranges collectively span the Range in question. - * For instance, - * doRangesSpanRange([{start: 1, end: 3}, {start: 3, end: 5}], {start: 2, end: 4}) - * returns true because there is no number in range that is not covered by at - * least one element in ranges. - * - * @param ranges the Ranges that, when combined will/won't span the rangeToSpan - * @param rangeToSpan the Range being evaluated - * @returns true if ranges span rangeToSpan, false otherwise - */ -export const doRangesSpanRange = ( - ranges: Range[], - rangeToSpan: Range -): boolean => { - // Sorting the ranges by Start so we can go through them sequentially - const sortedRanges: Range[] = ranges.sort((a: Range, b: Range) => { - return a.start.lt(b.start) ? -1 : a.start.eq(b.start) ? 0 : 1 - }) - - let lowestNotSpanned: BigNumber = rangeToSpan.start - for (const rangeElem of sortedRanges) { - // If our lowest range start is greater than our lowestNotSpanned, - // the range cannot be spanned because the Ranges do not include lowestNotSpanned. - if (rangeElem.start.gt(lowestNotSpanned)) { - return false - } - - // Now we've covered rangeElem.start - rangeElem.end, so update lowestNotSpanned - lowestNotSpanned = rangeElem.end - - // If the entire range has been spanned we can return true - if (lowestNotSpanned.gte(rangeToSpan.end)) { - return true - } - } - - return false -} - -/** - * RangeStore makes it easy to store ranges. - * When ranges are added, only the sections with - * a higher block number than existing ranges - * that they overlap with will be inserted. - */ -export class DefaultBlockRange { - public ranges: T[] - - /** - * Creates the store. - * @param ranges Initial ranges to store. - */ - constructor(ranges: T[] = []) { - this.ranges = ranges - } - - /** - * Merges the ranges of another RangeStore into this one. - * @param other The other RangeStore. - */ - public merge(other: DefaultBlockRange): void { - for (const range of other.ranges) { - this.addRange(range) - } - } - - /** - * Returns the sections of existing ranges - * that overlap with the given range. - * @param range Range to overlap with. - * @returns a list of existing ranges. - */ - public getOverlapping(range: Range): T[] { - return this.ranges.reduce((overlap, existing) => { - const overlapping: Range | undefined = getOverlappingRange( - existing, - range - ) - if (!!overlapping) { - overlap.push({ - ...existing, - start: overlapping.start, - end: overlapping.end, - }) - } - return overlap - }, []) - } - - /** - * Adds a range to the range store. - * Will pieces of the range with a higher - * block number than the existing ranges - * they overlap with. - * @param range Range to add. - */ - public addRange(range: T): void { - if (range.start.gte(range.end)) { - throw new Error('Invalid range') - } - - const toAdd = new DefaultBlockRange([range]) - for (const overlap of this.getOverlapping(range)) { - if (overlap.block.gt(range.block)) { - // Existing range has a greater block number, - // don't add this part of the new range. - toAdd.removeRange(overlap) - } else { - // New range has a greater block number, - // remove this part of the old range. - this.removeRange(overlap) - } - } - - this.ranges = this.ranges.concat(toAdd.ranges) - this.sortRanges() - } - - /** - * Removes a range from the store. - * @param range Range to remove. - */ - public removeRange(range: Range): void { - for (const overlap of this.getOverlapping(range)) { - // Remove the old range entirely. - let removed: T - this.ranges = this.ranges.filter((r) => { - if (r.start.lte(overlap.start) && r.end.gte(overlap.end)) { - removed = r - return false - } - return true - }) - - // Add back any of the left or right - // portions of the old snapshot that didn't - // overlap with the piece being removed. - // For visual intuition: - // - // [-----------] old snapshot - // [---] removed range - // |xxx| left remainder - // |xxx| right remainder - - // Add left remainder. - if (removed.start.lt(overlap.start)) { - this.ranges.push({ - ...removed, - end: overlap.start, - }) - } - - // Add right remainder. - if (removed.end.gt(overlap.end)) { - this.ranges.push({ - ...removed, - start: overlap.end, - }) - } - } - - this.sortRanges() - } - - /** - * Increments the block number of any parts of ranges - * that intersect with the given range. - * @param range Range to increment. - */ - public incrementBlocks(range: Range): void { - if (range.start.gte(range.end)) { - throw new Error('Invalid range') - } - - for (const existing of this.ranges) { - const overlap: Range = { - start: BigNumber.max(existing.start, range.start), - end: BigNumber.min(existing.end, range.end), - } - - // No overlap, can skip. - if (overlap.start.gte(overlap.end)) { - continue - } - - this.addRange({ - ...existing, - ...overlap, - ...{ - block: existing.block.add(ONE), - }, - }) - } - } - - /** - * Sorts ranges by start. - */ - private sortRanges(): void { - this.ranges = this.ranges.sort((a, b) => { - return a.start.sub(b.start).toNumber() - }) - } -} diff --git a/packages/core-db/src/index.ts b/packages/core-db/src/index.ts deleted file mode 100644 index c88cbf1e5b84..000000000000 --- a/packages/core-db/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './app' -export * from './types' diff --git a/packages/core-db/src/types/db/db.interface.ts b/packages/core-db/src/types/db/db.interface.ts deleted file mode 100644 index f994a5bee531..000000000000 --- a/packages/core-db/src/types/db/db.interface.ts +++ /dev/null @@ -1,188 +0,0 @@ -/* External Imports */ -import { - AbstractIteratorOptions, - AbstractLevelDOWN, - AbstractOpenOptions, -} from 'abstract-leveldown' - -/* Internal Imports */ -import { RangeBucket, RangeEntry } from './range-db.interface' - -export type K = NonNullable -export type V = NonNullable -export interface KV { - key: K - value: V -} - -export const PUT_BATCH_TYPE = 'put' -export const DEL_BATCH_TYPE = 'del' - -export type Batch = PutBatch | DelBatch - -export interface PutBatch { - readonly type: 'put' - readonly key: K - readonly value: V -} - -export interface DelBatch { - readonly type: 'del' - readonly key: K -} - -/** - * KeyValueStore represents a basic collection of key:value pairs. - */ -export interface KeyValueStore { - /** - * Queries the value at a given key. - * @param key Key to query. - * @returns the value at that key. - */ - get(key: K): Promise - - /** - * Sets the value at a given key. - * @param key Key to set. - * @param value Value to set to. - */ - put(key: K, value: V): Promise - - /** - * Deletes a given key. - * @param key Key to delete. - */ - del(key: K): Promise - - /** - * Checks whether a given key is set. - * @param key Key to query. - * @returns `true` if the key is set, `false` otherwise. - */ - has(key: K): Promise - - /** - * Performs a series of operations in batch. - * @param operations Operations to perform. - */ - batch(operations: ReadonlyArray): Promise - - /** - * Creates an iterator with some options. - * @param options Parameters for the iterator. - * @returns the iterator instance. - */ - iterator(options?: IteratorOptions): Iterator - - /** - * Creates a prefixed bucket underneath - * this bucket. - * @param prefix Prefix to use for the bucket. - * @returns the bucket instance. - */ - bucket(prefix: K): Bucket - - /** - * Creates a prefixed range bucket underneath - * this bucket. - * @param prefix Prefix to use for the range bucket. - * @returns the range bucket instance. - */ - rangeBucket(prefix: K): RangeBucket -} - -/** - * Represents a key:value store. - */ -export interface DB extends KeyValueStore { - readonly db: AbstractLevelDOWN - - /** - * Opens the store. - * @param [options] Database options. - */ - open(options?: AbstractOpenOptions): Promise - - /** - * Closes the store. - */ - close(): Promise -} - -/** - * Bucket are effectively databases that only perform operations - * on keys that share a common `prefix`. - */ -export interface Bucket extends KeyValueStore { - readonly db: DB - readonly prefix: K -} - -export interface IteratorOptions extends AbstractIteratorOptions { - gte?: K - lte?: K - gt?: K - lt?: K - reverse?: boolean - limit?: number - keys?: boolean - values?: boolean - keyAsBuffer?: boolean - valueAsBuffer?: boolean - prefix?: Buffer -} - -/** - * Iterators traverse over ranges of keys. - * Iterators operate on a *snapshot* of the store - * and not on the store itself. As a result, - * the iterator is not impacted by writes - * made after the iterator was created. - */ -export interface Iterator { - readonly db: DB - - /** - * Advances the iterator to the next key. - * @returns the entry at the next key. - */ - next(): Promise<{ key: K; value: V }> - - /** - * Seeks the iterator to the target key. - * @param target Key to seek to. - */ - seek(target: K): Promise - - /** - * Executes a function for each key:value - * pair in the iterator. - * @param cb Function to be executed. - */ - each(cb: (key: Buffer, value: Buffer) => any): Promise - - /** - * @returns the items in the iterator. - */ - items(): Promise - - /** - * @returns all keys in the iterator. - */ - keys(): Promise - - /** - * @returns all values in the iterator. - */ - values(): Promise - - /** - * Ends iteration and frees resources. - */ - end(): Promise -} - -export interface RangeIterator extends Iterator { - nextRange(): Promise -} diff --git a/packages/core-db/src/types/db/index.ts b/packages/core-db/src/types/db/index.ts deleted file mode 100644 index 77af22d03cee..000000000000 --- a/packages/core-db/src/types/db/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './db.interface' -export * from './range-db.interface' -export * from './rdb.interface' diff --git a/packages/core-db/src/types/db/range-db.interface.ts b/packages/core-db/src/types/db/range-db.interface.ts deleted file mode 100644 index 69edab80549b..000000000000 --- a/packages/core-db/src/types/db/range-db.interface.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* External Imports */ -import { BigNumber, Endianness } from '@eth-optimism/core-utils' - -/* Internal Imports */ -import { - Bucket, - IteratorOptions, - KeyValueStore, - RangeIterator, - V, -} from './db.interface' - -/** - * Represents a range of values. Note start & end are big numbers! - */ -export interface RangeEntry { - start: BigNumber - end: BigNumber - value: V -} - -/** - * Represents a key value store which uses ranges as keys - */ -export interface RangeStore { - readonly db: KeyValueStore - readonly prefix: Buffer // TODO: Use core's standard prefix management - readonly keyLength: number // The number of bytes which should be used for the range keys - readonly endianness: Endianness // The endianness of the range keys - - /** - * Determines if there is any data with a Range overlapping the specified Range. - * @param start the start of the Range - * @param end the end of the Range - * @returns true if there is data in the Range, false otherwise - */ - hasDataInRange(start: BigNumber, end: BigNumber): Promise - - /** - * Queries for all values which are stored over the particular range. - * @param start the start of the range to query. - * @param end the start of the range to query. - * @returns an array of values which are stored at intersecting ranges. - */ - get(start: BigNumber, end: BigNumber): Promise - - /** - * Sets a range to be equal to a particular value - * @param start the start of the range which we will store the value at. - * @param end the end of the range which we will store the value at. - * @param value the value which will be stored - */ - put(start: BigNumber, end: BigNumber, value: Buffer): Promise - - /** - * Deletes all values stored over a given range. - * @param start the start of the range which will be deleted. - * @param end the end of the range which will be deleted. - * @returns all of the ranges which have been deleted. - */ - del(start: BigNumber, end: BigNumber): Promise - - /** - * Creates an iterator with some options. - * @param options Parameters for the iterator. - * @returns the iterator instance. - */ - iterator(options?: IteratorOptions): RangeIterator -} - -export interface RangeBucket extends RangeStore { - /** - * Creates a prefixed bucket underneath - * this bucket. - * @param prefix Prefix to use for the bucket. - * @returns the bucket instance. - */ - bucket(prefix: Buffer): Bucket - - /** - * Creates a prefixed range bucket underneath - * this bucket. - * @param prefix Prefix to use for the bucket. - * @returns the range bucket instance. - */ - rangeBucket(prefix: Buffer): RangeBucket -} diff --git a/packages/core-db/src/types/db/rdb.interface.ts b/packages/core-db/src/types/db/rdb.interface.ts deleted file mode 100644 index cb5a1bc10448..000000000000 --- a/packages/core-db/src/types/db/rdb.interface.ts +++ /dev/null @@ -1,48 +0,0 @@ -export interface Row { - [field: string]: any -} - -/** - * Base class for a relational database. - */ -export interface RDB { - /** - * Executes the provided query and returns its results. - * - * @param query The SQL query to execute. - * @param client (optional) The client to use for the query - * @returns The results of the query. - */ - select(query: string, client?: any): Promise - - /** - * Executes the provided query that expects no results - * - * @param query The SQL query to execute. - * @param client (optional) The client to use for the query - */ - execute(query: string, client?: any): Promise - - /** - * Starts a transaction. - * - * @returns The client to be used for all queries within the created transaction. - */ - startTransaction(): Promise - - /** - * Commits a transaction that is open within the provided client. - * As part of this call, the client will be closed. - * - * @param client The client. - */ - commit(client: any): Promise - - /** - * Rolls back a transaction that is open within the provided client. - * As part of this call, the client will be closed. - * - * @param client The client. - */ - rollback(client: any): Promise -} diff --git a/packages/core-db/src/types/ethereum/event.ts b/packages/core-db/src/types/ethereum/event.ts deleted file mode 100644 index 9ba8f1e93416..000000000000 --- a/packages/core-db/src/types/ethereum/event.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface EthereumEvent { - eventID: string - name: string - signature: string - values: {} - blockHash: string - blockNumber: number - transactionHash: string -} diff --git a/packages/core-db/src/types/ethereum/index.ts b/packages/core-db/src/types/ethereum/index.ts deleted file mode 100644 index ef4d3ef76067..000000000000 --- a/packages/core-db/src/types/ethereum/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './event' -export * from './listener' diff --git a/packages/core-db/src/types/ethereum/listener.ts b/packages/core-db/src/types/ethereum/listener.ts deleted file mode 100644 index 96b87cc71b7b..000000000000 --- a/packages/core-db/src/types/ethereum/listener.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Generic listener for Ethereum events and objects. - */ -export interface EthereumListener { - /** - * If past T objects are being synced up to the current block, - * this callback will be invoked when the sync is completed. - * - * @param syncIdentifier The ID of the object type that completed syncing - */ - onSyncCompleted(syncIdentifier?: string): Promise - - /** - * This callback will be invoked when a new T object is received from - * a new block being mined - * @param t The new object received from a new block being mined - */ - handle(t: T): Promise -} diff --git a/packages/core-db/src/types/index.ts b/packages/core-db/src/types/index.ts deleted file mode 100644 index 44fd2ffdf089..000000000000 --- a/packages/core-db/src/types/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './db' -export * from './ethereum' -export * from './queue' - -export * from './key.interface' -export * from './wallet-db.interface' diff --git a/packages/core-db/src/types/key.interface.ts b/packages/core-db/src/types/key.interface.ts deleted file mode 100644 index c899747c7650..000000000000 --- a/packages/core-db/src/types/key.interface.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* Internal Imports */ -import { K } from './db' - -/** - * Keys are formatting helpers for inserting into the database. - */ -export interface Key { - /** - * Encode a value based on this key. - * @param args Arguments to encode. - * @returns the encoded key. - */ - encode(...args: any[]): K - - /** - * Decodes a key into its components. - * @param key Key to decode. - * @returns the decoded key as an array. - */ - decode(key: K): any[] - - /** - * Returns the minimum value of the key. - * @param args Parts of the key to set. - * @returns the minimum value. - */ - min(...args: any[]): K - - /** - * Returns the maximum value of the key. - * @param args Parts of the key to set. - * @returns the maximum value. - */ - max(...args: any[]): K -} - -export interface KeyType { - min: string | number | Buffer - max: string | number | Buffer - dynamic: boolean - size(value?: any): number - read(key: K, offset: number): any - write(key: K, value: any, offset: number): any -} diff --git a/packages/core-db/src/types/queue/index.ts b/packages/core-db/src/types/queue/index.ts deleted file mode 100644 index d778666f7c5c..000000000000 --- a/packages/core-db/src/types/queue/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './queued-persisted-processor.interface' -export * from './sequential-processing-data-service.interface' diff --git a/packages/core-db/src/types/queue/queued-persisted-processor.interface.ts b/packages/core-db/src/types/queue/queued-persisted-processor.interface.ts deleted file mode 100644 index a1a04040a6a2..000000000000 --- a/packages/core-db/src/types/queue/queued-persisted-processor.interface.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Defines an interface for all classes that require ordered processing of items that may - * or may not arrive in order and must be resilient through application failure. - */ -export interface QueuedPersistedProcessor { - /** - * Persists and queues the provided item with the associated index, - * adding it to the processor queue. - * - * @param index The index in question. - * @param item The item to be added. - */ - add(index: number, item: T): Promise - - /** - * Marks the item with the provided index as successfully processed, letting - * the queued processor know that the next item may be processed. - * - * Note: The processor will not advance to the next item until this is called. - * - * @param index The index being marked as processed. - */ - markProcessed(index: number): Promise - - /** - * Gets the last index processed by this processor. - */ - getLastIndexProcessed(): Promise -} diff --git a/packages/core-db/src/types/queue/sequential-processing-data-service.interface.ts b/packages/core-db/src/types/queue/sequential-processing-data-service.interface.ts deleted file mode 100644 index a9d159c4a885..000000000000 --- a/packages/core-db/src/types/queue/sequential-processing-data-service.interface.ts +++ /dev/null @@ -1,52 +0,0 @@ -export interface SequentialProcessingItem { - data: string - processed: boolean -} - -/** - * Defines the data service used by the Queued Persisted Processor for data storage. - */ -export interface SequentialProcessingDataService { - /** - * Updates the record for the provided index to indicate that it has been processed. - * - * @param sequenceKey The key identifying the sequence for which the provided index should be updated to processed. - * @param index The index in question - */ - updateToProcessed(index: number, sequenceKey: string): Promise - - /** - * Persists the item in question, associating it with the given index. - * - * @param index The index in question. - * @param sequenceKey The key identifying the sequence in which the provided item should be stored at the provided index. - * @param item The item to store. - * @param processed (optional) Whether or not the item should be stored as processed. - */ - persistItem( - index: number, - item: string, - sequenceKey: string, - processed?: boolean - ): Promise - - /** - * Fetches the item with the provided index, if one exists. - * - * @param index The index in question. - * @param sequenceKey The key identifying the sequence in which this item belongs. - * @returns The QueuedPersistedProcessorItem. - */ - fetchItem( - index: number, - sequenceKey: string - ): Promise - - /** - * Gets the highest index that has been processed. - * - * @param sequenceKey The key identifying the sequence for which the last processed index is being requested. - * @returns The index. - */ - getLastIndexProcessed(sequenceKey: string): Promise -} diff --git a/packages/core-db/src/types/wallet-db.interface.ts b/packages/core-db/src/types/wallet-db.interface.ts deleted file mode 100644 index 6060d8fd3317..000000000000 --- a/packages/core-db/src/types/wallet-db.interface.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* External Imports */ -import { Keystore } from '@eth-optimism/core-utils/build' - -export interface WalletDB { - putKeystore(keystore: Keystore): Promise - getKeystore(address: string): Promise - hasKeystore(address: string): Promise - listAccounts(): Promise -} diff --git a/packages/core-db/test/app/db.spec.ts b/packages/core-db/test/app/db.spec.ts deleted file mode 100644 index 947dea15d2ac..000000000000 --- a/packages/core-db/test/app/db.spec.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { assert, should } from '../setup' - -/* External Imports */ -import debug from 'debug' -import { logError } from '@eth-optimism/core-utils' - -/* Internal Imports */ -import { Batch, DB, DEL_BATCH_TYPE, PUT_BATCH_TYPE } from '../../src/types/db' -import { newInMemoryDB } from '../../src/app' - -const log = debug('db') - -describe('RangeDB', () => { - let db: DB - - beforeEach(async () => { - db = newInMemoryDB() - }) - - describe('batch', () => { - it('should process put batch correctly', async () => { - const testBuff: Buffer = Buffer.from(`test`) - const testBuff2: Buffer = Buffer.from(`test2`) - const batch: Batch[] = [ - { - type: PUT_BATCH_TYPE, - key: testBuff, - value: testBuff, - }, - { - type: PUT_BATCH_TYPE, - key: testBuff2, - value: testBuff2, - }, - ] - - try { - await db.batch(batch) - } catch (e) { - //logError(log, `Error processing put batch`, e) - throw e - } - - const res1: Buffer = await db.get(testBuff) - res1.should.eql( - testBuff, - `Expected ${res1.toString()} to equal ${testBuff.toString()}` - ) - - const res2: Buffer = await db.get(testBuff2) - res2.should.eql( - testBuff2, - `Expected ${res2.toString()} to equal ${testBuff2.toString()}` - ) - }) - - it('should process del batch correctly', async () => { - const testBuff: Buffer = Buffer.from(`test`) - const testBuff2: Buffer = Buffer.from(`test2`) - - await db.put(testBuff, testBuff) - await db.put(testBuff2, testBuff2) - - const batch: Batch[] = [ - { - type: DEL_BATCH_TYPE, - key: testBuff, - }, - { - type: DEL_BATCH_TYPE, - key: testBuff2, - }, - ] - - try { - await db.batch(batch) - } catch (e) { - //logError(log, `Error processing put batch`, e) - assert.fail() - } - - const res1: Buffer = await db.get(testBuff) - should.not.exist(res1, `${res1} should have been deleted`) - - const res2: Buffer = await db.get(testBuff2) - should.not.exist(res2, `${res2} should have been deleted`) - }) - - it('should process mixed batch correctly', async () => { - const testBuff: Buffer = Buffer.from(`test`) - const testBuff2: Buffer = Buffer.from(`test2`) - - await db.put(testBuff, testBuff) - await db.put(testBuff2, testBuff2) - - const testBuff3: Buffer = Buffer.from(`test2`) - - const batch: Batch[] = [ - { - type: DEL_BATCH_TYPE, - key: testBuff, - }, - { - type: PUT_BATCH_TYPE, - key: testBuff2, - value: testBuff3, - }, - { - type: PUT_BATCH_TYPE, - key: testBuff3, - value: testBuff3, - }, - ] - - try { - await db.batch(batch) - } catch (e) { - //logError(log, `Error processing put batch`, e) - assert.fail() - } - - const res1: Buffer = await db.get(testBuff) - should.not.exist(res1, `${res1} should have been deleted`) - - const res2: Buffer = await db.get(testBuff2) - res2.should.eql( - testBuff3, - `${res2.toString()} should have been updated to ${testBuff3.toString()}` - ) - - const res3: Buffer = await db.get(testBuff3) - res3.should.eql( - testBuff3, - `${res3.toString()} should have been set to ${testBuff3.toString()}` - ) - }) - }) -}) diff --git a/packages/core-db/test/app/ethereum/contracts/TestToken.json b/packages/core-db/test/app/ethereum/contracts/TestToken.json deleted file mode 100644 index 739c2ffd9877..000000000000 --- a/packages/core-db/test/app/ethereum/contracts/TestToken.json +++ /dev/null @@ -1,259 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "totalSupply", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "block", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "input", - "type": "bytes" - } - ], - "name": "updateMeaninglessHash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506040516106333803806106338339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806001819055506001546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050610593806100a06000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630bfd41fe1461005157806318160ddd1461010c57806370a082311461012a578063beabacc814610182575b600080fd5b61010a6004803603602081101561006757600080fd5b810190808035906020019064010000000081111561008457600080fd5b82018360208201111561009657600080fd5b803590602001918460018302840111640100000000831117156100b857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506101f0565b005b610114610201565b6040518082815260200191505060405180910390f35b61016c6004803603602081101561014057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061020b565b6040518082815260200191505060405180910390f35b6101ee6004803603606081101561019857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610253565b005b808051906020012060028190555050565b6000600154905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061053a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561035f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806105176023913960400191505060405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e73756666696369656e742073656e6465722062616c616e6365000000000081525060200191505060405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44426040518082815260200191505060405180910390a450505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373a265627a7a723158203abdaf808a8849d3b184c800fe9984414ac6f1e6f7810d2c77a511a0263a601564736f6c63430005110032", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x633 CODESIZE SUB DUP1 PUSH2 0x633 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP PUSH2 0x593 DUP1 PUSH2 0xA0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBFD41FE EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xBEABACC8 EQ PUSH2 0x182 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x1F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x114 PUSH2 0x201 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x20B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x253 JUMP JUMPDEST STOP JUMPDEST DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x2 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53A PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x35F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x517 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x413 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x496E73756666696369656E742073656E6465722062616C616E63650000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9ED053BB818FF08B8353CD46F78DB1F0799F31C9E4458FDB425C10ECCD2EFC44 TIMESTAMP PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E736665722066726F6D20746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x657373A265627A7A723158203ABDAF808A8849 0xD3 0xB1 DUP5 0xC8 STOP INVALID SWAP10 DUP5 COINBASE 0x4A 0xC6 CALL 0xE6 0xF7 DUP2 0xD 0x2C PUSH24 0xA511A0263A601564736F6C63430005110032000000000000 ", - "sourceMap": "146:1168:0:-;;;412:132;8:9:-1;5:2;;;30:1;27;20:12;5:2;412:132:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;412:132:0;;;;;;;;;;;;;;;;484:11;469:12;:26;;;;526:12;;502:9;:21;512:10;502:21;;;;;;;;;;;;;;;:36;;;;412:132;146:1168;;;;;;" - }, - "deployedBytecode": { - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80630bfd41fe1461005157806318160ddd1461010c57806370a082311461012a578063beabacc814610182575b600080fd5b61010a6004803603602081101561006757600080fd5b810190808035906020019064010000000081111561008457600080fd5b82018360208201111561009657600080fd5b803590602001918460018302840111640100000000831117156100b857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506101f0565b005b610114610201565b6040518082815260200191505060405180910390f35b61016c6004803603602081101561014057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061020b565b6040518082815260200191505060405180910390f35b6101ee6004803603606081101561019857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610253565b005b808051906020012060028190555050565b6000600154905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061053a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561035f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806105176023913960400191505060405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e73756666696369656e742073656e6465722062616c616e6365000000000081525060200191505060405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44426040518082815260200191505060405180910390a450505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373a265627a7a723158203abdaf808a8849d3b184c800fe9984414ac6f1e6f7810d2c77a511a0263a601564736f6c63430005110032", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBFD41FE EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xBEABACC8 EQ PUSH2 0x182 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x1F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x114 PUSH2 0x201 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x20B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x253 JUMP JUMPDEST STOP JUMPDEST DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x2 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53A PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x35F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x517 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x413 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x496E73756666696369656E742073656E6465722062616C616E63650000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9ED053BB818FF08B8353CD46F78DB1F0799F31C9E4458FDB425C10ECCD2EFC44 TIMESTAMP PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E736665722066726F6D20746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x657373A265627A7A723158203ABDAF808A8849 0xD3 0xB1 DUP5 0xC8 STOP INVALID SWAP10 DUP5 COINBASE 0x4A 0xC6 CALL 0xE6 0xF7 DUP2 0xD 0x2C PUSH24 0xA511A0263A601564736F6C63430005110032000000000000 ", - "sourceMap": "146:1168:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;146:1168:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1205:106;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1205:106:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1205:106:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1205:106:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1205:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1205:106:0;;;;;;;;;;;;;;;:::i;:::-;;550:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;641:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;641:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;751:448;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;751:448:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1205:106;1299:5;1289:16;;;;;;1270;:35;;;;1205:106;:::o;550:85::-;594:7;617:12;;610:19;;550:85;:::o;641:104::-;698:7;721:9;:18;731:7;721:18;;;;;;;;;;;;;;;;714:25;;641:104;;;:::o;751:448::-;860:1;842:20;;:6;:20;;;;834:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;940:1;919:23;;:9;:23;;;;911:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1018:6;997:9;:17;1007:6;997:17;;;;;;;;;;;;;;;;:27;;989:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:6;1065:9;:17;1075:6;1065:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;1123:6;1099:9;:20;1109:9;1099:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;1169:6;1158:9;1141:52;;1150:6;1141:52;;;1177:15;1141:52;;;;;;;;;;;;;;;;;;751:448;;;:::o" - } - }, - "interface": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "totalSupply", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "block", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "input", - "type": "bytes" - } - ], - "name": "updateMeaninglessHash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "608060405234801561001057600080fd5b506040516106333803806106338339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806001819055506001546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050610593806100a06000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630bfd41fe1461005157806318160ddd1461010c57806370a082311461012a578063beabacc814610182575b600080fd5b61010a6004803603602081101561006757600080fd5b810190808035906020019064010000000081111561008457600080fd5b82018360208201111561009657600080fd5b803590602001918460018302840111640100000000831117156100b857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506101f0565b005b610114610201565b6040518082815260200191505060405180910390f35b61016c6004803603602081101561014057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061020b565b6040518082815260200191505060405180910390f35b6101ee6004803603606081101561019857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610253565b005b808051906020012060028190555050565b6000600154905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061053a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561035f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806105176023913960400191505060405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e73756666696369656e742073656e6465722062616c616e6365000000000081525060200191505060405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44426040518082815260200191505060405180910390a450505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373a265627a7a723158203abdaf808a8849d3b184c800fe9984414ac6f1e6f7810d2c77a511a0263a601564736f6c63430005110032" -} \ No newline at end of file diff --git a/packages/core-db/test/app/ethereum/contracts/TestToken.sol b/packages/core-db/test/app/ethereum/contracts/TestToken.sol deleted file mode 100644 index 8d8ecca4180c..000000000000 --- a/packages/core-db/test/app/ethereum/contracts/TestToken.sol +++ /dev/null @@ -1,44 +0,0 @@ -pragma solidity ^0.5.1; - -// Repurposed from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol -contract TestToken { - mapping (address => uint256) private _balances; - uint256 private _totalSupply; - bytes32 _meaninglessHash; - - event Transfer( - address indexed from, - address indexed to, - uint256 indexed amount, - uint256 block - ); - - constructor( - uint256 totalSupply - ) public { - _totalSupply = totalSupply; - _balances[msg.sender] = _totalSupply; - } - - function totalSupply() public view returns (uint256) { - return _totalSupply; - } - - function balanceOf(address account) public view returns (uint256) { - return _balances[account]; - } - - function transfer(address sender, address recipient, uint256 amount) public { - require(sender != address(0), "ERC20: transfer from the zero address"); - require(recipient != address(0), "ERC20: transfer to the zero address"); - require(_balances[sender] >= amount, "Insufficient sender balance"); - - _balances[sender] -= amount; - _balances[recipient] += amount; - emit Transfer(sender, recipient, amount, block.timestamp); - } - - function updateMeaninglessHash(bytes memory input) public { - _meaninglessHash = keccak256(input); - } -} \ No newline at end of file diff --git a/packages/core-db/test/app/ethereum/contracts/waffle-config.json b/packages/core-db/test/app/ethereum/contracts/waffle-config.json deleted file mode 100644 index b8f54b43ff9e..000000000000 --- a/packages/core-db/test/app/ethereum/contracts/waffle-config.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "sourcesPath": "./", - "targetPath": "./test/app/ethereum/contracts/build/", - "npmPath": "../../../../../../node_modules" -} diff --git a/packages/core-db/test/app/ethereum/ethereum-block-processor.spec.ts b/packages/core-db/test/app/ethereum/ethereum-block-processor.spec.ts deleted file mode 100644 index 5950895cc0ac..000000000000 --- a/packages/core-db/test/app/ethereum/ethereum-block-processor.spec.ts +++ /dev/null @@ -1,306 +0,0 @@ -import '../../setup' - -/* External Imports */ -import { getLogger } from '@eth-optimism/core-utils' -import { Block } from 'ethers/providers' -import { createMockProvider, getWallets } from 'ethereum-waffle' - -/* Internal Imports */ -import { deployTokenContract, TestListener } from './utils' -import { EthereumBlockProcessor, newInMemoryDB } from '../../../src/app' -import { DB } from '../../../src/types' - -const log = getLogger('ethereum-block-processor-test', true) - -const timeout = 50_000 -describe('Block Subscription', () => { - let provider - let wallets - let ownerWallet - let recipientWallet - let db: DB - - const sendAmount = 100 - const initialSupply = 100_000 - - let blockProcessor: EthereumBlockProcessor - let blockListener: TestListener - let tokenContract - - describe('Instant finalization', () => { - beforeEach(async () => { - provider = createMockProvider() - wallets = getWallets(provider) - ownerWallet = wallets[0] - recipientWallet = wallets[1] - - log.debug(`Connection info: ${JSON.stringify(provider.connection)}`) - - tokenContract = await deployTokenContract(ownerWallet, initialSupply) - - db = newInMemoryDB() - blockProcessor = new EthereumBlockProcessor(db) - blockListener = new TestListener() - }) - - it('processes new blocks', async () => { - await blockProcessor.subscribe(provider, blockListener, false) - - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount - ) - - const blocks: Block[] = await blockListener.waitForReceive(1) - - blocks.length.should.equal(1) - blocks[0].transactions.length.should.equal(1) - }).timeout(timeout) - - it('processes old blocks', async () => { - await blockProcessor.subscribe(provider, blockListener) - - const blocks: Block[] = await blockListener.waitForSyncToComplete() - - blocks - .map((x) => x.number) - .sort() - .should.deep.equal([0, 1], `Incorrect blocks received!`) - }).timeout(timeout) - - it('honors earliest block', async () => { - blockProcessor = new EthereumBlockProcessor(db, 1) - await blockProcessor.subscribe(provider, blockListener) - - const blocks: Block[] = await blockListener.waitForSyncToComplete() - - blocks.length.should.equal(1, 'There should only be one block synced!') - blocks[0].number.should.equal(1, 'Block 1 should have been finalized!') - blocks[0].transactions.length.should.equal( - 1, - 'There should be 1 transactions in block 1' - ) - const deployToAddressEmpty = !(blocks[0].transactions[0] as any).to - deployToAddressEmpty.should.equal( - true, - 'The "to" address for the deploy tx should be null' - ) - }).timeout(timeout) - - it('processes blocks starting at 1', async () => { - blockProcessor = new EthereumBlockProcessor(db, 1) - await blockProcessor.subscribe(provider, blockListener) - - let blocks: Block[] = await blockListener.waitForSyncToComplete() - blocks.length.should.equal(1, 'Block 1 should have arrived') - - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount * 2 - ) - - blocks = await blockListener.waitForReceive(2) - blocks.length.should.equal(2, `Incorrect number of blocks received!`) - - blocks - .map((x) => x.number) - .sort() - .should.deep.equal([1, 2], `Incorrect blocks received!`) - blocks - .filter((x) => x.number === 2)[0] - .transactions.length.should.equal(1, `Tx Length incorrect!`) - }).timeout(timeout) - - it('processes old and new blocks', async () => { - await blockProcessor.subscribe(provider, blockListener) - - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount * 2 - ) - - const blocks: Block[] = await blockListener.waitForReceive(3) - - blocks.length.should.equal(3, `Incorrect number of blocks received!`) - - blocks - .map((x) => x.number) - .sort() - .should.deep.equal([0, 1, 2], `Incorrect blocks received!`) - blocks - .filter((x) => x.number === 2)[0] - .transactions.length.should.equal(1, `Tx Length incorrect!`) - }).timeout(timeout) - }) - - describe('Delayed finalization', () => { - const confirmsUntilFinal = 2 - beforeEach(async () => { - provider = createMockProvider() - wallets = getWallets(provider) - ownerWallet = wallets[0] - recipientWallet = wallets[1] - - log.debug(`Connection info: ${JSON.stringify(provider.connection)}`) - - db = newInMemoryDB() - blockProcessor = new EthereumBlockProcessor(db, 0, confirmsUntilFinal) - blockListener = new TestListener() - }) - - it('does not process un-finalized block', async () => { - await blockProcessor.subscribe(provider, blockListener, false) - - const blocks: Block[] = await blockListener.waitForReceive(1, 5_000) - - blocks.length.should.equal(0) - }).timeout(timeout) - - it('finalizes blocks after enough confirms', async () => { - await blockProcessor.subscribe(provider, blockListener, false) - - tokenContract = await deployTokenContract(ownerWallet, initialSupply) - - const blocks: Block[] = await blockListener.waitForReceive(1, 5_000) - - blocks.length.should.equal(1, 'Should have received 1 finalized block!') - blocks[0].number.should.equal(0, 'Block 0 should have been finalized!') - blocks[0].transactions.length.should.equal( - 0, - 'There should be 0 transactions in block 0' - ) - }).timeout(timeout) - - it('finalizes multiple blocks after enough confirms', async () => { - await blockProcessor.subscribe(provider, blockListener, false) - - tokenContract = await deployTokenContract(ownerWallet, initialSupply) - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount * 2 - ) - - const blocks: Block[] = await blockListener.waitForReceive(2, 5_000) - - blocks.length.should.equal(2, 'Should have received 2 finalized block!') - blocks[0].number.should.equal(0, 'Block 0 should have been finalized!') - blocks[0].transactions.length.should.equal( - 0, - 'There should be 0 transactions in block 0' - ) - - blocks[1].number.should.equal(1, 'Block 1 should have been finalized!') - blocks[1].transactions.length.should.equal( - 1, - 'There should be 1 transactions in block 1' - ) - const deployToAddressEmpty = !(blocks[1].transactions[0] as any).to - deployToAddressEmpty.should.equal( - true, - 'The "to" address for the deploy tx should be null' - ) - }).timeout(timeout) - - describe('Syncing past blocks', () => { - it('does not finalize past blocks if not final', async () => { - await blockProcessor.subscribe(provider, blockListener, true) - - const blocks: Block[] = await blockListener.waitForReceive(1, 5_000) - - blocks.length.should.equal(0, 'Should not have finalized a block!') - }).timeout(timeout) - - it('finalizes past block', async () => { - tokenContract = await deployTokenContract(ownerWallet, initialSupply) - - await blockProcessor.subscribe(provider, blockListener, true) - - const blocks: Block[] = await blockListener.waitForReceive(1, 5_000) - - blocks.length.should.equal(1, 'Should have received 1 finalized block!') - blocks[0].number.should.equal(0, 'Block 0 should have been finalized!') - blocks[0].transactions.length.should.equal( - 0, - 'There should be 0 transactions in block 0' - ) - }).timeout(timeout) - - it('finalizes past and future blocks', async () => { - tokenContract = await deployTokenContract(ownerWallet, initialSupply) - - await blockProcessor.subscribe(provider, blockListener, true) - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount * 2 - ) - - const blocks: Block[] = await blockListener.waitForReceive(2, 5_000) - - blocks.length.should.equal(2, 'Should have received 2 finalized block!') - blocks[0].number.should.equal(0, 'Block 0 should have been finalized!') - blocks[0].transactions.length.should.equal( - 0, - 'There should be 0 transactions in block 0' - ) - - blocks[1].number.should.equal(1, 'Block 1 should have been finalized!') - blocks[1].transactions.length.should.equal( - 1, - 'There should be 1 transactions in block 1' - ) - const deployToAddressEmpty = !(blocks[1].transactions[0] as any).to - deployToAddressEmpty.should.equal( - true, - 'The "to" address for the deploy tx should be null' - ) - }).timeout(timeout) - - describe('Future earliest block', () => { - it('does not finalize blocks before the earliest block', async () => { - tokenContract = await deployTokenContract(ownerWallet, initialSupply) - - blockProcessor = new EthereumBlockProcessor(db, 1, confirmsUntilFinal) - await blockProcessor.subscribe(provider, blockListener) - - const blocks: Block[] = await blockListener.waitForSyncToComplete() - blocks.length.should.equal(0) - }).timeout(timeout) - - it('finalizes blocks after the earliest block', async () => { - tokenContract = await deployTokenContract(ownerWallet, initialSupply) - - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount * 2 - ) - - blockProcessor = new EthereumBlockProcessor(db, 1, confirmsUntilFinal) - await blockProcessor.subscribe(provider, blockListener) - - const blocks: Block[] = await blockListener.waitForSyncToComplete() - blocks.length.should.equal(1, `Incorrect number of blocks received!`) - - blocks[0].number.should.equal( - 1, - 'Block 1 should have been finalized!' - ) - blocks[0].transactions.length.should.equal( - 1, - 'There should be 1 transactions in block 1' - ) - const deployToAddressEmpty = !(blocks[0].transactions[0] as any).to - deployToAddressEmpty.should.equal( - true, - 'The "to" address for the deploy tx should be null' - ) - }) - }) - }) - }) -}) diff --git a/packages/core-db/test/app/ethereum/ethereum-event-processor.spec.ts b/packages/core-db/test/app/ethereum/ethereum-event-processor.spec.ts deleted file mode 100644 index 3b6ce7d5b0f9..000000000000 --- a/packages/core-db/test/app/ethereum/ethereum-event-processor.spec.ts +++ /dev/null @@ -1,186 +0,0 @@ -import '../../setup' - -/* External Imports */ -import { getLogger } from '@eth-optimism/core-utils' -import { createMockProvider, getWallets } from 'ethereum-waffle' - -/* Internal Imports */ -import { deployTokenContract, TestListener } from './utils' -import { EthereumEventProcessor } from '../../../src/app/ethereum' -import { EthereumEvent } from '../../../src/types/ethereum' -import { newInMemoryDB } from '../../../src/app' - -const log = getLogger('ethereum-event-processor', true) - -const timeout = 25_000 -describe('EthereumEvent Subscription', () => { - let provider - let wallets - let ownerWallet - let recipientWallet - - const sendAmount = 100 - const initialSupply = 100_000 - - let tokenContract - let eventProcessor: EthereumEventProcessor - let eventListener: TestListener - - describe('1 Confirm', () => { - beforeEach(async () => { - provider = createMockProvider() - wallets = getWallets(provider) - ownerWallet = wallets[0] - recipientWallet = wallets[1] - - log.debug(`Connection info: ${JSON.stringify(provider.connection)}`) - - tokenContract = await deployTokenContract(ownerWallet, initialSupply) - - eventProcessor = new EthereumEventProcessor(newInMemoryDB()) - eventListener = new TestListener() - }) - - it('deploys correctly', async () => { - const ownerBalance = +(await tokenContract.balanceOf(ownerWallet.address)) - ownerBalance.should.equal(initialSupply) - }) - - it('processes new events', async () => { - await eventProcessor.subscribe( - tokenContract, - 'Transfer', - eventListener, - false - ) - - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount - ) - - const events = await eventListener.waitForReceive() - events.length.should.equal(1) - const event: EthereumEvent = events[0] - event.values['from'].should.equal(ownerWallet.address) - event.values['to'].should.equal(recipientWallet.address) - event.values['amount'].toNumber().should.equal(sendAmount) - }).timeout(timeout) - - it('processes old events', async () => { - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount - ) - - await tokenContract.provider.send('evm_mine', { - jsonrpc: '2.0', - id: 0, - }) - - await eventProcessor.subscribe(tokenContract, 'Transfer', eventListener) - - const events = await eventListener.waitForSyncToComplete() - events.length.should.equal(1) - const event: EthereumEvent = events[0] - event.values['from'].should.equal(ownerWallet.address) - event.values['to'].should.equal(recipientWallet.address) - event.values['amount'].toNumber().should.equal(sendAmount) - }).timeout(timeout) - - it('processes new and old', async () => { - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount - ) - - await tokenContract.provider.send('evm_mine', { - jsonrpc: '2.0', - id: 0, - }) - - await eventProcessor.subscribe(tokenContract, 'Transfer', eventListener) - - let events = await eventListener.waitForReceive() - events.length.should.equal(1) - const event1 = events[0] - - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount * 2 - ) - - events = await eventListener.waitForReceive() - log.debug( - `event 1: ${JSON.stringify(event1)}, rest: ${JSON.stringify(events)}` - ) - events.length.should.equal(1) - - !events[0].values['amount'] - .toNumber() - .should.not.equal(event1.values['amount'].toNumber()) - }) - }) - - describe('Additional Confirms', () => { - beforeEach(async () => { - provider = createMockProvider() - wallets = getWallets(provider) - ownerWallet = wallets[0] - recipientWallet = wallets[1] - - log.debug(`Connection info: ${JSON.stringify(provider.connection)}`) - - tokenContract = await deployTokenContract(ownerWallet, initialSupply) - - eventProcessor = new EthereumEventProcessor(newInMemoryDB(), 0, 2) - eventListener = new TestListener() - }) - - it('does not process new events without 2 confirms', async () => { - await eventProcessor.subscribe( - tokenContract, - 'Transfer', - eventListener, - false - ) - - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount - ) - - const events = await eventListener.waitForReceive(1, 10_000) - events.length.should.equal(0) - }).timeout(timeout) - - it('does process new events with 2 confirms', async () => { - await eventProcessor.subscribe( - tokenContract, - 'Transfer', - eventListener, - false - ) - - await tokenContract.transfer( - ownerWallet.address, - recipientWallet.address, - sendAmount - ) - - await tokenContract.updateMeaninglessHash('0x111111111111') - - const events = await eventListener.waitForReceive() - events.length.should.equal(1) - const event: EthereumEvent = events[0] - event.values['from'].should.equal(ownerWallet.address) - event.values['to'].should.equal(recipientWallet.address) - event.values['amount'].toNumber().should.equal(sendAmount) - }).timeout(timeout) - }) -}) diff --git a/packages/core-db/test/app/ethereum/utils.ts b/packages/core-db/test/app/ethereum/utils.ts deleted file mode 100644 index 5894bf2859b2..000000000000 --- a/packages/core-db/test/app/ethereum/utils.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* External Imports */ -import { getLogger, sleep, objectsEqual } from '@eth-optimism/core-utils' - -import assert from 'assert' -import { ethers } from 'ethers' - -/* Internal Imports */ -import { EthereumListener } from '../../../src/types/ethereum' - -const log = getLogger('ethereum-test-utils', true) - -export class TestListener implements EthereumListener { - private received: T[] - private syncCompleted: boolean - - public constructor(private readonly sleepMillis = 50) { - this.syncCompleted = false - this.received = [] - } - - public async onSyncCompleted(): Promise { - this.syncCompleted = true - } - - public async handle(t: T): Promise { - log.debug(`Received ${JSON.stringify(t)}`) - if (this.received.length === 0) { - this.received.push(t) - } else if (this.received.filter((x) => objectsEqual(x, t)).length === 0) { - this.received.push(t) - } - } - - public getReceived(): T[] { - return this.received.splice(0) - } - - public async waitForReceive( - numberToReceive: number = 1, - timeoutMillis: number = -1 - ): Promise { - const startTime = new Date().getTime() - while ( - this.received.length < numberToReceive && - (timeoutMillis < 0 || new Date().getTime() - startTime < timeoutMillis) - ) { - await sleep(this.sleepMillis) - } - return this.getReceived() - } - - public async waitForSyncToComplete(): Promise { - while (!this.syncCompleted) { - await sleep(this.sleepMillis) - } - return this.getReceived() - } - - public async assertNotReceivedAfter(millis: number): Promise { - await sleep(millis) - assert(this.getReceived().length === 0, 'Should not have received but did!') - } -} - -const TestToken = require('./contracts/build/TestToken.json') - -export const deployTokenContract = async ( - ownerWallet: ethers.Wallet, - initialSupply: number -): Promise => { - const factory = new ethers.ContractFactory( - TestToken.abi, - TestToken.bytecode, - ownerWallet - ) - - // Notice we pass in "Hello World" as the parameter to the constructor - const tokenContract = await factory.deploy(initialSupply) - - return tokenContract.deployed() -} diff --git a/packages/core-db/test/app/keystore/wallet-db.spec.ts b/packages/core-db/test/app/keystore/wallet-db.spec.ts deleted file mode 100644 index 2c02bcd278c9..000000000000 --- a/packages/core-db/test/app/keystore/wallet-db.spec.ts +++ /dev/null @@ -1,70 +0,0 @@ -import '../../setup' - -/* External Imports */ -import { Keystore } from '@eth-optimism/core-utils' -import { ethers } from 'ethers' - -/* Internal Imports */ -import { DefaultWalletDB, newInMemoryDB } from '../../../src/app' - -const keystore: Keystore = { - address: '2600a448db443dc49f3c0b6bf46e6f9110914568', - id: '712b2934-7ccd-4ef7-87f3-6384627d5b7d', - version: 3, - crypto: { - cipher: 'aes-128-cbc', - ciphertext: - '225c3c42c2d7834c844a26070b13da6d5ac0e812022e4a4be434833aef430ae6', - cipherparams: { - iv: '75304b13fcf01c67536eb985f88dfc43', - }, - kdf: 'scrypt', - kdfparams: { - dklen: 32, - n: 262144, - p: 1, - r: 8, - salt: 'cd623230c41b3c8a8a88547e150da6ca1653bff04951cedd13791243d910cb21', - }, - mac: 'cbe1a233297b97518efdbebe4a250bf5b29461537384f0d83d9f016c747eff5f', - }, -} -const checksummed = ethers.utils.getAddress(keystore.address) - -describe('DefaultWalletDB', () => { - let walletdb: DefaultWalletDB - beforeEach(() => { - // Typings for MemDown are wrong so we need to cast to `any`. - walletdb = new DefaultWalletDB(newInMemoryDB()) - }) - - describe('putKeystore', () => { - it('should correctly insert valid keystore files', async () => { - await walletdb.putKeystore(keystore).should.be.fulfilled - }) - }) - - describe('getKeystore', () => { - it('should correctly query a keystore file', async () => { - await walletdb.putKeystore(keystore) - - const stored = await walletdb.getKeystore(keystore.address) - stored.should.deep.equal(keystore) - }) - - it('should throw if the keystore file does not exist', async () => { - await walletdb - .getKeystore(keystore.address) - .should.be.rejectedWith('Keystore file does not exist.') - }) - }) - - describe('listAccounts', () => { - it('should return a single address if only one keystore', async () => { - await walletdb.putKeystore(keystore) - - const addresses = await walletdb.listAccounts() - addresses.should.deep.equal([checksummed]) - }) - }) -}) diff --git a/packages/core-db/test/app/keystore/wallet.spec.ts b/packages/core-db/test/app/keystore/wallet.spec.ts deleted file mode 100644 index c534a9036734..000000000000 --- a/packages/core-db/test/app/keystore/wallet.spec.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { should } from '../../setup' - -/* External Imports */ -import { NULL_ADDRESS } from '@eth-optimism/core-utils' -import { ethers } from 'ethers' - -/* Internal Imports */ -import { DefaultWallet, DefaultWalletDB } from '../../../src/app/keystore' -import { newInMemoryDB } from '../../../src/app' - -const timeout = 15_000 - -describe('DefaultWallet', () => { - let walletdb: DefaultWalletDB - let wallet: DefaultWallet - - beforeEach(() => { - // Typings for MemDown are wrong so we need to cast to `any`. - walletdb = new DefaultWalletDB(newInMemoryDB()) - wallet = new DefaultWallet(walletdb) - }) - - describe('createAccount', () => { - it('should correctly create an account', async () => { - await wallet.createAccount('password').should.be.fulfilled - }).timeout(timeout) - }) - - describe('listAccounts', () => { - it('should return an empty list if there are no accounts', async () => { - const accounts = await wallet.listAccounts() - - accounts.should.deep.equal([]) - }) - - it('should return the account if an account exists', async () => { - const account = await wallet.createAccount('password') - - const accounts = await wallet.listAccounts() - - accounts.should.deep.equal([account]) - }).timeout(timeout) - - it('should return multiple accounts if more than one exists', async () => { - const account1 = await wallet.createAccount('password') - const account2 = await wallet.createAccount('password') - - const accounts = (await wallet.listAccounts()).sort() - - accounts.should.deep.equal([account1, account2].sort()) - }).timeout(timeout) - }) - - describe('unlockAccount', () => { - it('should unlock an account if given the right password', async () => { - const account = await wallet.createAccount('password') - - await wallet.unlockAccount(account, 'password').should.be.fulfilled - }).timeout(timeout) - - it('should throw if trying to unlock with the wrong password', async () => { - const account = await wallet.createAccount('password') - - await wallet - .unlockAccount(account, 'wrongpassword') - .should.be.rejectedWith('Invalid account password.') - }).timeout(timeout) - - it('should throw if the account does not exist', async () => { - const account = NULL_ADDRESS - - await wallet - .unlockAccount(account, 'password') - .should.be.rejectedWith('Account does not exist.') - }) - }) - - describe('lockAccount', () => { - it('should lock an account if unlocked', async () => { - const account = await wallet.createAccount('password') - - await wallet.unlockAccount(account, 'password') - - await wallet.lockAccount(account).should.be.fulfilled - }).timeout(timeout) - - it('should lock an account even if not unlocked', async () => { - const account = await wallet.createAccount('password') - - await wallet.lockAccount(account).should.be.fulfilled - }).timeout(timeout) - }) - - describe('sign', () => { - it('should correctly sign some data', async () => { - const account = await wallet.createAccount('password') - - await wallet.unlockAccount(account, 'password') - const signature = await wallet.sign(account, 'hello world') - - ethers.utils.verifyMessage('hello world', signature).should.equal(account) - }).timeout(timeout) - - it('should throw if the account is not unlocked', async () => { - const account = await wallet.createAccount('password') - - await wallet - .sign(account, 'hello world') - .should.be.rejectedWith('Account is not unlocked.') - }).timeout(timeout) - - it('should throw if the account does not exist', async () => { - const account = '0x0000000000000000000000000000000000000000' - - await wallet - .sign(account, 'hello world') - .should.be.rejectedWith('Account does not exist.') - }) - }) -}) diff --git a/packages/core-db/test/app/queued-persisted-processor.spec.ts b/packages/core-db/test/app/queued-persisted-processor.spec.ts deleted file mode 100644 index 26d61cb9050b..000000000000 --- a/packages/core-db/test/app/queued-persisted-processor.spec.ts +++ /dev/null @@ -1,291 +0,0 @@ -import { should } from '../setup' - -/* External Imports */ -import { sleep } from '@eth-optimism/core-utils' - -/* Internal Imports */ -import { - BaseQueuedPersistedProcessor, - InMemoryProcessingDataService, - SequentialProcessingItem, -} from '../../src' -import { SequentialProcessingDataService } from '../../src/types/queue' - -const persistenceKey: string = 'test' - -class DummyQueuedPersistedProcessor extends BaseQueuedPersistedProcessor< - string -> { - public callMarkProcessed: boolean = true - public throwOnceHandlingNextItem: boolean = false - public handledQueue: string[] - - public static async create( - dataService: SequentialProcessingDataService, - startIndex: number = 0, - retrySleepDelayMillis: number = 1000 - ): Promise { - const processor = new DummyQueuedPersistedProcessor( - dataService, - startIndex, - retrySleepDelayMillis - ) - await processor.init() - return processor - } - - private constructor( - dataService: SequentialProcessingDataService, - startIndex: number = 0, - retrySleepDelayMillis: number = 1000 - ) { - super(dataService, persistenceKey, startIndex, retrySleepDelayMillis) - this.handledQueue = [] - } - - protected async handleNextItem(index: number, item: string): Promise { - if (this.throwOnceHandlingNextItem) { - this.throwOnceHandlingNextItem = false - throw Error('you told me to throw in handleNextItem.') - } - this.handledQueue.push(item) - if (this.callMarkProcessed) { - return this.markProcessed(index) - } - } - - protected async serializeItem(item: string): Promise { - return item - } - - protected async deserializeItem(item: string): Promise { - return item - } -} - -describe('Queued Persisted Processor', () => { - let dataService: InMemoryProcessingDataService - let processor: DummyQueuedPersistedProcessor - const retrySleepDelayMillis: number = 100 - - beforeEach(async () => { - dataService = new InMemoryProcessingDataService() - processor = await DummyQueuedPersistedProcessor.create( - dataService, - 0, - retrySleepDelayMillis - ) - }) - - describe('Fresh start', () => { - it('handles items in order', async () => { - const item = 'Number 0!' - await processor.add(0, item) - await sleep(10) - processor.handledQueue.length.should.equal(1, `Queue item not processed!`) - processor.handledQueue[0].should.equal(item, `Incorrect item processed!`) - }) - - it('wont handle item if already processed', async () => { - const item = 'Number 0!' - dataService.lastProcessedIndex.set(persistenceKey, 0) - await processor.add(0, item) - await sleep(10) - processor.handledQueue.length.should.equal(0, `Queue item processed!`) - }) - - it('does not handle items out of order', async () => { - const item = 'Number 1!' - await processor.add(1, item) - await sleep(10) - processor.handledQueue.length.should.equal(0, `Queue item processed!`) - }) - - it('does not handle next item if previous is not acknowledged', async () => { - processor.callMarkProcessed = false - - const first = 'Number 0!' - await processor.add(0, first) - await processor.add(1, 'Number 1!') - await sleep(10) - processor.handledQueue.length.should.equal( - 1, - `Incorrect number processed!` - ) - processor.handledQueue[0].should.equal(first, `Incorrect item processed!`) - }) - - it('handles next item if previous is acknowledged', async () => { - const first = 'Number 0!' - const second = 'Number 1!' - await processor.add(0, first) - await processor.add(1, second) - await sleep(20) - processor.handledQueue.length.should.equal( - 2, - `Incorrect number processed!` - ) - processor.handledQueue[0].should.equal(first, `Incorrect item processed!`) - processor.handledQueue[1].should.equal( - second, - `Incorrect item processed!` - ) - }) - - it('handles next item added after previous is acknowledged', async () => { - const first = 'Number 0!' - const second = 'Number 1!' - await processor.add(0, first) - await sleep(20) - - processor.handledQueue.length.should.equal( - 1, - `Incorrect number processed!` - ) - - await processor.add(1, second) - await sleep(20) - processor.handledQueue.length.should.equal( - 2, - `Incorrect number processed!` - ) - processor.handledQueue[1].should.equal( - second, - `Incorrect item processed!` - ) - }) - - it('retries processing item if handleNextItemThrows', async () => { - const first = 'Number 0!' - const second = 'Number 1!' - await processor.add(0, first) - await sleep(10) - processor.handledQueue.length.should.equal( - 1, - `Incorrect number processed!` - ) - processor.handledQueue[0].should.equal(first, `Incorrect item processed!`) - - processor.throwOnceHandlingNextItem = true - await processor.add(1, second) - - await sleep(20) - - processor.handledQueue.length.should.equal( - 1, - `There should still only be one item processed! Should fail and retry after ${retrySleepDelayMillis} millis` - ) - - await sleep(retrySleepDelayMillis * 2) - - processor.handledQueue.length.should.equal( - 2, - `Incorrect number processed!` - ) - processor.handledQueue[1].should.equal( - second, - `Incorrect item processed!` - ) - processor.throwOnceHandlingNextItem.should.equal( - false, - 'Throw once config should be reset!' - ) - }) - }) - - describe('Start with existing state', () => { - it('restarts with existing state (empty)', async () => { - const secondProc = await DummyQueuedPersistedProcessor.create(dataService) - await sleep(10) - secondProc.handledQueue.length.should.equal( - 0, - `No items should be processed!` - ) - - const item = '0000' - await secondProc.add(0, item) - await sleep(10) - secondProc.handledQueue.length.should.equal( - 1, - `Item should have been processed` - ) - secondProc.handledQueue[0].should.equal(item, `Incorrect item processed`) - }) - - it('restarts with existing state (1 added but not acknowledged)', async () => { - processor.callMarkProcessed = false - - const item: string = 'Number 0!' - await processor.add(0, item) - await sleep(10) - processor.handledQueue.length.should.equal( - 1, - `One item should be processed!` - ) - processor.handledQueue[0].should.equal(item, `Incorrect item processed`) - - const secondProc = await DummyQueuedPersistedProcessor.create( - dataService, - 0 - ) - await sleep(10) - secondProc.handledQueue.length.should.equal( - 1, - `One item should be processed!` - ) - secondProc.handledQueue[0].should.equal(item, `Incorrect item processed`) - }) - - it('restarts with existing state (1 added and acknowledged)', async () => { - const item: string = 'Number 0!' - await processor.add(0, item) - await sleep(10) - processor.handledQueue.length.should.equal( - 1, - `One item should be processed!` - ) - processor.handledQueue[0].should.equal(item, `Incorrect item processed`) - - const secondProc = await DummyQueuedPersistedProcessor.create( - dataService, - 0 - ) - await sleep(10) - secondProc.handledQueue.length.should.equal( - 0, - `No items should be processed!` - ) - }) - - it('restarts with existing state and processed new item', async () => { - const item: string = 'Number 0!' - await processor.add(0, item) - await sleep(10) - processor.handledQueue.length.should.equal( - 1, - `One item should be processed!` - ) - processor.handledQueue[0].should.equal(item, `Incorrect item processed`) - - const secondProc = await DummyQueuedPersistedProcessor.create( - dataService, - 0 - ) - await sleep(10) - secondProc.handledQueue.length.should.equal( - 0, - `No items should be processed!` - ) - - const item2: string = '111111' - await secondProc.add(1, item2) - await sleep(10) - - secondProc.handledQueue.length.should.equal( - 1, - `Second item should be processed!` - ) - secondProc.handledQueue[0].should.equal(item2, `Incorrect item processed`) - }) - }) -}) diff --git a/packages/core-db/test/app/range-bucket.spec.ts b/packages/core-db/test/app/range-bucket.spec.ts deleted file mode 100644 index 1ca3f60b2726..000000000000 --- a/packages/core-db/test/app/range-bucket.spec.ts +++ /dev/null @@ -1,304 +0,0 @@ -/* External Imports */ -import { BigNumber, ZERO } from '@eth-optimism/core-utils' -import debug from 'debug' -import MemDown from 'memdown' - -/* Internal Imports */ -import { BaseDB, RangeEntry, RangeBucket } from '../../src' - -const log = debug('test:info:range-db') - -const addDefaultRangesToDB = async (rangeDB) => { - // Generate some ranges - const ranges = [] - for (let i = 0; i < 10; i++) { - const start = new BigNumber('' + i * 10, 'hex') - const end = new BigNumber('' + (i + 1) * 10, 'hex') - ranges.push({ - start, - end, - }) - } - // Put them in our DB - for (const range of ranges) { - log(range.start.toString(16)) - await rangeDB.put(range.start, range.end, Buffer.from('Hello')) - } - return ranges -} - -class StringRangeEntry { - public stringRangeEntry - constructor(rangeEntry: RangeEntry) { - this.stringRangeEntry = { - start: rangeEntry.start.toString('hex'), - end: rangeEntry.end.toString('hex'), - value: rangeEntry.value.toString(), - } - } -} - -const testPutResults = async ( - db: RangeBucket, - putContents: any[], - expectedResults: any[] -): Promise => { - // First put the ranges - putRanges(db, putContents) - // Now check that they were added correctly - const res = await db.get(ZERO, new BigNumber('100000000000', 'hex')) - for (let i = 0; i < res.length; i++) { - compareResult(res[i], expectedResults[i]) - } -} - -const putRanges = async ( - db: RangeBucket, - putContents: any[] -): Promise => { - for (const putContent of putContents) { - await db.put( - new BigNumber(putContent.start, 'hex'), - new BigNumber(putContent.end, 'hex'), - Buffer.from(putContent.value) - ) - } -} - -const compareResult = (res: any, expectedResult: any): void => { - const strResult = new StringRangeEntry(res) - strResult.stringRangeEntry.should.deep.equal(expectedResult) -} - -describe('RangeDB', () => { - let prefixCounter = 0 - let rangeDB - - beforeEach(async () => { - const baseDB = new BaseDB(new MemDown('') as any) - rangeDB = baseDB.rangeBucket(Buffer.from([prefixCounter++])) - }) - - it('allows puts on a range & get should return the range value which was put', async () => { - const start = 0 - const end = 10 - await rangeDB.put( - new BigNumber(start), - new BigNumber(end), - Buffer.from('Hello') - ) - const res = await rangeDB.get(new BigNumber(start), new BigNumber(end)) - new BigNumber(res[0].start, 'hex').toNumber().should.equal(start) - new BigNumber(res[0].end, 'hex').toNumber().should.equal(end) - }) - - it('returns an empty array if the db is empty', async () => { - const getStart = 4 - const getEnd = 8 - const res = await rangeDB.get( - new BigNumber(getStart), - new BigNumber(getEnd) - ) - res.length.should.equal(0) - }) - - it('returns a range which surrounds the range which you are getting', async () => { - // This covers the case where the DB has one element of range 0-10, and you get 3-4, then it - // should return the entire element which "surrounds" your get query. - const start = 0 - const end = 10 - const getStart = 4 - const getEnd = 8 - await rangeDB.put( - new BigNumber(start), - new BigNumber(end), - Buffer.from('Hello') - ) - const res = await rangeDB.get( - new BigNumber(getStart), - new BigNumber(getEnd) - ) - new BigNumber(res[0].start, 'hex').toNumber().should.equal(start) - new BigNumber(res[0].end, 'hex').toNumber().should.equal(end) - res.length.should.equal(1) - }) - - it('allows gets on all of the values that have been put', async () => { - // Add some ranges to our db - const ranges = await addDefaultRangesToDB(rangeDB) - // Get them from our DB - const gottenRanges = await rangeDB.get( - ranges[0].start, - ranges[ranges.length - 1].end - ) - // Compare them to the ranges we put & got and make sure they are equal - for (let i = 0; i < ranges.length; i++) { - const start = ranges[i].start.toString(16) - const end = ranges[i].end.toString(16) - const gottenStart = gottenRanges[i].start.toString(16) - const gottenEnd = gottenRanges[i].end.toString(16) - log('Put start:', start, ' -- Got start:', gottenStart) - log('Put end:', end, ' -- Got end:', gottenEnd) - gottenStart.should.equal(start) - gottenEnd.should.equal(end) - } - gottenRanges.length.should.equal(ranges.length) - }) - - it('allows gets a subset of the values that have been put', async () => { - // Add some ranges to our db - const ranges = await addDefaultRangesToDB(rangeDB) - // This time get the ranges 22- - const gottenRanges = await rangeDB.get( - ranges[2].start.add(new BigNumber(2)), - ranges[ranges.length - 2].end.sub(new BigNumber(2)) - ) - // Compare them to the ranges we put & got and make sure they are equal - for (let i = 2; i < ranges.length - 1; i++) { - const start = ranges[i].start.toString(16) - const end = ranges[i].end.toString(16) - const gottenStart = gottenRanges[i - 2].start.toString(16) - const gottenEnd = gottenRanges[i - 2].end.toString(16) - log('Put start:', start, ' -- Got start:', gottenStart) - log('Put end:', end, ' -- Got end:', gottenEnd) - gottenStart.should.equal(start) - gottenEnd.should.equal(end) - } - }) - - it('returns nothing when querying in between two other values', async () => { - // Values added to the database: [0,10) & [20,30). - // We will query [10,20) and it should return nothing. - const start1 = new BigNumber('0', 'hex') - const end1 = new BigNumber('10', 'hex') - const start2 = new BigNumber('20', 'hex') - const end2 = new BigNumber('30', 'hex') - // Put range 1 - await rangeDB.put(start1, end1, Buffer.from('Hello')) - // Put range 2 - await rangeDB.put(start2, end2, Buffer.from('world!')) - // Check that if we query in between we don't get anything - const res = await rangeDB.get(end1, start2) - res.length.should.equal(0) - }) - - it('splits ranges which has been put in the middle of another range', async () => { - // Surrounding: [10, 100), Inner: [50, 60), should result in [10, 50), [50, 60), [60, 100) - const surroundingStart = new BigNumber('10', 'hex') - const surroundingEnd = new BigNumber('100', 'hex') - const innerStart = new BigNumber('50', 'hex') - const innerEnd = new BigNumber('60', 'hex') - // Put our surrounding ranges - await rangeDB.put(surroundingStart, surroundingEnd, Buffer.from('Hello')) - // Check that our range was added - const res = await rangeDB.get(innerStart, innerEnd) - // Now put the inner range - await rangeDB.put(innerStart, innerEnd, Buffer.from('world!')) - // Get all the ranges and see what we get - const gottenRanges = await rangeDB.get(surroundingStart, surroundingEnd) - // Print all the ranges - for (const range of gottenRanges) { - log( - 'start:', - range.start.toString(16), - '- end:', - range.end.toString(16), - '- value:', - range.value.toString() - ) - } - // Check that the start and ends are correct - // The first segment: - gottenRanges[0].start.toString(16).should.equal('10') - gottenRanges[0].end.toString(16).should.equal('50') - // The second segment: - gottenRanges[1].start.toString(16).should.equal('50') - gottenRanges[1].end.toString(16).should.equal('60') - // The third segment: - gottenRanges[2].start.toString(16).should.equal('60') - gottenRanges[2].end.toString(16).should.equal('100') - }) - - it('splits `put(0, 100, x), put(50, 150, y)` into (0, 50, x), (50, 150, y)', async () => { - await testPutResults( - rangeDB, - [ - { start: '0', end: '100', value: 'x1' }, - { start: '50', end: '150', value: 'y1' }, - ], - [ - { start: '0', end: '50', value: 'x1' }, - { start: '50', end: '150', value: 'y1' }, - ] - ) - }) - - it('splits `put(50, 150, x), put(0, 100, y)` into (0, 50, x), (50, 150, y)', async () => { - await testPutResults( - rangeDB, - [ - { start: '50', end: '150', value: 'x2' }, - { start: '0', end: '100', value: 'y2' }, - ], - [ - { start: '0', end: '100', value: 'y2' }, - { start: '100', end: '150', value: 'x2' }, - ] - ) - }) - - it('splits `put(0, 100, x), put(0, 100, y)` into (0, 100, y)', async () => { - await testPutResults( - rangeDB, - [ - { start: '0', end: '100', value: 'x3' }, - { start: '0', end: '100', value: 'y3' }, - ], - [{ start: '0', end: '100', value: 'y3' }] - ) - }) - - it('splits `put(0, 100, x), put(100, 200, y), put(50, 150, z)` into (0, 50, x), (50, 150, z), (150, 200, y)', async () => { - await testPutResults( - rangeDB, - [ - { start: '0', end: '100', value: 'x4' }, - { start: '100', end: '200', value: 'y4' }, - { start: '50', end: '150', value: 'z4' }, - ], - [ - { start: '0', end: '50', value: 'x4' }, - { start: '50', end: '150', value: 'z4' }, - { start: '150', end: '200', value: 'y4' }, - ] - ) - }) - - describe('iterator()', () => { - it('allows nextRange() to be called by the iterator returning a RangeEntry instead of a KV', async () => { - const testRanges = { - inputs: [ - { start: '0', end: '100', value: 'x' }, - { start: '100', end: '200', value: 'y' }, - { start: '200', end: '225', value: 'z' }, - ], - expectedResults: [ - { start: '0', end: '100', value: 'x' }, - { start: '100', end: '200', value: 'y' }, - { start: '200', end: '225', value: 'z' }, - ], - } - - // Put our ranges - await putRanges(rangeDB, testRanges.inputs) - // Use a range iterator to get values we expect - const it = rangeDB.iterator() - const range0 = await it.nextRange() - const range1 = await it.nextRange() - const range2 = await it.nextRange() - compareResult(range0, testRanges.expectedResults[0]) - compareResult(range1, testRanges.expectedResults[1]) - compareResult(range2, testRanges.expectedResults[2]) - }) - }) -}) diff --git a/packages/core-db/test/db/sequential-processing-data-service.dbspec.ts b/packages/core-db/test/db/sequential-processing-data-service.dbspec.ts deleted file mode 100644 index 7ba240a3e53b..000000000000 --- a/packages/core-db/test/db/sequential-processing-data-service.dbspec.ts +++ /dev/null @@ -1,240 +0,0 @@ -import '../setup' - -import { - SequentialProcessingDataService, - SequentialProcessingItem, -} from '../../src/types/queue' -import { Row } from '../../src/types/db' -import { - DefaultSequentialProcessingDataService, - PostgresDB, -} from '../../src/app' - -const sequenceKey = 'test' -const testItem = 'test item' -const tableName = 'sequential_processing' - -describe('DB Test: SequentialProcessingDataService (Requires Postgres!)', () => { - let postgres: PostgresDB - let dataService: SequentialProcessingDataService - before(() => { - postgres = new PostgresDB('0.0.0.0', 5432, 'test', 'test', 'rollup') - dataService = new DefaultSequentialProcessingDataService(postgres) - }) - - beforeEach(async () => { - await postgres.execute(`DELETE FROM sequential_processing`) - }) - - after(async () => { - await postgres.execute(`DELETE FROM sequential_processing`) - }) - - describe('persistItem()', async () => { - it('should successfully persist item', async () => { - await dataService.persistItem(0, testItem, sequenceKey) - const res: Row[] = await postgres.select(`SELECT * FROM ${tableName}`) - - const exists: boolean = !!res - exists.should.equal(true, `result should exist!`) - res.length.should.equal(1, 'Incorrect number of results!') - res[0]['sequence_number'].should.equal('0', 'Incorrect sequence number!') - res[0]['sequence_key'].should.equal( - sequenceKey, - 'Incorrect sequence key!' - ) - res[0]['data_to_process'].should.equal(testItem, 'Incorrect data!') - res[0]['processed'].should.equal( - false, - 'Inserted data should not be processed!' - ) - }) - - it('should not conflict on re-persisting item', async () => { - await dataService.persistItem(0, testItem, sequenceKey) - await dataService.persistItem(0, 'dupe to be ignored', sequenceKey) - const res: Row[] = await postgres.select(`SELECT * FROM ${tableName}`) - - const exists: boolean = !!res - exists.should.equal(true, `result should exist!`) - res.length.should.equal(1, 'Incorrect number of results!') - res[0]['sequence_number'].should.equal('0', 'Incorrect sequence number!') - res[0]['sequence_key'].should.equal( - sequenceKey, - 'Incorrect sequence key!' - ) - res[0]['data_to_process'].should.equal(testItem, 'Incorrect data!') - res[0]['processed'].should.equal( - false, - 'Inserted data should not be processed!' - ) - }) - - it('should persist as processed if set', async () => { - await dataService.persistItem(0, testItem, sequenceKey, true) - const res: Row[] = await postgres.select(`SELECT * FROM ${tableName}`) - - const exists: boolean = !!res - exists.should.equal(true, `result should exist!`) - res.length.should.equal(1, 'Incorrect number of results!') - res[0]['sequence_number'].should.equal('0', 'Incorrect sequence number!') - res[0]['sequence_key'].should.equal( - sequenceKey, - 'Incorrect sequence key!' - ) - res[0]['data_to_process'].should.equal(testItem, 'Incorrect data!') - res[0]['processed'].should.equal( - true, - 'Inserted data should be processed!' - ) - }) - }) - - describe('fetchItem()', async () => { - it('should fetch persisted item', async () => { - await dataService.persistItem(0, testItem, sequenceKey) - const res: SequentialProcessingItem = await dataService.fetchItem( - 0, - sequenceKey - ) - - const exists: boolean = !!res - exists.should.equal(true, `result should exist!`) - res.data.should.equal(testItem, 'Data mismatch!') - res.processed.should.equal(false, 'Processed mismatch!') - }) - - it('should fetch persisted item that is processed', async () => { - await dataService.persistItem(0, testItem, sequenceKey, true) - const res: SequentialProcessingItem = await dataService.fetchItem( - 0, - sequenceKey - ) - - const exists: boolean = !!res - exists.should.equal(true, `result should exist!`) - res.data.should.equal(testItem, 'Data mismatch!') - res.processed.should.equal(true, 'Processed mismatch!') - }) - - it('should filter by sequenceKey persisted item that is processed', async () => { - await dataService.persistItem(0, testItem, sequenceKey) - const res: SequentialProcessingItem = await dataService.fetchItem( - 0, - 'derp' - ) - - const exists: boolean = !!res - exists.should.equal(false, `result should not exist!`) - }) - }) - - describe('getLastIndexProcessed()', async () => { - it('should return -1 by default', async () => { - const lastProcessed: number = await dataService.getLastIndexProcessed( - sequenceKey - ) - lastProcessed.should.equal(-1, 'last processed mismatch!') - }) - - it('should return -1 if item is not processed', async () => { - await dataService.persistItem(0, testItem, sequenceKey) - - const lastProcessed: number = await dataService.getLastIndexProcessed( - sequenceKey - ) - lastProcessed.should.equal(-1, 'last processed mismatch!') - }) - - it('should reflect last processed', async () => { - await dataService.persistItem(0, testItem, sequenceKey, true) - - let lastProcessed: number = await dataService.getLastIndexProcessed( - sequenceKey - ) - lastProcessed.should.equal(0, 'last processed mismatch!') - - await dataService.persistItem(1, testItem, sequenceKey, true) - lastProcessed = await dataService.getLastIndexProcessed(sequenceKey) - lastProcessed.should.equal(1, 'last processed mismatch!') - }) - }) - - describe('updateToProcessed()', async () => { - it('should not throw if there is no data', async () => { - await dataService.updateToProcessed(23, sequenceKey) - }) - - it('should update record to processed', async () => { - await dataService.persistItem(0, testItem, sequenceKey) - let res: SequentialProcessingItem = await dataService.fetchItem( - 0, - sequenceKey - ) - - let exists: boolean = !!res - exists.should.equal(true, `result should exist!`) - res.processed.should.equal( - false, - 'Inserted data should not be processed!' - ) - - await dataService.updateToProcessed(0, sequenceKey) - res = await dataService.fetchItem(0, sequenceKey) - - exists = !!res - exists.should.equal(true, `result should exist!`) - res.processed.should.equal(true, 'Inserted data should be processed!') - }) - - it('should not update record to processed if wrong sequence key', async () => { - await dataService.persistItem(0, testItem, sequenceKey) - let res: SequentialProcessingItem = await dataService.fetchItem( - 0, - sequenceKey - ) - - let exists: boolean = !!res - exists.should.equal(true, `result should exist!`) - res.processed.should.equal( - false, - 'Inserted data should not be processed!' - ) - - await dataService.updateToProcessed(0, 'derp') - res = await dataService.fetchItem(0, sequenceKey) - - exists = !!res - exists.should.equal(true, `result should exist!`) - res.processed.should.equal( - false, - 'Inserted data should not be processed!' - ) - }) - - it('should not update record to processed if wrong index', async () => { - await dataService.persistItem(0, testItem, sequenceKey) - let res: SequentialProcessingItem = await dataService.fetchItem( - 0, - sequenceKey - ) - - let exists: boolean = !!res - exists.should.equal(true, `result should exist!`) - res.processed.should.equal( - false, - 'Inserted data should not be processed!' - ) - - await dataService.updateToProcessed(1, sequenceKey) - res = await dataService.fetchItem(0, sequenceKey) - - exists = !!res - exists.should.equal(true, `result should exist!`) - res.processed.should.equal( - false, - 'Inserted data should not be processed!' - ) - }) - }) -}) diff --git a/packages/core-db/test/setup.ts b/packages/core-db/test/setup.ts deleted file mode 100644 index 238cf1d902e6..000000000000 --- a/packages/core-db/test/setup.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* External Imports */ -import fs = require('fs') -import path = require('path') -import chai = require('chai') -import chaiAsPromised = require('chai-as-promised') - -/* Internal Imports */ -import { rootPath } from '../index' - -chai.use(chaiAsPromised) -const should = chai.should() -const assert = chai.assert - -const testArtifactsDir = path.join(rootPath, 'test', 'artifacts.test.tmp') -const testRootPath = path.join(testArtifactsDir, (+new Date()).toString()) -const dbRootPath = path.join(testRootPath, 'db') - -// If these directories don't exist, create them. -fs.mkdirSync(testArtifactsDir, { recursive: true }) -fs.mkdirSync(testRootPath, { recursive: true }) -fs.mkdirSync(dbRootPath, { recursive: true }) - -export { should, assert, dbRootPath } -export { testRootPath as rootPath } diff --git a/packages/core-db/tsconfig.json b/packages/core-db/tsconfig.json deleted file mode 100644 index 925981ff2928..000000000000 --- a/packages/core-db/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./../../tsconfig.json", - "compilerOptions": { - "outDir": "./build" - }, - "include": ["*.ts", "**/*.ts"] -} diff --git a/packages/core-db/tslint.json b/packages/core-db/tslint.json deleted file mode 100644 index bd343d8faf44..000000000000 --- a/packages/core-db/tslint.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": ["./../../tslint.json"], - "rules": { - "prettier": [true, "../../prettier-config.json"], - "no-var-requires": false - } -} diff --git a/packages/core-utils/index.ts b/packages/core-utils/index.ts deleted file mode 100644 index 15afc9aa6dc7..000000000000 --- a/packages/core-utils/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -const rootPath = __dirname - -export { rootPath } -export * from './src/app' -export * from './src/types' diff --git a/packages/core-utils/package.json b/packages/core-utils/package.json index 17531ee2b1c8..289c1538a183 100644 --- a/packages/core-utils/package.json +++ b/packages/core-utils/package.json @@ -7,15 +7,11 @@ "build/**/*.js" ], "scripts": { - "all": "yarn clean && yarn build && yarn test && yarn fix && yarn lint", + "all": "yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint", "build": "tsc -p .", "clean": "rimraf build/", - "fix": "prettier --config ../../prettier-config.json --write 'index.ts' '{src,test}/**/*.ts'", "lint": "tslint --format stylish --project .", - "test": "mocha --require ts-node/register 'test/**/*.spec.ts' --timeout 5000 --exit" - }, - "engines": { - "node": "10" + "lint:fix": "prettier --config ../../prettier-config.json --write 'index.ts' '{src,test}/**/*.ts'" }, "keywords": [ "plasma", @@ -32,30 +28,24 @@ "url": "https://github.com/ethereum-optimism/optimism-monorepo.git" }, "dependencies": { - "abstract-leveldown": "^6.2.2", - "async-lock": "^1.2.2", "axios": "^0.19.0", - "bn.js": "^4.11.8", "body-parser": "^1.19.0", - "chai": "^4.2.0", - "chai-as-promised": "^7.1.1", "debug": "^4.1.1", "dotenv": "^8.2.0", "ethereumjs-util": "^6.2.0", - "ethers-v4": "npm:ethers@4", + "ethers": "^5.0.24", "express": "^4.17.1", - "memdown": "^4.0.0", - "ts-md5": "^1.2.4", "uuid": "^3.3.3" }, "devDependencies": { "@types/abstract-leveldown": "^5.0.1", "@types/chai": "^4.1.7", + "@types/debug": "^4.1.5", "@types/mocha": "^5.2.7", "@types/node": "^12.0.7", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", - "ethereum-waffle": "2.1.0", + "ethereum-waffle": "^3.2.1", "mocha": "^6.1.4", "rimraf": "^2.6.3", "ts-node": "^8.2.0", diff --git a/packages/core-utils/src/app/bloom_filter.ts b/packages/core-utils/src/app/bloom_filter.ts deleted file mode 100644 index 101a8c04a712..000000000000 --- a/packages/core-utils/src/app/bloom_filter.ts +++ /dev/null @@ -1,84 +0,0 @@ -// Thanks to the etherereumjs-vm team for this Bloom Filter implementation! ❤️ -// https://github.com/ethereumjs/ethereumjs-vm/blob/master/packages/vm/lib/bloom/index.ts -// -import assert from 'assert' -import { zeros, keccak256 } from 'ethereumjs-util' - -const BYTE_SIZE = 256 - -export default class BloomFilter { - public bitvector: Buffer - - /** - * Represents a Bloom filter. - */ - constructor(bitvector?: Buffer) { - if (!bitvector) { - this.bitvector = zeros(BYTE_SIZE) - } else { - assert( - bitvector.length === BYTE_SIZE, - 'bitvectors must be 2048 bits long' - ) - this.bitvector = bitvector - } - } - - /** - * Adds an element to a bit vector of a 64 byte bloom filter. - * @param e - The element to add - */ - public add(e: Buffer) { - assert(Buffer.isBuffer(e), 'Element should be buffer') - e = keccak256(e) - const mask = 2047 // binary 11111111111 - - for (let i = 0; i < 3; i++) { - const first2bytes = e.readUInt16BE(i * 2) - const loc = mask & first2bytes - const byteLoc = loc >> 3 - const bitLoc = 1 << loc % 8 - this.bitvector[BYTE_SIZE - byteLoc - 1] |= bitLoc - } - } - - /** - * Checks if an element is in the bloom. - * @param e - The element to check - */ - public check(e: Buffer): boolean { - assert(Buffer.isBuffer(e), 'Element should be Buffer') - e = keccak256(e) - const mask = 2047 // binary 11111111111 - let match = true - - for (let i = 0; i < 3 && match; i++) { - const first2bytes = e.readUInt16BE(i * 2) - const loc = mask & first2bytes - const byteLoc = loc >> 3 - const bitLoc = 1 << loc % 8 - match = (this.bitvector[BYTE_SIZE - byteLoc - 1] & bitLoc) !== 0 - } - - return Boolean(match) - } - - /** - * Checks if multiple topics are in a bloom. - * @returns `true` if every topic is in the bloom - */ - public multiCheck(topics: Buffer[]): boolean { - return topics.every((t: Buffer) => this.check(t)) - } - - /** - * Bitwise or blooms together. - */ - public or(bloom: BloomFilter) { - if (bloom) { - for (let i = 0; i <= BYTE_SIZE; i++) { - this.bitvector[i] = this.bitvector[i] | bloom.bitvector[i] - } - } - } -} diff --git a/packages/core-utils/src/app/buffer.ts b/packages/core-utils/src/app/buffer.ts deleted file mode 100644 index 6658c40b1212..000000000000 --- a/packages/core-utils/src/app/buffer.ts +++ /dev/null @@ -1,193 +0,0 @@ -import { bufToHexString, remove0x } from './misc' - -/** - * Checks if buf1 is less than or equal to buf2 - * @param buf1 the first Buffer - * @param buf2 the second Buffer - * @returns boolean result of evaluating buf1 <= buf2 - */ -const lte = (buf1: Buffer, buf2: Buffer): boolean => { - return Buffer.compare(buf1, buf2) <= 0 -} - -/** - * Checks if buf1 is strictly less than buf2 - * @param buf1 the first Buffer - * @param buf2 the second Buffer - * @returns boolean result of evaluating buf1 < buf2 - */ -const lt = (buf1: Buffer, buf2: Buffer): boolean => { - return Buffer.compare(buf1, buf2) < 0 -} - -/** - * Checks if buf1 is strictly greater than buf2 - * @param buf1 the first Buffer - * @param buf2 the second Buffer - * @returns boolean result of evaluating buf1 > buf2 - */ -const gt = (buf1: Buffer, buf2: Buffer): boolean => { - return Buffer.compare(buf1, buf2) > 0 -} - -/** - * Checks if buf1 is greater than or equal to buf2 - * @param buf1 the first Buffer - * @param buf2 the second Buffer - * @returns boolean result of evaluating buf1 >= buf2 - */ -const gte = (buf1: Buffer, buf2: Buffer): boolean => { - return Buffer.compare(buf1, buf2) >= 0 -} - -/** - * Compare two buffers, returning the maximum of the two. - * @param buf1 the first Buffer - * @param buf2 the second Buffer - * @returns Buffer the larger Buffer - */ -const max = (buf1: Buffer, buf2: Buffer): Buffer => { - return gte(buf1, buf2) ? buf1 : buf2 -} - -/** - * Compare two buffers, returning the minimum of the two. - * @param buf1 the first Buffer - * @param buf2 the second Buffer - * @returns Buffer the smaller Buffer - */ -const min = (buf1: Buffer, buf2: Buffer): Buffer => { - return lte(buf1, buf2) ? buf1 : buf2 -} - -/** - * Pad Buffer with zeros to the left - * @param buf the Buffer we want to pad - * @param totalWidth the total number of bytes the Buffer should be after being padded - * @returns Buffer the original buffer padded with zeros - */ -const padLeft = (buf: Buffer, totalWidth: number): Buffer => { - if (buf.length > totalWidth) { - throw new Error('Attempting to pad a buffer which is too large') - } - const newBuf = Buffer.alloc(totalWidth) - newBuf.fill(buf, totalWidth - buf.length, totalWidth) - return newBuf -} - -/** - * Pad Buffer with zeros to the right - * @param buf the Buffer we want to pad - * @param totalWidth the total number of bytes the Buffer should be after being padded - * @returns Buffer the original buffer padded with zeros - */ -const padRight = (buf: Buffer, totalWidth: number): Buffer => { - if (buf.length > totalWidth) { - throw new Error('Attempting to pad a buffer which is too large') - } - const newBuf = Buffer.alloc(totalWidth) - newBuf.fill(buf, 0, buf.length) - return newBuf -} - -/** - * Converts the provided number to a Buffer and returns it. - * @param num The number to convert. - * @param numBytes The number of bytes in the number. - * @param bufferBytes The number of bytes in the output Buffer. - * @param bigEndian The endianness of the output buffer. - * @returns The buffer. - */ -const numberToBuffer = ( - num: number, - numBytes: number = 4, - bufferBytes: number = 32, - bigEndian: boolean = true -): Buffer => { - const minBytes = Math.max(bufferBytes, numBytes) - const buf: Buffer = Buffer.alloc(minBytes) - if (bigEndian) { - buf.writeIntBE(num, minBytes - numBytes, numBytes) - } else { - buf.writeIntLE(num, 0, numBytes) - } - return buf -} - -/** - * Converts a number to a packed BigEndian buffer. - * @param num The number in question - * @param minLength The minimum number of bytes to return - * @returns The packed buffer - */ -const numberToBufferPacked = (num: number, minLength: number = 1): Buffer => { - const buf: Buffer = Buffer.alloc(4) - buf.writeInt32BE(num, 0) - return removeEmptyBytes(buf, minLength) -} - -/** - * Removes the empty bytes at the beginning of a big-endian buffer. - * @param buf The buffer in question. - * @param minLength The minimum number of bytes to return - * @returns The trimmed buffer with the non-empty bytes. - */ -const removeEmptyBytes = (buf: Buffer, minLength: number): Buffer => { - let firstNonZeroIndex = 0 - while (firstNonZeroIndex < buf.length && buf[firstNonZeroIndex] === 0) { - firstNonZeroIndex++ - } - const startIndex = Math.min(firstNonZeroIndex, buf.length - 1) - const index = - buf.length - startIndex < minLength ? buf.length - minLength : startIndex - return index < 0 - ? Buffer.concat([Buffer.from('00'.repeat(0 - index), 'hex'), buf]) - : buf.slice(index) -} - -/** - * Returns whether or not the numbers represented by the provided buffers are equal. - * @param first - * @param second - */ -const numbersEqual = (first: Buffer, second: Buffer): boolean => { - const firstString = remove0x(bufToHexString(first)) - const secondString = remove0x(bufToHexString(second)) - - const getIndexOfFirstNonZero = (str: string): number => { - let i = 0 - for (; i < firstString.length; i++) { - if (firstString.charAt(i) !== '0') { - break - } - } - return i - } - - return ( - firstString.substr(getIndexOfFirstNonZero(firstString)) === - secondString.substr(getIndexOfFirstNonZero(secondString)) - ) -} - -const bufferToAddress = (addressAsBuffer: Buffer): string => { - return bufToHexString(padLeft(addressAsBuffer, 20)) -} - -/** - * A collection of useful utilities for comparing buffers. - */ -export const bufferUtils = { - lt, - lte, - gt, - gte, - max, - min, - padLeft, - padRight, - numberToBuffer, - numberToBufferPacked, - numbersEqual, - bufferToAddress, -} diff --git a/packages/core-utils/src/app/contract-deployment.ts b/packages/core-utils/src/app/contract-deployment.ts deleted file mode 100644 index 5af5b72ce434..000000000000 --- a/packages/core-utils/src/app/contract-deployment.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* tslint:disable:no-console */ - -/* External Imports */ -import { config } from 'dotenv' -import { Contract, ContractFactory, ethers, Wallet } from 'ethers-v4' -import { stripZeros, hexlify, RLP, getAddress } from 'ethers-v4/utils' -import { Provider } from 'ethers-v4/providers' - -/* Internal Imports */ -import { ContractDeploymentFunction } from '../types' -import { add0x } from '../app' -import { sleep, isHexStringEmptyOrUndefined } from './misc' -import { keccak256 } from './crypto' - -/** - * Makes sure the necessary environment parameters are defined and loads environment config. - * - * @param configDirectoryPath The absolute path to the config directory for this deployment. - */ -const checkParamsAndLoadConfig = (configDirectoryPath: string) => { - if ( - !process.argv.length || - process.argv[process.argv.length - 1].endsWith('.js') - ) { - console.log( - '\n\nError: Environment argument not provided. Usage: "yarn run deploy: "\n' - ) - process.exit(0) - } - - // Get the environment and read the appropriate environment file - const environment = process.argv[process.argv.length - 1] - config({ path: `${configDirectoryPath}/.${environment}.env` }) -} - -/** - * Used by `deployContractsFunction` below to deploy a contract from a wallet and contract JSON. - * - * @param contractJson The json of the contract to deploy. - * @param wallet The wallet used to deploy. - * @param args Any necessary constructor args. - * @returns the deployed Contract reference. - */ -export const deployContract = async ( - contractJson: any, - wallet: Wallet, - ...args: any -): Promise => { - const factory = new ContractFactory( - contractJson.abi, - contractJson.bytecode, - wallet - ) - const contract = await factory.deploy(...args) - console.log( - `Address: [${contract.address}], Tx: [${contract.deployTransaction.hash}]` - ) - return contract.deployed() -} - -/** - * Handles deploying contracts by calling the provided `deployContractsFunction`. - * This function loads all of the necessary config and context for a deployment, - * allowing `deployContractsFunction` to focus on what is being deployed. - * - * @param deployContractFunction The function that dictates what is deployed - * @param configDirectoryPath The absolute path to the config directory for this deployment - * @param rootContract Whether or not this is the main contract being deployed (as compared to a dependency). - * @returns The address of the deployed contract - */ -export const deploy = async ( - deployContractFunction: ContractDeploymentFunction, - configDirectoryPath: string, - rootContract: boolean = true -): Promise => { - // If this doesn't work, nothing will happen. - checkParamsAndLoadConfig(configDirectoryPath) - - if (rootContract) { - console.log(`\n\n********** STARTING DEPLOYMENT ***********\n\n`) - } - // Make sure mnemonic exists - const deployMnemonic = process.env.DEPLOY_MNEMONIC - if (!deployMnemonic) { - console.log( - `Error: No DEPLOY_MNEMONIC env var set. Please add it to ..env file it and try again. See .env.example for more info.\n` - ) - return - } - - // Connect provider - let provider: Provider - const network = process.env.DEPLOY_NETWORK - if (!network || network === 'local') { - provider = new ethers.providers.JsonRpcProvider( - process.env.DEPLOY_LOCAL_URL || 'http://127.0.0.1:8545' - ) - } else { - provider = ethers.getDefaultProvider(network) - } - - // Create wallet - const wallet = Wallet.fromMnemonic(deployMnemonic).connect(provider) - - if (rootContract) { - console.log( - `\nDeploying to network [${network || 'local'}] in 5 seconds!\n` - ) - await sleep(5_000) - } - - return deployContractFunction(wallet) -} - -/** - * Gets the address the of a deployed contract, assuming it is deployed from the - * provided address with the provided nonce through the given provider. - * - * @param nonce The nonce from which the deployed address should be derived. - * @param provider The provider used to deploy the contract - * @param address The address from which the contract will be deployed - * @returns contractAddress The address of the first deployed contract or `null` if one hasn't been deployed yet - */ -export const getDeployedContractAddress = async ( - nonce: number, - provider: Provider, - address: string -): Promise => { - const contractAddress = generateAddress(address, nonce) - - if (!isHexStringEmptyOrUndefined(await provider.getCode(contractAddress))) { - return contractAddress - } -} - -/** - * Generates a contract address based on an account address and nonce - * @param addresss The account address - * @param nonce The nonce - * @returns contractAddress The address - */ -export const generateAddress = async (address: string, nonce: number) => { - return getAddress( - add0x( - keccak256(RLP.encode([getAddress(address), stripZeros(hexlify(nonce))])) - ).substring(26) - ) -} diff --git a/packages/core-utils/src/app/crypto.ts b/packages/core-utils/src/app/crypto.ts deleted file mode 100644 index 4e1c4ee598cd..000000000000 --- a/packages/core-utils/src/app/crypto.ts +++ /dev/null @@ -1,146 +0,0 @@ -/* External Imports */ -import { Md5 } from 'ts-md5' -import { ethers } from 'ethers-v4' -import { TransactionRequest } from 'ethers-v4/providers/abstract-provider' -import { - joinSignature, - resolveProperties, - serializeTransaction, -} from 'ethers-v4/utils' - -/* Internal Imports */ -import { HashAlgorithm, HashFunction } from '../types' -import { add0x, numberToHexString, remove0x } from './misc' - -/** - * Creates an Md5 hash of the provided input - * - * @param preimage the Buffer to hash - * @returns the hash as a Buffer - */ -export const Md5Hash = (preimage: string): string => { - return Md5.hashStr(preimage).toString() -} - -/** - * Computes the keccak256 hash of a value. - * Note: assumes the value is a valid hex string. - * - * @param value Value to hash - * @returns the hash of the value. - */ -export const keccak256 = ( - value: string, - returnPrefixed: boolean = false -): string => { - const preimage = add0x(value) - const hash = ethers.utils.keccak256(preimage) - return returnPrefixed ? hash : remove0x(hash) -} - -/** - * Computes the keccak256 hash of the value represented by the provided UTF-8 string. - * - * @param s The UTF-8 encoded string. - * @returns The keccak256 hash. - */ -export const keccak256FromUtf8 = (s: string): string => { - return add0x(keccak256(Buffer.from(s).toString('hex'))) -} - -/** - * Gets the hash function for the provided HashAlgorithm. - * - * @param algo The HashAlgorithm in question - * @returns The hash function, if one exists - */ -export const hashFunctionFor = (algo: HashAlgorithm): HashFunction => { - switch (algo) { - case HashAlgorithm.MD5: - return Md5Hash - case HashAlgorithm.KECCAK256: - return keccak256 - default: - throw Error(`HashAlgorithm ${algo} not supported.`) - } -} - -/** - * Gets the tx signer address from the Tx Request and r, s, v. - * - * @param tx The Transaction Request. - * @param r The r parameter of the signature. - * @param s The s parameter of the signature. - * @param v The v parameter of the signature. - * @returns The signer's address. - */ -export const getTxSigner = async ( - tx: TransactionRequest, - r: string, - s: string, - v: number -): Promise => { - const txHash: string = ethers.utils.keccak256( - serializeTransaction(await resolveProperties(tx)) - ) - - try { - return ethers.utils.recoverAddress( - ethers.utils.arrayify(txHash), - joinSignature({ - s: add0x(s), - r: add0x(r), - v, - }) - ) - } catch (e) { - return undefined - } -} - -/** - * Turns a signature's R, S, V values into the concatenated 65-byte signature. - * - * @param r The R value. - * @param s The S value. - * @param v The V value. - * @returns the signature. - * @throws Error If r, s, or v are not the correct length. - */ -export const rsvToSignature = (r: string, s: string, v: number): string => { - const vString = remove0x(numberToHexString(v, 2)) - const sig = `${add0x(r)}${remove0x(s)}${vString}` - - // '0x' + 64 chars for r + 64 chars for s + 4 chars for v = 134 - if (sig.length !== 134) { - throw Error( - `Invalid v [${vString}], r [${r}], s[${s}]. v [${vString.length}] should be 4 chars, r [${r.length}] should be 64 chars, and s [${s.length}] should be 64 chars.` - ) - } - - return sig -} - -/** - * Parses a signature in R || S || V format to R, S, and V. - * - * @param sig The signature to parse. - * @returns an object with R, S, and V. - * @throws Error if signature is not the correct length. - */ -export const signatureToRSV = ( - sig: string -): { r: string; s: string; v: number } => { - const unprefixed: string = remove0x(sig) - if (unprefixed.length !== 130) { - throw Error( - `Invalid signature. Must be 132 chars if prefixed with 0x and 130 otherwise. Got ${sig.length} chars. Signature: ${sig}` - ) - } - - return { - r: unprefixed.substr(0, 64), - s: unprefixed.substr(64, 64), - v: parseInt(unprefixed.substr(128, 2), 16), - } -} diff --git a/packages/core-utils/src/app/equals.ts b/packages/core-utils/src/app/equals.ts deleted file mode 100644 index bea8ad0b3de6..000000000000 --- a/packages/core-utils/src/app/equals.ts +++ /dev/null @@ -1,75 +0,0 @@ -/** - * All of the below functions check whether or not the two provided objects are equal, - * returning true if they are and false otherwise - */ - -export const areEqual = (one: any, two: any): boolean => { - if ( - (one === undefined && two === undefined) || - (one === null && two === null) || - (one === false && two === false) - ) { - return true - } - - if (Array.isArray(one) || Array.isArray(two)) { - if ( - Array.isArray(one) !== Array.isArray(two) || - one.length !== two.length - ) { - return false - } - for (let i = 0; i < one.length; i++) { - if (!areEqual(one[i], two[i])) { - return false - } - } - return true - } - - if (typeof one === 'object' && typeof two === 'object') { - return objectsEqual(one, two) - } - - return one === two -} - -export const objectsEqual = (obj1: {}, obj2: {}): boolean => { - if (!obj1 && !obj2) { - return true - } - - if (!obj1 || !obj2) { - return false - } - - if (obj1.hasOwnProperty('equals')) { - return obj1['equals'](obj2) - } - - const props: string[] = Object.getOwnPropertyNames(obj1) - if (props.length !== Object.getOwnPropertyNames(obj2).length) { - return false - } - - for (const prop of props) { - if (!obj2.hasOwnProperty(prop)) { - return false - } - - if (typeof obj1[prop] === 'object' && typeof obj2[prop] === 'object') { - if (objectsEqual(obj1[prop], obj2[prop])) { - continue - } else { - return false - } - } - - // TODO: This won't work for reference types, but it'll work for now - if (obj1[prop] !== obj2[prop]) { - return false - } - } - - return true -} diff --git a/packages/core-utils/src/app/ethereum.ts b/packages/core-utils/src/app/ethereum.ts deleted file mode 100644 index 2e398658ca1e..000000000000 --- a/packages/core-utils/src/app/ethereum.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { Contract, Wallet } from 'ethers-v4' -import { - Provider, - TransactionRequest, - TransactionResponse, -} from 'ethers-v4/providers' -import { getLogger } from './log' -import { Logger } from '../types' - -const log: Logger = getLogger('core-utils/ethereum') - -/** - * Populates and signs a transaction for the function call specified by the provided contract, function name, and args. - * - * @param contract The contract with a connected provider. - * @param functionName The function name to be invoked by the returned TransactionRequest - * @param functionArgs The arguments for the contract function to invoke - * @param wallet The wallet with which the transaction will be signed. - * @returns the constructed TransactionRequest. - */ -export const getSignedTransaction = async ( - contract: Contract, - functionName: string, - functionArgs: any[], - wallet: Wallet -): Promise => { - let tx: TransactionRequest - let nonce - ;[tx, nonce] = await Promise.all([ - populateFunctionCallTx( - contract, - functionName, - functionArgs, - wallet.address - ), - wallet.getTransactionCount('pending'), - ]) - - tx.nonce = nonce - return wallet.sign(tx) -} - -/** - * Populates and returns a TransactionRequest for the function call specified by the provided contract, function name, and args. - * - * @param contract The contract with a connected provider. - * @param functionName The function name to be invoked by the returned TransactionRequest - * @param functionArgs The arguments for the contract function to invoke - * @param fromAddress The caller address for the tx - * @returns the constructed TransactionRequest. - */ -export const populateFunctionCallTx = async ( - contract: Contract, - functionName: string, - functionArgs: any[], - fromAddress?: string -): Promise => { - const data: string = contract.interface.functions[functionName].encode( - functionArgs - ) - const tx: TransactionRequest = { - to: contract.address, - data, - } - - const estimateTx = { ...tx } - if (!!fromAddress) { - estimateTx.from = fromAddress - } - - log.debug( - `Getting gas limit and gas price for tx to ${ - contract.address - } function ${functionName}, with args ${JSON.stringify(functionArgs)}` - ) - - let gasLimit - let gasPrice - ;[gasLimit, gasPrice] = await Promise.all([ - contract.provider.estimateGas(estimateTx), - contract.provider.getGasPrice(), - ]) - - tx.gasLimit = gasLimit - tx.gasPrice = gasPrice - - return tx -} - -/** - * Determines whether or not the tx with the provided hash has been submitted to the chain. - * Note: This will return true if it has been submitted whether or not is has been mined. - * - * @param provider A provider to use for the fetch. - * @param txHash The transaction hash. - * @returns True if the tx with the provided hash has been submitted, false otherwise. - */ -export const isTxSubmitted = async ( - provider: Provider, - txHash: string -): Promise => { - const tx: TransactionResponse = await provider.getTransaction(txHash) - return !!tx -} diff --git a/packages/core-utils/src/app/index.ts b/packages/core-utils/src/app/index.ts deleted file mode 100644 index eb3c9d9aff0c..000000000000 --- a/packages/core-utils/src/app/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* External Imports */ -import { ethers } from 'ethers-v4' - -/* Abi */ -export const abi = new ethers.utils.AbiCoder() -export * from './serialization' -export * from './transport' - -export * from './buffer' -export { default as BloomFilter } from './bloom_filter' -export * from './constants' -export * from './contract-deployment' -export * from './crypto' -export * from './equals' -export * from './ethereum' -export * from './log' -export * from './misc' -export * from './number' -export * from './scheduled-task' -export * from './signatures' -export * from './test-utils' -export * from './time-bucketed-counter' diff --git a/packages/core-utils/src/app/misc.ts b/packages/core-utils/src/app/misc.ts deleted file mode 100644 index ecfe60b3247f..000000000000 --- a/packages/core-utils/src/app/misc.ts +++ /dev/null @@ -1,329 +0,0 @@ -/* External Imports */ -import * as domain from 'domain' - -/* Internal Imports */ -import { BigNumber } from './number' -import { RLP, hexlify } from 'ethers-v4/utils' - -export const NULL_ADDRESS = '0x0000000000000000000000000000000000000000' -const hexRegex = /^(0x)?[0-9a-fA-F]*$/ - -/** - * JSON-stringifies a value if it's not already a string. - * @param value Value to stringify. - * @returns the stringified value. - */ -export const stringify = (value: any): string => { - if (!(typeof value === 'string')) { - value = JSON.stringify(value) - } - return value as string -} - -/** - * JSON-parses a value if it's not already an object. - * @param value Value to parse. - * @returns the parsed value. - */ -export const jsonify = (value: any): {} => { - return isJson(value) ? JSON.parse(value) : value -} - -/** - * Checks whether something is a JSON string. - * @param value Value to check. - * @returns `true` if it's a JSON string, `false` otherwise. - */ -export const isJson = (value: string): boolean => { - try { - JSON.parse(value) - } catch (err) { - return false - } - return true -} - -export interface PrettyPrintable { - [key: string]: string | number | BigNumber | boolean | any -} - -/** - * Converts an object to a pretty JSON string. - * @param obj Object to convert. - * @returns the object as a pretty JSON string. - */ -export const prettify = (obj: PrettyPrintable): string => { - const parsed: PrettyPrintable = {} - for (const key of Object.keys(obj)) { - const value = obj[key] - parsed[key] = BigNumber.isBigNumber(value) - ? `${value.toString(16)} (${value.toString(10)})` - : value - } - return JSON.stringify(parsed, null, 2) -} - -/** - * Sleeps for a number of milliseconds. - * @param ms Number of ms to sleep. - * @returns a promise that resolves after the number of ms. - */ -export const sleep = (ms: number): Promise => { - return new Promise((resolve) => { - setTimeout(resolve, ms) - }) -} - -/** - * Removes "0x" from start of a string if it exists. - * @param str String to modify. - * @returns the string without "0x". - */ -export const remove0x = (str: string): string => { - if (str === undefined) { - return str - } - return str.startsWith('0x') ? str.slice(2) : str -} - -/** - * Adds "0x" to the start of a string if necessary. - * @param str String to modify. - * @returns the string with "0x". - */ -export const add0x = (str: string): string => { - if (str === undefined) { - return str - } - return str.startsWith('0x') ? str : '0x' + str -} - -/** - * Pads the provided string left with the provided string until it is the provided length. - * Note: This function accounts for hex strings padding inside of the 0x prefix. - * - * @param str The string to pad. - * @param length The desired resulting string length (excluding 0x prefix). - * @param padString The string to pad with. - * @returns The padded string. - */ -export const padToLength = ( - str: string, - length: number, - padString: string = '0' -): string => { - const base: string = remove0x(str) - const repeat: number = - (length < base.length ? 0 : length - base.length) / padString.length - const padded = padString.repeat(repeat) + base - return base === str ? padded : add0x(padded) -} - -/** - * Checks if something is an Object - * @param obj Thing that might be an Object. - * @returns `true` if the thing is a Object, `false` otherwise. - */ -export const isObject = (obj: any): boolean => { - return typeof obj === 'object' && obj !== null -} - -/** - * Creates a hex string with a certain number of zeroes. - * @param n Number of zeroes. - * @returns the hex string. - */ -export const getNullString = (n: number): string => { - return '0x' + '0'.repeat(n) -} - -/** - * Reverses a string in place. - * @param str String to reverse. - * @returns the reversed string. - */ -export const reverse = (str: string): string => { - return Array.from(str) - .reverse() - .join('') -} - -/** - * Returns whether or not the provided string is a hex string. - * - * @param str The string to test. - * @returns True if the provided string is a hex string, false otherwise. - */ -export const isHexString = (str: string): boolean => { - return hexRegex.test(str) -} - -/** - * Converts a big number to a hex string. - * @param bn the big number to be converted. - * @returns the big number as a string. - */ -export const bnToHexString = (bn: BigNumber): string => { - return '0x' + bn.toString('hex') -} - -/** - * Converts a JavaScript number to a big-endian hex string. - * @param number the JavaScript number to be converted. - * @param padToBytes the number of numeric bytes the resulting string should be, -1 if no padding should be done. - * @returns the JavaScript number as a string. - */ -export const numberToHexString = ( - number: number, - padToBytes: number = -1 -): string => { - let str = number.toString(16) - if (padToBytes > 0 || str.length < padToBytes * 2) { - str = `${'0'.repeat(padToBytes * 2 - str.length)}${str}` - } - return add0x(str) -} - -/** - * Converts either a big number or buffer to hex string - * @param value the big number or buffer to be converted - * @returns the value as a string. - */ -export const hexStringify = (value: BigNumber | Buffer): string => { - if (value instanceof BigNumber) { - return bnToHexString(value) - } else if (value instanceof Buffer) { - return bufToHexString(value) - } else { - throw new Error("Can't hexStringify--invalid type passed") - } -} - -/** - * Converts a hex string to a buffer - * @param hexString the hex string to be converted - * @returns the hexString as a buffer. - */ -export const hexStrToBuf = (hexString: string): Buffer => { - if (!isHexString(hexString)) { - throw new RangeError(`Invalid hex string [${hexString}]`) - } - if (hexString.length % 2 !== 0) { - throw new RangeError( - `Invalid hex string -- odd number of characters: [${hexString}]` - ) - } - return Buffer.from(remove0x(hexString), 'hex') -} - -/** - * Converts a hex string to a JavaScript Number - * @param hexString the hex string to be converted - * @returns the hexString as a JavaScript Number. - */ -export const hexStrToNumber = (hexString: string): number => { - return parseInt(remove0x(hexString), 16) -} - -/** - * Parses a hex string if one is given otherwise returns the number that was - * given - * @param str the String to parse - * @returns the parsed number. - */ -export const castToNumber = (stringOrNumber: string | number): number => { - return typeof stringOrNumber === 'number' - ? stringOrNumber - : hexStrToNumber(stringOrNumber) -} - -/** - * Converts the provided buffer into a hex string. - * @param buff The buffer. - * @param prepend0x Whether or not to prepend '0x' to the resulting string. - * @returns the hex string. - */ -export const bufToHexString = ( - buff: Buffer, - prepend0x: boolean = true -): string => { - const bufStr: string = buff.toString('hex') - const str: string = bufStr.length % 2 === 0 ? bufStr : `0${bufStr}` - return prepend0x ? add0x(str) : str -} - -/** - * Converts the provided (UTF-8) string into a hex string. - * @param str The UTF-8 string. - * @returns The hex string representation. - */ -export const strToHexStr = (str: string): string => { - return bufToHexString(Buffer.from(str)) -} - -/** - * Converts the provided hex string into the UTF-8 representation of it. - * @param str The hex string. - * @returns The UTF-8 representation of the string. - */ -export const hexStrToString = (str: string): string => { - return hexStrToBuf(str).toString() -} - -/** - * Determine if a hex string is empty or undefined - * @param str The hex string. - * @returns boolean `true` if the string is empty or undefined, otherwise `false` - */ -export const isHexStringEmptyOrUndefined = (str: string): boolean => { - return str === '0x' || str === undefined -} - -/** - * Creates a new version of a list with all instances of a specific element - * removed. - * @param list List to remove elements from. - * @param element Element to remove from the list. - * @returns the list without the given element. - */ -export const except = (list: T[], element: T): T[] => { - return list.filter((item) => { - return item !== element - }) -} - -/** - * Runs the provided function in the provided domain if one is provided. - * If a domain is falsy, this will create a domain for this function to run in. - * @param d The domain in which this function should run. - * @param func The function to run. - * @returns The result of the function to be run - */ -export const runInDomain = async ( - d: domain.Domain, - func: () => any -): Promise => { - const domainToUse: domain.Domain = !!d ? d : domain.create() - return domainToUse.run(func) -} - -/** - * Gets the current number of seconds since the epoch. - * - * @returns The seconds since epoch. - */ -export const getCurrentTime = (): number => { - return Math.round(Date.now() / 1000) -} - -/** - * Rounds the input number up to the nearest multiple of 32. - * If it is already a multiple of 32, it will not be rounded. - * - * @param num The number to round. - * @returns The rounded number. - */ -export const roundToNearestMultipleOf32 = (num: number): number => { - const mod: number = num % 32 - return mod === 0 ? num : num + (32 - mod) -} diff --git a/packages/core-utils/src/app/number.ts b/packages/core-utils/src/app/number.ts deleted file mode 100644 index 630da87bacb2..000000000000 --- a/packages/core-utils/src/app/number.ts +++ /dev/null @@ -1,416 +0,0 @@ -import BigNum = require('bn.js') -import assert from 'assert' - -export type Endianness = 'B' | 'L' -export const BIG_ENDIAN: Endianness = 'B' -export const LITTLE_ENDIAN: Endianness = 'L' - -/** - * Class to represent big numbers in the codebase. - * This is a façade, wrapping the underlying Big Number implementation so that we can - * swap out implementations if necessary without breaking usages. - */ -export class BigNumber { - private readonly num: BigNum - - constructor( - number: - | number - | string - | number[] - | Uint8Array - | Buffer - | BigNumber - | BigNum, - base?: number | 'hex', - endian?: Endianness - ) { - const parsedNumber = number instanceof BigNumber ? number.num : number - const endianness = !!endian ? this.getBigNumEndianness(endian) : undefined - - if (!!base) { - this.num = new BigNum(parsedNumber, base, endianness) - } else if (!!endian) { - this.num = new BigNum(parsedNumber, endianness) - } else { - this.num = new BigNum(parsedNumber) - } - } - - /** - * Returns the min of the two provided BigNumbers. - * - * @param left the first BigNumber - * @param right the second BigNumber - */ - public static min(left: BigNumber, right: BigNumber): BigNumber { - return new BigNumber(BigNum.min(left.num, right.num)) - } - - /** - * Returns the max of the two provided BigNumbers. - * - * @param left the first BigNumber - * @param right the second BigNumber - */ - public static max(left: BigNumber, right: BigNumber): BigNumber { - return new BigNumber(BigNum.max(left.num, right.num)) - } - - /** - * Determines whether or not the provided input is a BigNumber - * - * @param num the number to inspect - * @returns true if so, false otherwise - */ - public static isBigNumber(num: any): boolean { - if (num instanceof BigNumber) { - return BigNum.isBN(num.num) - } - - return false - } - - /** - * Creates a copy of `this` without the same memory reference. - */ - public clone(): BigNumber { - return new BigNumber(this) - } - - /** - * returns a string representation of this number with the provided base. - * - * @param base the base of the string number to output - * @param length the desired length of the resulting string (will pad with 0s if necessary) - * @returns the string representation - */ - public toString(base: number | 'hex' = 'hex', length?: number): string { - return length === undefined - ? this.num.toString(base) - : this.num.toString(base, length) - } - - /** - * Serializes this object to JSON by simply returning the represented number as a string. - * @returns the JSON representing the number in question - */ - public toJSON(): string { - return this.toString('hex') - } - - /** - * Creates and returns a regular number from this number. - * Note: Precision may be lost. - * - * @returns the number representing this - */ - public toNumber(): number { - return this.num.toNumber() - } - - /** - * Gets the Node.js Buffer representation of this BigNumber. - * - * @param endian the Endianness to use - * @param length the length of the buffer - */ - public toBuffer(endian?: Endianness, length?: number): Buffer { - if (endian) { - const endianness = this.getBigNumEndianness(endian) - if (length) { - return this.num.toBuffer(endianness, length) - } - return this.num.toBuffer(endianness) - } - return this.num.toBuffer() - } - - /************** - * Operations * - **************/ - - /** - * Adds this BigNumber to the provided BigNumber and returns the result. - * - * @param other the BigNumber to add - * @returns a *new* BigNumber with the result - */ - public add(other: BigNumber): BigNumber { - return new BigNumber(this.num.add(other.num)) - } - - /** - * Subtracts the provided BigNumber from this BigNumber and returns the result. - * - * @param other the BigNumber to subtract - * @returns a *new* BigNumber with the result - */ - public sub(other: BigNumber): BigNumber { - return new BigNumber(this.num.sub(other.num)) - } - - /** - * Multiplies this BigNumber by the provided BigNumber and returns the result. - * - * @param other the BigNumber to multiply - * @returns a *new* BigNumber with the result - */ - public mul(other: BigNumber): BigNumber { - return new BigNumber(this.num.mul(other.num)) - } - - /** - * Divides this BigNumber by the provided BigNumber and returns the result. - * - * @param other the BigNumber to divide by - * @returns a *new* BigNumber with the result - */ - public div(other: BigNumber): BigNumber { - return new BigNumber(this.num.div(other.num)) - } - - /** - * Divides this BigNumber by the provided BigNumber and returns the *rounded* result. - * - * @param other the BigNumber to divide by - * @returns a *new* BigNumber with the result - */ - public divRound(other: BigNumber): BigNumber { - // // TODO: This is only overridden because bn.js divRound rounds -3.3 to -4 instead of -3 - const thisAbs: BigNumber = this.abs() - const otherAbs: BigNumber = other.abs() - - const remainderAbs: BigNumber = thisAbs.mod(otherAbs) - const div: BigNumber = this.div(other) - - // if there's no remainder, it's the same as regular division - if (remainderAbs.eq(ZERO)) { - return div - } - - const decimalAbs = remainderAbs.div(otherAbs) - // if the decimal portion is GTE .5, round up, else round down (absolute) - if (decimalAbs.gte(ONE_HALF)) { - if (div.num.isNeg()) { - return div.add(remainderAbs).sub(ONE) - } else { - return div.sub(remainderAbs).add(ONE) - } - } else { - // rounding down (absolute) - if (div.num.isNeg()) { - return div.add(remainderAbs) - } else { - return div.sub(remainderAbs) - } - } - } - - /** - * Raises this BigNumber to exponent of the provided BigNumber and returns the result. - * - * @param other the BigNumber to divide by - * @returns a *new* BigNumber with the result - */ - public pow(exp: BigNumber): BigNumber { - assert( - exp.mod(ONE).eq(ZERO), - 'BigNumber.pow(...) does not support fractions at this time.' - ) - assert( - !exp.num.isNeg(), - 'BigNumber.pow(...) does not support negative exponents at this time.' - ) - - return new BigNumber(this.num.pow(exp.num)) - } - - /** - * Mods this BigNumber by the provided BigNumber and returns the result. - * - * @param other the BigNumber to mod by - * @returns a *new* BigNumber with the result - */ - public mod(mod: BigNumber): BigNumber { - assert( - !this.num.isNeg() || !mod.num.isNeg(), - 'Big number does not support negative mod negative.' - ) - return new BigNumber(this.num.mod(mod.num)) - } - - /** - * Mods this BigNumber by the provided BigNumber and returns the result. - * - * @param other the BigNumber to mod by - * @returns a *new* BigNumber with the result - */ - public modNum(mod: number): BigNumber { - assert( - !this.num.isNeg() || mod >= 0, - 'Big number does not support negative mod negative.' - ) - return new BigNumber(this.num.modn(mod)) - } - - /** - * Returns the absolute value of this BigNumber as a *new* BigNumber. - */ - public abs(): BigNumber { - return new BigNumber(this.num.abs()) - } - - /** - * Bitwise XORs the BigNumber with the provided BigNumber - * - * @param num The BigNumber to XOR - * @returns The resulting BigNumber - */ - public xor(num: BigNumber): BigNumber { - return new BigNumber(this.num.xor(num.num)) - } - - /** - * Bitwise ANDs the BigNumber with the provided BigNumber - * - * @param num The BigNumber to AND - * @returns The resulting BigNumber - */ - public and(num: BigNumber): BigNumber { - return new BigNumber(this.num.and(num.num)) - } - - /** - * Bitwise left-shifts the BigNumber the provided number of places - * returning a new BigNumber as the result. - * - * @param num the number of places to shift - */ - public shiftLeft(num: number): BigNumber { - return new BigNumber(this.num.shln(num)) - } - - /** - * Bitwise right-shifts the BigNumber the provided number of places - * returning a new BigNumber as the result. - * - * @param num the number of places to shift - */ - public shiftRight(num: number): BigNumber { - return new BigNumber(this.num.shrn(num)) - } - - /** - * Bitwise left-shifts the BigNumber the provided number of places - * - * @param num the number of places to shift - */ - public shiftLeftInPlace(num: number): BigNumber { - this.num.ishln(num) - return this - } - - /** - * Bitwise right-shifts the BigNumber the provided number of places - * - * @param num the number of places to shift - */ - public shiftRightInPlace(num: number): BigNumber { - this.num.ishrn(num) - return this - } - - /*************** - * Comparisons * - ***************/ - - /** - * Returns whether or not this BigNumber is greater than the provided BigNumber. - * - * @param other the BigNumber to compare to - * @returns true if so, false otherwise - */ - public gt(other: BigNumber): boolean { - return this.num.gt(other.num) - } - - /** - * Returns whether or not this BigNumber is greater than or equal to the provided BigNumber. - * - * @param other the BigNumber to compare to - * @returns true if so, false otherwise - */ - public gte(other: BigNumber): boolean { - return this.num.gte(other.num) - } - - /** - * Returns whether or not this BigNumber is less than the provided BigNumber. - * - * @param other the BigNumber to compare to - * @returns true if so, false otherwise - */ - public lt(other: BigNumber): boolean { - return this.num.lt(other.num) - } - - /** - * Returns whether or not this BigNumber is less than or equal to the provided BigNumber. - * - * @param other the BigNumber to compare to - * @returns true if so, false otherwise - */ - public lte(other: BigNumber): boolean { - return this.num.lte(other.num) - } - - /** - * Returns whether or not this BigNumber is equal to the provided BigNumber. - * - * @param other the BigNumber to compare to - * @returns true if so, false otherwise - */ - public eq(other: BigNumber): boolean { - return this.num.eq(other.num) - } - - /** - * eq alias to comply with standard - */ - public equals(other: BigNumber): boolean { - return this.eq(other) - } - - /** - * Compares this BigNumber to the provided BigNumber. - * - * @param other the BigNumber to compare to - * @returns -1 if this is smaller, 0 if they're equal, 1 if other is less than this - */ - public compare(other: BigNumber): -1 | 0 | 1 { - return this.lt(other) ? -1 : this.eq(other) ? 0 : 1 - } - - /** - * Gets the bn.js endianness from the provided Endianness - * - * @param endianness the Endianness in question - * @returns the bn.js endianness - */ - private getBigNumEndianness(endianness: Endianness): 'be' | 'le' { - if (endianness === BIG_ENDIAN) { - return 'be' - } else if (endianness === LITTLE_ENDIAN) { - return 'le' - } - throw Error(`Cannot get Endianness from ${JSON.stringify(endianness)}`) - } -} - -export const ZERO = new BigNumber(0) -export const ONE = new BigNumber(1) -export const TWO = new BigNumber(2) -export const THREE = new BigNumber(3) -export const ONE_HALF = new BigNumber(0.5) -export const MAX_BIG_NUM = new BigNumber('0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF') diff --git a/packages/core-utils/src/app/scheduled-task.ts b/packages/core-utils/src/app/scheduled-task.ts deleted file mode 100644 index c04b5f7ad3a5..000000000000 --- a/packages/core-utils/src/app/scheduled-task.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { sleep } from './misc' -import { getLogger, logError } from './log' - -const log = getLogger('scheduled-task') - -/** - * Base class for all scheduled tasks that execute at some frequency. - */ -export abstract class ScheduledTask { - private running: boolean - - protected constructor(private readonly periodMilliseconds: number) { - if (periodMilliseconds < 0) { - throw Error( - `periodMilliseconds must be >= 0. Received ${periodMilliseconds}` - ) - } - this.running = false - } - - /** - * Starts the scheduled task to execute immediately and every periodMilliseconds. - */ - public start(): void { - if (!this.running) { - // Purposefully don't await - this.running = true - this.run() - } - } - - /** - * Stops the scheduled task. If it is in the middle of a scheduled run, it will complete - */ - public stop(): void { - this.running = false - } - - public async run(): Promise { - while (this.running) { - let rerunImmediately: boolean - try { - rerunImmediately = await this.runTask() - } catch (e) { - logError( - log, - `ScheduledTask caught error on execution. Re-throwing so initial caller of run() may handle it appropriately.`, - e - ) - this.running = false - throw e - } - - if (rerunImmediately) { - // Purposefully do not await - this.run() - return - } - - try { - await sleep(this.periodMilliseconds) - } catch (e) { - logError( - log, - `Error sleeping in ScheduledTask! Continuing execution.`, - e - ) - } - } - } - - /** - * Task to be called every `periodMilliseconds` when `running` is true. - * - * Note: Exceptions must be handled in this function or else subsequent runs will not occur. - * @returns True if the task should be re-run immediately, false if it should be re-run after the configured delay. - */ - public abstract async runTask(): Promise -} diff --git a/packages/core-utils/src/app/serialization/abi-range.ts b/packages/core-utils/src/app/serialization/abi-range.ts deleted file mode 100644 index fd4bbd69d9d6..000000000000 --- a/packages/core-utils/src/app/serialization/abi-range.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* Internal Imports */ -import { AbiEncodable, Range } from '../../types' -import { abi } from '../index' -import { BigNumber } from '../number' -import { hexStringify } from '../misc' - -/** - * Creates a AbiStateUpdate from an encoded AbiStateUpdate. - * @param encoded The encoded AbiStateUpdate. - * @returns the AbiStateUpdate. - */ -const fromEncoded = (encoded: string): AbiRange => { - const decoded = abi.decode(AbiRange.abiTypes, encoded) - return new AbiRange( - new BigNumber(decoded[0].toString()), - new BigNumber(decoded[1].toString()) - ) -} - -/** - * Represents a basic abi encodable AbiRange - */ -export class AbiRange implements Range, AbiEncodable { - public static abiTypes = ['uint256', 'uint256'] - - constructor(readonly start: BigNumber, readonly end: BigNumber) {} - - /** - * @returns the abi encoded AbiRange. - */ - get encoded(): string { - return abi.encode(AbiRange.abiTypes, [ - hexStringify(this.start), - hexStringify(this.end), - ]) - } - - /** - * @returns the jsonified AbiRange. - */ - get jsonified(): any { - return { - start: hexStringify(this.start), - end: hexStringify(this.end), - } - } - - /** - * Casts a value to a AbiRange. - * @param value Thing to cast to a AbiRange. - * @returns the AbiRange. - */ - public static from(value: string): AbiRange { - if (typeof value === 'string') { - return fromEncoded(value) - } - - throw new Error('Got invalid argument type when casting to AbiStateUpdate.') - } - - /** - * Determines if this object equals another. - * @param other Object to compare to. - * @returns `true` if the two are equal, `false` otherwise. - */ - public equals(other: AbiRange): boolean { - return this.encoded === other.encoded - } -} diff --git a/packages/core-utils/src/app/serialization/index.ts b/packages/core-utils/src/app/serialization/index.ts deleted file mode 100644 index ed1978488041..000000000000 --- a/packages/core-utils/src/app/serialization/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './abi-range' -export * from './serializers' diff --git a/packages/core-utils/src/app/serialization/serializers.ts b/packages/core-utils/src/app/serialization/serializers.ts deleted file mode 100644 index 84ed17a85a81..000000000000 --- a/packages/core-utils/src/app/serialization/serializers.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { hexStrToBuf, remove0x } from '../misc' - -/** - * Serializes the provided object to its canonical string representation. - * - * @param obj The object to serialize. - * @returns The serialized object as a string. - */ -export const serializeObject = (obj: {}): string => { - return JSON.stringify(obj) -} - -/** - * Deserializes the provided string into its object representation. - * This assumes the string was serialized using the associated serializer. - * - * @param obj The string to deserialize. - * @returns The deserialized object. - */ -export const deserializeObject = (obj: string): {} => { - return JSON.parse(obj) -} - -/** - * Gets the canonical buffer representation of the provided object. - * - * @param obj The object - * @returns The resulting Buffer - */ -export const objectToBuffer = (obj: {}): Buffer => { - return Buffer.from(serializeObject(obj)) -} diff --git a/packages/core-utils/src/app/signatures.ts b/packages/core-utils/src/app/signatures.ts deleted file mode 100644 index 5aa0550a4228..000000000000 --- a/packages/core-utils/src/app/signatures.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* Internal Imports */ -import { ethers } from 'ethers-v4' -import { SignatureProvider, SignatureVerifier } from '../types' -import { hexStrToBuf } from './misc' - -export class DefaultSignatureVerifier implements SignatureVerifier { - private static _instance: SignatureVerifier - - public static instance(): SignatureVerifier { - if (!DefaultSignatureVerifier._instance) { - DefaultSignatureVerifier._instance = new DefaultSignatureVerifier() - } - return DefaultSignatureVerifier._instance - } - - public verifyMessage(message: string, signature: string): string { - // NOTE: we are hashing the message to sign to make the contracts easier (fixed prefix instead of legth prefix). This should be changed once we support the alternative. - const messageAsBuf: Buffer = hexStrToBuf(message) - const messageHash: string = ethers.utils.keccak256(messageAsBuf) - return ethers.utils.verifyMessage(hexStrToBuf(messageHash), signature) - } -} - -export class DefaultSignatureProvider implements SignatureProvider { - public constructor( - private readonly wallet: ethers.Wallet = ethers.Wallet.createRandom() - ) {} - - public async sign(message: string): Promise { - // NOTE: we are hashing the message to sign to make the contracts easier (fixed prefix instead of legth prefix). This should be changed once we support the alternative. - const messageAsBuf: Buffer = hexStrToBuf(message) - const messageHash: string = ethers.utils.keccak256(messageAsBuf) - return this.wallet.signMessage(hexStrToBuf(messageHash)) - } - - public async getAddress(): Promise { - return this.wallet.getAddress() - } -} - -export class IdentitySigner implements SignatureProvider { - public constructor(private address: string) {} - - public async getAddress(): Promise { - return this.address - } - - public async sign(message: string): Promise { - return this.address - } -} - -export class IdentityVerifier implements SignatureVerifier { - private static _instance: SignatureVerifier - public static instance(): SignatureVerifier { - if (!IdentityVerifier._instance) { - IdentityVerifier._instance = new IdentityVerifier() - } - return IdentityVerifier._instance - } - public verifyMessage(message: string, signature: string): string { - return signature - } -} - -export class ChecksumAgnosticIdentityVerifier implements SignatureVerifier { - private static _instance: SignatureVerifier - public static instance(): SignatureVerifier { - if (!ChecksumAgnosticIdentityVerifier._instance) { - ChecksumAgnosticIdentityVerifier._instance = new IdentityVerifier() - } - return ChecksumAgnosticIdentityVerifier._instance - } - public verifyMessage(message: string, signature: string): string { - return ethers.utils.getAddress(signature) - } -} diff --git a/packages/core-utils/src/app/test-utils.ts b/packages/core-utils/src/app/test-utils.ts deleted file mode 100644 index c7c02f30c139..000000000000 --- a/packages/core-utils/src/app/test-utils.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* External Imports */ -import assert from 'assert' - -export class TestUtils { - public static nullSafeEquals(first: any, second: any, msg?: string) { - const firstExists: boolean = first !== undefined && first !== null - const secondExists: boolean = second !== undefined && first !== null - - firstExists.should.equal( - secondExists, - msg || `undefined / not undefined mismatch!` - ) - if (firstExists) { - first.should.equal(second, msg || `values don't match!`) - } - } - - public static assertThrows(func: () => any, errorType?: any): void { - let succeeded = true - try { - func() - succeeded = false - } catch (e) { - if (!!errorType && !(e instanceof errorType)) { - succeeded = false - } - } - - assert( - succeeded, - "Function didn't throw as expected or threw the wrong error." - ) - } - - public static async assertThrowsAsync( - func: () => Promise, - errorType?: any - ): Promise { - let succeeded = true - let error: Error - try { - await func() - succeeded = false - } catch (e) { - if (!!errorType && !(e instanceof errorType)) { - succeeded = false - } - error = e - } - - assert( - succeeded, - "Function didn't throw as expected or threw the wrong error." - ) - return error - } - - public static async assertRevertsAsync( - func: () => Promise, - revertMessage: string - ): Promise { - let succeeded = true - try { - await func() - succeeded = false - } catch (e) { - if (e instanceof Error) { - const expectedMessage: string = `VM Exception while processing transaction: revert ${revertMessage}` - assert( - e.message.startsWith(expectedMessage), - `Function did not throw expected error. Expected: ${expectedMessage}*, Received: ${e.message}` - ) - } else { - succeeded = false - } - } - - assert( - succeeded, - "Function didn't throw as expected or threw the wrong error." - ) - } -} diff --git a/packages/core-utils/src/app/time-bucketed-counter.ts b/packages/core-utils/src/app/time-bucketed-counter.ts deleted file mode 100644 index 14046b11fa6a..000000000000 --- a/packages/core-utils/src/app/time-bucketed-counter.ts +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Implements a time-based counter that can keep an accurate rolling count - * of how many per X milliseconds. - * - * It does this by breaking X milliseconds into Y time-buckets and - * 1) Incrementing the appropriate time bucket based on the current time - * 2) Clearing time buckets that are more than X milliseconds old - * - * EXAMPLE: - * Parameters: Time period is 1000 millis and we have 5 buckets. - * - * We start with [0,0,0,0,0] - * Say we get 2 requests in the first 200 millis. - * Our counter is now [2,0,0,0,0]. - * - * Say we get our next request at the 450 millisecond mark. - * Our counter is now [1,0,2,0,0] - * - * Say our next request is at the 850 millisecond mark - * Our counter is now [1,0,1,0,2] - * - * If our next 4 requests come at the 1050 millisecond mark, - * our initial bucket is now out of range, so it gets cleared and moved to the front - * Our counter is now [4,1,0,1,0]. - * - * This allows us to keep a moving counter of number per unit time. The more buckets, the more accurate. - */ -export class TimeBucketedCounter { - private total: number - private currentBucketStartTime: number - private bucketIndex: number - private readonly timeBuckets: number[] - private readonly bucketDurationMillis: number - - constructor( - private readonly periodInMillis: number, - numBuckets: number = 10 - ) { - this.total = 0 - this.bucketIndex = 0 - this.timeBuckets = new Array(numBuckets).fill(0) - this.bucketDurationMillis = Math.floor(periodInMillis / numBuckets) - } - - public increment(): number { - this.cycleThroughBuffer() - this.timeBuckets[this.bucketIndex]++ - this.total++ - return this.total - } - - public getTotal(): number { - this.cycleThroughBuffer() - return this.total - } - - /** - * Cycles through the bucket buffer, purging values from timeBuckets that are older than our time window - * and updating our index in our circular buffer accordingly. - * - * @param currentMillis The current time in millis, which combined with the last write time tells us how many - * time timeBuckets have gone out of range - */ - private cycleThroughBuffer( - currentMillis: number = new Date().getTime() - ): void { - if (!this.currentBucketStartTime) { - this.currentBucketStartTime = currentMillis - return - } - - const bucketsToReset = Math.floor( - (currentMillis - this.currentBucketStartTime) / this.bucketDurationMillis - ) - if (bucketsToReset >= this.timeBuckets.length) { - this.timeBuckets.fill(0) - this.total = 0 - this.currentBucketStartTime = currentMillis - } else if (bucketsToReset > 0) { - for (let i = 0; i < bucketsToReset; i++) { - this.bucketIndex = ++this.bucketIndex % this.timeBuckets.length - this.total -= this.timeBuckets[this.bucketIndex] - this.timeBuckets[this.bucketIndex] = 0 - } - this.currentBucketStartTime += bucketsToReset * this.bucketDurationMillis - } - } -} diff --git a/packages/core-utils/src/app/constants.ts b/packages/core-utils/src/constants.ts similarity index 100% rename from packages/core-utils/src/app/constants.ts rename to packages/core-utils/src/constants.ts diff --git a/packages/core-utils/src/hex-strings.ts b/packages/core-utils/src/hex-strings.ts new file mode 100644 index 000000000000..16485f8e4f77 --- /dev/null +++ b/packages/core-utils/src/hex-strings.ts @@ -0,0 +1,61 @@ +/* Imports: External */ +import { BigNumber } from 'ethers' + +/** + * Removes "0x" from start of a string if it exists. + * @param str String to modify. + * @returns the string without "0x". + */ +export const remove0x = (str: string): string => { + if (str === undefined) { + return str + } + return str.startsWith('0x') ? str.slice(2) : str +} + +/** + * Adds "0x" to the start of a string if necessary. + * @param str String to modify. + * @returns the string with "0x". + */ +export const add0x = (str: string): string => { + if (str === undefined) { + return str + } + return str.startsWith('0x') ? str : '0x' + str +} + +/** + * Returns whether or not the provided string is a hex string. + * @param str The string to test. + * @returns True if the provided string is a hex string, false otherwise. + */ +export const isHexString = (inp: any): boolean => { + return typeof inp === 'string' && inp.startsWith('0x') +} + +/** + * Casts a hex string to a buffer. + * @param inp Input to cast to a buffer. + * @return Input cast as a buffer. + */ +export const fromHexString = (inp: Buffer | string): Buffer => { + if (typeof inp === 'string' && inp.startsWith('0x')) { + return Buffer.from(inp.slice(2), 'hex') + } + + return Buffer.from(inp) +} + +/** + * Casts an input to a hex string. + * @param inp Input to cast to a hex string. + * @return Input cast as a hex string. + */ +export const toHexString = (inp: Buffer | string | number | null): string => { + if (typeof inp === 'number') { + return BigNumber.from(inp).toHexString() + } else { + return '0x' + fromHexString(inp).toString('hex') + } +} diff --git a/packages/core-utils/src/index.ts b/packages/core-utils/src/index.ts index c88cbf1e5b84..08bf536950ba 100644 --- a/packages/core-utils/src/index.ts +++ b/packages/core-utils/src/index.ts @@ -1,2 +1,10 @@ -export * from './app' +/* External Imports */ +import { ethers } from 'ethers' + +export const abi = new ethers.utils.AbiCoder() + +export * from './transport' +export * from './constants' +export * from './log' +export * from './hex-strings' export * from './types' diff --git a/packages/core-utils/src/app/log.ts b/packages/core-utils/src/log.ts similarity index 96% rename from packages/core-utils/src/app/log.ts rename to packages/core-utils/src/log.ts index 972b31967532..0852f0317443 100644 --- a/packages/core-utils/src/app/log.ts +++ b/packages/core-utils/src/log.ts @@ -1,5 +1,8 @@ +/* Imports: External */ import debug from 'debug' -import { Logger } from '../types' + +/* Imports: Internal */ +import { Logger } from './types' export const LOG_NEWLINE_STRING = process.env.LOG_NEW_LINES ? '\n' : ' <\\n> ' diff --git a/packages/core-utils/src/app/transport/client/axios-http-client.ts b/packages/core-utils/src/transport/client/axios-http-client.ts similarity index 93% rename from packages/core-utils/src/app/transport/client/axios-http-client.ts rename to packages/core-utils/src/transport/client/axios-http-client.ts index 54b2b1ad51fe..307e0d949667 100644 --- a/packages/core-utils/src/app/transport/client/axios-http-client.ts +++ b/packages/core-utils/src/transport/client/axios-http-client.ts @@ -2,7 +2,7 @@ import axios, { AxiosRequestConfig, AxiosResponse } from 'axios' /* Internal Imports */ -import { HttpClient } from '../../../types' +import { HttpClient } from '../../types' /** * HTTP client that uses the axios client library. diff --git a/packages/core-utils/src/app/transport/client/index.ts b/packages/core-utils/src/transport/client/index.ts similarity index 100% rename from packages/core-utils/src/app/transport/client/index.ts rename to packages/core-utils/src/transport/client/index.ts diff --git a/packages/core-utils/src/app/transport/client/json-rpc-client.ts b/packages/core-utils/src/transport/client/json-rpc-client.ts similarity index 98% rename from packages/core-utils/src/app/transport/client/json-rpc-client.ts rename to packages/core-utils/src/transport/client/json-rpc-client.ts index 47403cdf1986..e15d71c5e051 100644 --- a/packages/core-utils/src/app/transport/client/json-rpc-client.ts +++ b/packages/core-utils/src/transport/client/json-rpc-client.ts @@ -9,7 +9,7 @@ import { Client, isJsonRpcErrorResponse, JsonRpcResponse, -} from '../../../types' +} from '../../types' /** * Client for making requests to a JSON-RPC server. @@ -36,6 +36,7 @@ export class JsonRpcClient if (isJsonRpcErrorResponse(response)) { throw new Error(`${JSON.stringify(response.error)}`) } + return response.result } diff --git a/packages/core-utils/src/app/transport/client/json-rpc-http-adapter.ts b/packages/core-utils/src/transport/client/json-rpc-http-adapter.ts similarity index 97% rename from packages/core-utils/src/app/transport/client/json-rpc-http-adapter.ts rename to packages/core-utils/src/transport/client/json-rpc-http-adapter.ts index 4c936488d45d..80e1a0efb46b 100644 --- a/packages/core-utils/src/app/transport/client/json-rpc-http-adapter.ts +++ b/packages/core-utils/src/transport/client/json-rpc-http-adapter.ts @@ -4,7 +4,7 @@ import { JsonRpcResponse, HttpRequest, HttpResponse, -} from '../../../types' +} from '../../types' /** * Adapter for using JSON-RPC over HTTP. diff --git a/packages/core-utils/src/app/transport/client/simple-client.ts b/packages/core-utils/src/transport/client/simple-client.ts similarity index 99% rename from packages/core-utils/src/app/transport/client/simple-client.ts rename to packages/core-utils/src/transport/client/simple-client.ts index baa3abce2d5a..f1557900af9e 100644 --- a/packages/core-utils/src/app/transport/client/simple-client.ts +++ b/packages/core-utils/src/transport/client/simple-client.ts @@ -2,7 +2,7 @@ * Wrapper class around a Http-based JsonRpcClient */ import { JsonRpcClient } from './json-rpc-client' -import { HttpRequest, HttpResponse, JsonRpcResponse } from '../../../types' +import { HttpRequest, HttpResponse, JsonRpcResponse } from '../../types' import { JsonRpcHttpAdapter } from './json-rpc-http-adapter' import { AxiosHttpClient } from './axios-http-client' diff --git a/packages/core-utils/src/app/transport/index.ts b/packages/core-utils/src/transport/index.ts similarity index 100% rename from packages/core-utils/src/app/transport/index.ts rename to packages/core-utils/src/transport/index.ts diff --git a/packages/core-utils/src/app/transport/server/express-http-server.ts b/packages/core-utils/src/transport/server/express-http-server.ts similarity index 97% rename from packages/core-utils/src/app/transport/server/express-http-server.ts rename to packages/core-utils/src/transport/server/express-http-server.ts index 1b9564f1c3d0..81e1fd1eeafe 100644 --- a/packages/core-utils/src/app/transport/server/express-http-server.ts +++ b/packages/core-utils/src/transport/server/express-http-server.ts @@ -2,7 +2,7 @@ import bodyParser = require('body-parser') /* Internal Imports */ -import { HttpServer } from '../../../types' +import { HttpServer } from '../../types' /** * HTTP server that uses Express under the hood. diff --git a/packages/core-utils/src/app/transport/server/index.ts b/packages/core-utils/src/transport/server/index.ts similarity index 100% rename from packages/core-utils/src/app/transport/server/index.ts rename to packages/core-utils/src/transport/server/index.ts diff --git a/packages/core-utils/src/app/transport/server/json-rpc-errors.ts b/packages/core-utils/src/transport/server/json-rpc-errors.ts similarity index 94% rename from packages/core-utils/src/app/transport/server/json-rpc-errors.ts rename to packages/core-utils/src/transport/server/json-rpc-errors.ts index 912e8e15482f..7337bfa187f4 100644 --- a/packages/core-utils/src/app/transport/server/json-rpc-errors.ts +++ b/packages/core-utils/src/transport/server/json-rpc-errors.ts @@ -1,4 +1,4 @@ -import { JsonRpcErrorResponse } from '../../../types' +import { JsonRpcErrorResponse } from '../../types' export const JSONRPC_ERRORS = { PARSE_ERROR: { diff --git a/packages/core-utils/src/app/transport/server/json-rpc-server.ts b/packages/core-utils/src/transport/server/json-rpc-server.ts similarity index 98% rename from packages/core-utils/src/app/transport/server/json-rpc-server.ts rename to packages/core-utils/src/transport/server/json-rpc-server.ts index 72cb116d4a2b..dffee17b0995 100644 --- a/packages/core-utils/src/app/transport/server/json-rpc-server.ts +++ b/packages/core-utils/src/transport/server/json-rpc-server.ts @@ -4,7 +4,7 @@ import { JsonRpcSuccessResponse, RpcServer, isJsonRpcRequest, -} from '../../../types' +} from '../../types' import { buildJsonRpcError } from './json-rpc-errors' import { ExpressHttpServer } from './express-http-server' diff --git a/packages/core-utils/src/app/transport/server/simple-server.ts b/packages/core-utils/src/transport/server/simple-server.ts similarity index 100% rename from packages/core-utils/src/app/transport/server/simple-server.ts rename to packages/core-utils/src/transport/server/simple-server.ts diff --git a/packages/core-utils/src/types/contract-deployment.ts b/packages/core-utils/src/types/contract-deployment.ts deleted file mode 100644 index ef2765ac00b1..000000000000 --- a/packages/core-utils/src/types/contract-deployment.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Wallet } from 'ethers-v4' - -/** - * Deploys a contract and returns its deployed address. - * - * @param Wallet The Wallet to deploy from - * @returns The deployed address as a hex string - */ -export type ContractDeploymentFunction = (w: Wallet) => Promise diff --git a/packages/core-utils/src/types/hash-algorithms.ts b/packages/core-utils/src/types/hash-algorithms.ts deleted file mode 100644 index 109537e35cef..000000000000 --- a/packages/core-utils/src/types/hash-algorithms.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum HashAlgorithm { - MD5 = 'MD5', - KECCAK256 = 'KECCAK256', -} - -export type HashFunction = (string) => string diff --git a/packages/core-utils/src/types/index.ts b/packages/core-utils/src/types/index.ts index b5e8a6d71327..cbdafa8c550d 100644 --- a/packages/core-utils/src/types/index.ts +++ b/packages/core-utils/src/types/index.ts @@ -1,10 +1,3 @@ -export * from './keystore' -export * from './serialization' - -export * from './contract-deployment' -export * from './hash-algorithms' -export * from './log' -export * from './range' -export * from './signatures.interface' -export * from './transport.interface' +export * from './log.types' +export * from './transport.types' export * from './type-guards' diff --git a/packages/core-utils/src/types/keystore/index.ts b/packages/core-utils/src/types/keystore/index.ts deleted file mode 100644 index d3ecb1f7a815..000000000000 --- a/packages/core-utils/src/types/keystore/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './keystore.interface' -export * from './wallet.interface' diff --git a/packages/core-utils/src/types/keystore/keystore.interface.ts b/packages/core-utils/src/types/keystore/keystore.interface.ts deleted file mode 100644 index a64c8b07c452..000000000000 --- a/packages/core-utils/src/types/keystore/keystore.interface.ts +++ /dev/null @@ -1,76 +0,0 @@ -type OpenSSLCipher = - | 'aes-128-cbc' - | 'aes-128-ecb' - | 'aes-192-cbc' - | 'aes-192-ecb' - | 'aes-256-cbc' - | 'aes-256-ecb' - | 'base64' - | 'bf' - | 'bf-cbc' - | 'bf-cfb' - | 'bf-ecb' - | 'bf-ofb' - | 'camellia-128-cbc' - | 'camellia-128-ecb' - | 'camellia-192-cbc' - | 'camellia-192-ecb' - | 'camellia-256-cbc' - | 'camellia-256-ecb' - | 'cast' - | 'cast-cbc' - | 'cast5-cbc' - | 'cast5-cfb' - | 'cast5-ecb' - | 'cast5-ofb' - | 'des' - | 'des-cbc' - | 'des-cfb' - | 'des-ecb' - | 'des-ede' - | 'des-ede-cbc' - | 'des-ede-cfb' - | 'des-ede-ofb' - | 'des-ede3' - | 'des-ede3-cbc' - | 'des-ede3-cfb' - | 'des-ede3-ofb' - | 'des-ofb' - | 'des3' - | 'desx' - | 'rc2' - | 'rc2-40-cbc' - | 'rc2-64-cbc' - | 'rc2-cbc' - | 'rc2-cfb' - | 'rc2-ecb' - | 'rc2-ofb' - | 'rc4' - | 'rc4-40' - | 'seed' - | 'seed-cbc' - | 'seed-cfb' - | 'seed-ecb' - | 'seed-ofb' - -export interface Keystore { - address: string - id: string - version: number - crypto: { - cipher: OpenSSLCipher - ciphertext: string - cipherparams: { - iv: string - } - kdf: 'scrypt' | 'pbkdf2' - kdfparams: { - dklen: number - n: number - p: number - r: number - salt: string - } - mac: string - } -} diff --git a/packages/core-utils/src/types/keystore/wallet.interface.ts b/packages/core-utils/src/types/keystore/wallet.interface.ts deleted file mode 100644 index 36d626e98b9d..000000000000 --- a/packages/core-utils/src/types/keystore/wallet.interface.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { SignatureProvider } from '../signatures.interface' - -export interface Wallet { - listAccounts(): Promise - createAccount(password: string): Promise - unlockAccount(address: string, password: string): Promise - lockAccount(address: string): Promise - getSignatureProvider(address: string): Promise - sign(address: string, message: string): Promise -} diff --git a/packages/core-utils/src/types/log.ts b/packages/core-utils/src/types/log.types.ts similarity index 100% rename from packages/core-utils/src/types/log.ts rename to packages/core-utils/src/types/log.types.ts diff --git a/packages/core-utils/src/types/range.ts b/packages/core-utils/src/types/range.ts deleted file mode 100644 index 9f75b2b7a704..000000000000 --- a/packages/core-utils/src/types/range.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { BigNumber } from '../app' - -export interface Range { - start: BigNumber - end: BigNumber -} - -export interface BlockRange extends Range { - block: BigNumber -} diff --git a/packages/core-utils/src/types/serialization/index.ts b/packages/core-utils/src/types/serialization/index.ts deleted file mode 100644 index 91e5278f0c31..000000000000 --- a/packages/core-utils/src/types/serialization/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './type.interface' diff --git a/packages/core-utils/src/types/serialization/type.interface.ts b/packages/core-utils/src/types/serialization/type.interface.ts deleted file mode 100644 index 1e4f9978e785..000000000000 --- a/packages/core-utils/src/types/serialization/type.interface.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type Type = new (...args: any[]) => T - -export interface AbiEncodable { - encoded: string -} diff --git a/packages/core-utils/src/types/signatures.interface.ts b/packages/core-utils/src/types/signatures.interface.ts deleted file mode 100644 index 8cada5e2d57c..000000000000 --- a/packages/core-utils/src/types/signatures.interface.ts +++ /dev/null @@ -1,28 +0,0 @@ -export interface SignatureProvider { - /** - * Gets the public key for this signature provider. - * @returns the public key - */ - getAddress(): Promise - - /** - * Signs the provided message with the private key associated with the provided address. - * - * @param address The address - * @param message The message - * @returns the signature - */ - sign(message: string): Promise -} - -export interface SignatureVerifier { - /** - * Gets the address that signed the provided message, resulting in the - * provided signature. - * - * @param message The message that was signed. - * @param signature The signature of the message that was signed. - * @returns The signer's address. - */ - verifyMessage(message: string, signature: string): string -} diff --git a/packages/core-utils/src/types/transport.interface.ts b/packages/core-utils/src/types/transport.types.ts similarity index 100% rename from packages/core-utils/src/types/transport.interface.ts rename to packages/core-utils/src/types/transport.types.ts diff --git a/packages/core-utils/src/types/type-guards.ts b/packages/core-utils/src/types/type-guards.ts index 3263764b5ec6..f79b02e6ed9f 100644 --- a/packages/core-utils/src/types/type-guards.ts +++ b/packages/core-utils/src/types/type-guards.ts @@ -3,13 +3,7 @@ import { JsonRpcErrorResponse, JsonRpcRequest, JsonRpcResponse, -} from './transport.interface' -import { Range } from './range' -import { ZERO, add0x } from '../app' -import { Address } from 'cluster' - -/* External Imports */ -import { ethers } from 'ethers-v4' +} from './transport.types' /** * Checks if a JSON-RPC response is an error response. @@ -34,34 +28,3 @@ export const isJsonRpcRequest = (request: any): request is JsonRpcRequest => { request.jsonrpc === '2.0' ) } - -/** - * Validates that the provided Range has all of the necessary fields populated with valid data. - * - * @param range the Range to inspect - * @returns true if valid, false otherwise - */ -export const isValidRange = (range: any): range is Range => { - return ( - !!range && - !!range.start && - !!range.end && - range.start.gte(ZERO) && - range.end.gt(range.start) - ) -} - -/** - * Validates that the provided address hex string is the right length. - * - * @param address the string which is supposed to be a 20-byte address. - * @returns true if valid address hex string, false otherwise - */ -export const isValidHexAddress = (address: any): address is Address => { - try { - ethers.utils.getAddress(add0x(address)) - return true - } catch { - return false - } -} diff --git a/packages/core-utils/test/app/buffer.spec.ts b/packages/core-utils/test/app/buffer.spec.ts deleted file mode 100644 index 1882b8b886bb..000000000000 --- a/packages/core-utils/test/app/buffer.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import '../setup' -import { bufferUtils } from '../../src/app' - -describe('Buffer Utils tests', () => { - describe('numberToBufferPacked', () => { - it('works for single-byte small number', () => { - const buf: Buffer = bufferUtils.numberToBufferPacked(2) - - buf.should.eql(Buffer.from('02', 'hex')) - }) - - it('works for single-byte big number', () => { - const buf: Buffer = bufferUtils.numberToBufferPacked(22) - - buf.should.eql(Buffer.from('16', 'hex')) - }) - - it('works for multi-byte big number', () => { - const buf: Buffer = bufferUtils.numberToBufferPacked(333) - - buf.should.eql(Buffer.from('014d', 'hex')) - }) - }) -}) diff --git a/packages/core-utils/test/app/contract-deployment.spec.ts b/packages/core-utils/test/app/contract-deployment.spec.ts deleted file mode 100644 index f8b1a4fd4ec8..000000000000 --- a/packages/core-utils/test/app/contract-deployment.spec.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { should } from '../setup' - -/* External Imports */ -import { createMockProvider, getWallets } from 'ethereum-waffle' -import { ContractFactory, Wallet } from 'ethers-v4' -import { Provider } from 'ethers-v4/providers' - -/* Internal Imports */ -import { getDeployedContractAddress } from '../../src/app' - -const dummyContractFactory = (wallet): ContractFactory => { - // Generated by Remix - const emptyContractAbi = ['constructor()'] - const emptyContractBytecode = - '6080604052348015600f57600080fd5b50606c80601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806326121ff014602d575b600080fd5b60336035565b005b56fea265627a7a723158205942af3e61207ff648ab4e4c2c1239bc0adf44f657e8436f08e6ea2ff336d38a64736f6c63430005100032' - - return new ContractFactory(emptyContractAbi, emptyContractBytecode, wallet) -} - -describe('Contract deployment', () => { - let provider: Provider - let wallet: Wallet - - beforeEach(async () => { - provider = createMockProvider() - wallet = getWallets(provider)[0] - }) - - describe('getDeployedContractAddress', () => { - it('should return the first deployed contract if one has been deployed', async () => { - const factory = dummyContractFactory(wallet) - const contract = await factory.deploy() - await contract.deployed() - const result = await getDeployedContractAddress( - 0, - provider, - wallet.address - ) - result.should.eq(contract.address) - }) - - it('should return null if the address has not yet deployed a contract', async () => { - const factory = dummyContractFactory(wallet) - const result = await getDeployedContractAddress( - 0, - provider, - wallet.address - ) - should.not.exist(result) - }) - }) -}) diff --git a/packages/core-utils/test/app/log.spec.ts b/packages/core-utils/test/app/log.spec.ts deleted file mode 100644 index 1ffe4d906b85..000000000000 --- a/packages/core-utils/test/app/log.spec.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { getLogger, logError } from '../../src/app' -import { Logger } from '../../src/types' - -let lastDebug -const FakeDebug = (identifier) => { - return (...logs: any[]) => { - lastDebug = `${identifier} ${logs.join(' ')}` - } -} - -describe('Logger Tests', () => { - let log: Logger - beforeEach(() => { - log = getLogger('derp', true, FakeDebug) - lastDebug = undefined - }) - - it('logs single line non-error', () => { - const logString = '\n test \n' - logString - .indexOf('\n') - .should.eq(0, 'Cannot find newline when it should be at pos 0') - - lastDebug = undefined - log.debug(logString) - lastDebug.indexOf('\n').should.equal(-1, 'Log line has multiple lines!') - }) - - it('logs single line error', () => { - const e = new Error() - e.stack.indexOf('\n').should.be.gt(-1, 'No new line in stack trace!') - - lastDebug = undefined - logError(log, `some error`, e) - lastDebug.indexOf('\n').should.eq(-1, 'Stack trace has new line!') - }) - - it('logs objects in single line', () => { - const obj = { - test: 'yes', - question: 'answer', - bools: true, - numbers: 735, - somethingVeryLong: - 'ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok', - } - lastDebug = undefined - log.debug(obj) - lastDebug.indexOf('\n').should.equal(-1, 'Log line has multiple lines!') - }) - - it('logs many different things in single line', () => { - const obj = { - test: 'yes', - question: 'answer', - bools: true, - numbers: 735, - somethingVeryLong: - 'ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok', - } - const e = new Error('some error here') - const string = '\n test \n' - lastDebug = undefined - log.debug(obj, e, string) - lastDebug.indexOf('\n').should.equal(-1, 'Log line has multiple lines!') - }) -}) diff --git a/packages/core-utils/test/app/misc.spec.ts b/packages/core-utils/test/app/misc.spec.ts deleted file mode 100644 index 2660e571cb48..000000000000 --- a/packages/core-utils/test/app/misc.spec.ts +++ /dev/null @@ -1,134 +0,0 @@ -import '../setup' - -/* Internal Imports */ -import { - sleep, - remove0x, - add0x, - getNullString, - isObject, - hexStrToBuf, - TestUtils, -} from '../../src/app' - -describe('Miscellaneous Utils', () => { - describe('sleep', () => { - it('should sleep for a certain number of ms', async () => { - const start = Date.now() - await sleep(100) - const end = Date.now() - const diff = end - start - - diff.should.be.greaterThan(95) - diff.should.be.lessThan(150) - }) - }) - - describe('remove0x', () => { - it('should remove 0x from a string', () => { - const before = '0x123' - const after = remove0x(before) - - after.should.equal('123') - }) - - it('should do nothing for a string without 0x', () => { - const before = '123' - const after = remove0x(before) - - after.should.equal(before) - }) - }) - - describe('add0x', () => { - it('should add 0x to a string', () => { - const before = '123' - const after = add0x(before) - - after.should.equal('0x123') - }) - - it('should do nothing for a string with 0x', () => { - const before = '0x123' - const after = add0x(before) - - after.should.equal(before) - }) - }) - - describe('isObject', () => { - it('should correctly identify an object', () => { - const obj = { hello: 'world' } - - isObject(obj).should.be.true - }) - - it('should not identify null as an object', () => { - isObject(null).should.be.false - }) - - it('should not identify a non-object as an object', () => { - const notobj = 'hello' - - isObject(notobj).should.be.false - }) - }) - - describe('getNullString', () => { - it('should return a length N string', () => { - const nullString = getNullString(10) - - nullString.should.equal('0x0000000000') - }) - }) - - describe('hexStrToBuf', () => { - it('works for regular hex strings', () => { - const num: number = 1_234_567_890 - const str: string = num.toString(16) - - const expected = Buffer.alloc(4) - expected.writeInt32BE(num, 0) - - const buff: Buffer = hexStrToBuf(str) - expected.should.eql(buff, 'Buffer mismatch!') - }) - - it('works with 0x hex strings', () => { - const num: number = 1_234_567_890 - const str: string = num.toString(16) - - const expected = Buffer.alloc(4) - expected.writeInt32BE(num, 0) - - const buff: Buffer = hexStrToBuf(add0x(str)) - expected.should.eql(buff, 'Buffer mismatch!') - }) - - it('works with empty', () => { - const expected = Buffer.alloc(0) - - const buff: Buffer = hexStrToBuf('') - expected.should.eql(buff, 'Buffer mismatch!') - }) - - it('works with empty 0x', () => { - const expected = Buffer.alloc(0) - - const buff: Buffer = hexStrToBuf('0x') - expected.should.eql(buff, 'Buffer mismatch!') - }) - - it('throws on non-hex strings', () => { - TestUtils.assertThrows(() => hexStrToBuf('abcdefg'), RangeError) - TestUtils.assertThrows(() => hexStrToBuf('z'), RangeError) - }) - - it('throws on odd digits hex strings', () => { - TestUtils.assertThrows(() => hexStrToBuf('0x1'), RangeError) - TestUtils.assertThrows(() => hexStrToBuf('0x012'), RangeError) - TestUtils.assertThrows(() => hexStrToBuf('1'), RangeError) - TestUtils.assertThrows(() => hexStrToBuf('012'), RangeError) - }) - }) -}) diff --git a/packages/core-utils/test/app/number.spec.ts b/packages/core-utils/test/app/number.spec.ts deleted file mode 100644 index 6f3d188368c4..000000000000 --- a/packages/core-utils/test/app/number.spec.ts +++ /dev/null @@ -1,423 +0,0 @@ -import '../setup' -import { BigNumber, ZERO, ONE, TWO } from '../../src/app' -import assert from 'assert' - -describe('BigNumber', () => { - describe('constructor', () => { - it('should handle number', () => { - const num: BigNumber = new BigNumber(10) - assert(num.toNumber() === 10, 'Could not construct BigNumber with number') - }) - - it('should handle base10 string', () => { - const num: BigNumber = new BigNumber('10', 10) - assert(num.toNumber() === 10, 'Could not construct BigNumber with number') - }) - - it('should handle hex string', () => { - const num: BigNumber = new BigNumber('a', 'hex') - assert(num.toNumber() === 10, 'Could not construct BigNumber with number') - }) - - it('should handle BigNumber', () => { - const num: BigNumber = new BigNumber(new BigNumber(10)) - assert(num.toNumber() === 10, 'Could not construct BigNumber with number') - }) - - it('should handle Buffer', () => { - const num: BigNumber = new BigNumber(new BigNumber(10).toBuffer()) - assert(num.toNumber() === 10, 'Could not construct BigNumber with number') - }) - }) - - describe('min', () => { - it('first is less', () => { - assert(BigNumber.min(ZERO, ONE).eq(ZERO)) - }) - - it('second is less', () => { - assert(BigNumber.min(ONE, ZERO).eq(ZERO)) - }) - - it('they are equal', () => { - assert(BigNumber.min(ZERO, ZERO).eq(ZERO)) - }) - }) - - describe('max', () => { - it('first is greater', () => { - assert(BigNumber.max(ONE, ZERO).eq(ONE)) - }) - - it('second is greater', () => { - assert(BigNumber.max(ZERO, ONE).eq(ONE)) - }) - - it('they are equal', () => { - assert(BigNumber.max(ZERO, ZERO).eq(ZERO)) - }) - }) - - describe('isBigNumber', () => { - it('test BigNum', () => { - assert(BigNumber.isBigNumber(ONE)) - }) - - it('test number', () => { - assert(!BigNumber.isBigNumber(1)) - }) - - it('test undefined', () => { - assert(!BigNumber.isBigNumber(undefined)) - }) - - it('test null', () => { - assert(!BigNumber.isBigNumber(null)) - }) - }) - - describe('clone', () => { - it('test different memory address', () => { - const clone: BigNumber = ONE.clone() - assert(clone.eq(ONE) && clone !== ONE) - }) - }) - - describe('toString', () => { - it('test base 10', () => { - assert(new BigNumber(11).toString(10) === '11') - assert(new BigNumber(-11).toString(10) === '-11') - }) - - it('test hex', () => { - assert(new BigNumber(11).toString(16) === 'b') - assert(new BigNumber(11).toString('hex') === 'b') - assert(new BigNumber(-11).toString(16) === '-b') - assert(new BigNumber(-11).toString('hex') === '-b') - }) - }) - - describe('toJSON', () => { - it('test positive and negative', () => { - assert(new BigNumber(11).toJSON() === 'b') - assert(new BigNumber(-11).toJSON() === '-b') - }) - }) - - describe('toNumber', () => { - it('test outputs correct number', () => { - assert(new BigNumber(27).toNumber() === 27) - }) - }) - - describe('add', () => { - it('test add positive', () => { - assert(ONE.add(ONE).eq(new BigNumber(2))) - }) - - it('test add negative', () => { - assert(ONE.add(new BigNumber(-1)).eq(ZERO)) - }) - }) - - describe('sub', () => { - it('test subtract positive', () => { - assert(ONE.sub(ONE).eq(ZERO)) - }) - - it('test subtract negative', () => { - assert(ZERO.sub(new BigNumber(-1)).eq(ONE)) - }) - }) - - describe('mul', () => { - it('test multiply positive', () => { - assert(new BigNumber(10).mul(new BigNumber(5)).eq(new BigNumber(50))) - }) - - it('test multiply negative', () => { - assert(new BigNumber(10).mul(new BigNumber(-5)).eq(new BigNumber(-50))) - }) - }) - - describe('div', () => { - it('test divide positive', () => { - assert(new BigNumber(10).div(new BigNumber(5)).eq(new BigNumber(2))) - }) - - it('test divide negative', () => { - assert(new BigNumber(10).div(new BigNumber(-5)).eq(new BigNumber(-2))) - }) - - it('test divide by 0 throws', () => { - try { - ONE.div(ZERO) - assert(false, 'Divide by negative should have thrown') - } catch (e) { - assert(true, 'This should happen') - } - }) - }) - - describe('divRound', () => { - it('test divide & round down positive', () => { - assert(new BigNumber(10).divRound(new BigNumber(3)).eq(new BigNumber(3))) - }) - - it('test divide & round down negative', () => { - assert( - new BigNumber(10).divRound(new BigNumber(-3)).eq(new BigNumber(-3)) - ) - }) - - it('test divide & round up positive', () => { - assert(new BigNumber(10).divRound(new BigNumber(9)).eq(new BigNumber(1))) - }) - - it('test divide & round up negative', () => { - assert( - new BigNumber(10).divRound(new BigNumber(-9)).eq(new BigNumber(-1)) - ) - }) - - it('test divide by 0 throws', () => { - try { - ONE.divRound(ZERO) - assert(false, 'Divide by negative should have thrown') - } catch (e) { - assert(true, 'This should happen') - } - }) - }) - - describe('pow', () => { - it('test positive power', () => { - assert(new BigNumber(10).pow(new BigNumber(3)).eq(new BigNumber(1000))) - }) - - it('test negative power, positive result', () => { - assert(new BigNumber(-10).pow(new BigNumber(3)).eq(new BigNumber(-1000))) - }) - - it('test negative power, negative result', () => { - assert(new BigNumber(-10).pow(new BigNumber(2)).eq(new BigNumber(100))) - }) - - // None of these work because bn.js does not support them - // it('test positive fractional power', () => { - // console.log(`100^-2 = ${new BigNumber(100).pow(new BigNumber(.5)).toString()}`) - // assert(new BigNumber(100).pow(new BigNumber(.5)).eq(new BigNumber(10))) - // }) - // - // it('test negative power', () => { - // assert(new BigNumber(100).pow(new BigNumber(-2)).eq(new BigNumber(0.0001))) - // }) - // - // it('test negative fractional power', () => { - // assert(new BigNumber(100).pow(new BigNumber(-.5)).eq(new BigNumber(0.1))) - // }) - }) - - describe('mod', () => { - it('test positive mod', () => { - assert(new BigNumber(10).mod(new BigNumber(3)).eq(ONE)) - }) - }) - - describe('modNum', () => { - it('test positive mod', () => { - assert(new BigNumber(10).modNum(3).eq(ONE)) - }) - }) - - describe('abs', () => { - it('test abs positive', () => { - assert(new BigNumber(10).abs().eq(new BigNumber(10))) - }) - - it('test abs negative', () => { - assert(new BigNumber(-10).abs().eq(new BigNumber(10))) - }) - }) - - describe('xor', () => { - it('works for 0', () => { - assert(ZERO.xor(ONE).equals(ONE)) - assert(ZERO.xor(ZERO).equals(ZERO)) - }) - - it('works for 1', () => { - assert(ONE.xor(ONE).equals(ZERO)) - assert(ONE.xor(ZERO).equals(ONE)) - }) - - it('works for 2', () => { - assert(TWO.xor(ZERO).equals(TWO)) - assert(TWO.xor(ONE).equals(new BigNumber(3))) - assert(TWO.xor(TWO).equals(ZERO)) - }) - }) - - describe('and', () => { - it('works for 0', () => { - assert(ZERO.and(ONE).equals(ZERO)) - assert(ZERO.and(ZERO).equals(ZERO)) - }) - - it('works for 1', () => { - assert(ONE.and(ZERO).equals(ZERO)) - assert(ONE.and(ONE).equals(ONE)) - assert(ONE.and(TWO).equals(ZERO)) - }) - - it('works for 2', () => { - assert(TWO.and(ZERO).equals(ZERO)) - assert(TWO.and(ONE).equals(ZERO)) - assert(TWO.and(TWO).equals(TWO)) - }) - }) - - describe('shiftLeft', () => { - it('works for 0', () => { - assert(ZERO.shiftLeft(0).equals(ZERO)) - assert(ZERO.shiftLeft(1).equals(ZERO)) - assert(ZERO.shiftLeft(5).equals(ZERO)) - }) - - it('works for 1', () => { - assert(ONE.shiftLeft(0).equals(ONE)) - assert(ONE.shiftLeft(1).equals(TWO)) - assert(ONE.shiftLeft(2).equals(new BigNumber(4))) - }) - - it('works for 2', () => { - assert(TWO.shiftLeft(0).equals(TWO)) - assert(TWO.shiftLeft(1).equals(new BigNumber(4))) - }) - }) - - describe('shiftRight', () => { - it('works for 0', () => { - assert(ZERO.shiftRight(0).equals(ZERO)) - assert(ZERO.shiftRight(1).equals(ZERO)) - assert(ZERO.shiftRight(5).equals(ZERO)) - }) - - it('works for 1', () => { - assert(ONE.shiftRight(0).equals(ONE)) - assert(ONE.shiftRight(1).equals(ZERO)) - assert(ONE.shiftRight(2).equals(ZERO)) - }) - - it('works for 2', () => { - assert(TWO.shiftRight(0).equals(TWO)) - assert(TWO.shiftRight(1).equals(ONE)) - assert(TWO.shiftRight(2).equals(ZERO)) - }) - }) - - describe('gt', () => { - it('test positive', () => { - assert(new BigNumber(10).gt(new BigNumber(9))) - assert(!new BigNumber(9).gt(new BigNumber(10))) - assert(!new BigNumber(10).gt(new BigNumber(10))) - }) - - it('test negative', () => { - assert(new BigNumber(10).gt(new BigNumber(-11))) - assert(!new BigNumber(-11).gt(new BigNumber(10))) - }) - - it('test negatives', () => { - assert(new BigNumber(-10).gt(new BigNumber(-11))) - assert(!new BigNumber(-11).gt(new BigNumber(-10))) - assert(!new BigNumber(-10).gt(new BigNumber(-10))) - }) - }) - - describe('gte', () => { - it('test positive', () => { - assert(new BigNumber(10).gte(new BigNumber(9))) - assert(!new BigNumber(9).gte(new BigNumber(10))) - assert(new BigNumber(10).gte(new BigNumber(10))) - }) - - it('test negative', () => { - assert(new BigNumber(10).gte(new BigNumber(-11))) - assert(!new BigNumber(-11).gte(new BigNumber(10))) - }) - - it('test negatives', () => { - assert(new BigNumber(-10).gte(new BigNumber(-11))) - assert(!new BigNumber(-11).gte(new BigNumber(-10))) - assert(new BigNumber(-10).gte(new BigNumber(-10))) - }) - }) - - describe('lt', () => { - it('test positive', () => { - assert(!new BigNumber(10).lt(new BigNumber(9))) - assert(new BigNumber(9).lt(new BigNumber(10))) - assert(!new BigNumber(10).lt(new BigNumber(10))) - }) - - it('test negative', () => { - assert(!new BigNumber(10).lt(new BigNumber(-11))) - assert(new BigNumber(-11).lt(new BigNumber(10))) - }) - - it('test negatives', () => { - assert(!new BigNumber(-10).lt(new BigNumber(-11))) - assert(new BigNumber(-11).lt(new BigNumber(-10))) - assert(!new BigNumber(-10).lt(new BigNumber(-10))) - }) - }) - - describe('lte', () => { - it('test positive', () => { - assert(!new BigNumber(10).lte(new BigNumber(9))) - assert(new BigNumber(9).lte(new BigNumber(10))) - assert(new BigNumber(10).lte(new BigNumber(10))) - }) - - it('test negative', () => { - assert(!new BigNumber(10).lte(new BigNumber(-11))) - assert(new BigNumber(-11).lte(new BigNumber(10))) - }) - - it('test negatives', () => { - assert(!new BigNumber(-10).lte(new BigNumber(-11))) - assert(new BigNumber(-11).lte(new BigNumber(-10))) - assert(new BigNumber(-10).lte(new BigNumber(-10))) - }) - }) - - describe('eq', () => { - it('test positive', () => { - assert(new BigNumber(10).eq(new BigNumber(10))) - assert(!new BigNumber(9).eq(new BigNumber(10))) - }) - - it('test negative', () => { - assert(new BigNumber(-10).eq(new BigNumber(-10))) - assert(!new BigNumber(-11).eq(new BigNumber(-10))) - }) - }) - - describe('compare', () => { - it('test first is less', () => { - assert(new BigNumber(10).compare(new BigNumber(11)) === -1) - assert(new BigNumber(-11).compare(new BigNumber(-10)) === -1) - }) - - it('test second is less', () => { - assert(new BigNumber(11).compare(new BigNumber(10)) === 1) - assert(new BigNumber(-10).compare(new BigNumber(-11)) === 1) - }) - - it('test equal', () => { - assert(new BigNumber(10).compare(new BigNumber(10)) === 0) - assert(new BigNumber(-10).compare(new BigNumber(-10)) === 0) - }) - }) -}) diff --git a/packages/core-utils/test/app/time-bucketed-counter.spec.ts b/packages/core-utils/test/app/time-bucketed-counter.spec.ts deleted file mode 100644 index 36aec5e3b637..000000000000 --- a/packages/core-utils/test/app/time-bucketed-counter.spec.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { sleep, TimeBucketedCounter } from '../../src/app' - -describe('Time Bucketed Counter', () => { - let counter: TimeBucketedCounter - - beforeEach(() => { - counter = new TimeBucketedCounter(4000, 5) - }) - - it('accurately increments within time period, no sleeping', () => { - let res: number = counter.increment() - res.should.equal(1, 'Incorrect counter after increment 1') - res.should.equal(counter.getTotal(), 'Incorrect total!') - - res = counter.increment() - res.should.equal(2, 'Incorrect counter after increment 2') - res.should.equal(counter.getTotal(), 'Incorrect total!') - - res = counter.increment() - res.should.equal(3, 'Incorrect counter after increment 3') - res.should.equal(counter.getTotal(), 'Incorrect total!') - }) - - it('accurately increments within time period', async () => { - let res: number = counter.increment() - res.should.equal(1, 'Incorrect counter after increment 1') - res.should.equal(counter.getTotal(), 'Incorrect total!') - - await sleep(800) - res = counter.increment() - res.should.equal(2, 'Incorrect counter after increment 2') - res.should.equal(counter.getTotal(), 'Incorrect total!') - - await sleep(1600) - res = counter.increment() - res.should.equal(3, 'Incorrect counter after increment 3') - res.should.equal(counter.getTotal(), 'Incorrect total!') - }) - - it('accurately increments within time period', async () => { - let res: number = counter.increment() - res.should.equal(1, 'Incorrect counter after increment 1') - res.should.equal(counter.getTotal(), 'Incorrect total!') - - await sleep(800) - res = counter.increment() - res.should.equal(2, 'Incorrect counter after increment 2') - res.should.equal(counter.getTotal(), 'Incorrect total!') - - await sleep(1600) - res = counter.increment() - res.should.equal(3, 'Incorrect counter after increment 3') - res.should.equal(counter.getTotal(), 'Incorrect total!') - }) - - it('cycles out old counts, one increment', async () => { - let res = counter.increment() - res.should.equal(1, 'Incorrect counter after increment 1') - res.should.equal(counter.getTotal(), 'Incorrect total!') - - await sleep(4000) - res = counter.getTotal() - res.should.equal(0, 'Incorrect count!') - }).timeout(7_500) - - it('accurately cycles out old counts, multiple increments', async () => { - counter.increment() - counter.increment() - let res: number = counter.increment() - res.should.equal(3, 'Incorrect counter after increment 1') - res.should.equal(counter.getTotal(), 'Incorrect total!') - - await sleep(800) - res = counter.increment() - res.should.equal(4, 'Incorrect counter after increment 2') - res.should.equal(counter.getTotal(), 'Incorrect total!') - - await sleep(2400) - res = counter.increment() - res.should.equal(5, 'Incorrect counter after increment 3') - res.should.equal(counter.getTotal(), 'Incorrect total!') - - await sleep(800) - counter - .getTotal() - .should.equal(2, 'First 3 increments did not cycle out properly!') - res = counter.increment() - res.should.equal(3, 'Incorrect counter after increment 3') - res.should.equal(counter.getTotal(), 'Incorrect total!') - }).timeout(7_500) - - it('accurately cycles out old counts, over time', async () => { - for (let totalIncrements = 0; totalIncrements < 15; totalIncrements++) { - const res = counter.increment() - const expected = totalIncrements >= 3 ? 4 : totalIncrements + 1 - res.should.equal( - expected, - `Incorrect increment result! Total increments: ${totalIncrements}` - ) - await sleep(1000) - } - }).timeout(20_000) -}) diff --git a/packages/core-utils/test/app/transport/json-rpc-server.spec.ts b/packages/core-utils/test/app/transport/json-rpc-server.spec.ts deleted file mode 100644 index bad0f1993b69..000000000000 --- a/packages/core-utils/test/app/transport/json-rpc-server.spec.ts +++ /dev/null @@ -1,29 +0,0 @@ -import '../../setup' - -import { SimpleServer } from '../../../src/app/transport/server' -import { SimpleClient } from '../../../src/app/transport/client' - -describe('Simple JSON RPC Server', () => { - it('should send a request to a server and then respond', async () => { - // Set up a server with a single method "greeter" - const greeter = (name) => { - return 'Hello ' + name - } - const server = new SimpleServer( - { - greeter, - }, - 'localhost', - 3000 - ) - await server.listen() - - // Set up a client which will call greeter with the name "World!" - const client = new SimpleClient('http://127.0.0.1:3000') - const res = await client.handle('greeter', 'World!') - res.should.equal('Hello World!') - - // Close the server - await server.close() - }) -}) diff --git a/packages/core-utils/test/app/utils.spec.ts b/packages/core-utils/test/app/utils.spec.ts deleted file mode 100644 index 1e30f7e9f8c3..000000000000 --- a/packages/core-utils/test/app/utils.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import '../setup' - -/* Internal Imports */ -import { keccak256 } from '../../src/app' - -describe('Ethereum Utils', () => { - describe('keccak256', () => { - it('should return the keccak256 hash of a value', () => { - const value = Buffer.from('1234').toString('hex') - const hash = keccak256(value) - - const expected = - '387a8233c96e1fc0ad5e284353276177af2186e7afa85296f106336e376669f7' - - hash.should.equal(expected) - }) - - it('should return the keccak256 of the empty string', () => { - const value = Buffer.from('').toString('hex') - const hash = keccak256(value) - - const expected = - 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470' - hash.should.equal(expected) - }) - }) -}) diff --git a/packages/core-utils/test/setup.ts b/packages/core-utils/test/setup.ts deleted file mode 100644 index 2e0346c8f9ac..000000000000 --- a/packages/core-utils/test/setup.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* External Imports */ -import fs = require('fs') -import path = require('path') -import chai = require('chai') -import chaiAsPromised = require('chai-as-promised') - -/* Internal Imports */ -import { rootPath } from '../index' - -chai.use(chaiAsPromised) -const should = chai.should() - -const testArtifactsDir = path.join(rootPath, 'test', 'artifacts.test.tmp') -const testRootPath = path.join(testArtifactsDir, (+new Date()).toString()) - -// If these directories don't exist, create them. -fs.mkdirSync(testArtifactsDir, { recursive: true }) -fs.mkdirSync(testRootPath, { recursive: true }) - -export { should } -export { testRootPath as rootPath } diff --git a/packages/gas-profiler/README.md b/packages/gas-profiler/README.md deleted file mode 100644 index 04d8e10e1e05..000000000000 --- a/packages/gas-profiler/README.md +++ /dev/null @@ -1,147 +0,0 @@ -# `gas-profiler` - -`gas-profiler` is a `Node.js` utility for getting more insight into the gas usage of contract executions. -`gas-profiler` can be used as a command-line application or programmatically as an import to other `Node.js` applications. - -## Installation - -### Node.js - -`gas-profiler` can be easily installed via `yarn` or `npm`: - -```sh -yarn add @optimism-monorepo/gas-profiler --save -``` - -```sh -npm install @optimism-monorepo/gas-profiler --save -``` - -## Usage - -### CLI - -When installed globally, `gas-profiler` can be used as a command-line application: - -``` -> @optimism-monorepo/gas-profiler --help -usage: @optimism-monorepo/gas-profiler [-h] -c CONTRACTJSONPATH [-s CONTRACTSOURCEPATH] -m METHOD - [-p PARAMS [PARAMS ...]] [-t] - - -Smart contract gas profiler - -Optional arguments: - -h, --help Show this help message and exit. - -c CONTRACTJSONPATH, --contract-json CONTRACTJSONPATH - Path to the contract's compiled JSON file. - -s CONTRACTSOURCEPATH, --contract-source CONTRACTSOURCEPATH - (Optional) Path to the contract's source file. - -m METHOD, --method METHOD - Contract method to call - -p PARAMS [PARAMS ...], --params PARAMS [PARAMS ...] - (Optional) Contract method parameters - -t, --trace (Optional) Generates a full gas trace. Source file must - be specified. -``` - -`[-c, --contract-json]` and `[-m, --method]` are both required arguments. All other arguments are optional. - -If the `[-t, --trace]` flag is enabled, `[-s, --contract-source]` **must** be provided. - -### Node.js - -`gas-profiler` can also be used as an import to `Node.js` applications: - -```ts -import * as fs from 'fs'; -import { GasProfiler } from '@optimism-monorepo/gas-profiler'; - -const myFunction = async () => { - const profiler = new GasProfiler(); - - // Must be called before running any profiles. - await profiler.init(); - - // Load your contract JSON file. - const contractJson = JSON.parse(fs.readFileSync('./path/to/Contract.json', 'utf8')); - - const profile = await profiler.execute(contractJson, { - method: 'myContractFunction', - params: [1234, 'hello', 'wow!'], - }); - - console.log('Total gas used: ', profile].gasUsed); - - // Shut down the ganache instance. - await profiler.kill(); -} -``` - -## API - -### GasProfiler - -#### `init` -```ts -init(options?: GasProfilerOptions): Promise -``` - -##### Description -Connects the profiler to an Ethereum node. Must be called at least once before any profiles can be executed. If no options are provided, `init` will also spin up a `ganache` instance on a random open port. - -##### Parameters -* `options?: { provider: ethers.providers.Provider, wallet: ethers.Wallet }` - Custom `ethers` provider/wallet to use for profiling. If neither is provided, will also default to using `ganache`. - -#### `kill` -```ts -kill(): Promise -``` - -##### Description -Shuts down the profiler. Necessary only if no options were provided and a `ganache` instance was created. - -#### `profile` -```ts -profile(target: ContractJson, sourcePath: string, parameters: ProfileParameters): Promise -``` - -##### Description -Generates a full gas profile for a given contract execution. - -##### Parameters -* `target: ContractJson` - JSON `Solidity` compiler output for the target contract. -* `sourcePath: string` - Path to the `.sol` file for the target contract. -* `parameters: { method: string, params: any[] }` - Parameters for the contract execution. - -##### Returns -* `ProfileResult` - Result of the profile execution, including line-by-line gas usage. - -#### `execute` -```ts -execute(target: ContractJson, parameters: ProfileParameters): Promise -``` - -##### Description -Executes a contract method and returns total gas usage. Does **not** generate a full profile. - -##### Parameters -* `target: ContractJson` - JSON `Solidity` compiler output for the target contract. -* `parameters: { method: string, params: any[] }` - Parameters for the contract execution. - -##### Returns -* `ProfileResult` - Result of the profile execution, **not including** line-by-line gas usage. - -#### `prettify` -```ts -prettify(trace: CodeTrace): string -``` - -##### Description -Prettifies a code trace into a nice line-by-line string. - -##### Parameters -* `trace: CodeTrace` - Trace to prettify. - -##### Returns -* `string` - Prettified trace, ready for `console.log`. \ No newline at end of file diff --git a/packages/gas-profiler/bin/index.ts b/packages/gas-profiler/bin/index.ts deleted file mode 100644 index 6f5e04231f42..000000000000 --- a/packages/gas-profiler/bin/index.ts +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env node - -import * as fs from 'fs' -import { ArgumentParser, Const } from 'argparse' -import { GasProfiler } from '../src/gas-profiler' - -const parser = new ArgumentParser({ - addHelp: true, - description: 'Smart contract gas profiler', -}) - -parser.addArgument(['-c', '--contract-json'], { - help: `Path to the contract's compiled JSON file.`, - required: true, - dest: 'contractJsonPath', -}) - -parser.addArgument(['-s', '--contract-source'], { - help: `(Optional) Path to the contract's source file.`, - dest: 'contractSourcePath', -}) - -parser.addArgument(['-m', '--method'], { - help: `Contract method to call`, - required: true, -}) - -parser.addArgument(['-p', '--params'], { - help: `(Optional) Contract method parameters`, - nargs: Const.ONE_OR_MORE, - defaultValue: [], -}) - -parser.addArgument(['-t', '--trace'], { - action: 'storeTrue', - help: `(Optional) Generates a full gas trace. Source file must be specified.`, - dest: 'trace', -}) - -const readJson = (filePath: string): any => { - return JSON.parse(fs.readFileSync(filePath, 'utf8')) -} - -const main = async () => { - const args = parser.parseArgs() - const contract = readJson(args.contractJsonPath) - - const profiler = new GasProfiler() - await profiler.init() - - if (args.trace) { - const profile = await profiler.profile(contract, args.contractSourcePath, { - method: args.method, - params: args.params, - }) - const pretty = profiler.prettify(profile.trace) - console.log() - console.log(pretty) - console.log('Total gas used: ', profile.gasUsed) - } else { - const profile = await profiler.execute(contract, { - method: args.method, - params: args.params, - }) - console.log('Total gas used: ', profile.gasUsed) - } - - await profiler.kill() -} - -main() diff --git a/packages/gas-profiler/index.ts b/packages/gas-profiler/index.ts deleted file mode 100644 index 6f39cd49b29e..000000000000 --- a/packages/gas-profiler/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './src' diff --git a/packages/gas-profiler/package.json b/packages/gas-profiler/package.json deleted file mode 100644 index 7ae03deb6b6b..000000000000 --- a/packages/gas-profiler/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "@eth-optimism/gas-profiler", - "version": "0.0.1-alpha.1", - "description": "Smart contract gas profiler", - "main": "build/index.js", - "files": [ - "build/**/*.js" - ], - "bin": "./bin/index.js", - "scripts": { - "all": "yarn clean && yarn build && yarn test && yarn fix && yarn lint", - "lint": "tslint --format stylish --project .", - "fix": "prettier --config ../../prettier-config.json --write \"index.ts\" \"{deploy,test,src,bin}/**/*.ts\"", - "build": "tsc -p .", - "clean": "rimraf build/", - "deploy:rollup-chain": "yarn build && node ./build/deploy/rollup-chain.js" - }, - "engines": { - "node": "10" - }, - "keywords": [ - "optimistic", - "rollup", - "group", - "ethereum", - "smart", - "contract" - ], - "author": "Optimism", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/ethereum-optimism/optimism-monorepo.git" - }, - "publishConfig": { - "access": "public" - }, - "devDependencies": { - "@types/chai": "^4.1.7", - "@types/mocha": "^5.2.6", - "@types/node": "^11.11.3", - "chai": "^4.2.0", - "mocha": "^6.0.2", - "rimraf": "^2.6.3", - "typescript": "^3.3.3333" - }, - "dependencies": { - "@types/argparse": "^1.0.38", - "argparse": "^1.0.10", - "ethers": "^4.0.37", - "ganache-core": "^2.10.2", - "get-port": "^5.1.1", - "web3-core": "^1.2.9" - } -} diff --git a/packages/gas-profiler/src/gas-profiler.ts b/packages/gas-profiler/src/gas-profiler.ts deleted file mode 100644 index 4dc6bf244b22..000000000000 --- a/packages/gas-profiler/src/gas-profiler.ts +++ /dev/null @@ -1,195 +0,0 @@ -import { ethers, Wallet, Contract } from 'ethers' -import { Provider, JsonRpcProvider } from 'ethers/providers' -import { keccak256, FunctionDescription } from 'ethers/utils' - -import { CodeTrace } from './interfaces/trace.interface' -import { ContractJson } from './interfaces/contract.interface' -import { - getTransactionTrace, - prettifyTransactionTrace, -} from './helpers/tx-trace' -import { getToolbox, getInterface, Toolbox } from './helpers/utils' - -interface ProfileResult { - hash: string - gasUsed: number - trace?: CodeTrace -} - -interface ProfileParameters { - method: string - params: any[] -} - -interface GasProfilerOptions { - provider: Provider - wallet: Wallet -} - -/** - * Utility for generating gas profiles of contract executions. - */ -export class GasProfiler { - private _ready: boolean - private _toolbox: Toolbox - private _cache: { [hash: string]: Contract } = {} - - /** - * Initializes the profiler. Must be called at least once. - * @param options Options to pass to the profiler. - */ - public async init(options?: GasProfilerOptions): Promise { - if (this._ready) { - return - } - - this._toolbox = options ? options : await getToolbox() - this._ready = true - } - - /** - * Shuts down the profiler if using a temporary ganache instance. - */ - public async kill(): Promise { - if (this._toolbox.ganache && this._toolbox.ganache.running) { - await this._toolbox.ganache.stop() - } - } - - /** - * Generates a profile for a given contract execution. - * @param target compiled contract JSON object. - * @param sourcePath path to the contract source file. - * @param parameters parameter defining the execution. - * @returns a profile for the execution. - */ - public async profile( - target: ContractJson, - sourcePath: string, - parameters: ProfileParameters - ): Promise { - this._checkReady() - - const result = await this._runTransaction(target, parameters) - const trace = await getTransactionTrace( - this._toolbox.provider as JsonRpcProvider, - sourcePath, - target, - result.hash - ) - - return { - ...result, - trace, - } - } - - /** - * Executes a set of given method calls and returns gas used and the result. - * Does not generate a full profile. - * @param target compiled contract JSON object. - * @param parameters parameters defining the execution. - * @returns gas used and result of the execution. - */ - public async execute( - target: ContractJson, - parameters: ProfileParameters - ): Promise { - this._checkReady() - - return this._runTransaction(target, parameters) - } - - /** - * Prettifies a code trace. - * @param trace trace to print. - * @returns prettified trace - */ - public prettify(trace: CodeTrace): string { - return prettifyTransactionTrace(trace) - } - - /** - * Checks that the profiler has been initialized. - */ - private _checkReady(): void { - if (!this._ready) { - throw new Error('GasProfiler not initialized (call .init)') - } - } - - /** - * Executes a particular transaction against some target contract. - * @param target compiled contract JSON object. - * @param parameters parameters for the transaction. - * @returns the result of the transaction. - */ - private async _runTransaction( - target: ContractJson, - parameters: ProfileParameters - ): Promise { - const deployed = await this._deploy(target) - const subject = getInterface(deployed).functions[parameters.method] - - const transaction = await this._makeSignedTransaction( - deployed, - subject, - parameters.params - ) - const response = await this._toolbox.provider.sendTransaction(transaction) - const receipt = await this._toolbox.provider.getTransactionReceipt( - response.hash - ) - - return { - hash: response.hash, - gasUsed: receipt.gasUsed.toNumber(), - } - } - - /** - * Generates a signed transaction for a given contract execution. - * @param target compiled contract JSON object. - * @param method contract method to call. - * @param params parameters to pass to the method. - * @returns the signed transaction. - */ - private async _makeSignedTransaction( - target: Contract, - method: FunctionDescription, - params: any[] - ): Promise { - const nonce = await this._toolbox.provider.getTransactionCount( - this._toolbox.wallet.address - ) - const calldata = method.encode(params) - const transaction = { - gasLimit: 8000000, - data: calldata, - to: target.address, - nonce, - } - return this._toolbox.wallet.sign(transaction) - } - - /** - * Deploys a contract. - * @param target compiled contract JSON object. - * @returns deployed `ethers` contract object. - */ - private async _deploy(target: ContractJson): Promise { - const hash = keccak256('0x' + target.evm.bytecode.object) - if (hash in this._cache) { - return this._cache[hash] - } - - const targetFactory = new ethers.ContractFactory( - target.abi, - target.evm.bytecode.object, - this._toolbox.wallet - ) - const deployed = await targetFactory.deploy() - this._cache[hash] = deployed - return deployed - } -} diff --git a/packages/gas-profiler/src/helpers/ganache.ts b/packages/gas-profiler/src/helpers/ganache.ts deleted file mode 100644 index 221b818ef85d..000000000000 --- a/packages/gas-profiler/src/helpers/ganache.ts +++ /dev/null @@ -1,83 +0,0 @@ -import ganache from 'ganache-core' -import { BigNumber } from 'ethers/utils' -import getPort from 'get-port' - -interface GanacheServer { - listen: (port: number, callback?: any) => void - close: (callback?: any) => void -} - -interface GanacheServerOptions { - accounts?: Array<{ - secretKey: string - balance: string | BigNumber - }> - gasLimit?: number - port?: number -} - -/** - * Helper class for managing ganache instances. - */ -export class Ganache { - private _options: GanacheServerOptions - private _server: GanacheServer - private _running: boolean - - constructor(options: GanacheServerOptions = {}) { - this._options = options - this._server = ganache.server(options) - } - - /** - * Starts the ganache server. - */ - public async start(): Promise { - this._options.port = this.port || (await getPort()) - - await new Promise((resolve, reject) => { - this._server.listen(this._options.port, (err: any) => { - if (err) { - reject(err) - } else { - resolve() - } - }) - }) - - this._running = true - } - - /** - * Stops the ganache server. - */ - public async stop(): Promise { - await new Promise((resolve, reject) => { - this._server.close((err: any) => { - if (err) { - reject(err) - } else { - resolve() - } - }) - }) - - this._running = false - } - - /** - * Server status indicator. - * @returns `true` if the server is running, `false` otherwise. - */ - public get running(): boolean { - return this._running - } - - /** - * Server port number. - * @returns the current server port. - */ - public get port(): number | undefined { - return this._options.port - } -} diff --git a/packages/gas-profiler/src/helpers/tx-trace.ts b/packages/gas-profiler/src/helpers/tx-trace.ts deleted file mode 100644 index af49d9f43cdc..000000000000 --- a/packages/gas-profiler/src/helpers/tx-trace.ts +++ /dev/null @@ -1,352 +0,0 @@ -import * as fs from 'fs' -import { JsonRpcProvider } from 'ethers/providers' -import { ContractJson } from '../interfaces/contract.interface' -import { - JumpType, - StructLog, - SourceMapChunk, - CodeLine, - CodeTrace, - InstructionTrace, -} from '../interfaces/trace.interface' - -const JUMP_TYPES = { - i: JumpType.FUNCTION_IN, - o: JumpType.FUNCTION_OUT, - '-': JumpType.STANDARD, -} - -/** - * Pulls structlogs via `debug_traceTransaction`. - * @param provider `ethers` provider to use for the call. - * @param txhash Hash of the transaction to pull logs for. - * @returns Array of structlogs. - */ -const getStructLogs = async ( - provider: JsonRpcProvider, - txhash: string -): Promise => { - const response = await provider.send('debug_traceTransaction', [ - txhash, - { - // Disable some optional return values we don't really need. - disableStack: true, - disableMemory: true, - disableStorage: true, - }, - ]) - - return response.structLogs -} - -/** - * Parses encoded source map chunks (s:l:f:j;) into a more useful format. - * @param encodedChunk encoded source map chunk. - * @returns standardized source map chunk. - */ -const parseSourceMapChunk = (encodedChunk: string): SourceMapChunk => { - const splitChunk = encodedChunk.split(':') - return { - start: parseInt(splitChunk[0], 10), - length: parseInt(splitChunk[1], 10), - index: parseInt(splitChunk[2], 10), - jump: JUMP_TYPES[splitChunk[3]], - } -} - -/** - * Picks "good" pieces out of either the current source map chunk or the previous one. - * Source map chunks take the form (s:l:f:j), but one more variables may not be present. - * When this is the case, we carry over the variable value from the previous chunk. - * @param previousChunk previous source map chunk. - * @param currentChunk current source map chunk. - * @returns a normalized source map chunk. - */ -const pickGoodChunk = (previousChunk: string, currentChunk: string): string => { - const previousChunkSplit = previousChunk.split(':') - const currentChunkSplit = currentChunk.split(':') - - if (currentChunkSplit[0] === '') { - return previousChunk - } - - const goodChunks: string[] = [] - for (let i = 0; i < 4; i++) { - goodChunks.push(currentChunkSplit[i] || previousChunkSplit[i]) - } - return goodChunks.join(':') -} - -/** - * Parses a source map into a more useful format. - * @param sourceMap contract source map to parse. - * @returns parsed source map. - */ -const parseSourceMap = (sourceMap: string): SourceMapChunk[] => { - let previousChunk: string = ':::' - const sourceMapChunks: SourceMapChunk[] = [] - for (const currentChunk of sourceMap.split(';')) { - const chunk = pickGoodChunk(previousChunk, currentChunk) - const parsed = parseSourceMapChunk(chunk) - sourceMapChunks.push(parsed) - previousChunk = chunk - } - - return sourceMapChunks -} - -/** - * Determines the line number for a given index within a string. - * @param source string containing various lines. - * @param index index within the source. - * @returns line number of the index. - */ -const parseLineNumber = (source: string, index: number): number => { - if (index === 0) { - return 0 - } - - const lines = source.split('\n') - let offset = 0 - for (let i = 0; i < lines.length; i++) { - if (index <= offset) { - return i - 1 - } - - offset += Buffer.byteLength(lines[i] + '\n', 'utf8') - } -} - -/** - * Given a source map, returns a list of line numbers for corresponding chunks. - * @param source file to select line numbers from. - * @param sourceMap file source map. - * @returns corresponding code line numbers. - */ -const parseSourceLines = (source: string, sourceMap: string): CodeLine[] => { - const sourceMapChunks = parseSourceMap(sourceMap) - const firstSourceIndex = sourceMapChunks[0].index - - let lastGoodLine: number - const sourceLines: CodeLine[] = [] - for (const sourceMapChunk of sourceMapChunks) { - if (sourceMapChunk.index === firstSourceIndex) { - const line = parseLineNumber(source, sourceMapChunk.start) - sourceLines.push({ - line, - chunk: sourceMapChunk, - }) - lastGoodLine = line - } else { - sourceLines.push({ - line: lastGoodLine, - chunk: sourceMapChunk, - }) - } - } - - return sourceLines -} - -/** - * Constructs a mapping from contract binary to the source map. - * @param binary contract binary to parse. - * @returns mapping between instructions and the source map. - */ -const parseInstructionIndices = (binary: Buffer | string): number[] => { - if (typeof binary === 'string') { - binary = Buffer.from(binary, 'hex') - } - - const instructionIndices: number[] = [] - - let instructionIndex = 0 - let byteIndex = 0 - while (byteIndex < binary.length) { - const instruction = binary[byteIndex] - - let instructionLength = 1 - if (instruction >= 0x60 && instruction <= 0x7f) { - instructionLength = 1 + instruction - 0x5f - } - - for (let i = 0; i < instructionLength; i++) { - instructionIndices.push(instructionIndex) - } - - byteIndex += instructionLength - instructionIndex += 1 - } - - return instructionIndices -} - -/** - * Utility; produces a useful structure representing a trace for a given file. - * @param source code to produce an empty trace for. - * @returns an empty code trace. - */ -const parseCodeLines = (source: string): CodeTrace => { - const codeTrace: CodeTrace = {} - const lines = source.split('\n') - for (let i = 0; i < lines.length; i++) { - codeTrace[i] = { - line: i, - code: lines[i], - gasUsed: 0, - instructions: [], - } - } - return codeTrace -} - -/** - * Utility; checks that a given line is part of the main contract. - * @param sourceLine code line / source map chunk to check. - * @param sourceLines list of all source map chunks. - * @returns `true` if the line is part of the main contract, `false` otherwise. - */ -const isMainContract = ( - sourceLine: CodeLine, - sourceLines: CodeLine[] -): boolean => { - return sourceLine.chunk.index === sourceLines[0].chunk.index -} - -/** - * Utility; mainly necessary for Solidity < 0.6.0; checks whether a line of - * code is actually a trampoline to a different line. - * @param sourceLine code line / source map chunk to check. - * @param sourceLines list of all source map chunks. - * @returns `true` if the line is a trampoline, `false` otherwise. - */ -const isTrampoline = ( - sourceLine: CodeLine, - sourceLines: CodeLine[] -): boolean => { - return sourceLine.line === sourceLines[0].line -} - -/** - * Seeks the next JUMPDEST instruction that brings execution back to the parent contract. - * Sets the line number for intermediate instructions to equal the final JUMPDEST line. - * @param structLogs parsed source map. - * @param instructionIndices mapping between the source map and instruction indices. - * @param sourceLines mapping between instruction indices and code lines. - * @param start position of the JUMP instruction to seek from. - * @returns traces for instructions from the JUMP to the final JUMPDEST. - */ -const seekJumpDest = ( - structLogs: StructLog[], - instructionIndices: number[], - sourceLines: CodeLine[], - start: number -): InstructionTrace[] => { - const intermediateLogs: StructLog[] = [] - let logIndex = start - - let structLog: StructLog - let instructionIndex: number - let sourceLine: CodeLine - do { - structLog = structLogs[logIndex] - instructionIndex = instructionIndices[structLog.pc] - sourceLine = sourceLines[instructionIndex] - - intermediateLogs.push(structLog) - logIndex++ - } while ( - structLog.op !== 'JUMPDEST' || - // Make sure this JUMPDEST brings us back to the main contract. - !isMainContract(sourceLine, sourceLines) || - // Solidity <0.6.0 uses trampolines when returning from external contract calls. - // First JUMPDEST will therefore have an incorrect line number. - // Instead, we need to wait until we're out of the trampoline. - isTrampoline(sourceLine, sourceLines) - ) - - const intermediateTraces: InstructionTrace[] = [] - for (const intermediateLog of intermediateLogs) { - intermediateTraces.push({ - line: sourceLine.line, - pc: intermediateLog.pc, - op: intermediateLog.op, - idx: instructionIndex, - gasCost: intermediateLog.gasCost, - }) - } - - return intermediateTraces -} - -/** - * Helper; prettifies a code trace into a convenient string. - * @param trace code trace to prettify. - * @returns a pretty trace. - */ -export const prettifyTransactionTrace = (trace: CodeTrace): string => { - let pretty = 'Gas\t┋ Code\n' + '┉┉┉┉┉┉┉┉┋┉┉┉┉┉┉┉┉\n' - for (const key of Object.keys(trace)) { - pretty += `${trace[key].gasUsed}\t┋ ${trace[key].code}\n` - } - - return pretty -} - -/** - * Helper; automatically generates a code trace for a given transaction. - * @param provider ethers json-rpc provider. - * @param source path to the source file for this contract. - * @param contract compiled contract JSON object. - * @param txhash hash of the transaction to trace. - * @returns a code trace for the given transaction. - */ -export const getTransactionTrace = async ( - provider: JsonRpcProvider, - sourcePath: string, - contract: ContractJson, - txhash: string -): Promise => { - const source = fs.readFileSync(sourcePath, 'utf8') - const structLogs = await getStructLogs(provider, txhash) - const sourceMap = contract.evm.deployedBytecode.sourceMap - const sourceLines = parseSourceLines(source, sourceMap) - const binary = contract.evm.deployedBytecode.object - const instructionIndices = parseInstructionIndices(binary) - - let instructionTraces: InstructionTrace[] = [] - for (let i = 0; i < structLogs.length; i++) { - const structLog = structLogs[i] - const instructionIndex = instructionIndices[structLog.pc] - const sourceLine = sourceLines[instructionIndex] - - if (structLog.op === 'JUMP' && isMainContract(sourceLine, sourceLines)) { - // Instructions between JUMP and JUMPDEST should be attributed to JUMPDEST's line. - const intermediateTraces = seekJumpDest( - structLogs, - instructionIndices, - sourceLines, - i - ) - instructionTraces = instructionTraces.concat(intermediateTraces) - i += intermediateTraces.length - 1 - } else { - instructionTraces.push({ - line: sourceLine.line, - pc: structLog.pc, - op: structLog.op, - idx: instructionIndex, - gasCost: structLog.gasCost, - }) - } - } - - // Clean things up a bit and collect traces by line. - const codeTrace: CodeTrace = parseCodeLines(source) - for (const instructionTrace of instructionTraces) { - codeTrace[instructionTrace.line].instructions.push(instructionTrace) - codeTrace[instructionTrace.line].gasUsed += instructionTrace.gasCost - } - - return codeTrace -} diff --git a/packages/gas-profiler/src/helpers/utils.ts b/packages/gas-profiler/src/helpers/utils.ts deleted file mode 100644 index 806153561195..000000000000 --- a/packages/gas-profiler/src/helpers/utils.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { ethers, Wallet, Contract } from 'ethers' -import { Ganache } from './ganache' -import { Provider } from 'ethers/providers' -import { Interface } from 'ethers/utils' - -export interface Toolbox { - provider: Provider - wallet: Wallet - ganache?: Ganache -} - -/** - * Utility; automatically spins up tools necessary for executing contracts. - * @returns a "toolbox" of useful objects. - */ -export const getToolbox = async (): Promise => { - // Just an arbitrary secret key for testing. - const sk = - '0x0123456789012345678901234567890123456789012345678901234567890123' - - // Launch ganache with a reasonably high gas limit, seed our account with some ETH. - const ganache = new Ganache({ - accounts: [ - { - secretKey: sk, - balance: ethers.utils.parseEther('100'), - }, - ], - gasLimit: 0x989680, - }) - await ganache.start() - - // Connect the `ethers` provider and create a wallet. - const provider = new ethers.providers.JsonRpcProvider( - `http://localhost:${ganache.port}` - ) - const wallet = new ethers.Wallet(sk, provider) - - return { - provider, - wallet, - ganache, - } -} - -/** - * Utility; converts an `ethers` contract object into a corresponding interface. - * @param contract `ethers` contract object to convert. - * @returns an interface object for the contract. - */ -export const getInterface = (contract: Contract): Interface => { - return new ethers.utils.Interface(contract.interface.abi) -} diff --git a/packages/gas-profiler/src/index.ts b/packages/gas-profiler/src/index.ts deleted file mode 100644 index fc1085d2f21c..000000000000 --- a/packages/gas-profiler/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { GasProfiler } from './gas-profiler' diff --git a/packages/gas-profiler/src/interfaces/contract.interface.ts b/packages/gas-profiler/src/interfaces/contract.interface.ts deleted file mode 100644 index dd1b86fae54c..000000000000 --- a/packages/gas-profiler/src/interfaces/contract.interface.ts +++ /dev/null @@ -1,20 +0,0 @@ -export interface ContractJson { - abi: any - evm: { - bytecode: { - linkReferences: any - object: string - opcodes: string - sourceMap: string - } - deployedBytecode: { - immutableReferences: any - linkReferences: any - object: string - opcodes: string - sourceMap: string - } - } - interface: any - bytecode: string -} diff --git a/packages/gas-profiler/src/interfaces/trace.interface.ts b/packages/gas-profiler/src/interfaces/trace.interface.ts deleted file mode 100644 index 59719f4420da..000000000000 --- a/packages/gas-profiler/src/interfaces/trace.interface.ts +++ /dev/null @@ -1,50 +0,0 @@ -export interface CodeLine { - line: number - chunk: SourceMapChunk -} - -export interface InstructionTrace { - line: number - pc: number - op: string - idx: number - gasCost: number -} - -export interface LineTrace { - line: number - code: string - gasUsed: number - instructions: InstructionTrace[] -} - -export interface CodeTrace { - [line: number]: LineTrace -} - -export interface StructLog { - depth: number - error: string - gas: number - gasCost: number - memory: string[] - op: string - pc: number - stack: string[] - storage: { - [key: string]: string - } -} - -export enum JumpType { - FUNCTION_IN, - FUNCTION_OUT, - STANDARD, -} - -export interface SourceMapChunk { - start: number - length: number - index: number - jump: JumpType -} diff --git a/packages/gas-profiler/tsconfig.json b/packages/gas-profiler/tsconfig.json deleted file mode 100644 index 065341de67fd..000000000000 --- a/packages/gas-profiler/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./../../tsconfig.json", - "compilerOptions": { - "outDir": "./build", - "baseUrl": "./", - "resolveJsonModule": true, - "esModuleInterop": true, - }, - "include": ["index.ts", "src/**/*.ts", "bin/**/*.ts"] -} diff --git a/packages/gas-profiler/tslint.json b/packages/gas-profiler/tslint.json deleted file mode 100644 index 3f4b3e6147c6..000000000000 --- a/packages/gas-profiler/tslint.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": ["./../../tslint.json"], - "rules": { - "prettier": [true, "../../prettier-config.json"], - "no-console": false - } -} diff --git a/packages/ovm-toolchain/package.json b/packages/ovm-toolchain/package.json index 0b9a6b12f446..13e0dbc5bfaa 100644 --- a/packages/ovm-toolchain/package.json +++ b/packages/ovm-toolchain/package.json @@ -3,39 +3,23 @@ "version": "0.0.2-alpha.2", "description": "Wrappers for Ethereum dev tools", "main": "build/index.js", - "private": true, "files": [ "build/**/*.js" ], - "workspaces": { - "nohoist": [ - "**/ethereum-waffle", - "**/ethereum-waffle/**", - "**/@nomiclabs", - "**/@nomiclabs/**", - "**/typescript", - "**/typescript/**", - "**/ts-node", - "**/ts-node/**" - ] - }, "scripts": { "all": "yarn clean && yarn build && yarn test && yarn fix && yarn lint", "lint": "tslint --format stylish --project .", - "fix": "prettier --config ../../prettier-config.json --write \"index.ts\" \"{deploy,test,src,bin}/**/*.ts\"", - "build": "yarn run build:waffle && yarn run build:typescript", + "lint:fix": "prettier --config ../../prettier-config.json --write \"index.ts\" \"{deploy,test,src,bin}/**/*.ts\"", + "build": "yarn run build:typescript", "build:waffle": "waffle \"test/config/waffle-config.json\"", "build:typescript": "tsc -p .", "clean": "rimraf build/ && rimraf test/temp/", - "test": "yarn run test:truffle && yarn run test:waffle-v2 && yarn run test:buidler", + "test": "yarn run test:truffle && yarn run test:waffle && yarn run test:buidler", "test:truffle": "truffle test \"test/test-truffle/erc20.spec.js\" --config \"test/config/truffle-config.js\"", - "test:waffle-v2": "waffle \"test/config/waffle-config.json\" && mocha --require source-map-support/register --require ts-node/register \"test/test-waffle-v2/**/*.spec.ts\" --timeout 10000", + "test:waffle": "yarn run build:waffle && waffle \"test/config/waffle-config.json\" && mocha --require source-map-support/register --require ts-node/register \"test/test-waffle/**/*.spec.ts\" --timeout 10000", "test:buidler": "buidler test --ovm", "test:buidler:native": "buidler test --ovm --native" }, - "engines": { - "node": "10" - }, "keywords": [ "optimistic", "rollup", @@ -79,11 +63,8 @@ "@nomiclabs/buidler": "^1.4.4", "bn.js": "^5.1.3", "child_process": "^1.0.2", - "ethereum-waffle": "3", - "ethereum-waffle-v2": "npm:ethereum-waffle@2", - "ethereum-waffle-v3": "npm:ethereum-waffle@3", - "ethers-v4": "npm:ethers@4", - "ethers-v5": "npm:ethers@5.0.7", + "ethereum-waffle": "^3.2.1", + "ethers": "^5.0.24", "ethjs-common-v1": "npm:ethereumjs-common@1.5.0", "ethjs-util-v6": "npm:ethereumjs-util@6.2.1" } diff --git a/packages/ovm-toolchain/src/ganache/utils/to.ts b/packages/ovm-toolchain/src/ganache/utils/to.ts index 7d22400a9ece..c561256aab7e 100644 --- a/packages/ovm-toolchain/src/ganache/utils/to.ts +++ b/packages/ovm-toolchain/src/ganache/utils/to.ts @@ -1,5 +1,5 @@ import * as utils from 'ethjs-util-v6' -import { BigNumber } from 'ethers-v5' +import { BigNumber } from 'ethers' export const to = { hex: (val: any) => { diff --git a/packages/ovm-toolchain/src/waffle/index.ts b/packages/ovm-toolchain/src/waffle/index.ts index a458c16239ee..88d1b057cb4d 100644 --- a/packages/ovm-toolchain/src/waffle/index.ts +++ b/packages/ovm-toolchain/src/waffle/index.ts @@ -1,2 +1 @@ -export { waffleV2 } from './waffle-v2' -export { waffleV3 } from './waffle-v3' +export { waffleV3, waffle } from './waffle-v3' diff --git a/packages/ovm-toolchain/src/waffle/waffle-v2.ts b/packages/ovm-toolchain/src/waffle/waffle-v2.ts deleted file mode 100644 index 171f3a879576..000000000000 --- a/packages/ovm-toolchain/src/waffle/waffle-v2.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* External Imports */ -import { ethers, providers, Wallet, Contract } from 'ethers-v4' -import { defaultAccounts } from 'ethereum-waffle-v2' -import Ganache from 'ganache-core' - -/* Internal Imports */ -import { ganache } from '../ganache' - -/** - * WaffleV2 MockProvider wrapper. - */ -export class MockProvider extends providers.Web3Provider { - constructor(private options?: Ganache.IProviderOptions) { - super( - ganache.provider({ - gasPrice: 0, - accounts: defaultAccounts, - ...options, - }) as any - ) - } - - /** - * Retrieves the wallet objects passed to this provider. - * @returns List of wallet objects. - */ - public getWallets(): Wallet[] { - const items = this.options?.accounts ?? defaultAccounts - return items.map((x: any) => new Wallet(x.secretKey, this)) - } - - /** - * Sends an RPC call. Function is named "rpc" instead of "send" because - * ethers will try to use the function if it's named "send". - * @param method Ethereum RPC method to call. - * @param params Params to the RPC method. - * @returns Result of the RPC call. - */ - public async rpc(method: string, params: any[] = []): Promise { - return new Promise((resolve, reject) => { - if (!!this._web3Provider) { - this._web3Provider.sendAsync( - { - jsonrpc: '2.0', - method, - params, - }, - (err: any, res: any) => { - if (err) { - reject(err) - } else { - resolve(res.result) - } - } - ) - } else { - reject('web3Provider not defined') - } - }) - } -} - -export const waffleV2 = { - MockProvider, -} diff --git a/packages/ovm-toolchain/src/waffle/waffle-v3.ts b/packages/ovm-toolchain/src/waffle/waffle-v3.ts index 16558c969b6f..9cbda6bcfe21 100644 --- a/packages/ovm-toolchain/src/waffle/waffle-v3.ts +++ b/packages/ovm-toolchain/src/waffle/waffle-v3.ts @@ -1,6 +1,6 @@ /* External Imports */ -import { ethers, providers, Wallet, Contract } from 'ethers-v5' -import { defaultAccounts } from 'ethereum-waffle-v3' +import { providers, Wallet } from 'ethers' +import { defaultAccounts } from 'ethereum-waffle' import Ganache from 'ganache-core' /* Internal Imports */ @@ -37,3 +37,7 @@ export class MockProvider extends providers.Web3Provider { export const waffleV3 = { MockProvider, } + +export const waffle = { + MockProvider, +} diff --git a/packages/ovm-toolchain/src/watcher.ts b/packages/ovm-toolchain/src/watcher.ts index 8bbdec8a845a..6e29ba0314fa 100644 --- a/packages/ovm-toolchain/src/watcher.ts +++ b/packages/ovm-toolchain/src/watcher.ts @@ -1,5 +1,5 @@ /* External Imports */ -import { ethers } from 'ethers-v4' +import { ethers } from 'ethers' interface Layer { provider: any diff --git a/packages/ovm-toolchain/test/test-buidler/erc20.spec.ts b/packages/ovm-toolchain/test/test-buidler/erc20.spec.ts index c9909dae642b..705b0526cfcf 100644 --- a/packages/ovm-toolchain/test/test-buidler/erc20.spec.ts +++ b/packages/ovm-toolchain/test/test-buidler/erc20.spec.ts @@ -2,8 +2,8 @@ import { expect } from '../common/setup' /* External Imports */ // tslint:disable-next-line -const { ethers } = require('@nomiclabs/buidler') -import { Contract, Signer } from 'ethers-v5' +import { ethers } from '@nomiclabs/buidler' +import { Contract, Signer } from 'ethers' describe('ERC20 smart contract', () => { let wallet1: Signer diff --git a/packages/ovm-toolchain/test/test-waffle-v2/core/create2.spec.ts b/packages/ovm-toolchain/test/test-waffle/core/create2.spec.ts similarity index 81% rename from packages/ovm-toolchain/test/test-waffle-v2/core/create2.spec.ts rename to packages/ovm-toolchain/test/test-waffle/core/create2.spec.ts index 27f5c51064c2..c2a401120d9b 100644 --- a/packages/ovm-toolchain/test/test-waffle-v2/core/create2.spec.ts +++ b/packages/ovm-toolchain/test/test-waffle/core/create2.spec.ts @@ -2,12 +2,11 @@ import '../../common/setup' /* External Imports */ import { add0x } from '@eth-optimism/core-utils' -import { deployContract } from 'ethereum-waffle-v2' -import { Contract, Wallet } from 'ethers-v4' -import { getAddress, keccak256 } from 'ethers-v4/utils' +import { deployContract } from 'ethereum-waffle' +import { ethers, Contract, Wallet } from 'ethers' /* Internal Imports */ -import { waffleV2 } from '../../../src/waffle/waffle-v2' +import { waffle } from '../../../src/waffle' /* Contract Imports */ import * as SimpleCreate2 from '../../temp/build/waffle/SimpleCreate2.json' @@ -18,9 +17,16 @@ const getCreate2Address = ( salt: string, bytecode: string ): string => { - const create2Inputs = ['0xff', factoryAddress, salt, keccak256(bytecode)] + const create2Inputs = [ + '0xff', + factoryAddress, + salt, + ethers.utils.keccak256(bytecode), + ] const sanitizedInputs = `0x${create2Inputs.map((i) => i.slice(2)).join('')}` - return getAddress(`0x${keccak256(sanitizedInputs).slice(-40)}`) + return ethers.utils.getAddress( + `0x${ethers.utils.keccak256(sanitizedInputs).slice(-40)}` + ) } const DEFAULT_SALT = @@ -30,7 +36,7 @@ describe('Create2 Support', () => { let wallet: Wallet let provider: any before(async () => { - provider = new waffleV2.MockProvider() + provider = new waffle.MockProvider() ;[wallet] = provider.getWallets() }) diff --git a/packages/ovm-toolchain/test/test-waffle-v2/core/libraries.spec.ts b/packages/ovm-toolchain/test/test-waffle/core/libraries.spec.ts similarity index 89% rename from packages/ovm-toolchain/test/test-waffle-v2/core/libraries.spec.ts rename to packages/ovm-toolchain/test/test-waffle/core/libraries.spec.ts index adacdc4e9504..9a21f94b4b32 100644 --- a/packages/ovm-toolchain/test/test-waffle-v2/core/libraries.spec.ts +++ b/packages/ovm-toolchain/test/test-waffle/core/libraries.spec.ts @@ -1,11 +1,11 @@ import '../../common/setup' /* External Imports */ -import { link, deployContract } from 'ethereum-waffle-v2' -import { Wallet, Contract } from 'ethers-v4' +import { link, deployContract } from 'ethereum-waffle' +import { Wallet, Contract } from 'ethers' /* Internal Imports */ -import { waffleV2 } from '../../../src/waffle/waffle-v2' +import { waffle } from '../../../src/waffle' /* Contract Imports */ import * as SimpleSafeMathJSON from '../../temp/build/waffle/SimpleSafeMath.json' @@ -18,7 +18,7 @@ describe('Library Support', () => { let provider: any let wallet: Wallet before(async () => { - provider = new waffleV2.MockProvider() + provider = new waffle.MockProvider() ;[wallet] = provider.getWallets() }) diff --git a/packages/ovm-toolchain/test/test-waffle-v2/core/precompiles.spec.ts b/packages/ovm-toolchain/test/test-waffle/core/precompiles.spec.ts similarity index 82% rename from packages/ovm-toolchain/test/test-waffle-v2/core/precompiles.spec.ts rename to packages/ovm-toolchain/test/test-waffle/core/precompiles.spec.ts index dfb66cf0231b..a52739305863 100644 --- a/packages/ovm-toolchain/test/test-waffle-v2/core/precompiles.spec.ts +++ b/packages/ovm-toolchain/test/test-waffle/core/precompiles.spec.ts @@ -1,13 +1,12 @@ import '../../common/setup' /* External Imports */ -import { deployContract } from 'ethereum-waffle-v2' -import { Wallet, Contract } from 'ethers-v4' -import { keccak256, sha256 } from 'ethers-v4/utils' +import { deployContract } from 'ethereum-waffle' +import { ethers, Wallet, Contract } from 'ethers' import { ecsign } from 'ethereumjs-util' /* Internal Imports */ -import { waffleV2 } from '../../../src/waffle/waffle-v2' +import { waffle } from '../../../src/waffle' /* Contract Imports */ import * as Precompiles from '../../temp/build/waffle/Precompiles.json' @@ -16,7 +15,7 @@ describe('Precompile Support', () => { let wallet: Wallet let provider: any beforeEach(async () => { - provider = new waffleV2.MockProvider() + provider = new waffle.MockProvider() ;[wallet] = provider.getWallets() }) @@ -27,7 +26,7 @@ describe('Precompile Support', () => { it('should correctly ecrecover signer address', async () => { const message = '0xdeadbeef' - const hashedMessage = keccak256(message) + const hashedMessage = ethers.utils.keccak256(message) const { v, r, s } = ecsign( Buffer.from(hashedMessage.slice(2), 'hex'), Buffer.from(wallet.privateKey.slice(2), 'hex') @@ -43,7 +42,7 @@ describe('Precompile Support', () => { it('should correctly calculate SHA256 hash', async () => { const message = '0xdeadbeef' - const expectedHash = sha256(message) + const expectedHash = ethers.utils.sha256(message) const hash = await precompiles.calculateSHA256(message) hash.should.equal(expectedHash) }) diff --git a/packages/ovm-toolchain/test/test-waffle-v2/core/timestamps.spec.ts b/packages/ovm-toolchain/test/test-waffle/core/timestamps.spec.ts similarity index 81% rename from packages/ovm-toolchain/test/test-waffle-v2/core/timestamps.spec.ts rename to packages/ovm-toolchain/test/test-waffle/core/timestamps.spec.ts index 4cbfd5168a32..8ea20b3d485f 100644 --- a/packages/ovm-toolchain/test/test-waffle-v2/core/timestamps.spec.ts +++ b/packages/ovm-toolchain/test/test-waffle/core/timestamps.spec.ts @@ -1,11 +1,11 @@ import { expect } from '../../common/setup' /* External Imports */ -import { deployContract } from 'ethereum-waffle-v2' -import { Contract, Wallet } from 'ethers-v4' +import { deployContract } from 'ethereum-waffle' +import { Contract, Wallet } from 'ethers' /* Internal Imports */ -import { waffleV2 } from '../../../src/waffle/waffle-v2' +import { waffle } from '../../../src/waffle' /* Contract Imports */ import * as TimestampCheckerContract from '../../temp/build/waffle/TimestampChecker.json' @@ -15,7 +15,7 @@ describe('Timestamp Manipulation Support', () => { let wallet: Wallet let timestampChecker: Contract beforeEach(async () => { - provider = new waffleV2.MockProvider() + provider = new waffle.MockProvider() ;[wallet] = provider.getWallets() timestampChecker = await deployContract( wallet, @@ -35,7 +35,7 @@ describe('Timestamp Manipulation Support', () => { it('should retrieve the block timestamp correctly after modifying with evm_mine', async () => { const beforeTimestamp = (await timestampChecker.blockTimestamp()).toNumber() - await provider.rpc('evm_mine', [beforeTimestamp + 10]) + await provider.send('evm_mine', [beforeTimestamp + 10]) const afterTimestamp = (await timestampChecker.blockTimestamp()).toNumber() expect(beforeTimestamp + 10).to.equal( diff --git a/packages/ovm-toolchain/test/test-waffle-v2/erc20.spec.ts b/packages/ovm-toolchain/test/test-waffle/erc20.spec.ts similarity index 89% rename from packages/ovm-toolchain/test/test-waffle-v2/erc20.spec.ts rename to packages/ovm-toolchain/test/test-waffle/erc20.spec.ts index 79872bf8ea30..81e4db6e0b5b 100644 --- a/packages/ovm-toolchain/test/test-waffle-v2/erc20.spec.ts +++ b/packages/ovm-toolchain/test/test-waffle/erc20.spec.ts @@ -1,11 +1,11 @@ import { expect } from '../common/setup' /* External Imports */ -import { deployContract } from 'ethereum-waffle-v2' -import { Wallet, Contract } from 'ethers-v4' +import { deployContract } from 'ethereum-waffle' +import { Wallet, Contract } from 'ethers' /* Internal Imports */ -import { waffleV2 } from '../../src/waffle/waffle-v2' +import { waffle } from '../../src/waffle' /* Contract Imports */ import * as ERC20 from '../temp/build/waffle/ERC20.json' @@ -15,7 +15,7 @@ describe('ERC20 smart contract', () => { let wallet1: Wallet let wallet2: Wallet before(async () => { - provider = new waffleV2.MockProvider() + provider = new waffle.MockProvider() ;[wallet1, wallet2] = provider.getWallets() }) diff --git a/packages/ovm-toolchain/tsconfig.json b/packages/ovm-toolchain/tsconfig.json index e53014c43b75..07426a8499f0 100644 --- a/packages/ovm-toolchain/tsconfig.json +++ b/packages/ovm-toolchain/tsconfig.json @@ -8,11 +8,11 @@ "allowJs": true }, "include": ["*.ts", "**/*.ts", "artifacts/*.json"], - "exclude": ["./build", "node_modules"], + "exclude": ["./build", "node_modules", "./test"], "files": [ "./buidler.config.ts", "./buidler-env.d.ts", - "./node_modules/@nomiclabs/buidler-ethers/src/type-extensions.d.ts", - "./node_modules/@nomiclabs/buidler-waffle/src/type-extensions.d.ts" + "../../node_modules/@nomiclabs/buidler-ethers/src/type-extensions.d.ts", + "../../node_modules/@nomiclabs/buidler-waffle/src/type-extensions.d.ts" ] } diff --git a/packages/provider/package.json b/packages/provider/package.json index f6047cfd9cc2..68009f03da79 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -10,36 +10,21 @@ "all": "yarn clean && yarn build && yarn test && yarn fix && yarn lint", "build": "tsc -p .", "clean": "rimraf build/", - "fix": "prettier --config ../../prettier-config.json --write 'index.ts' '{src,test}/**/*.ts'", "lint": "tslint --format stylish --project .", + "lint:fix": "prettier --config ../../prettier-config.json --write 'index.ts' '{src,test}/**/*.ts'", "test": "mocha --require ts-node/register 'test/**/*.spec.ts' --timeout 5000", "test:debug": "mocha debug --require ts-node/register 'test/**/*.spec.ts' --timeout 5000" }, - "engines": { - "node": "10" - }, "keywords": [], "author": "Optimism", "license": "MIT", "dependencies": { "@eth-optimism/core-utils": "0.0.1-alpha.30", - "@ethersproject/abi": "^5.0.7", - "@ethersproject/abstract-provider": "^5.0.3", - "@ethersproject/abstract-signer": "^5.0.3", - "@ethersproject/bignumber": "^5.0.6", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/networks": "^5.0.3", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/providers": "^5.0.7", - "@ethersproject/transactions": "^5.0.4", - "@ethersproject/wallet": "^5.0.3", - "@ethersproject/web": "^5.0.5", - "bn.js": "^5.1.3" + "bn.js": "^5.1.3", + "ethers": "^5.0.24" }, "devDependencies": { - "@eth-optimism/ovm-toolchain": "0.0.1-alpha.5", + "@eth-optimism/ovm-toolchain": "^0.0.2-alpha.2", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "mocha": "^8.1.2", diff --git a/packages/provider/src/app/provider.ts b/packages/provider/src/app/provider.ts index d0130487032d..3d484f61910d 100644 --- a/packages/provider/src/app/provider.ts +++ b/packages/provider/src/app/provider.ts @@ -5,17 +5,9 @@ */ import { Logger } from '@ethersproject/logger' -import { Network, Networkish } from '@ethersproject/networks' -import { - UrlJsonRpcProvider, - JsonRpcSigner, - JsonRpcProvider, - Web3Provider, -} from '@ethersproject/providers' -import { defineReadOnly, getStatic } from '@ethersproject/properties' -import { ConnectionInfo } from '@ethersproject/web' +import { Networkish } from '@ethersproject/networks' +import { JsonRpcProvider, Web3Provider } from '@ethersproject/providers' import { verifyMessage } from '@ethersproject/wallet' -import { Provider } from '@ethersproject/abstract-provider' import { joinSignature, SignatureLike } from '@ethersproject/bytes' import { OptimismSigner } from './signer' import * as utils from './utils' @@ -103,9 +95,9 @@ export class OptimismProvider extends JsonRpcProvider { return this._ethereum } - public getSigner(address?: string): OptimismSigner { + public getSigner(addressOrIndex?: string | number): OptimismSigner { if (this.ethereum) { - return new OptimismSigner(this.ethereum, this, address) + return new OptimismSigner(this.ethereum, this, addressOrIndex) } logger.throwError( diff --git a/packages/provider/src/app/signer.ts b/packages/provider/src/app/signer.ts index 0946c9f2f9ef..36978a9f0ac5 100644 --- a/packages/provider/src/app/signer.ts +++ b/packages/provider/src/app/signer.ts @@ -9,11 +9,7 @@ * https://github.com/ethers-io/ethers.js */ -import { - JsonRpcSigner, - JsonRpcProvider, - Web3Provider, -} from '@ethersproject/providers' +import { JsonRpcSigner, Web3Provider } from '@ethersproject/providers' import { Logger } from '@ethersproject/logger' import { BlockTag, @@ -22,28 +18,17 @@ import { TransactionResponse, } from '@ethersproject/abstract-provider' import { Signer } from '@ethersproject/abstract-signer' -import { BigNumberish, BigNumber } from '@ethersproject/bignumber' -import { Bytes, splitSignature } from '@ethersproject/bytes' +import { BigNumber } from '@ethersproject/bignumber' +import { Bytes } from '@ethersproject/bytes' import { serialize, UnsignedTransaction } from '@ethersproject/transactions' -import { hexStrToBuf, isHexString, remove0x } from '@eth-optimism/core-utils' -import { ConnectionInfo, fetchJson, poll } from '@ethersproject/web' -import { keccak256 } from '@ethersproject/keccak256' import { - checkProperties, - deepCopy, Deferrable, - defineReadOnly, - getStatic, resolveProperties, shallowCopy, } from '@ethersproject/properties' -import { - allowedTransactionKeys, - serializeEthSignTransaction, - sighashEthSign, -} from './utils' +import { allowedTransactionKeys, sighashEthSign } from './utils' import { OptimismProvider } from './provider' const logger = new Logger('') @@ -266,6 +251,10 @@ export class OptimismSigner implements JsonRpcSigner { } } + public _signTypedData(args: any): any { + throw new Error('NOT IMPLEMENTED') + } + public static isSigner(value: any): value is Signer { return !!(value && value._isSigner) } diff --git a/packages/provider/src/app/utils.ts b/packages/provider/src/app/utils.ts index 24c61ecf5ce6..07e4350033ee 100644 --- a/packages/provider/src/app/utils.ts +++ b/packages/provider/src/app/utils.ts @@ -4,13 +4,9 @@ * https://github.com/ethereum-optimism */ -import { Networkish } from '@ethersproject/networks' -import { hexStrToBuf, isHexString, remove0x } from '@eth-optimism/core-utils' -import { arrayify, Bytes, zeroPad } from '@ethersproject/bytes' -import { BigNumberish, BigNumber } from '@ethersproject/bignumber' +import { remove0x } from '@eth-optimism/core-utils' +import { Bytes } from '@ethersproject/bytes' import { AbiCoder } from '@ethersproject/abi' -import { Deferrable, deepCopy } from '@ethersproject/properties' -import { TransactionRequest } from '@ethersproject/abstract-provider' import { keccak256 } from '@ethersproject/keccak256' const blacklist = new Set([ @@ -102,12 +98,3 @@ export function sighashEthSign(transaction): Buffer { const hash = remove0x(keccak256(serialized)) return Buffer.from(hash, 'hex') } - -function toBuffer(n: BigNumberish): Buffer { - if (typeof n === 'string' && isHexString(n as string)) { - return hexStrToBuf(n as string) - } - - const uint8array = arrayify(n) - return Buffer.from(uint8array) -} diff --git a/packages/provider/test/rpc.spec.ts b/packages/provider/test/rpc.spec.ts index 7643a4767845..f818a04e9dca 100644 --- a/packages/provider/test/rpc.spec.ts +++ b/packages/provider/test/rpc.spec.ts @@ -4,24 +4,23 @@ * https://github.com/ethereum-optimism */ -import { SimpleServer, isHexString } from '@eth-optimism/core-utils' -import { OptimismProvider } from '../src/index' -import chai = require('chai') -import assert = require('assert') -import chaiAsPromised = require('chai-as-promised') +import { assert } from './setup' + +/* Imports: External */ +import { isHexString } from '@eth-optimism/core-utils' import { ganache } from '@eth-optimism/ovm-toolchain' -chai.use(chaiAsPromised) -const should = chai.should() +/* Imports: Internal */ +import { OptimismProvider } from '../src/index' describe('RPC', () => { const server = ganache.server({}) - let provider const addr = '0x8fd00f170fdf3772c5ebdcd90bf257316c69ba45' const contract = '0xdac17f958d2ee523a2206206994597c13d831ec7' // Set up the provider and the RPC server + let provider: OptimismProvider before(async () => { provider = new OptimismProvider('http://localhost:3001') await server.listen(3001) diff --git a/packages/provider/test/sendtransaction.spec.ts b/packages/provider/test/sendtransaction.spec.ts index 332baa36a09f..497158c20463 100644 --- a/packages/provider/test/sendtransaction.spec.ts +++ b/packages/provider/test/sendtransaction.spec.ts @@ -4,22 +4,20 @@ * https://github.com/ethereum-optimism */ +import './setup' + +/* Imports: External */ import { JsonRpcServer } from '@eth-optimism/core-utils' import { Web3Provider } from '@ethersproject/providers' -import chai = require('chai') -import chaiAsPromised = require('chai-as-promised') import { ganache } from '@eth-optimism/ovm-toolchain' -import BigNumber = require('bn.js') -import { OptimismProvider, sighashEthSign } from '../src/index' import { verifyMessage } from '@ethersproject/wallet' import { parse } from '@ethersproject/transactions' import { SignatureLike, joinSignature } from '@ethersproject/bytes' +/* Imports: Internal */ +import { OptimismProvider, sighashEthSign } from '../src/index' import { mnemonic } from './common' -chai.use(chaiAsPromised) -const should = chai.should() - describe('sendTransaction', () => { let provider let server diff --git a/packages/provider/test/setup.ts b/packages/provider/test/setup.ts new file mode 100644 index 000000000000..d9dc4cf1849d --- /dev/null +++ b/packages/provider/test/setup.ts @@ -0,0 +1,8 @@ +import chai = require('chai') +import chaiAsPromised = require('chai-as-promised') +import assert = require('assert') + +chai.use(chaiAsPromised) +chai.should() + +export { assert } diff --git a/packages/provider/test/signer.spec.ts b/packages/provider/test/signer.spec.ts index 7ab7f93c7369..37c2bd678e32 100644 --- a/packages/provider/test/signer.spec.ts +++ b/packages/provider/test/signer.spec.ts @@ -4,20 +4,18 @@ * https://github.com/ethereum-optimism */ -import { isHexString } from '@eth-optimism/core-utils' +import './setup' + +/* Imports: External */ import { Web3Provider } from '@ethersproject/providers' -import { OptimismProvider } from '../src/index' -import chai = require('chai') -import chaiAsPromised = require('chai-as-promised') import { ganache } from '@eth-optimism/ovm-toolchain' import { verifyMessage } from '@ethersproject/wallet' -chai.use(chaiAsPromised) -const should = chai.should() +/* Imports: Internal */ +import { OptimismProvider } from '../src/index' describe('Signer', () => { - let provider - + let provider: OptimismProvider before(() => { const web3 = new Web3Provider(ganache.provider({})) provider = new OptimismProvider('http://localhost:3000', web3) diff --git a/packages/provider/tslint.json b/packages/provider/tslint.json index 7348d4d168dd..364d43b36eb4 100644 --- a/packages/provider/tslint.json +++ b/packages/provider/tslint.json @@ -1,6 +1,7 @@ { "extends": ["./../../tslint.json"], "rules": { - "prettier": [true, "../../prettier-config.json"] + "prettier": [true, "../../prettier-config.json"], + "no-implicit-dependencies": false } } diff --git a/yarn.lock b/yarn.lock index 961593953ab4..cd014e764249 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,7 +39,7 @@ resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== -"@eth-optimism/contracts@^0.0.2-alpha.14": +"@eth-optimism/contracts@^0.0.2-alpha.14", "@eth-optimism/contracts@^0.0.2-alpha.7": version "0.0.2-alpha.14" resolved "https://registry.yarnpkg.com/@eth-optimism/contracts/-/contracts-0.0.2-alpha.14.tgz#382ae9250e7d89e7729bcfe73ffdb85897e385c2" integrity sha512-EeOKiQ+Tu/bZqlq2bsXJegRYHhBXlcDO+fNXG1NJyies23rcLrjR7LMocJmw/F9TpYJ08UqvOHttD5w//cntpg== @@ -51,13 +51,6 @@ ethers "5.0.0" ganache-core "^2.12.1" -"@eth-optimism/contracts@^0.0.2-alpha.7": - version "0.0.2-alpha.7" - resolved "https://registry.yarnpkg.com/@eth-optimism/contracts/-/contracts-0.0.2-alpha.7.tgz#1d77b59f504ee94d9f2f46e0d4c01889ba8f9fd5" - integrity sha512-nl+UsKPTPEyKS6p5E5g4U5SAqOK8Cj24o0GXtxERuVW/+eaBqbc5IEM50/wL5e/XiW4DjUOAMZl01GYiE8mIfA== - dependencies: - ethers "5.0.0" - "@eth-optimism/ethereumjs-vm@4.2.0-alpha.2": version "4.2.0-alpha.2" resolved "https://registry.yarnpkg.com/@eth-optimism/ethereumjs-vm/-/ethereumjs-vm-4.2.0-alpha.2.tgz#e8af5e0594224c36bb9f6756cf0ff38467d265b8" @@ -82,51 +75,6 @@ util.promisify "^1.0.0" uuid "^8.3.0" -"@eth-optimism/ovm-toolchain@0.0.1-alpha.5": - version "0.0.1-alpha.5" - resolved "https://registry.yarnpkg.com/@eth-optimism/ovm-toolchain/-/ovm-toolchain-0.0.1-alpha.5.tgz#abd961528e1d10eae523ce73547887d811df0aa2" - integrity sha512-2geNns/bo1f5Ic/iuT4JeAa+eIzUU8jhrfEOwcQ+W3UoA857rwbff5UqKNvMm3jXlI1YLIYQhXTbBZsezpBPEw== - dependencies: - "@eth-optimism/core-utils" "^0.0.1-alpha.30" - "@eth-optimism/rollup-contracts" "^0.0.1-alpha.32" - "@nomiclabs/buidler" "^1.4.4" - bn.js "^5.1.3" - child_process "^1.0.2" - ethereum-waffle-v2 "npm:ethereum-waffle@2" - ethereum-waffle-v3 "npm:ethereum-waffle@3" - ethereumjs-ovm "git+https://github.com/ethereum-optimism/ethereumjs-vm" - ethers-v4 "npm:ethers@4" - ethers-v5 "npm:ethers@5.0.7" - -"@eth-optimism/rollup-contracts@^0.0.1-alpha.32": - version "0.0.1-alpha.37" - resolved "https://registry.yarnpkg.com/@eth-optimism/rollup-contracts/-/rollup-contracts-0.0.1-alpha.37.tgz#770403aebcfd6c1bb1e1940150617808186134e4" - integrity sha512-a3RjoQj69tCbEtfDiMsqW9D6AhnDN11aQKPlgkwycbEjwm2wiUNVnfmxtMM3FUj8uX/AUAwKvELJ16onUbiTqw== - dependencies: - "@eth-optimism/core-db" "^0.0.1-alpha.30" - "@eth-optimism/core-utils" "^0.0.1-alpha.30" - "@eth-optimism/solc" "^0.5.16-alpha.2" - "@ethersproject/keccak256" "5.0.3" - "@nomiclabs/buidler" "1.3.8" - "@nomiclabs/buidler-ethers" "^2.0.0" - "@nomiclabs/buidler-solpp" "^1.3.3" - "@nomiclabs/buidler-waffle" "^2.0.0" - "@nomiclabs/ethereumjs-vm" "^4.1.1" - "@types/lodash" "^4.14.157" - chai "^4.2.0" - chai-as-promised "^7.1.1" - chai-bignumber "^3.0.0" - ethereum-waffle "^3.0.0" - ethereumjs-abi "^0.6.8" - ethers "5.0.0" - lodash "^4.17.15" - merkle-patricia-tree "^4.0.0" - random-bytes-seed "^1.0.3" - rlp "^2.2.5" - seedrandom "^3.0.5" - ts-node "^8.10.2" - typescript "^3.9.5" - "@eth-optimism/smock@^0.0.2": version "0.0.2" resolved "https://registry.yarnpkg.com/@eth-optimism/smock/-/smock-0.0.2.tgz#58b9b28885fef1b08c5b13cb31bf614635027d90" @@ -136,25 +84,10 @@ ethers "^5" fs-extra "^9.0.1" -"@eth-optimism/solc@^0.5.16-alpha.2": - version "0.5.16-alpha.2" - resolved "https://registry.yarnpkg.com/@eth-optimism/solc/-/solc-0.5.16-alpha.2.tgz#24e92d93682b2895fc4de70a2ab28b80e78000cb" - integrity sha512-c8Ynl6teu5z7kKOweGB8V629liKTIC/udnuwpdImQgBGyp6BTMXwgBPKQkHagCC5eTAEr9jGF+ENvt6ppxElGA== - dependencies: - command-exists "^1.2.8" - commander "3.0.2" - follow-redirects "^1.12.1" - fs-extra "^0.30.0" - js-sha3 "0.8.0" - memorystream "^0.3.1" - require-from-string "^2.0.0" - semver "^5.5.0" - tmp "0.0.33" - "@eth-optimism/solc@^0.5.16-alpha.6": - version "0.5.16-alpha.6" - resolved "https://registry.yarnpkg.com/@eth-optimism/solc/-/solc-0.5.16-alpha.6.tgz#117472df54d90a2ff645119a95598f1b3f341636" - integrity sha512-2Ku6pl3ZOyAaYft/h2/l2SUH+Jn5D+ZwQHQCDpPGpSdmXVgKUKCIGENuLbeHOr37Amum+bcKubcxairGXedEjg== + version "0.5.16-alpha.7" + resolved "https://registry.yarnpkg.com/@eth-optimism/solc/-/solc-0.5.16-alpha.7.tgz#3767a34715dce6cb342ae66df834cc7ed6d9a6e3" + integrity sha512-Lzcd1379o4rN3vIdxyI0z2bbbG7SMEA+tOC78UwNak7uCbCUEaXN8Qo5+X5wSp01Ab6TjfrBku6jTUSTLlwZuA== dependencies: command-exists "^1.2.8" commander "3.0.2" @@ -181,62 +114,18 @@ semver "^5.5.0" tmp "0.0.33" -"@ethereum-waffle/chai@^2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-2.5.1.tgz#8bdc055952fc80ff78132571396a2771a36d97ae" - integrity sha512-g/PTnycTM5bODJCumO0XnccKeLITKELwuWOll3EAK+lE5u/OYvfVH5tAsDMJkB8m7J6wVKJ8iT+UiLEKb1qO1g== - dependencies: - "@ethereum-waffle/provider" "^2.5.1" - ethers "^4.0.45" - -"@ethereum-waffle/chai@^3.0.0", "@ethereum-waffle/chai@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.1.1.tgz#2d2594e19613cdee0eaa1a38fc8dac31f66460e6" - integrity sha512-gbpjfIz+XhM9sH8BtBiRmK+eU6WuAWPK5TqIMR7QwzcGQ4XkIoFzACRNc/kxnV5f9Townpgr7yp0yzbzJJCWiw== - dependencies: - "@ethereum-waffle/provider" "^3.1.1" - ethers "^5.0.0" - -"@ethereum-waffle/chai@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.1.0.tgz#af88fb2167826f0581bb67ab71d41250a5f83cf6" - integrity sha512-erBoZoseFXZPEEbv9GHqJKjGAG4u1m/NzTRvXUGFDngdZYsBzMDTVU63vIrGVlVu3Cu7Wd5KfdhYib+/iH2xcQ== +"@ethereum-waffle/chai@^3.0.0", "@ethereum-waffle/chai@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.2.1.tgz#5cb542b2a323adf0bc2dda00f48b0eb85944d8ab" + integrity sha512-0aG946J1+2Gg7WnEjtwPEWe+xwLTeBTy6LpCnGecosMf3YINkaf9Xv3Sd7CrXBR88ihCoUhfzfmOloMHIAQPAg== dependencies: - "@ethereum-waffle/provider" "^3.1.0" + "@ethereum-waffle/provider" "^3.2.1" ethers "^5.0.0" -"@ethereum-waffle/compiler@^2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-2.5.1.tgz#955a1fd6558f66b388707c4cec05459e6253535f" - integrity sha512-H08PgcJ+M4URDP2JBjDeYJRMtsh7PusEdRTaEQ7bHeVyjqqv18UEtFPBD7bR169sK9RGlkzjYmCeIRWomCQLlw== - dependencies: - "@resolver-engine/imports" "^0.3.3" - "@resolver-engine/imports-fs" "^0.3.3" - "@types/mkdirp" "^0.5.2" - "@types/node-fetch" "^2.5.5" - ethers "^4.0.45" - mkdirp "^0.5.1" - node-fetch "^2.6.0" - solc "^0.6.3" - -"@ethereum-waffle/compiler@^3.0.0", "@ethereum-waffle/compiler@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.1.1.tgz#df3dba3c5dc556afe04f259e0789c16bc34333f5" - integrity sha512-vneBsbR7VaqZ0cDJRc+pr7aU6ZB8uO2h4ScKsn3GQIXE1GYB4i9eUxvRkdi5t/cS7YufnmUyKQU/IyAjivDcWw== - dependencies: - "@resolver-engine/imports" "^0.3.3" - "@resolver-engine/imports-fs" "^0.3.3" - "@types/mkdirp" "^0.5.2" - "@types/node-fetch" "^2.5.5" - ethers "^5.0.1" - mkdirp "^0.5.1" - node-fetch "^2.6.0" - solc "^0.6.3" - -"@ethereum-waffle/compiler@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.1.0.tgz#088a3780807fd7614638da805ee1c3081bb3e7c6" - integrity sha512-qFwy9OHbbvltns4tz12mpbSryg8rCpATsdjM+PtSSXSJ7s04fcDlKWJgFERE3jsxE7GMGH8mfr4e7Jqncxxh7w== +"@ethereum-waffle/compiler@^3.0.0", "@ethereum-waffle/compiler@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.2.1.tgz#612a9056285a94ce28eb57b895770ad10e438bf9" + integrity sha512-URSsbTp4g8HPHAaA4KiAD6Aya9WPx/TULfOr+YpjCJ6YWXqE9wwi3ubf9qJUQxu6W6PsiczBaQhVhpI9RLoVUA== dependencies: "@resolver-engine/imports" "^0.3.3" "@resolver-engine/imports-fs" "^0.3.3" @@ -247,72 +136,29 @@ node-fetch "^2.6.0" solc "^0.6.3" -"@ethereum-waffle/ens@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.1.0.tgz#d2d1173b7aad351360479a4dbe2626e9b960ba72" - integrity sha512-Q0/MUBJQsiPseZv0Sv/GFOVdWGn0wRChWtUd30r94qlcM7OqmXLdx4YQSMGu7BhRPdp2DQE2CYMFTKjiznfRkA== - dependencies: - "@ensdomains/ens" "^0.4.4" - "@ensdomains/resolver" "^0.2.4" - ethers "^5.0.1" - -"@ethereum-waffle/ens@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.1.1.tgz#0e0d35ff8e10e871b7dfc81eef60e4345df8f610" - integrity sha512-36O7UBmPnDLoHaMcXBoCiF+lNrgiPs8DdLz8btMK231N68L/Bb1UdhzYhEeE0XsTpCkb+IxRr0Xl3gpI+y63Mg== +"@ethereum-waffle/ens@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.2.1.tgz#9f369112d62f7aa88d010be4d133b6d0f5e8c492" + integrity sha512-dXv/Mb8EgEYOKv2jjmkFNFCmSjNv8nPk1Gaegc0J/KXWuTU6CBOhWet7YS5joGO8ORK21MvN2qVgcQj+FYw0Dw== dependencies: "@ensdomains/ens" "^0.4.4" "@ensdomains/resolver" "^0.2.4" ethers "^5.0.1" -"@ethereum-waffle/mock-contract@^2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-2.5.1.tgz#83dbd85bbcab0c0747eadca1bb802f228d7b0874" - integrity sha512-KuUCaCaMRKOI9sJ/MqiJU9ne8wpMWN4NB3beGZpPEo66jK2Ythvz5mgYLNAwAZdzM531NPKc/cWmLUdEF7jnlw== - dependencies: - ethers "^4.0.45" - -"@ethereum-waffle/mock-contract@^3.0.0", "@ethereum-waffle/mock-contract@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.1.1.tgz#ae0fe5bcdb7a0ba64069098394ea4e54a02ed293" - integrity sha512-by4eUeL7FGQzczi4nM94YcnYWV9EPsjx9WI9A66LzLHHPdEyIvAUZyyBQ+9hLYwUqJ78ppLoVx+xYWEagHx/jg== - dependencies: - "@ethersproject/abi" "^5.0.1" - ethers "^5.0.1" - -"@ethereum-waffle/mock-contract@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.1.0.tgz#64a6f8ba4e18b9b22305f0ef9e673848e1fb2c6a" - integrity sha512-mhvyb9P5aM7D2qHmaAH2ONbR95L7pVveRR9s7zfcxYdzJP0KCjy2IZfPmhOZDe/lW1tXuM3m/OL+oHfKTRYbdw== +"@ethereum-waffle/mock-contract@^3.0.0", "@ethereum-waffle/mock-contract@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.2.1.tgz#bf5f63f61c9749eb3270108893a88ff161e68f58" + integrity sha512-39GMp/IqsHF+3j3XK38cWA+nX7Q6ABfMsYkuAjtfpTguTFQKXx2C1/VJZwGOyb4de2pl4bssmN37VEraB3NWbQ== dependencies: "@ethersproject/abi" "^5.0.1" ethers "^5.0.1" -"@ethereum-waffle/provider@^2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-2.5.1.tgz#fba3c120239c4928caae82db6b1bc4a4e294017a" - integrity sha512-J2yAB7F8eLIPHghcEKjPHBD4Zuix5mM8V4c5JHO20FTrqElWJbZ8pkg/aoztPms2JEt9gEvadAFTcxhd9eYDnA== - dependencies: - ethers "^4.0.45" - ganache-core "^2.10.2" - -"@ethereum-waffle/provider@^3.0.0", "@ethereum-waffle/provider@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.1.1.tgz#74ac4f64a83f8d975d7e9e09f5b5f1ce8c794d19" - integrity sha512-2gwa7+OKSuJBvKR4Y/ljhvmQd2J31NY0n5ygLrykMrk/HMEGhzBKFu94O+cndnYRhHrB4Rl8sWcFH/0H2Qqx+Q== - dependencies: - "@ethereum-waffle/ens" "^3.1.1" - ethers "^5.0.1" - ganache-core "^2.10.2" - patch-package "^6.2.2" - postinstall-postinstall "^2.1.0" - -"@ethereum-waffle/provider@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.1.0.tgz#f8f668501db163b99d6c653083faa07eb28b5324" - integrity sha512-MPlmtYWVEjObSrneZQKHprRe00Da768IdT1+hyWq5x6uXluYdqo5hZc9LVNTd2f9WfHasZ8YWZLUC/wsEb86ig== +"@ethereum-waffle/provider@^3.0.0", "@ethereum-waffle/provider@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.2.1.tgz#d84c0603936f09afa69ecb671d56f527e9818e71" + integrity sha512-doG18hThqldsYcZIIO0YoiwV+ERx0dCVY6bkg4FKZtoymNelf15zNycb881c6QD9RnLuz6A2Jp9lmnrAD+IvYQ== dependencies: - "@ethereum-waffle/ens" "^3.1.0" + "@ethereum-waffle/ens" "^3.2.1" ethers "^5.0.1" ganache-core "^2.10.2" patch-package "^6.2.2" @@ -333,10 +179,10 @@ "@ethersproject/properties" ">=5.0.0-beta.131" "@ethersproject/strings" ">=5.0.0-beta.130" -"@ethersproject/abi@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.6.tgz#129b794e5868472374d1ecb8ff55d3ebec1f6769" - integrity sha512-ldhyQANDeVH0tMJM4SeySx9HTuKdev15/CUTSJMyvjgfLrWApE4Fmz8FRz9/giN1Nw8gRCWlPOfKkfmuypA7pg== +"@ethersproject/abi@5.0.9", "@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.0.1", "@ethersproject/abi@^5.0.5": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.9.tgz#738c1c557e56d8f395a5a27caef9b0449bc85a10" + integrity sha512-ily2OufA2DTrxkiHQw5GqbkMSnNKuwZBqKsajtT0ERhZy1r9w2CpW1bmtRMIGzaqQxCdn/GEoFogexk72cBBZQ== dependencies: "@ethersproject/address" "^5.0.4" "@ethersproject/bignumber" "^5.0.7" @@ -348,40 +194,10 @@ "@ethersproject/properties" "^5.0.3" "@ethersproject/strings" "^5.0.4" -"@ethersproject/abi@5.0.7", "@ethersproject/abi@^5.0.5", "@ethersproject/abi@^5.0.7": +"@ethersproject/abstract-provider@5.0.7", "@ethersproject/abstract-provider@^5.0.0", "@ethersproject/abstract-provider@^5.0.4", "@ethersproject/abstract-provider@^5.0.5": version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" - integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== - dependencies: - "@ethersproject/address" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - -"@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.0.1", "@ethersproject/abi@^5.0.3": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.4.tgz#92d603307ad343f9465d5e0f546df3cf72709862" - integrity sha512-T8woaIQHCJMZDAQim1vSp8ycsP2h1/TlnBHzQqR9atKknoqLiT26Wxr9AkhW1aufexkWrZTHbf2837469uS6Eg== - dependencies: - "@ethersproject/address" "^5.0.3" - "@ethersproject/bignumber" "^5.0.6" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.3" - "@ethersproject/hash" "^5.0.3" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/strings" "^5.0.3" - -"@ethersproject/abstract-provider@5.0.5", "@ethersproject/abstract-provider@^5.0.4", "@ethersproject/abstract-provider@^5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.5.tgz#797a32a8707830af1ad8f833e9c228994d5572b9" - integrity sha512-i/CjElAkzV7vQBAeoz+IpjGfcFYEP9eD7j3fzZ0fzTq03DO7PPnR+xkEZ1IoDXGwDS+55aLM1xvLDwB/Lx6IOQ== + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.7.tgz#04ee3bfe43323384e7fecf6c774975b8dec4bdc9" + integrity sha512-NF16JGn6M0zZP5ZS8KtDL2Rh7yHxZbUjBIHLNHMm/0X0BephhjUWy8jqs/Zks6kDJRzNthgmPVy41Ec0RYWPYA== dependencies: "@ethersproject/bignumber" "^5.0.7" "@ethersproject/bytes" "^5.0.4" @@ -391,34 +207,10 @@ "@ethersproject/transactions" "^5.0.5" "@ethersproject/web" "^5.0.6" -"@ethersproject/abstract-provider@^5.0.0", "@ethersproject/abstract-provider@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.3.tgz#be3dd880bb24c15cd7eb14daeae56ba9e00d967e" - integrity sha512-0dVq0IcJd6/qTjT+bhJw6ooJuCJDNWTL8SKRFBnqr4OgDW7p1AXX2l7lQd7vX9RpbnDzurSM+fTBKCVWjdm3Vw== - dependencies: - "@ethersproject/bignumber" "^5.0.6" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/networks" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/transactions" "^5.0.3" - "@ethersproject/web" "^5.0.4" - -"@ethersproject/abstract-signer@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.6.tgz#c01211665ab9c9e93988c4783b789712fd93a388" - integrity sha512-h8TZBX3pL2Xx9tmsRxfWcaaI+FcJFHWvZ/vNvFjLp8zJ0kPD501LKTt2jo44LZ20N3EW68JMoyEmRQ6bpsn+iA== - dependencies: - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - -"@ethersproject/abstract-signer@5.0.7", "@ethersproject/abstract-signer@^5.0.4", "@ethersproject/abstract-signer@^5.0.6": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.7.tgz#cdbd3bd479edf77c71b7f6a6156b0275b1176ded" - integrity sha512-8W8gy/QutEL60EoMEpvxZ8MFAEWs/JvH5nmZ6xeLXoZvmBCasGmxqHdYjo2cxg0nevkPkq9SeenSsBBZSCx+SQ== +"@ethersproject/abstract-signer@5.0.9", "@ethersproject/abstract-signer@^5.0.0", "@ethersproject/abstract-signer@^5.0.4", "@ethersproject/abstract-signer@^5.0.6": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.9.tgz#238ddc06031aeb9dfceee2add965292d7dd1acbf" + integrity sha512-CM5UNmXQaA03MyYARFDDRjHWBxujO41tVle7glf5kHcQsDDULgqSVpkliLJMtPzZjOKFeCVZBHybTZDEZg5zzg== dependencies: "@ethersproject/abstract-provider" "^5.0.4" "@ethersproject/bignumber" "^5.0.7" @@ -426,148 +218,56 @@ "@ethersproject/logger" "^5.0.5" "@ethersproject/properties" "^5.0.3" -"@ethersproject/abstract-signer@^5.0.0", "@ethersproject/abstract-signer@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.3.tgz#197bad52933a2e8c745d55f644bab1109f1be16f" - integrity sha512-uhHXqmcJcxWYD+hcvsp/pu8iSgqQzgSXHJtFGUYBBkWGpCp5kF95nSRlFnyVu9uAqZxwynBtOrPZBd1ACGBQBQ== - dependencies: - "@ethersproject/abstract-provider" "^5.0.3" - "@ethersproject/bignumber" "^5.0.6" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - -"@ethersproject/address@5.0.5", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.5.tgz#2caa65f6b7125015395b1b54c985ee0b27059cc7" - integrity sha512-DpkQ6rwk9jTefrRsJzEm6nhRiJd9pvhn1xN0rw5N/jswXG5r7BLk/GVA0mMAVWAsYfvi2xSc5L41FMox43RYEA== - dependencies: - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/rlp" "^5.0.3" - bn.js "^4.4.0" - -"@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.3.tgz#86489f836d1656135fa6cae56d9fd1ab5b2c95af" - integrity sha512-LMmLxL1wTNtvwgm/eegcaxtG/W7vHXKzHGUkK9KZEI9W+SfHrpT7cGX+hBcatcUXPANjS3TmOaQ+mq5JU5sGTw== +"@ethersproject/address@5.0.8", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.0.5": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.8.tgz#0c551659144a5a7643c6bea337149d410825298f" + integrity sha512-V87DHiZMZR6hmFYmoGaHex0D53UEbZpW75uj8AqPbjYUmi65RB4N2LPRcJXuWuN2R0Y2CxkvW6ArijWychr5FA== dependencies: - "@ethersproject/bignumber" "^5.0.6" + "@ethersproject/bignumber" "^5.0.10" "@ethersproject/bytes" "^5.0.4" "@ethersproject/keccak256" "^5.0.3" "@ethersproject/logger" "^5.0.5" "@ethersproject/rlp" "^5.0.3" - bn.js "^4.4.0" -"@ethersproject/base64@5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.4.tgz#b0d8fdbf3dda977cf546dcd35725a7b1d5256caa" - integrity sha512-4KRykQ7BQMeOXfvio1YITwHjxwBzh92UoXIdzxDE1p53CK28bbHPdsPNYo0wl0El7lJAMpT2SOdL0hhbWRnyIA== - dependencies: - "@ethersproject/bytes" "^5.0.4" - -"@ethersproject/base64@^5.0.0", "@ethersproject/base64@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.3.tgz#d0aaa32c9ab08e2d62a6238581607ab6e929297e" - integrity sha512-sFq+/UwGCQsLxMvp7yO7yGWni87QXoV3C3IfjqUSY2BHkbZbCDm+PxZviUkiKf+edYZ2Glp0XnY7CgKSYUN9qw== - dependencies: - "@ethersproject/bytes" "^5.0.4" - -"@ethersproject/basex@5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.4.tgz#93e1cd11f9a47281da2389de24f88e13e9d90847" - integrity sha512-ixIr/kKiAoSzOnSc777AGIOAhKai5Ivqr4HO/Gz+YG+xkfv6kqD6AW4ga9vM20Wwb0QBhh3LoRWTu4V1K+x9Ew== +"@ethersproject/base64@5.0.6", "@ethersproject/base64@^5.0.0", "@ethersproject/base64@^5.0.3": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.6.tgz#26311ebf29ea3d0b9c300ccf3e1fdc44b7481516" + integrity sha512-HwrGn8YMiUf7bcdVvB4NJ+eWT0BtEFpDtrYxVXEbR7p/XBSJjwiR7DEggIiRvxbualMKg+EZijQWJ3az2li0uw== dependencies: "@ethersproject/bytes" "^5.0.4" - "@ethersproject/properties" "^5.0.3" -"@ethersproject/basex@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.3.tgz#f8c9bc449a089131f52cfa8698cf77bc22e27e32" - integrity sha512-EvoER+OXsMAZlvbC0M/9UTxjvbBvTccYCI+uCAhXw+eS1+SUdD4v7ekAFpVX78rPLrLZB1vChKMm6vPHIu3WRA== +"@ethersproject/basex@5.0.6", "@ethersproject/basex@^5.0.3": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.6.tgz#ab95c32e48288a3d868726463506641cb1e9fb6b" + integrity sha512-Y/8dowRxBF3bsKkqEp7XN4kcFFQ0o5xxP1YyopfqkXejaOEGiD7ToQdQ0pIZpAJ5GreW56oFOTDDSO6ZcUCNYg== dependencies: "@ethersproject/bytes" "^5.0.4" "@ethersproject/properties" "^5.0.3" -"@ethersproject/bignumber@5.0.8", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.8.tgz#cee33bd8eb0266176def0d371b45274b1d2c4ec0" - integrity sha512-KXFVAFKS1jdTXYN8BE5Oj+ZfPMh28iRdFeNGBVT6cUFdtiPVqeXqc0ggvBqA3A1VoFFGgM7oAeaagA393aORHA== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - bn.js "^4.4.0" - -"@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.0", "@ethersproject/bignumber@^5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.6.tgz#1b5494a640c64096538e622b6ba8a5b8439ebde4" - integrity sha512-fLilYOSH3DJXBrimx7PwrJdY/zAI5MGp229Mvhtcur76Lgt4qNWu9HTiwMGHP01Tkm3YP5gweF83GrQrA2tYUA== +"@ethersproject/bignumber@5.0.12", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.0", "@ethersproject/bignumber@^5.0.10", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.0.8": + version "5.0.12" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.12.tgz#fe4a78667d7cb01790f75131147e82d6ea7e7cba" + integrity sha512-mbFZjwthx6vFlHG9owXP/C5QkNvsA+xHpDCkPPPdG2n1dS9AmZAL5DI0InNLid60rQWL3MXpEl19tFmtL7Q9jw== dependencies: - "@ethersproject/bytes" "^5.0.4" + "@ethersproject/bytes" "^5.0.8" "@ethersproject/logger" "^5.0.5" bn.js "^4.4.0" -"@ethersproject/bytes@5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.5.tgz#688b70000e550de0c97a151a21f15b87d7f97d7c" - integrity sha512-IEj9HpZB+ACS6cZ+QQMTqmu/cnUK2fYNE6ms/PVxjoBjoxc6HCraLpam1KuRvreMy0i523PLmjN8OYeikRdcUQ== - dependencies: - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.0", "@ethersproject/bytes@^5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.4.tgz#328d9d929a3e970964ecf5d62e12568a187189f1" - integrity sha512-9R6A6l9JN8x1U4s1dJCR+9h3MZTT3xQofr/Xx8wbDvj6NnY4CbBB0o8ZgHXvR74yV90pY2EzCekpkMBJnRzkSw== +"@ethersproject/bytes@5.0.8", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.8.tgz#cf1246a6a386086e590063a4602b1ffb6cc43db1" + integrity sha512-O+sJNVGzzuy51g+EMK8BegomqNIg+C2RO6vOt0XP6ac4o4saiq69FnjlsrNslaiMFVO7qcEHBsWJ9hx1tj1lMw== dependencies: "@ethersproject/logger" "^5.0.5" -"@ethersproject/constants@5.0.5", "@ethersproject/constants@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.5.tgz#0ed19b002e8404bdf6d135234dc86a7d9bcf9b71" - integrity sha512-foaQVmxp2+ik9FrLUCtVrLZCj4M3Ibgkqvh+Xw/vFRSerkjVSYePApaVE5essxhoSlF1U9oXfWY09QI2AXtgKA== - dependencies: - "@ethersproject/bignumber" "^5.0.7" - -"@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.0", "@ethersproject/constants@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.3.tgz#7ccb8e2e9f14fbcc2d52d0e1402a83a5613a2f65" - integrity sha512-iN7KBrA0zNFybDyrkcAPOcyU3CHXYFMd+KM2Jr07Kjg+DVB5wPpEXsOdd/K1KWFsFtGfNdPZ7QP8siLtCePXrQ== - dependencies: - "@ethersproject/bignumber" "^5.0.6" - -"@ethersproject/contracts@5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.5.tgz#64831a341ec8ca225e83ff3e9437c26b970fd5d7" - integrity sha512-tFI255lFbmbqMkgnuyhDWHl3yWqttPlReplYuVvDCT/SuvBjLR4ad2uipBlh1fh5X1ipK9ettAoV4S0HKim4Kw== +"@ethersproject/constants@5.0.7", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.0", "@ethersproject/constants@^5.0.4": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.7.tgz#44ff979e5781b17c8c6901266896c3ee745f4e7e" + integrity sha512-cbQK1UpE4hamB52Eg6DLhJoXeQ1plSzekh5Ujir1xdREdwdsZPPXKczkrWqBBR0KyywJZHN/o/hj0w8j7scSGg== dependencies: - "@ethersproject/abi" "^5.0.5" - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" -"@ethersproject/contracts@^5.0.0", "@ethersproject/contracts@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.3.tgz#9e9a395b6c9ddf1f456d9443e96c0c8d7660f79f" - integrity sha512-60H7UJx6qsp3JP5q3jFjzVNGUygRfz+XzfRwx/VeCKjHBUpFxPEIO2S30SMjYKPqw6JsgxbOjxFFZgOfQiNesw== - dependencies: - "@ethersproject/abi" "^5.0.3" - "@ethersproject/abstract-provider" "^5.0.3" - "@ethersproject/abstract-signer" "^5.0.3" - "@ethersproject/address" "^5.0.3" - "@ethersproject/bignumber" "^5.0.6" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - -"@ethersproject/contracts@^5.0.5": +"@ethersproject/contracts@5.0.8", "@ethersproject/contracts@^5.0.0", "@ethersproject/contracts@^5.0.5": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.8.tgz#71d3ba16853a1555be2e161a6741df186f81c73b" integrity sha512-PecBL4vnsrpuks2lzzkRsOts8csJy338HNDKDIivbFmx92BVzh3ohOOv3XsoYPSXIHQvobF959W+aSk3RCZL/g== @@ -583,31 +283,21 @@ "@ethersproject/properties" "^5.0.3" "@ethersproject/hardware-wallets@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@ethersproject/hardware-wallets/-/hardware-wallets-5.0.8.tgz#cea6a6b76b7eb165fc248cc4908df82bc4725fc6" - integrity sha512-PUfbcCjeaz4LOez+UvqtMbyU1+gnJ8jhGnewedNCPQanj9lLMXpFeSUSkV4w9WkbcA7wuV2UrEPvFJer1zHr2w== + version "5.0.11" + resolved "https://registry.yarnpkg.com/@ethersproject/hardware-wallets/-/hardware-wallets-5.0.11.tgz#e82888d2d26fa54dc01c763ace133f57798467ac" + integrity sha512-b4xhDehFy8gNBJv7E0YmTPyfKaJqtkgaFTH43yso4sa2Gj1eOp0QtHrUP1/YWMOnaxIgosPR/vmcQlwk40AlgA== dependencies: - "@ledgerhq/hw-app-eth" "5.3.0" - "@ledgerhq/hw-transport" "5.3.0" - "@ledgerhq/hw-transport-u2f" "5.3.0" + "@ledgerhq/hw-app-eth" "5.27.2" + "@ledgerhq/hw-transport" "5.26.0" + "@ledgerhq/hw-transport-u2f" "5.26.0" ethers "^5.0.13" optionalDependencies: - "@ledgerhq/hw-transport-node-hid" "5.3.0" - -"@ethersproject/hash@5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.5.tgz#e383ba2c7941834266fa6e2cf543d2b0c50a9d59" - integrity sha512-GpI80/h2HDpfNKpCZoxQJCjOQloGnlD5hM1G+tZe8FQDJhEvFjJoPDuWv+NaYjJfOciKS2Axqc4Q4WamdLoUgg== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/strings" "^5.0.4" + "@ledgerhq/hw-transport-node-hid" "5.26.0" -"@ethersproject/hash@5.0.6", "@ethersproject/hash@^5.0.4": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.6.tgz#2a2e8a1470685421217e9e86e9971ca636e609ce" - integrity sha512-Gvh57v6BWhwnud6l7tMfQm32PRQ2DYx2WaAAQmAxAfYvmzUkpQCBstnGeNMXIL8/2wdkvcB2u+WZRWaZtsFuUQ== +"@ethersproject/hash@5.0.9", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.0.0", "@ethersproject/hash@^5.0.4": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.9.tgz#81252a848185b584aa600db4a1a68cad9229a4d4" + integrity sha512-e8/i2ZDeGSgCxXT0vocL54+pMbw5oX5fNjb2E3bAIvdkh5kH29M7zz1jHu1QDZnptIuvCZepIbhUH8lxKE2/SQ== dependencies: "@ethersproject/abstract-signer" "^5.0.6" "@ethersproject/address" "^5.0.5" @@ -618,20 +308,10 @@ "@ethersproject/properties" "^5.0.4" "@ethersproject/strings" "^5.0.4" -"@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.0.0", "@ethersproject/hash@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.3.tgz#41f17fd7972838831620338dad932bfe3d684209" - integrity sha512-KSnJyL0G9lxbOK0UPrUcaYTc/RidrX8c+kn7xnEpTmSGxqlndw4BzvQcRgYt31bOIwuFtwlWvOo6AN2tJgdQtA== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/strings" "^5.0.3" - -"@ethersproject/hdnode@5.0.5", "@ethersproject/hdnode@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.5.tgz#1f89aad0a5ba9dfae3a85a36e0669f8bc7a74781" - integrity sha512-Ho4HZaK+KijE5adayvjAGusWMnT0mgwGa5hGMBofBOgX9nqiKf6Wxx68SXBGI1/L3rmKo6mlAjxUd8gefs0teQ== +"@ethersproject/hdnode@5.0.7", "@ethersproject/hdnode@^5.0.0", "@ethersproject/hdnode@^5.0.4": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.7.tgz#c7bce94a337ea65e37c46bab09a83e1c1a555d99" + integrity sha512-89tphqlji4y/LNE1cSaMQ3hrBtJ4lO1qWGi2hn54LiHym85DTw+zAKbA8QgmdSdJDLGR/kc9VHaIPQ+vZQ2LkQ== dependencies: "@ethersproject/abstract-signer" "^5.0.4" "@ethersproject/basex" "^5.0.3" @@ -646,28 +326,10 @@ "@ethersproject/transactions" "^5.0.5" "@ethersproject/wordlists" "^5.0.4" -"@ethersproject/hdnode@^5.0.0", "@ethersproject/hdnode@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.3.tgz#47c83f34d0ccb15a110f28ba8cc00590b81197b6" - integrity sha512-+VQj0gRxfwRPHH7J32fTU8Ouk9CBFBIqvl937I0swO5PghNXBy/1U+o8gZMOitLIId1P3Wr6QcaDHkusi7OQXw== - dependencies: - "@ethersproject/abstract-signer" "^5.0.3" - "@ethersproject/basex" "^5.0.3" - "@ethersproject/bignumber" "^5.0.6" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/pbkdf2" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/sha2" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - "@ethersproject/strings" "^5.0.3" - "@ethersproject/transactions" "^5.0.3" - "@ethersproject/wordlists" "^5.0.3" - -"@ethersproject/json-wallets@5.0.7", "@ethersproject/json-wallets@^5.0.6": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.7.tgz#4c48753b38ce7bce23a55f25c23f24617cf560e5" - integrity sha512-dgOn9JtGgjT28mDXs4LYY2rT4CzS6bG/rxoYuPq3TLHIf6nmvBcr33Fee6RrM/y8UAx4gyIkf6wb2cXsOctvQQ== +"@ethersproject/json-wallets@5.0.9", "@ethersproject/json-wallets@^5.0.0", "@ethersproject/json-wallets@^5.0.6": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.9.tgz#2e1708c2854c4ab764e35920bd1f44c948b95434" + integrity sha512-EWuFvJd8nu90dkmJwmJddxOYCvFvMkKBsZi8rxTme2XEZsHKOFnybVkoL23u7ZtApuEfTKmVcR2PTwgZwqDsKw== dependencies: "@ethersproject/abstract-signer" "^5.0.4" "@ethersproject/address" "^5.0.4" @@ -683,149 +345,45 @@ aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/json-wallets@^5.0.0", "@ethersproject/json-wallets@^5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.5.tgz#35fa0bb9360c4f2ac62b3e2d7ebe2c4913baa324" - integrity sha512-g2kdOY5l+TDE5rIE9BLK+S7fiQMIIsM+KTxxVu4H2COROFwCSMeEb5uMCkccXc3iDX1sOBF653h8kTXCaFY03Q== - dependencies: - "@ethersproject/abstract-signer" "^5.0.3" - "@ethersproject/address" "^5.0.3" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/hdnode" "^5.0.3" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/pbkdf2" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/strings" "^5.0.3" - "@ethersproject/transactions" "^5.0.3" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.0.3", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.0", "@ethersproject/keccak256@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.3.tgz#f094a8fca3bb913c044593c4f382be424292e588" - integrity sha512-VhW3mgZMBZlETV6AyOmjNeNG+Pg68igiKkPpat8/FZl0CKnfgQ+KZQZ/ee1vT+X0IUM8/djqnei6btmtbA27Ug== +"@ethersproject/keccak256@5.0.6", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.0", "@ethersproject/keccak256@^5.0.3": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.6.tgz#5b5ba715ef1be86efde5c271f896fa0daf0e1efe" + integrity sha512-eJ4Id/i2rwrf5JXEA7a12bG1phuxjj47mPZgDUbttuNBodhSuZF2nEO5QdpaRjmlphQ8Kt9PNqY/z7lhtJptZg== dependencies: "@ethersproject/bytes" "^5.0.4" js-sha3 "0.5.7" -"@ethersproject/keccak256@5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.4.tgz#36ca0a7d1ae2a272da5654cb886776d0c680ef3a" - integrity sha512-GNpiOUm9PGUxFNqOxYKDQBM0u68bG9XC9iOulEQ8I0tOx/4qUpgVzvgXL6ugxr0RY554Gz/NQsVqknqPzUcxpQ== - dependencies: - "@ethersproject/bytes" "^5.0.4" - js-sha3 "0.5.7" +"@ethersproject/logger@5.0.8", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.0", "@ethersproject/logger@^5.0.5": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.8.tgz#135c1903d35c878265f3cbf2b287042c4c20d5d4" + integrity sha512-SkJCTaVTnaZ3/ieLF5pVftxGEFX56pTH+f2Slrpv7cU0TNpUZNib84QQdukd++sWUp/S7j5t5NW+WegbXd4U/A== -"@ethersproject/logger@5.0.6": +"@ethersproject/networks@5.0.6", "@ethersproject/networks@^5.0.0", "@ethersproject/networks@^5.0.3": version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.6.tgz#faa484203e86e08be9e07fef826afeef7183fe88" - integrity sha512-FrX0Vnb3JZ1md/7GIZfmJ06XOAA8r3q9Uqt9O5orr4ZiksnbpXKlyDzQtlZ5Yv18RS8CAUbiKH9vwidJg1BPmQ== - -"@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.0", "@ethersproject/logger@^5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.5.tgz#e3ba3d0bcf9f5be4da5f043b1e328eb98b80002f" - integrity sha512-gJj72WGzQhUtCk6kfvI8elTaPOQyMvrMghp/nbz0ivTo39fZ7IjypFh/ySDeUSdBNplAwhzWKKejQhdpyefg/w== - -"@ethersproject/networks@5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.4.tgz#6d320a5e15a0cda804f5da88be0ba846156f6eec" - integrity sha512-/wHDTRms5mpJ09BoDrbNdFWINzONe05wZRgohCXvEv39rrH/Gd/yAnct8wC0RsW3tmFOgjgQxuBvypIxuUynTw== - dependencies: - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/networks@^5.0.0", "@ethersproject/networks@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.3.tgz#c4ebe56e79ca399247382627e50a022aa68ece55" - integrity sha512-Gjpejul6XFetJXyvHCd37IiCC00203kYGU9sMaRMZcAcYKszCkbOeo/Q7Mmdr/fS7YBbB5iTOahDJWiRLu/b7A== - dependencies: - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/pbkdf2@5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.4.tgz#a0841d53f5ce9a2b52a65a349d2dc15910b0a767" - integrity sha512-9jVBjHXQKfr9+3bkCg01a8Cd1H9e+7Kw3ZMIvAxD0lZtuzrXsJxm1hVwY9KA+PRUvgS/9tTP4viXQYwLAax7zg== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/sha2" "^5.0.3" - -"@ethersproject/pbkdf2@^5.0.0", "@ethersproject/pbkdf2@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.3.tgz#f9eca284a458cd11179d407884c595412d8d2775" - integrity sha512-asc+YgJn7v7GKWYXGz3GM1d9XYI2HvdCw1cLEow2niEC9BfYA29rr1exz100zISk95GIU1YP2zV//zHsMtWE5Q== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/sha2" "^5.0.3" - -"@ethersproject/properties@5.0.4", "@ethersproject/properties@^5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.4.tgz#a67a1f5a52c30850b5062c861631e73d131f666e" - integrity sha512-UdyX3GqBxFt15B0uSESdDNmhvEbK3ACdDXl2soshoPcneXuTswHDeA0LoPlnaZzhbgk4p6jqb4GMms5C26Qu6A== - dependencies: - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.0", "@ethersproject/properties@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.3.tgz#991aef39a5f87d4645cee76cec4df868bfb08be6" - integrity sha512-wLCSrbywkQgTO6tIF9ZdKsH9AIxPEqAJF/z5xcPkz1DK4mMAZgAXRNw1MrKYhyb+7CqNHbj3vxenNKFavGY/IA== + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.6.tgz#4d6586bbebfde1c027504ebf6dfb783b29c3803a" + integrity sha512-2Cg1N5109zzFOBfkyuPj+FfF7ioqAsRffmybJ2lrsiB5skphIAE72XNSCs4fqktlf+rwSh/5o/UXRjXxvSktZw== dependencies: "@ethersproject/logger" "^5.0.5" - -"@ethersproject/providers@5.0.10": - version "5.0.10" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.10.tgz#761ae58aa0749dfc6059fc01c46fe04df2b6346d" - integrity sha512-Nre9ZxO+Bjpf5bK1noUS7lx7YFuSAofYr9MM71zbrOuLuR2IhJm8yeKLewbRpnA/Cx6ZHUCYCo4B8FVOWXW2Zg== - dependencies: - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" - "@ethersproject/basex" "^5.0.3" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/networks" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/rlp" "^5.0.3" - "@ethersproject/sha2" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/web" "^5.0.6" - bech32 "1.1.4" - ws "7.2.3" - -"@ethersproject/providers@5.0.13": - version "5.0.13" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.13.tgz#1ec39e544353e1090803955ba6a1920ee942d6ab" - integrity sha512-5jsuk1FwXxmoQApGs8LSQyS43KP01pHA+6cQ1OPov5pT5Pcqe6ffh6UD1//BZ9Vjf+5e9AQqIk8w7FkGyROuCA== - dependencies: - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" - "@ethersproject/basex" "^5.0.3" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/networks" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/rlp" "^5.0.3" + +"@ethersproject/pbkdf2@5.0.6", "@ethersproject/pbkdf2@^5.0.0", "@ethersproject/pbkdf2@^5.0.3": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.6.tgz#105dbfb08cd5fcf33869b42bfdc35a3ebd978cbd" + integrity sha512-CUYciSxR/AaCoKMJk3WUW+BDhR41G3C+O9lOeZ4bR1wDhLKL2Z8p0ciF5XDEiVbmI4CToW6boVKybeVMdngRrg== + dependencies: + "@ethersproject/bytes" "^5.0.4" "@ethersproject/sha2" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/web" "^5.0.6" - bech32 "1.1.4" - ws "7.2.3" -"@ethersproject/providers@5.0.14", "@ethersproject/providers@^5.0.14": - version "5.0.14" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.14.tgz#751ccb14b4a8c8e9e4be171818c23f4601be90ba" - integrity sha512-K9QRRkkHWyprm3g4L8U9aPx5uyivznL4RYemkN2shCQumyGqFJ5SO+OtQrgebVm0JpGwFAUGugnhRUh49sjErw== +"@ethersproject/properties@5.0.6", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.0", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.0.4": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.6.tgz#44d82aaa294816fd63333e7def42426cf0e87b3b" + integrity sha512-a9DUMizYhJ0TbtuDkO9iYlb2CDlpSKqGPDr+amvlZhRspQ6jbl5Eq8jfu4SCcGlcfaTbguJmqGnyOGn1EFt6xA== + dependencies: + "@ethersproject/logger" "^5.0.5" + +"@ethersproject/providers@5.0.17", "@ethersproject/providers@^5.0.0", "@ethersproject/providers@^5.0.14": + version "5.0.17" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.17.tgz#f380e7831149e24e7a1c6c9b5fb1d6dfc729d024" + integrity sha512-bJnvs5X7ttU5x2ekGJYG7R3Z+spZawLFfR0IDsbaMDLiCwZOyrgk+VTBU7amSFLT0WUhWFv8WwSUB+AryCQG1Q== dependencies: "@ethersproject/abstract-provider" "^5.0.4" "@ethersproject/abstract-signer" "^5.0.4" @@ -847,105 +405,45 @@ bech32 "1.1.4" ws "7.2.3" -"@ethersproject/providers@^5.0.0", "@ethersproject/providers@^5.0.6", "@ethersproject/providers@^5.0.7": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.7.tgz#8dfb9eacb36d3c05c08831f71ad43fb46d2aaec6" - integrity sha512-lT+w/w2PKX9oyddX0DTBYl2CVHJTJONZP5HLJ3MzVvSA5dTOdiJ9Sx5rpqR7Tw+mxVA9xPjanoNCaPPIT7cykQ== - dependencies: - "@ethersproject/abstract-provider" "^5.0.3" - "@ethersproject/abstract-signer" "^5.0.3" - "@ethersproject/address" "^5.0.3" - "@ethersproject/basex" "^5.0.3" - "@ethersproject/bignumber" "^5.0.6" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.3" - "@ethersproject/hash" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/networks" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/rlp" "^5.0.3" - "@ethersproject/sha2" "^5.0.3" - "@ethersproject/strings" "^5.0.3" - "@ethersproject/transactions" "^5.0.3" - "@ethersproject/web" "^5.0.4" - bech32 "1.1.4" - ws "7.2.3" - -"@ethersproject/random@5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.4.tgz#98f7cf65b0e588cec39ef24843e391ed5004556f" - integrity sha512-AIZJhqs6Ba4/+U3lOjt3QZbP6b/kuuGLJUYFUonAgWmkTHwqsCwYnFvnHKQSUuHbXHvErp7WFXFlztx+yMn3kQ== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/random@^5.0.0", "@ethersproject/random@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.3.tgz#ec16546fffdc10b9082f1207bd3a09f54cbcf5e6" - integrity sha512-pEhWRbgNeAY1oYk4nIsEtCTh9TtLsivIDbOX11n+DLZLYM3c8qCLxThXtsHwVsMs1JHClZr5auYC4YxtVVzO/A== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/rlp@5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.4.tgz#0090a0271e84ea803016a112a79f5cfd80271a77" - integrity sha512-5qrrZad7VTjofxSsm7Zg/7Dr4ZOln4S2CqiDdOuTv6MBKnXj0CiBojXyuDy52M8O3wxH0CyE924hXWTDV1PQWQ== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/rlp@^5.0.0", "@ethersproject/rlp@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.3.tgz#841a5edfdf725f92155fe74424f5510c9043c13a" - integrity sha512-Hz4yyA/ilGafASAqtTlLWkA/YqwhQmhbDAq2LSIp1AJNx+wtbKWFAKSckpeZ+WG/xZmT+fw5OFKK7a5IZ4DR5g== +"@ethersproject/random@5.0.6", "@ethersproject/random@^5.0.0", "@ethersproject/random@^5.0.3": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.6.tgz#9be80a1065f2b8e6f321dccb3ebeb4886cac9ea4" + integrity sha512-8nsVNaZvZ9OD5NXfzE4mmz8IH/1DYJbAR95xpRxZkIuNmfn6QlMp49ccJYZWGhs6m0Zj2+FXjx3pzXfYlo9/dA== dependencies: "@ethersproject/bytes" "^5.0.4" "@ethersproject/logger" "^5.0.5" -"@ethersproject/sha2@5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.4.tgz#40f639721a27dbe034b3dee021ba20b054586fec" - integrity sha512-0yFhf1mspxAfWdXXoPtK94adUeu1R7/FzAa+DfEiZTc76sz/vHXf0LSIazoR3znYKFny6haBxME+usbvvEcF3A== +"@ethersproject/rlp@5.0.6", "@ethersproject/rlp@^5.0.0", "@ethersproject/rlp@^5.0.3": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.6.tgz#29f9097348a3c330811997433b7df89ab51cd644" + integrity sha512-M223MTaydfmQSsvqAl0FJZDYFlSqt6cgbhnssLDwqCKYegAHE16vrFyo+eiOapYlt32XAIJm0BXlqSunULzZuQ== dependencies: "@ethersproject/bytes" "^5.0.4" "@ethersproject/logger" "^5.0.5" - hash.js "1.1.3" -"@ethersproject/sha2@^5.0.0", "@ethersproject/sha2@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.3.tgz#52c16edc1135d0ec7d242d88eed035dae72800c0" - integrity sha512-B1U9UkgxhUlC1J4sFUL2GwTo33bM2i/aaD3aiYdTh1FEXtGfqYA89KN1DJ83n+Em8iuvyiBRk6u30VmgqlHeHA== +"@ethersproject/sha2@5.0.6", "@ethersproject/sha2@^5.0.0", "@ethersproject/sha2@^5.0.3": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.6.tgz#175116dc10b866a0a381f6316d094bcc510bee3c" + integrity sha512-30gypDLkfkP5gE3llqi0jEuRV8m4/nvzeqmqMxiihZ7veFQHqDaGpyFeHzFim+qGeH9fq0lgYjavLvwW69+Fkw== dependencies: "@ethersproject/bytes" "^5.0.4" "@ethersproject/logger" "^5.0.5" hash.js "1.1.3" -"@ethersproject/signing-key@5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.5.tgz#acfd06fc05a14180df7e027688bbd23fc4baf782" - integrity sha512-Z1wY7JC1HVO4CvQWY2TyTTuAr8xK3bJijZw1a9G92JEmKdv1j255R/0YLBBcFTl2J65LUjtXynNJ2GbArPGi5g== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - elliptic "6.5.3" - -"@ethersproject/signing-key@^5.0.0", "@ethersproject/signing-key@^5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.4.tgz#a5334ce8a52d4e9736dc8fb6ecc384704ecf8783" - integrity sha512-I6pJoga1IvhtjYK5yXzCjs4ZpxrVbt9ZRAlpEw0SW9UuV020YfJH5EIVEGR2evdRceS3nAQIggqbsXSkP8Y1Dg== +"@ethersproject/signing-key@5.0.7", "@ethersproject/signing-key@^5.0.0", "@ethersproject/signing-key@^5.0.4": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.7.tgz#d03bfc5f565efb962bafebf8e6965e70d1c46d31" + integrity sha512-JYndnhFPKH0daPcIjyhi+GMcw3srIHkQ40hGRe6DA0CdGrpMfgyfSYDQ2D8HL2lgR+Xm4SHfEB0qba6+sCyrvg== dependencies: "@ethersproject/bytes" "^5.0.4" "@ethersproject/logger" "^5.0.5" "@ethersproject/properties" "^5.0.3" elliptic "6.5.3" -"@ethersproject/solidity@5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.5.tgz#97a7d8a67f2d944f208c948fed0d565512bcc2be" - integrity sha512-DMFQ0ouXmNVoKWbGEUFGi8Urli4SJip9jXafQyFHWPRr5oJUqDVkNfwcyC37k+mhBG93k7qrYXCH2xJnGEOxHg== +"@ethersproject/solidity@5.0.7", "@ethersproject/solidity@^5.0.0": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.7.tgz#72a3455f47a454db2dcf363992d42e9045dc7fce" + integrity sha512-dUevKUZ06p/VMLP/+cz4QUV+lA17NixucDJfm0ioWF0B3R0Lf+6wqwPchcqiAXlxkNFGIax7WNLgGMh4CkQ8iw== dependencies: "@ethersproject/bignumber" "^5.0.7" "@ethersproject/bytes" "^5.0.4" @@ -953,39 +451,19 @@ "@ethersproject/sha2" "^5.0.3" "@ethersproject/strings" "^5.0.4" -"@ethersproject/solidity@^5.0.0", "@ethersproject/solidity@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.3.tgz#178197cb2f19d2986dadd515928c5dba3cb27e55" - integrity sha512-a6ni4OIj1e+JrvDiuLVqygYmAh53Ljk5iErkjzPgFBY8dz9xQfDxhpASjOZY0lzCf+N125yeK9N7Vm3HI7OLzQ== - dependencies: - "@ethersproject/bignumber" "^5.0.6" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/sha2" "^5.0.3" - "@ethersproject/strings" "^5.0.3" - -"@ethersproject/strings@5.0.5", "@ethersproject/strings@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.5.tgz#ed7e99a282a02f40757691b04a24cd83f3752195" - integrity sha512-JED6WaIV00xM/gvj8vSnd+0VWtDYdidTmavFRCTQakqfz+4tDo6Jz5LHgG+dd45h7ah7ykCHW0C7ZXWEDROCXQ== +"@ethersproject/strings@5.0.7", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.0", "@ethersproject/strings@^5.0.4": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.7.tgz#8dc68f794c9e2901f3b75e53b2afbcb6b6c15037" + integrity sha512-a+6T80LvmXGMOOWQTZHtGGQEg1z4v8rm8oX70KNs55YtPXI/5J3LBbVf5pyqCKSlmiBw5IaepPvs5XGalRUSZQ== dependencies: "@ethersproject/bytes" "^5.0.4" "@ethersproject/constants" "^5.0.4" "@ethersproject/logger" "^5.0.5" -"@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.0", "@ethersproject/strings@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.3.tgz#756cc4b93203a091966d40824b0b28048e2d5d9b" - integrity sha512-8kEx3+Z6cMn581yh093qnaSa8H7XzmLn6g8YFDHUpzXM7+bvXvnL2ciHrJ+EbvaMQZpej6nNtl0nm7XF4PmQHA== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/transactions@5.0.6", "@ethersproject/transactions@^5.0.5": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.6.tgz#b8b27938be6e9ed671dbdd35fe98af8b14d0df7c" - integrity sha512-htsFhOD+NMBxx676A8ehSuwVV49iqpSB+CkjPZ02tpNew0K6p8g0CZ46Z1ZP946gIHAU80xQ0NACHYrjIUaCFA== +"@ethersproject/transactions@5.0.8", "@ethersproject/transactions@^5.0.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.0.5": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.8.tgz#3b4d7041e13b957a9c4f131e0aea9dae7b6f5a23" + integrity sha512-i7NtOXVzUe+YSU6QufzlRrI2WzHaTmULAKHJv4duIZMLqzehCBXGA9lTpFgFdqGYcQJ7vOtNFC2BB2mSjmuXqg== dependencies: "@ethersproject/address" "^5.0.4" "@ethersproject/bignumber" "^5.0.7" @@ -997,94 +475,19 @@ "@ethersproject/rlp" "^5.0.3" "@ethersproject/signing-key" "^5.0.4" -"@ethersproject/transactions@^5.0.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.0.3", "@ethersproject/transactions@^5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.4.tgz#76d7afdb0667efde22b054de3a8dc5b440eb6cd2" - integrity sha512-QvS5CzxmL46D9Y3OlddurYgEIi5mb0eAgrKm5pM074Uz/1qxCYr+Ah12I4hpaciZtCq4Fe12YWZqUFb1vGcH6Q== - dependencies: - "@ethersproject/address" "^5.0.3" - "@ethersproject/bignumber" "^5.0.6" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.3" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/rlp" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - -"@ethersproject/units@5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.5.tgz#6e088900cf1f982ff60c9c35ce0a0f797ca7d78c" - integrity sha512-XHZZIA+o4Sfne9ycWWdoCpMQSpTAF1V1fxNIfgFAVYBp0JKZp4YypDdHCDleAP4rPuFgSNeJqZyb3kAe1VJMkg== - dependencies: - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/units@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.6.tgz#e1169ecffb7e8d5eab84e1481a4e35df19045708" - integrity sha512-tsJuy4mipppdmooukRfhXt8fGx9nxvfvG6Xdy0RDm7LzHsjghjwQ69m2bCpId6SDSR1Uq1cQ9irPiUBSyWolUA== +"@ethersproject/units@5.0.8", "@ethersproject/units@^5.0.0": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.8.tgz#563325b20fe1eceff7b61857711d5e2b3f38fd09" + integrity sha512-3O4MaNHFs05vC5v2ZGqVFVWtO1WyqFejO78M7Qh16njo282aoMlENtVI6cn2B36zOLFXRvYt2pYx6xCG53qKzg== dependencies: "@ethersproject/bignumber" "^5.0.7" "@ethersproject/constants" "^5.0.4" "@ethersproject/logger" "^5.0.5" -"@ethersproject/units@^5.0.0", "@ethersproject/units@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.3.tgz#3b6d7a027f53b25e1752d353f3c5cedb4e4a0dc7" - integrity sha512-PyQ066mFczUy0CSJJrc/VK+1ATh1bsI8EkzAVT7GQ0IPJlNDcXnGNtlH5EQGHzuXA3GDQNV23poB0Cy/WDb2zg== - dependencies: - "@ethersproject/bignumber" "^5.0.6" - "@ethersproject/constants" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/wallet@5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.5.tgz#93973d919e75bbc5422f11d1c3f39695f1a27e71" - integrity sha512-NbrKmsW3w+5dVOEyVCN5VAAIp3y8ckutW6AV7Lo0Hn8RO9mLT8ZFzLGp4lzgJoxkm+EV8BE+x1N6NdiOgUzRng== - dependencies: - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/hdnode" "^5.0.4" - "@ethersproject/json-wallets" "^5.0.6" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/wordlists" "^5.0.4" - -"@ethersproject/wallet@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.6.tgz#8a3f7556a614b54c24f729b2dac893a66b931ac9" - integrity sha512-dRqx3+Degc5pvjaeeTHuk2EuTRM3b6ce/TiV0HRZhRXYnKyyjg0iYXEZo/b6p3rnV+Xhwxkc0+I/ISPkNpictA== - dependencies: - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/hdnode" "^5.0.4" - "@ethersproject/json-wallets" "^5.0.6" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/wordlists" "^5.0.4" - -"@ethersproject/wallet@5.0.7": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.7.tgz#9d4540f97d534e3d61548ace30f15857209b3f02" - integrity sha512-n2GX1+2Tc0qV8dguUcLkjNugINKvZY7u/5fEsn0skW9rz5+jHTR5IKMV6jSfXA+WjQT8UCNMvkI3CNcdhaPbTQ== +"@ethersproject/wallet@5.0.9", "@ethersproject/wallet@^5.0.0": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.9.tgz#976c7d950489c40308d676869d24e59ab7b82ad1" + integrity sha512-GfpQF56PO/945SJq7Wdg5F5U6wkxaDgkAzcgGbCW6Joz8oW8MzKItkvYCzMh+j/8gJMzFncsuqX4zg2gq3J6nQ== dependencies: "@ethersproject/abstract-provider" "^5.0.4" "@ethersproject/abstract-signer" "^5.0.4" @@ -1102,42 +505,10 @@ "@ethersproject/transactions" "^5.0.5" "@ethersproject/wordlists" "^5.0.4" -"@ethersproject/wallet@^5.0.0", "@ethersproject/wallet@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.3.tgz#45016e0fd3a79dcbb2be867a5181bdd055fbb3ac" - integrity sha512-Nouwfh1HlpxaeRRi4+UDVsfrd9fitBHUvw35bTMSwJLFsZTb9xPd0LGWdX4llwVlAP/CXb6qDc0zwYy6uLp7Lw== - dependencies: - "@ethersproject/abstract-provider" "^5.0.3" - "@ethersproject/abstract-signer" "^5.0.3" - "@ethersproject/address" "^5.0.3" - "@ethersproject/bignumber" "^5.0.6" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/hash" "^5.0.3" - "@ethersproject/hdnode" "^5.0.3" - "@ethersproject/json-wallets" "^5.0.5" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - "@ethersproject/transactions" "^5.0.3" - "@ethersproject/wordlists" "^5.0.3" - -"@ethersproject/web@5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.8.tgz#afd2363df0b440025b7b4a95527ea0dbfdb65e2e" - integrity sha512-5An1sar40zXUYmBLH+P1m0F3mTi8lNBV/usLKP3AYBdSxPQyQWymLAEPyX7x5/eBpQAwCInLtF7LPMm9HPI28g== - dependencies: - "@ethersproject/base64" "^5.0.3" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - -"@ethersproject/web@5.0.9", "@ethersproject/web@^5.0.6": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.9.tgz#b08f8295f4bfd4777c8723fe9572f5453b9f03cb" - integrity sha512-//QNlv1MSkOII1hv3+HQwWoiVFS+BMVGI0KYeUww4cyrEktnx1QIez5bTSab9s9fWTFaWKNmQNBwMbxAqPuYDw== +"@ethersproject/web@5.0.11", "@ethersproject/web@^5.0.0", "@ethersproject/web@^5.0.6": + version "5.0.11" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.11.tgz#d47da612b958b4439e415782a53c8f8461522d68" + integrity sha512-x03ihbPoN1S8Gsh9WSwxkYxUIumLi02ZEKJku1C43sxBfe+mdprWyvujzYlpuoRNfWRgNhdRDKMP8JbG6MwNGA== dependencies: "@ethersproject/base64" "^5.0.3" "@ethersproject/bytes" "^5.0.4" @@ -1145,21 +516,10 @@ "@ethersproject/properties" "^5.0.3" "@ethersproject/strings" "^5.0.4" -"@ethersproject/web@^5.0.0", "@ethersproject/web@^5.0.4", "@ethersproject/web@^5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.5.tgz#dd0531bf2fbf44c37ce8b547e40c183cf88c3e09" - integrity sha512-3lffVNOKv/ypW42eY0xhc+UXF+lFUgP1QfIZhWDTJ4xSY6tuNayXKXYq+AqjLXwxwIHzD0TOpe4j46IXJx2NXA== - dependencies: - "@ethersproject/base64" "^5.0.3" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/strings" "^5.0.3" - -"@ethersproject/wordlists@5.0.5", "@ethersproject/wordlists@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.5.tgz#a935b7fdb86c96b44ea8391fed94b3fa2f33c606" - integrity sha512-XA3ycFltVrCTQt04w5nHu3Xq5Z6HjqWsXaAYQHFdqtugyUsIumaO9S5MOwFFuUYTNkZUoT3jCRa/OBS+K4tLfA== +"@ethersproject/wordlists@5.0.7", "@ethersproject/wordlists@^5.0.0", "@ethersproject/wordlists@^5.0.4": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.7.tgz#4e5ad38cfbef746b196a3290c0d41696eb7ab468" + integrity sha512-ZjQtYxm41FmHfYgpkdQG++EDcBPQWv9O6FfP6NndYRVaXaQZh6eq3sy7HQP8zCZ8dznKgy6ZyKECS8qdvnGHwA== dependencies: "@ethersproject/bytes" "^5.0.4" "@ethersproject/hash" "^5.0.4" @@ -1167,17 +527,6 @@ "@ethersproject/properties" "^5.0.3" "@ethersproject/strings" "^5.0.4" -"@ethersproject/wordlists@^5.0.0", "@ethersproject/wordlists@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.3.tgz#e3bddae0b046ea294bb7c9d564e5bfcde1510613" - integrity sha512-Asro9CcBJqxtMnmKrsg79GMmH02p0JmdOwhEdRHRbr51UMRqAfV5RjiidYk21aMsTflv4VY3HgFs6q6FtRJs+w== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/hash" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/strings" "^5.0.3" - "@evocateur/libnpmaccess@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" @@ -1252,85 +601,95 @@ unique-filename "^1.1.1" which "^1.3.1" -"@ledgerhq/devices@^5.28.0", "@ledgerhq/devices@^5.3.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.28.0.tgz#e02ef8f98865b6fd46ad90d6d40d8112ccfc14cf" - integrity sha512-Tkygc1nfioxfv4YWF5VGHito3ZHQAiNM7YV+Kqr3n/gz4meT5f9DfvqvikTF5XxX+mXpCMc4IlzwbUAoeNOHiQ== +"@ledgerhq/cryptoassets@^5.27.2": + version "5.35.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-5.35.1.tgz#daa933d27bfccdbb351139387f5cd85bd6c641b4" + integrity sha512-9Ed+SIj6uQjKMaWYjaAKxq7n5CAKAu1JFb3Tv76q3AstYhko8SDtvzyqyRpCr4tSMHAvLQIohqRcfuHXbjHwIg== dependencies: - "@ledgerhq/errors" "^5.28.0" - "@ledgerhq/logs" "^5.28.0" - rxjs "^6.6.3" - -"@ledgerhq/errors@^5.28.0", "@ledgerhq/errors@^5.3.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.28.0.tgz#117f36d3f9aa7388de31a1d633c3e99ccba0b175" - integrity sha512-dNBVriJbdiTerT7I102sAMBxuJqmuMCQSfIdQ+3euvb+2Fx7UPM/w9RHZ0HZGsz/SdeBblWAH0aIQmtDX/vW9g== + invariant "2" -"@ledgerhq/hw-app-eth@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-5.3.0.tgz#e62a89c07c46c0a1814e534a1e5a9bcddf026693" - integrity sha512-u33jp06Is9rGTsw7dOK8zkPj5pnc7oRdu9bKDzzNkgzWLiYpHDylwtvgRyT6q0B5Vz0nvWAG19c0NK3mx7NnKA== +"@ledgerhq/devices@^5.26.0", "@ledgerhq/devices@^5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.34.0.tgz#4cb073a7bc9528f42f539241fedf44c0c6b451dc" + integrity sha512-oRoZDDfufXAv9KofQdOXc0QztISa9x/YVdiWs55iOlNRQjWYHSPFzeSP6+J+tN0Au/GS9v+wcnTf+tHCtVz27Q== dependencies: - "@ledgerhq/errors" "^5.3.0" - "@ledgerhq/hw-transport" "^5.3.0" + "@ledgerhq/errors" "^5.34.0" + "@ledgerhq/logs" "^5.30.0" + rxjs "^6.6.3" -"@ledgerhq/hw-transport-node-hid-noevents@^5.3.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.28.0.tgz#fad766b876e4299b47ea3838370e78b21db486cb" - integrity sha512-NPxrY0YLfT9fDL5KXY4jIwKPXjpOOS5XEUDYuvfRQLg7yGeDsn9tJbbkP/8FKOap+oKFXCkgOl9rs0VU2khYqg== - dependencies: - "@ledgerhq/devices" "^5.28.0" - "@ledgerhq/errors" "^5.28.0" - "@ledgerhq/hw-transport" "^5.28.0" - "@ledgerhq/logs" "^5.28.0" +"@ledgerhq/errors@^5.26.0", "@ledgerhq/errors@^5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.34.0.tgz#c003b0929f8ca0c74901a11a88b3e3db4b40e4b7" + integrity sha512-8Td60sOP5wzsjmxmj9Q5hjrr1XjCfB3Vdifq+1fiD6rpjyscYLgmoP2y5GYDPceDhalA/GOrKNSf+aIVVmBNOw== + +"@ledgerhq/hw-app-eth@5.27.2": + version "5.27.2" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-5.27.2.tgz#65a2ed613a69340e0cd69c942147455ec513d006" + integrity sha512-llNdrE894cCN8j6yxJEUniciyLVcLmu5N0UmIJLOObztG+5rOF4bX54h4SreTWK+E10Z0CzHSeyE5Lz/tVcqqQ== + dependencies: + "@ledgerhq/cryptoassets" "^5.27.2" + "@ledgerhq/errors" "^5.26.0" + "@ledgerhq/hw-transport" "^5.26.0" + bignumber.js "^9.0.1" + rlp "^2.2.6" + +"@ledgerhq/hw-transport-node-hid-noevents@^5.26.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.34.0.tgz#c31cc3e3033f6fbf77b81c3a9c34230aadd6f3cb" + integrity sha512-n5KRdZ6nmDrmsEXFjIipNdx9rhHbEFmZ5YDoUkdShvKFmaDeKVn0h7RCBwblJRITUZl0RfBzBuBRlpNjQsFfqg== + dependencies: + "@ledgerhq/devices" "^5.34.0" + "@ledgerhq/errors" "^5.34.0" + "@ledgerhq/hw-transport" "^5.34.0" + "@ledgerhq/logs" "^5.30.0" + node-hid "2.0.0-0" + +"@ledgerhq/hw-transport-node-hid@5.26.0": + version "5.26.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.26.0.tgz#69bc4f8067cdd9c09ef4aed0e0b3c58328936e4b" + integrity sha512-qhaefZVZatJ6UuK8Wb6WSFNOLWc2mxcv/xgsfKi5HJCIr4bPF/ecIeN+7fRcEaycxj4XykY6Z4A7zDVulfFH4w== + dependencies: + "@ledgerhq/devices" "^5.26.0" + "@ledgerhq/errors" "^5.26.0" + "@ledgerhq/hw-transport" "^5.26.0" + "@ledgerhq/hw-transport-node-hid-noevents" "^5.26.0" + "@ledgerhq/logs" "^5.26.0" + lodash "^4.17.20" node-hid "1.3.0" + usb "^1.6.3" -"@ledgerhq/hw-transport-node-hid@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.3.0.tgz#f21abda604d4d65153a8f24c0578c0e031989897" - integrity sha512-djeasMGxhetGocS0NhAay/dhi6hs7ZvRc24XjzNkpMPppH2Ico0f9tZbfKx3CqMWuxR9t4zbFiWNWd0v2L9q4w== - dependencies: - "@ledgerhq/devices" "^5.3.0" - "@ledgerhq/errors" "^5.3.0" - "@ledgerhq/hw-transport" "^5.3.0" - "@ledgerhq/hw-transport-node-hid-noevents" "^5.3.0" - "@ledgerhq/logs" "^5.3.0" - lodash "^4.17.15" - node-hid "^1.1.0" - usb "^1.6.0" - -"@ledgerhq/hw-transport-u2f@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.3.0.tgz#cf7259c138eb07a5994d678afb91411ec2a6ae9e" - integrity sha512-fv0SK3kBh1NTcBUliaEvGh/o3qKgP4dflmyAbfDwYqtIMzQj1WvaxTvwZGwOL3vZjBOy0jGyR17JSDe9GhL2Aw== +"@ledgerhq/hw-transport-u2f@5.26.0": + version "5.26.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.26.0.tgz#b7d9d13193eb82b051fd7a838cd652372f907ec5" + integrity sha512-QTxP1Rsh+WZ184LUOelYVLeaQl3++V3I2jFik+l9JZtakwEHjD0XqOT750xpYNL/vfHsy31Wlz+oicdxGzFk+w== dependencies: - "@ledgerhq/errors" "^5.3.0" - "@ledgerhq/hw-transport" "^5.3.0" - "@ledgerhq/logs" "^5.3.0" + "@ledgerhq/errors" "^5.26.0" + "@ledgerhq/hw-transport" "^5.26.0" + "@ledgerhq/logs" "^5.26.0" u2f-api "0.2.7" -"@ledgerhq/hw-transport@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.3.0.tgz#9e9705ab0ba4f7e4de79fc85e57981e848de0847" - integrity sha512-rGvHmj8QhYWE9dB/BRJKjANLig4ZeE3ZYTHSgRPD6goB/7hhh5SgSOOJZpSvM5+2qCtYQEkxyC4Zat7DH1UEWg== +"@ledgerhq/hw-transport@5.26.0": + version "5.26.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.26.0.tgz#bfedc3d48400ad2fe48278d9444344b72aa9d0fe" + integrity sha512-NFeJOJmyEfAX8uuIBTpocWHcz630sqPcXbu864Q+OCBm4EK5UOKV1h/pX7e0xgNIKY8zhJ/O4p4cIZp9tnXLHQ== dependencies: - "@ledgerhq/devices" "^5.3.0" - "@ledgerhq/errors" "^5.3.0" - events "^3.0.0" + "@ledgerhq/devices" "^5.26.0" + "@ledgerhq/errors" "^5.26.0" + events "^3.2.0" -"@ledgerhq/hw-transport@^5.28.0", "@ledgerhq/hw-transport@^5.3.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.28.0.tgz#69a2572a38a3a2bb16b9f14352f0d6a8b36b1ea3" - integrity sha512-dQm45axzWSJhiaDB2csBCFPH/PGjE8kB+3uSeoUJ752FqgndZgrN9UKOPPxcmaf69jnQeTZAFEWc8g63yMPYOg== +"@ledgerhq/hw-transport@^5.26.0", "@ledgerhq/hw-transport@^5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.34.0.tgz#b27eb0d9941a2e6220e5af3e3d4f48ce8a993982" + integrity sha512-JxhqU9sBn+WH3CPMus9b70SED7LEeW17xw0VL5aRdxFu4YS5rhy5Xf4Sd5jIQfyDkHik1ouzfJVuQEju8+GGBw== dependencies: - "@ledgerhq/devices" "^5.28.0" - "@ledgerhq/errors" "^5.28.0" + "@ledgerhq/devices" "^5.34.0" + "@ledgerhq/errors" "^5.34.0" events "^3.2.0" -"@ledgerhq/logs@^5.28.0", "@ledgerhq/logs@^5.3.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.28.0.tgz#bbbd54598fbf9436e02d3b5033c9151fc465295a" - integrity sha512-O+p30yQCJVMHkYRt4mEy2My61JNTyqg9FEs9ZmXXPvXbod85snD6oGaKtDtcvbWCYjiaQt4alD+w/J56hkNBWQ== +"@ledgerhq/logs@^5.26.0", "@ledgerhq/logs@^5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.30.0.tgz#76e8d7e5a06a73c9b99da51fa5befd5cfd5309d4" + integrity sha512-wUhg2VTfUrWihjdGqKkH/s7TBzdIM1yyd2LiscYsfTX2I0xYDMnpE+NkMReeGU8PN3QhCPgnlg9/P9V6UWoJBA== "@lerna/add@3.21.0": version "3.21.0" @@ -2031,17 +1390,9 @@ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@nomiclabs/buidler-ethers@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@nomiclabs/buidler-ethers/-/buidler-ethers-2.0.0.tgz#f972df98a5d9f32fce974749f3ba9d964f057f2a" - integrity sha512-Lf5XLClEeWYo6jVrGAqGBAcKTOP6IAChAR4qcDS36BkQnWakoRKcoSbwhr2YmTNTRAvgDWTmjQYbV17udJ+Alw== - -"@nomiclabs/buidler-solpp@^1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@nomiclabs/buidler-solpp/-/buidler-solpp-1.3.3.tgz#8342cffbeccc8c69289e85ffe4410e26a6126147" - integrity sha512-2JybosKJ1tzWk5drUJJ5tPaPUj5/8mzXOMggvDAGDlgb9Nmo1kXTrwASU6zo5kNdsIaKpghPC4z5qJi4+V7E4Q== - dependencies: - fs-extra "^7.0.1" - solpp "^0.10.1" + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomiclabs/buidler-ethers/-/buidler-ethers-2.0.2.tgz#56c7f3d6f2d1bbf701e97a0003abb30f1071b2c4" + integrity sha512-lFcM7HVi44JB5xl7MKD8qChPQ5tfeO02ZYlrI6uef7J1SJCgE+wiokrl7HQ/jb7DgTHS5agfZxVO9yUbkrMIrQ== "@nomiclabs/buidler-waffle@^2.0.0": version "2.1.0" @@ -2051,56 +1402,10 @@ "@types/sinon-chai" "^3.2.3" "@types/web3" "1.0.19" -"@nomiclabs/buidler@1.3.8": - version "1.3.8" - resolved "https://registry.yarnpkg.com/@nomiclabs/buidler/-/buidler-1.3.8.tgz#55013ed8513afbd0d06ff9d00f6fa8b5e6173982" - integrity sha512-SmSsNteks20Vl4WBELRV8Vnokh1CxbPHFF5aBqhe/4tR2QVR51dNy8dwDkmj153UyAW+f6ZtxF9QT+TxNomZBg== - dependencies: - "@nomiclabs/ethereumjs-vm" "^4.1.1" - "@solidity-parser/parser" "^0.5.2" - "@types/bn.js" "^4.11.5" - "@types/lru-cache" "^5.1.0" - abort-controller "^3.0.0" - ansi-escapes "^4.3.0" - chalk "^2.4.2" - ci-info "^2.0.0" - debug "^4.1.1" - deepmerge "^2.1.0" - download "^7.1.0" - enquirer "^2.3.0" - eth-sig-util "^2.5.2" - ethereum-cryptography "^0.1.2" - ethereumjs-abi "^0.6.8" - ethereumjs-account "^3.0.0" - ethereumjs-block "^2.2.0" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - ethereumjs-util "^6.1.0" - find-up "^2.1.0" - fp-ts "1.19.3" - fs-extra "^7.0.1" - glob "^7.1.3" - io-ts "1.10.4" - is-installed-globally "^0.2.0" - lodash "^4.17.11" - merkle-patricia-tree "^3.0.0" - mocha "^7.1.2" - node-fetch "^2.6.0" - qs "^6.7.0" - raw-body "^2.4.1" - semver "^6.3.0" - slash "^3.0.0" - solc "0.6.8" - source-map-support "^0.5.13" - ts-essentials "^2.0.7" - tsort "0.0.1" - uuid "^3.3.2" - ws "^7.2.1" - "@nomiclabs/buidler@^1.4.4": - version "1.4.5" - resolved "https://registry.yarnpkg.com/@nomiclabs/buidler/-/buidler-1.4.5.tgz#9e332918bf0c19416494e3c4580fd3ca350ed70b" - integrity sha512-jaaVvG7OsrObhEBnLtQ/8L3J92+Jgioaw2+296dDO4Uc+MO/kprORbnpbE/WKvPL1geKQ4uj6VdCpM7qNCwL3g== + version "1.4.8" + resolved "https://registry.yarnpkg.com/@nomiclabs/buidler/-/buidler-1.4.8.tgz#36ebbd0fb54eb2052b1336bf90ee47825393e5dc" + integrity sha512-OUnNWx+WXOJzueJCfyuEXu3qNMq1j9eGDDpgflpRwjPeiQQnvVzfbwrPjs0PlxOC3Xtmaxabtgek5wGxS1C7Ew== dependencies: "@nomiclabs/ethereumjs-vm" "^4.1.1" "@sentry/node" "^5.18.1" @@ -2116,6 +1421,7 @@ deepmerge "^2.1.0" download "^7.1.0" enquirer "^2.3.0" + env-paths "^2.2.0" eth-sig-util "^2.5.2" ethereum-cryptography "^0.1.2" ethereumjs-abi "^0.6.8" @@ -2167,21 +1473,26 @@ util.promisify "^1.0.0" "@octokit/auth-token@^2.4.0": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.2.tgz#10d0ae979b100fa6b72fa0e8e63e27e6d0dbff8a" - integrity sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ== + version "2.4.4" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.4.tgz#ee31c69b01d0378c12fd3ffe406030f3d94d3b56" + integrity sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q== dependencies: - "@octokit/types" "^5.0.0" + "@octokit/types" "^6.0.0" "@octokit/endpoint@^6.0.1": - version "6.0.6" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.6.tgz#4f09f2b468976b444742a1d5069f6fa45826d999" - integrity sha512-7Cc8olaCoL/mtquB7j/HTbPM+sY6Ebr4k2X2y4JoXpVKQ7r5xB4iGQE0IoO58wIPsUk4AzoT65AMEpymSbWTgQ== + version "6.0.10" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.10.tgz#741ce1fa2f4fb77ce8ebe0c6eaf5ce63f565f8e8" + integrity sha512-9+Xef8nT7OKZglfkOMm7IL6VwxXUQyR7DUSU0LH/F7VNqs8vyd7es5pTfz9E7DwUIx7R3pGscxu1EBhYljyu7Q== dependencies: - "@octokit/types" "^5.0.0" + "@octokit/types" "^6.0.0" is-plain-object "^5.0.0" universal-user-agent "^6.0.0" +"@octokit/openapi-types@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-2.0.0.tgz#6d8f8ad9db3b75a39115f5def2654df8bed39f28" + integrity sha512-J4bfM7lf8oZvEAdpS71oTvC1ofKxfEZgU5vKVwzZKi4QPiL82udjpseJwxPid9Pu2FNmyRQOX4iEj6W1iOSnPw== + "@octokit/plugin-enterprise-rest@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" @@ -2195,9 +1506,9 @@ "@octokit/types" "^2.0.1" "@octokit/plugin-request-log@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e" - integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw== + version "1.0.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz#394d59ec734cd2f122431fbaf05099861ece3c44" + integrity sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg== "@octokit/plugin-rest-endpoint-methods@2.4.0": version "2.4.0" @@ -2217,25 +1528,25 @@ once "^1.4.0" "@octokit/request-error@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.2.tgz#0e76b83f5d8fdda1db99027ea5f617c2e6ba9ed0" - integrity sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.4.tgz#07dd5c0521d2ee975201274c472a127917741262" + integrity sha512-LjkSiTbsxIErBiRh5wSZvpZqT4t0/c9+4dOe0PII+6jXR+oj/h66s7E4a/MghV7iT8W9ffoQ5Skoxzs96+gBPA== dependencies: - "@octokit/types" "^5.0.1" + "@octokit/types" "^6.0.0" deprecation "^2.0.0" once "^1.4.0" "@octokit/request@^5.2.0": - version "5.4.8" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.8.tgz#13ad36e172bb57e78bacf02cd86210d1f7412f04" - integrity sha512-mWbxjsARJzAq5xp+ZrQfotc+MHFz3/Am2qATJwflv4PZ1TjhgIJnr60PCVdZT9Z/tl+uPXooaVgeviy1KkDlLQ== + version "5.4.12" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.12.tgz#b04826fa934670c56b135a81447be2c1723a2ffc" + integrity sha512-MvWYdxengUWTGFpfpefBBpVmmEYfkwMoxonIB3sUGp5rhdgwjXL1ejo6JbgzG/QD9B/NYt/9cJX1pxXeSIUCkg== dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.0.0" - "@octokit/types" "^5.0.0" + "@octokit/types" "^6.0.3" deprecation "^2.0.0" is-plain-object "^5.0.0" - node-fetch "^2.3.0" + node-fetch "^2.6.1" once "^1.4.0" universal-user-agent "^6.0.0" @@ -2268,11 +1579,12 @@ dependencies: "@types/node" ">= 8" -"@octokit/types@^5.0.0", "@octokit/types@^5.0.1": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.4.1.tgz#d5d5f2b70ffc0e3f89467c3db749fa87fc3b7031" - integrity sha512-OlMlSySBJoJ6uozkr/i03nO5dlYQyE05vmQNZhAh9MyO4DPBP88QlwsDVLmVjIMFssvIZB6WO0ctIGMRG+xsJQ== +"@octokit/types@^6.0.0", "@octokit/types@^6.0.3": + version "6.1.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.1.1.tgz#bc88b3eb5f447b025a2a1a8177a72db216e8d4ca" + integrity sha512-btm3D6S7VkRrgyYF31etUtVY/eQ1KzrNRqhFt25KSe2mKlXuLXJilglRC6eDA2P6ou94BUnk/Kz5MPEolXgoiw== dependencies: + "@octokit/openapi-types" "^2.0.0" "@types/node" ">= 8" "@openzeppelin/contracts@^3.3.0": @@ -2317,72 +1629,72 @@ path-browserify "^1.0.0" url "^0.11.0" -"@sentry/core@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.23.0.tgz#4d12ee4f5593e66fa5ffde0f9e9164a5468e5cec" - integrity sha512-K8Wp/g1opaauKJh2w5Z1Vw/YdudHQgH6Ng5fBazHZxA7zB9R8EbVKDsjy8XEcyHsWB7fTSlYX/7coqmZNOADdg== +"@sentry/core@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.29.0.tgz#4410ca0dc5785abf3df02fa23c18e83ad90d7cda" + integrity sha512-a1sZBJ2u3NG0YDlGvOTwUCWiNjhfmDtAQiKK1o6RIIbcrWy9TlSps7CYDkBP239Y3A4pnvohjEEKEP3v3L3LZQ== dependencies: - "@sentry/hub" "5.23.0" - "@sentry/minimal" "5.23.0" - "@sentry/types" "5.23.0" - "@sentry/utils" "5.23.0" + "@sentry/hub" "5.29.0" + "@sentry/minimal" "5.29.0" + "@sentry/types" "5.29.0" + "@sentry/utils" "5.29.0" tslib "^1.9.3" -"@sentry/hub@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.23.0.tgz#7350c2971fafdb9f883f0629fd1b35d2288cd6e1" - integrity sha512-P0sevLI9qAQc1J+AcHzNXwj83aG3GKiABVQJp0rgCUMtrXqLawa+j8pOHg8p7QWroHM7TKDMKeny9WemXBgzBQ== +"@sentry/hub@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.29.0.tgz#d018b978fdffc6c8261744b0d08e8d25a3f4dc58" + integrity sha512-kcDPQsRG4cFdmqDh+TzjeO7lWYxU8s1dZYAbbl1J4uGKmhNB0J7I4ak4SGwTsXLY6fhbierxr6PRaoNojCxjPw== dependencies: - "@sentry/types" "5.23.0" - "@sentry/utils" "5.23.0" + "@sentry/types" "5.29.0" + "@sentry/utils" "5.29.0" tslib "^1.9.3" -"@sentry/minimal@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.23.0.tgz#93df781a98f0b334425f68b1fa0f4e1a86d8fa45" - integrity sha512-/w/B7ShMVu/tLI0/A5X+w6GfdZIQdFQihWyIK1vXaYS5NS6biGI3K6DcACuMrD/h4BsqlfgdXSOHHrmCJcyCXQ== +"@sentry/minimal@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.29.0.tgz#bd8b52f388abcec2234dbbc6d6721ff65aa30e35" + integrity sha512-nhXofdjtO41/caiF1wk1oT3p/QuhOZDYdF/b29DoD2MiAMK9IjhhOXI/gqaRpDKkXlDvd95fDTcx4t/MqqcKXA== dependencies: - "@sentry/hub" "5.23.0" - "@sentry/types" "5.23.0" + "@sentry/hub" "5.29.0" + "@sentry/types" "5.29.0" tslib "^1.9.3" "@sentry/node@^5.18.1": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.23.0.tgz#c5deb3e4842abacbd40ffaf296971e47df2f6e6c" - integrity sha512-WFiAI9+XALB144LRYsWt4aM6soxMRAp1SQ72H0LNOYQXyei5hnKXLmL8UH5RHJFD60Y8S42tIhZkdPPXSq7HgQ== - dependencies: - "@sentry/core" "5.23.0" - "@sentry/hub" "5.23.0" - "@sentry/tracing" "5.23.0" - "@sentry/types" "5.23.0" - "@sentry/utils" "5.23.0" + version "5.29.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.29.0.tgz#409b5d8b8dc2be25c0c4ed20aadcf8a3bbe454bc" + integrity sha512-Jp32FsfkFSGVf81Hr26rGlgIwTg7Nx07mQ7rrnNuVasu6vD2aWBzUnohkkZDJ4gZRGjmk0MthukjX0RivDKcVQ== + dependencies: + "@sentry/core" "5.29.0" + "@sentry/hub" "5.29.0" + "@sentry/tracing" "5.29.0" + "@sentry/types" "5.29.0" + "@sentry/utils" "5.29.0" cookie "^0.4.1" https-proxy-agent "^5.0.0" lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/tracing@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.23.0.tgz#6627a6c659abce968e45e897ebc038873cc83fb2" - integrity sha512-cexFQCuGcFukqyaP8p8Uf/aCuMkzJeiU4Trx7vYHf16L95aSn5TGELK0SZOugEb2Gi9D9Z6NHfuK16nWjwPSRQ== +"@sentry/tracing@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.29.0.tgz#8ed515b3f9d409137357c38c8622858f9e684e4a" + integrity sha512-2ZITUH7Eur7IkmRAd5gw8Xt2Sfc28btCnT7o2P2J8ZPD65e99ATqjxXPokx0+6zEkTsstIDD3mbyuwkpbuvuTA== dependencies: - "@sentry/hub" "5.23.0" - "@sentry/minimal" "5.23.0" - "@sentry/types" "5.23.0" - "@sentry/utils" "5.23.0" + "@sentry/hub" "5.29.0" + "@sentry/minimal" "5.29.0" + "@sentry/types" "5.29.0" + "@sentry/utils" "5.29.0" tslib "^1.9.3" -"@sentry/types@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.23.0.tgz#935701637c2d5b1c123ac292bc253bddf451b076" - integrity sha512-PbN5MVWxrq05sZ707lc8lleV0xSsI6jWr9h9snvbAuMjcauE0lmdWmjoWKY3PAz2s1mGYFh55kIo8SmQuVwbYg== +"@sentry/types@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.29.0.tgz#af5cec98cde54316c14df3121f0e8106e56b578e" + integrity sha512-iDkxT/9sT3UF+Xb+JyLjZ5caMXsgLfRyV9VXQEiR2J6mgpMielj184d9jeF3bm/VMuAf/VFFqrHlcVsVgmrrMw== -"@sentry/utils@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.23.0.tgz#5e15f684b5a8f9c86e4ba15d81101eac7d6c240b" - integrity sha512-D5gQDM0wEjKxhE+YNvCuCHo/6JuaORF2/3aOhoJBR+dy9EACRspg7kp3+9KF44xd2HVEXkSVCJkv8/+sHePYRQ== +"@sentry/utils@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.29.0.tgz#b4c1223ba362a94cf4850e9ca2cb24655b006b53" + integrity sha512-b2B1gshw2u3EHlAi84PuI5sfmLKXW1z9enMMhNuuNT/CoRp+g5kMAcUv/qYTws7UNnYSvTuVGuZG30v1e0hP9A== dependencies: - "@sentry/types" "5.23.0" + "@sentry/types" "5.29.0" tslib "^1.9.3" "@sindresorhus/is@^0.14.0": @@ -2407,24 +1719,12 @@ dependencies: defer-to-connect "^1.0.1" -"@types/abstract-leveldown@*", "@types/abstract-leveldown@^5.0.1": +"@types/abstract-leveldown@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-5.0.1.tgz#3c7750d0186b954c7f2d2f6acc8c3c7ba0c3412e" integrity sha512-wYxU3kp5zItbxKmeRYCEplS2MW7DzyBnxPGj+GJVHZEUZiK/nn5Ei1sUFgURDh+X051+zsGe28iud3oHjrYWQQ== -"@types/argparse@^1.0.38": - version "1.0.38" - resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" - integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== - -"@types/bignumber.js@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/bignumber.js/-/bignumber.js-5.0.0.tgz#d9f1a378509f3010a3255e9cc822ad0eeb4ab969" - integrity sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA== - dependencies: - bignumber.js "*" - -"@types/bn.js@*", "@types/bn.js@^4.11.3", "@types/bn.js@^4.11.4", "@types/bn.js@^4.11.5": +"@types/bn.js@*", "@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": version "4.11.6" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== @@ -2439,27 +1739,15 @@ "@types/chai" "*" "@types/chai@*", "@types/chai@^4.1.7": - version "4.2.12" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.12.tgz#6160ae454cd89dae05adc3bb97997f488b608201" - integrity sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ== - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + version "4.2.14" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.14.tgz#44d2dd0b5de6185089375d976b4ec5caf6861193" + integrity sha512-G+ITQPXkwTrslfG5L/BksmbLUA0M1iybEsmCWPqzSxsRRhJZimBKJkoMi8fr/CPygPTj4zO5pJH7I2/cm9M7SQ== "@types/debug@^4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== -"@types/ganache-core@^2.1.2": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@types/ganache-core/-/ganache-core-2.7.0.tgz#867ecc7f3f34a9b7bfac45567db8fab1d051c1ab" - integrity sha512-kNnP+XBHmyEMYGLFzA+5PDt6P1TazTjALtZoJXExVisVT9buU8Al1xY24f3V+ROWshghQCL1cqofi8YsmacIew== - dependencies: - ganache-core "*" - "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -2468,19 +1756,6 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/levelup@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-3.1.1.tgz#f7cc08f248f14cb6c92914e91bceb8761020e8f0" - integrity sha512-LjvlfctJYj23Xuqq3jCT8ZPSUSSgDcRJg8+XFDBasoYzefFbB4cHzlDmBVjc2rBOYvklpYHJRayD0jBsbJLD9w== - dependencies: - "@types/abstract-leveldown" "*" - "@types/node" "*" - -"@types/lodash@^4.14.157": - version "4.14.161" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.161.tgz#a21ca0777dabc6e4f44f3d07f37b765f54188b18" - integrity sha512-EP6O3Jkr7bXvZZSZYlsgt5DIjiGr0dXP1/jVEwVLTFgg0d+3lWVQkRavYVQszV7dYUwvg0B8R0MBDpcmXg7XIA== - "@types/lru-cache@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03" @@ -2492,9 +1767,9 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/minimist@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" - integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" + integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== "@types/mkdirp@^0.5.2": version "0.5.2" @@ -2517,24 +1792,19 @@ form-data "^3.0.0" "@types/node@*", "@types/node@>= 8": - version "14.6.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.4.tgz#a145cc0bb14ef9c4777361b7bbafa5cf8e3acb5a" - integrity sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ== - -"@types/node@^10.12.18", "@types/node@^10.3.2": - version "10.17.30" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.30.tgz#20556a0d7f62b83e163973a6cd640af636d3dd3b" - integrity sha512-euU8QLX0ipj+5mOYa4ZqZoTv+53BY7yTg9I2ZIhDXgiI3M+0n4mdAt9TQCuvxVAgU179g8OsRLaBt0qEi0T6xA== + version "14.14.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.13.tgz#9e425079799322113ae8477297ae6ef51b8e0cdf" + integrity sha512-vbxr0VZ8exFMMAjCW8rJwaya0dMCDyYW2ZRdTyjtrCvJoENMpdUHOT/eTzvgyA5ZnqRZ/sI0NwqAxNHKYokLJQ== "@types/node@^11.11.3": - version "11.15.22" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.15.22.tgz#aab78781ad8b2a75ce818f4a340bb12efac86bc9" - integrity sha512-uVDufn8nnM/F84VPbwGgG4JN3iUajEgpkxkE6oRIH0bPFsQJhNZDNZB6wJbBdjO4IDgwS02ipZidAnroOS53Qg== + version "11.15.40" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.15.40.tgz#66b17b7a9b06fe2689a77afeaa6f432779018b28" + integrity sha512-pGIHnyS9XYo7uSV6YHWSsXlqZ1NanfsxMCreJX94T963sA9733Ctsjo2VIq74MvKx3+i4t50HQPfuLfNuZSo4g== -"@types/node@^12.0.7", "@types/node@^12.12.6", "@types/node@^12.6.1": - version "12.12.56" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.56.tgz#83591a89723d8ec3eaf722137e1784a7351edb6c" - integrity sha512-8OdIupOIZtmObR13fvGyTvpcuzKmMugkATeVcfNwCjGtHxhjEKmOvLqXwR8U9VOtNnZ4EXaSfNiLVsPinaCXkQ== +"@types/node@^12.0.7", "@types/node@^12.12.6": + version "12.19.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.9.tgz#990ad687ad8b26ef6dcc34a4f69c33d40c95b679" + integrity sha512-yj0DOaQeUrk3nJ0bd3Y5PeDRJ6W0r+kilosLA+dzF3dola/o9hxhMSg2sFvVcA2UHS5JSOsZp4S0c1OEXc4m1Q== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -2556,34 +1826,29 @@ "@types/node" "*" "@types/sinon-chai@^3.2.3", "@types/sinon-chai@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.4.tgz#c425625681f4f8d3a43a7551a77f590ce1c49b21" - integrity sha512-xq5KOWNg70PRC7dnR2VOxgYQ6paumW+4pTZP+6uTSdhpYsAUEeeT5bw6rRHHQrZ4KyR+M5ojOR+lje6TGSpUxA== + version "3.2.5" + resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.5.tgz#df21ae57b10757da0b26f512145c065f2ad45c48" + integrity sha512-bKQqIpew7mmIGNRlxW6Zli/QVyc3zikpGzCa797B/tRnD9OtHvZ/ts8sYXV+Ilj9u3QRaUEM8xrjgd1gwm1BpQ== dependencies: "@types/chai" "*" "@types/sinon" "*" "@types/sinon@*": - version "9.0.5" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.5.tgz#56b2a12662dd8c7d081cdc511af5f872cb37377f" - integrity sha512-4CnkGdM/5/FXDGqL32JQ1ttVrGvhOoesLLF7VnTh4KdjK5N5VQOtxaylFqqTjnHx55MnD9O02Nbk5c1ELC8wlQ== + version "9.0.9" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.9.tgz#115843b491583f924080f684b6d0d7438344f73c" + integrity sha512-z/y8maYOQyYLyqaOB+dYQ6i0pxKLOsfwCmHmn4T7jS/SDHicIslr37oE3Dg8SCqKrKeBy6Lemu7do2yy+unLrw== dependencies: "@types/sinonjs__fake-timers" "*" "@types/sinonjs__fake-timers@*": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" - integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/underscore@*": - version "1.10.22" - resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.10.22.tgz#8e0a134a2df0afe8da24bcf006e7f94925a3e15f" - integrity sha512-fiJulOOmc747q+mZwBtLyBu6yBX2uI4biuQ1Y3JvcU7YjmdOEOracUXTiET/PAWI2hhoUH1t4HbwJj42YEnbkg== - -"@types/uuid@^8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" - integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== + version "1.10.24" + resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.10.24.tgz#dede004deed3b3f99c4db0bdb9ee21cae25befdd" + integrity sha512-T3NQD8hXNW2sRsSbLNjF/aBo18MyJlbw0lSpQHB/eZZtScPdexN4HSa8cByYwTw9Wy7KuOFr81mlDQcQQaZ79w== "@types/web3@1.0.19": version "1.0.19" @@ -2593,24 +1858,10 @@ "@types/bn.js" "*" "@types/underscore" "*" -"@web3-js/scrypt-shim@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@web3-js/scrypt-shim/-/scrypt-shim-0.1.0.tgz#0bf7529ab6788311d3e07586f7d89107c3bea2cc" - integrity sha512-ZtZeWCc/s0nMcdx/+rZwY1EcuRdemOK9ag21ty9UsHkFxsNb/AaoucUz0iPuyGe0Ku+PFuRmWZG7Z7462p9xPw== - dependencies: - scryptsy "^2.1.0" - semver "^6.3.0" - -"@web3-js/websocket@^1.0.29": - version "1.0.30" - resolved "https://registry.yarnpkg.com/@web3-js/websocket/-/websocket-1.0.30.tgz#9ea15b7b582cf3bf3e8bc1f4d3d54c0731a87f87" - integrity sha512-fDwrD47MiDrzcJdSeTLF75aCcxVVt8B1N74rA+vh2XCAvFy4tEWJjtnUtj2QG7/zlQ6g9cQ88bZFBxwd9/FmtA== - dependencies: - debug "^2.2.0" - es5-ext "^0.10.50" - nan "^2.14.0" - typedarray-to-buffer "^3.1.5" - yaeti "^0.0.6" +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== "@yarnpkg/lockfile@^1.1.0": version "1.1.0" @@ -2667,7 +1918,7 @@ abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: dependencies: xtend "~4.0.0" -abstract-leveldown@^6.2.1, abstract-leveldown@^6.2.2: +abstract-leveldown@^6.2.1: version "6.3.0" resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a" integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== @@ -2685,14 +1936,6 @@ abstract-leveldown@~2.6.0: dependencies: xtend "~4.0.0" -abstract-leveldown@~6.0.1: - version "6.0.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.0.3.tgz#b4b6159343c74b0c5197b2817854782d8f748c4a" - integrity sha512-jzewKKpZbaYUa6HTThnrl+GrJhzjEAeuc7hTVpZdzg7kupXZFoqQDFwyOwLNbmJKJlmzw8yiipMPkDiuKkT06Q== - dependencies: - level-concat-iterator "~2.0.0" - xtend "~4.0.0" - abstract-leveldown@~6.2.1, abstract-leveldown@~6.2.3: version "6.2.3" resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" @@ -2730,9 +1973,9 @@ agent-base@4, agent-base@^4.3.0: es6-promisify "^5.0.0" agent-base@6: - version "6.0.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" - integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" @@ -2751,9 +1994,9 @@ agentkeepalive@^3.4.1: humanize-ms "^1.2.1" ajv@^6.12.3: - version "6.12.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" - integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -2770,13 +2013,6 @@ ansi-colors@4.1.1, ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-colors@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" - integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== - dependencies: - ansi-wrap "^0.1.0" - ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -2789,13 +2025,6 @@ ansi-escapes@^4.3.0: dependencies: type-fest "^0.11.0" -ansi-gray@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" - integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= - dependencies: - ansi-wrap "0.1.0" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -2824,36 +2053,17 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" -ansi-wrap@0.1.0, ansi-wrap@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= - -antlr4@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.8.0.tgz#f938ec171be7fc2855cd3a533e87647185b32b6a" - integrity sha512-en/MxQ4OkPgGJQ3wD/muzj1uDnFSzdFIhc2+c6bHZokWkuBb6RRvFjpWhPxWLbgQvaEzldJZ0GSQpfSAaE3hqg== - -any-promise@1.3.0, any-promise@^1.0.0, any-promise@^1.3.0: +any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -2867,13 +2077,6 @@ app-module-path@^2.2.0: resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" integrity sha1-ZBqlXft9am8KgUHEucCqULbCTdU= -append-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" - integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= - dependencies: - buffer-equal "^1.0.0" - aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -2891,11 +2094,6 @@ archive-type@^4.0.0: dependencies: file-type "^4.2.0" -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -2909,7 +2107,7 @@ arg@^4.1.0: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -argparse@^1.0.10, argparse@^1.0.7: +argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== @@ -2921,25 +2119,11 @@ arr-diff@^4.0.0: resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-filter@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" - integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= - dependencies: - make-iterator "^1.0.0" - -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== -arr-map@^2.0.0, arr-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" - integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= - dependencies: - make-iterator "^1.0.0" - arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" @@ -2950,11 +2134,6 @@ array-differ@^2.0.3: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== -array-each@^1.0.0, array-each@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" - integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -2970,35 +2149,6 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-initial@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" - integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= - dependencies: - array-slice "^1.0.0" - is-number "^4.0.0" - -array-last@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" - integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== - dependencies: - is-number "^4.0.0" - -array-slice@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" - integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== - -array-sort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" - integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== - dependencies: - default-compare "^1.0.0" - get-value "^2.0.6" - kind-of "^5.0.2" - array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -3017,14 +2167,15 @@ array-unique@^0.3.2: integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= array.prototype.map@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" - integrity sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.3.tgz#1609623618d3d84134a37d4a220030c2bd18420b" + integrity sha512-nNcb30v0wfDyIe26Yif3PcV1JXQp4zEeEfupG7L4SRjnD6HLbO5b2a7eVSba53bOx4YCHYMBHt+Fp4vYstneRA== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.4" + is-string "^1.0.5" arrify@^1.0.1: version "1.0.1" @@ -3068,21 +2219,6 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -async-done@^1.2.0, async-done@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" - integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.2" - process-nextick-args "^2.0.0" - stream-exhaust "^1.0.1" - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - async-eventemitter@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" @@ -3095,18 +2231,6 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async-lock@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/async-lock/-/async-lock-1.2.4.tgz#80d0d612383045dd0c30eb5aad08510c1397cb91" - integrity sha512-UBQJC2pbeyGutIfYmErGc9RaJYnpZ1FHaxuKwb0ahvGiiCkPUf3p67Io+YLPmmv3RHY+mF6JEtNW8FlHsraAaA== - -async-settle@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" - integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= - dependencies: - async-done "^1.2.2" - async@2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" @@ -3152,17 +2276,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" - integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== - -axios@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" - integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== - dependencies: - follow-redirects "1.5.10" - is-buffer "^2.0.2" + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== axios@^0.19.0: version "0.19.2" @@ -3690,21 +2806,6 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -bach@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" - integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= - dependencies: - arr-filter "^1.1.1" - arr-flatten "^1.0.1" - arr-map "^2.0.0" - array-each "^1.0.0" - array-initial "^1.0.0" - array-last "^1.1.1" - async-done "^1.2.2" - async-settle "^1.0.0" - now-and-later "^2.0.0" - backoff@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" @@ -3724,10 +2825,10 @@ base-x@^3.0.2, base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base@^0.11.1: version "0.11.2" @@ -3759,22 +2860,17 @@ before-after-hook@^2.0.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== -bignumber.js@*, bignumber.js@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" - integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +bignumber.js@^9.0.0, bignumber.js@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" + integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== binary-extensions@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== -bindings@^1.2.1, bindings@^1.4.0, bindings@^1.5.0: +bindings@^1.4.0, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -3792,13 +2888,6 @@ bip39@2.5.0: safe-buffer "^5.0.1" unorm "^1.3.3" -bip66@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" - integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= - dependencies: - safe-buffer "^5.0.1" - bl@^1.0.0: version "1.2.3" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" @@ -3821,47 +2910,22 @@ blakejs@^1.1.0: resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - -bluebird@^2.9.34: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" - integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= - bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.2, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn-str-256@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/bn-str-256/-/bn-str-256-1.9.1.tgz#898cebee70a3edc3968f97b4cebbc4771025aa82" - integrity sha512-u3muv3WO5sYv9nUQsPnDGLg731yNt/MOlKPK5pmBVqClcl7tY97tyfKxw8ed44HVrpi+7dkgJgQpbXP47a3GoQ== - dependencies: - decimal.js-light "^2.5.0" - lodash "^4.17.11" - bn.js@4.11.6: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= -bn.js@4.11.8: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0, bn.js@^4.8.0: version "4.11.9" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== -bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3: +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== @@ -3890,7 +2954,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: +braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -3923,7 +2987,7 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== @@ -3955,21 +3019,13 @@ browserify-des@^1.0.0: safe-buffer "^5.1.2" browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - bn.js "^4.1.0" + bn.js "^5.0.0" randombytes "^2.0.1" -browserify-sha3@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/browserify-sha3/-/browserify-sha3-0.0.4.tgz#086c47b8c82316c9d47022c26185954576dd8e26" - integrity sha1-CGxHuMgjFsnUcCLCYYWVRXbdjiY= - dependencies: - js-sha3 "^0.6.1" - safe-buffer "^5.1.1" - browserify-sign@^4.0.0: version "4.2.1" resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" @@ -4032,11 +3088,6 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= -buffer-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= - buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" @@ -4052,11 +3103,6 @@ buffer-to-arraybuffer@^0.0.5: resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= -buffer-writer@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" - integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== - buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -4070,19 +3116,19 @@ buffer-xor@^2.0.1: safe-buffer "^5.1.1" buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" + base64-js "^1.3.1" + ieee754 "^1.1.13" bufferutil@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.1.tgz#3a177e8e5819a1243fe16b63a199951a7ad8d4a7" - integrity sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA== + version "4.0.2" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.2.tgz#79f68631910f6b993d870fc77dc0a2894eb96cd5" + integrity sha512-AtnG3W6M8B2n4xDQ5R+70EXvOpnXsFYg/AK2yTZd+HQ/oxAdz+GI+DvjmhBw3L0ole+LJ0ngqY4JMbDzkfNzhA== dependencies: - node-gyp-build "~3.7.0" + node-gyp-build "^4.2.0" builtin-modules@^1.1.1: version "1.1.1" @@ -4194,6 +3240,14 @@ cachedown@1.0.0: abstract-leveldown "^2.4.1" lru-cache "^3.2.0" +call-bind@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -4264,10 +3318,15 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + caniuse-lite@^1.0.30000844: - version "1.0.30001125" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001125.tgz#2a1a51ee045a0a2207474b086f628c34725e997b" - integrity sha512-9f+r7BW8Qli917mU3j0fUaTweT3f3vnX/Lcs+1C73V+RADmFme+Ih0Br8vONQi3X0lseOe6ZHfsZLCA8MSjxUA== + version "1.0.30001166" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001166.tgz#ca73e8747acfd16a4fd6c4b784f1b995f9698cf8" + integrity sha512-nCL4LzYK7F4mL0TjEMeYavafOGnBa98vTudH5c8lW9izUjnB99InG6pmC1ElAI1p0GlyZajv4ltUdFXvOHIl1A== caseless@~0.12.0: version "0.12.0" @@ -4373,7 +3432,7 @@ chokidar@3.3.0: optionalDependencies: fsevents "~2.1.1" -chokidar@3.4.2, chokidar@^3.4.0: +chokidar@3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== @@ -4388,24 +3447,20 @@ chokidar@3.4.2, chokidar@^3.4.0: optionalDependencies: fsevents "~2.1.2" -chokidar@^2.0.0: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== +chokidar@3.4.3, chokidar@^3.4.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" optionalDependencies: - fsevents "^1.2.7" + fsevents "~2.1.2" chownr@^1.1.1, chownr@^1.1.2: version "1.1.4" @@ -4490,11 +3545,6 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -4511,12 +3561,7 @@ clone-response@1.0.2, clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= - -clone@2.1.2, clone@^2.0.0, clone@^2.1.1: +clone@2.1.2, clone@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= @@ -4526,29 +3571,11 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -cloneable-readable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" - integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -collection-map@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" - integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= - dependencies: - arr-map "^2.0.2" - for-own "^1.0.0" - make-iterator "^1.0.0" - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -4581,11 +3608,6 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - columnify@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" @@ -4611,7 +3633,7 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.12.1, commander@^2.19.0, commander@^2.8.1: +commander@^2.12.1, commander@^2.8.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -4634,7 +3656,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0, concat-stream@^1.5.1, concat-stream@^1.6.0: +concat-stream@^1.5.0, concat-stream@^1.5.1: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -4689,9 +3711,9 @@ content-type@~1.0.4: integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== conventional-changelog-angular@^5.0.3: - version "5.0.11" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.11.tgz#99a3ca16e4a5305e0c2c2fae3ef74fd7631fc3fb" - integrity sha512-nSLypht/1yEflhuTogC03i7DX7sOrXGsRn14g131Potqi6cbGbGEE9PSDEHKldabB6N76HiSyw9Ph+kLmC04Qw== + version "5.0.12" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" + integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== dependencies: compare-func "^2.0.0" q "^1.5.1" @@ -4721,40 +3743,40 @@ conventional-changelog-preset-loader@^2.1.1: integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== conventional-changelog-writer@^4.0.6: - version "4.0.17" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.17.tgz#4753aaa138bf5aa59c0b274cb5937efcd2722e21" - integrity sha512-IKQuK3bib/n032KWaSb8YlBFds+aLmzENtnKtxJy3+HqDq5kohu3g/UdNbIHeJWygfnEbZjnCKFxAW0y7ArZAw== + version "4.0.18" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.18.tgz#10b73baa59c7befc69b360562f8b9cd19e63daf8" + integrity sha512-mAQDCKyB9HsE8Ko5cCM1Jn1AWxXPYV0v8dFPabZRkvsiWUul2YyAqbIaoMKF88Zf2ffnOPSvKhboLf3fnjo5/A== dependencies: compare-func "^2.0.0" - conventional-commits-filter "^2.0.6" + conventional-commits-filter "^2.0.7" dateformat "^3.0.0" handlebars "^4.7.6" json-stringify-safe "^5.0.1" lodash "^4.17.15" - meow "^7.0.0" + meow "^8.0.0" semver "^6.0.0" split "^1.0.0" - through2 "^3.0.0" + through2 "^4.0.0" -conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz#0935e1240c5ca7698329affee1b6a46d33324c4c" - integrity sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw== +conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== dependencies: lodash.ismatch "^4.4.0" modify-values "^1.0.0" conventional-commits-parser@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz#10140673d5e7ef5572633791456c5d03b69e8be4" - integrity sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA== + version "3.2.0" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.0.tgz#9e261b139ca4b7b29bcebbc54460da36894004ca" + integrity sha512-XmJiXPxsF0JhAKyfA2Nn+rZwYKJ60nanlbSWwwkGwLQFbugsc0gv1rzc7VbbUWAzJfR1qR87/pNgv9NgmxtBMQ== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.1" lodash "^4.17.15" - meow "^7.0.0" + meow "^8.0.0" split2 "^2.0.0" - through2 "^3.0.0" + through2 "^4.0.0" trim-off-newlines "^1.0.0" conventional-recommended-bump@^5.0.0: @@ -4771,7 +3793,7 @@ conventional-recommended-bump@^5.0.0: meow "^4.0.0" q "^1.5.1" -convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -4815,23 +3837,15 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-props@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" - integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== - dependencies: - each-props "^1.3.0" - is-plain-object "^2.0.1" - core-js-pure@^3.0.1: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" - integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== + version "3.8.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.1.tgz#23f84048f366fdfcf52d3fd1c68fec349177d119" + integrity sha512-Se+LaxqXlVXGvmexKGPvnUIYC1jwXu1H6Pkyb3uBM5d8/NELMYCHs/4/roD7721NxrTLyv7e5nXd5/QLBO+10g== core-js@^2.4.0, core-js@^2.5.0: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -4985,27 +3999,41 @@ debug@3.1.0, debug@=3.1.0: dependencies: ms "2.0.0" -debug@3.2.6, debug@^3.1.0: +debug@3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debug@4, debug@4.1.1, debug@^4.1.1: +debug@4, debug@^4.1.1, debug@^4.2.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +debug@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -debug@^4.2.0: +debug@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== dependencies: ms "2.1.2" +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -5024,10 +4052,10 @@ decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decimal.js-light@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.0.tgz#ca7faf504c799326df94b0ab920424fdfc125348" - integrity sha512-b3VJCbd2hwUpeRGG3Toob+CRo8W22xplipNhP3tN7TSVB/cyMX71P1vM2Xjc9H74uV6dS2hDDmo/rHq8L87Upg== +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== decode-uri-component@^0.2.0: version "0.2.0" @@ -5087,7 +4115,7 @@ decompress-unzip@^4.0.1: pify "^2.3.0" yauzl "^2.4.2" -decompress@^4.0.0, decompress@^4.2.0: +decompress@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== @@ -5135,18 +4163,6 @@ deepmerge@^2.1.0: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== -default-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" - integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== - dependencies: - kind-of "^5.0.2" - -default-resolution@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" - integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= - defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -5249,11 +4265,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -5354,15 +4365,6 @@ download@^7.1.0: p-event "^2.1.0" pify "^3.0.0" -drbg.js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" - integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= - dependencies: - browserify-aes "^1.0.6" - create-hash "^1.1.2" - create-hmac "^1.1.4" - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -5383,14 +4385,6 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -each-props@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" - integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== - dependencies: - is-plain-object "^2.0.1" - object.defaults "^1.1.0" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -5405,19 +4399,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.47: - version "1.3.564" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.564.tgz#e9c319ae437b3eb8bbf3e3bae4bead5a21945961" - integrity sha512-fNaYN3EtKQWLQsrKXui8mzcryJXuA0LbCLoizeX6oayG2emBaS5MauKjCPAvc29NEY4FpLHIUWiP+Y0Bfrs5dg== - -elliptic@6.3.3: - version "6.3.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" - integrity sha1-VILZZG1UvLif19mU/J4ulWiHbj8= - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - inherits "^2.0.1" + version "1.3.626" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.626.tgz#48acdf322be07feb2c1330ba05e4bf6327f721a3" + integrity sha512-7CanEvJx74EnvjHu1X8gf93KieyxvFLnqOXAH/ddjWD4RrUZYqdg3pykrQ/7t6SLI7DTsp4tfQXEfzeK5t6oAw== elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: version "6.5.3" @@ -5513,20 +4497,38 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" object-keys "^1.1.1" - object.assign "^4.1.0" + object.assign "^4.1.1" string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" @@ -5536,11 +4538,12 @@ es-array-method-boxes-properly@^1.0.0: integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== es-get-iterator@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" - integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9" + integrity sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw== dependencies: - es-abstract "^1.17.4" + call-bind "^1.0.0" + get-intrinsic "^1.0.1" has-symbols "^1.0.1" is-arguments "^1.0.4" is-map "^2.0.1" @@ -5557,7 +4560,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: +es5-ext@^0.10.35, es5-ext@^0.10.50: version "0.10.53" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== @@ -5566,7 +4569,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: es6-symbol "~3.1.3" next-tick "~1.0.0" -es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: +es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= @@ -5595,16 +4598,6 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" -es6-weak-map@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -5693,28 +4686,6 @@ eth-json-rpc-middleware@^1.5.0: promise-to-callback "^1.0.0" tape "^4.6.3" -eth-lib@0.1.27: - version "0.1.27" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.27.tgz#f0b0fd144f865d2d6bf8257a40004f2e75ca1dd6" - integrity sha512-B8czsfkJYzn2UIEMwjc7Mbj+Cy72V+/OXH/tb44LV8jhrjizQJJ325xMOMyk3+ETa6r6oi0jsUY14+om8mQMWA== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - keccakjs "^0.2.1" - nano-json-stream-parser "^0.1.2" - servify "^0.1.12" - ws "^3.0.0" - xhr-request-promise "^0.1.2" - -eth-lib@0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.7.tgz#2f93f17b1e23aec3759cd4a3fe20c1286a3fc1ca" - integrity sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco= - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" - eth-lib@0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" @@ -5744,30 +4715,6 @@ eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: json-rpc-random-id "^1.0.0" xtend "^4.0.1" -eth-sig-util@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.2.0.tgz#769fa3d296b450f6618dedeefe076642c923a16f" - integrity sha512-bAxW35bL4U2lrtjjV8rFGJ8B27z4Sn5v9eIaNdpPUnPfUAtrvx5j8atfyV+k+JOnbppcvKhWCO1rQSBk4kkAhw== - dependencies: - buffer "^5.2.1" - elliptic "^6.4.0" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.0" - tweetnacl-util "^0.15.0" - -eth-sig-util@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.3.0.tgz#c54a6ac8e8796f7e25f59cf436982a930e645231" - integrity sha512-ugD1AvaggvKaZDgnS19W5qOfepjGc7qHrt7TrAaL54gJw9SHvgIXJ3r2xOMW30RWJZNP+1GlTOy5oye7yXA4xA== - dependencies: - buffer "^5.2.1" - elliptic "^6.4.0" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.0" - tweetnacl-util "^0.15.0" - eth-sig-util@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" @@ -5852,52 +4799,6 @@ ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" -"ethereum-waffle-v2@npm:ethereum-waffle@2": - version "2.5.1" - resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-2.5.1.tgz#537325bb5112fae35ee00a0e783343f8a6f6b917" - integrity sha512-GPumiHpJHN9ONO7owo4mEZJDZzyDRawV3ukBdd+mPCxJkJbe69LTvza1nxcgwMjruXOd9GHaOnE/C2Sb+uGuMA== - dependencies: - "@ethereum-waffle/chai" "^2.5.1" - "@ethereum-waffle/compiler" "^2.5.1" - "@ethereum-waffle/mock-contract" "^2.5.1" - "@ethereum-waffle/provider" "^2.5.1" - ethers "^4.0.45" - -"ethereum-waffle-v3@npm:ethereum-waffle@3", ethereum-waffle@^3.0.0: - name ethereum-waffle-v3 - version "3.1.0" - resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.1.0.tgz#ae6a006fd859c97694e9c7248aa8c7623113b932" - integrity sha512-QSEzYhxBAjJAgVXZcR1lMB4Px1lAtf8M3QQPIflasNwHpw/VZWaYqN4o2fl615iPtOc3FFtMu1JSEbiuYojk/w== - dependencies: - "@ethereum-waffle/chai" "^3.1.0" - "@ethereum-waffle/compiler" "^3.1.0" - "@ethereum-waffle/mock-contract" "^3.1.0" - "@ethereum-waffle/provider" "^3.1.0" - ethers "^5.0.1" - -ethereum-waffle@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-2.1.0.tgz#c1ccef575b7e26e43f91cc077189d5840ea47aa6" - integrity sha512-toDUD0Nhjfse3Ti7I6gW7gvxitIpDCHHUZFPxErzSry8pss428Xz0eTYPtIk2bOjumTCpjH7UqsLki3b8wNCuA== - dependencies: - "@resolver-engine/imports" "^0.3.3" - "@resolver-engine/imports-fs" "^0.3.3" - "@types/ganache-core" "^2.1.2" - ethers "^4.0.0" - ganache-core "2.6.1" - solc "^0.5.10" - -ethereum-waffle@3, ethereum-waffle@^3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.1.1.tgz#2a63475104281dca1fd2ffed12ab8f6605219d51" - integrity sha512-kiJo7PPGKsRfNiQOB8Z/ogLTHrU7Cj7VOZrdU3nyx9xXobkTFN9F9FcwdYZRg3gw3C1XnuOd18Jk2hPfuQbORA== - dependencies: - "@ethereum-waffle/chai" "^3.1.1" - "@ethereum-waffle/compiler" "^3.1.1" - "@ethereum-waffle/mock-contract" "^3.1.1" - "@ethereum-waffle/provider" "^3.1.1" - ethers "^5.0.1" - ethereum-waffle@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.0.0.tgz#59e46b8e303eb5decbb5ceebca1ddf378db312d6" @@ -5909,21 +4810,24 @@ ethereum-waffle@3.0.0: "@ethereum-waffle/provider" "^3.0.0" ethers "^5.0.1" +ethereum-waffle@^3, ethereum-waffle@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.2.1.tgz#9d6d6b93484c5e1b77dfdeb646c050ed877e836e" + integrity sha512-Fhg7BaBuV+Xo5XT+NEC3UTKGunvpq+iQPglZbIAJF6ZcwQwkiKfJUDuB0ZSkg5ntbRS4gpahfoXj1nTzdtx8UA== + dependencies: + "@ethereum-waffle/chai" "^3.2.1" + "@ethereum-waffle/compiler" "^3.2.1" + "@ethereum-waffle/mock-contract" "^3.2.1" + "@ethereum-waffle/provider" "^3.2.1" + ethers "^5.0.1" + ethereumjs-abi@0.6.5: version "0.6.5" resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" integrity sha1-WmN+8Wq0NHP6cqKa2QhxQFs/UkE= dependencies: - bn.js "^4.10.0" - ethereumjs-util "^4.3.0" - -ethereumjs-abi@0.6.7: - version "0.6.7" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.7.tgz#d1d1c5cdb8d910a7d97645ba9e93be5d153bba2e" - integrity sha512-EMLOA8ICO5yAaXDhjVEfYjsJIXYutY8ufTE93eEKwsVtp2usQreKwsDTJ9zvam3omYqNuffr8IONIqb2uUslGQ== - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" + bn.js "^4.10.0" + ethereumjs-util "^4.3.0" ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: version "0.6.8" @@ -5958,17 +4862,6 @@ ethereumjs-account@^2.0.3: rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-block@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.0.tgz#8c6c3ab4a5eff0a16d9785fbeedbe643f4dbcbef" - integrity sha512-Ye+uG/L2wrp364Zihdlr/GfC3ft+zG8PdHcRtsBFNNH1CkOhxOwdB8friBU85n89uRZ9eIMAywCq0F4CwT1wAw== - dependencies: - async "^2.0.1" - ethereumjs-common "^1.1.0" - ethereumjs-tx "^1.2.2" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - ethereumjs-block@2.2.2, ethereumjs-block@^2.2.0, ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" @@ -5991,22 +4884,6 @@ ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: ethereumjs-util "^5.0.0" merkle-patricia-tree "^2.1.2" -ethereumjs-blockchain@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-3.4.0.tgz#92240da6ecd86b3d8d324df69510b381f26c966b" - integrity sha512-wxPSmt6EQjhbywkFbftKcb0qRFIZWocHMuDa8/AB4eWL/UPYalNcDyLaxYbrDytmhHid3Uu8G/tA3C/TxZBuOQ== - dependencies: - async "^2.6.1" - ethashjs "~0.0.7" - ethereumjs-block "~2.2.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "~6.0.0" - flow-stoplight "^1.0.0" - level-mem "^3.0.1" - lru-cache "^5.1.1" - safe-buffer "^5.1.2" - semaphore "^1.1.0" - ethereumjs-blockchain@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz#30f2228dc35f6dcf94423692a6902604ae34960f" @@ -6024,7 +4901,6 @@ ethereumjs-blockchain@^4.0.3: semaphore "^1.1.0" ethereumjs-common@1.5.0, "ethjs-common-v1@npm:ethereumjs-common@1.5.0": - name ethjs-common-v1 version "1.5.0" resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== @@ -6034,39 +4910,6 @@ ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== -"ethereumjs-ovm@git+https://github.com/ethereum-optimism/ethereumjs-vm": - version "4.2.0" - resolved "git+https://github.com/ethereum-optimism/ethereumjs-vm#02ba6e77a88339b04a053b5e653f644acb1555b8" - dependencies: - "@types/debug" "^4.1.5" - "@types/uuid" "^8.3.0" - async "^2.1.2" - async-eventemitter "^0.2.2" - core-js-pure "^3.0.1" - debug "^4.1.1" - ethereumjs-account "^3.0.0" - ethereumjs-block "^2.2.2" - ethereumjs-blockchain "^4.0.3" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.2" - ethereumjs-util "^6.2.0" - ethers "^5.0.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - util.promisify "^1.0.0" - uuid "^8.3.0" - -ethereumjs-tx@1.3.7, ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" - integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== - dependencies: - ethereum-common "^0.0.18" - ethereumjs-util "^5.0.0" - ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" @@ -6075,31 +4918,13 @@ ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: ethereumjs-common "^1.5.0" ethereumjs-util "^6.0.0" -ethereumjs-util@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz#e9c51e5549e8ebd757a339cc00f5380507e799c8" - integrity sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "0.1.6" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - -ethereumjs-util@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" - integrity sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ== +ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: + version "1.3.7" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" + integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== dependencies: - "@types/bn.js" "^4.11.3" - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "0.1.6" - keccak "^2.0.0" - rlp "^2.2.3" - secp256k1 "^3.0.1" + ethereum-common "^0.0.18" + ethereumjs-util "^5.0.0" ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0, "ethjs-util-v6@npm:ethereumjs-util@6.2.1": version "6.2.1" @@ -6125,7 +4950,7 @@ ethereumjs-util@^4.3.0: ethereum-cryptography "^0.1.3" rlp "^2.0.0" -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5: +ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== @@ -6138,10 +4963,10 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-util@^7.0.0, ethereumjs-util@^7.0.2, ethereumjs-util@^7.0.4: - version "7.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.5.tgz#bc6e178dedbccc4b188c9ae6ae38db1906884b7b" - integrity sha512-gLLZVXYUHR6pamO3h/+M1jzKz7qE20PKFyFKtq1PrIHA6wcLI96mDz96EMkkhXfrpk30rhpkw0iRnzxKhqaIdQ== +ethereumjs-util@^7.0.2, ethereumjs-util@^7.0.4: + version "7.0.7" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.7.tgz#484fb9c03b766b2ee64821281070616562fb5a59" + integrity sha512-vU5rtZBlZsgkTw3o6PDKyB8li2EgLavnAbsKcfsH2YhHH1Le+PP8vEiMnAnvgc1B6uMoaM5GDCrVztBw0Q5K9g== dependencies: "@types/bn.js" "^4.11.3" bn.js "^5.1.2" @@ -6150,37 +4975,6 @@ ethereumjs-util@^7.0.0, ethereumjs-util@^7.0.2, ethereumjs-util@^7.0.4: ethjs-util "0.1.6" rlp "^2.2.4" -ethereumjs-util@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.0.0.tgz#f14841c182b918615afefd744207c7932c8536c0" - integrity sha512-E3yKUyl0Fs95nvTFQZe/ZSNcofhDzUsDlA5y2uoRmf1+Ec7gpGhNCsgKkZBRh7Br5op8mJcYF/jFbmjj909+nQ== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "^0.1.6" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - -ethereumjs-vm@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-3.0.0.tgz#70fea2964a6797724b0d93fe080f9984ad18fcdd" - integrity sha512-lNu+G/RWPRCrQM5s24MqgU75PEGiAhL4Ombw0ew6m08d+amsxf/vGAb98yDNdQqqHKV6JbwO/tCGfdqXGI6Cug== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - ethereumjs-account "^2.0.3" - ethereumjs-block "~2.2.0" - ethereumjs-blockchain "^3.4.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "^6.0.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - ethereumjs-vm@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab" @@ -6219,21 +5013,6 @@ ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: rustbn.js "~0.2.0" safe-buffer "^5.1.1" -ethereumjs-wallet@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz#b0eae6f327637c2aeb9ccb9047b982ac542e6ab1" - integrity sha512-qiXPiZOsStem+Dj/CQHbn5qex+FVkuPmGH7SvSnA9F3tdRDt8dLMyvIj3+U05QzVZNPYh4HXEdnzoYI4dZkr9w== - dependencies: - aes-js "^3.1.1" - bs58check "^2.1.2" - ethereumjs-util "^6.0.0" - hdkey "^1.1.0" - randombytes "^2.0.6" - safe-buffer "^5.1.2" - scrypt.js "^0.3.0" - utf8 "^3.0.0" - uuid "^3.3.2" - ethereumjs-wallet@0.6.5: version "0.6.5" resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz#685e9091645cee230ad125c007658833991ed474" @@ -6249,72 +5028,6 @@ ethereumjs-wallet@0.6.5: utf8 "^3.0.0" uuid "^3.3.2" -"ethers-v4@npm:ethers@4", ethers@^4.0.0, ethers@^4.0.37, ethers@^4.0.39, ethers@^4.0.45: - version "4.0.48" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.48.tgz#330c65b8133e112b0613156e57e92d9009d8fbbe" - integrity sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g== - dependencies: - aes-js "3.0.0" - bn.js "^4.4.0" - elliptic "6.5.3" - hash.js "1.1.3" - js-sha3 "0.5.7" - scrypt-js "2.0.4" - setimmediate "1.0.4" - uuid "2.0.1" - xmlhttprequest "1.8.0" - -"ethers-v5@npm:ethers@5.0.7": - version "5.0.7" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.7.tgz#41c3d774e0a57bfde12b0198885789fb41a14976" - integrity sha512-1Zu9s+z4BgsDAZcGIYACJdWBB6mVtCCmUonj68Njul7STcSdgwOyj0sCAxCUr2Nsmsamckr4E12q3ecvZPGAUw== - dependencies: - "@ethersproject/abi" "^5.0.0" - "@ethersproject/abstract-provider" "^5.0.0" - "@ethersproject/abstract-signer" "^5.0.0" - "@ethersproject/address" "^5.0.0" - "@ethersproject/base64" "^5.0.0" - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/constants" "^5.0.0" - "@ethersproject/contracts" "^5.0.0" - "@ethersproject/hash" "^5.0.0" - "@ethersproject/hdnode" "^5.0.0" - "@ethersproject/json-wallets" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/networks" "^5.0.0" - "@ethersproject/pbkdf2" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/providers" "^5.0.0" - "@ethersproject/random" "^5.0.0" - "@ethersproject/rlp" "^5.0.0" - "@ethersproject/sha2" "^5.0.0" - "@ethersproject/signing-key" "^5.0.0" - "@ethersproject/solidity" "^5.0.0" - "@ethersproject/strings" "^5.0.0" - "@ethersproject/transactions" "^5.0.0" - "@ethersproject/units" "^5.0.0" - "@ethersproject/wallet" "^5.0.0" - "@ethersproject/web" "^5.0.0" - "@ethersproject/wordlists" "^5.0.0" - -ethers@4.0.0-beta.3: - version "4.0.0-beta.3" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.3.tgz#15bef14e57e94ecbeb7f9b39dd0a4bd435bc9066" - integrity sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog== - dependencies: - "@types/node" "^10.3.2" - aes-js "3.0.0" - bn.js "^4.4.0" - elliptic "6.3.3" - hash.js "1.1.3" - js-sha3 "0.5.7" - scrypt-js "2.0.3" - setimmediate "1.0.4" - uuid "2.0.1" - xmlhttprequest "1.8.0" - ethers@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.0.tgz#76558a3020766f310a49f4e1a4c6c1e331761abd" @@ -6350,149 +5063,41 @@ ethers@5.0.0: "@ethersproject/web" "^5.0.0" "@ethersproject/wordlists" "^5.0.0" -ethers@^5: - version "5.0.18" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.18.tgz#2ccf382d32b9712e6967d0b14303cb0fe8056c7a" - integrity sha512-WCiKGfAt09hBS1HZspu+JTgeunFcUCVRhCXO8X+VadBJGTRlG722XXib79Vz2oyBperz90CcjkBPdNly61Ah4A== - dependencies: - "@ethersproject/abi" "5.0.7" - "@ethersproject/abstract-provider" "5.0.5" - "@ethersproject/abstract-signer" "5.0.7" - "@ethersproject/address" "5.0.5" - "@ethersproject/base64" "5.0.4" - "@ethersproject/basex" "5.0.4" - "@ethersproject/bignumber" "5.0.8" - "@ethersproject/bytes" "5.0.5" - "@ethersproject/constants" "5.0.5" - "@ethersproject/contracts" "5.0.5" - "@ethersproject/hash" "5.0.6" - "@ethersproject/hdnode" "5.0.5" - "@ethersproject/json-wallets" "5.0.7" - "@ethersproject/keccak256" "5.0.4" - "@ethersproject/logger" "5.0.6" - "@ethersproject/networks" "5.0.4" - "@ethersproject/pbkdf2" "5.0.4" - "@ethersproject/properties" "5.0.4" - "@ethersproject/providers" "5.0.13" - "@ethersproject/random" "5.0.4" - "@ethersproject/rlp" "5.0.4" - "@ethersproject/sha2" "5.0.4" - "@ethersproject/signing-key" "5.0.5" - "@ethersproject/solidity" "5.0.5" - "@ethersproject/strings" "5.0.5" - "@ethersproject/transactions" "5.0.6" - "@ethersproject/units" "5.0.6" - "@ethersproject/wallet" "5.0.6" - "@ethersproject/web" "5.0.9" - "@ethersproject/wordlists" "5.0.5" - -ethers@^5.0.0, ethers@^5.0.1: - version "5.0.12" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.12.tgz#8986cf53a425d1a00af6bda886e9098b0448d1fb" - integrity sha512-mgF1ZLd1y5r+hS1IPATKwKx5k/PCSqz4PEQjMR+er+Hhu6IefVVcoYATUMjmK4FG+3PAkorRMA9rJ4Y/fdW0UA== - dependencies: - "@ethersproject/abi" "^5.0.3" - "@ethersproject/abstract-provider" "^5.0.3" - "@ethersproject/abstract-signer" "^5.0.3" - "@ethersproject/address" "^5.0.3" - "@ethersproject/base64" "^5.0.3" - "@ethersproject/basex" "^5.0.3" - "@ethersproject/bignumber" "^5.0.6" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.3" - "@ethersproject/contracts" "^5.0.3" - "@ethersproject/hash" "^5.0.3" - "@ethersproject/hdnode" "^5.0.3" - "@ethersproject/json-wallets" "^5.0.5" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/networks" "^5.0.3" - "@ethersproject/pbkdf2" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/providers" "^5.0.6" - "@ethersproject/random" "^5.0.3" - "@ethersproject/rlp" "^5.0.3" - "@ethersproject/sha2" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - "@ethersproject/solidity" "^5.0.3" - "@ethersproject/strings" "^5.0.3" - "@ethersproject/transactions" "^5.0.3" - "@ethersproject/units" "^5.0.3" - "@ethersproject/wallet" "^5.0.3" - "@ethersproject/web" "^5.0.4" - "@ethersproject/wordlists" "^5.0.3" - -ethers@^5.0.13: - version "5.0.19" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.19.tgz#a4636f62a180135b13fd1f0a393477beafd535b7" - integrity sha512-0AZnUgZh98q888WAd1oI3aLeI+iyDtrupjANVtPPS7O63lVopkR/No8A1NqSkgl/rU+b2iuu2mUZor6GD4RG2w== - dependencies: - "@ethersproject/abi" "5.0.7" - "@ethersproject/abstract-provider" "5.0.5" - "@ethersproject/abstract-signer" "5.0.7" - "@ethersproject/address" "5.0.5" - "@ethersproject/base64" "5.0.4" - "@ethersproject/basex" "5.0.4" - "@ethersproject/bignumber" "5.0.8" - "@ethersproject/bytes" "5.0.5" - "@ethersproject/constants" "5.0.5" - "@ethersproject/contracts" "5.0.5" - "@ethersproject/hash" "5.0.6" - "@ethersproject/hdnode" "5.0.5" - "@ethersproject/json-wallets" "5.0.7" - "@ethersproject/keccak256" "5.0.4" - "@ethersproject/logger" "5.0.6" - "@ethersproject/networks" "5.0.4" - "@ethersproject/pbkdf2" "5.0.4" - "@ethersproject/properties" "5.0.4" - "@ethersproject/providers" "5.0.14" - "@ethersproject/random" "5.0.4" - "@ethersproject/rlp" "5.0.4" - "@ethersproject/sha2" "5.0.4" - "@ethersproject/signing-key" "5.0.5" - "@ethersproject/solidity" "5.0.5" - "@ethersproject/strings" "5.0.5" - "@ethersproject/transactions" "5.0.6" - "@ethersproject/units" "5.0.6" - "@ethersproject/wallet" "5.0.7" - "@ethersproject/web" "5.0.9" - "@ethersproject/wordlists" "5.0.5" - -ethers@^5.0.14: - version "5.0.15" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.15.tgz#958818605ea1bfe5a745bbe6b6f4f2c5c0e4637c" - integrity sha512-ODBTkK+dg44d4yzLgD/w3IxDBa9nLFBF4z8OgICISvkVO2uLLmlR5boqv61PtTMTIPydT9wTn5C1cUntHKFkqQ== - dependencies: - "@ethersproject/abi" "5.0.6" - "@ethersproject/abstract-provider" "5.0.5" - "@ethersproject/abstract-signer" "5.0.6" - "@ethersproject/address" "5.0.5" - "@ethersproject/base64" "5.0.4" - "@ethersproject/basex" "5.0.4" - "@ethersproject/bignumber" "5.0.8" - "@ethersproject/bytes" "5.0.5" - "@ethersproject/constants" "5.0.5" - "@ethersproject/contracts" "5.0.5" - "@ethersproject/hash" "5.0.5" - "@ethersproject/hdnode" "5.0.5" - "@ethersproject/json-wallets" "5.0.7" - "@ethersproject/keccak256" "5.0.4" - "@ethersproject/logger" "5.0.6" - "@ethersproject/networks" "5.0.4" - "@ethersproject/pbkdf2" "5.0.4" - "@ethersproject/properties" "5.0.4" - "@ethersproject/providers" "5.0.10" - "@ethersproject/random" "5.0.4" - "@ethersproject/rlp" "5.0.4" - "@ethersproject/sha2" "5.0.4" - "@ethersproject/signing-key" "5.0.5" - "@ethersproject/solidity" "5.0.5" - "@ethersproject/strings" "5.0.5" - "@ethersproject/transactions" "5.0.6" - "@ethersproject/units" "5.0.5" - "@ethersproject/wallet" "5.0.5" - "@ethersproject/web" "5.0.8" - "@ethersproject/wordlists" "5.0.5" +ethers@^5, ethers@^5.0.0, ethers@^5.0.1, ethers@^5.0.13, ethers@^5.0.14, ethers@^5.0.24: + version "5.0.24" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.24.tgz#fbb8e4d35070d134f2eb846c07500b8c0eaef6d3" + integrity sha512-77CEtVC88fJGEhxGXRvQqAEH6e2A+ZFiv2FBT6ikXndlty5sw6vMatAhg1v+w3CaaGZOf1CP81jl4Mc8Zrj08A== + dependencies: + "@ethersproject/abi" "5.0.9" + "@ethersproject/abstract-provider" "5.0.7" + "@ethersproject/abstract-signer" "5.0.9" + "@ethersproject/address" "5.0.8" + "@ethersproject/base64" "5.0.6" + "@ethersproject/basex" "5.0.6" + "@ethersproject/bignumber" "5.0.12" + "@ethersproject/bytes" "5.0.8" + "@ethersproject/constants" "5.0.7" + "@ethersproject/contracts" "5.0.8" + "@ethersproject/hash" "5.0.9" + "@ethersproject/hdnode" "5.0.7" + "@ethersproject/json-wallets" "5.0.9" + "@ethersproject/keccak256" "5.0.6" + "@ethersproject/logger" "5.0.8" + "@ethersproject/networks" "5.0.6" + "@ethersproject/pbkdf2" "5.0.6" + "@ethersproject/properties" "5.0.6" + "@ethersproject/providers" "5.0.17" + "@ethersproject/random" "5.0.6" + "@ethersproject/rlp" "5.0.6" + "@ethersproject/sha2" "5.0.6" + "@ethersproject/signing-key" "5.0.7" + "@ethersproject/solidity" "5.0.7" + "@ethersproject/strings" "5.0.7" + "@ethersproject/transactions" "5.0.8" + "@ethersproject/units" "5.0.8" + "@ethersproject/wallet" "5.0.9" + "@ethersproject/web" "5.0.11" + "@ethersproject/wordlists" "5.0.7" ethjs-unit@0.1.6: version "0.1.6" @@ -6502,7 +5107,7 @@ ethjs-unit@0.1.6: bn.js "4.11.6" number-to-bn "1.7.0" -ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: +ethjs-util@0.1.6, ethjs-util@^0.1.3: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== @@ -6515,21 +5120,16 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter3@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.1.1.tgz#47786bdaa087caf7b1b75e73abc5c7d540158cd0" - integrity sha1-R3hr2qCHyvext15zq8XH1UAVjNA= - -eventemitter3@3.1.2, eventemitter3@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - eventemitter3@4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + events@^3.0.0, events@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" @@ -6587,13 +5187,6 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - express@^4.14.0, express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -6667,7 +5260,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.2: +extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -6712,16 +5305,6 @@ fake-merkle-patricia-tree@^1.0.1: dependencies: checkpoint-store "^1.1.0" -fancy-log@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" - integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== - dependencies: - ansi-gray "^0.1.1" - color-support "^1.1.3" - parse-node-version "^1.0.0" - time-stamp "^1.0.0" - fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -6749,11 +5332,6 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz#e6a754cc8f15e58987aa9cbd27af66fd6f4e5af9" - integrity sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk= - fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -6900,55 +5478,24 @@ find-yarn-workspace-root@^1.2.1: fs-extra "^4.0.3" micromatch "^3.1.4" -findup-sync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -fined@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" - integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== - dependencies: - expand-tilde "^2.0.2" - is-plain-object "^2.0.3" - object.defaults "^1.1.0" - object.pick "^1.2.0" - parse-filepath "^1.0.1" - -flagged-respawn@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" - integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== - flat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" - integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== + version "4.1.1" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" + integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== dependencies: is-buffer "~2.0.3" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flow-stoplight@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= -flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: +flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== @@ -6964,9 +5511,9 @@ follow-redirects@1.5.10: debug "=3.1.0" follow-redirects@^1.12.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" - integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== + version "1.13.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" + integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== for-each@~0.3.3: version "0.3.3" @@ -6975,18 +5522,11 @@ for-each@~0.3.3: dependencies: is-callable "^1.1.3" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -7061,14 +5601,6 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^2.0.0, fs-extra@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" - integrity sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - fs-extra@^4.0.2, fs-extra@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -7113,24 +5645,6 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" -fs-mkdirp-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" - integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= - dependencies: - graceful-fs "^4.1.11" - through2 "^2.0.3" - -fs-promise@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-2.0.3.tgz#f64e4f854bcf689aa8bddcba268916db3db46854" - integrity sha1-9k5PhUvPaJqovdy6JokW2z20aFQ= - dependencies: - any-promise "^1.3.0" - fs-extra "^2.0.0" - mz "^2.6.0" - thenify-all "^1.6.0" - fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -7146,108 +5660,22 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.1.1, fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -fstream@^1.0.12, fstream@^1.0.8: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.1.1, function-bind@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -ganache-core@*, ganache-core@^2.10.2, ganache-core@^2.11.2: - version "2.11.3" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.11.3.tgz#c59e6c34b03279bffd32f4694ec8ed6f5f1d76a8" - integrity sha512-SsFJUnyiZI+jW3I43XluXi3TvJC3Ke6vZkvN6NjbWpXvi6dOrmafkyq9Rq07+Qrri6BLGKWoZcG8HfH6ietuqg== - dependencies: - abstract-leveldown "3.0.0" - async "2.6.2" - bip39 "2.5.0" - cachedown "1.0.0" - clone "2.1.2" - debug "3.2.6" - encoding-down "5.0.4" - eth-sig-util "2.3.0" - ethereumjs-abi "0.6.7" - ethereumjs-account "3.0.0" - ethereumjs-block "2.2.2" - ethereumjs-common "1.5.0" - ethereumjs-tx "2.1.2" - ethereumjs-util "6.2.0" - ethereumjs-vm "4.2.0" - heap "0.2.6" - level-sublevel "6.6.4" - levelup "3.1.1" - lodash "4.17.14" - lru-cache "5.1.1" - merkle-patricia-tree "2.3.2" - seedrandom "3.0.1" - source-map-support "0.5.12" - tmp "0.1.0" - web3-provider-engine "14.2.1" - websocket "1.0.29" - optionalDependencies: - ethereumjs-wallet "0.6.3" - web3 "1.2.4" - -ganache-core@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.6.1.tgz#b97156cd53d0492477c1229d57f8a97763d30d46" - integrity sha512-P3X8yo1GAabYuc8SOnWAFyHL8LhOlNOG6amtItgOEDBTUXMKlkGKP42OxjKovxCAlE7d9CXmYXo1Bu0rffBm9w== - dependencies: - abstract-leveldown "3.0.0" - async "2.6.2" - bip39 "2.5.0" - cachedown "1.0.0" - clone "2.1.2" - debug "3.2.6" - encoding-down "5.0.4" - eth-sig-util "2.2.0" - ethereumjs-abi "0.6.7" - ethereumjs-account "3.0.0" - ethereumjs-block "2.2.0" - ethereumjs-tx "1.3.7" - ethereumjs-util "6.1.0" - ethereumjs-vm "3.0.0" - heap "0.2.6" - level-sublevel "6.6.4" - levelup "3.1.1" - lodash "4.17.14" - merkle-patricia-tree "2.3.2" - seedrandom "3.0.1" - source-map-support "0.5.12" - tmp "0.1.0" - web3-provider-engine "14.2.0" - websocket "1.0.29" - optionalDependencies: - ethereumjs-wallet "0.6.3" - web3 "1.0.0-beta.35" +fsevents@~2.1.1, fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +function-bind@^1.1.1, function-bind@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -ganache-core@^2.12.1: +ganache-core@^2.10.2, ganache-core@^2.11.2, ganache-core@^2.12.1: version "2.13.1" resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.13.1.tgz#bf60399a2dd084e1090db91cbbc7ed3885dc01e4" integrity sha512-Ewg+kNcDqXtOohe7jCcP+ZUv9EMzOx2MoqOYYP3BCfxrDh3KjBXXaKK+Let7li0TghAs9lxmBgevZku35j5YzA== @@ -7318,6 +5746,15 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= +get-intrinsic@^1.0.0, get-intrinsic@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" + integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-pkg-repo@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" @@ -7334,11 +5771,6 @@ get-port@^4.2.0: resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== -get-port@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - get-proxy@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" @@ -7426,9 +5858,9 @@ git-up@^4.0.0: parse-url "^5.0.0" git-url-parse@^11.1.2: - version "11.2.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.2.0.tgz#2955fd51befd6d96ea1389bbe2ef57e8e6042b04" - integrity sha512-KPoHZg8v+plarZvto4ruIzzJLFQoRx+sUs5DQSr07By9IBKguVd+e6jwrFR6/TP6xrCJlNV1tPqLO1aREc7O2g== + version "11.4.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.4.0.tgz#f2bb1f2b00f05552540e95a62e31399a639a6aa6" + integrity sha512-KlIa5jvMYLjXMQXkqpFzobsyD/V2K5DRHl5OAf+6oDFPlPLxrGDVQlIdI63c4/Kt6kai4kALENSALlzTGST3GQ== dependencies: git-up "^4.0.0" @@ -7459,40 +5891,11 @@ glob-parent@^5.0.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob-stream@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" - integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= - dependencies: - extend "^3.0.0" - glob "^7.1.1" - glob-parent "^3.1.0" - is-negated-glob "^1.0.0" - ordered-read-streams "^1.0.0" - pumpify "^1.3.5" - readable-stream "^2.1.5" - remove-trailing-separator "^1.0.1" - to-absolute-glob "^2.0.0" - unique-stream "^2.0.2" - glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob-watcher@^5.0.3: - version "5.0.5" - resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.5.tgz#aa6bce648332924d9a8489be41e3e5c52d4186dc" - integrity sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw== - dependencies: - anymatch "^2.0.0" - async-done "^1.2.0" - chokidar "^2.0.0" - is-negated-glob "^1.0.0" - just-debounce "^1.0.0" - normalize-path "^3.0.0" - object.defaults "^1.1.0" - glob@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -7524,33 +5927,13 @@ global-dirs@^0.1.1: dependencies: ini "^1.3.4" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global@~4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" - integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== dependencies: min-document "^2.19.0" - process "~0.5.1" + process "^0.11.10" globals@^9.18.0: version "9.18.0" @@ -7571,14 +5954,24 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" -glogg@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" - integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== +got@9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: - sparkles "^1.0.0" + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" -got@7.1.0, got@^7.1.0: +got@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== @@ -7598,23 +5991,6 @@ got@7.1.0, got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" -got@9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - got@^8.3.1: version "8.3.2" resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" @@ -7638,7 +6014,7 @@ got@^8.3.1: url-parse-lax "^3.0.0" url-to-options "^1.0.1" -graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2: +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== @@ -7648,47 +6024,6 @@ growl@1.10.5: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -gulp-cli@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.3.0.tgz#ec0d380e29e52aa45e47977f0d32e18fd161122f" - integrity sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A== - dependencies: - ansi-colors "^1.0.1" - archy "^1.0.0" - array-sort "^1.0.0" - color-support "^1.1.3" - concat-stream "^1.6.0" - copy-props "^2.0.1" - fancy-log "^1.3.2" - gulplog "^1.0.0" - interpret "^1.4.0" - isobject "^3.0.1" - liftoff "^3.1.0" - matchdep "^2.0.0" - mute-stdout "^1.0.0" - pretty-hrtime "^1.0.0" - replace-homedir "^1.0.0" - semver-greatest-satisfied-range "^1.1.0" - v8flags "^3.2.0" - yargs "^7.1.0" - -gulp@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" - integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== - dependencies: - glob-watcher "^5.0.3" - gulp-cli "^2.2.0" - undertaker "^1.2.1" - vinyl-fs "^3.0.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= - dependencies: - glogg "^1.0.0" - handlebars@^4.7.6: version "4.7.6" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" @@ -7821,15 +6156,6 @@ hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hdkey@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-1.1.2.tgz#c60f9cf6f90fbf24a8a52ea06893f36a0108cd3e" - integrity sha512-PTQ4VKu0oRnCrYfLp04iQZ7T2Cxz0UsEXYauk2j8eh6PJXCpbXuCFhOmtIFtbET0i3PMWmHN9J11gU8LEgUljQ== - dependencies: - bs58check "^2.1.2" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -7857,18 +6183,18 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== +hosted-git-info@^3.0.6: + version "3.0.7" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c" + integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ== + dependencies: + lru-cache "^6.0.0" + http-cache-semantics@3.8.1, http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" @@ -7967,10 +6293,10 @@ idna-uts46-hx@^2.3.1: dependencies: punycode "2.1.0" -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== iferr@^0.1.5: version "0.1.5" @@ -8050,7 +6376,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -8061,9 +6387,9 @@ inherits@2.0.3: integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== init-package-json@^1.10.3: version "1.10.3" @@ -8098,11 +6424,6 @@ inquirer@^6.2.0: strip-ansi "^5.1.0" through "^2.3.6" -interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - into-stream@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" @@ -8111,7 +6432,7 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -invariant@^2.2.2: +invariant@2, invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -8140,14 +6461,6 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -8163,22 +6476,17 @@ is-accessor-descriptor@^1.0.0: kind-of "^6.0.0" is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -8191,15 +6499,15 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.2, is-buffer@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== +is-buffer@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.1.tgz#4d1e21a4f437509d25ce55f8184350771421c96d" - integrity sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== is-ci@^2.0.0: version "2.0.0" @@ -8208,6 +6516,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -8322,19 +6637,19 @@ is-installed-globally@^0.2.0: is-path-inside "^2.1.0" is-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" - integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== is-natural-number@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= -is-negated-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" - integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= +is-negative-zero@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== is-number@^3.0.0: version "3.0.0" @@ -8343,11 +6658,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -8364,9 +6674,9 @@ is-obj@^2.0.0: integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== is-path-inside@^2.1.0: version "2.1.0" @@ -8380,7 +6690,12 @@ is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -8392,7 +6707,7 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-regex@^1.0.4, is-regex@^1.1.0: +is-regex@^1.0.4, is-regex@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== @@ -8406,22 +6721,15 @@ is-regex@~1.0.5: dependencies: has "^1.0.3" -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== is-set@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" - integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== is-ssh@^1.3.0: version "1.3.2" @@ -8435,7 +6743,7 @@ is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-string@^1.0.4, is-string@^1.0.5: +is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== @@ -8459,29 +6767,17 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - is-url@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== -is-utf8@^0.2.0, is-utf8@^0.2.1: +is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-valid-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" - integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= - -is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.0, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -8559,11 +6855,6 @@ js-sha3@0.8.0, js-sha3@^0.8.0: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== -js-sha3@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.6.1.tgz#5b89f77a7477679877f58c4a075240934b1f95c0" - integrity sha1-W4n3enR3Z5h39YxKB1JAk0sflcA= - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -8582,7 +6873,7 @@ js-yaml@3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@3.14.0, js-yaml@^3.13.1: +js-yaml@3.14.0: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -8590,6 +6881,14 @@ js-yaml@3.14.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -8654,11 +6953,6 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" @@ -8691,11 +6985,11 @@ jsonfile@^4.0.0: graceful-fs "^4.1.6" jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - universalify "^1.0.0" + universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" @@ -8719,11 +7013,6 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -just-debounce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" - integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= - keccak@3.0.1, keccak@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" @@ -8732,34 +7021,6 @@ keccak@3.0.1, keccak@^3.0.0: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -keccak@^1.0.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" - integrity sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw== - dependencies: - bindings "^1.2.1" - inherits "^2.0.3" - nan "^2.2.1" - safe-buffer "^5.1.0" - -keccak@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.1.0.tgz#734ea53f2edcfd0f42cdb8d5f4c358fef052752b" - integrity sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q== - dependencies: - bindings "^1.5.0" - inherits "^2.0.4" - nan "^2.14.0" - safe-buffer "^5.2.0" - -keccakjs@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/keccakjs/-/keccakjs-0.2.3.tgz#5e4e969ce39689a3861f445d7752ee3477f9fe72" - integrity sha512-BjLkNDcfaZ6l8HBG9tH0tpmDv3sS2mA7FNQxFHpCdzP3Gb2MVruXBSuoM66SnVxKJpAr5dKGdkHD+bDokt8fTg== - dependencies: - browserify-sha3 "^0.0.4" - sha3 "^1.2.2" - keyv@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" @@ -8788,7 +7049,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0, kind-of@^5.0.2: +kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -8812,21 +7073,6 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" -last-run@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" - integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= - dependencies: - default-resolution "^2.0.0" - es6-weak-map "^2.0.1" - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= - dependencies: - readable-stream "^2.0.5" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -8834,13 +7080,6 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -lead@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" - integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= - dependencies: - flush-write-stream "^1.0.2" - lerna@^3.13.1: version "3.22.1" resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.22.1.tgz#82027ac3da9c627fd8bf02ccfeff806a98e65b62" @@ -8958,15 +7197,7 @@ level-mem@^3.0.1: level-packager "~4.0.0" memdown "~3.0.0" -level-mem@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-5.0.1.tgz#c345126b74f5b8aa376dc77d36813a177ef8251d" - integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== - dependencies: - level-packager "^5.0.3" - memdown "^5.0.0" - -level-packager@^5.0.3, level-packager@^5.1.0: +level-packager@^5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939" integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== @@ -9020,13 +7251,13 @@ level-ws@0.0.0: readable-stream "~1.0.15" xtend "~2.1.1" -level-ws@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-2.0.0.tgz#207a07bcd0164a0ec5d62c304b4615c54436d339" - integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== +level-ws@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-1.0.0.tgz#19a22d2d4ac57b18cc7c6ecc4bd23d899d8f603b" + integrity sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q== dependencies: inherits "^2.0.3" - readable-stream "^3.1.0" + readable-stream "^2.2.8" xtend "^4.0.1" level@^6.0.0: @@ -9081,20 +7312,6 @@ levelup@^4.3.2: level-supports "~1.0.0" xtend "~4.0.0" -liftoff@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" - integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== - dependencies: - extend "^3.0.0" - findup-sync "^3.0.0" - fined "^1.0.1" - flagged-respawn "^1.0.0" - is-plain-object "^2.0.4" - object.map "^1.0.0" - rechoir "^0.6.2" - resolve "^1.1.7" - lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -9217,12 +7434,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.14: - version "4.17.14" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" - integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== - -lodash@4.17.20, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.2.1: +lodash@4.17.20, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.2.1: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -9310,6 +7522,13 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + lru_map@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" @@ -9367,14 +7586,7 @@ make-fetch-happen@^5.0.0: socks-proxy-agent "^4.0.0" ssri "^6.0.0" -make-iterator@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" - integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== - dependencies: - kind-of "^6.0.2" - -map-cache@^0.2.0, map-cache@^0.2.2: +map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= @@ -9401,16 +7613,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -matchdep@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" - integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= - dependencies: - findup-sync "^2.0.0" - micromatch "^3.0.4" - resolve "^1.4.0" - stack-trace "0.0.10" - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -9444,30 +7646,6 @@ memdown@^1.0.0: ltgt "~2.2.0" safe-buffer "~5.1.1" -memdown@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-4.1.0.tgz#4e667ec75ce524a8aa7391c10a5a357c6d4fde0e" - integrity sha512-RqDUWsJ3IH27+dHwBOg6/ZWJoGul+tesnaQ10Pr/ARx7GpskB01Ky0zNZ8EkM6lvQqXcxyzukmXA0T39XW2sRw== - dependencies: - abstract-leveldown "~6.0.1" - functional-red-black-tree "~1.0.1" - immediate "~3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -memdown@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-5.1.0.tgz#608e91a9f10f37f5b5fe767667a8674129a833cb" - integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== - dependencies: - abstract-leveldown "~6.2.1" - functional-red-black-tree "~1.0.1" - immediate "~3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.2.0" - memdown@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/memdown/-/memdown-3.0.0.tgz#93aca055d743b20efc37492e9e399784f2958309" @@ -9516,22 +7694,22 @@ meow@^4.0.0: redent "^2.0.0" trim-newlines "^2.0.0" -meow@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" - integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA== +meow@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-8.0.0.tgz#1aa10ee61046719e334ffdc038bb5069250ec99a" + integrity sha512-nbsTRz2fwniJBFgUkcdISq8y/q9n9VbiHYbfwklFh5V4V2uAcxtKQkDc0yCLPM/kP0d+inZBewn3zJqewHE7kg== dependencies: "@types/minimist" "^1.2.0" camelcase-keys "^6.2.2" decamelize-keys "^1.1.0" hard-rejection "^2.1.0" minimist-options "4.1.0" - normalize-package-data "^2.5.0" + normalize-package-data "^3.0.0" read-pkg-up "^7.0.1" redent "^3.0.0" trim-newlines "^3.0.0" - type-fest "^0.13.1" - yargs-parser "^18.1.3" + type-fest "^0.18.0" + yargs-parser "^20.2.3" merge-descriptors@1.0.1: version "1.0.1" @@ -9543,7 +7721,20 @@ merge2@^1.2.3: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merkle-patricia-tree@2.3.2, merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: +merkle-patricia-tree@3.0.0, merkle-patricia-tree@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8" + integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== + dependencies: + async "^2.6.1" + ethereumjs-util "^5.2.0" + level-mem "^3.0.1" + level-ws "^1.0.0" + readable-stream "^3.0.6" + rlp "^2.0.0" + semaphore ">=1.0.1" + +merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== @@ -9557,36 +7748,12 @@ merkle-patricia-tree@2.3.2, merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2 rlp "^2.0.0" semaphore ">=1.0.1" -merkle-patricia-tree@3.0.0, merkle-patricia-tree@^3.0.0: - version "3.0.0" - resolved "git+https://github.com/kfichter/merkle-patricia-tree#ebd10c405be8ae909f1f82dea275a0e9ec1c8e46" - dependencies: - ethereumjs-util "^7.0.0" - level-mem "^5.0.1" - level-ws "^2.0.0" - readable-stream "^3.6.0" - rlp "^2.2.4" - semaphore-async-await "^1.5.1" - -merkle-patricia-tree@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.0.0.tgz#b95500a2a188a813eae18b175b34d9f439b92a62" - integrity sha512-OnI0iUvc5G66ZJgSB7PnuU6Pnk9QADMcBgua7YhNm8gbQJq5Hbiv9U9hQRe3mEM1KEfbqrdTC+x33bTewF+oCA== - dependencies: - "@types/levelup" "^3.1.1" - ethereumjs-util "^7.0.2" - level-mem "^5.0.1" - level-ws "^2.0.0" - readable-stream "^3.6.0" - rlp "^2.2.4" - semaphore-async-await "^1.5.1" - methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -9613,11 +7780,16 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.44.0, mime-db@^1.28.0: +mime-db@1.44.0: version "1.44.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@^1.28.0: + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== + mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" @@ -9759,7 +7931,7 @@ mkdirp@0.5.4: dependencies: minimist "^1.2.5" -mkdirp@0.5.5, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@0.5.5, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -9857,14 +8029,15 @@ mocha@^7.1.2: yargs-unparser "1.6.0" mocha@^8.1.2: - version "8.1.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.3.tgz#5e93f873e35dfdd69617ea75f9c68c2ca61c2ac5" - integrity sha512-ZbaYib4hT4PpF4bdSO2DohooKXIn4lDeiYqB+vTmCdr6l2woW0b6H3pf5x4sM5nwQMru9RvjjHYWVGltR50ZBw== + version "8.2.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.2.1.tgz#f2fa68817ed0e53343d989df65ccd358bc3a4b39" + integrity sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w== dependencies: + "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.4.2" - debug "4.1.1" + chokidar "3.4.3" + debug "4.2.0" diff "4.0.2" escape-string-regexp "4.0.0" find-up "5.0.0" @@ -9875,17 +8048,16 @@ mocha@^8.1.2: log-symbols "4.0.0" minimatch "3.0.4" ms "2.1.2" - object.assign "4.1.0" - promise.allsettled "1.0.2" - serialize-javascript "4.0.0" - strip-json-comments "3.0.1" - supports-color "7.1.0" + nanoid "3.1.12" + serialize-javascript "5.0.1" + strip-json-comments "3.1.1" + supports-color "7.2.0" which "2.0.2" wide-align "1.1.3" - workerpool "6.0.0" + workerpool "6.0.2" yargs "13.3.2" yargs-parser "13.1.2" - yargs-unparser "1.6.1" + yargs-unparser "2.0.0" mock-fs@^4.1.0: version "4.13.0" @@ -9897,11 +8069,6 @@ modify-values@^1.0.0: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -mout@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/mout/-/mout-0.11.1.tgz#ba3611df5f0e5b1ffbfd01166b8f02d1f5fa2b99" - integrity sha1-ujYR318OWx/7/QEWa48C0fX6K5k= - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -9924,11 +8091,16 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@2.1.2, ms@^2.0.0, ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.0.0, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + multibase@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" @@ -9979,11 +8151,6 @@ multimatch@^3.0.0: arrify "^1.0.1" minimatch "^3.0.4" -mute-stdout@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" - integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== - mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -9994,7 +8161,7 @@ mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -mz@^2.5.0, mz@^2.6.0, mz@^2.7.0: +mz@^2.5.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== @@ -10008,16 +8175,21 @@ nan@2.13.2: resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== -nan@^2.0.8, nan@^2.11.0, nan@^2.12.1, nan@^2.14.0, nan@^2.2.1, nan@^2.3.3: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== +nan@^2.14.0: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== nano-json-stream-parser@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= +nanoid@3.1.12: + version "3.1.12" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" + integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -10065,10 +8237,10 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-abi@^2.18.0, node-abi@^2.19.1, node-abi@^2.7.0: - version "2.19.1" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.19.1.tgz#6aa32561d0a5e2fdb6810d8c25641b657a8cea85" - integrity sha512-HbtmIuByq44yhAzK7b9j/FelKlHYISKQn0mtvcBrU5QBkhoCMp5bu8Hv5AI34DcKfOAcJBcOEMwLlwO62FFu9A== +node-abi@^2.18.0, node-abi@^2.7.0: + version "2.19.3" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.19.3.tgz#252f5dcab12dad1b5503b2d27eddd4733930282d" + integrity sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg== dependencies: semver "^5.4.1" @@ -10077,6 +8249,11 @@ node-addon-api@^2.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== +node-addon-api@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.2.tgz#04bc7b83fd845ba785bb6eae25bc857e1ef75681" + integrity sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg== + node-environment-flags@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" @@ -10107,7 +8284,7 @@ node-fetch@2.1.2: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= -node-fetch@^2.3.0, node-fetch@^2.5.0, node-fetch@^2.6.0: +node-fetch@^2.5.0, node-fetch@^2.6.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -10125,11 +8302,6 @@ node-gyp-build@^4.2.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== -node-gyp-build@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.7.0.tgz#daa77a4f547b9aed3e2aac779eaf151afd60ec8d" - integrity sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w== - node-gyp-build@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb" @@ -10162,15 +8334,14 @@ node-hid@1.3.0: node-abi "^2.18.0" prebuild-install "^5.3.4" -node-hid@^1.1.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-1.3.1.tgz#649862360d833c3de61b0cbe5cc9f8ea7e831ca2" - integrity sha512-vpiI+FAUhoUmvLnXagmqSO1ijvPK9OrGKbEMFkyAWeuK8eOv4DTPcwYiSxK/LULUZDnKjEBhctrIvCUQdqqltQ== +node-hid@2.0.0-0: + version "2.0.0-0" + resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-2.0.0-0.tgz#35daffb4708f27331ca4143af0b8cf338fea9908" + integrity sha512-Ywc4WaMANhvqHDTynRmbuP52ln76WiNRjjAom5l2uLyNY1wixCVjISi+SP4/Rfgcddq9UJM1sR5+lPD0GcvvMg== dependencies: bindings "^1.5.0" - nan "^2.14.0" - node-abi "^2.19.1" - prebuild-install "^5.3.5" + node-addon-api "^3.0.2" + prebuild-install "^6.0.0" noop-logger@^0.1.1: version "0.1.1" @@ -10195,12 +8366,15 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= +normalize-package-data@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a" + integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw== dependencies: - remove-trailing-separator "^1.0.1" + hosted-git-info "^3.0.6" + resolve "^1.17.0" + semver "^7.3.2" + validate-npm-package-license "^3.0.1" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -10226,13 +8400,6 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== -now-and-later@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" - integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== - dependencies: - once "^1.3.2" - npm-bundled@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" @@ -10344,10 +8511,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.8.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== object-inspect@~1.7.0: version "1.7.0" @@ -10355,12 +8522,12 @@ object-inspect@~1.7.0: integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== object-is@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" + integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -10379,7 +8546,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@4.1.0, object.assign@^4.0.4, object.assign@^4.1.0: +object.assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== @@ -10389,54 +8556,32 @@ object.assign@4.1.0, object.assign@^4.0.4, object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.defaults@^1.0.0, object.defaults@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" - integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= +object.assign@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: - array-each "^1.0.1" - array-slice "^1.0.0" - for-own "^1.0.0" - isobject "^3.0.0" + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" + integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.map@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" - integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" + es-abstract "^1.18.0-next.1" -object.pick@^1.2.0, object.pick@^1.3.0: +object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" -object.reduce@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" - integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - -oboe@2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.3.tgz#2b4865dbd46be81225713f4e9bfe4bcf4f680a4f" - integrity sha1-K0hl29Rr6BIlcT9Om/5Lz09oCk8= - dependencies: - http-https "^1.0.0" - oboe@2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" @@ -10444,6 +8589,13 @@ oboe@2.1.4: dependencies: http-https "^1.0.0" +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80= + dependencies: + http-https "^1.0.0" + octokit-pagination-methods@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" @@ -10456,7 +8608,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -10470,13 +8622,6 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -ordered-read-streams@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" - integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= - dependencies: - readable-stream "^2.0.1" - original-require@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" @@ -10571,11 +8716,11 @@ p-limit@^2.0.0, p-limit@^2.2.0: p-try "^2.0.0" p-limit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-try "^2.0.0" + yocto-queue "^0.1.0" p-locate@^2.0.0: version "2.0.0" @@ -10665,11 +8810,6 @@ p-waterfall@^1.0.0: dependencies: p-reduce "^1.0.0" -packet-reader@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" - integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== - parallel-transform@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" @@ -10690,15 +8830,6 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-filepath@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= - dependencies: - is-absolute "^1.0.0" - map-cache "^0.2.0" - path-root "^0.1.1" - parse-github-repo-url@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" @@ -10734,16 +8865,6 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-node-version@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parse-path@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.2.tgz#ef14f0d3d77bae8dd4bc66563a4c151aac9e65aa" @@ -10837,18 +8958,6 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-root-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= - -path-root@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= - dependencies: - path-root-regex "^0.1.0" - path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -10896,58 +9005,6 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -pg-connection-string@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.3.0.tgz#c13fcb84c298d0bfa9ba12b40dd6c23d946f55d6" - integrity sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w== - -pg-int8@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" - integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== - -pg-pool@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.1.tgz#5f4afc0f58063659aeefa952d36af49fa28b30e0" - integrity sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA== - -pg-protocol@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.2.5.tgz#28a1492cde11646ff2d2d06bdee42a3ba05f126c" - integrity sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg== - -pg-types@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" - integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== - dependencies: - pg-int8 "1.0.1" - postgres-array "~2.0.0" - postgres-bytea "~1.0.0" - postgres-date "~1.0.4" - postgres-interval "^1.1.0" - -pg@^8.3.0: - version "8.3.3" - resolved "https://registry.yarnpkg.com/pg/-/pg-8.3.3.tgz#0338631ca3c39b4fb425b699d494cab17f5bb7eb" - integrity sha512-wmUyoQM/Xzmo62wgOdQAn5tl7u+IA1ZYK7qbuppi+3E+Gj4hlUxVHjInulieWrd0SfHi/ADriTb5ILJ/lsJrSg== - dependencies: - buffer-writer "2.0.0" - packet-reader "1.0.0" - pg-connection-string "^2.3.0" - pg-pool "^3.2.1" - pg-protocol "^1.2.5" - pg-types "^2.1.0" - pgpass "1.x" - semver "4.3.2" - -pgpass@1.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306" - integrity sha1-Knu0G2BltnkH6R2hsHwYR8h3swY= - dependencies: - split "^1.0.0" - picomatch@^2.0.4, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" @@ -10992,34 +9049,12 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postgres-array@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" - integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== - -postgres-bytea@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" - integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= - -postgres-date@~1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" - integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== - -postgres-interval@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" - integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== - dependencies: - xtend "^4.0.0" - postinstall-postinstall@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== -prebuild-install@^5.3.3, prebuild-install@^5.3.4, prebuild-install@^5.3.5: +prebuild-install@^5.3.3, prebuild-install@^5.3.4: version "5.3.6" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.6.tgz#7c225568d864c71d89d07f8796042733a3f54291" integrity sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg== @@ -11040,6 +9075,27 @@ prebuild-install@^5.3.3, prebuild-install@^5.3.4, prebuild-install@^5.3.5: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" +prebuild-install@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.0.0.tgz#669022bcde57c710a869e39c5ca6bf9cd207f316" + integrity sha512-h2ZJ1PXHKWZpp1caLw0oX9sagVpL2YTk+ZwInQbQ3QqNd4J03O6MpFNmMTJlkfgPENWqe5kP0WjQLqz5OjLfsw== + dependencies: + detect-libc "^1.0.3" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^2.7.0" + noop-logger "^0.1.1" + npmlog "^4.0.1" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^3.0.3" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + which-pm-runs "^1.0.0" + precond@0.2: version "0.2.3" resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" @@ -11060,25 +9116,20 @@ prettier@^1.16.4: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -pretty-hrtime@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: +process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" - integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= promise-inflight@^1.0.1: version "1.0.1" @@ -11235,7 +9286,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3, pumpify@^1.3.5: +pumpify@^1.3.3: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== @@ -11303,11 +9354,6 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -random-bytes-seed@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/random-bytes-seed/-/random-bytes-seed-1.0.3.tgz#126f1201dba2ec70cd0784f94a810396cad24a15" - integrity sha512-O+eniMt8Sj2iAn2q1x5VEirS/XvbtwYcXNDbOAcRtGN+OhC48cmzS5ksf9qEHRVKC1I8A4qzjucNVElddofB0A== - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -11323,11 +9369,6 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -randomhex@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" - integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -11449,7 +9490,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -11462,7 +9503,7 @@ read@1, read@~1.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.1.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -11501,15 +9542,6 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - readdirp@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" @@ -11524,12 +9556,12 @@ readdirp@~3.4.0: dependencies: picomatch "^2.2.1" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== dependencies: - resolve "^1.1.6" + picomatch "^2.2.1" redent@^1.0.0: version "1.0.0" @@ -11556,9 +9588,9 @@ redent@^3.0.0: strip-indent "^3.0.0" regenerate@^1.2.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" - integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.11.0: version "0.11.1" @@ -11611,28 +9643,6 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -remove-bom-buffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" - integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== - dependencies: - is-buffer "^1.1.5" - is-utf8 "^0.2.1" - -remove-bom-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" - integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= - dependencies: - remove-bom-buffer "^3.0.0" - safe-buffer "^5.1.0" - through2 "^2.0.3" - -remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" @@ -11650,20 +9660,6 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -replace-ext@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" - integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== - -replace-homedir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" - integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= - dependencies: - homedir-polyfill "^1.0.1" - is-absolute "^1.0.0" - remove-trailing-separator "^1.1.0" - request@^2.79.0, request@^2.85.0, request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -11722,14 +9718,6 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -11740,19 +9728,20 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-options@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" - integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= - dependencies: - value-or-function "^3.0.0" - resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, resolve@~1.17.0: +resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +resolve@~1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -11791,7 +9780,7 @@ retry@^0.10.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -11806,7 +9795,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4, rlp@^2.2.5: +rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4, rlp@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== @@ -11866,45 +9855,11 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -scrypt-js@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" - integrity sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q= - -scrypt-js@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" - integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== - scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -scrypt.js@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.2.0.tgz#af8d1465b71e9990110bedfc593b9479e03a8ada" - integrity sha1-r40UZbcemZARC+38WTuUeeA6ito= - dependencies: - scrypt "^6.0.2" - scryptsy "^1.2.1" - -scrypt.js@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.3.0.tgz#6c62d61728ad533c8c376a2e5e3e86d41a95c4c0" - integrity sha512-42LTc1nyFsyv/o0gcHtDztrn+aqpkaCNt5Qh7ATBZfhEZU7IC/0oT/qbBH+uRNoAPvs2fwiOId68FDEoSRA8/A== - dependencies: - scryptsy "^1.2.1" - optionalDependencies: - scrypt "^6.0.2" - -scrypt@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/scrypt/-/scrypt-6.0.3.tgz#04e014a5682b53fa50c2d5cce167d719c06d870d" - integrity sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0= - dependencies: - nan "^2.0.8" - scryptsy@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" @@ -11912,25 +9867,6 @@ scryptsy@^1.2.1: dependencies: pbkdf2 "^3.0.3" -scryptsy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" - integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== - -secp256k1@^3.0.1: - version "3.8.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" - integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== - dependencies: - bindings "^1.5.0" - bip66 "^1.1.5" - bn.js "^4.11.8" - create-hash "^1.2.0" - drbg.js "^1.0.1" - elliptic "^6.5.2" - nan "^2.14.0" - safe-buffer "^5.1.2" - secp256k1@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" @@ -11945,11 +9881,6 @@ seedrandom@3.0.1: resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== -seedrandom@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" - integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== - seek-bzip@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" @@ -11957,38 +9888,28 @@ seek-bzip@^1.0.5: dependencies: commander "^2.8.1" -semaphore-async-await@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz#857bef5e3644601ca4b9570b87e9df5ca12974fa" - integrity sha1-hXvvXjZEYBykuVcLh+nfXKEpdPo= - semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== -semver-greatest-satisfied-range@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" - integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= - dependencies: - sver-compat "^1.5.0" - "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" - integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c= - semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.3.2: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + semver@~5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -12020,6 +9941,13 @@ serialize-javascript@4.0.0: dependencies: randombytes "^2.1.0" +serialize-javascript@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serve-static@1.14.1: version "1.14.1" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" @@ -12061,11 +9989,6 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= - setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -12084,13 +10007,6 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -sha3@^1.2.2: - version "1.2.6" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-1.2.6.tgz#102aa3e47dc793e2357902c3cce8760822f9e905" - integrity sha512-KgLGmJGrmNB4JWVsAV11Yk6KbvsAiygWJc7t5IebWva/0NukNrjJqhtKhzy3Eiv2AKuGvhZZt7dt1mDo7HkoiQ== - dependencies: - nan "2.13.2" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -12234,20 +10150,6 @@ solc@^0.4.20: semver "^5.3.0" yargs "^4.7.1" -solc@^0.5.10: - version "0.5.17" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.17.tgz#8a76c50e98d49ca7610cca2fdc78ff3016540c67" - integrity sha512-qpX+PGaU0Q3c6lh2vDzMoIbhv6bIrecI4bYsx+xUs01xsGFnY6Nr0L8y/QMyutTnrHN6Lb/Yl672ZVRqxka96w== - dependencies: - command-exists "^1.2.8" - commander "3.0.2" - fs-extra "^0.30.0" - js-sha3 "0.8.0" - memorystream "^0.3.1" - require-from-string "^2.0.0" - semver "^5.5.0" - tmp "0.0.33" - solc@^0.6.3: version "0.6.12" resolved "https://registry.yarnpkg.com/solc/-/solc-0.6.12.tgz#48ac854e0c729361b22a7483645077f58cba080e" @@ -12262,21 +10164,6 @@ solc@^0.6.3: semver "^5.5.0" tmp "0.0.33" -solpp@^0.10.1: - version "0.10.2" - resolved "https://registry.yarnpkg.com/solpp/-/solpp-0.10.2.tgz#fb25c9032ccd9396c5169a4a9feabe1d402524b3" - integrity sha512-NtDgMzJXVD7NofxolLDspvukEMA++tktab7pobGI11xf46LXSOWICthVzfA+bmItcGAnFcNKwDX6s1GqNlf6HQ== - dependencies: - antlr4 "^4.7.1" - axios "^0.18.0" - bn-str-256 "^1.9.1" - commander "^2.19.0" - ethereumjs-util "^6.0.0" - lodash "^4.17.11" - mz "^2.7.0" - resolve "^1.10.0" - semver "^5.6.0" - sort-keys-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" @@ -12347,11 +10234,6 @@ source-map@^0.6.0, source-map@^0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sparkles@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" - integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== - spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -12374,9 +10256,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -12426,11 +10308,6 @@ ssri@^6.0.0, ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -stack-trace@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -12452,11 +10329,6 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" -stream-exhaust@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" - integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== - stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" @@ -12475,7 +10347,7 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -12502,29 +10374,29 @@ string-width@^3.0.0, string-width@^3.1.0: strip-ansi "^5.1.0" string.prototype.trim@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" - integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== + version "1.2.3" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz#d23a22fde01c1e6571a7fadcb9be11decd8061a7" + integrity sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.1" string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" string_decoder@^1.1.1: version "1.3.0" @@ -12626,6 +10498,11 @@ strip-json-comments@3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + strip-outer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" @@ -12656,69 +10533,24 @@ supports-color@7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: +supports-color@7.2.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -sver-compat@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" - integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= - dependencies: - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - -swarm-js@0.1.37: - version "0.1.37" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.37.tgz#27d485317a340bbeec40292af783cc10acfa4663" - integrity sha512-G8gi5fcXP/2upwiuOShJ258sIufBVztekgobr3cVgYXObZwJ5AXLqZn52AI+/ffft29pJexF9WNdUxjlkVehoQ== - dependencies: - bluebird "^3.5.0" - buffer "^5.0.5" - decompress "^4.0.0" - eth-lib "^0.1.26" - fs-extra "^2.1.2" - fs-promise "^2.0.0" - got "^7.1.0" - mime-types "^2.1.16" - mkdirp-promise "^5.0.1" - mock-fs "^4.1.0" - setimmediate "^1.0.5" - tar.gz "^1.0.5" - xhr-request-promise "^0.1.2" + dependencies: + has-flag "^4.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -swarm-js@0.1.39: - version "0.1.39" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" - integrity sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg== +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: - bluebird "^3.5.0" - buffer "^5.0.5" - decompress "^4.0.0" - eth-lib "^0.1.26" - fs-extra "^4.0.2" - got "^7.1.0" - mime-types "^2.1.16" - mkdirp-promise "^5.0.1" - mock-fs "^4.1.0" - setimmediate "^1.0.5" - tar "^4.0.2" - xhr-request-promise "^0.1.2" + has-flag "^3.0.0" swarm-js@^0.1.40: version "0.1.40" @@ -12792,26 +10624,6 @@ tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" -tar.gz@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/tar.gz/-/tar.gz-1.0.7.tgz#577ef2c595faaa73452ef0415fed41113212257b" - integrity sha512-uhGatJvds/3diZrETqMj4RxBR779LKlIE74SsMcn5JProZsfs9j0QBwWO1RW+IWNJxS2x8Zzra1+AW6OQHWphg== - dependencies: - bluebird "^2.9.34" - commander "^2.8.1" - fstream "^1.0.8" - mout "^0.11.0" - tar "^2.1.1" - -tar@^2.1.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" - integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== - dependencies: - block-stream "*" - fstream "^1.0.12" - inherits "2" - tar@^4.0.2, tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -12852,7 +10664,7 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== -thenify-all@^1.0.0, thenify-all@^1.6.0: +thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= @@ -12871,15 +10683,7 @@ throat@^4.1.0: resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= -through2-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" - integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== - dependencies: - through2 "~2.0.0" - xtend "~4.0.0" - -through2@^2.0.0, through2@^2.0.2, through2@^2.0.3, through2@~2.0.0: +through2@^2.0.0, through2@^2.0.2, through2@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -12895,16 +10699,18 @@ through2@^3.0.0: inherits "^2.0.4" readable-stream "2 || 3" +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -time-stamp@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= - timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -12924,14 +10730,6 @@ tmp@0.1.0: dependencies: rimraf "^2.6.3" -to-absolute-glob@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" - integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= - dependencies: - is-absolute "^1.0.0" - is-negated-glob "^1.0.0" - to-buffer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" @@ -12979,13 +10777,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -to-through@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" - integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= - dependencies: - through2 "^2.0.3" - toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" @@ -13039,9 +10830,9 @@ trim-right@^1.0.1: integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= truffle@^5.1.41: - version "5.1.43" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.43.tgz#544e7b0955b6728a00761a86555c1eb259313266" - integrity sha512-KXda/70RAG9TBdQta8JEwVQmL9r/AZzU++5aZkrF4/nDosund8SV1yM9CcDTib4xLWuMaB15YyOC5r163QdLAw== + version "5.1.57" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.57.tgz#0afbce669d879aeec2bcc6f77ba8fb228353a4ed" + integrity sha512-HBRM0EkhgsBYTSW+825NlW473ohjAOiHqg/NSfkL4LCN39gmnspirugR0DHTzj1KsEUGCE/arckgJO4Ay71pYQ== dependencies: app-module-path "^2.2.0" mocha "8.1.2" @@ -13052,11 +10843,6 @@ ts-essentials@^2.0.7: resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== -ts-md5@^1.2.4: - version "1.2.7" - resolved "https://registry.yarnpkg.com/ts-md5/-/ts-md5-1.2.7.tgz#b76471fc2fd38f0502441f6c3b9494ed04537401" - integrity sha512-emODogvKGWi1KO1l9c6YxLMBn6CEH3VrH5mVPIyOtxBG52BvV4jP3GWz6bOZCz61nLgBc3ffQYE4+EHfCD+V7w== - ts-node@8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.0.2.tgz#9ecdf8d782a0ca4c80d1d641cbb236af4ac1b756" @@ -13080,9 +10866,9 @@ ts-node@^8.10.2, ts-node@^8.2.0: yn "3.1.1" tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslint-config-prettier@^1.18.0: version "1.18.0" @@ -13166,10 +10952,10 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== type-fest@^0.3.0: version "0.3.1" @@ -13204,7 +10990,7 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== -typedarray-to-buffer@^3.1.2, typedarray-to-buffer@^3.1.5: +typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== @@ -13216,7 +11002,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.3.3333, typescript@^3.5.1, typescript@^3.9.5: +typescript@^3.3.3333, typescript@^3.5.1: version "3.9.7" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== @@ -13244,9 +11030,9 @@ u2f-api@0.2.7: integrity sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg== uglify-js@^3.1.4: - version "3.10.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.4.tgz#dd680f5687bc0d7a93b14a3482d16db6eba2bfbb" - integrity sha512-kBFT3U4Dcj4/pJ52vfjCSfyLyvG9VYYuGYPmrPvAxRw/i7xHiT4VvCev+uiEMcEEiu6UNB6KgWmGtSUYIWScbw== + version "3.12.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.1.tgz#78307f539f7b9ca5557babb186ea78ad30cc0375" + integrity sha512-o8lHP20KjIiQe5b/67Rh68xEGRrc2SRsCuuoYclXXoC74AfSRGblU1HKzJWH3HxPZ+Ort85fWHpSX7KwBUC9CQ== uid-number@0.0.6: version "0.0.6" @@ -13271,42 +11057,11 @@ unbzip2-stream@^1.0.9: buffer "^5.2.1" through "^2.3.8" -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - -underscore@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" - integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= - underscore@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== -undertaker-registry@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" - integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= - -undertaker@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.3.0.tgz#363a6e541f27954d5791d6fa3c1d321666f86d18" - integrity sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg== - dependencies: - arr-flatten "^1.0.1" - arr-map "^2.0.0" - bach "^1.0.0" - collection-map "^1.0.0" - es6-weak-map "^2.0.1" - fast-levenshtein "^1.0.0" - last-run "^1.1.0" - object.defaults "^1.0.0" - object.reduce "^1.0.0" - undertaker-registry "^1.0.0" - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -13331,14 +11086,6 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unique-stream@^2.0.2: - version "2.3.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" - integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== - dependencies: - json-stable-stringify-without-jsonify "^1.0.1" - through2-filter "^3.0.0" - universal-user-agent@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" @@ -13361,6 +11108,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unorm@^1.3.3: version "1.6.0" resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" @@ -13379,7 +11131,7 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.1, upath@^1.2.0: +upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -13428,7 +11180,7 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -usb@^1.6.0: +usb@^1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/usb/-/usb-1.6.3.tgz#c0bc14994e8f9cb16f9602ec0dbadaa57cb919f5" integrity sha512-23KYMjaWydACd8wgGKMQ4MNwFspAT6Xeim4/9Onqe5Rz/nMb4TM/WHL+qPT0KNFxzNKzAs63n1xQWGEtgaQ2uw== @@ -13443,16 +11195,11 @@ use@^3.1.0: integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== utf-8-validate@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.2.tgz#63cfbccd85dc1f2b66cf7a1d0eebc08ed056bfb3" - integrity sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw== + version "5.0.3" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.3.tgz#3b64e418ad2ff829809025fdfef595eab2f03a27" + integrity sha512-jtJM6fpGv8C1SoH4PtG22pGto6x+Y8uPprW0tw3//gGFhDDTiuksgradgFN6yRayDP4SyZZa6ZMGHLIa17+M8A== dependencies: - node-gyp-build "~3.7.0" - -utf8@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.1.tgz#2e01db02f7d8d0944f77104f1609eb0c304cf768" - integrity sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g= + node-gyp-build "^4.2.0" utf8@3.0.0, utf8@^3.0.0: version "3.0.0" @@ -13486,11 +11233,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= - uuid@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -13502,16 +11244,9 @@ uuid@^3.0.1, uuid@^3.3.2, uuid@^3.3.3: integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== uuid@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" - integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== - -v8flags@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" - integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== - dependencies: - homedir-polyfill "^1.0.1" + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" @@ -13528,15 +11263,10 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" -value-or-function@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" - integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= - varint@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.0.tgz#d826b89f7490732fabc0c0ed693ed475dcb29ebf" - integrity sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8= + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== vary@^1, vary@~1.1.2: version "1.1.2" @@ -13552,54 +11282,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vinyl-fs@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" - integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== - dependencies: - fs-mkdirp-stream "^1.0.0" - glob-stream "^6.1.0" - graceful-fs "^4.0.0" - is-valid-glob "^1.0.0" - lazystream "^1.0.0" - lead "^1.0.0" - object.assign "^4.0.4" - pumpify "^1.3.5" - readable-stream "^2.3.3" - remove-bom-buffer "^3.0.0" - remove-bom-stream "^1.2.0" - resolve-options "^1.1.0" - through2 "^2.0.0" - to-through "^2.0.0" - value-or-function "^3.0.0" - vinyl "^2.0.0" - vinyl-sourcemap "^1.1.0" - -vinyl-sourcemap@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" - integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= - dependencies: - append-buffer "^1.0.2" - convert-source-map "^1.5.0" - graceful-fs "^4.1.6" - normalize-path "^2.1.1" - now-and-later "^2.0.0" - remove-bom-buffer "^3.0.0" - vinyl "^2.0.0" - -vinyl@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - wcwidth@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -13607,15 +11289,6 @@ wcwidth@^1.0.0: dependencies: defaults "^1.0.3" -web3-bzz@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.35.tgz#9d5e1362b3db2afd77d65619b7cd46dd5845c192" - integrity sha512-BhAU0qhlr8zltm4gs/+P1gki2VkxHJaM2Rrh4DGesDW0lzwufRoNvWFlwx1bKHoFPWNbSmm9PRkHOYOINL/Tgw== - dependencies: - got "7.1.0" - swarm-js "0.1.37" - underscore "1.8.3" - web3-bzz@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" @@ -13626,25 +11299,16 @@ web3-bzz@1.2.11: swarm-js "^0.1.40" underscore "1.9.1" -web3-bzz@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.4.tgz#a4adb7a8cba3d260de649bdb1f14ed359bfb3821" - integrity sha512-MqhAo/+0iQSMBtt3/QI1rU83uvF08sYq8r25+OUZ+4VtihnYsmkkca+rdU0QbRyrXY2/yGIpI46PFdh0khD53A== +web3-bzz@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.3.0.tgz#83dfd77fa8a64bbb660462dffd0fee2a02ef1051" + integrity sha512-ibYAnKab+sgTo/UdfbrvYfWblXjjgSMgyy9/FHa6WXS14n/HVB+HfWqGz2EM3fok8Wy5XoKGMvdqvERQ/mzq1w== dependencies: - "@types/node" "^10.12.18" + "@types/node" "^12.12.6" got "9.6.0" - swarm-js "0.1.39" + swarm-js "^0.1.40" underscore "1.9.1" -web3-core-helpers@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.35.tgz#d681d218a0c6e3283ee1f99a078ab9d3eef037f1" - integrity sha512-APOu3sEsamyqWt//8o4yq9KF25/uqGm+pQShson/sC4gKzmfJB07fLo2ond0X30E8fIqAPeVCotPXQxGciGUmA== - dependencies: - underscore "1.8.3" - web3-eth-iban "1.0.0-beta.35" - web3-utils "1.0.0-beta.35" - web3-core-helpers@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" @@ -13654,25 +11318,14 @@ web3-core-helpers@1.2.11: web3-eth-iban "1.2.11" web3-utils "1.2.11" -web3-core-helpers@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.4.tgz#ffd425861f4d66b3f38df032afdb39ea0971fc0f" - integrity sha512-U7wbsK8IbZvF3B7S+QMSNP0tni/6VipnJkB0tZVEpHEIV2WWeBHYmZDnULWcsS/x/jn9yKhJlXIxWGsEAMkjiw== +web3-core-helpers@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.0.tgz#697cc3246a7eaaaac64ea506828d861c981c3f31" + integrity sha512-+MFb1kZCrRctf7UYE7NCG4rGhSXaQJ/KF07di9GVK1pxy1K0+rFi61ZobuV1ky9uQp+uhhSPts4Zp55kRDB5sw== dependencies: underscore "1.9.1" - web3-eth-iban "1.2.4" - web3-utils "1.2.4" - -web3-core-method@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.35.tgz#fc10e2d546cf4886038e6130bd5726b0952a4e5f" - integrity sha512-jidImCide8q0GpfsO4L73qoHrbkeWgwU3uOH5DKtJtv0ccmG086knNMRgryb/o9ZgetDWLmDEsJnHjBSoIwcbA== - dependencies: - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.35" - web3-core-promievent "1.0.0-beta.35" - web3-core-subscriptions "1.0.0-beta.35" - web3-utils "1.0.0-beta.35" + web3-eth-iban "1.3.0" + web3-utils "1.3.0" web3-core-method@1.2.11: version "1.2.11" @@ -13686,24 +11339,17 @@ web3-core-method@1.2.11: web3-core-subscriptions "1.2.11" web3-utils "1.2.11" -web3-core-method@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.4.tgz#a0fbc50b8ff5fd214021435cc2c6d1e115807aed" - integrity sha512-8p9kpL7di2qOVPWgcM08kb+yKom0rxRCMv6m/K+H+yLSxev9TgMbCgMSbPWAHlyiF3SJHw7APFKahK5Z+8XT5A== +web3-core-method@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.0.tgz#a71387af842aec7dbad5dbbd1130c14cc6c8beb3" + integrity sha512-h0yFDrYVzy5WkLxC/C3q+hiMnzxdWm9p1T1rslnuHgOp6nYfqzu/6mUIXrsS4h/OWiGJt+BZ0xVZmtC31HDWtg== dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" underscore "1.9.1" - web3-core-helpers "1.2.4" - web3-core-promievent "1.2.4" - web3-core-subscriptions "1.2.4" - web3-utils "1.2.4" - -web3-core-promievent@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.35.tgz#4f1b24737520fa423fee3afee110fbe82bcb8691" - integrity sha512-GvqXqKq07OmHuVi5uNRg6k79a1/CI0ViCC+EtNv4CORHtDRmYEt5Bvdv6z6FJEiaaQkD0lKbFwNhLxutx7HItw== - dependencies: - any-promise "1.3.0" - eventemitter3 "1.1.1" + web3-core-helpers "1.3.0" + web3-core-promievent "1.3.0" + web3-core-subscriptions "1.3.0" + web3-utils "1.3.0" web3-core-promievent@1.2.11: version "1.2.11" @@ -13712,24 +11358,12 @@ web3-core-promievent@1.2.11: dependencies: eventemitter3 "4.0.4" -web3-core-promievent@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.4.tgz#75e5c0f2940028722cdd21ba503ebd65272df6cb" - integrity sha512-gEUlm27DewUsfUgC3T8AxkKi8Ecx+e+ZCaunB7X4Qk3i9F4C+5PSMGguolrShZ7Zb6717k79Y86f3A00O0VAZw== - dependencies: - any-promise "1.3.0" - eventemitter3 "3.1.2" - -web3-core-requestmanager@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.35.tgz#2b77cbf6303720ad68899b39fa7f584dc03dbc8f" - integrity sha512-S+zW2h17ZZQU9oe3yaCJE0E7aJS4C3Kf4kGPDv+nXjW0gKhQQhgVhw1Doq/aYQGqNSWJp7f1VHkz5gQWwg6RRg== +web3-core-promievent@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.0.tgz#e0442dd0a8989b6bdce09293976cee6d9237a484" + integrity sha512-blv69wrXw447TP3iPvYJpllkhW6B18nfuEbrfcr3n2Y0v1Jx8VJacNZFDFsFIcgXcgUIVCtOpimU7w9v4+rtaw== dependencies: - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.35" - web3-providers-http "1.0.0-beta.35" - web3-providers-ipc "1.0.0-beta.35" - web3-providers-ws "1.0.0-beta.35" + eventemitter3 "4.0.4" web3-core-requestmanager@1.2.11: version "1.2.11" @@ -13742,25 +11376,16 @@ web3-core-requestmanager@1.2.11: web3-providers-ipc "1.2.11" web3-providers-ws "1.2.11" -web3-core-requestmanager@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.4.tgz#0a7020a23fb91c6913c611dfd3d8c398d1e4b4a8" - integrity sha512-eZJDjyNTDtmSmzd3S488nR/SMJtNnn/GuwxnMh3AzYCqG3ZMfOylqTad2eYJPvc2PM5/Gj1wAMQcRpwOjjLuPg== +web3-core-requestmanager@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.0.tgz#c5b9a0304504c0e6cce6c90bc1a3bff82732aa1f" + integrity sha512-3yMbuGcomtzlmvTVqNRydxsx7oPlw3ioRL6ReF9PeNYDkUsZaUib+6Dp5eBt7UXh5X+SIn/xa1smhDHz5/HpAw== dependencies: underscore "1.9.1" - web3-core-helpers "1.2.4" - web3-providers-http "1.2.4" - web3-providers-ipc "1.2.4" - web3-providers-ws "1.2.4" - -web3-core-subscriptions@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.35.tgz#c1b76a2ad3c6e80f5d40b8ba560f01e0f4628758" - integrity sha512-gXzLrWvcGkGiWq1y33Z4Y80XI8XMrwowiQJkrPSjQ81K5PBKquOGwcMffLaKcwdmEy/NpsOXDeFo3eLE1Ghvvw== - dependencies: - eventemitter3 "1.1.1" - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.35" + web3-core-helpers "1.3.0" + web3-providers-http "1.3.0" + web3-providers-ipc "1.3.0" + web3-providers-ws "1.3.0" web3-core-subscriptions@1.2.11: version "1.2.11" @@ -13771,26 +11396,16 @@ web3-core-subscriptions@1.2.11: underscore "1.9.1" web3-core-helpers "1.2.11" -web3-core-subscriptions@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.4.tgz#0dc095b5cfd82baa527a39796e3515a846b21b99" - integrity sha512-3D607J2M8ymY9V+/WZq4MLlBulwCkwEjjC2U+cXqgVO1rCyVqbxZNCmHyNYHjDDCxSEbks9Ju5xqJxDSxnyXEw== +web3-core-subscriptions@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.0.tgz#c2622ccd2b84f4687475398ff966b579dba0847e" + integrity sha512-MUUQUAhJDb+Nz3S97ExVWveH4utoUnsbPWP+q1HJH437hEGb4vunIb9KvN3hFHLB+aHJfPeStM/4yYTz5PeuyQ== dependencies: - eventemitter3 "3.1.2" + eventemitter3 "4.0.4" underscore "1.9.1" - web3-core-helpers "1.2.4" - -web3-core@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.35.tgz#0c44d3c50d23219b0b1531d145607a9bc7cd4b4f" - integrity sha512-ayGavbgVk4KL9Y88Uv411fBJ0SVgVfKhKEBweKYzmP0zOqneMzWt6YsyD1n6kRvjAbqA0AfUPEOKyMNjcx2tjw== - dependencies: - web3-core-helpers "1.0.0-beta.35" - web3-core-method "1.0.0-beta.35" - web3-core-requestmanager "1.0.0-beta.35" - web3-utils "1.0.0-beta.35" + web3-core-helpers "1.3.0" -web3-core@1.2.11, web3-core@^1.2.9: +web3-core@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== @@ -13803,28 +11418,18 @@ web3-core@1.2.11, web3-core@^1.2.9: web3-core-requestmanager "1.2.11" web3-utils "1.2.11" -web3-core@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.4.tgz#2df13b978dcfc59c2abaa887d27f88f21ad9a9d6" - integrity sha512-CHc27sMuET2cs1IKrkz7xzmTdMfZpYswe7f0HcuyneTwS1yTlTnHyqjAaTy0ZygAb/x4iaVox+Gvr4oSAqSI+A== - dependencies: - "@types/bignumber.js" "^5.0.0" - "@types/bn.js" "^4.11.4" - "@types/node" "^12.6.1" - web3-core-helpers "1.2.4" - web3-core-method "1.2.4" - web3-core-requestmanager "1.2.4" - web3-utils "1.2.4" - -web3-eth-abi@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.35.tgz#2eb9c1c7c7233db04010defcb192293e0db250e6" - integrity sha512-KUDC+EtFFYG8z01ZleKrASdjj327/rtWHzEt6RWsEj7bBa0bGp9nEh+nqdZx/Sdgz1O8tnfFzJlrRcXpfr1vGg== +web3-core@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.0.tgz#b818903738461c1cca0163339e1d6d3fa51242cf" + integrity sha512-BwWvAaKJf4KFG9QsKRi3MNoNgzjI6szyUlgme1qNPxUdCkaS3Rdpa0VKYNHP7M/YTk82/59kNE66mH5vmoaXjA== dependencies: - bn.js "4.11.6" - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.35" - web3-utils "1.0.0-beta.35" + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.3.0" + web3-core-method "1.3.0" + web3-core-requestmanager "1.3.0" + web3-utils "1.3.0" web3-eth-abi@1.2.11: version "1.2.11" @@ -13835,30 +11440,14 @@ web3-eth-abi@1.2.11: underscore "1.9.1" web3-utils "1.2.11" -web3-eth-abi@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.4.tgz#5b73e5ef70b03999227066d5d1310b168845e2b8" - integrity sha512-8eLIY4xZKoU3DSVu1pORluAw9Ru0/v4CGdw5so31nn+7fR8zgHMgwbFe0aOqWQ5VU42PzMMXeIJwt4AEi2buFg== +web3-eth-abi@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.0.tgz#387b7ea9b38be69ad8856bc7b4e9a6a69bb4d22b" + integrity sha512-1OrZ9+KGrBeBRd3lO8upkpNua9+7cBsQAgor9wbA25UrcUYSyL8teV66JNRu9gFxaTbkpdrGqM7J/LXpraXWrg== dependencies: - ethers "4.0.0-beta.3" + "@ethersproject/abi" "5.0.0-beta.153" underscore "1.9.1" - web3-utils "1.2.4" - -web3-eth-accounts@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.35.tgz#7d0e5a69f510dc93874471599eb7abfa9ddf3e63" - integrity sha512-duIgRsfht/0kAW/eQ0X9lKtVIykbETrnM2H7EnvplCzPHtQLodpib4o9JXfh9n6ZDgdDC7cuJoiVB9QJg089ew== - dependencies: - any-promise "1.3.0" - crypto-browserify "3.12.0" - eth-lib "0.2.7" - scrypt.js "0.2.0" - underscore "1.8.3" - uuid "2.0.1" - web3-core "1.0.0-beta.35" - web3-core-helpers "1.0.0-beta.35" - web3-core-method "1.0.0-beta.35" - web3-utils "1.0.0-beta.35" + web3-utils "1.3.0" web3-eth-accounts@1.2.11: version "1.2.11" @@ -13877,37 +11466,22 @@ web3-eth-accounts@1.2.11: web3-core-method "1.2.11" web3-utils "1.2.11" -web3-eth-accounts@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.4.tgz#ada6edc49542354328a85cafab067acd7f88c288" - integrity sha512-04LzT/UtWmRFmi4hHRewP5Zz43fWhuHiK5XimP86sUQodk/ByOkXQ3RoXyGXFMNoRxdcAeRNxSfA2DpIBc9xUw== +web3-eth-accounts@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.3.0.tgz#010acf389b2bee6d5e1aecb2fe78bfa5c8f26c7a" + integrity sha512-/Q7EVW4L2wWUbNRtOTwAIrYvJid/5UnKMw67x/JpvRMwYC+e+744P536Ja6SG4X3MnzFvd3E/jruV4qa6k+zIw== dependencies: - "@web3-js/scrypt-shim" "^0.1.0" - any-promise "1.3.0" crypto-browserify "3.12.0" - eth-lib "0.2.7" + eth-lib "0.2.8" ethereumjs-common "^1.3.2" ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" underscore "1.9.1" uuid "3.3.2" - web3-core "1.2.4" - web3-core-helpers "1.2.4" - web3-core-method "1.2.4" - web3-utils "1.2.4" - -web3-eth-contract@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.35.tgz#5276242d8a3358d9f1ce92b71575c74f9015935c" - integrity sha512-foPohOg5O1UCGKGZOIs+kQK5IZdV2QQ7pAWwNxH8WHplUA+fre1MurXNpoxknUmH6mYplFhXjqgYq2MsrBpHrA== - dependencies: - underscore "1.8.3" - web3-core "1.0.0-beta.35" - web3-core-helpers "1.0.0-beta.35" - web3-core-method "1.0.0-beta.35" - web3-core-promievent "1.0.0-beta.35" - web3-core-subscriptions "1.0.0-beta.35" - web3-eth-abi "1.0.0-beta.35" - web3-utils "1.0.0-beta.35" + web3-core "1.3.0" + web3-core-helpers "1.3.0" + web3-core-method "1.3.0" + web3-utils "1.3.0" web3-eth-contract@1.2.11: version "1.2.11" @@ -13924,20 +11498,20 @@ web3-eth-contract@1.2.11: web3-eth-abi "1.2.11" web3-utils "1.2.11" -web3-eth-contract@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.4.tgz#68ef7cc633232779b0a2c506a810fbe903575886" - integrity sha512-b/9zC0qjVetEYnzRA1oZ8gF1OSSUkwSYi5LGr4GeckLkzXP7osEnp9lkO/AQcE4GpG+l+STnKPnASXJGZPgBRQ== +web3-eth-contract@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.0.tgz#c758340ac800788e29fa29edc8b0c0ac957b741c" + integrity sha512-3SCge4SRNCnzLxf0R+sXk6vyTOl05g80Z5+9/B5pERwtPpPWaQGw8w01vqYqsYBKC7zH+dxhMaUgVzU2Dgf7bQ== dependencies: - "@types/bn.js" "^4.11.4" + "@types/bn.js" "^4.11.5" underscore "1.9.1" - web3-core "1.2.4" - web3-core-helpers "1.2.4" - web3-core-method "1.2.4" - web3-core-promievent "1.2.4" - web3-core-subscriptions "1.2.4" - web3-eth-abi "1.2.4" - web3-utils "1.2.4" + web3-core "1.3.0" + web3-core-helpers "1.3.0" + web3-core-method "1.3.0" + web3-core-promievent "1.3.0" + web3-core-subscriptions "1.3.0" + web3-eth-abi "1.3.0" + web3-utils "1.3.0" web3-eth-ens@1.2.11: version "1.2.11" @@ -13954,27 +11528,20 @@ web3-eth-ens@1.2.11: web3-eth-contract "1.2.11" web3-utils "1.2.11" -web3-eth-ens@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.4.tgz#b95b3aa99fb1e35c802b9e02a44c3046a3fa065e" - integrity sha512-g8+JxnZlhdsCzCS38Zm6R/ngXhXzvc3h7bXlxgKU4coTzLLoMpgOAEz71GxyIJinWTFbLXk/WjNY0dazi9NwVw== +web3-eth-ens@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.3.0.tgz#0887ba38473c104cf5fb8a715828b3b354fa02a2" + integrity sha512-WnOru+EcuM5dteiVYJcHXo/I7Wq+ei8RrlS2nir49M0QpYvUPGbCGgTbifcjJQTWamgORtWdljSA1s2Asdb74w== dependencies: + content-hash "^2.5.2" eth-ens-namehash "2.0.8" underscore "1.9.1" - web3-core "1.2.4" - web3-core-helpers "1.2.4" - web3-core-promievent "1.2.4" - web3-eth-abi "1.2.4" - web3-eth-contract "1.2.4" - web3-utils "1.2.4" - -web3-eth-iban@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.35.tgz#5aa10327a9abb26bcfc4ba79d7bad18a002b332c" - integrity sha512-H5wkcNcAIc+h/WoDIKv7ZYmrM2Xqu3O7jBQl1IWo73EDVQji+AoB2i3J8tuwI1yZRInRwrfpI3Zuwuf54hXHmQ== - dependencies: - bn.js "4.11.6" - web3-utils "1.0.0-beta.35" + web3-core "1.3.0" + web3-core-helpers "1.3.0" + web3-core-promievent "1.3.0" + web3-eth-abi "1.3.0" + web3-eth-contract "1.3.0" + web3-utils "1.3.0" web3-eth-iban@1.2.11: version "1.2.11" @@ -13984,24 +11551,13 @@ web3-eth-iban@1.2.11: bn.js "^4.11.9" web3-utils "1.2.11" -web3-eth-iban@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.4.tgz#8e0550fd3fd8e47a39357d87fe27dee9483ee476" - integrity sha512-D9HIyctru/FLRpXakRwmwdjb5bWU2O6UE/3AXvRm6DCOf2e+7Ve11qQrPtaubHfpdW3KWjDKvlxV9iaFv/oTMQ== - dependencies: - bn.js "4.11.8" - web3-utils "1.2.4" - -web3-eth-personal@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.35.tgz#ecac95b7a53d04a567447062d5cae5f49879e89f" - integrity sha512-AcM9nnlxu7ZRRxPvkrFB9eLxMM4A2cPfj2aCg21Wb2EpMnhR+b/O1cT33k7ApRowoMpM+T9M8vx2oPNwXfaCOQ== +web3-eth-iban@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.0.tgz#15b782dfaf273ebc4e3f389f1367f4e88ddce4a5" + integrity sha512-v9mZWhR4fPF17/KhHLiWir4YHWLe09O3B/NTdhWqw3fdAMJNztzMHGzgHxA/4fU+rhrs/FhDzc4yt32zMEXBZw== dependencies: - web3-core "1.0.0-beta.35" - web3-core-helpers "1.0.0-beta.35" - web3-core-method "1.0.0-beta.35" - web3-net "1.0.0-beta.35" - web3-utils "1.0.0-beta.35" + bn.js "^4.11.9" + web3-utils "1.3.0" web3-eth-personal@1.2.11: version "1.2.11" @@ -14015,35 +11571,17 @@ web3-eth-personal@1.2.11: web3-net "1.2.11" web3-utils "1.2.11" -web3-eth-personal@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.4.tgz#3224cca6851c96347d9799b12c1b67b2a6eb232b" - integrity sha512-5Russ7ZECwHaZXcN3DLuLS7390Vzgrzepl4D87SD6Sn1DHsCZtvfdPIYwoTmKNp69LG3mORl7U23Ga5YxqkICw== - dependencies: - "@types/node" "^12.6.1" - web3-core "1.2.4" - web3-core-helpers "1.2.4" - web3-core-method "1.2.4" - web3-net "1.2.4" - web3-utils "1.2.4" - -web3-eth@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.35.tgz#c52c804afb95e6624b6f5e72a9af90fbf5005b68" - integrity sha512-04mcb2nGPXThawuuYICPOxv0xOHofvQKsjZeIq+89nyOC8DQMGTAErDkGyMHQYtjpth5XDhic0wuEsA80AmFZA== - dependencies: - underscore "1.8.3" - web3-core "1.0.0-beta.35" - web3-core-helpers "1.0.0-beta.35" - web3-core-method "1.0.0-beta.35" - web3-core-subscriptions "1.0.0-beta.35" - web3-eth-abi "1.0.0-beta.35" - web3-eth-accounts "1.0.0-beta.35" - web3-eth-contract "1.0.0-beta.35" - web3-eth-iban "1.0.0-beta.35" - web3-eth-personal "1.0.0-beta.35" - web3-net "1.0.0-beta.35" - web3-utils "1.0.0-beta.35" +web3-eth-personal@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.3.0.tgz#d376e03dc737d961ff1f8d1aca866efad8477135" + integrity sha512-2czUhElsJdLpuNfun9GeLiClo5O6Xw+bLSjl3f4bNG5X2V4wcIjX2ygep/nfstLLtkz8jSkgl/bV7esANJyeRA== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.3.0" + web3-core-helpers "1.3.0" + web3-core-method "1.3.0" + web3-net "1.3.0" + web3-utils "1.3.0" web3-eth@1.2.11: version "1.2.11" @@ -14064,33 +11602,24 @@ web3-eth@1.2.11: web3-net "1.2.11" web3-utils "1.2.11" -web3-eth@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.4.tgz#24c3b1f1ac79351bbfb808b2ab5c585fa57cdd00" - integrity sha512-+j+kbfmZsbc3+KJpvHM16j1xRFHe2jBAniMo1BHKc3lho6A8Sn9Buyut6odubguX2AxoRArCdIDCkT9hjUERpA== +web3-eth@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.3.0.tgz#898e5f5a8827f9bc6844e267a52eb388916a6771" + integrity sha512-/bzJcxXPM9EM18JM5kO2JjZ3nEqVo3HxqU93aWAEgJNqaP/Lltmufl2GpvIB2Hvj+FXAjAXquxUdQ2/xP7BzHQ== dependencies: underscore "1.9.1" - web3-core "1.2.4" - web3-core-helpers "1.2.4" - web3-core-method "1.2.4" - web3-core-subscriptions "1.2.4" - web3-eth-abi "1.2.4" - web3-eth-accounts "1.2.4" - web3-eth-contract "1.2.4" - web3-eth-ens "1.2.4" - web3-eth-iban "1.2.4" - web3-eth-personal "1.2.4" - web3-net "1.2.4" - web3-utils "1.2.4" - -web3-net@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.35.tgz#5c6688e0dea71fcd910ee9dc5437b94b7f6b3354" - integrity sha512-bbwaQ/KohGjIJ6HAKbZ6KrklCAaG6/B7hIbAbVLSFLxF+Yz9lmAgQYaDInpidpC/NLb3WOmcbRF+P77J4qMVIA== - dependencies: - web3-core "1.0.0-beta.35" - web3-core-method "1.0.0-beta.35" - web3-utils "1.0.0-beta.35" + web3-core "1.3.0" + web3-core-helpers "1.3.0" + web3-core-method "1.3.0" + web3-core-subscriptions "1.3.0" + web3-eth-abi "1.3.0" + web3-eth-accounts "1.3.0" + web3-eth-contract "1.3.0" + web3-eth-ens "1.3.0" + web3-eth-iban "1.3.0" + web3-eth-personal "1.3.0" + web3-net "1.3.0" + web3-utils "1.3.0" web3-net@1.2.11: version "1.2.11" @@ -14101,40 +11630,14 @@ web3-net@1.2.11: web3-core-method "1.2.11" web3-utils "1.2.11" -web3-net@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.4.tgz#1d246406d3aaffbf39c030e4e98bce0ca5f25458" - integrity sha512-wKOsqhyXWPSYTGbp7ofVvni17yfRptpqoUdp3SC8RAhDmGkX6irsiT9pON79m6b3HUHfLoBilFQyt/fTUZOf7A== - dependencies: - web3-core "1.2.4" - web3-core-method "1.2.4" - web3-utils "1.2.4" - -web3-provider-engine@14.2.0: - version "14.2.0" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.0.tgz#2efec157b2c429c5c674c079aea96b0a06de8b3d" - integrity sha512-sfLH5VhGjJrJJT5WcF8aGehcIKRUQ553q9tjQkkLaKU2AaLsRcwffnnWvrgeTkmKSf0y9dwkDTa48RVp+GUCSg== +web3-net@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.3.0.tgz#b69068cccffab58911c2f08ca4abfbefb0f948c6" + integrity sha512-Xz02KylOyrB2YZzCkysEDrY7RbKxb7LADzx3Zlovfvuby7HBwtXVexXKtoGqksa+ns1lvjQLLQGb+OeLi7Sr7w== dependencies: - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^3.0.0" - eth-json-rpc-infura "^3.1.0" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.2.2" - ethereumjs-tx "^1.2.0" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - readable-stream "^2.2.9" - request "^2.85.0" - semaphore "^1.0.3" - ws "^5.1.1" - xhr "^2.2.0" - xtend "^4.0.1" + web3-core "1.3.0" + web3-core-method "1.3.0" + web3-utils "1.3.0" web3-provider-engine@14.2.1: version "14.2.1" @@ -14162,14 +11665,6 @@ web3-provider-engine@14.2.1: xhr "^2.2.0" xtend "^4.0.1" -web3-providers-http@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.35.tgz#92059d9d6de6e9f82f4fae30b743efd841afc1e1" - integrity sha512-DcIMFq52Fb08UpWyZ3ZlES6NsNqJnco4hBS/Ej6eOcASfuUayPI+GLkYVZsnF3cBYqlH+DOKuArcKSuIxK7jIA== - dependencies: - web3-core-helpers "1.0.0-beta.35" - xhr2-cookies "1.1.0" - web3-providers-http@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" @@ -14178,23 +11673,14 @@ web3-providers-http@1.2.11: web3-core-helpers "1.2.11" xhr2-cookies "1.1.0" -web3-providers-http@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.4.tgz#514fcad71ae77832c2c15574296282fbbc5f4a67" - integrity sha512-dzVCkRrR/cqlIrcrWNiPt9gyt0AZTE0J+MfAu9rR6CyIgtnm1wFUVVGaxYRxuTGQRO4Dlo49gtoGwaGcyxqiTw== +web3-providers-http@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.0.tgz#88227f64c88b32abed4359383c2663616e0dc531" + integrity sha512-cMKhUI6PqlY/EC+ZDacAxajySBu8AzW8jOjt1Pe/mbRQgS0rcZyvLePGTTuoyaA8C21F8UW+EE5jj7YsNgOuqA== dependencies: - web3-core-helpers "1.2.4" + web3-core-helpers "1.3.0" xhr2-cookies "1.1.0" -web3-providers-ipc@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.35.tgz#031afeb10fade2ebb0ef2fb82f5e58c04be842d9" - integrity sha512-iB0FG0HcpUnayfa8pn4guqEQ4Y1nrroi/jffdtQgFkrNt0sD3fMSwwC0AbmECqj3tDLl0e1slBR0RENll+ZF0g== - dependencies: - oboe "2.1.3" - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.35" - web3-providers-ipc@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" @@ -14204,23 +11690,14 @@ web3-providers-ipc@1.2.11: underscore "1.9.1" web3-core-helpers "1.2.11" -web3-providers-ipc@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.4.tgz#9d6659f8d44943fb369b739f48df09092be459bd" - integrity sha512-8J3Dguffin51gckTaNrO3oMBo7g+j0UNk6hXmdmQMMNEtrYqw4ctT6t06YOf9GgtOMjSAc1YEh3LPrvgIsR7og== +web3-providers-ipc@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.0.tgz#d7c2b203733b46f7b4e7b15633d891648cf9a293" + integrity sha512-0CrLuRofR+1J38nEj4WsId/oolwQEM6Yl1sOt41S/6bNI7htdkwgVhSloFIMJMDFHtRw229QIJ6wIaKQz0X1Og== dependencies: - oboe "2.1.4" + oboe "2.1.5" underscore "1.9.1" - web3-core-helpers "1.2.4" - -web3-providers-ws@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.35.tgz#5d38603fd450243a26aae0ff7f680644e77fa240" - integrity sha512-Cx64NgDStynKaUGDIIOfaCd0fZusL8h5avKTkdTjUu2aHhFJhZoVBGVLhoDtUaqZGWIZGcBJOoVf2JkGUOjDRQ== - dependencies: - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.35" - websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" + web3-core-helpers "1.3.0" web3-providers-ws@1.2.11: version "1.2.11" @@ -14232,24 +11709,15 @@ web3-providers-ws@1.2.11: web3-core-helpers "1.2.11" websocket "^1.0.31" -web3-providers-ws@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.4.tgz#099ee271ee03f6ea4f5df9cfe969e83f4ce0e36f" - integrity sha512-F/vQpDzeK+++oeeNROl1IVTufFCwCR2hpWe5yRXN0ApLwHqXrMI7UwQNdJ9iyibcWjJf/ECbauEEQ8CHgE+MYQ== +web3-providers-ws@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.0.tgz#84adeff65acd4624d7f5bb43c5b2b22d8f0f63a4" + integrity sha512-Im5MthhJnJst8nSoq0TgbyOdaiFQFa5r6sHPOVllhgIgViDqzbnlAFW9sNzQ0Q8VXPNfPIQKi9cOrHlSRNPjRw== dependencies: - "@web3-js/websocket" "^1.0.29" + eventemitter3 "4.0.4" underscore "1.9.1" - web3-core-helpers "1.2.4" - -web3-shh@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.35.tgz#7e4a585f8beee0c1927390937c6537748a5d1a58" - integrity sha512-8qSonk/x0xabERS9Sr6AIADN/Ty+5KwARkkGIfSYHKqFpdMDz+76F7cUCxtoCZoS8K04xgZlDKYe0TJXLYA0Fw== - dependencies: - web3-core "1.0.0-beta.35" - web3-core-method "1.0.0-beta.35" - web3-core-subscriptions "1.0.0-beta.35" - web3-net "1.0.0-beta.35" + web3-core-helpers "1.3.0" + websocket "^1.0.32" web3-shh@1.2.11: version "1.2.11" @@ -14261,30 +11729,17 @@ web3-shh@1.2.11: web3-core-subscriptions "1.2.11" web3-net "1.2.11" -web3-shh@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.4.tgz#5c8ff5ab624a3b14f08af0d24d2b16c10e9f70dd" - integrity sha512-z+9SCw0dE+69Z/Hv8809XDbLj7lTfEv9Sgu8eKEIdGntZf4v7ewj5rzN5bZZSz8aCvfK7Y6ovz1PBAu4QzS4IQ== - dependencies: - web3-core "1.2.4" - web3-core-method "1.2.4" - web3-core-subscriptions "1.2.4" - web3-net "1.2.4" - -web3-utils@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.35.tgz#ced9e1df47c65581c441c5f2af76b05a37a273d7" - integrity sha512-Dq6f0SOKj3BDFRgOPnE6ALbzBDCKVIW8mKWVf7tGVhTDHf+wQaWwQSC3aArFSqdExB75BPBPyDpuMTNszhljpA== +web3-shh@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.3.0.tgz#62d15297da8fb5f733dd1b98f9ade300590f4d49" + integrity sha512-IZTojA4VCwVq+7eEIHuL1tJXtU+LJDhO8Y2QmuwetEWW1iBgWCGPHZasipWP+7kDpSm/5lo5GRxL72FF/Os/tA== dependencies: - bn.js "4.11.6" - eth-lib "0.1.27" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randomhex "0.1.5" - underscore "1.8.3" - utf8 "2.1.1" + web3-core "1.3.0" + web3-core-method "1.3.0" + web3-core-subscriptions "1.3.0" + web3-net "1.3.0" -web3-utils@1.2.11, web3-utils@^1.0.0-beta.31: +web3-utils@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== @@ -14298,13 +11753,13 @@ web3-utils@1.2.11, web3-utils@^1.0.0-beta.31: underscore "1.9.1" utf8 "3.0.0" -web3-utils@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.4.tgz#96832a39a66b05bf8862a5b0bdad2799d709d951" - integrity sha512-+S86Ip+jqfIPQWvw2N/xBQq5JNqCO0dyvukGdJm8fEWHZbckT4WxSpHbx+9KLEWY4H4x9pUwnoRkK87pYyHfgQ== +web3-utils@1.3.0, web3-utils@^1.0.0-beta.31: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.0.tgz#5bac16e5e0ec9fe7bdcfadb621655e8aa3cf14e1" + integrity sha512-2mS5axFCbkhicmoDRuJeuo0TVGQDgC2sPi/5dblfVC+PMtX0efrb8Xlttv/eGkq7X4E83Pds34FH98TP2WOUZA== dependencies: - bn.js "4.11.8" - eth-lib "0.2.7" + bn.js "^4.11.9" + eth-lib "0.2.8" ethereum-bloom-filters "^1.0.6" ethjs-unit "0.1.6" number-to-bn "1.7.0" @@ -14312,20 +11767,7 @@ web3-utils@1.2.4: underscore "1.9.1" utf8 "3.0.0" -web3@1.0.0-beta.35: - version "1.0.0-beta.35" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.35.tgz#6475095bd451a96e50a32b997ddee82279292f11" - integrity sha512-xwDmUhvTcHQvvNnOPcPZZgCxKUsI2e+GbHy7JkTK3/Rmnutazy8x7fsAXT9myw7V1qpi3GgLoZ3fkglSUbg1Mg== - dependencies: - web3-bzz "1.0.0-beta.35" - web3-core "1.0.0-beta.35" - web3-eth "1.0.0-beta.35" - web3-eth-personal "1.0.0-beta.35" - web3-net "1.0.0-beta.35" - web3-shh "1.0.0-beta.35" - web3-utils "1.0.0-beta.35" - -web3@1.2.11, web3@^1.2.11: +web3@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== @@ -14338,37 +11780,25 @@ web3@1.2.11, web3@^1.2.11: web3-shh "1.2.11" web3-utils "1.2.11" -web3@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.4.tgz#6e7ab799eefc9b4648c2dab63003f704a1d5e7d9" - integrity sha512-xPXGe+w0x0t88Wj+s/dmAdASr3O9wmA9mpZRtixGZxmBexAF0MjfqYM+MS4tVl5s11hMTN3AZb8cDD4VLfC57A== - dependencies: - "@types/node" "^12.6.1" - web3-bzz "1.2.4" - web3-core "1.2.4" - web3-eth "1.2.4" - web3-eth-personal "1.2.4" - web3-net "1.2.4" - web3-shh "1.2.4" - web3-utils "1.2.4" +web3@^1.2.11: + version "1.3.0" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.0.tgz#8fe4cd6e2a21c91904f343ba75717ee4c76bb349" + integrity sha512-4q9dna0RecnrlgD/bD1C5S+81Untbd6Z/TBD7rb+D5Bvvc0Wxjr4OP70x+LlnwuRDjDtzBwJbNUblh2grlVArw== + dependencies: + web3-bzz "1.3.0" + web3-core "1.3.0" + web3-eth "1.3.0" + web3-eth-personal "1.3.0" + web3-net "1.3.0" + web3-shh "1.3.0" + web3-utils "1.3.0" webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -websocket@1.0.29: - version "1.0.29" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.29.tgz#3f83e49d3279657c58b02a22d90749c806101b98" - integrity sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g== - dependencies: - debug "^2.2.0" - gulp "^4.0.2" - nan "^2.11.0" - typedarray-to-buffer "^3.1.5" - yaeti "^0.0.6" - -websocket@1.0.32, websocket@^1.0.31: +websocket@1.0.32: version "1.0.32" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== @@ -14380,13 +11810,16 @@ websocket@1.0.32, websocket@^1.0.31: utf-8-validate "^5.0.2" yaeti "^0.0.6" -"websocket@git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible": - version "1.0.26" - resolved "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2" +websocket@^1.0.31, websocket@^1.0.32: + version "1.0.33" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.33.tgz#407f763fc58e74a3fa41ca3ae5d78d3f5e3b82a5" + integrity sha512-XwNqM2rN5eh3G2CUQE3OHZj+0xfdH42+OFK6LdC2yqiC0YU8e5UK0nYre220T0IyyN031V/XOvtHvXozvJYFWA== dependencies: + bufferutil "^4.0.1" debug "^2.2.0" - nan "^2.3.3" - typedarray-to-buffer "^3.1.2" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" yaeti "^0.0.6" whatwg-fetch@2.0.4: @@ -14418,7 +11851,7 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@1.3.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@1.3.1, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -14461,6 +11894,11 @@ workerpool@6.0.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== +workerpool@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.2.tgz#e241b43d8d033f1beb52c7851069456039d1d438" + integrity sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q== + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -14546,9 +11984,9 @@ ws@^5.1.1: async-limiter "~1.0.0" ws@^7.2.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + version "7.4.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb" + integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ== wsrun@^3.6.4: version "3.6.6" @@ -14592,20 +12030,15 @@ xhr2-cookies@1.1.0: cookiejar "^2.1.1" xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: - version "2.5.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" - integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== dependencies: - global "~4.3.0" + global "~4.4.0" is-function "^1.0.1" parse-headers "^2.0.0" xtend "^4.0.0" -xmlhttprequest@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= - xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -14624,9 +12057,9 @@ y18n@^3.2.1: integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== yaeti@^0.0.6: version "0.0.6" @@ -14643,6 +12076,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@13.1.2, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -14651,14 +12089,6 @@ yargs-parser@13.1.2, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@5.0.0-security.0: - version "5.0.0-security.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24" - integrity sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ== - dependencies: - camelcase "^3.0.0" - object.assign "^4.1.0" - yargs-parser@^15.0.1: version "15.0.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" @@ -14667,14 +12097,6 @@ yargs-parser@^15.0.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.3: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" @@ -14683,6 +12105,11 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" +yargs-parser@^20.2.3: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + yargs-parser@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" @@ -14710,6 +12137,16 @@ yargs-unparser@1.6.1: is-plain-obj "^1.1.0" yargs "^14.2.3" +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + yargs@13.3.2, yargs@^13.3.0: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" @@ -14781,25 +12218,6 @@ yargs@^4.7.1: y18n "^3.2.1" yargs-parser "^2.4.1" -yargs@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6" - integrity sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g== - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "5.0.0-security.0" - yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" @@ -14812,3 +12230,8 @@ yn@3.1.1, yn@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From b4dd5e55cf511a037a28e3b99600f15e3ab2a07b Mon Sep 17 00:00:00 2001 From: Kelvin Fichter Date: Mon, 14 Dec 2020 14:54:30 -0800 Subject: [PATCH 4/4] Update workflows --- .../build-test-lint-batch-submitter.yml | 2 +- .github/workflows/build-test-lint-core-db.yml | 64 ------------------- .../workflows/build-test-lint-core-utils.yml | 2 +- .../build-test-lint-gas-profiler.yml | 63 ------------------ .../build-test-lint-ovm-toolchain.yml | 2 +- 5 files changed, 3 insertions(+), 130 deletions(-) delete mode 100644 .github/workflows/build-test-lint-core-db.yml delete mode 100644 .github/workflows/build-test-lint-gas-profiler.yml diff --git a/.github/workflows/build-test-lint-batch-submitter.yml b/.github/workflows/build-test-lint-batch-submitter.yml index 8f8b3426b972..dd37686db674 100644 --- a/.github/workflows/build-test-lint-batch-submitter.yml +++ b/.github/workflows/build-test-lint-batch-submitter.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: - node: [ '10' ] + node: [ '10', '12', '14' ] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/build-test-lint-core-db.yml b/.github/workflows/build-test-lint-core-db.yml deleted file mode 100644 index ba52024b65c4..000000000000 --- a/.github/workflows/build-test-lint-core-db.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: CI - core-db - -on: - push: - branches: - - master - pull_request: - branches: - - master - - -jobs: - build-test-lint: - name: Run core-db Test Suite on Node ${{matrix.node}} - runs-on: ubuntu-latest - - strategy: - matrix: - node: [ '10' ] - - steps: - - uses: actions/checkout@v2 - - - name: Setup node ${{ matrix.node }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node }} - - # START DEPENDENCY CACHING - - name: Cache root deps - uses: actions/cache@v1 - id: cache_base - with: - path: node_modules - key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('package.json') }} - - - name: Cache core-db deps - uses: actions/cache@v1 - id: cache_core-db - with: - path: packages/core-db/node_modules - key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('packages/core-db/package.json') }} - - # END DEPENDENCY CACHING - - - name: Install Dependencies - run: yarn install - - - name: Lint - run: yarn lint - env: - PKGS: "core-db" - - - name: Build - run: | - yarn clean - yarn build - env: - PKGS: "core-db" - - - name: Test - run: yarn test - env: - PKGS: "core-db" diff --git a/.github/workflows/build-test-lint-core-utils.yml b/.github/workflows/build-test-lint-core-utils.yml index ca322cf45677..f10c3657a485 100644 --- a/.github/workflows/build-test-lint-core-utils.yml +++ b/.github/workflows/build-test-lint-core-utils.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: - node: [ '10' ] + node: [ '10', '12', '14' ] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/build-test-lint-gas-profiler.yml b/.github/workflows/build-test-lint-gas-profiler.yml deleted file mode 100644 index c6186d4bb9ae..000000000000 --- a/.github/workflows/build-test-lint-gas-profiler.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: CI - gas-profiler - -on: - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - build-test-lint: - name: Run gas-profiler Test Suite on Node ${{matrix.node}} - runs-on: ubuntu-latest - - strategy: - matrix: - node: [ '10' ] - - steps: - - uses: actions/checkout@v2 - - - name: Setup node ${{ matrix.node }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node }} - - # START DEPENDENCY CACHING - - name: Cache root deps - uses: actions/cache@v1 - id: cache_base - with: - path: node_modules - key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('package.json') }} - - - name: Cache gas-profiler - uses: actions/cache@v1 - id: cache_gas-profiler - with: - path: packages/gas-profiler/node_modules - key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('packages/gas-profiler/package.json') }} - - # END DEPENDENCY CACHING - - - name: Install Dependencies - run: yarn install - - - name: Lint - run: yarn lint - env: - PKGS: "gas-profiler" - - - name: Build - run: | - yarn clean - yarn build - env: - PKGS: "gas-profiler" - - - name: Test - run: yarn test - env: - PKGS: "gas-profiler" diff --git a/.github/workflows/build-test-lint-ovm-toolchain.yml b/.github/workflows/build-test-lint-ovm-toolchain.yml index 8ab02c936e59..32838a1a7f5b 100644 --- a/.github/workflows/build-test-lint-ovm-toolchain.yml +++ b/.github/workflows/build-test-lint-ovm-toolchain.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: - node: [ '10' ] + node: [ '10', '12', '14' ] steps: - uses: actions/checkout@v2