From f24c7d9be2537e26353d39c260f9ce5e1f9fe57f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= Date: Thu, 16 May 2019 18:07:50 +0200 Subject: [PATCH 01/38] script --- contracts/SB_scripts/mainnet/Main0026.sol | 22 ++++++++++++++++++++++ mainnet_migrations/37_deploy_Main0026.js | 7 +++++++ 2 files changed, 29 insertions(+) create mode 100644 contracts/SB_scripts/mainnet/Main0026.sol create mode 100644 mainnet_migrations/37_deploy_Main0026.js diff --git a/contracts/SB_scripts/mainnet/Main0026.sol b/contracts/SB_scripts/mainnet/Main0026.sol new file mode 100644 index 00000000..7c04b04e --- /dev/null +++ b/contracts/SB_scripts/mainnet/Main0026.sol @@ -0,0 +1,22 @@ +/* Recreate loan products on mainnet (fix for discountRate rounding error) */ + +pragma solidity 0.4.24; + +import "../../StabilityBoardProxy.sol"; +import "../../TokenAEur.sol"; + +contract Main0026 { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0xde36a8773531406dCBefFdfd3C7b89fCed7A9F84); + TokenAEur public constant OLD_TOKEN_AEUR = TokenAEur(0x86A635EccEFFfA70Ff8A6DB29DA9C8DB288E40D0); + address public constant ADDRESS = 0xd97500098672F2636902E41D3928706C27470DF7; + + function execute(Main0026 /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + OLD_TOKEN_AEUR.grantPermission(ADDRESS, "MonetarySupervisor"); + OLD_TOKEN_AEUR.issueTo(ADDRESS, 35269); + OLD_TOKEN_AEUR.revokePermission(ADDRESS, "MonetarySupervisor"); + } +} \ No newline at end of file diff --git a/mainnet_migrations/37_deploy_Main0026.js b/mainnet_migrations/37_deploy_Main0026.js new file mode 100644 index 00000000..f4da7f43 --- /dev/null +++ b/mainnet_migrations/37_deploy_Main0026.js @@ -0,0 +1,7 @@ +const Main0026 = artifacts.require("./Main0026.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Main0026); + }); +}; \ No newline at end of file From b461ed3a9e45c0f178244343d5e561a96d72911b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= Date: Thu, 16 May 2019 18:16:54 +0200 Subject: [PATCH 02/38] rename --- .../{37_deploy_Main0026.js => 38_deploy_Main0026.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mainnet_migrations/{37_deploy_Main0026.js => 38_deploy_Main0026.js} (100%) diff --git a/mainnet_migrations/37_deploy_Main0026.js b/mainnet_migrations/38_deploy_Main0026.js similarity index 100% rename from mainnet_migrations/37_deploy_Main0026.js rename to mainnet_migrations/38_deploy_Main0026.js From e45e27e07e37ebac3cfd1589cef7af74d89df95a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= Date: Thu, 16 May 2019 18:28:24 +0200 Subject: [PATCH 03/38] comment --- contracts/SB_scripts/mainnet/Main0026.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/SB_scripts/mainnet/Main0026.sol b/contracts/SB_scripts/mainnet/Main0026.sol index 7c04b04e..d8435528 100644 --- a/contracts/SB_scripts/mainnet/Main0026.sol +++ b/contracts/SB_scripts/mainnet/Main0026.sol @@ -1,5 +1,5 @@ -/* Recreate loan products on mainnet (fix for discountRate rounding error) */ - +/* Issue legacy tokens in order to repay two loans (id 23 & 24) in legacy loanManager contract at 0xCBeFaF199b800DEeB9EAd61f358EE46E06c54070. +The ETH value for the issued A-EUR is going to be sent into Reserve contract at 0x633cb544b2EF1bd9269B2111fD2B66fC05cd3477 */ pragma solidity 0.4.24; import "../../StabilityBoardProxy.sol"; From d7fb9daf7864b564afa67cbad9aeca32af83fc82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= Date: Thu, 16 May 2019 18:29:06 +0200 Subject: [PATCH 04/38] comment --- contracts/SB_scripts/mainnet/Main0026.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/SB_scripts/mainnet/Main0026.sol b/contracts/SB_scripts/mainnet/Main0026.sol index d8435528..3eeb381b 100644 --- a/contracts/SB_scripts/mainnet/Main0026.sol +++ b/contracts/SB_scripts/mainnet/Main0026.sol @@ -1,4 +1,4 @@ -/* Issue legacy tokens in order to repay two loans (id 23 & 24) in legacy loanManager contract at 0xCBeFaF199b800DEeB9EAd61f358EE46E06c54070. +/* Issue legacy tokens in order to repay two loans (id 22 & 23) in legacy loanManager contract at 0xCBeFaF199b800DEeB9EAd61f358EE46E06c54070. The ETH value for the issued A-EUR is going to be sent into Reserve contract at 0x633cb544b2EF1bd9269B2111fD2B66fC05cd3477 */ pragma solidity 0.4.24; From 22d306e987ec0535b7ebfb4ee9616ca3a6341054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= Date: Fri, 17 May 2019 12:16:50 +0200 Subject: [PATCH 05/38] fix --- contracts/SB_scripts/mainnet/Main0026.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/SB_scripts/mainnet/Main0026.sol b/contracts/SB_scripts/mainnet/Main0026.sol index 3eeb381b..99c5024b 100644 --- a/contracts/SB_scripts/mainnet/Main0026.sol +++ b/contracts/SB_scripts/mainnet/Main0026.sol @@ -15,8 +15,8 @@ contract Main0026 { // called via StabilityBoardProxy require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); - OLD_TOKEN_AEUR.grantPermission(ADDRESS, "MonetarySupervisor"); + OLD_TOKEN_AEUR.grantPermission(STABILITY_BOARD_PROXY, "MonetarySupervisor"); OLD_TOKEN_AEUR.issueTo(ADDRESS, 35269); - OLD_TOKEN_AEUR.revokePermission(ADDRESS, "MonetarySupervisor"); + OLD_TOKEN_AEUR.revokePermission(STABILITY_BOARD_PROXY, "MonetarySupervisor"); } } \ No newline at end of file From 50b20f8175c6fe031c1628f0735bd6b540269b78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= <38250343+treer-euedge@users.noreply.github.com> Date: Wed, 22 May 2019 13:21:48 +0200 Subject: [PATCH 06/38] Scripts (migrate, convert) (#228) --- .../SB_scripts/mainnet/Main0027_migrate.sol | 62 +++++++++++++++++++ .../mainnet/Main0028_OtcBuyback.sol | 32 ++++++++++ .../39_deploy_Main0027_migrate.js | 7 +++ .../40_deploy_Main0028_OtcBuyback.js | 7 +++ 4 files changed, 108 insertions(+) create mode 100644 contracts/SB_scripts/mainnet/Main0027_migrate.sol create mode 100644 contracts/SB_scripts/mainnet/Main0028_OtcBuyback.sol create mode 100644 mainnet_migrations/39_deploy_Main0027_migrate.js create mode 100644 mainnet_migrations/40_deploy_Main0028_OtcBuyback.js diff --git a/contracts/SB_scripts/mainnet/Main0027_migrate.sol b/contracts/SB_scripts/mainnet/Main0027_migrate.sol new file mode 100644 index 00000000..28db8392 --- /dev/null +++ b/contracts/SB_scripts/mainnet/Main0027_migrate.sol @@ -0,0 +1,62 @@ +/* Migrate stuff */ + +pragma solidity 0.4.24; + +import "../../StabilityBoardProxy.sol"; +import "../../TokenAEur.sol"; +import "../../AugmintReserves.sol"; +import "../../InterestEarnedAccount.sol"; +import "../../FeeAccount.sol"; +import "../../MonetarySupervisor.sol"; +import "../../generic/SystemAccount.sol"; + +contract Main0027_migrate { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0xde36a8773531406dCBefFdfd3C7b89fCed7A9F84); + + TokenAEur public constant OLD_TOKEN_AEUR = TokenAEur(0x86A635EccEFFfA70Ff8A6DB29DA9C8DB288E40D0); + TokenAEur public constant NEW_TOKEN_AEUR = TokenAEur(0xc994a2dEb02543Db1f48688438b9903c4b305ce3); + + SystemAccount public constant OLD_AUGMINT_RESERVES = SystemAccount(0x633cb544b2EF1bd9269B2111fD2B66fC05cd3477); + AugmintReserves public constant NEW_AUGMINT_RESERVES = AugmintReserves(0x65F30f8DD20c707C1938CcAd7416c7381E6eB9C8); + + InterestEarnedAccount public constant OLD_INTEREST_EARNED_ACCOUNT = InterestEarnedAccount(0x5C1a44E07541203474D92BDD03f803ea74f6947c); + InterestEarnedAccount public constant NEW_INTEREST_EARNED_ACCOUNT = InterestEarnedAccount(0xf23e0AF0e41341127Bb4e7b203aebCA0185f9EbD); + + FeeAccount public constant OLD_FEE_ACCOUNT = FeeAccount(0xF6B541E1B5e001DCc11827C1A16232759aeA730a); + FeeAccount public constant NEW_FEE_ACCOUNT = FeeAccount(0xE3ED84A163b9EeaF4f69B4890ae45cC52171Aa7E); + + MonetarySupervisor public constant OLD_MONETARY_SUPERVISOR = MonetarySupervisor(0x1Ca4F9d261707aF8A856020a4909B777da218868); + MonetarySupervisor public constant NEW_MONETARY_SUPERVISOR = MonetarySupervisor(0x27484AFe9e6c332fB07F21Fac82d442EBe1D22c3); + + function execute(Main0027_migrate /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + // =========================== + // migrate ETH to new reserve + // =========================== + + // function withdraw(AugmintToken tokenAddress, address to, uint tokenAmount, uint weiAmount, string narrative) + OLD_AUGMINT_RESERVES.withdraw(NEW_TOKEN_AEUR, address(NEW_AUGMINT_RESERVES), 0, address(OLD_AUGMINT_RESERVES).balance, "migration"); + + // ================================================== + // convert old tokens in new interestearnedaccount + // ================================================== + + OLD_FEE_ACCOUNT.grantPermission(NEW_INTEREST_EARNED_ACCOUNT, "NoTransferFee"); + + uint amount = OLD_TOKEN_AEUR.balanceOf(NEW_INTEREST_EARNED_ACCOUNT); + + // function withdraw(AugmintToken tokenAddress, address to, uint tokenAmount, uint weiAmount, string narrative) + NEW_INTEREST_EARNED_ACCOUNT.withdraw(OLD_TOKEN_AEUR, STABILITY_BOARD_PROXY, amount, 0, "migrate"); + + //function transferAndNotify(TokenReceiver target, uint amount, uint data) external { + OLD_TOKEN_AEUR.transferAndNotify(NEW_MONETARY_SUPERVISOR, amount, 0); + + // function transfer(address to, uint256 amount) external returns (bool) { + NEW_TOKEN_AEUR.transfer(NEW_INTEREST_EARNED_ACCOUNT, amount); + + OLD_FEE_ACCOUNT.revokePermission(NEW_INTEREST_EARNED_ACCOUNT, "NoTransferFee"); + } +} \ No newline at end of file diff --git a/contracts/SB_scripts/mainnet/Main0028_OtcBuyback.sol b/contracts/SB_scripts/mainnet/Main0028_OtcBuyback.sol new file mode 100644 index 00000000..d7bcee0a --- /dev/null +++ b/contracts/SB_scripts/mainnet/Main0028_OtcBuyback.sol @@ -0,0 +1,32 @@ +/* OTC A-EUR buyback using Reserve ETH. Defaulted loans of 2002 A-EUR + monetary board issued of 352.69 A-EUR. */ + +pragma solidity 0.4.24; + +import "../../StabilityBoardProxy.sol"; +import "../../TokenAEur.sol"; +import "../../AugmintReserves.sol"; +import "../../Rates.sol"; + +contract Main0028_OtcBuyback { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0xde36a8773531406dCBefFdfd3C7b89fCed7A9F84); + + TokenAEur public constant NEW_TOKEN_AEUR = TokenAEur(0xc994a2dEb02543Db1f48688438b9903c4b305ce3); + AugmintReserves public constant NEW_AUGMINT_RESERVES = AugmintReserves(0x65F30f8DD20c707C1938CcAd7416c7381E6eB9C8); + Rates public constant RATES = Rates(0x4272dB2EB82068E898588C3D6e4B5D55c3848793); + + address public constant T8_ADDRESS = 0x7C8bc54446C55E3A10F5F1467D30b0Fd8b9d3e9A; + + uint public constant tokenAmount = 235469; + + function execute(Main0028_OtcBuyback /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + // function convertToWei(bytes32 bSymbol, uint value) external view returns(uint weiValue) { + uint weiAmount = RATES.convertToWei(NEW_TOKEN_AEUR.peggedSymbol(), tokenAmount); + + // function migrate(address to, uint weiAmount) + NEW_AUGMINT_RESERVES.migrate(T8_ADDRESS, weiAmount); + } +} \ No newline at end of file diff --git a/mainnet_migrations/39_deploy_Main0027_migrate.js b/mainnet_migrations/39_deploy_Main0027_migrate.js new file mode 100644 index 00000000..213adf5e --- /dev/null +++ b/mainnet_migrations/39_deploy_Main0027_migrate.js @@ -0,0 +1,7 @@ +const Main0027 = artifacts.require("./Main0027_migrate.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Main0027); + }); +}; \ No newline at end of file diff --git a/mainnet_migrations/40_deploy_Main0028_OtcBuyback.js b/mainnet_migrations/40_deploy_Main0028_OtcBuyback.js new file mode 100644 index 00000000..a03ecb00 --- /dev/null +++ b/mainnet_migrations/40_deploy_Main0028_OtcBuyback.js @@ -0,0 +1,7 @@ +const Main0028_OtcBuyback = artifacts.require("./Main0028_OtcBuyback.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Main0028_OtcBuyback); + }); +}; \ No newline at end of file From d3f164fb32f1791ec5881ea27703a4331938d86b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= <38250343+treer-euedge@users.noreply.github.com> Date: Wed, 22 May 2019 21:33:45 +0200 Subject: [PATCH 07/38] margin_loan (#229) * fix loan related test failures when run multiple times (also take snapshot before initialization, and revert after all tests have run, because init already changes the state) --- test/loanCollection.js | 17 +++++++++++++++++ test/loanManager.js | 17 +++++++++++++++++ test/loanToDepositRatioLimits.js | 19 ++++++++++++++----- test/loans.js | 17 +++++++++++++++++ test/rates.js | 9 +++++++++ test/tokenTransfer.js | 9 +++++++++ test/tokenTransferFrom.js | 9 +++++++++ 7 files changed, 92 insertions(+), 5 deletions(-) diff --git a/test/loanCollection.js b/test/loanCollection.js index 57f9f99b..5f1b7379 100644 --- a/test/loanCollection.js +++ b/test/loanCollection.js @@ -9,8 +9,13 @@ let rates = null; const ltdParams = { lockDifferenceLimit: 300000, loanDifferenceLimit: 200000, allowedDifferenceAmount: 100000 }; let products = {}; +let snapshotIdSingleTest; +let snapshotIdAllTests; + contract("Loans collection tests", accounts => { before(async function() { + snapshotIdAllTests = await testHelpers.takeSnapshot(); + rates = ratesTestHelpers.rates; monetarySupervisor = tokenTestHelpers.monetarySupervisor; loanManager = loanTestHelpers.loanManager; @@ -48,6 +53,18 @@ contract("Loans collection tests", accounts => { ] = newProducts; }); + after(async () => { + await testHelpers.revertSnapshot(snapshotIdAllTests); + }); + + beforeEach(async function() { + snapshotIdSingleTest = await testHelpers.takeSnapshot(); + }); + + afterEach(async function() { + await testHelpers.revertSnapshot(snapshotIdSingleTest); + }); + it("Should collect a defaulted A-EUR loan and send back leftover collateral ", async function() { const loan = await loanTestHelpers.createLoan( this, diff --git a/test/loanManager.js b/test/loanManager.js index 8bdbdd88..301a9798 100644 --- a/test/loanManager.js +++ b/test/loanManager.js @@ -8,8 +8,13 @@ let loanProduct = null; let CHUNK_SIZE = 20; +let snapshotIdSingleTest; +let snapshotIdAllTests; + contract("loanManager tests", accounts => { before(async function() { + snapshotIdAllTests = await testHelpers.takeSnapshot(); + loanManager = loanTestHelpers.loanManager; loanProduct = { @@ -37,6 +42,18 @@ contract("loanManager tests", accounts => { loanProduct.id = res.productId; }); + after(async () => { + await testHelpers.revertSnapshot(snapshotIdAllTests); + }); + + beforeEach(async function() { + snapshotIdSingleTest = await testHelpers.takeSnapshot(); + }); + + afterEach(async function() { + await testHelpers.revertSnapshot(snapshotIdSingleTest); + }); + it("Verifies default test loanproduct discount rates", async function() { // correlates with loan products set up in localTest_initialSetup.sol diff --git a/test/loanToDepositRatioLimits.js b/test/loanToDepositRatioLimits.js index b21a98bf..00a09b38 100644 --- a/test/loanToDepositRatioLimits.js +++ b/test/loanToDepositRatioLimits.js @@ -14,9 +14,11 @@ let loanManager; let locker; let loanProductId; let lockProductId; -let snapshotId; let rate; +let snapshotIdSingleTest; +let snapshotIdAllTests; + const ltdParams = { lockDifferenceLimit: 300000, loanDifferenceLimit: 200000, allowedDifferenceAmount: 100000 }; const lockPerTermInterest = 8330; @@ -34,6 +36,8 @@ const getLtdLimits = async () => { contract("Loan to Deposit ratio tests", accounts => { before(async () => { + snapshotIdAllTests = await testHelpers.takeSnapshot(); + augmintToken = tokenTestHelpers.augmintToken; loanManager = loanTestHelpers.loanManager; locker = Locker.at(Locker.address); @@ -94,11 +98,16 @@ contract("Loan to Deposit ratio tests", accounts => { ]); }); + after(async () => { + await testHelpers.revertSnapshot(snapshotIdAllTests); + }); + beforeEach(async function() { - if (snapshotId) { - await testHelpers.revertSnapshot(snapshotId); - } - snapshotId = await testHelpers.takeSnapshot(); + snapshotIdSingleTest = await testHelpers.takeSnapshot(); + }); + + afterEach(async function() { + await testHelpers.revertSnapshot(snapshotIdSingleTest); }); it("LTD when both totalLock and totalLoan 0", async function() { diff --git a/test/loans.js b/test/loans.js index bce7bd2e..469ea129 100644 --- a/test/loans.js +++ b/test/loans.js @@ -16,8 +16,13 @@ const ltdParams = { lockDifferenceLimit: 300000, loanDifferenceLimit: 200000, al let products = {}; let CHUNK_SIZE = 10; +let snapshotIdSingleTest; +let snapshotIdAllTests; + contract("Loans tests", accounts => { before(async function() { + snapshotIdAllTests = await testHelpers.takeSnapshot(); + rates = ratesTestHelpers.rates; monetarySupervisor = tokenTestHelpers.monetarySupervisor; augmintToken = tokenTestHelpers.augmintToken; @@ -58,6 +63,18 @@ contract("Loans tests", accounts => { ] = newProducts; }); + after(async () => { + await testHelpers.revertSnapshot(snapshotIdAllTests); + }); + + beforeEach(async function() { + snapshotIdSingleTest = await testHelpers.takeSnapshot(); + }); + + afterEach(async function() { + await testHelpers.revertSnapshot(snapshotIdSingleTest); + }); + it("Should get an A-EUR loan", async function() { await loanTestHelpers.createLoan(this, products.repaying, accounts[0], global.web3v1.utils.toWei("0.5")); }); diff --git a/test/rates.js b/test/rates.js index d753a4ff..fd809ff9 100644 --- a/test/rates.js +++ b/test/rates.js @@ -2,12 +2,21 @@ const ratesTestHelpers = require("./helpers/ratesTestHelpers"); const testHelpers = require("./helpers/testHelpers.js"); let rates = null; +let snapshotId; contract("Rates tests", accounts => { before(async function() { rates = ratesTestHelpers.rates; }); + beforeEach(async function() { + snapshotId = await testHelpers.takeSnapshot(); + }); + + afterEach(async function() { + await testHelpers.revertSnapshot(snapshotId); + }); + it("should be possible to set 1 rate", async function() { const symbol = "EUR"; diff --git a/test/tokenTransfer.js b/test/tokenTransfer.js index 6fb58261..e5db3246 100644 --- a/test/tokenTransfer.js +++ b/test/tokenTransfer.js @@ -3,6 +3,7 @@ const tokenTestHelpers = new require("./helpers/tokenTestHelpers.js"); let augmintToken = null; let minFee, maxFee, feePt, minFeeAmount, maxFeeAmount; +let snapshotId; contract("Transfer Augmint tokens tests", accounts => { before(async function() { @@ -16,6 +17,14 @@ contract("Transfer Augmint tokens tests", accounts => { maxFeeAmount = maxFee.div(feePt).mul(1000000); }); + beforeEach(async function() { + snapshotId = await testHelpers.takeSnapshot(); + }); + + afterEach(async function() { + await testHelpers.revertSnapshot(snapshotId); + }); + it("Should be able to transfer tokens between accounts (without narrative, min fee)", async function() { await tokenTestHelpers.transferTest(this, { from: accounts[1], diff --git a/test/tokenTransferFrom.js b/test/tokenTransferFrom.js index afc8fe4b..5fea229e 100644 --- a/test/tokenTransferFrom.js +++ b/test/tokenTransferFrom.js @@ -3,6 +3,7 @@ const testHelpers = new require("./helpers/testHelpers.js"); let augmintToken = null; let maxFee = null; +let snapshotId; contract("TransferFrom AugmintToken tests", accounts => { before(async function() { @@ -15,6 +16,14 @@ contract("TransferFrom AugmintToken tests", accounts => { ]); }); + beforeEach(async function() { + snapshotId = await testHelpers.takeSnapshot(); + }); + + afterEach(async function() { + await testHelpers.revertSnapshot(snapshotId); + }); + it("transferFrom", async function() { const from = accounts[1]; const to = accounts[2]; From 39172835fa173a3873dd8d90a6760ae4afefadfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= Date: Fri, 31 May 2019 13:22:08 +0200 Subject: [PATCH 08/38] move old sb scripts to archive --- .../mainnet/Main0001_initFirstDeploy.sol | 0 .../mainnet/Main0002_setupPreTokenSigners.sol | 0 .../SB_scripts => sb_archive}/mainnet/Main0003_setupSBSigners.sol | 0 .../SB_scripts => sb_archive}/mainnet/Main0004_adjustInterest.sol | 0 .../mainnet/Main0005_adjustLTDLimits.sol | 0 .../SB_scripts => sb_archive}/mainnet/Main0006_initNewLocker.sol | 0 .../SB_scripts => sb_archive}/mainnet/Main0007_stopOldLocker.sol | 0 .../mainnet/Main0008_initNewExchange.sol | 0 .../mainnet/Main0009_changeDefaultingFee.sol | 0 .../mainnet/Main0010_initNewExchange2.sol | 0 .../SB_scripts => sb_archive}/mainnet/Main0011_adjustInterest.sol | 0 .../mainnet/Main0012_issuePretokens001.sol | 0 .../mainnet/Main0013_initNewExchange.sol | 0 .../mainnet/Main0014_initNewContracts.sol | 0 .../mainnet/Main0015_migrateLegacyContracts.sol | 0 .../SB_scripts => sb_archive}/mainnet/Main0016_setupLegacy.sol | 0 .../mainnet/Main0017_postDeploySetup.sol | 0 .../mainnet/Main0018_preTokenSigners.sol | 0 .../SB_scripts => sb_archive}/mainnet/Main0019_noTransferFee.sol | 0 .../SB_scripts => sb_archive}/mainnet/Main0020_removeSigner.sol | 0 .../mainnet/Main0021_changeAllowedDifferenceAmount.sol | 0 .../mainnet/Main0022_migrateTokensAndEth.sol | 0 .../mainnet/Main0023_allowedDifferenceAmount.sol | 0 .../mainnet/Main0024_disableOneYearProducts.sol | 0 .../mainnet/Main0025_recreateLoanProducts.sol | 0 {contracts/SB_scripts => sb_archive}/mainnet/Main0026.sol | 0 {contracts/SB_scripts => sb_archive}/mainnet/Main0027_migrate.sol | 0 .../SB_scripts => sb_archive}/mainnet/Main0028_OtcBuyback.sol | 0 .../SB_scripts => sb_archive}/rinkeby/Rinkeby_0001_initAll.sol | 0 .../rinkeby/Rinkeby_0002_redeployInitAll.sol | 0 .../rinkeby/Rinkeby_0003_migrateLegacy.sol | 0 .../rinkeby/Rinkeby_0004_setupLegacy.sol | 0 .../rinkeby/Rinkeby_0005_setupSigners.sol | 0 .../rinkeby/Rinkeby_0006_postDeploySetup.sol | 0 .../rinkeby/Rinkeby_0007_interestRates.sol | 0 .../rinkeby/Rinkeby_0008_reviveTestProducts.sol | 0 36 files changed, 0 insertions(+), 0 deletions(-) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0001_initFirstDeploy.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0002_setupPreTokenSigners.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0003_setupSBSigners.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0004_adjustInterest.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0005_adjustLTDLimits.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0006_initNewLocker.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0007_stopOldLocker.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0008_initNewExchange.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0009_changeDefaultingFee.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0010_initNewExchange2.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0011_adjustInterest.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0012_issuePretokens001.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0013_initNewExchange.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0014_initNewContracts.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0015_migrateLegacyContracts.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0016_setupLegacy.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0017_postDeploySetup.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0018_preTokenSigners.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0019_noTransferFee.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0020_removeSigner.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0021_changeAllowedDifferenceAmount.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0022_migrateTokensAndEth.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0023_allowedDifferenceAmount.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0024_disableOneYearProducts.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0025_recreateLoanProducts.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0026.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0027_migrate.sol (100%) rename {contracts/SB_scripts => sb_archive}/mainnet/Main0028_OtcBuyback.sol (100%) rename {contracts/SB_scripts => sb_archive}/rinkeby/Rinkeby_0001_initAll.sol (100%) rename {contracts/SB_scripts => sb_archive}/rinkeby/Rinkeby_0002_redeployInitAll.sol (100%) rename {contracts/SB_scripts => sb_archive}/rinkeby/Rinkeby_0003_migrateLegacy.sol (100%) rename {contracts/SB_scripts => sb_archive}/rinkeby/Rinkeby_0004_setupLegacy.sol (100%) rename {contracts/SB_scripts => sb_archive}/rinkeby/Rinkeby_0005_setupSigners.sol (100%) rename {contracts/SB_scripts => sb_archive}/rinkeby/Rinkeby_0006_postDeploySetup.sol (100%) rename {contracts/SB_scripts => sb_archive}/rinkeby/Rinkeby_0007_interestRates.sol (100%) rename {contracts/SB_scripts => sb_archive}/rinkeby/Rinkeby_0008_reviveTestProducts.sol (100%) diff --git a/contracts/SB_scripts/mainnet/Main0001_initFirstDeploy.sol b/sb_archive/mainnet/Main0001_initFirstDeploy.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0001_initFirstDeploy.sol rename to sb_archive/mainnet/Main0001_initFirstDeploy.sol diff --git a/contracts/SB_scripts/mainnet/Main0002_setupPreTokenSigners.sol b/sb_archive/mainnet/Main0002_setupPreTokenSigners.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0002_setupPreTokenSigners.sol rename to sb_archive/mainnet/Main0002_setupPreTokenSigners.sol diff --git a/contracts/SB_scripts/mainnet/Main0003_setupSBSigners.sol b/sb_archive/mainnet/Main0003_setupSBSigners.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0003_setupSBSigners.sol rename to sb_archive/mainnet/Main0003_setupSBSigners.sol diff --git a/contracts/SB_scripts/mainnet/Main0004_adjustInterest.sol b/sb_archive/mainnet/Main0004_adjustInterest.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0004_adjustInterest.sol rename to sb_archive/mainnet/Main0004_adjustInterest.sol diff --git a/contracts/SB_scripts/mainnet/Main0005_adjustLTDLimits.sol b/sb_archive/mainnet/Main0005_adjustLTDLimits.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0005_adjustLTDLimits.sol rename to sb_archive/mainnet/Main0005_adjustLTDLimits.sol diff --git a/contracts/SB_scripts/mainnet/Main0006_initNewLocker.sol b/sb_archive/mainnet/Main0006_initNewLocker.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0006_initNewLocker.sol rename to sb_archive/mainnet/Main0006_initNewLocker.sol diff --git a/contracts/SB_scripts/mainnet/Main0007_stopOldLocker.sol b/sb_archive/mainnet/Main0007_stopOldLocker.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0007_stopOldLocker.sol rename to sb_archive/mainnet/Main0007_stopOldLocker.sol diff --git a/contracts/SB_scripts/mainnet/Main0008_initNewExchange.sol b/sb_archive/mainnet/Main0008_initNewExchange.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0008_initNewExchange.sol rename to sb_archive/mainnet/Main0008_initNewExchange.sol diff --git a/contracts/SB_scripts/mainnet/Main0009_changeDefaultingFee.sol b/sb_archive/mainnet/Main0009_changeDefaultingFee.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0009_changeDefaultingFee.sol rename to sb_archive/mainnet/Main0009_changeDefaultingFee.sol diff --git a/contracts/SB_scripts/mainnet/Main0010_initNewExchange2.sol b/sb_archive/mainnet/Main0010_initNewExchange2.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0010_initNewExchange2.sol rename to sb_archive/mainnet/Main0010_initNewExchange2.sol diff --git a/contracts/SB_scripts/mainnet/Main0011_adjustInterest.sol b/sb_archive/mainnet/Main0011_adjustInterest.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0011_adjustInterest.sol rename to sb_archive/mainnet/Main0011_adjustInterest.sol diff --git a/contracts/SB_scripts/mainnet/Main0012_issuePretokens001.sol b/sb_archive/mainnet/Main0012_issuePretokens001.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0012_issuePretokens001.sol rename to sb_archive/mainnet/Main0012_issuePretokens001.sol diff --git a/contracts/SB_scripts/mainnet/Main0013_initNewExchange.sol b/sb_archive/mainnet/Main0013_initNewExchange.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0013_initNewExchange.sol rename to sb_archive/mainnet/Main0013_initNewExchange.sol diff --git a/contracts/SB_scripts/mainnet/Main0014_initNewContracts.sol b/sb_archive/mainnet/Main0014_initNewContracts.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0014_initNewContracts.sol rename to sb_archive/mainnet/Main0014_initNewContracts.sol diff --git a/contracts/SB_scripts/mainnet/Main0015_migrateLegacyContracts.sol b/sb_archive/mainnet/Main0015_migrateLegacyContracts.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0015_migrateLegacyContracts.sol rename to sb_archive/mainnet/Main0015_migrateLegacyContracts.sol diff --git a/contracts/SB_scripts/mainnet/Main0016_setupLegacy.sol b/sb_archive/mainnet/Main0016_setupLegacy.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0016_setupLegacy.sol rename to sb_archive/mainnet/Main0016_setupLegacy.sol diff --git a/contracts/SB_scripts/mainnet/Main0017_postDeploySetup.sol b/sb_archive/mainnet/Main0017_postDeploySetup.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0017_postDeploySetup.sol rename to sb_archive/mainnet/Main0017_postDeploySetup.sol diff --git a/contracts/SB_scripts/mainnet/Main0018_preTokenSigners.sol b/sb_archive/mainnet/Main0018_preTokenSigners.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0018_preTokenSigners.sol rename to sb_archive/mainnet/Main0018_preTokenSigners.sol diff --git a/contracts/SB_scripts/mainnet/Main0019_noTransferFee.sol b/sb_archive/mainnet/Main0019_noTransferFee.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0019_noTransferFee.sol rename to sb_archive/mainnet/Main0019_noTransferFee.sol diff --git a/contracts/SB_scripts/mainnet/Main0020_removeSigner.sol b/sb_archive/mainnet/Main0020_removeSigner.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0020_removeSigner.sol rename to sb_archive/mainnet/Main0020_removeSigner.sol diff --git a/contracts/SB_scripts/mainnet/Main0021_changeAllowedDifferenceAmount.sol b/sb_archive/mainnet/Main0021_changeAllowedDifferenceAmount.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0021_changeAllowedDifferenceAmount.sol rename to sb_archive/mainnet/Main0021_changeAllowedDifferenceAmount.sol diff --git a/contracts/SB_scripts/mainnet/Main0022_migrateTokensAndEth.sol b/sb_archive/mainnet/Main0022_migrateTokensAndEth.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0022_migrateTokensAndEth.sol rename to sb_archive/mainnet/Main0022_migrateTokensAndEth.sol diff --git a/contracts/SB_scripts/mainnet/Main0023_allowedDifferenceAmount.sol b/sb_archive/mainnet/Main0023_allowedDifferenceAmount.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0023_allowedDifferenceAmount.sol rename to sb_archive/mainnet/Main0023_allowedDifferenceAmount.sol diff --git a/contracts/SB_scripts/mainnet/Main0024_disableOneYearProducts.sol b/sb_archive/mainnet/Main0024_disableOneYearProducts.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0024_disableOneYearProducts.sol rename to sb_archive/mainnet/Main0024_disableOneYearProducts.sol diff --git a/contracts/SB_scripts/mainnet/Main0025_recreateLoanProducts.sol b/sb_archive/mainnet/Main0025_recreateLoanProducts.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0025_recreateLoanProducts.sol rename to sb_archive/mainnet/Main0025_recreateLoanProducts.sol diff --git a/contracts/SB_scripts/mainnet/Main0026.sol b/sb_archive/mainnet/Main0026.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0026.sol rename to sb_archive/mainnet/Main0026.sol diff --git a/contracts/SB_scripts/mainnet/Main0027_migrate.sol b/sb_archive/mainnet/Main0027_migrate.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0027_migrate.sol rename to sb_archive/mainnet/Main0027_migrate.sol diff --git a/contracts/SB_scripts/mainnet/Main0028_OtcBuyback.sol b/sb_archive/mainnet/Main0028_OtcBuyback.sol similarity index 100% rename from contracts/SB_scripts/mainnet/Main0028_OtcBuyback.sol rename to sb_archive/mainnet/Main0028_OtcBuyback.sol diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0001_initAll.sol b/sb_archive/rinkeby/Rinkeby_0001_initAll.sol similarity index 100% rename from contracts/SB_scripts/rinkeby/Rinkeby_0001_initAll.sol rename to sb_archive/rinkeby/Rinkeby_0001_initAll.sol diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0002_redeployInitAll.sol b/sb_archive/rinkeby/Rinkeby_0002_redeployInitAll.sol similarity index 100% rename from contracts/SB_scripts/rinkeby/Rinkeby_0002_redeployInitAll.sol rename to sb_archive/rinkeby/Rinkeby_0002_redeployInitAll.sol diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0003_migrateLegacy.sol b/sb_archive/rinkeby/Rinkeby_0003_migrateLegacy.sol similarity index 100% rename from contracts/SB_scripts/rinkeby/Rinkeby_0003_migrateLegacy.sol rename to sb_archive/rinkeby/Rinkeby_0003_migrateLegacy.sol diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0004_setupLegacy.sol b/sb_archive/rinkeby/Rinkeby_0004_setupLegacy.sol similarity index 100% rename from contracts/SB_scripts/rinkeby/Rinkeby_0004_setupLegacy.sol rename to sb_archive/rinkeby/Rinkeby_0004_setupLegacy.sol diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0005_setupSigners.sol b/sb_archive/rinkeby/Rinkeby_0005_setupSigners.sol similarity index 100% rename from contracts/SB_scripts/rinkeby/Rinkeby_0005_setupSigners.sol rename to sb_archive/rinkeby/Rinkeby_0005_setupSigners.sol diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0006_postDeploySetup.sol b/sb_archive/rinkeby/Rinkeby_0006_postDeploySetup.sol similarity index 100% rename from contracts/SB_scripts/rinkeby/Rinkeby_0006_postDeploySetup.sol rename to sb_archive/rinkeby/Rinkeby_0006_postDeploySetup.sol diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0007_interestRates.sol b/sb_archive/rinkeby/Rinkeby_0007_interestRates.sol similarity index 100% rename from contracts/SB_scripts/rinkeby/Rinkeby_0007_interestRates.sol rename to sb_archive/rinkeby/Rinkeby_0007_interestRates.sol diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0008_reviveTestProducts.sol b/sb_archive/rinkeby/Rinkeby_0008_reviveTestProducts.sol similarity index 100% rename from contracts/SB_scripts/rinkeby/Rinkeby_0008_reviveTestProducts.sol rename to sb_archive/rinkeby/Rinkeby_0008_reviveTestProducts.sol From 641c987cc45b81d65d8cc3a3ad1db94fbc19aee8 Mon Sep 17 00:00:00 2001 From: Peter Petrovics Date: Thu, 6 Jun 2019 12:18:50 +0100 Subject: [PATCH 09/38] Loans with margin calls (#230) --- ..._ABI_1a18d349e2ea55585c57e2125d99dad9.json | 720 ++++++++++++++++++ .../999/AugmintReserves_DEPLOYS.json | 10 +- .../deployments/999/Exchange_DEPLOYS.json | 12 +- .../deployments/999/FeeAccount_DEPLOYS.json | 12 +- .../999/InterestEarnedAccount_DEPLOYS.json | 12 +- .../deployments/999/LoanManager_DEPLOYS.json | 21 +- abiniser/deployments/999/Locker_DEPLOYS.json | 12 +- .../deployments/999/Migrations_DEPLOYS.json | 12 +- .../999/MonetarySupervisor_DEPLOYS.json | 12 +- .../999/PreTokenProxy_DEPLOYS.json | 12 +- .../deployments/999/PreToken_DEPLOYS.json | 12 +- abiniser/deployments/999/Rates_DEPLOYS.json | 14 +- .../999/StabilityBoardProxy_DEPLOYS.json | 10 +- .../deployments/999/TokenAEur_DEPLOYS.json | 12 +- contracts/LoanManager.sol | 199 +++-- contracts/Rates.sol | 15 +- .../localTest/localTest_initialSetup.sol | 20 +- migrations/1003_add_legacyContracts.js | 6 +- package.json | 4 +- scripts/runganache.sh | 2 +- test/helpers/loanTestHelpers.js | 16 +- test/loanCollection.js | 86 ++- test/loanManager.js | 14 +- test/loanToDepositRatioLimits.js | 2 +- test/loans.js | 104 ++- truffle.js | 1 - 26 files changed, 1144 insertions(+), 208 deletions(-) create mode 100644 abiniser/abis/LoanManager_ABI_1a18d349e2ea55585c57e2125d99dad9.json diff --git a/abiniser/abis/LoanManager_ABI_1a18d349e2ea55585c57e2125d99dad9.json b/abiniser/abis/LoanManager_ABI_1a18d349e2ea55585c57e2125d99dad9.json new file mode 100644 index 00000000..1d16054d --- /dev/null +++ b/abiniser/abis/LoanManager_ABI_1a18d349e2ea55585c57e2125d99dad9.json @@ -0,0 +1,720 @@ +{ + "contractName": "LoanManager", + "abiHash": "1a18d349e2ea55585c57e2125d99dad9", + "generatedAt": "2019-06-06T11:06:21.107Z", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "monetarySupervisor", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rates", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "bytes32" + } + ], + "name": "permissions", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "agent", + "type": "address" + }, + { + "name": "requiredPermission", + "type": "bytes32" + } + ], + "name": "revokePermission", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "uint256" + } + ], + "name": "accountLoans", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "products", + "outputs": [ + { + "name": "minDisbursedAmount", + "type": "uint256" + }, + { + "name": "term", + "type": "uint32" + }, + { + "name": "discountRate", + "type": "uint32" + }, + { + "name": "collateralRatio", + "type": "uint32" + }, + { + "name": "defaultingFeePt", + "type": "uint32" + }, + { + "name": "isActive", + "type": "bool" + }, + { + "name": "minCollateralRatio", + "type": "uint32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "augmintToken", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "agent", + "type": "address" + }, + { + "name": "requiredPermissions", + "type": "bytes32[]" + } + ], + "name": "revokeMultiplePermissions", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "agent", + "type": "address" + }, + { + "name": "requiredPermissions", + "type": "bytes32[]" + } + ], + "name": "grantMultiplePermissions", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "loans", + "outputs": [ + { + "name": "collateralAmount", + "type": "uint256" + }, + { + "name": "repaymentAmount", + "type": "uint256" + }, + { + "name": "borrower", + "type": "address" + }, + { + "name": "productId", + "type": "uint32" + }, + { + "name": "state", + "type": "uint8" + }, + { + "name": "maturity", + "type": "uint40" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "agent", + "type": "address" + }, + { + "name": "requiredPermission", + "type": "bytes32" + } + ], + "name": "grantPermission", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "permissionGranterContract", + "type": "address" + }, + { + "name": "_augmintToken", + "type": "address" + }, + { + "name": "_monetarySupervisor", + "type": "address" + }, + { + "name": "_rates", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "productId", + "type": "uint32" + }, + { + "indexed": false, + "name": "loanId", + "type": "uint256" + }, + { + "indexed": true, + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "name": "collateralAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "loanAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "repaymentAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "maturity", + "type": "uint40" + } + ], + "name": "NewLoan", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "productId", + "type": "uint32" + }, + { + "indexed": false, + "name": "newState", + "type": "bool" + } + ], + "name": "LoanProductActiveStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "productId", + "type": "uint32" + } + ], + "name": "LoanProductAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "loanId", + "type": "uint256" + }, + { + "indexed": false, + "name": "borrower", + "type": "address" + } + ], + "name": "LoanRepayed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "loanId", + "type": "uint256" + }, + { + "indexed": true, + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "name": "collectedCollateral", + "type": "uint256" + }, + { + "indexed": false, + "name": "releasedCollateral", + "type": "uint256" + }, + { + "indexed": false, + "name": "defaultingFee", + "type": "uint256" + } + ], + "name": "LoanCollected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "newRatesContract", + "type": "address" + }, + { + "indexed": false, + "name": "newMonetarySupervisor", + "type": "address" + } + ], + "name": "SystemContractsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "agent", + "type": "address" + }, + { + "indexed": false, + "name": "grantedPermission", + "type": "bytes32" + } + ], + "name": "PermissionGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "agent", + "type": "address" + }, + { + "indexed": false, + "name": "revokedPermission", + "type": "bytes32" + } + ], + "name": "PermissionRevoked", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "term", + "type": "uint32" + }, + { + "name": "discountRate", + "type": "uint32" + }, + { + "name": "collateralRatio", + "type": "uint32" + }, + { + "name": "minDisbursedAmount", + "type": "uint256" + }, + { + "name": "defaultingFeePt", + "type": "uint32" + }, + { + "name": "isActive", + "type": "bool" + }, + { + "name": "minCollateralRatio", + "type": "uint32" + } + ], + "name": "addLoanProduct", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "productId", + "type": "uint32" + }, + { + "name": "newState", + "type": "bool" + } + ], + "name": "setLoanProductActiveState", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "productId", + "type": "uint32" + } + ], + "name": "newEthBackedLoan", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "loanId", + "type": "uint256" + } + ], + "name": "addExtraCollateral", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "repaymentAmount", + "type": "uint256" + }, + { + "name": "loanId", + "type": "uint256" + } + ], + "name": "transferNotification", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "loanIds", + "type": "uint256[]" + } + ], + "name": "collect", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newRatesContract", + "type": "address" + }, + { + "name": "newMonetarySupervisor", + "type": "address" + } + ], + "name": "setSystemContracts", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getProductCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "offset", + "type": "uint256" + }, + { + "name": "chunkSize", + "type": "uint16" + } + ], + "name": "getProducts", + "outputs": [ + { + "name": "", + "type": "uint256[9][]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getLoanCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "offset", + "type": "uint256" + }, + { + "name": "chunkSize", + "type": "uint16" + } + ], + "name": "getLoans", + "outputs": [ + { + "name": "", + "type": "uint256[12][]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "borrower", + "type": "address" + } + ], + "name": "getLoanCountForAddress", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "borrower", + "type": "address" + }, + { + "name": "offset", + "type": "uint256" + }, + { + "name": "chunkSize", + "type": "uint16" + } + ], + "name": "getLoansForAddress", + "outputs": [ + { + "name": "", + "type": "uint256[12][]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "loanId", + "type": "uint256" + } + ], + "name": "getLoanTuple", + "outputs": [ + { + "name": "result", + "type": "uint256[12]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/abiniser/deployments/999/AugmintReserves_DEPLOYS.json b/abiniser/deployments/999/AugmintReserves_DEPLOYS.json index 2965c497..487f2b6d 100644 --- a/abiniser/deployments/999/AugmintReserves_DEPLOYS.json +++ b/abiniser/deployments/999/AugmintReserves_DEPLOYS.json @@ -6,15 +6,15 @@ "latestDeployedAddress": "0x1b9441428f9e682bab4f9cc70fdf50adcc3411f4", "deployments": { "0x1b9441428f9e682bab4f9cc70fdf50adcc3411f4": { - "generatedAt": "2019-04-04T18:31:38.821Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:12.575Z", - "deployTransactionHash": "0x95630d9a62561b0462a9ddd2de9e689c9ca80c7c28cac72b32d5f0d2e99c048b", + "generatedAt": "2019-06-06T11:06:21.059Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:21.623Z", + "deployTransactionHash": "0xe60493df28511788f213d11399dbb500379ad656dd29836163341ef645fcc39b", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "44afc3f34fb8b7fea2a6743cbc8c6999", - "deployedBytecodeHash": "c561e2e5715162ea6d788141c14bbb76", + "bytecodeHash": "5bf4ede2aaad5b0b112f7b1ebf420fd2", + "deployedBytecodeHash": "3720667df6506876043fba53c540acb6", "sourceHash": "b9d84f5f6153164ba581845190291c88" } } diff --git a/abiniser/deployments/999/Exchange_DEPLOYS.json b/abiniser/deployments/999/Exchange_DEPLOYS.json index 19cccfab..36456743 100644 --- a/abiniser/deployments/999/Exchange_DEPLOYS.json +++ b/abiniser/deployments/999/Exchange_DEPLOYS.json @@ -6,15 +6,15 @@ "latestDeployedAddress": "0xfacea53a04befcc6c9246eb3951814cfee2a1415", "deployments": { "0xfacea53a04befcc6c9246eb3951814cfee2a1415": { - "generatedAt": "2019-04-04T18:31:39.082Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:16.617Z", - "deployTransactionHash": "0xef5a953fa6e48b32f149e1c72527af9e336d13e239b9eee9ebb22e80ececc380", + "generatedAt": "2019-06-06T11:06:21.135Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:23.761Z", + "deployTransactionHash": "0x6df6c091094e4ec318fba81470d07fdee22e4c5fdc6fe9ce27e4b9f19386f233", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "4947ce8b998f71a612b657747a3ba83e", - "deployedBytecodeHash": "92c3e1905f3cf3fb824b4648a048905d", + "bytecodeHash": "54b5b8f1c8280a5b4bab4bbcb89aa76d", + "deployedBytecodeHash": "f61ceef100ee149bc26ddcd2c5a65218", "sourceHash": "d6ff57acb1b45199b5dd08357978d8c2" }, "0xef49d863bd9179da0e96fab02dd498efa149dbdc": { @@ -32,4 +32,4 @@ } } } -} +} \ No newline at end of file diff --git a/abiniser/deployments/999/FeeAccount_DEPLOYS.json b/abiniser/deployments/999/FeeAccount_DEPLOYS.json index c42a55e0..5c91ae0e 100644 --- a/abiniser/deployments/999/FeeAccount_DEPLOYS.json +++ b/abiniser/deployments/999/FeeAccount_DEPLOYS.json @@ -6,18 +6,18 @@ "latestDeployedAddress": "0xf5efcaa78f5656f7ddc971bc5d51a08b5f161573", "deployments": { "0xf5efcaa78f5656f7ddc971bc5d51a08b5f161573": { - "generatedAt": "2019-04-04T18:31:38.833Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:16.540Z", - "deployTransactionHash": "0xcfbb6670c16f2fd2ef3fcd1f2df4a61deacf13759c1aa7dcecbe30a06ac22a34", + "generatedAt": "2019-06-06T11:06:21.063Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:23.721Z", + "deployTransactionHash": "0x267db16fb37d948a6eef2d3423445ee599b39eb0edee3d865bec2e83a7c0c795", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "427fbf39b30f9c3c587ac747529382d6", - "deployedBytecodeHash": "7d629ef363997f2b4c6b0491a0b1a1d7", + "bytecodeHash": "7f27e332912911a33f3a5831a478a40e", + "deployedBytecodeHash": "62169a6a5b1bc79360f85c7d6b7cbadf", "sourceHash": "d8975a5e1941ad79313f4b7bb0be9f95" } } } } -} +} \ No newline at end of file diff --git a/abiniser/deployments/999/InterestEarnedAccount_DEPLOYS.json b/abiniser/deployments/999/InterestEarnedAccount_DEPLOYS.json index 9d7b9260..57c050c7 100644 --- a/abiniser/deployments/999/InterestEarnedAccount_DEPLOYS.json +++ b/abiniser/deployments/999/InterestEarnedAccount_DEPLOYS.json @@ -6,18 +6,18 @@ "latestDeployedAddress": "0x1efb52b6aacc403cc9d762282b2aec1b066931c5", "deployments": { "0x1efb52b6aacc403cc9d762282b2aec1b066931c5": { - "generatedAt": "2019-04-04T18:31:38.842Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:12.573Z", - "deployTransactionHash": "0xb6c4bd8f92fcb84ce47cfd70e4d57e8606928dc182c055098acdcfe627ffc06c", + "generatedAt": "2019-06-06T11:06:21.068Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:21.621Z", + "deployTransactionHash": "0xc1001d7122621a5f9776ae343b515216e8a190a0d03c5d225b51b5930b6935f3", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "d221c12f6c9c52243e489a002b9279e3", - "deployedBytecodeHash": "3d78c2162360c1e031d795839f7ce883", + "bytecodeHash": "3994e47ec4faf784d97e783d6e3de64d", + "deployedBytecodeHash": "9b8b05d9a455663e6bc0b4aa953ef26e", "sourceHash": "3ae3310cda808efba999807e54bf8c9b" } } } } -} +} \ No newline at end of file diff --git a/abiniser/deployments/999/LoanManager_DEPLOYS.json b/abiniser/deployments/999/LoanManager_DEPLOYS.json index 0ecf9f3b..44b66e2d 100644 --- a/abiniser/deployments/999/LoanManager_DEPLOYS.json +++ b/abiniser/deployments/999/LoanManager_DEPLOYS.json @@ -1,6 +1,6 @@ { "contractName": "LoanManager", - "latestAbiHash": "fdf5fde95aa940c6dbfb8353c572c5fb", + "latestAbiHash": "1a18d349e2ea55585c57e2125d99dad9", "deployedAbis": { "fdf5fde95aa940c6dbfb8353c572c5fb": { "latestDeployedAddress": "0x213135c85437c23bc529a2ee9c2980646c332fcb", @@ -30,6 +30,23 @@ "sourceHash": "234fd5848af85ca2444c888fd6ba61aa" } } + }, + "1a18d349e2ea55585c57e2125d99dad9": { + "latestDeployedAddress": "0x213135c85437c23bc529a2ee9c2980646c332fcb", + "deployments": { + "0x213135c85437c23bc529a2ee9c2980646c332fcb": { + "generatedAt": "2019-06-06T11:06:21.108Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:23.781Z", + "deployTransactionHash": "0x65c11d08cd492ddc3b84e63a0bfd68cc05053537e0ce14757f70f9340465424d", + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "bytecodeHash": "6f74cede259b4e896f5faa772de789f4", + "deployedBytecodeHash": "ab71949ed51debdd86e3241773c06862", + "sourceHash": "f5c13c265210321f169220a20110aa5e" + } + } } } -} +} \ No newline at end of file diff --git a/abiniser/deployments/999/Locker_DEPLOYS.json b/abiniser/deployments/999/Locker_DEPLOYS.json index 5d42d84b..5cd6306a 100644 --- a/abiniser/deployments/999/Locker_DEPLOYS.json +++ b/abiniser/deployments/999/Locker_DEPLOYS.json @@ -6,15 +6,15 @@ "latestDeployedAddress": "0x26b4ababb98fcadd579f28e9c30931bbbe66fc88", "deployments": { "0x26b4ababb98fcadd579f28e9c30931bbbe66fc88": { - "generatedAt": "2019-04-04T18:31:39.059Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:16.577Z", - "deployTransactionHash": "0x14ee976958812927ae376573e445c351f877fb99dacb3677c867bb4f7659e54d", + "generatedAt": "2019-06-06T11:06:21.121Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:23.747Z", + "deployTransactionHash": "0xb76258760b932f9f0177f5f3acc13918440f1f76e04ebab3e411945617ab0136", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "0e7939b3e41166c23c6ec93d178ecbc4", - "deployedBytecodeHash": "2af90203e1dd333de5a21f16c893b946", + "bytecodeHash": "0fe102ad0cf754658fdb075cb2850270", + "deployedBytecodeHash": "211e0b56eb9155bf091df2937a90551d", "sourceHash": "5fb19771489eecebfa02e95214887146" }, "0x9f5420ec1348df8de8c85dab8d240ace122204c5": { @@ -32,4 +32,4 @@ } } } -} +} \ No newline at end of file diff --git a/abiniser/deployments/999/Migrations_DEPLOYS.json b/abiniser/deployments/999/Migrations_DEPLOYS.json index 73b595cc..36242ef6 100644 --- a/abiniser/deployments/999/Migrations_DEPLOYS.json +++ b/abiniser/deployments/999/Migrations_DEPLOYS.json @@ -6,18 +6,18 @@ "latestDeployedAddress": "0xd217ac4354211cda27dd4027b5e223280f885ad3", "deployments": { "0xd217ac4354211cda27dd4027b5e223280f885ad3": { - "generatedAt": "2019-04-04T18:31:38.781Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:18.362Z", - "deployTransactionHash": "0x31302309e88445703e84175f8bad5294f37166539b2ff64b6f3f7c4012997a42", + "generatedAt": "2019-06-06T11:06:21.040Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:24.270Z", + "deployTransactionHash": "0x06d813de0ff32c78ef5e91651b93d328b0c1f6043f73189164c27cfcff4fe520", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "f0557c3c790f279d198ef1d54ea5f550", - "deployedBytecodeHash": "1c74c56a535b7d558a79121649239bdf", + "bytecodeHash": "3bd5779c94259890d586374c5db67f2b", + "deployedBytecodeHash": "f00491b62e24c57c6d12323c73c1037e", "sourceHash": "16ee1835a27505e14d1b6990cdfa8c2c" } } } } -} +} \ No newline at end of file diff --git a/abiniser/deployments/999/MonetarySupervisor_DEPLOYS.json b/abiniser/deployments/999/MonetarySupervisor_DEPLOYS.json index 7fc04209..9e19353e 100644 --- a/abiniser/deployments/999/MonetarySupervisor_DEPLOYS.json +++ b/abiniser/deployments/999/MonetarySupervisor_DEPLOYS.json @@ -6,18 +6,18 @@ "latestDeployedAddress": "0x1555469d4a6c063a13ff1e12ca4ab00f5f1b7320", "deployments": { "0x1555469d4a6c063a13ff1e12ca4ab00f5f1b7320": { - "generatedAt": "2019-04-04T18:31:38.873Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:16.553Z", - "deployTransactionHash": "0xe61e362c233b31903bb591040e4a3322d015f8922e8ea42bec42947efe0c5f19", + "generatedAt": "2019-06-06T11:06:21.086Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:23.734Z", + "deployTransactionHash": "0x936befcb6195a90718c91e9ef907e0fb5cf2526ef56b1d4afdf40402c0e87605", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "4dd4a655427a8bb37d65c47c52b1d113", - "deployedBytecodeHash": "3e0602af1f64f7818b2e25889ef0808c", + "bytecodeHash": "fa3e6bca24f24d5945b149c05701b69c", + "deployedBytecodeHash": "422b205eb739ddcf33fadad8edf32d7e", "sourceHash": "62748c793556775f9ac607b991886bfb" } } } } -} +} \ No newline at end of file diff --git a/abiniser/deployments/999/PreTokenProxy_DEPLOYS.json b/abiniser/deployments/999/PreTokenProxy_DEPLOYS.json index 3829f279..2f1635f1 100644 --- a/abiniser/deployments/999/PreTokenProxy_DEPLOYS.json +++ b/abiniser/deployments/999/PreTokenProxy_DEPLOYS.json @@ -6,18 +6,18 @@ "latestDeployedAddress": "0x8b639dc72f3e640c0d6bc19497fbc7b5160d0463", "deployments": { "0x8b639dc72f3e640c0d6bc19497fbc7b5160d0463": { - "generatedAt": "2019-04-04T18:31:39.103Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:19:56.872Z", - "deployTransactionHash": "0x193f0649441a51dec67dc385a5d25f0ebfc5ee3c589b7b206181cb375f02cead", + "generatedAt": "2019-06-06T11:06:21.147Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:13.652Z", + "deployTransactionHash": "0x20cdf3d82830c5c6c2f0c1f3c9bd7d36e1bec56bb946fd1a9d3adb880dcda3d1", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "6e6bc0edea4dbaba28d55ff2d846b182", - "deployedBytecodeHash": "8aaeb6228e8e8eba670bdbbe8d23f449", + "bytecodeHash": "5007bce3d0997985a9357d5b1a97103b", + "deployedBytecodeHash": "b5a32ad0b8570f3cd6b7efaef3655911", "sourceHash": "2d172fe41d2b97c827d6dca816138047" } } } } -} +} \ No newline at end of file diff --git a/abiniser/deployments/999/PreToken_DEPLOYS.json b/abiniser/deployments/999/PreToken_DEPLOYS.json index 6e0d8e14..0eb7d84c 100644 --- a/abiniser/deployments/999/PreToken_DEPLOYS.json +++ b/abiniser/deployments/999/PreToken_DEPLOYS.json @@ -6,18 +6,18 @@ "latestDeployedAddress": "0xbed57eb0b4232da0cddd3c9c27490fc0759e0a01", "deployments": { "0xbed57eb0b4232da0cddd3c9c27490fc0759e0a01": { - "generatedAt": "2019-04-04T18:31:39.131Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:18.473Z", - "deployTransactionHash": "0xf52599927d8c2dd84673a8cda2ee731d38dd99b7b8310973b0765ca378e37d3b", + "generatedAt": "2019-06-06T11:06:21.155Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:24.276Z", + "deployTransactionHash": "0x953e3cd21273b8a598e537aa7559ce2088ca469137f3bf04f3dc97ccf0614b0e", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "8346a3e5436e002c8b4ad913358d9d66", - "deployedBytecodeHash": "e53b4725904de117332adfa1a0d75bc5", + "bytecodeHash": "8d7e449258facd1c6fab22b402de6aee", + "deployedBytecodeHash": "bf64976158eb4f8696efd994652e7f49", "sourceHash": "6cace117c42478e4f5c8cf116bec9a62" } } } } -} +} \ No newline at end of file diff --git a/abiniser/deployments/999/Rates_DEPLOYS.json b/abiniser/deployments/999/Rates_DEPLOYS.json index 64400582..93391d26 100644 --- a/abiniser/deployments/999/Rates_DEPLOYS.json +++ b/abiniser/deployments/999/Rates_DEPLOYS.json @@ -6,18 +6,18 @@ "latestDeployedAddress": "0xb0a2a8e846b66c7384f52635cecef5280f766c8b", "deployments": { "0xb0a2a8e846b66c7384f52635cecef5280f766c8b": { - "generatedAt": "2019-04-04T18:31:38.800Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:16.542Z", - "deployTransactionHash": "0x811870365342a780e8600dea7adbe10a351e8af92b9ba7eb4134781c43a83b01", + "generatedAt": "2019-06-06T11:06:21.047Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:23.724Z", + "deployTransactionHash": "0x4ed09ea2fb8329591d3bf597fc79ffedd4760265ba4712d375ee11f4df70c7a4", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "8011848257747927edacd218482fa1e9", - "deployedBytecodeHash": "b8350cabc582acfc901c4d39ebe766a9", - "sourceHash": "c65f6945fead6118910fccc8bca7494c" + "bytecodeHash": "56765e6f6f05b95853533308a1be5b1c", + "deployedBytecodeHash": "c04fec72c09427163873a8d8b49de70b", + "sourceHash": "2f37c6dfbc7d34220eb4270af6054fe9" } } } } -} +} \ No newline at end of file diff --git a/abiniser/deployments/999/StabilityBoardProxy_DEPLOYS.json b/abiniser/deployments/999/StabilityBoardProxy_DEPLOYS.json index 8eb41737..a451fd1a 100644 --- a/abiniser/deployments/999/StabilityBoardProxy_DEPLOYS.json +++ b/abiniser/deployments/999/StabilityBoardProxy_DEPLOYS.json @@ -6,15 +6,15 @@ "latestDeployedAddress": "0xd3ef19679c2dbbf3b8e2077c61b88f5e9c6178eb", "deployments": { "0xd3ef19679c2dbbf3b8e2077c61b88f5e9c6178eb": { - "generatedAt": "2019-04-04T18:31:39.094Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:09.201Z", - "deployTransactionHash": "0x5bd7a28efbad40e0c60ac86c4f4eabce7643a1d45e684a6bb669282d0b9df63e", + "generatedAt": "2019-06-06T11:06:21.143Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:19.897Z", + "deployTransactionHash": "0xcd68e2beea9d60fcf2e7d0e05e24d1bcfcefc2e0c9192a2f27e1d67640b63427", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "4e98f44311f17629e4b7f535f015387f", - "deployedBytecodeHash": "93d8347fb14c5b67f0f55aa78eb86aa3", + "bytecodeHash": "4f899546765577ad2e325da53c3e7179", + "deployedBytecodeHash": "a5f3dd7878e556db538c1206827e5959", "sourceHash": "4d60c55b8e4009873db939b37558d9dc" } } diff --git a/abiniser/deployments/999/TokenAEur_DEPLOYS.json b/abiniser/deployments/999/TokenAEur_DEPLOYS.json index 42518de7..d2e6c849 100644 --- a/abiniser/deployments/999/TokenAEur_DEPLOYS.json +++ b/abiniser/deployments/999/TokenAEur_DEPLOYS.json @@ -6,15 +6,15 @@ "latestDeployedAddress": "0xbbecff5db2f9cccc936895121802fc15053344c6", "deployments": { "0xbbecff5db2f9cccc936895121802fc15053344c6": { - "generatedAt": "2019-04-04T18:31:38.849Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:16.536Z", - "deployTransactionHash": "0x7c5a8c1bd49caa2cb3b6c754fc4cf97eec614e9763f1a108e63b77efa5034b52", + "generatedAt": "2019-06-06T11:06:21.072Z", + "truffleContractFileUpdatedAt": "2019-06-06T10:59:23.718Z", + "deployTransactionHash": "0x93172246621eb6f49cb3c6c447b00979e609d3708ab9b0a0747fcd6265e83d91", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "ed40773118be68131fcf5abcf36d21c7", - "deployedBytecodeHash": "604fd8ddaf6012bd2f2f2e5b8ebf76c8", + "bytecodeHash": "0398a39cdab3b394103910ea6b28eef7", + "deployedBytecodeHash": "2916088286d725e884630bc95fc19dbf", "sourceHash": "04025a37ea64acbc6f0ea2ec8a6f3e4d" }, "0x5d77f09a3703be84d84810379067a6d9ad759582": { @@ -32,4 +32,4 @@ } } } -} +} \ No newline at end of file diff --git a/contracts/LoanManager.sol b/contracts/LoanManager.sol index a384e655..07d96e2f 100644 --- a/contracts/LoanManager.sol +++ b/contracts/LoanManager.sol @@ -19,26 +19,30 @@ import "./MonetarySupervisor.sol"; contract LoanManager is Restricted, TokenReceiver { using SafeMath for uint256; - enum LoanState { Open, Repaid, Defaulted, Collected } // NB: Defaulted state is not stored, only getters calculate + uint constant PPM_FACTOR = 1e6; + uint constant WEI_FACTOR = 1e18; + uint constant WEI_PER_PPM_FACTOR = WEI_FACTOR / PPM_FACTOR; // = 1e12 + + enum LoanState { Open, Repaid, DoNotUse, Collected } // NB: DoNotUse state is kept for backwards compatibility only (so the ordinal of 'Collected' does not shift), as the name states: do not use it. struct LoanProduct { - uint minDisbursedAmount; // 0: with decimals set in AugmintToken.decimals - uint32 term; // 1 - uint32 discountRate; // 2: discountRate in parts per million , ie. 10,000 = 1% - uint32 collateralRatio; // 3: loan token amount / colleteral pegged ccy value - // in parts per million , ie. 10,000 = 1% - uint32 defaultingFeePt; // 4: % of collateral in parts per million , ie. 50,000 = 5% - bool isActive; // 5 + uint minDisbursedAmount; // 0: minimum loanAmount, with decimals set in AugmintToken.decimals (i.e. token amount) + uint32 term; // 1: term length (in seconds) + uint32 discountRate; // 2: discountRate (in parts per million, i.e. 10,000 = 1%) + uint32 collateralRatio; // 3: inverse of collateral ratio: [repayment value (in token) / collateral value (in token)] (in ppm). Note: this is actually the inverse of the commonly used "collateral ratio"! TODO: fix it + uint32 defaultingFeePt; // 4: % of repaymentAmount (in parts per million, i.e. 50,000 = 5%) + bool isActive; // 5: flag to enable/disable product + uint32 minCollateralRatio; // 6: minimum collateral ratio: [collateral value (in token) / repayment value (in token)] (in ppm), defines the margin, zero means no margin. Note: this is _not_ an inverse like the above "collateralRatio", it is already stored properly! } /* NB: we don't need to store loan parameters because loan products can't be altered (only disabled/enabled) */ struct LoanData { - uint collateralAmount; // 0 - uint repaymentAmount; // 1 - address borrower; // 2 - uint32 productId; // 3 - LoanState state; // 4 - uint40 maturity; // 5 + uint collateralAmount; // 0: collateral amount (in wei) + uint repaymentAmount; // 1: repayment amount (in token) + address borrower; // 2: address of the owner of this loan + uint32 productId; // 3: id of the product from which this loan was created + LoanState state; // 4: current status of the loan (Open/Repaid/Collected) + uint40 maturity; // 5: expiration date (in epoch seconds) } LoanProduct[] public products; @@ -46,7 +50,7 @@ contract LoanManager is Restricted, TokenReceiver { LoanData[] public loans; mapping(address => uint[]) public accountLoans; // owner account address => array of loan Ids - Rates public rates; // instance of ETH/pegged currency rate provider contract + Rates public rates; // instance of token/ETH rate provider contract AugmintTokenInterface public augmintToken; // instance of token contract MonetarySupervisor public monetarySupervisor; @@ -73,11 +77,10 @@ contract LoanManager is Restricted, TokenReceiver { } function addLoanProduct(uint32 term, uint32 discountRate, uint32 collateralRatio, uint minDisbursedAmount, - uint32 defaultingFeePt, bool isActive) + uint32 defaultingFeePt, bool isActive, uint32 minCollateralRatio) external restrict("StabilityBoard") { - uint _newProductId = products.push( - LoanProduct(minDisbursedAmount, term, discountRate, collateralRatio, defaultingFeePt, isActive) + LoanProduct(minDisbursedAmount, term, discountRate, collateralRatio, defaultingFeePt, isActive, minCollateralRatio) ) - 1; uint32 newProductId = uint32(_newProductId); @@ -100,8 +103,8 @@ contract LoanManager is Restricted, TokenReceiver { // calculate loan values based on ETH sent in with Tx - uint tokenValue = rates.convertFromWei(augmintToken.peggedSymbol(), msg.value); - uint repaymentAmount = tokenValue.mul(product.collateralRatio).div(1000000); + uint collateralValueInToken = rates.convertFromWei(augmintToken.peggedSymbol(), msg.value); + uint repaymentAmount = collateralValueInToken.mul(product.collateralRatio).div(PPM_FACTOR); uint loanAmount; (loanAmount, ) = calculateLoanValues(product, repaymentAmount); @@ -113,8 +116,9 @@ contract LoanManager is Restricted, TokenReceiver { require(maturity == expiration, "maturity overflow"); // Create new loan - uint loanId = loans.push(LoanData(msg.value, repaymentAmount, msg.sender, - productId, LoanState.Open, maturity)) - 1; + uint loanId = loans.push( + LoanData(msg.value, repaymentAmount, msg.sender, productId, LoanState.Open, maturity) + ) - 1; // Store ref to new loan accountLoans[msg.sender].push(loanId); @@ -125,6 +129,16 @@ contract LoanManager is Restricted, TokenReceiver { emit NewLoan(productId, loanId, msg.sender, msg.value, loanAmount, repaymentAmount, maturity); } + function addExtraCollateral(uint loanId) external payable { + require(loanId < loans.length, "invalid loanId"); + LoanData storage loan = loans[loanId]; + require(loan.state == LoanState.Open, "loan state must be Open"); + LoanProduct storage product = products[loan.productId]; + require(product.minCollateralRatio > 0, "not a margin type loan"); + + loan.collateralAmount = loan.collateralAmount.add(msg.value); + } + /* repay loan, called from AugmintToken's transferAndNotify Flow for repaying loan: 1) user calls token contract's transferAndNotify loanId passed in data arg @@ -139,6 +153,8 @@ contract LoanManager is Restricted, TokenReceiver { } function collect(uint[] loanIds) external { + uint currentRate = getCurrentRate(); + /* when there are a lots of loans to be collected then the client need to call it in batches to make sure tx won't exceed block gas limit. Anyone can call it - can't cause harm as it only allows to collect loans which they are defaulted @@ -148,43 +164,10 @@ contract LoanManager is Restricted, TokenReceiver { uint totalCollateralToCollect; uint totalDefaultingFee; for (uint i = 0; i < loanIds.length; i++) { - require(loanIds[i] < loans.length, "invalid loanId"); // next line would revert but require to emit reason - LoanData storage loan = loans[loanIds[i]]; - require(loan.state == LoanState.Open, "loan state must be Open"); - require(now >= loan.maturity, "current time must be later than maturity"); - LoanProduct storage product = products[loan.productId]; - - uint loanAmount; - (loanAmount, ) = calculateLoanValues(product, loan.repaymentAmount); - + (uint loanAmount, uint defaultingFee, uint collateralToCollect) = _collectLoan(loanIds[i], currentRate); totalLoanAmountCollected = totalLoanAmountCollected.add(loanAmount); - - loan.state = LoanState.Collected; - - // send ETH collateral to augmintToken reserve - uint defaultingFeeInToken = loan.repaymentAmount.mul(product.defaultingFeePt).div(1000000); - uint defaultingFee = rates.convertToWei(augmintToken.peggedSymbol(), defaultingFeeInToken); - uint targetCollection = rates.convertToWei(augmintToken.peggedSymbol(), - loan.repaymentAmount).add(defaultingFee); - - uint releasedCollateral; - if (targetCollection < loan.collateralAmount) { - releasedCollateral = loan.collateralAmount.sub(targetCollection); - loan.borrower.transfer(releasedCollateral); - } - uint collateralToCollect = loan.collateralAmount.sub(releasedCollateral); - if (defaultingFee >= collateralToCollect) { - defaultingFee = collateralToCollect; - collateralToCollect = 0; - } else { - collateralToCollect = collateralToCollect.sub(defaultingFee); - } totalDefaultingFee = totalDefaultingFee.add(defaultingFee); - totalCollateralToCollect = totalCollateralToCollect.add(collateralToCollect); - - emit LoanCollected(loanIds[i], loan.borrower, collateralToCollect.add(defaultingFee), - releasedCollateral, defaultingFee); } if (totalCollateralToCollect > 0) { @@ -212,17 +195,18 @@ contract LoanManager is Restricted, TokenReceiver { } // returns loan products starting from some : - // [ productId, minDisbursedAmount, term, discountRate, collateralRatio, defaultingFeePt, maxLoanAmount, isActive ] + // [ productId, minDisbursedAmount, term, discountRate, collateralRatio, defaultingFeePt, maxLoanAmount, isActive, minCollateralRatio ] function getProducts(uint offset, uint16 chunkSize) - external view returns (uint[8][]) { + external view returns (uint[9][]) { uint limit = SafeMath.min(offset.add(chunkSize), products.length); - uint[8][] memory response = new uint[8][](limit.sub(offset)); + uint[9][] memory response = new uint[9][](limit.sub(offset)); for (uint i = offset; i < limit; i++) { LoanProduct storage product = products[i]; response[i - offset] = [i, product.minDisbursedAmount, product.term, product.discountRate, product.collateralRatio, product.defaultingFeePt, - monetarySupervisor.getMaxLoanAmount(product.minDisbursedAmount), product.isActive ? 1 : 0 ]; + monetarySupervisor.getMaxLoanAmount(product.minDisbursedAmount), product.isActive ? 1 : 0, + product.minCollateralRatio]; } return response; } @@ -233,14 +217,15 @@ contract LoanManager is Restricted, TokenReceiver { /* returns loans starting from some . Loans data encoded as: [loanId, collateralAmount, repaymentAmount, borrower, productId, - state, maturity, disbursementTime, loanAmount, interestAmount] */ + state, maturity, disbursementTime, loanAmount, interestAmount, marginCallRate] */ function getLoans(uint offset, uint16 chunkSize) - external view returns (uint[10][]) { + external view returns (uint[12][]) { uint limit = SafeMath.min(offset.add(chunkSize), loans.length); - uint[10][] memory response = new uint[10][](limit.sub(offset)); + uint[12][] memory response = new uint[12][](limit.sub(offset)); + uint currentRate = getCurrentRate(); for (uint i = offset; i < limit; i++) { - response[i - offset] = getLoanTuple(i); + response[i - offset] = _getLoanTuple(i, currentRate); } return response; } @@ -251,20 +236,25 @@ contract LoanManager is Restricted, TokenReceiver { /* returns loans of a given account, starting from some . Loans data encoded as: [loanId, collateralAmount, repaymentAmount, borrower, productId, state, maturity, disbursementTime, - loanAmount, interestAmount ] */ + loanAmount, interestAmount, marginCallRate, isCollectable] */ function getLoansForAddress(address borrower, uint offset, uint16 chunkSize) - external view returns (uint[10][]) { + external view returns (uint[12][]) { uint[] storage loansForAddress = accountLoans[borrower]; uint limit = SafeMath.min(offset.add(chunkSize), loansForAddress.length); - uint[10][] memory response = new uint[10][](limit.sub(offset)); + uint[12][] memory response = new uint[12][](limit.sub(offset)); + uint currentRate = getCurrentRate(); for (uint i = offset; i < limit; i++) { - response[i - offset] = getLoanTuple(loansForAddress[i]); + response[i - offset] = _getLoanTuple(loansForAddress[i], currentRate); } return response; } - function getLoanTuple(uint loanId) public view returns (uint[10] result) { + function getLoanTuple(uint loanId) public view returns (uint[12] result) { + return _getLoanTuple(loanId, getCurrentRate()); + } + + function _getLoanTuple(uint loanId, uint currentRate) internal view returns (uint[12] result) { require(loanId < loans.length, "invalid loanId"); // next line would revert but require to emit reason LoanData storage loan = loans[loanId]; LoanProduct storage product = products[loan.productId]; @@ -274,20 +264,47 @@ contract LoanManager is Restricted, TokenReceiver { (loanAmount, interestAmount) = calculateLoanValues(product, loan.repaymentAmount); uint disbursementTime = loan.maturity - product.term; - LoanState loanState = - loan.state == LoanState.Open && now >= loan.maturity ? LoanState.Defaulted : loan.state; + // Add extra calculated data for convenience: marginCallRate, isCollectable + uint marginCallRate = calculateMarginCallRate(product.minCollateralRatio, loan.repaymentAmount, loan.collateralAmount); result = [loanId, loan.collateralAmount, loan.repaymentAmount, uint(loan.borrower), - loan.productId, uint(loanState), loan.maturity, disbursementTime, loanAmount, interestAmount]; + loan.productId, uint(loan.state), loan.maturity, disbursementTime, loanAmount, interestAmount, + marginCallRate, isCollectable(loan, currentRate) ? 1 : 0]; } function calculateLoanValues(LoanProduct storage product, uint repaymentAmount) internal view returns (uint loanAmount, uint interestAmount) { // calculate loan values based on repayment amount - loanAmount = repaymentAmount.mul(product.discountRate).div(1000000); + loanAmount = repaymentAmount.mul(product.discountRate).ceilDiv(PPM_FACTOR); interestAmount = loanAmount > repaymentAmount ? 0 : repaymentAmount.sub(loanAmount); } + // the token/ETH rate of the margin, under which the loan can be "margin called" (collected) + function calculateMarginCallRate(uint32 minCollateralRatio, uint repaymentAmount, uint collateralAmount) + internal pure returns (uint) { + return uint(minCollateralRatio).mul(repaymentAmount).mul(WEI_PER_PPM_FACTOR).div(collateralAmount); + } + + function isUnderMargin(LoanData storage loan, uint currentRate) + internal view returns (bool) { + uint32 minCollateralRatio = products[loan.productId].minCollateralRatio; + uint marginCallRate = calculateMarginCallRate(minCollateralRatio, loan.repaymentAmount, loan.collateralAmount); + return minCollateralRatio > 0 && marginCallRate > 0 && currentRate < marginCallRate; + } + + function isCollectable(LoanData storage loan, uint currentRate) + internal view returns (bool) { + return loan.state == LoanState.Open && (now >= loan.maturity || isUnderMargin(loan, currentRate)); + } + + // Returns the current token/ETH rate + function getCurrentRate() + internal view returns (uint) { + (uint currentRate, ) = rates.rates(augmintToken.peggedSymbol()); + require(currentRate > 0, "No current rate available"); + return currentRate; + } + /* internal function, assuming repayment amount already transfered */ function _repayLoan(uint loanId, uint repaymentAmount) internal { require(loanId < loans.length, "invalid loanId"); // next line would revert but require to emit reason @@ -317,4 +334,40 @@ contract LoanManager is Restricted, TokenReceiver { emit LoanRepayed(loanId, loan.borrower); } + + function _collectLoan(uint loanId, uint currentRate) private returns(uint loanAmount, uint defaultingFee, uint collateralToCollect) { + LoanData storage loan = loans[loanId]; + require(isCollectable(loan, currentRate), "Not collectable"); + LoanProduct storage product = products[loan.productId]; + + (loanAmount, ) = calculateLoanValues(product, loan.repaymentAmount); + + loan.state = LoanState.Collected; + + // send ETH collateral to augmintToken reserve + // uint defaultingFeeInToken = loan.repaymentAmount.mul(product.defaultingFeePt).div(1000000); + defaultingFee = _convertToWei(currentRate, loan.repaymentAmount.mul(product.defaultingFeePt).div(PPM_FACTOR)); + uint targetCollection = _convertToWei(currentRate, loan.repaymentAmount).add(defaultingFee); + + uint releasedCollateral; + if (targetCollection < loan.collateralAmount) { + releasedCollateral = loan.collateralAmount.sub(targetCollection); + loan.borrower.transfer(releasedCollateral); + } + collateralToCollect = loan.collateralAmount.sub(releasedCollateral); + if (defaultingFee >= collateralToCollect) { + defaultingFee = collateralToCollect; + collateralToCollect = 0; + } else { + collateralToCollect = collateralToCollect.sub(defaultingFee); + } + + emit LoanCollected(loanId, loan.borrower, collateralToCollect.add(defaultingFee), + releasedCollateral, defaultingFee); + } + + function _convertToWei(uint rate, uint value) private pure returns(uint weiValue) { + return value.mul(WEI_FACTOR).roundedDiv(rate); + } + } diff --git a/contracts/Rates.sol b/contracts/Rates.sol index a01ae1fb..45fdd703 100644 --- a/contracts/Rates.sol +++ b/contracts/Rates.sol @@ -1,11 +1,8 @@ /* - Generic symbol / WEI rates contract. + Generic token / ETH rates contract. only callable by trusted price oracles. Being regularly called by a price oracle - TODO: trustless/decentrilezed price Oracle - TODO: shall we use blockNumber instead of now for lastUpdated? - TODO: consider if we need storing rates with variable decimals instead of fixed 4 - TODO: could we emit 1 RateChanged event from setMultipleRates (symbols and newrates arrays)? + Note: symbol is always the "pegged symbol" not the token's own symbol! */ pragma solidity 0.4.24; @@ -17,12 +14,12 @@ contract Rates is Restricted { using SafeMath for uint256; struct RateInfo { - uint rate; // how much 1 WEI worth 1 unit , i.e. symbol/ETH rate - // 0 rate means no rate info available + uint rate; // how much token is worth 1 ETH, i.e. token/ETH rate, 0 rate means no rate info available uint lastUpdated; } - // mapping currency symbol => rate. all rates are stored with 2 decimals. i.e. EUR/ETH = 989.12 then rate = 98912 + // mapping pegged currency symbol => rate. + // all rates are stored as token amounts (with 2 decimals for EUR, i.e. if EUR/ETH = 989.12 then rate = 98912) mapping(bytes32 => RateInfo) public rates; event RateChanged(bytes32 symbol, uint newRate); @@ -35,7 +32,7 @@ contract Rates is Restricted { } function setMultipleRates(bytes32[] symbols, uint[] newRates) external restrict("RatesFeeder") { - require(symbols.length == newRates.length, "symobls and newRates lengths must be equal"); + require(symbols.length == newRates.length, "symbols and newRates lengths must be equal"); for (uint256 i = 0; i < symbols.length; i++) { rates[symbols[i]] = RateInfo(newRates[i], now); emit RateChanged(symbols[i], newRates[i]); diff --git a/contracts/SB_scripts/localTest/localTest_initialSetup.sol b/contracts/SB_scripts/localTest/localTest_initialSetup.sol index 8f7b1e2c..c5137212 100644 --- a/contracts/SB_scripts/localTest/localTest_initialSetup.sol +++ b/contracts/SB_scripts/localTest/localTest_initialSetup.sol @@ -1,4 +1,4 @@ -/* script to setup contracts deplyomed on local test ganache instance +/* script to setup contracts deployed on local test ganache instance - one instance can be executed by StabilityBoardProxy only once NB: live scripts (rinkeby & mainnet etc.) will have contracts setup from constant addresses */ @@ -105,17 +105,17 @@ contract localTest_initialSetup { // add test loan Products // term (in sec), discountRate, loanCoverageRatio, minDisbursedAmount (w/ 4 decimals), defaultingFeePt, isActive - _loanManager.addLoanProduct(365 days, 854701, 550000, 1000, 50000, true); // 17% p.a. - _loanManager.addLoanProduct(180 days, 924753, 550000, 1000, 50000, true); // 16.5% p.a. + _loanManager.addLoanProduct(365 days, 854701, 550000, 1000, 50000, true, 1500000); // 17% p.a., (collateral ratio: initial = ~181%, minimum = 150%) + _loanManager.addLoanProduct(180 days, 924753, 550000, 1000, 50000, true, 1500000); // 16.5% p.a., (collateral ratio: initial = ~181%, minimum = 150%) - _loanManager.addLoanProduct(90 days, 962046, 600000, 1000, 50000, true); // 16%. p.a. - _loanManager.addLoanProduct(60 days, 975154, 600000, 1000, 50000, true); // 15.5% p.a. - _loanManager.addLoanProduct(30 days, 987822, 600000, 1000, 50000, true); // 15% p.a. - _loanManager.addLoanProduct(14 days, 994280, 600000, 1000, 50000, true); // 15% p.a. - _loanManager.addLoanProduct(7 days, 997132, 600000, 1000, 50000, true); // 15% p.a. + _loanManager.addLoanProduct(90 days, 962046, 600000, 1000, 50000, true, 1200000); // 16%. p.a., (collateral ratio: initial = ~166%, minimum = 120%) + _loanManager.addLoanProduct(60 days, 975154, 600000, 1000, 50000, true, 1200000); // 15.5% p.a., (collateral ratio: initial = ~166%, minimum = 120%) + _loanManager.addLoanProduct(30 days, 987822, 600000, 1000, 50000, true, 1200000); // 15% p.a., (collateral ratio: initial = ~166%, minimum = 120%) + _loanManager.addLoanProduct(14 days, 994280, 600000, 1000, 50000, true, 1200000); // 15% p.a., (collateral ratio: initial = ~166%, minimum = 120%) + _loanManager.addLoanProduct(7 days, 997132, 600000, 1000, 50000, true, 1200000); // 15% p.a., (collateral ratio: initial = ~166%, minimum = 120%) - _loanManager.addLoanProduct(1 hours, 999998, 980000, 2000, 50000, true); // due in 1hr for testing repayments ? p.a. - _loanManager.addLoanProduct(1 seconds, 999999, 990000, 3000, 50000, true); // defaults in 1 secs for testing ? p.a. + _loanManager.addLoanProduct(1 hours, 999998, 980000, 2000, 50000, true, 1010000); // due in 1hr for testing repayments ~1.75% p.a., (collateral ratio: initial = ~102%, minimum = 101%) + _loanManager.addLoanProduct(1 seconds, 999999, 990000, 3000, 50000, true, 1010000); // defaults in 1 secs for testing ~3153.6% p.a., (collateral ratio: initial = ~102%, minimum = 101%) // add test lock products // (perTermInterest, durationInSecs, minimumLockAmount, isActive) diff --git a/migrations/1003_add_legacyContracts.js b/migrations/1003_add_legacyContracts.js index 149d7c81..0934a883 100644 --- a/migrations/1003_add_legacyContracts.js +++ b/migrations/1003_add_legacyContracts.js @@ -46,9 +46,9 @@ module.exports = async function(deployer, network, accounts) { /* LoanManager permissions & products */ monetarySupervisor.grantPermission(oldLoanManager.address, "LoanManager"), feeAccount.grantPermission(oldLoanManager.address, "NoTransferFee"), - oldLoanManager.addLoanProduct(1, 999999, 990000, 1000, 50000, true), // defaults in 1 secs for testing ? p.a. - oldLoanManager.addLoanProduct(3600, 999989, 980000, 1000, 50000, true), // due in 1hr for testing repayments ? p.a. - oldLoanManager.addLoanProduct(31536000, 860000, 550000, 1000, 50000, true), // 365d, 14% p.a. + oldLoanManager.addLoanProduct(1, 999999, 990000, 1000, 50000, true, 0), // defaults in 1 secs for testing ? p.a. + oldLoanManager.addLoanProduct(3600, 999989, 980000, 1000, 50000, true, 0), // due in 1hr for testing repayments ? p.a. + oldLoanManager.addLoanProduct(31536000, 860000, 550000, 1000, 50000, true, 0), // 365d, 14% p.a. /* Exchange permissions */ feeAccount.grantPermission(oldExchange.address, "NoTransferFee") diff --git a/package.json b/package.json index 8a2bbb84..49641765 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ ], "engines": { "node": "10.15.3", - "yarn": "1.15.2" + "yarn": ">=1.15.2" }, "scripts": { "start": "yarn runmigrate", @@ -38,7 +38,7 @@ "localchaindb:build": "yarn localchaindb:clean && ./scripts/runganache.sh --db ./localchaindb & yarn migrate && echo 'Migration done. Ganache db in ./localchaindb folder.'", "localchaindb:builddocker": "yarn localchaindb:build && yarn docker:build", "docker:build": "docker build . -t localdockerimage", - "docker:run": "docker rm ganache ; docker run --init --name ganache -p 8545:8545 localdockerimage --db ./dockerLocalchaindb --gasLimit 0x47D5DE --gasPrice 1000000000 --networkId 999 -m \"hello build tongue rack parade express shine salute glare rate spice stock\" & wait", + "docker:run": "docker rm ganache ; docker run --init --name ganache -p 8545:8545 localdockerimage --db ./dockerLocalchaindb --gasLimit 0x694920 --gasPrice 1000000000 --networkId 999 -m \"hello build tongue rack parade express shine salute glare rate spice stock\" & wait", "docker:start": "docker start ganache || yarn docker:run", "docker:stop": "docker stop ganache", "docker:tag:build": "docker tag localdockerimage augmint/contracts:commit-$(git log -1 --format='%h'); docker tag localdockerimage augmint/contracts:build-$TRAVIS_BUILD_NUMBER", diff --git a/scripts/runganache.sh b/scripts/runganache.sh index 367b938a..7f452fde 100755 --- a/scripts/runganache.sh +++ b/scripts/runganache.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash echo "launching ganache-cli (aka testrpc) with deterministic addresses" yarn ganache-cli \ ---gasLimit 0x47D5DE \ +--gasLimit 0x694920 \ --gasPrice 1000000000 \ --networkId 999 \ -m "hello build tongue rack parade express shine salute glare rate spice stock" \ diff --git a/test/helpers/loanTestHelpers.js b/test/helpers/loanTestHelpers.js index 8d0e9446..297b51b9 100644 --- a/test/helpers/loanTestHelpers.js +++ b/test/helpers/loanTestHelpers.js @@ -320,7 +320,8 @@ async function getProductsInfo(offset, chunkSize) { collateralRatio, defaultingFeePt, maxLoanAmount, - isActive + isActive, + minCollateralRatio ] = prod; assert(term.gt(0)); result.push({ @@ -331,7 +332,8 @@ async function getProductsInfo(offset, chunkSize) { collateralRatio, defaultingFeePt, maxLoanAmount, - isActive + isActive, + minCollateralRatio }); }); return result; @@ -351,7 +353,9 @@ function parseLoansInfo(loans) { maturity, disbursementTime, loanAmount, - interestAmount + interestAmount, + marginCallRate, + isCollectable ] = loan; assert(maturity.gt(0)); @@ -365,7 +369,9 @@ function parseLoansInfo(loans) { maturity, disbursementTime, loanAmount, - interestAmount + interestAmount, + marginCallRate, + isCollectable }); }); return result; @@ -386,7 +392,7 @@ async function calcLoanValues(rates, product, collateralWei) { ret.loanAmount = ret.repaymentAmount .mul(product.discountRate) .div(ppmDiv) - .round(0, BigNumber.ROUND_DOWN); + .round(0, BigNumber.ROUND_UP); ret.interestAmount = ret.repaymentAmount.gt(ret.loanAmount) ? ret.repaymentAmount.minus(ret.loanAmount) diff --git a/test/loanCollection.js b/test/loanCollection.js index 5f1b7379..b7c51dbc 100644 --- a/test/loanCollection.js +++ b/test/loanCollection.js @@ -28,15 +28,16 @@ contract("Loans collection tests", accounts => { ltdParams.allowedDifferenceAmount ) ]); - // These neeed to be sequantial b/c product order assumed when retreving via getProducts - // term (in sec), discountRate, loanCoverageRatio, minDisbursedAmount (w/ 2 decimals), defaultingFeePt, isActive - await loanManager.addLoanProduct(86400, 970000, 850000, 3000, 50000, true); // notDue - await loanManager.addLoanProduct(1, 970000, 850000, 1000, 50000, true); // defaulting - await loanManager.addLoanProduct(1, 900000, 900000, 1000, 100000, true); // defaultingNoLeftOver - await loanManager.addLoanProduct(1, 1000000, 900000, 2000, 50000, true); // zeroInterest - await loanManager.addLoanProduct(1, 1100000, 900000, 2000, 50000, true); // negativeInterest - await loanManager.addLoanProduct(1, 990000, 1000000, 2000, 50000, true); // fullCoverage - await loanManager.addLoanProduct(1, 990000, 1200000, 2000, 50000, true); // moreCoverage + // These neeed to be sequential b/c product order assumed when retrieving via getProducts + // term (in sec), discountRate, loanCoverageRatio, minDisbursedAmount (w/ 2 decimals), defaultingFeePt, isActive, minCollateralRatio + await loanManager.addLoanProduct(86400, 970000, 850000, 3000, 50000, true, 0); // notDue + await loanManager.addLoanProduct(1, 970000, 850000, 1000, 50000, true, 0); // defaulting + await loanManager.addLoanProduct(1, 900000, 900000, 1000, 100000, true, 0); // defaultingNoLeftOver + await loanManager.addLoanProduct(1, 1000000, 900000, 2000, 50000, true, 0); // zeroInterest + await loanManager.addLoanProduct(1, 1100000, 900000, 2000, 50000, true, 0); // negativeInterest + await loanManager.addLoanProduct(1, 990000, 1000000, 2000, 50000, true, 0); // fullCoverage + await loanManager.addLoanProduct(1, 990000, 1200000, 2000, 50000, true, 0); // moreCoverage + await loanManager.addLoanProduct(86400, 970000, 625000, 3000, 50000, true, 1200000); // with margin (collateral ratio: initial = 160%, minimum = 120%) (1/1.6 = 0.625) const [newProducts] = await Promise.all([ loanTestHelpers.getProductsInfo(prodCount, 10), @@ -49,7 +50,8 @@ contract("Loans collection tests", accounts => { products.zeroInterest, products.negativeInterest, products.fullCoverage, - products.moreCoverage + products.moreCoverage, + products.margin ] = newProducts; }); @@ -246,4 +248,68 @@ contract("Loans collection tests", accounts => { it("only allowed contract should call MonetarySupervisor.loanCollectionNotification", async function() { await testHelpers.expectThrow(monetarySupervisor.loanCollectionNotification(0, { from: accounts[0] })); }); + + // Margin tests: + // ============== + // initial rate = 99800 (token/eth) + // collateral = 0.05 (eth) + // + // 100% => 3118.75 (token) => @ 62375 (token/eth) + // 120% => 3742.5 (token) => @ 74850 (token/eth) => marginCallRate: 74832 (due to internal rounding in contract) + // 160% => 4990 (token) => @ 99800 (token/eth) + + it("Should collect a loan if under margin", async function() { + await rates.setRate("EUR", 99800); + const loan = await loanTestHelpers.createLoan( + this, + products.margin, + accounts[1], + global.web3v1.utils.toWei("0.05") + ); + await rates.setRate("EUR", 74830); + assert(await isCollectable(loan.id) === 1); + await loanTestHelpers.collectLoan(this, loan, accounts[2]); + }); + + it("Should not collect a loan if above margin", async function() { + await rates.setRate("EUR", 99800); + const loan = await loanTestHelpers.createLoan( + this, + products.margin, + accounts[1], + global.web3v1.utils.toWei("0.05") + ); + await rates.setRate("EUR", 74840); + assert(await isCollectable(loan.id) === 0); + await testHelpers.expectThrow(loanManager.collect([loan.id])); + }); + + it("Should not collect a loan if enough extra collateral was added", async function() { + await rates.setRate("EUR", 99800); + const loan = await loanTestHelpers.createLoan( + this, + products.margin, + accounts[1], + global.web3v1.utils.toWei("0.05") + ); + assert(await isCollectable(loan.id) === 0); + + // set rate below margin + await rates.setRate("EUR", 72000); + assert(await isCollectable(loan.id) === 1); + + // add extra collateral to get above margin + const tx = await loanManager.addExtraCollateral(loan.id, { + from: accounts[1], + value: global.web3v1.utils.toWei("0.05") + }); + testHelpers.logGasUse(this, tx, "addExtraCollateral"); + + // should not be collectable + assert(await isCollectable(loan.id) === 0); + await testHelpers.expectThrow(loanManager.collect([loan.id])); + }); + + const isCollectable = async loanId => + loanTestHelpers.parseLoansInfo(await loanManager.getLoans(loanId, 1))[0].isCollectable.toNumber(); }); diff --git a/test/loanManager.js b/test/loanManager.js index 301a9798..73a4994b 100644 --- a/test/loanManager.js +++ b/test/loanManager.js @@ -24,7 +24,8 @@ contract("loanManager tests", accounts => { discountRate: 970000, collateralRatio: 850000, defaultingFeePt: 50000, - isActive: true + isActive: true, + minCollateralRatio: 0 }; await loanManager.addLoanProduct( loanProduct.term, @@ -33,6 +34,7 @@ contract("loanManager tests", accounts => { loanProduct.minDisbursedAmount, loanProduct.defaultingFeePt, loanProduct.isActive, + loanProduct.minCollateralRatio, { from: accounts[0] } ); @@ -83,7 +85,8 @@ contract("loanManager tests", accounts => { discountRate: 970000, collateralRatio: 850000, defaultingFeePt: 50000, - isActive: true + isActive: true, + minCollateralRatio: 0 }; const tx = await loanManager.addLoanProduct( prod.term, @@ -92,6 +95,7 @@ contract("loanManager tests", accounts => { prod.minDisbursedAmount, prod.defaultingFeePt, prod.isActive, + prod.minCollateralRatio, { from: accounts[0] } ); testHelpers.logGasUse(this, tx, "addLoanProduct"); @@ -135,7 +139,8 @@ contract("loanManager tests", accounts => { discountRate: 970000, collateralRatio: 850000, defaultingFeePt: 50000, - isActive: true + isActive: true, + minCollateralRatio: 0 }; const tx = await loanManager.addLoanProduct( prod.term, @@ -144,6 +149,7 @@ contract("loanManager tests", accounts => { prod.minDisbursedAmount, prod.defaultingFeePt, prod.isActive, + prod.minCollateralRatio, { from: accounts[0] } ); testHelpers.logGasUse(this, tx, "addLoanProduct"); @@ -170,7 +176,7 @@ contract("loanManager tests", accounts => { it("Only allowed should add new product", async function() { await testHelpers.expectThrow( - loanManager.addLoanProduct(86400, 970000, 850000, 3000, 50000, true, { from: accounts[1] }) + loanManager.addLoanProduct(86400, 970000, 850000, 3000, 50000, true, 0, { from: accounts[1] }) ); }); diff --git a/test/loanToDepositRatioLimits.js b/test/loanToDepositRatioLimits.js index 00a09b38..d2bb0215 100644 --- a/test/loanToDepositRatioLimits.js +++ b/test/loanToDepositRatioLimits.js @@ -73,7 +73,7 @@ contract("Loan to Deposit ratio tests", accounts => { const [interestEarnedBalance] = await Promise.all([ augmintToken.balanceOf(InterestEarnedAccount.address), // term (in sec), discountRate, loanCoverageRatio, minDisbursedAmount, defaultingFeePt, isActive - loanManager.addLoanProduct(60, 1000000, 1000000, 500, 5000, true), + loanManager.addLoanProduct(60, 1000000, 1000000, 500, 5000, true, 0), // (perTermInterest, durationInSecs, minimumLockAmount, isActive) locker.addLockProduct(lockPerTermInterest, 60, 100, true), monetarySupervisor.setLtdParams( diff --git a/test/loans.js b/test/loans.js index 469ea129..7cf33032 100644 --- a/test/loans.js +++ b/test/loans.js @@ -36,16 +36,17 @@ contract("Loans tests", accounts => { ltdParams.allowedDifferenceAmount ) ]); - // These neeed to be sequantial b/c product order assumed when retreving via getProducts - // term (in sec), discountRate, loanCoverageRatio, minDisbursedAmount (w/ 2 decimals), defaultingFeePt, isActive - await loanManager.addLoanProduct(86400, 970000, 850000, 3000, 50000, true); // notDue - await loanManager.addLoanProduct(60, 985000, 900000, 2000, 50000, true); // repaying - await loanManager.addLoanProduct(1, 970000, 850000, 1000, 50000, true); // defaulting - await loanManager.addLoanProduct(1, 990000, 990000, 1000, 50000, false); // disabledProduct - await loanManager.addLoanProduct(60, 1000000, 900000, 2000, 50000, true); // zeroInterest - await loanManager.addLoanProduct(60, 1100000, 900000, 2000, 50000, true); // negativeInterest - await loanManager.addLoanProduct(60, 990000, 1000000, 2000, 50000, true); // fullCoverage - await loanManager.addLoanProduct(60, 990000, 1200000, 2000, 50000, true); // moreCoverage + // These neeed to be sequential b/c product order assumed when retrieving via getProducts + // term (in sec), discountRate, loanCoverageRatio, minDisbursedAmount (w/ 2 decimals), defaultingFeePt, isActive, minCollateralRatio + await loanManager.addLoanProduct(86400, 970000, 850000, 3000, 50000, true, 0); // notDue + await loanManager.addLoanProduct(60, 985000, 900000, 2000, 50000, true, 0); // repaying + await loanManager.addLoanProduct(1, 970000, 850000, 1000, 50000, true, 0); // defaulting + await loanManager.addLoanProduct(1, 990000, 990000, 1000, 50000, false, 0); // disabledProduct + await loanManager.addLoanProduct(60, 1000000, 900000, 2000, 50000, true, 0); // zeroInterest + await loanManager.addLoanProduct(60, 1100000, 900000, 2000, 50000, true, 0); // negativeInterest + await loanManager.addLoanProduct(60, 990000, 1000000, 2000, 50000, true, 0); // fullCoverage + await loanManager.addLoanProduct(60, 990000, 1200000, 2000, 50000, true, 0); // moreCoverage + await loanManager.addLoanProduct(86400, 970000, 625000, 3000, 50000, true, 1200000); // with margin (collateral ratio: initial = 160%, minimum = 120%) (1/1.6 = 0.625) const [newProducts] = await Promise.all([ loanTestHelpers.getProductsInfo(prodCount, CHUNK_SIZE), @@ -59,7 +60,8 @@ contract("Loans tests", accounts => { products.zeroInterest, products.negativeInterest, products.fullCoverage, - products.moreCoverage + products.moreCoverage, + products.margin ] = newProducts; }); @@ -85,11 +87,11 @@ contract("Loans tests", accounts => { .sub(1) .div(prod.discountRate) .mul(1000000) - .round(0, BigNumber.ROUND_UP); + .round(0, BigNumber.ROUND_DOWN); const weiAmount = (await rates.convertToWei(tokenTestHelpers.peggedSymbol, loanAmount)) .div(prod.collateralRatio) .mul(1000000) - .round(0, BigNumber.ROUND_UP); + .round(0, BigNumber.ROUND_DOWN); await testHelpers.expectThrow(loanManager.newEthBackedLoan(prod.id, { from: accounts[0], value: weiAmount })); }); @@ -281,6 +283,7 @@ contract("Loans tests", accounts => { ); assert.equal(loan1Actual.productId.toNumber(), product.id); assert.equal(loan1Actual.state.toNumber(), loan1.state); + assert.equal(loan1Actual.isCollectable.toNumber(), 0); assert.equal(loan1Actual.maturity.toNumber(), loan1.maturity); assert.equal(loan1Actual.disbursementTime.toNumber(), loan1.maturity - product.term); assert.equal(loan1Actual.loanAmount.toNumber(), loan1.loanAmount); @@ -293,7 +296,8 @@ contract("Loans tests", accounts => { "0x" + loan2Actual.borrower.toString(16).padStart(40, "0"), // leading 0s if address starts with 0 loan2.borrower ); - assert.equal(loan2Actual.state.toNumber(), 2); // Defaulted (not collected) + assert.equal(loan2Actual.state.toNumber(), 0); // Open (defaulted but not yet collected) + assert.equal(loan2Actual.isCollectable.toNumber(), 1); }); it("Should list loans for one account from offset", async function() { @@ -324,6 +328,7 @@ contract("Loans tests", accounts => { ); assert.equal(loan1Actual.productId.toNumber(), product1.id); assert.equal(loan1Actual.state.toNumber(), loan1.state); + assert.equal(loan1Actual.isCollectable.toNumber(), 0); assert.equal(loan1Actual.maturity.toNumber(), loan1.maturity); assert.equal(loan1Actual.disbursementTime.toNumber(), loan1.maturity - product1.term); assert.equal(loan1Actual.loanAmount.toNumber(), loan1.loanAmount); @@ -331,7 +336,8 @@ contract("Loans tests", accounts => { const loan2Actual = loanInfo[1]; assert.equal(loan2Actual.id.toNumber(), loan2.id); - assert.equal(loan2Actual.state.toNumber(), 2); // Defaulted (not collected) + assert.equal(loan2Actual.state.toNumber(), 0); // Open (defaulted but not yet collected) + assert.equal(loan2Actual.isCollectable.toNumber(), 1); }); it("should only allow whitelisted loan contract to be used", async function() { @@ -345,7 +351,7 @@ contract("Loans tests", accounts => { await rates.setRate("EUR", 99800), await craftedLender.grantPermission(accounts[0], "StabilityBoard") ]); - await craftedLender.addLoanProduct(100000, 1000000, 1000000, 1000, 50000, true); + await craftedLender.addLoanProduct(100000, 1000000, 1000000, 1000, 50000, true, 0); // testing Lender not having "LoanManager" permission on monetarySupervisor: await testHelpers.expectThrow(craftedLender.newEthBackedLoan(0, { value: global.web3v1.utils.toWei("0.05") })); @@ -374,4 +380,70 @@ contract("Loans tests", accounts => { it("only allowed contract should call MonetarySupervisor.loanRepaymentNotification", async function() { await testHelpers.expectThrow(monetarySupervisor.loanRepaymentNotification(0, { from: accounts[0] })); }); + + // Margin tests: + // ============== + // initial rate = 99800 (token/eth) + // collateral = 0.05 (eth) + // collateral ratio: initial = 160%, minimum = 120% (1/1.6 = 0.625) + // + // 100% => 3118.75 (token) => @ 62375 (token/eth) + // 120% => 3742.5 (token) => @ 74850 (token/eth) => marginCallRate: 74832 (due to internal rounding in contract) + // 160% => 4990 (token) => @ 99800 (token/eth) + + it("tests loan margin numbers", async function() { + await rates.setRate("EUR", 99800); + const loan = await loanTestHelpers.createLoan( + this, + products.margin, + accounts[1], + global.web3v1.utils.toWei("0.05") + ); + + // assert event has proper numbers + assert.equal(loan.collateralAmount.toNumber(), 5e16); // = 0.05 (eth) + assert.equal(loan.tokenValue.toNumber(), 4990); // = 99800 * 0.05 (token) + assert.equal(loan.repaymentAmount.toNumber(), 3118); // = 4990 / 1.6, round down (token) + assert.equal(loan.loanAmount.toNumber(), 3025); // = 3118 * 0.97, round up (token) + assert.equal(loan.interestAmount.toNumber(), 93); // = 3118 - 3025 (token) + assert.equal(loan.state, 0); // = "Open" + + // assert LoanData has proper numbers stored + const loanInfo = loanTestHelpers.parseLoansInfo(await loanManager.getLoans(loan.id, 1)); + assert.equal(loanInfo[0].collateralAmount.toNumber(), 5e16); + assert.equal(loanInfo[0].repaymentAmount.toNumber(), 3118); + assert.equal(loanInfo[0].state.toNumber(), 0); + assert.equal(loanInfo[0].loanAmount.toNumber(), 3025); + assert.equal(loanInfo[0].interestAmount.toNumber(), 93); + assert.equal(loanInfo[0].marginCallRate.toNumber(), 74832); // = 3118 * 1.2 / 0.05 (token/eth) + assert.equal(loanInfo[0].isCollectable.toNumber(), 0); // = false + + // every number stays the same below margin, only isCollectable will be true + await rates.setRate("EUR", 72000); + const loanInfo2 = loanTestHelpers.parseLoansInfo(await loanManager.getLoans(loan.id, 1)); + assert.equal(loanInfo2[0].collateralAmount.toNumber(), 5e16); + assert.equal(loanInfo2[0].repaymentAmount.toNumber(), 3118); + assert.equal(loanInfo2[0].state.toNumber(), 0); + assert.equal(loanInfo2[0].loanAmount.toNumber(), 3025); + assert.equal(loanInfo2[0].interestAmount.toNumber(), 93); + assert.equal(loanInfo2[0].marginCallRate.toNumber(), 74832); + assert.equal(loanInfo2[0].isCollectable.toNumber(), 1); // = true + + // add extra collateral to get above margin + const tx = await loanManager.addExtraCollateral(loan.id, { + from: accounts[1], + value: global.web3v1.utils.toWei("0.05") + }); + testHelpers.logGasUse(this, tx, "addExtraCollateral"); + + // collateralAmount should double up, marginCallRate get halved + const loanInfo3 = loanTestHelpers.parseLoansInfo(await loanManager.getLoans(loan.id, 1)); + assert.equal(loanInfo3[0].collateralAmount.toNumber(), 2 * 5e16); + assert.equal(loanInfo3[0].repaymentAmount.toNumber(), 3118); + assert.equal(loanInfo3[0].state.toNumber(), 0); + assert.equal(loanInfo3[0].loanAmount.toNumber(), 3025); + assert.equal(loanInfo3[0].interestAmount.toNumber(), 93); + assert.equal(loanInfo3[0].marginCallRate.toNumber(), 74832 / 2); + assert.equal(loanInfo3[0].isCollectable.toNumber(), 0); + }); }); diff --git a/truffle.js b/truffle.js index b63e24f9..286d1264 100644 --- a/truffle.js +++ b/truffle.js @@ -19,7 +19,6 @@ module.exports = { host: "localhost", port: 8545, network_id: "999", - gas: 4707806, gasPrice: 1000000000 // 1 GWEI }, coverage: { From e5af0331fc82f60b7da366d2710904a8ef87f99d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 6 Jun 2019 14:37:30 +0100 Subject: [PATCH 10/38] Bump handlebars from 4.1.1 to 4.1.2 (#234) Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.1.1 to 4.1.2. - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.1.1...v4.1.2) Signed-off-by: dependabot[bot] --- yarn.lock | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8ab2aeff..1e056620 100644 --- a/yarn.lock +++ b/yarn.lock @@ -635,16 +635,11 @@ commander@2.11.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== -commander@2.20.0, commander@^2.8.1: +commander@2.20.0, commander@^2.8.1, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - commander@~2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" @@ -1657,9 +1652,9 @@ growl@1.10.3: integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== handlebars@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.1.tgz#6e4e41c18ebe7719ae4d38e5aca3d32fa3dd23d3" - integrity sha512-3Zhi6C0euYZL5sM0Zcy7lInLXKQ+YLcF/olbN010mzGQ4XVm50JeyBnMqofHh696GrciGruC7kCcApPDJvVgwA== + version "4.1.2" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" + integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== dependencies: neo-async "^2.6.0" optimist "^0.6.1" @@ -2473,9 +2468,9 @@ negotiator@0.6.1: integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= neo-async@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" - integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== nice-try@^1.0.4: version "1.0.5" @@ -3736,11 +3731,11 @@ typedarray-to-buffer@^3.1.2, typedarray-to-buffer@^3.1.5: is-typedarray "^1.0.0" uglify-js@^3.1.4: - version "3.5.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.3.tgz#d490bb5347f23025f0c1bc0dee901d98e4d6b063" - integrity sha512-rIQPT2UMDnk4jRX+w4WO84/pebU2jiLsjgIyrCktYgSvx28enOE3iYQMr+BD1rHiitWnDmpu0cY/LfIEpKcjcw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" + integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== dependencies: - commander "~2.19.0" + commander "~2.20.0" source-map "~0.6.1" ultron@~1.1.0: From 648406aad80d0838dae6ca4262856c69c48d3c19 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 6 Jun 2019 20:01:56 +0100 Subject: [PATCH 11/38] Bump fstream from 1.0.11 to 1.0.12 (#232) Bumps [fstream](https://github.com/npm/fstream) from 1.0.11 to 1.0.12. - [Release notes](https://github.com/npm/fstream/releases) - [Commits](https://github.com/npm/fstream/compare/v1.0.11...v1.0.12) --- yarn.lock | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1e056620..86404ee8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1505,9 +1505,9 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fstream@^1.0.2, fstream@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= + 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" @@ -1581,7 +1581,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.2, glob@^7.1.3: +glob@^7.0.0, glob@^7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -1593,6 +1593,18 @@ glob@^7.0.0, glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global@~4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" From c22dcdf0c82a3e4fdfde04802813d064a698372e Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 6 Jun 2019 20:09:27 +0100 Subject: [PATCH 12/38] =?UTF-8?q?Update=20truffle-hdwallet-provider=20to?= =?UTF-8?q?=20the=20latest=20version=20=F0=9F=9A=80=20(#231)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(package): update truffle-hdwallet-provider to version 1.0.10 * chore(package): update lockfile yarn.lock --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 49641765..3e6fea28 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "solidity-coverage": "0.5.11", "stringifier": "2.0.0", "truffle": "4.1.14", - "truffle-hdwallet-provider": "1.0.9", + "truffle-hdwallet-provider": "1.0.10", "wait-on": "3.2.0", "web3v1": "npm:web3@1.0.0-beta.34" }, diff --git a/yarn.lock b/yarn.lock index 86404ee8..ccc573af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3679,10 +3679,10 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -truffle-hdwallet-provider@1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.9.tgz#1e7f239631ada08cacd7cdf3fdbc39f2033e04e7" - integrity sha512-1PfQgyOOapirCK8L/EiApzAo6mhlrnKi6GdXvNX2Gt/635QtYlGPwdFC6zMm5plEcOegdCz2CgbhXI6Fdbp98A== +truffle-hdwallet-provider@1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.10.tgz#74781ab328b7c41b505a5dc76249a4e75bc287a8" + integrity sha512-nP66WEuboye8lZblXhVaoCieubBxcCqQFpR8k1CsFq016iWDiPypPiqY8X4jdSTKNOJ8mfa4yOmQr9cGt20bzQ== dependencies: any-promise "^1.3.0" bindings "^1.3.1" From 1a847c87cdf141733985a460c1c7c5fa6b7491dc Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 6 Jun 2019 20:16:13 +0100 Subject: [PATCH 13/38] =?UTF-8?q?Update=20coveralls=20to=20the=20latest=20?= =?UTF-8?q?version=20=F0=9F=9A=80=20(#235)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(package): update coveralls to version 3.0.4 * chore(package): update lockfile yarn.lock --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3e6fea28..9bffd773 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "abiniser": "0.5.1", "babel-register": "6.26.0", "bignumber.js": "5.0.0", - "coveralls": "3.0.3", + "coveralls": "3.0.4", "dotenv": "8.0.0", "eslint": "5.16.0", "ganache-cli": "6.4.3", diff --git a/yarn.lock b/yarn.lock index ccc573af..36e070dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -702,10 +702,10 @@ cors@^2.8.1: object-assign "^4" vary "^1" -coveralls@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.3.tgz#83b1c64aea1c6afa69beaf50b55ac1bc4d13e2b8" - integrity sha512-viNfeGlda2zJr8Gj1zqXpDMRjw9uM54p7wzZdvLRyOgnAfCe974Dq4veZkjJdxQXbmdppu6flEajFYseHYaUhg== +coveralls@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.4.tgz#f50233c9c62fd0973f710fce85fd19dba24cff4b" + integrity sha512-eyqUWA/7RT0JagiL0tThVhjbIjoiEUyWCjtUJoOPcWoeofP5WK/jb2OJYoBFrR6DvplR+AxOyuBqk4JHkk5ykA== dependencies: growl "~> 1.10.0" js-yaml "^3.11.0" From 522eb25f594f55c7bac7d99eac34fb5ba75af284 Mon Sep 17 00:00:00 2001 From: Peter Petrovics Date: Fri, 7 Jun 2019 16:07:34 +0100 Subject: [PATCH 14/38] SB script dry execution (#237) * code formatting * dryExecute * dryExecute to return delegatecall revert reason * dryExecute: return void, copy only on revert, comments * dryExecute: minor code simplification * dryExecute: extra tests with no reason&out of gas --- contracts/generic/MultiSig.sol | 47 +++++--- .../SB_revertingNoReasonScript.sol | 15 +++ test/stabilityBoardProxy.js | 110 +++++++++++++++--- 3 files changed, 144 insertions(+), 28 deletions(-) create mode 100644 contracts/scriptTests/SB_revertingNoReasonScript.sol diff --git a/contracts/generic/MultiSig.sol b/contracts/generic/MultiSig.sol index c4abfd8a..68610d5d 100644 --- a/contracts/generic/MultiSig.sol +++ b/contracts/generic/MultiSig.sol @@ -84,16 +84,23 @@ contract MultiSig { Script storage script = scripts[scriptAddress]; require(script.state == ScriptState.Approved, "script state must be Approved"); - // passing scriptAddress to allow called script access its own public fx-s if needed - if (scriptAddress.delegatecall.gas(gasleft() - 23000) - (abi.encodeWithSignature("execute(address)", scriptAddress))) { - script.state = ScriptState.Done; - result = true; - } else { - script.state = ScriptState.Failed; - result = false; + result = _execute(scriptAddress); + } + /* Function to test scripts without signatures - always reverts. + It's even possible to test scripts without deployment if script deployed and dry run on a ganache */ + function dryExecute(address scriptAddress) public { + bool result = _execute(scriptAddress); + + if(!result) { // if delegatecall failed then revert with the revert returndata + // solium-disable-next-line security/no-inline-assembly + assembly { + let ptr := mload(0x40) // starts from the "free memory pointer" + returndatacopy(ptr, 0, returndatasize) // retreive delegatecall revert reason message + revert(ptr, returndatasize) // revert with the reason message from delegeatecall + } } - emit ScriptExecuted(scriptAddress, result); + + revert("dryExecute success"); } function cancelScript(address scriptAddress) public { @@ -110,7 +117,7 @@ contract MultiSig { /* requires quorum so it's callable only via a script executed by this contract */ function addSigners(address[] signers) public { require(msg.sender == address(this), "only callable via MultiSig"); - for (uint i= 0; i < signers.length; i++) { + for (uint i = 0; i < signers.length; i++) { if (!isSigner[signers[i]]) { require(signers[i] != address(0), "new signer must not be 0x0"); activeSignersCount++; @@ -124,7 +131,7 @@ contract MultiSig { /* requires quorum so it's callable only via a script executed by this contract */ function removeSigners(address[] signers) public { require(msg.sender == address(this), "only callable via MultiSig"); - for (uint i= 0; i < signers.length; i++) { + for (uint i = 0; i < signers.length; i++) { if (isSigner[signers[i]]) { require(activeSignersCount > 1, "must not remove last signer"); activeSignersCount--; @@ -137,7 +144,7 @@ contract MultiSig { /* implement it in derived contract */ function checkQuorum(uint signersCount) internal view returns(bool isQuorum); - function getAllSignersCount() view external returns (uint allSignersCount) { + function getAllSignersCount() external view returns (uint allSignersCount) { return allSigners.length; } @@ -153,7 +160,7 @@ contract MultiSig { return response; } - function getScriptsCount() view external returns (uint scriptsCount) { + function getScriptsCount() external view returns (uint scriptsCount) { return scriptAddresses.length; } @@ -170,4 +177,18 @@ contract MultiSig { } return response; } + + function _execute(address scriptAddress) private returns (bool result) { + Script storage script = scripts[scriptAddress]; + // passing scriptAddress to allow called script access its own public fx-s if needed + if (scriptAddress.delegatecall.gas(gasleft() - 23000) + (abi.encodeWithSignature("execute(address)", scriptAddress))) { + script.state = ScriptState.Done; + result = true; + } else { + script.state = ScriptState.Failed; + result = false; + } + emit ScriptExecuted(scriptAddress, result); + } } diff --git a/contracts/scriptTests/SB_revertingNoReasonScript.sol b/contracts/scriptTests/SB_revertingNoReasonScript.sol new file mode 100644 index 00000000..f478752b --- /dev/null +++ b/contracts/scriptTests/SB_revertingNoReasonScript.sol @@ -0,0 +1,15 @@ +/* test script to simulate revert() in script execute() to multiSig +*/ + +pragma solidity 0.4.24; + + +contract SB_revertingNoReasonScript { + + function execute(SB_revertingNoReasonScript self) pure external { + require(address(self) != 0, "just to silence unused var compiler warning"); + // solium-disable-next-line error-reason + revert(); + } + +} diff --git a/test/stabilityBoardProxy.js b/test/stabilityBoardProxy.js index 6fd00b1e..c020ea86 100644 --- a/test/stabilityBoardProxy.js +++ b/test/stabilityBoardProxy.js @@ -3,6 +3,7 @@ const SB_addSigners = artifacts.require("scriptTests/SB_addSigners.sol"); const SB_addAndRemoveSigners = artifacts.require("scriptTests/SB_addAndRemoveSigners.sol"); const SB_removeSigners = artifacts.require("scriptTests/SB_removeSigners.sol"); const SB_revertingScript = artifacts.require("scriptTests/SB_revertingScript.sol"); +const SB_revertingNoReasonScript = artifacts.require("scriptTests/SB_revertingNoReasonScript.sol"); const SB_outOfGasScript = artifacts.require("scriptTests/SB_outOfGasScript.sol"); const SB_cancelScript = artifacts.require("scriptTests/SB_cancelScript.sol"); const testHelpers = require("./helpers/testHelpers.js"); @@ -20,10 +21,12 @@ async function addSigners(newSigners) { stabilityBoardProxy.getSigners(0, CHUNK_SIZE) ]); - const signTxs = currentSigners.filter(signerTuple => !signerTuple[1].eq(0)).map(tuple => { - const signerAddress = "0x" + tuple[1].toString(16).padStart(40, "0"); - return stabilityBoardProxy.sign(addSignerScript.address, { from: signerAddress }); - }); + const signTxs = currentSigners + .filter(signerTuple => !signerTuple[1].eq(0)) + .map(tuple => { + const signerAddress = "0x" + tuple[1].toString(16).padStart(40, "0"); + return stabilityBoardProxy.sign(addSignerScript.address, { from: signerAddress }); + }); const signCount = Math.floor(signTxs.length / 2) + 1; await Promise.all(signTxs.slice(0, signCount)); @@ -295,9 +298,7 @@ contract("StabilityBoardProxy", accounts => { // create , sign & execute a script to cancel our removeSignerScript const cancelScript = await SB_cancelScript.new(removeSignerScript.address); await Promise.all( - [...newSigners, accounts[0]].map(signer => - stabilityBoardProxy.sign(cancelScript.address, { from: signer }) - ) + [...newSigners, accounts[0]].map(signer => stabilityBoardProxy.sign(cancelScript.address, { from: signer })) ); const cancelTx = await stabilityBoardProxy.execute(cancelScript.address, { from: accounts[0] }); @@ -428,14 +429,16 @@ contract("StabilityBoardProxy", accounts => { stabilityBoardProxy.getScriptsCount().then(res => res.toNumber()), stabilityBoardProxy.getScripts(scriptCountBefore, CHUNK_SIZE) ]); - const scripts = scriptsArray.filter(item => !item[1].eq(0)).map(item => { - return { - index: item[0].toNumber(), - address: "0x" + item[1].toString(16).padStart(40, "0"), - state: item[2].toNumber(), - signCount: item[3].toNumber() - }; - }); + const scripts = scriptsArray + .filter(item => !item[1].eq(0)) + .map(item => { + return { + index: item[0].toNumber(), + address: "0x" + item[1].toString(16).padStart(40, "0"), + state: item[2].toNumber(), + signCount: item[3].toNumber() + }; + }); assert.equal(scripts.length, 3); assert.equal(scriptsCountAfter, scriptCountBefore + 3); @@ -471,4 +474,81 @@ contract("StabilityBoardProxy", accounts => { it("should not call removeSigners directly", async function() { testHelpers.expectThrow(stabilityBoardProxy.removeSigners([accounts[0]])); }); + + it("should dryExecute a script (success)", async function() { + const addSignerScript = await SB_addAndRemoveSigners.new(); + + try { + await stabilityBoardProxy.dryExecute(addSignerScript.address); + assert.fail("Should be rejected"); + } catch (error) { + assert.include(error.message, "VM Exception while processing transaction: revert dryExecute success"); + } + + let [allSignersCountAfter, script] = await Promise.all([ + stabilityBoardProxy.getAllSignersCount(), + stabilityBoardProxyWeb3Contract.methods.scripts(addSignerScript.address).call(), + testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted") + ]); + + assert.equal(script.state, scriptState.New); + assert.equal(allSignersCountAfter.toNumber(), 1); + }); + + it("should dryExecute a script (revert with reason)", async function() { + const revertingScript = await SB_revertingScript.new(); + + try { + await stabilityBoardProxy.dryExecute(revertingScript.address); + assert.fail("Should be rejected"); + } catch (error) { + assert.include( + error.message, + "VM Exception while processing transaction: revert intentional revert for test" + ); + } + + let [script] = await Promise.all([ + stabilityBoardProxyWeb3Contract.methods.scripts(revertingScript.address).call(), + testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted") + ]); + + assert.equal(script.state, scriptState.New); + }); + + it("should dryExecute a script (revert no reason)", async function() { + const revertingNoReasonScript = await SB_revertingNoReasonScript.new(); + + try { + await stabilityBoardProxy.dryExecute(revertingNoReasonScript.address, { gas: 200000 }); + assert.fail("Should be rejected"); + } catch (error) { + assert.equal(error.message, "VM Exception while processing transaction: revert"); + } + + let [script] = await Promise.all([ + stabilityBoardProxyWeb3Contract.methods.scripts(revertingNoReasonScript.address).call(), + testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted") + ]); + + assert.equal(script.state, scriptState.New); + }); + + it("should dryExecute a script (out of gas)", async function() { + const outOfGasScript = await SB_outOfGasScript.new(); + + try { + await stabilityBoardProxy.dryExecute(outOfGasScript.address, { gas: 200000 }); + assert.fail("Should be rejected"); + } catch (error) { + assert.equal(error.message, "VM Exception while processing transaction: revert"); + } + + let [script] = await Promise.all([ + stabilityBoardProxyWeb3Contract.methods.scripts(outOfGasScript.address).call(), + testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted") + ]); + + assert.equal(script.state, scriptState.New); + }); }); From 24343d4a008d67f646a668fdd098411b22bb2888 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" <23040076+greenkeeper[bot]@users.noreply.github.com> Date: Thu, 4 Jul 2019 16:10:51 +0100 Subject: [PATCH 15/38] =?UTF-8?q?Update=20eslint=20to=20the=20latest=20ver?= =?UTF-8?q?sion=20=F0=9F=9A=80=20(#240)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(package): update eslint to version 6.0.0 * chore(package): update lockfile yarn.lock --- package.json | 2 +- yarn.lock | 69 ++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 9bffd773..b44cc949 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "bignumber.js": "5.0.0", "coveralls": "3.0.4", "dotenv": "8.0.0", - "eslint": "5.16.0", + "eslint": "6.0.0", "ganache-cli": "6.4.3", "moment": "2.22.2", "random-seed": "0.3.0", diff --git a/yarn.lock b/yarn.lock index 36e070dd..d478622d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -65,7 +65,7 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= -ajv@^6.5.5, ajv@^6.9.1: +ajv@^6.10.0, ajv@^6.5.5, ajv@^6.9.1: version "6.10.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== @@ -1094,13 +1094,13 @@ eslint-visitor-keys@^1.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== -eslint@5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== +eslint@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.0.0.tgz#9223f19223de73b4ed730e11bff44a376b65844d" + integrity sha512-SrrIfcd4tOgsspOKTSwamuTOAMZOUigHQhVMrzNjz4/B9Za6SHQDIocMIyIDfwDgx6MhS15nS6HC8kumCV2qBQ== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" + ajv "^6.10.0" chalk "^2.1.0" cross-spawn "^6.0.5" debug "^4.0.1" @@ -1108,18 +1108,19 @@ eslint@5.16.0: eslint-scope "^4.0.3" eslint-utils "^1.3.1" eslint-visitor-keys "^1.0.0" - espree "^5.0.1" + espree "^6.0.0" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" + glob-parent "^3.1.0" globals "^11.7.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" inquirer "^6.2.2" - js-yaml "^3.13.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" lodash "^4.17.11" @@ -1127,7 +1128,6 @@ eslint@5.16.0: mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" - path-is-inside "^1.0.2" progress "^2.0.0" regexpp "^2.0.1" semver "^5.5.1" @@ -1136,10 +1136,10 @@ eslint@5.16.0: table "^5.2.3" text-table "^0.2.0" -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== +espree@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.0.0.tgz#716fc1f5a245ef5b9a7fdb1d7b0d3f02322e75f6" + integrity sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q== dependencies: acorn "^6.0.7" acorn-jsx "^5.0.0" @@ -1558,6 +1558,14 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -1581,7 +1589,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.2: +glob@^7.0.0: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -1936,6 +1944,11 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" @@ -1960,6 +1973,20 @@ is-function@^1.0.1: resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" @@ -2098,7 +2125,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@3.x, js-yaml@^3.11.0, js-yaml@^3.13.0: +js-yaml@3.x, js-yaml@^3.11.0, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -2695,6 +2722,11 @@ parseurl@~1.3.2: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -2712,11 +2744,6 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" From a8a464a67aed9429f7beb791c0fcdcdadac4b741 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" <23040076+greenkeeper[bot]@users.noreply.github.com> Date: Thu, 4 Jul 2019 16:22:46 +0100 Subject: [PATCH 16/38] =?UTF-8?q?Update=20ganache-cli=20to=20the=20latest?= =?UTF-8?q?=20version=20=F0=9F=9A=80=20(#238)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(package): update ganache-cli to version 6.4.4 * chore(package): update lockfile yarn.lock --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b44cc949..c283fd8b 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "coveralls": "3.0.4", "dotenv": "8.0.0", "eslint": "6.0.0", - "ganache-cli": "6.4.3", + "ganache-cli": "6.4.4", "moment": "2.22.2", "random-seed": "0.3.0", "solidity-coverage": "0.5.11", diff --git a/yarn.lock b/yarn.lock index d478622d..eba79746 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1524,10 +1524,10 @@ functional-red-black-tree@^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-cli@6.4.3: - version "6.4.3" - resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.4.3.tgz#2fb66c10f9df157b2cd9aeaf007a9fd47cd79cb1" - integrity sha512-3G+CK4ojipDvxQHlpX8PjqaOMRWVcaLZZSW97Bv7fdcPTXQwkji2yY5CY6J12Atiub4M4aJc0va+q3HXeerbIA== +ganache-cli@6.4.4: + version "6.4.4" + resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.4.4.tgz#9772bba8585d6e2049bd85adf24369c1cc165170" + integrity sha512-JWygbyZuM2GQl2ZvU7tBkjpgJaKE/XEtB99ech17XTouuqLU5rBcyO3sMb/L83wAtzr0gBnTgenIBl+OeREpJw== dependencies: bn.js "4.11.8" source-map-support "0.5.9" From fd12393fe35c5912307fdb9df2bd049f7c47fb85 Mon Sep 17 00:00:00 2001 From: Peter Petrovics Date: Thu, 4 Jul 2019 16:41:30 +0100 Subject: [PATCH 17/38] Greenkeeper/truffle hdwallet provider 1.0.13 (#241) * chore(package): update truffle-hdwallet-provider to version 1.0.13 Closes #239 * chore(package): update lockfile yarn.lock --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c283fd8b..6b029b66 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "solidity-coverage": "0.5.11", "stringifier": "2.0.0", "truffle": "4.1.14", - "truffle-hdwallet-provider": "1.0.10", + "truffle-hdwallet-provider": "1.0.13", "wait-on": "3.2.0", "web3v1": "npm:web3@1.0.0-beta.34" }, diff --git a/yarn.lock b/yarn.lock index eba79746..d3d66616 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3706,10 +3706,10 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -truffle-hdwallet-provider@1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.10.tgz#74781ab328b7c41b505a5dc76249a4e75bc287a8" - integrity sha512-nP66WEuboye8lZblXhVaoCieubBxcCqQFpR8k1CsFq016iWDiPypPiqY8X4jdSTKNOJ8mfa4yOmQr9cGt20bzQ== +truffle-hdwallet-provider@1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.13.tgz#be0d9338cc60da7d6419a5fc0f02f0d42e7e2ef9" + integrity sha512-I4qkKKl8ikwrCjOuTU1YBltcAWWffy4cnVH9QpVGEqTjArYPk40HWzwr4vcfr+nPNBlYyTyMUEbGt+4iouLznQ== dependencies: any-promise "^1.3.0" bindings "^1.3.1" From ddde04ebafdfb4508d58e218b34ff3858549c929 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= <38250343+treerz@users.noreply.github.com> Date: Fri, 9 Aug 2019 16:30:36 +0200 Subject: [PATCH 18/38] loan manager improvements (#236) - add currentRate to LoanManager events (NewLoan, LoanRepayed, LoanCollected) - fix inverted collateralRatio, rename to initialCollateralRatio - add minRate to newEthBackedLoan - emit LoanChanged event on addExtraCollateral --- .travis.yml | 2 +- abiniser.json | 1 - ...ABI_753a73f4b2140507197a8f80bff47b40.json} | 63 +++- ..._ABI_875b3d71bd113c550827112698f839cd.json | 346 ++++++++++++++++++ ..._ABI_875b3d71bd113c550827112698f839cd.json | 346 ++++++++++++++++++ .../deployments/4/LoanManager_DEPLOYS.json | 19 +- .../4/StabilityBoardProxy_DEPLOYS.json | 19 +- .../deployments/999/LoanManager_DEPLOYS.json | 36 +- .../999/PreTokenProxy_DEPLOYS.json | 19 +- .../999/StabilityBoardProxy_DEPLOYS.json | 19 +- contracts/LoanManager.sol | 54 +-- .../localTest/localTest_initialSetup.sol | 24 +- .../Rinkeby_0009_migrateToNewProxy.sol | 148 ++++++++ .../Rinkeby_0010_setupNewLoanManager.sol | 56 +++ .../Rinkeby_0011_setupSbProxySigners.sol | 18 + .../rinkeby/Rinkeby_0012_noTransferFee.sol | 19 + .../legacy/1.0.12/LoanManager_1_0_12.sol | 320 ++++++++++++++++ .../1001_topup_interestEarnedAccount.js | 2 +- migrations/1003_add_legacyContracts.js | 17 +- migrations/2000_setRateDefault.js | 12 + migrations/2001_setRateLow.js | 12 + migrations/2002_setRateHigh.js | 12 + package.json | 13 +- ...deploy_Rinkeby_0011_setupSbProxySigners.js | 7 + .../11_deploy_Rinkeby_0012_noTransferFee.js | 7 + .../7_deploy_loanmanager_and_sbproxy.js | 17 + ...8_deploy_Rinkeby_0009_migrateToNewProxy.js | 7 + ...deploy_Rinkeby_0010_setupNewLoanManager.js | 7 + scripts/runganache_comp.sh | 10 + test/helpers/loanTestHelpers.js | 24 +- test/loanCollection.js | 40 +- test/loanManager.js | 16 +- test/loanToDepositRatioLimits.js | 14 +- test/loans.js | 57 ++- 34 files changed, 1640 insertions(+), 143 deletions(-) rename abiniser/abis/{LoanManager_ABI_1a18d349e2ea55585c57e2125d99dad9.json => LoanManager_ABI_753a73f4b2140507197a8f80bff47b40.json} (91%) create mode 100644 abiniser/abis/PreTokenProxy_ABI_875b3d71bd113c550827112698f839cd.json create mode 100644 abiniser/abis/StabilityBoardProxy_ABI_875b3d71bd113c550827112698f839cd.json create mode 100644 contracts/SB_scripts/rinkeby/Rinkeby_0009_migrateToNewProxy.sol create mode 100644 contracts/SB_scripts/rinkeby/Rinkeby_0010_setupNewLoanManager.sol create mode 100644 contracts/SB_scripts/rinkeby/Rinkeby_0011_setupSbProxySigners.sol create mode 100644 contracts/SB_scripts/rinkeby/Rinkeby_0012_noTransferFee.sol create mode 100644 contracts/legacy/1.0.12/LoanManager_1_0_12.sol create mode 100644 migrations/2000_setRateDefault.js create mode 100644 migrations/2001_setRateLow.js create mode 100644 migrations/2002_setRateHigh.js create mode 100644 rinkeby_migrations/10_deploy_Rinkeby_0011_setupSbProxySigners.js create mode 100644 rinkeby_migrations/11_deploy_Rinkeby_0012_noTransferFee.js create mode 100644 rinkeby_migrations/7_deploy_loanmanager_and_sbproxy.js create mode 100644 rinkeby_migrations/8_deploy_Rinkeby_0009_migrateToNewProxy.js create mode 100644 rinkeby_migrations/9_deploy_Rinkeby_0010_setupNewLoanManager.js create mode 100755 scripts/runganache_comp.sh diff --git a/.travis.yml b/.travis.yml index 84b21382..e4a0a5e1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,7 +32,7 @@ after_success: - echo after_success TRAVIS_BRANCH=$TRAVIS_BRANCH TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST TRAVIS_TAG=$TRAVIS_TAG TRAVIS_PULL_REQUEST_BRANCH=$TRAVIS_PULL_REQUEST_BRANCH TRAVIS_BUILD_NUMBER=$TRAVIS_BUILD_NUMBER TRAVIS_COMMIT=$TRAVIS_COMMIT ; - | if [ $TRAVIS_PULL_REQUEST == "false" ]; then - if [ $TRAVIS_BRANCH == "master" ] || [[ $TRAVIS_TAG =~ v([0-9]+)\.([0-9]+)\.([0-9]+) ]]; then + if [ $TRAVIS_BRANCH == "master" ] || [[ $TRAVIS_TAG =~ v([0-9]+)\.([0-9]+)\.([0-9]+)((-|_)\S*)? ]]; then echo $DOCKER_PASSWORD | docker login --username $DOCKER_USERNAME --password-stdin ; yarn docker:tag:build ; if [ ! -z $TRAVIS_TAG ]; then diff --git a/abiniser.json b/abiniser.json index e8e83d3a..44a2f761 100644 --- a/abiniser.json +++ b/abiniser.json @@ -1,6 +1,5 @@ { "truffleContractFiles": [ - "SafeMath.json", "Migrations.json", "Rates.json", "AugmintReserves.json", diff --git a/abiniser/abis/LoanManager_ABI_1a18d349e2ea55585c57e2125d99dad9.json b/abiniser/abis/LoanManager_ABI_753a73f4b2140507197a8f80bff47b40.json similarity index 91% rename from abiniser/abis/LoanManager_ABI_1a18d349e2ea55585c57e2125d99dad9.json rename to abiniser/abis/LoanManager_ABI_753a73f4b2140507197a8f80bff47b40.json index 1d16054d..6c9b34f6 100644 --- a/abiniser/abis/LoanManager_ABI_1a18d349e2ea55585c57e2125d99dad9.json +++ b/abiniser/abis/LoanManager_ABI_753a73f4b2140507197a8f80bff47b40.json @@ -1,7 +1,7 @@ { "contractName": "LoanManager", - "abiHash": "1a18d349e2ea55585c57e2125d99dad9", - "generatedAt": "2019-06-06T11:06:21.107Z", + "abiHash": "753a73f4b2140507197a8f80bff47b40", + "generatedAt": "2019-07-02T09:59:47.884Z", "abi": [ { "constant": true, @@ -118,7 +118,7 @@ "type": "uint32" }, { - "name": "collateralRatio", + "name": "initialCollateralRatio", "type": "uint32" }, { @@ -305,11 +305,48 @@ "indexed": false, "name": "maturity", "type": "uint40" + }, + { + "indexed": false, + "name": "currentRate", + "type": "uint256" } ], "name": "NewLoan", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "loanId", + "type": "uint256" + }, + { + "indexed": true, + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "name": "collateralAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "repaymentAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "currentRate", + "type": "uint256" + } + ], + "name": "LoanChanged", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -348,12 +385,17 @@ "type": "uint256" }, { - "indexed": false, + "indexed": true, "name": "borrower", "type": "address" + }, + { + "indexed": false, + "name": "currentRate", + "type": "uint256" } ], - "name": "LoanRepayed", + "name": "LoanRepaid", "type": "event" }, { @@ -383,6 +425,11 @@ "indexed": false, "name": "defaultingFee", "type": "uint256" + }, + { + "indexed": false, + "name": "currentRate", + "type": "uint256" } ], "name": "LoanCollected", @@ -451,7 +498,7 @@ "type": "uint32" }, { - "name": "collateralRatio", + "name": "initialCollateralRatio", "type": "uint32" }, { @@ -501,6 +548,10 @@ { "name": "productId", "type": "uint32" + }, + { + "name": "minRate", + "type": "uint256" } ], "name": "newEthBackedLoan", diff --git a/abiniser/abis/PreTokenProxy_ABI_875b3d71bd113c550827112698f839cd.json b/abiniser/abis/PreTokenProxy_ABI_875b3d71bd113c550827112698f839cd.json new file mode 100644 index 00000000..0aacec87 --- /dev/null +++ b/abiniser/abis/PreTokenProxy_ABI_875b3d71bd113c550827112698f839cd.json @@ -0,0 +1,346 @@ +{ + "contractName": "PreTokenProxy", + "abiHash": "875b3d71bd113c550827112698f839cd", + "generatedAt": "2019-07-02T09:59:47.919Z", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "offset", + "type": "uint256" + }, + { + "name": "chunkSize", + "type": "uint16" + } + ], + "name": "getSigners", + "outputs": [ + { + "name": "", + "type": "uint256[3][]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "offset", + "type": "uint256" + }, + { + "name": "chunkSize", + "type": "uint16" + } + ], + "name": "getScripts", + "outputs": [ + { + "name": "", + "type": "uint256[4][]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "activeSignersCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "scriptAddress", + "type": "address" + } + ], + "name": "cancelScript", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "scriptAddress", + "type": "address" + } + ], + "name": "execute", + "outputs": [ + { + "name": "result", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isSigner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "signers", + "type": "address[]" + } + ], + "name": "removeSigners", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getScriptsCount", + "outputs": [ + { + "name": "scriptsCount", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "scriptAddresses", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "scripts", + "outputs": [ + { + "name": "state", + "type": "uint8" + }, + { + "name": "signCount", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getAllSignersCount", + "outputs": [ + { + "name": "allSignersCount", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "allSigners", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "scriptAddress", + "type": "address" + } + ], + "name": "dryExecute", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "signers", + "type": "address[]" + } + ], + "name": "addSigners", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "scriptAddress", + "type": "address" + } + ], + "name": "sign", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "signer", + "type": "address" + } + ], + "name": "SignerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "signer", + "type": "address" + } + ], + "name": "SignerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "scriptAddress", + "type": "address" + }, + { + "indexed": false, + "name": "signer", + "type": "address" + } + ], + "name": "ScriptSigned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "scriptAddress", + "type": "address" + } + ], + "name": "ScriptApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "scriptAddress", + "type": "address" + } + ], + "name": "ScriptCancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "scriptAddress", + "type": "address" + }, + { + "indexed": false, + "name": "result", + "type": "bool" + } + ], + "name": "ScriptExecuted", + "type": "event" + } + ] +} \ No newline at end of file diff --git a/abiniser/abis/StabilityBoardProxy_ABI_875b3d71bd113c550827112698f839cd.json b/abiniser/abis/StabilityBoardProxy_ABI_875b3d71bd113c550827112698f839cd.json new file mode 100644 index 00000000..fd7c6837 --- /dev/null +++ b/abiniser/abis/StabilityBoardProxy_ABI_875b3d71bd113c550827112698f839cd.json @@ -0,0 +1,346 @@ +{ + "contractName": "StabilityBoardProxy", + "abiHash": "875b3d71bd113c550827112698f839cd", + "generatedAt": "2019-07-02T09:59:47.916Z", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "offset", + "type": "uint256" + }, + { + "name": "chunkSize", + "type": "uint16" + } + ], + "name": "getSigners", + "outputs": [ + { + "name": "", + "type": "uint256[3][]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "offset", + "type": "uint256" + }, + { + "name": "chunkSize", + "type": "uint16" + } + ], + "name": "getScripts", + "outputs": [ + { + "name": "", + "type": "uint256[4][]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "activeSignersCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "scriptAddress", + "type": "address" + } + ], + "name": "cancelScript", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "scriptAddress", + "type": "address" + } + ], + "name": "execute", + "outputs": [ + { + "name": "result", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isSigner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "signers", + "type": "address[]" + } + ], + "name": "removeSigners", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getScriptsCount", + "outputs": [ + { + "name": "scriptsCount", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "scriptAddresses", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "scripts", + "outputs": [ + { + "name": "state", + "type": "uint8" + }, + { + "name": "signCount", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getAllSignersCount", + "outputs": [ + { + "name": "allSignersCount", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "allSigners", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "scriptAddress", + "type": "address" + } + ], + "name": "dryExecute", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "signers", + "type": "address[]" + } + ], + "name": "addSigners", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "scriptAddress", + "type": "address" + } + ], + "name": "sign", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "signer", + "type": "address" + } + ], + "name": "SignerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "signer", + "type": "address" + } + ], + "name": "SignerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "scriptAddress", + "type": "address" + }, + { + "indexed": false, + "name": "signer", + "type": "address" + } + ], + "name": "ScriptSigned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "scriptAddress", + "type": "address" + } + ], + "name": "ScriptApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "scriptAddress", + "type": "address" + } + ], + "name": "ScriptCancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "scriptAddress", + "type": "address" + }, + { + "indexed": false, + "name": "result", + "type": "bool" + } + ], + "name": "ScriptExecuted", + "type": "event" + } + ] +} \ No newline at end of file diff --git a/abiniser/deployments/4/LoanManager_DEPLOYS.json b/abiniser/deployments/4/LoanManager_DEPLOYS.json index 0d668238..e72ab683 100644 --- a/abiniser/deployments/4/LoanManager_DEPLOYS.json +++ b/abiniser/deployments/4/LoanManager_DEPLOYS.json @@ -1,6 +1,6 @@ { "contractName": "LoanManager", - "latestAbiHash": "fdf5fde95aa940c6dbfb8353c572c5fb", + "latestAbiHash": "753a73f4b2140507197a8f80bff47b40", "deployedAbis": { "fdf5fde95aa940c6dbfb8353c572c5fb": { "latestDeployedAddress": "0x3792c5a5077dacfe331b81837ef73bc0ea721d90", @@ -30,6 +30,23 @@ "sourceHash": "234fd5848af85ca2444c888fd6ba61aa" } } + }, + "753a73f4b2140507197a8f80bff47b40": { + "latestDeployedAddress": "0x99928c5121de38ca6d23c7645cc9697a7263e859", + "deployments": { + "0x99928c5121de38ca6d23c7645cc9697a7263e859": { + "generatedAt": "2019-07-02T11:05:08.432Z", + "truffleContractFileUpdatedAt": "2019-07-02T10:59:24.934Z", + "deployTransactionHash": "0x17ffd93ff3d05cac7334a2549a7e38a701aee5d19c3de2c80a3a4a18c10d7786", + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "bytecodeHash": "4408d1ad57d708e0d0664838e6f10136", + "deployedBytecodeHash": "05ee93b22e275d2ea639c2fcb1284dfa", + "sourceHash": "78a783ccd39197b8ac7ef2cb49cc243c" + } + } } } } \ No newline at end of file diff --git a/abiniser/deployments/4/StabilityBoardProxy_DEPLOYS.json b/abiniser/deployments/4/StabilityBoardProxy_DEPLOYS.json index 3a156b43..5c4de123 100644 --- a/abiniser/deployments/4/StabilityBoardProxy_DEPLOYS.json +++ b/abiniser/deployments/4/StabilityBoardProxy_DEPLOYS.json @@ -1,6 +1,6 @@ { "contractName": "StabilityBoardProxy", - "latestAbiHash": "dd40c0d39ea8bad8a388522667a84687", + "latestAbiHash": "875b3d71bd113c550827112698f839cd", "deployedAbis": { "dd40c0d39ea8bad8a388522667a84687": { "latestDeployedAddress": "0xa612de13b629a1ff790c1f4e41d0422d2bb50a30", @@ -30,6 +30,23 @@ "sourceHash": "4d60c55b8e4009873db939b37558d9dc" } } + }, + "875b3d71bd113c550827112698f839cd": { + "latestDeployedAddress": "0x9bb8f0855b8bbaea064bce9b4ef88bc22e649af5", + "deployments": { + "0x9bb8f0855b8bbaea064bce9b4ef88bc22e649af5": { + "generatedAt": "2019-07-02T11:05:08.462Z", + "truffleContractFileUpdatedAt": "2019-07-02T10:59:24.915Z", + "deployTransactionHash": "0xb4d8550e24607c2c5969d9230a0b7471ace76f1133c4712f264562fe910eb8ae", + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "bytecodeHash": "9d8ba85809293da3b9a84c628de8d2c7", + "deployedBytecodeHash": "c3fe17ffca9ede5d2fc500da0865c1c7", + "sourceHash": "4d60c55b8e4009873db939b37558d9dc" + } + } } } } \ No newline at end of file diff --git a/abiniser/deployments/999/LoanManager_DEPLOYS.json b/abiniser/deployments/999/LoanManager_DEPLOYS.json index 44b66e2d..c849e35e 100644 --- a/abiniser/deployments/999/LoanManager_DEPLOYS.json +++ b/abiniser/deployments/999/LoanManager_DEPLOYS.json @@ -1,23 +1,11 @@ { "contractName": "LoanManager", - "latestAbiHash": "1a18d349e2ea55585c57e2125d99dad9", + "latestAbiHash": "753a73f4b2140507197a8f80bff47b40", "deployedAbis": { "fdf5fde95aa940c6dbfb8353c572c5fb": { - "latestDeployedAddress": "0x213135c85437c23bc529a2ee9c2980646c332fcb", + "latestDeployedAddress": "0xF7B8384c392fc333d3858a506c4F1506af44D53c", "deployments": { - "0x213135c85437c23bc529a2ee9c2980646c332fcb": { - "generatedAt": "2019-04-04T18:31:39.018Z", - "truffleContractFileUpdatedAt": "2019-04-04T18:20:16.642Z", - "deployTransactionHash": "0x04c167ad48f178b4a316b0d6bbfa885ca96dcd70ed9edf1d4923aeb29fa7fa4c", - "compiler": { - "name": "solc", - "version": "0.4.24+commit.e67f0147.Emscripten.clang" - }, - "bytecodeHash": "4f80cc451be48e4d62a17dbc3895a91d", - "deployedBytecodeHash": "bc0eea72e35030fc44549a2a0064bf73", - "sourceHash": "234fd5848af85ca2444c888fd6ba61aa" - }, - "0xf7b8384c392fc333d3858a506c4f1506af44d53c": { + "0xF7B8384c392fc333d3858a506c4F1506af44D53c": { "generatedAt": "2019-04-04T18:31:39.018Z", "truffleContractFileUpdatedAt": "2019-04-04T18:20:16.642Z", "deployTransactionHash": "0x23d5906de7ecfe9595bb8cfd7080a0e06eccee34ef92f017a3b4b657855e3619", @@ -31,20 +19,20 @@ } } }, - "1a18d349e2ea55585c57e2125d99dad9": { - "latestDeployedAddress": "0x213135c85437c23bc529a2ee9c2980646c332fcb", + "753a73f4b2140507197a8f80bff47b40": { + "latestDeployedAddress": "0x213135c85437C23bC529A2eE9c2980646c332fCB", "deployments": { - "0x213135c85437c23bc529a2ee9c2980646c332fcb": { - "generatedAt": "2019-06-06T11:06:21.108Z", - "truffleContractFileUpdatedAt": "2019-06-06T10:59:23.781Z", - "deployTransactionHash": "0x65c11d08cd492ddc3b84e63a0bfd68cc05053537e0ce14757f70f9340465424d", + "0x213135c85437C23bC529A2eE9c2980646c332fCB": { + "generatedAt": "2019-07-02T09:59:47.885Z", + "truffleContractFileUpdatedAt": "2019-07-02T09:59:42.024Z", + "deployTransactionHash": "0x6e09b864f8d42ac28128e3c1af6b8f2aa43f5007bbc91f5f655dc6840883224e", "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, - "bytecodeHash": "6f74cede259b4e896f5faa772de789f4", - "deployedBytecodeHash": "ab71949ed51debdd86e3241773c06862", - "sourceHash": "f5c13c265210321f169220a20110aa5e" + "bytecodeHash": "4408d1ad57d708e0d0664838e6f10136", + "deployedBytecodeHash": "05ee93b22e275d2ea639c2fcb1284dfa", + "sourceHash": "78a783ccd39197b8ac7ef2cb49cc243c" } } } diff --git a/abiniser/deployments/999/PreTokenProxy_DEPLOYS.json b/abiniser/deployments/999/PreTokenProxy_DEPLOYS.json index 2f1635f1..5a606d7a 100644 --- a/abiniser/deployments/999/PreTokenProxy_DEPLOYS.json +++ b/abiniser/deployments/999/PreTokenProxy_DEPLOYS.json @@ -1,6 +1,6 @@ { "contractName": "PreTokenProxy", - "latestAbiHash": "dd40c0d39ea8bad8a388522667a84687", + "latestAbiHash": "875b3d71bd113c550827112698f839cd", "deployedAbis": { "dd40c0d39ea8bad8a388522667a84687": { "latestDeployedAddress": "0x8b639dc72f3e640c0d6bc19497fbc7b5160d0463", @@ -18,6 +18,23 @@ "sourceHash": "2d172fe41d2b97c827d6dca816138047" } } + }, + "875b3d71bd113c550827112698f839cd": { + "latestDeployedAddress": "0x8b639dc72f3e640c0d6bc19497fbc7b5160d0463", + "deployments": { + "0x8b639dc72f3e640c0d6bc19497fbc7b5160d0463": { + "generatedAt": "2019-07-02T09:59:47.921Z", + "truffleContractFileUpdatedAt": "2019-07-02T09:59:32.036Z", + "deployTransactionHash": "0xfd73a567cd08abd21c7024b7ff4a084f13c73a4ecb2c0047ae9b143d3037885f", + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "bytecodeHash": "755b42465949a31e279cdc861575f4f4", + "deployedBytecodeHash": "10882a748215bfda390bb5b1cbbae842", + "sourceHash": "2d172fe41d2b97c827d6dca816138047" + } + } } } } \ No newline at end of file diff --git a/abiniser/deployments/999/StabilityBoardProxy_DEPLOYS.json b/abiniser/deployments/999/StabilityBoardProxy_DEPLOYS.json index a451fd1a..20107b19 100644 --- a/abiniser/deployments/999/StabilityBoardProxy_DEPLOYS.json +++ b/abiniser/deployments/999/StabilityBoardProxy_DEPLOYS.json @@ -1,6 +1,6 @@ { "contractName": "StabilityBoardProxy", - "latestAbiHash": "dd40c0d39ea8bad8a388522667a84687", + "latestAbiHash": "875b3d71bd113c550827112698f839cd", "deployedAbis": { "dd40c0d39ea8bad8a388522667a84687": { "latestDeployedAddress": "0xd3ef19679c2dbbf3b8e2077c61b88f5e9c6178eb", @@ -18,6 +18,23 @@ "sourceHash": "4d60c55b8e4009873db939b37558d9dc" } } + }, + "875b3d71bd113c550827112698f839cd": { + "latestDeployedAddress": "0xd3ef19679c2dbbf3b8e2077c61b88f5e9c6178eb", + "deployments": { + "0xd3ef19679c2dbbf3b8e2077c61b88f5e9c6178eb": { + "generatedAt": "2019-07-02T09:59:47.917Z", + "truffleContractFileUpdatedAt": "2019-07-02T09:59:38.204Z", + "deployTransactionHash": "0xb7abdfaafb74748c3aedc212708ec6148ce0c8d07684af8983a169493b55f4a4", + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "bytecodeHash": "9d8ba85809293da3b9a84c628de8d2c7", + "deployedBytecodeHash": "c3fe17ffca9ede5d2fc500da0865c1c7", + "sourceHash": "4d60c55b8e4009873db939b37558d9dc" + } + } } } } \ No newline at end of file diff --git a/contracts/LoanManager.sol b/contracts/LoanManager.sol index 07d96e2f..23459dae 100644 --- a/contracts/LoanManager.sol +++ b/contracts/LoanManager.sol @@ -26,13 +26,13 @@ contract LoanManager is Restricted, TokenReceiver { enum LoanState { Open, Repaid, DoNotUse, Collected } // NB: DoNotUse state is kept for backwards compatibility only (so the ordinal of 'Collected' does not shift), as the name states: do not use it. struct LoanProduct { - uint minDisbursedAmount; // 0: minimum loanAmount, with decimals set in AugmintToken.decimals (i.e. token amount) - uint32 term; // 1: term length (in seconds) - uint32 discountRate; // 2: discountRate (in parts per million, i.e. 10,000 = 1%) - uint32 collateralRatio; // 3: inverse of collateral ratio: [repayment value (in token) / collateral value (in token)] (in ppm). Note: this is actually the inverse of the commonly used "collateral ratio"! TODO: fix it - uint32 defaultingFeePt; // 4: % of repaymentAmount (in parts per million, i.e. 50,000 = 5%) - bool isActive; // 5: flag to enable/disable product - uint32 minCollateralRatio; // 6: minimum collateral ratio: [collateral value (in token) / repayment value (in token)] (in ppm), defines the margin, zero means no margin. Note: this is _not_ an inverse like the above "collateralRatio", it is already stored properly! + uint minDisbursedAmount; // 0: minimum loanAmount, with decimals set in AugmintToken.decimals (i.e. token amount) + uint32 term; // 1: term length (in seconds) + uint32 discountRate; // 2: discountRate (in parts per million, i.e. 10,000 = 1%) + uint32 initialCollateralRatio; // 3: initial collateral ratio: [collateral value (in token) / repayment value (in token)] (in ppm). + uint32 defaultingFeePt; // 4: % of repaymentAmount (in parts per million, i.e. 50,000 = 5%) + bool isActive; // 5: flag to enable/disable product + uint32 minCollateralRatio; // 6: minimum collateral ratio: [collateral value (in token) / repayment value (in token)] (in ppm), defines the margin, zero means no margin. } /* NB: we don't need to store loan parameters because loan products can't be altered (only disabled/enabled) */ @@ -55,16 +55,19 @@ contract LoanManager is Restricted, TokenReceiver { MonetarySupervisor public monetarySupervisor; event NewLoan(uint32 productId, uint loanId, address indexed borrower, uint collateralAmount, uint loanAmount, - uint repaymentAmount, uint40 maturity); + uint repaymentAmount, uint40 maturity, uint currentRate); + + event LoanChanged(uint loanId, address indexed borrower, uint collateralAmount, + uint repaymentAmount, uint currentRate); event LoanProductActiveStateChanged(uint32 productId, bool newState); event LoanProductAdded(uint32 productId); - event LoanRepayed(uint loanId, address borrower); + event LoanRepaid(uint loanId, address indexed borrower, uint currentRate); event LoanCollected(uint loanId, address indexed borrower, uint collectedCollateral, - uint releasedCollateral, uint defaultingFee); + uint releasedCollateral, uint defaultingFee, uint currentRate); event SystemContractsChanged(Rates newRatesContract, MonetarySupervisor newMonetarySupervisor); @@ -76,11 +79,11 @@ contract LoanManager is Restricted, TokenReceiver { rates = _rates; } - function addLoanProduct(uint32 term, uint32 discountRate, uint32 collateralRatio, uint minDisbursedAmount, + function addLoanProduct(uint32 term, uint32 discountRate, uint32 initialCollateralRatio, uint minDisbursedAmount, uint32 defaultingFeePt, bool isActive, uint32 minCollateralRatio) external restrict("StabilityBoard") { uint _newProductId = products.push( - LoanProduct(minDisbursedAmount, term, discountRate, collateralRatio, defaultingFeePt, isActive, minCollateralRatio) + LoanProduct(minDisbursedAmount, term, discountRate, initialCollateralRatio, defaultingFeePt, isActive, minCollateralRatio) ) - 1; uint32 newProductId = uint32(_newProductId); @@ -96,15 +99,17 @@ contract LoanManager is Restricted, TokenReceiver { emit LoanProductActiveStateChanged(productId, newState); } - function newEthBackedLoan(uint32 productId) external payable { + function newEthBackedLoan(uint32 productId, uint minRate) external payable { require(productId < products.length, "invalid productId"); // next line would revert but require to emit reason LoanProduct storage product = products[productId]; require(product.isActive, "product must be in active state"); // valid product + uint currentRate = getCurrentRate(); + require(currentRate >= minRate, "current rate is below minimum"); // calculate loan values based on ETH sent in with Tx - uint collateralValueInToken = rates.convertFromWei(augmintToken.peggedSymbol(), msg.value); - uint repaymentAmount = collateralValueInToken.mul(product.collateralRatio).div(PPM_FACTOR); + uint collateralValueInToken = _convertFromWei(currentRate, msg.value); + uint repaymentAmount = collateralValueInToken.mul(PPM_FACTOR).div(product.initialCollateralRatio); uint loanAmount; (loanAmount, ) = calculateLoanValues(product, repaymentAmount); @@ -126,7 +131,7 @@ contract LoanManager is Restricted, TokenReceiver { // Issue tokens and send to borrower monetarySupervisor.issueLoan(msg.sender, loanAmount); - emit NewLoan(productId, loanId, msg.sender, msg.value, loanAmount, repaymentAmount, maturity); + emit NewLoan(productId, loanId, msg.sender, msg.value, loanAmount, repaymentAmount, maturity, currentRate); } function addExtraCollateral(uint loanId) external payable { @@ -137,6 +142,8 @@ contract LoanManager is Restricted, TokenReceiver { require(product.minCollateralRatio > 0, "not a margin type loan"); loan.collateralAmount = loan.collateralAmount.add(msg.value); + + emit LoanChanged(loanId, loan.borrower, loan.collateralAmount, loan.repaymentAmount, getCurrentRate()); } /* repay loan, called from AugmintToken's transferAndNotify @@ -195,7 +202,7 @@ contract LoanManager is Restricted, TokenReceiver { } // returns loan products starting from some : - // [ productId, minDisbursedAmount, term, discountRate, collateralRatio, defaultingFeePt, maxLoanAmount, isActive, minCollateralRatio ] + // [ productId, minDisbursedAmount, term, discountRate, initialCollateralRatio, defaultingFeePt, maxLoanAmount, isActive, minCollateralRatio ] function getProducts(uint offset, uint16 chunkSize) external view returns (uint[9][]) { uint limit = SafeMath.min(offset.add(chunkSize), products.length); @@ -204,7 +211,7 @@ contract LoanManager is Restricted, TokenReceiver { for (uint i = offset; i < limit; i++) { LoanProduct storage product = products[i]; response[i - offset] = [i, product.minDisbursedAmount, product.term, product.discountRate, - product.collateralRatio, product.defaultingFeePt, + product.initialCollateralRatio, product.defaultingFeePt, monetarySupervisor.getMaxLoanAmount(product.minDisbursedAmount), product.isActive ? 1 : 0, product.minCollateralRatio]; } @@ -332,7 +339,7 @@ contract LoanManager is Restricted, TokenReceiver { loan.borrower.transfer(loan.collateralAmount); // send back ETH collateral - emit LoanRepayed(loanId, loan.borrower); + emit LoanRepaid(loanId, loan.borrower, getCurrentRate()); } function _collectLoan(uint loanId, uint currentRate) private returns(uint loanAmount, uint defaultingFee, uint collateralToCollect) { @@ -363,11 +370,14 @@ contract LoanManager is Restricted, TokenReceiver { } emit LoanCollected(loanId, loan.borrower, collateralToCollect.add(defaultingFee), - releasedCollateral, defaultingFee); + releasedCollateral, defaultingFee, currentRate); } - function _convertToWei(uint rate, uint value) private pure returns(uint weiValue) { - return value.mul(WEI_FACTOR).roundedDiv(rate); + function _convertToWei(uint rate, uint tokenAmount) private pure returns(uint weiAmount) { + return tokenAmount.mul(WEI_FACTOR).roundedDiv(rate); } + function _convertFromWei(uint rate, uint weiAmount) private pure returns(uint tokenAmount) { + return weiAmount.mul(rate).roundedDiv(WEI_FACTOR); + } } diff --git a/contracts/SB_scripts/localTest/localTest_initialSetup.sol b/contracts/SB_scripts/localTest/localTest_initialSetup.sol index c5137212..b2098d1d 100644 --- a/contracts/SB_scripts/localTest/localTest_initialSetup.sol +++ b/contracts/SB_scripts/localTest/localTest_initialSetup.sol @@ -104,18 +104,18 @@ contract localTest_initialSetup { _monetarySupervisor.grantPermission(_locker, "Locker"); // add test loan Products - // term (in sec), discountRate, loanCoverageRatio, minDisbursedAmount (w/ 4 decimals), defaultingFeePt, isActive - _loanManager.addLoanProduct(365 days, 854701, 550000, 1000, 50000, true, 1500000); // 17% p.a., (collateral ratio: initial = ~181%, minimum = 150%) - _loanManager.addLoanProduct(180 days, 924753, 550000, 1000, 50000, true, 1500000); // 16.5% p.a., (collateral ratio: initial = ~181%, minimum = 150%) - - _loanManager.addLoanProduct(90 days, 962046, 600000, 1000, 50000, true, 1200000); // 16%. p.a., (collateral ratio: initial = ~166%, minimum = 120%) - _loanManager.addLoanProduct(60 days, 975154, 600000, 1000, 50000, true, 1200000); // 15.5% p.a., (collateral ratio: initial = ~166%, minimum = 120%) - _loanManager.addLoanProduct(30 days, 987822, 600000, 1000, 50000, true, 1200000); // 15% p.a., (collateral ratio: initial = ~166%, minimum = 120%) - _loanManager.addLoanProduct(14 days, 994280, 600000, 1000, 50000, true, 1200000); // 15% p.a., (collateral ratio: initial = ~166%, minimum = 120%) - _loanManager.addLoanProduct(7 days, 997132, 600000, 1000, 50000, true, 1200000); // 15% p.a., (collateral ratio: initial = ~166%, minimum = 120%) - - _loanManager.addLoanProduct(1 hours, 999998, 980000, 2000, 50000, true, 1010000); // due in 1hr for testing repayments ~1.75% p.a., (collateral ratio: initial = ~102%, minimum = 101%) - _loanManager.addLoanProduct(1 seconds, 999999, 990000, 3000, 50000, true, 1010000); // defaults in 1 secs for testing ~3153.6% p.a., (collateral ratio: initial = ~102%, minimum = 101%) + // term (in sec), discountRate, initialCollateralRatio (ppm), minDisbursedAmount (token), defaultingFeePt (ppm), isActive, minCollateralRatio (ppm) + _loanManager.addLoanProduct(365 days, 854701, 1850000, 1000, 50000, true, 1500000); // 17% p.a., (collateral ratio: initial = 185%, minimum = 150%) + _loanManager.addLoanProduct(180 days, 924753, 1850000, 1000, 50000, true, 1500000); // 16.5% p.a., (collateral ratio: initial = 185%, minimum = 150%) + + _loanManager.addLoanProduct(90 days, 962046, 1600000, 1000, 50000, true, 1200000); // 16%. p.a., (collateral ratio: initial = 160%, minimum = 120%) + _loanManager.addLoanProduct(60 days, 975154, 1600000, 1000, 50000, true, 1200000); // 15.5% p.a., (collateral ratio: initial = 160%, minimum = 120%) + _loanManager.addLoanProduct(30 days, 987822, 1600000, 1000, 50000, true, 1200000); // 15% p.a., (collateral ratio: initial = 160%, minimum = 120%) + _loanManager.addLoanProduct(14 days, 994280, 1600000, 1000, 50000, true, 1200000); // 15% p.a., (collateral ratio: initial = 160%, minimum = 120%) + _loanManager.addLoanProduct(7 days, 997132, 1600000, 1000, 50000, true, 1200000); // 15% p.a., (collateral ratio: initial = 160%, minimum = 120%) + + _loanManager.addLoanProduct(1 hours, 999000, 1230000, 2000, 50000, true, 1050000); // due in 1hr for testing repayments ~877% p.a., (collateral ratio: initial = 123%, minimum = 105%) + _loanManager.addLoanProduct(1 seconds, 999000, 1110000, 3000, 50000, true, 1020000); // defaults in 1 secs for testing ~3156757% p.a., (collateral ratio: initial = 111%, minimum = 102%) // add test lock products // (perTermInterest, durationInSecs, minimumLockAmount, isActive) diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0009_migrateToNewProxy.sol b/contracts/SB_scripts/rinkeby/Rinkeby_0009_migrateToNewProxy.sol new file mode 100644 index 00000000..6aa63f1c --- /dev/null +++ b/contracts/SB_scripts/rinkeby/Rinkeby_0009_migrateToNewProxy.sol @@ -0,0 +1,148 @@ +/* Migrate rinkeby contracts to the new StabilityBoardProxy - to be run via the old proxy! */ + +pragma solidity 0.4.24; + +import "../../AugmintReserves.sol"; +import "../../Exchange.sol"; +import "../../FeeAccount.sol"; +import "../../InterestEarnedAccount.sol"; +import "../../LoanManager.sol"; +import "../../Locker.sol"; +import "../../MonetarySupervisor.sol"; +import "../../Rates.sol"; +import "../../TokenAEur.sol"; +import "../../StabilityBoardProxy.sol"; + +contract Rinkeby_0009_migrateToNewProxy { + + /****************************************************************************** + * StabilityBoardProxies + ******************************************************************************/ + StabilityBoardProxy public constant OLD_STABILITY_BOARD_PROXY = StabilityBoardProxy(0xa612de13B629a1FF790c1f4E41d0422d2bB50a30); + StabilityBoardProxy public constant NEW_STABILITY_BOARD_PROXY = StabilityBoardProxy(0x9bB8F0855B8bbaEa064bCe9b4Ef88bC22E649aF5); + + + /****************************************************************************** + * Contracts + ******************************************************************************/ + + AugmintReserves public constant AUGMINT_RESERVES_1 = AugmintReserves(0xC036a1DD59Ac55e2fB6b3D7416cb4ECC44605834); + Exchange public constant EXCHANGE_1 = Exchange(0xDF47D51028DafF13424F42523FdAc73079ab901b); + FeeAccount public constant FEE_ACCOUNT_1 = FeeAccount(0xB77F9cDdA72eEC47a57793Be088C7b523f6b5014); + InterestEarnedAccount public constant INTEREST_EARNED_ACCOUNT_1 = InterestEarnedAccount(0x489cbf1674b575e6dFcFF0A4F2BBc74f7e9DDe28); + LoanManager public constant LOAN_MANAGER_1 = LoanManager(0x6CB7731c78E677f85942B5f1D646b3485E5820c1); + Locker public constant LOCKER_1 = Locker(0x6d84aB6c385B827E58c358D078AC7b1C61b68821); + MonetarySupervisor public constant MONETARY_SUPERVISOR_1 = MonetarySupervisor(0xCeC3574ECa89409b15a8A72A6E737C4171457871); + Rates public constant RATES_1 = Rates(0xDfA3a0aEb9645a55b684CB3aCE8C42D018405bDa); + TokenAEur public constant TOKEN_AEUR_1 = TokenAEur(0x0557183334Edc23a666201EDC6b0AA2787e2ad3F); + + AugmintReserves public constant AUGMINT_RESERVES_2 = AugmintReserves(0x33Bec125657470e53887400666BdeeD360b2168A); + Exchange public constant EXCHANGE_2 = Exchange(0xe5d6D0c107eaE79d2D30798F252Ac6FF5ECAd459); + FeeAccount public constant FEE_ACCOUNT_2 = FeeAccount(0xaa16EdE9093BB4140e2715ED9a1E41cdFD9D9c29); + InterestEarnedAccount public constant INTEREST_EARNED_ACCOUNT_2 = InterestEarnedAccount(0xDD96979697b76787b5062084eEA60BF929ddD844); + LoanManager public constant LOAN_MANAGER_2 = LoanManager(0x3792c5a5077DacfE331B81837ef73bC0Ea721d90); + Locker public constant LOCKER_2 = Locker(0xc0B97fE5CAD0d43D0c974C4E9A00312dc661f8Ab); + MonetarySupervisor public constant MONETARY_SUPERVISOR_2 = MonetarySupervisor(0x4A7F6EcbE8B324A55b85adcc45313A412957B8ea); + Rates public constant RATES_2 = Rates(0xEE8C7a3e99945A5207Dca026504d67527125Da9C); + TokenAEur public constant TOKEN_AEUR_2 = TokenAEur(0x79065a165Ec09E6A89D584a14872802717FE12a3); + + // Note: both of the above loanmanagers (#1 and #2) are "legacy" (a.k.a. "pre-margin"), the new loanmanager (#3) was already deployed under the new proxy. + + function execute(Rinkeby_0009_migrateToNewProxy /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(OLD_STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + /****************************************************************************** + * Grant permissions for new proxy + ******************************************************************************/ + + // StabilityBoard permission + AUGMINT_RESERVES_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + EXCHANGE_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + FEE_ACCOUNT_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + INTEREST_EARNED_ACCOUNT_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + LOAN_MANAGER_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + LOCKER_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + MONETARY_SUPERVISOR_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + RATES_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + TOKEN_AEUR_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + + AUGMINT_RESERVES_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + EXCHANGE_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + FEE_ACCOUNT_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + INTEREST_EARNED_ACCOUNT_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + LOAN_MANAGER_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + LOCKER_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + MONETARY_SUPERVISOR_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + RATES_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + TOKEN_AEUR_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "StabilityBoard"); + + // PermissionGranter permission + AUGMINT_RESERVES_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + EXCHANGE_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + FEE_ACCOUNT_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + INTEREST_EARNED_ACCOUNT_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + LOAN_MANAGER_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + LOCKER_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + MONETARY_SUPERVISOR_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + RATES_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + TOKEN_AEUR_1.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + + AUGMINT_RESERVES_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + EXCHANGE_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + FEE_ACCOUNT_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + INTEREST_EARNED_ACCOUNT_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + LOAN_MANAGER_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + LOCKER_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + MONETARY_SUPERVISOR_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + RATES_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + TOKEN_AEUR_2.grantPermission(address(NEW_STABILITY_BOARD_PROXY), "PermissionGranter"); + + /****************************************************************************** + * Revoke permissions for old proxy + ******************************************************************************/ + + // StabilityBoard permission + AUGMINT_RESERVES_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + EXCHANGE_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + FEE_ACCOUNT_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + INTEREST_EARNED_ACCOUNT_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + LOAN_MANAGER_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + LOCKER_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + MONETARY_SUPERVISOR_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + RATES_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + TOKEN_AEUR_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + + AUGMINT_RESERVES_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + EXCHANGE_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + FEE_ACCOUNT_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + INTEREST_EARNED_ACCOUNT_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + LOAN_MANAGER_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + LOCKER_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + MONETARY_SUPERVISOR_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + RATES_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + TOKEN_AEUR_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "StabilityBoard"); + + // PermissionGranter permission + AUGMINT_RESERVES_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + EXCHANGE_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + FEE_ACCOUNT_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + INTEREST_EARNED_ACCOUNT_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + LOAN_MANAGER_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + LOCKER_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + MONETARY_SUPERVISOR_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + RATES_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + TOKEN_AEUR_1.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + + AUGMINT_RESERVES_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + EXCHANGE_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + FEE_ACCOUNT_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + INTEREST_EARNED_ACCOUNT_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + LOAN_MANAGER_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + LOCKER_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + MONETARY_SUPERVISOR_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + RATES_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + TOKEN_AEUR_2.revokePermission(address(OLD_STABILITY_BOARD_PROXY), "PermissionGranter"); + + } +} \ No newline at end of file diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0010_setupNewLoanManager.sol b/contracts/SB_scripts/rinkeby/Rinkeby_0010_setupNewLoanManager.sol new file mode 100644 index 00000000..b59a19bd --- /dev/null +++ b/contracts/SB_scripts/rinkeby/Rinkeby_0010_setupNewLoanManager.sol @@ -0,0 +1,56 @@ +/* Set up new loanmanager - to be run via the new proxy, only execute after Rinkeby_0009_migrateToNewProxy has been run in old proxy! */ + +pragma solidity 0.4.24; + +import "../../LoanManager.sol"; +import "../../StabilityBoardProxy.sol"; +import "../../FeeAccount.sol"; +import "../../MonetarySupervisor.sol"; + +contract Rinkeby_0010_setupNewLoanManager { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0x9bB8F0855B8bbaEa064bCe9b4Ef88bC22E649aF5); + LoanManager public constant LOAN_MANAGER = LoanManager(0x99928c5121dE38cA6D23C7645CC9697a7263e859); + + FeeAccount public constant FEE_ACCOUNT = FeeAccount(0xaa16EdE9093BB4140e2715ED9a1E41cdFD9D9c29); + MonetarySupervisor public constant MONETARY_SUPERVISOR = MonetarySupervisor(0x4A7F6EcbE8B324A55b85adcc45313A412957B8ea); + + function execute(Rinkeby_0010_setupNewLoanManager /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + // StabilityBoard permission + LOAN_MANAGER.grantPermission(address(STABILITY_BOARD_PROXY), "StabilityBoard"); + + // NoTransferFee permission + FEE_ACCOUNT.grantPermission(address(LOAN_MANAGER), "NoTransferFee"); + + // LoanManager permission + MONETARY_SUPERVISOR.grantPermission(address(LOAN_MANAGER), "LoanManager"); + + /****************************************************************************** + * Add loan products + ******************************************************************************/ + // term (in sec), discountRate, initialCollateralRatio (ppm), minDisbursedAmount (token), + // defaultingFeePt (ppm), isActive, minCollateralRatio (ppm) + + LOAN_MANAGER.addLoanProduct(365 days, 1000000, 1800000, 800, 100000, true, 1200000); + LOAN_MANAGER.addLoanProduct(180 days, 1000000, 1800000, 800, 100000, true, 1200000); + LOAN_MANAGER.addLoanProduct(90 days, 1000000, 1800000, 800, 100000, true, 1200000); + LOAN_MANAGER.addLoanProduct(30 days, 1000000, 1800000, 800, 100000, true, 1200000); + LOAN_MANAGER.addLoanProduct(14 days, 1000000, 1800000, 800, 100000, true, 1200000); + LOAN_MANAGER.addLoanProduct(7 days, 1000000, 1800000, 800, 100000, true, 1200000); + + LOAN_MANAGER.addLoanProduct(1 hours, 1000000, 1500000, 400, 50000, true, 1150000); + LOAN_MANAGER.addLoanProduct(1 minutes, 1000000, 1500000, 400, 50000, true, 1150000); + + // discountRate: 1000000 => zero interest + // initialCollateralRatio: 1800000 => 180% + // minCollateralRatio: 1200000 => 120% + // minDisbursedAmount: 800 => 8 AEUR (extra +25% on frontend!) + // defaultingFeePt: 100000 => 10% + + // for the extra short term products slightly different values: + // zero / 150% / 115% / 4 AEUR / 5% + } +} \ No newline at end of file diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0011_setupSbProxySigners.sol b/contracts/SB_scripts/rinkeby/Rinkeby_0011_setupSbProxySigners.sol new file mode 100644 index 00000000..9e568bd2 --- /dev/null +++ b/contracts/SB_scripts/rinkeby/Rinkeby_0011_setupSbProxySigners.sol @@ -0,0 +1,18 @@ +pragma solidity 0.4.24; + +import "../../StabilityBoardProxy.sol"; + +contract Rinkeby_0011_setupSbProxySigners { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0x9bB8F0855B8bbaEa064bCe9b4Ef88bC22E649aF5); + + function execute(Rinkeby_0011_setupSbProxySigners /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + address[] memory signersToAdd = new address[](2); // dynamic array needed for addSigners() & removeSigners() + signersToAdd[0] = 0xe71E9636e31B838aF0A3c38B3f3449cdC2b7aa87; // phraktle + signersToAdd[1] = 0x9aaf197F25d207ecE17DfBeb20780095f7623A23; // petro + STABILITY_BOARD_PROXY.addSigners(signersToAdd); + } +} \ No newline at end of file diff --git a/contracts/SB_scripts/rinkeby/Rinkeby_0012_noTransferFee.sol b/contracts/SB_scripts/rinkeby/Rinkeby_0012_noTransferFee.sol new file mode 100644 index 00000000..726565c6 --- /dev/null +++ b/contracts/SB_scripts/rinkeby/Rinkeby_0012_noTransferFee.sol @@ -0,0 +1,19 @@ +/* Eliminate transfer fee */ + +pragma solidity 0.4.24; + +import "../../StabilityBoardProxy.sol"; +import "../../FeeAccount.sol"; + +contract Rinkeby_0012_noTransferFee { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0x9bB8F0855B8bbaEa064bCe9b4Ef88bC22E649aF5); + FeeAccount public constant FEE_ACCOUNT = FeeAccount(0xaa16EdE9093BB4140e2715ED9a1E41cdFD9D9c29); + + function execute(Rinkeby_0012_noTransferFee /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + FEE_ACCOUNT.setTransferFees(0, 0, 0); + } +} \ No newline at end of file diff --git a/contracts/legacy/1.0.12/LoanManager_1_0_12.sol b/contracts/legacy/1.0.12/LoanManager_1_0_12.sol new file mode 100644 index 00000000..0549c879 --- /dev/null +++ b/contracts/legacy/1.0.12/LoanManager_1_0_12.sol @@ -0,0 +1,320 @@ +/* + Contract to manage Augmint token loan contracts backed by ETH + For flows see: https://github.com/Augmint/augmint-contracts/blob/master/docs/loanFlow.png + + TODO: + - create MonetarySupervisor interface and use it instead? + - make data arg generic bytes? + - make collect() run as long as gas provided allows +*/ +pragma solidity 0.4.24; + +import "../../Rates.sol"; +import "../../generic/Restricted.sol"; +import "../../generic/SafeMath.sol"; +import "../../interfaces/AugmintTokenInterface.sol"; +import "../../MonetarySupervisor.sol"; + + +contract LoanManager_1_0_12 is Restricted, TokenReceiver { + using SafeMath for uint256; + + enum LoanState { Open, Repaid, Defaulted, Collected } // NB: Defaulted state is not stored, only getters calculate + + struct LoanProduct { + uint minDisbursedAmount; // 0: with decimals set in AugmintToken.decimals + uint32 term; // 1 + uint32 discountRate; // 2: discountRate in parts per million , ie. 10,000 = 1% + uint32 collateralRatio; // 3: loan token amount / colleteral pegged ccy value + // in parts per million , ie. 10,000 = 1% + uint32 defaultingFeePt; // 4: % of collateral in parts per million , ie. 50,000 = 5% + bool isActive; // 5 + } + + /* NB: we don't need to store loan parameters because loan products can't be altered (only disabled/enabled) */ + struct LoanData { + uint collateralAmount; // 0 + uint repaymentAmount; // 1 + address borrower; // 2 + uint32 productId; // 3 + LoanState state; // 4 + uint40 maturity; // 5 + } + + LoanProduct[] public products; + + LoanData[] public loans; + mapping(address => uint[]) public accountLoans; // owner account address => array of loan Ids + + Rates public rates; // instance of ETH/pegged currency rate provider contract + AugmintTokenInterface public augmintToken; // instance of token contract + MonetarySupervisor public monetarySupervisor; + + event NewLoan(uint32 productId, uint loanId, address indexed borrower, uint collateralAmount, uint loanAmount, + uint repaymentAmount, uint40 maturity); + + event LoanProductActiveStateChanged(uint32 productId, bool newState); + + event LoanProductAdded(uint32 productId); + + event LoanRepayed(uint loanId, address borrower); + + event LoanCollected(uint loanId, address indexed borrower, uint collectedCollateral, + uint releasedCollateral, uint defaultingFee); + + event SystemContractsChanged(Rates newRatesContract, MonetarySupervisor newMonetarySupervisor); + + constructor(address permissionGranterContract, AugmintTokenInterface _augmintToken, + MonetarySupervisor _monetarySupervisor, Rates _rates) + public Restricted(permissionGranterContract) { + augmintToken = _augmintToken; + monetarySupervisor = _monetarySupervisor; + rates = _rates; + } + + function addLoanProduct(uint32 term, uint32 discountRate, uint32 collateralRatio, uint minDisbursedAmount, + uint32 defaultingFeePt, bool isActive) + external restrict("StabilityBoard") { + + uint _newProductId = products.push( + LoanProduct(minDisbursedAmount, term, discountRate, collateralRatio, defaultingFeePt, isActive) + ) - 1; + + uint32 newProductId = uint32(_newProductId); + require(newProductId == _newProductId, "productId overflow"); + + emit LoanProductAdded(newProductId); + } + + function setLoanProductActiveState(uint32 productId, bool newState) + external restrict ("StabilityBoard") { + require(productId < products.length, "invalid productId"); // next line would revert but require to emit reason + products[productId].isActive = newState; + emit LoanProductActiveStateChanged(productId, newState); + } + + function newEthBackedLoan(uint32 productId) external payable { + require(productId < products.length, "invalid productId"); // next line would revert but require to emit reason + LoanProduct storage product = products[productId]; + require(product.isActive, "product must be in active state"); // valid product + + + // calculate loan values based on ETH sent in with Tx + uint tokenValue = rates.convertFromWei(augmintToken.peggedSymbol(), msg.value); + uint repaymentAmount = tokenValue.mul(product.collateralRatio).div(1000000); + + uint loanAmount; + (loanAmount, ) = calculateLoanValues(product, repaymentAmount); + + require(loanAmount >= product.minDisbursedAmount, "loanAmount must be >= minDisbursedAmount"); + + uint expiration = now.add(product.term); + uint40 maturity = uint40(expiration); + require(maturity == expiration, "maturity overflow"); + + // Create new loan + uint loanId = loans.push(LoanData(msg.value, repaymentAmount, msg.sender, + productId, LoanState.Open, maturity)) - 1; + + // Store ref to new loan + accountLoans[msg.sender].push(loanId); + + // Issue tokens and send to borrower + monetarySupervisor.issueLoan(msg.sender, loanAmount); + + emit NewLoan(productId, loanId, msg.sender, msg.value, loanAmount, repaymentAmount, maturity); + } + + /* repay loan, called from AugmintToken's transferAndNotify + Flow for repaying loan: + 1) user calls token contract's transferAndNotify loanId passed in data arg + 2) transferAndNotify transfers tokens to the Lender contract + 3) transferAndNotify calls Lender.transferNotification with lockProductId + */ + // from arg is not used as we allow anyone to repay a loan: + function transferNotification(address, uint repaymentAmount, uint loanId) external { + require(msg.sender == address(augmintToken), "msg.sender must be augmintToken"); + + _repayLoan(loanId, repaymentAmount); + } + + function collect(uint[] loanIds) external { + /* when there are a lots of loans to be collected then + the client need to call it in batches to make sure tx won't exceed block gas limit. + Anyone can call it - can't cause harm as it only allows to collect loans which they are defaulted + TODO: optimise defaulting fee calculations + */ + uint totalLoanAmountCollected; + uint totalCollateralToCollect; + uint totalDefaultingFee; + for (uint i = 0; i < loanIds.length; i++) { + require(loanIds[i] < loans.length, "invalid loanId"); // next line would revert but require to emit reason + LoanData storage loan = loans[loanIds[i]]; + require(loan.state == LoanState.Open, "loan state must be Open"); + require(now >= loan.maturity, "current time must be later than maturity"); + LoanProduct storage product = products[loan.productId]; + + uint loanAmount; + (loanAmount, ) = calculateLoanValues(product, loan.repaymentAmount); + + totalLoanAmountCollected = totalLoanAmountCollected.add(loanAmount); + + loan.state = LoanState.Collected; + + // send ETH collateral to augmintToken reserve + uint defaultingFeeInToken = loan.repaymentAmount.mul(product.defaultingFeePt).div(1000000); + uint defaultingFee = rates.convertToWei(augmintToken.peggedSymbol(), defaultingFeeInToken); + uint targetCollection = rates.convertToWei(augmintToken.peggedSymbol(), + loan.repaymentAmount).add(defaultingFee); + + uint releasedCollateral; + if (targetCollection < loan.collateralAmount) { + releasedCollateral = loan.collateralAmount.sub(targetCollection); + loan.borrower.transfer(releasedCollateral); + } + uint collateralToCollect = loan.collateralAmount.sub(releasedCollateral); + if (defaultingFee >= collateralToCollect) { + defaultingFee = collateralToCollect; + collateralToCollect = 0; + } else { + collateralToCollect = collateralToCollect.sub(defaultingFee); + } + totalDefaultingFee = totalDefaultingFee.add(defaultingFee); + + totalCollateralToCollect = totalCollateralToCollect.add(collateralToCollect); + + emit LoanCollected(loanIds[i], loan.borrower, collateralToCollect.add(defaultingFee), + releasedCollateral, defaultingFee); + } + + if (totalCollateralToCollect > 0) { + address(monetarySupervisor.augmintReserves()).transfer(totalCollateralToCollect); + } + + if (totalDefaultingFee > 0) { + address(augmintToken.feeAccount()).transfer(totalDefaultingFee); + } + + monetarySupervisor.loanCollectionNotification(totalLoanAmountCollected);// update KPIs + + } + + /* to allow upgrade of Rates and MonetarySupervisor contracts */ + function setSystemContracts(Rates newRatesContract, MonetarySupervisor newMonetarySupervisor) + external restrict("StabilityBoard") { + rates = newRatesContract; + monetarySupervisor = newMonetarySupervisor; + emit SystemContractsChanged(newRatesContract, newMonetarySupervisor); + } + + function getProductCount() external view returns (uint) { + return products.length; + } + + // returns loan products starting from some : + // [ productId, minDisbursedAmount, term, discountRate, collateralRatio, defaultingFeePt, maxLoanAmount, isActive ] + function getProducts(uint offset, uint16 chunkSize) + external view returns (uint[8][]) { + uint limit = SafeMath.min(offset.add(chunkSize), products.length); + uint[8][] memory response = new uint[8][](limit.sub(offset)); + + for (uint i = offset; i < limit; i++) { + LoanProduct storage product = products[i]; + response[i - offset] = [i, product.minDisbursedAmount, product.term, product.discountRate, + product.collateralRatio, product.defaultingFeePt, + monetarySupervisor.getMaxLoanAmount(product.minDisbursedAmount), product.isActive ? 1 : 0 ]; + } + return response; + } + + function getLoanCount() external view returns (uint) { + return loans.length; + } + + /* returns loans starting from some . Loans data encoded as: + [loanId, collateralAmount, repaymentAmount, borrower, productId, + state, maturity, disbursementTime, loanAmount, interestAmount] */ + function getLoans(uint offset, uint16 chunkSize) + external view returns (uint[10][]) { + uint limit = SafeMath.min(offset.add(chunkSize), loans.length); + uint[10][] memory response = new uint[10][](limit.sub(offset)); + + for (uint i = offset; i < limit; i++) { + response[i - offset] = getLoanTuple(i); + } + return response; + } + + function getLoanCountForAddress(address borrower) external view returns (uint) { + return accountLoans[borrower].length; + } + + /* returns loans of a given account, starting from some . Loans data encoded as: + [loanId, collateralAmount, repaymentAmount, borrower, productId, state, maturity, disbursementTime, + loanAmount, interestAmount ] */ + function getLoansForAddress(address borrower, uint offset, uint16 chunkSize) + external view returns (uint[10][]) { + uint[] storage loansForAddress = accountLoans[borrower]; + uint limit = SafeMath.min(offset.add(chunkSize), loansForAddress.length); + uint[10][] memory response = new uint[10][](limit.sub(offset)); + + for (uint i = offset; i < limit; i++) { + response[i - offset] = getLoanTuple(loansForAddress[i]); + } + return response; + } + + function getLoanTuple(uint loanId) public view returns (uint[10] result) { + require(loanId < loans.length, "invalid loanId"); // next line would revert but require to emit reason + LoanData storage loan = loans[loanId]; + LoanProduct storage product = products[loan.productId]; + + uint loanAmount; + uint interestAmount; + (loanAmount, interestAmount) = calculateLoanValues(product, loan.repaymentAmount); + uint disbursementTime = loan.maturity - product.term; + + LoanState loanState = + loan.state == LoanState.Open && now >= loan.maturity ? LoanState.Defaulted : loan.state; + + result = [loanId, loan.collateralAmount, loan.repaymentAmount, uint(loan.borrower), + loan.productId, uint(loanState), loan.maturity, disbursementTime, loanAmount, interestAmount]; + } + + function calculateLoanValues(LoanProduct storage product, uint repaymentAmount) + internal view returns (uint loanAmount, uint interestAmount) { + // calculate loan values based on repayment amount + loanAmount = repaymentAmount.mul(product.discountRate).div(1000000); + interestAmount = loanAmount > repaymentAmount ? 0 : repaymentAmount.sub(loanAmount); + } + + /* internal function, assuming repayment amount already transfered */ + function _repayLoan(uint loanId, uint repaymentAmount) internal { + require(loanId < loans.length, "invalid loanId"); // next line would revert but require to emit reason + LoanData storage loan = loans[loanId]; + require(loan.state == LoanState.Open, "loan state must be Open"); + require(repaymentAmount == loan.repaymentAmount, "repaymentAmount must be equal to tokens sent"); + require(now <= loan.maturity, "current time must be earlier than maturity"); + + LoanProduct storage product = products[loan.productId]; + uint loanAmount; + uint interestAmount; + (loanAmount, interestAmount) = calculateLoanValues(product, loan.repaymentAmount); + + loans[loanId].state = LoanState.Repaid; + + if (interestAmount > 0) { + augmintToken.transfer(monetarySupervisor.interestEarnedAccount(), interestAmount); + augmintToken.burn(loanAmount); + } else { + // negative or zero interest (i.e. discountRate >= 0) + augmintToken.burn(repaymentAmount); + } + + monetarySupervisor.loanRepaymentNotification(loanAmount); // update KPIs + + loan.borrower.transfer(loan.collateralAmount); // send back ETH collateral + + emit LoanRepayed(loanId, loan.borrower); + } +} \ No newline at end of file diff --git a/migrations/1001_topup_interestEarnedAccount.js b/migrations/1001_topup_interestEarnedAccount.js index f465eb1c..4db70cb7 100644 --- a/migrations/1001_topup_interestEarnedAccount.js +++ b/migrations/1001_topup_interestEarnedAccount.js @@ -8,7 +8,7 @@ module.exports = function(deployer) { const tokenAEur = TokenAEur.at(TokenAEur.address); const loanManager = LoanManager.at(LoanManager.address); - await loanManager.newEthBackedLoan(0, { value: web3.toWei(0.1066) }); // = 50 A-EUR + await loanManager.newEthBackedLoan(0, 0, { value: web3.toWei(0.10845) }); // = 50 A-EUR await tokenAEur.transferWithNarrative( InterestEarnedAccount.address, diff --git a/migrations/1003_add_legacyContracts.js b/migrations/1003_add_legacyContracts.js index 0934a883..ee4ed0ba 100644 --- a/migrations/1003_add_legacyContracts.js +++ b/migrations/1003_add_legacyContracts.js @@ -5,7 +5,7 @@ const TokenAEur = artifacts.require("./TokenAEur.sol"); const Rates = artifacts.require("./Rates.sol"); const MonetarySupervisor = artifacts.require("./MonetarySupervisor.sol"); const Locker = artifacts.require("./Locker.sol"); -const LoanManager = artifacts.require("./LoanManager.sol"); +const LoanManager_1_0_12 = artifacts.require("./legacy/1.0.12/LoanManager_1_0_12.sol"); const Exchange = artifacts.require("./Exchange.sol"); module.exports = async function(deployer, network, accounts) { @@ -16,7 +16,7 @@ module.exports = async function(deployer, network, accounts) { const oldToken = await TokenAEur.new(accounts[0], FeeAccount.address); const oldLocker = await Locker.new(accounts[0], oldToken.address, MonetarySupervisor.address); - const oldLoanManager = await LoanManager.new( + const oldLoanManager = await LoanManager_1_0_12.new( accounts[0], oldToken.address, MonetarySupervisor.address, @@ -46,10 +46,9 @@ module.exports = async function(deployer, network, accounts) { /* LoanManager permissions & products */ monetarySupervisor.grantPermission(oldLoanManager.address, "LoanManager"), feeAccount.grantPermission(oldLoanManager.address, "NoTransferFee"), - oldLoanManager.addLoanProduct(1, 999999, 990000, 1000, 50000, true, 0), // defaults in 1 secs for testing ? p.a. - oldLoanManager.addLoanProduct(3600, 999989, 980000, 1000, 50000, true, 0), // due in 1hr for testing repayments ? p.a. - oldLoanManager.addLoanProduct(31536000, 860000, 550000, 1000, 50000, true, 0), // 365d, 14% p.a. - + oldLoanManager.addLoanProduct(1, 999999, 990000, 1000, 50000, true), // defaults in 1 secs for testing ? p.a. + oldLoanManager.addLoanProduct(3600, 999989, 980000, 1000, 50000, true), // due in 1hr for testing repayments ? p.a. + oldLoanManager.addLoanProduct(31536000, 860000, 550000, 1000, 50000, true), // 365d, 14% p.a. /* Exchange permissions */ feeAccount.grantPermission(oldExchange.address, "NoTransferFee") ]); @@ -61,9 +60,7 @@ module.exports = async function(deployer, network, accounts) { oldToken.transferAndNotify(oldLocker.address, 1600, 1), oldLoanManager.newEthBackedLoan(0, { value: web3.toWei(0.1) }), - oldLoanManager.newEthBackedLoan(1, { value: web3.toWei(0.11) }), - oldLoanManager.newEthBackedLoan(2, { value: web3.toWei(0.12) }), - + oldLoanManager.newEthBackedLoan(2, { value: web3.toWei(0.2) }), oldToken.transferAndNotify(oldExchange.address, 2000, 1010000), oldToken.transferAndNotify(oldExchange.address, 1100, 980000), oldExchange.placeBuyTokenOrder(990000, { value: web3.toWei(0.01) }), @@ -74,7 +71,7 @@ module.exports = async function(deployer, network, accounts) { ` *** On local ganache - deployed a set of legacy mock contracts for manual testing: TokenAEur: ${oldToken.address} Locker: ${oldLocker.address} - LoanManager: ${oldLoanManager.address} + LoanManager_1_0_12: ${oldLoanManager.address} Exchange: ${oldExchange.address}` ); }); diff --git a/migrations/2000_setRateDefault.js b/migrations/2000_setRateDefault.js new file mode 100644 index 00000000..37a124e4 --- /dev/null +++ b/migrations/2000_setRateDefault.js @@ -0,0 +1,12 @@ +// sets the current rate to the default value +// run it with: "truffle migrate -f 2000 --to 2000" or "setrate:default" + +const Rates = artifacts.require("./Rates.sol"); +const newRate = 99800; + +module.exports = function(deployer) { + deployer.then(async () => { + const rates = Rates.at(Rates.address); + await rates.setRate("EUR", newRate); + }); +}; diff --git a/migrations/2001_setRateLow.js b/migrations/2001_setRateLow.js new file mode 100644 index 00000000..ccbd0abd --- /dev/null +++ b/migrations/2001_setRateLow.js @@ -0,0 +1,12 @@ +// sets the current rate to a low value (for testing margin loans) +// run it with: "truffle migrate -f 2001 --to 2001" or "setrate:low" + +const Rates = artifacts.require("./Rates.sol"); +const newRate = 42500; + +module.exports = function(deployer) { + deployer.then(async () => { + const rates = Rates.at(Rates.address); + await rates.setRate("EUR", newRate); + }); +}; diff --git a/migrations/2002_setRateHigh.js b/migrations/2002_setRateHigh.js new file mode 100644 index 00000000..f65011ac --- /dev/null +++ b/migrations/2002_setRateHigh.js @@ -0,0 +1,12 @@ +// sets the current rate to a high value +// run it with: "truffle migrate -f 2002 --to 2002" or "setrate:high" + +const Rates = artifacts.require("./Rates.sol"); +const newRate = 225000; + +module.exports = function(deployer) { + deployer.then(async () => { + const rates = Rates.at(Rates.address); + await rates.setRate("EUR", newRate); + }); +}; diff --git a/package.json b/package.json index 6b029b66..1ca3f8d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@augmint/contracts", - "version": "1.0.12", + "version": "1.1.0", "description": "Augmint Stable Tokens - Solidity contract's abi and deployment descriptors", "author": "“Augmint”", "homepage": "https://github.com/Augmint/augmint-contracts#readme", @@ -25,6 +25,7 @@ }, "scripts": { "start": "yarn runmigrate", + "start_comp": "yarn runmigrate_comp", "build": "truffle compile", "clean": "rm build/contracts/*", "test": "truffle test --migrations_directory migrations_null", @@ -33,9 +34,10 @@ "compile": "yarn build", "ganache:run": "./scripts/runganache.sh", "ganache:stop": "echo TODO", - "runmigrate": "./scripts/runganache.sh & yarn migrate --reset && echo 'Migration done. Contracts deployed to ganache. Contract artifacts are in build/contracts folder.' & wait", + "runmigrate": "./scripts/runganache.sh & yarn migrate --reset --to 2000 && echo 'Migration done. Contracts deployed to ganache. Contract artifacts are in build/contracts folder.' & wait", + "runmigrate_comp": "./scripts/runganache_comp.sh & yarn migrate --reset --to 2000 && echo 'Migration done. Contracts deployed to ganache. Contract artifacts are in build/contracts folder.' & wait", "localchaindb:clean": "rm -rf localchaindb && mkdir localchaindb", - "localchaindb:build": "yarn localchaindb:clean && ./scripts/runganache.sh --db ./localchaindb & yarn migrate && echo 'Migration done. Ganache db in ./localchaindb folder.'", + "localchaindb:build": "yarn localchaindb:clean && ./scripts/runganache.sh --db ./localchaindb & yarn migrate --to 2000 && echo 'Migration done. Ganache db in ./localchaindb folder.'", "localchaindb:builddocker": "yarn localchaindb:build && yarn docker:build", "docker:build": "docker build . -t localdockerimage", "docker:run": "docker rm ganache ; docker run --init --name ganache -p 8545:8545 localdockerimage --db ./dockerLocalchaindb --gasLimit 0x694920 --gasPrice 1000000000 --networkId 999 -m \"hello build tongue rack parade express shine salute glare rate spice stock\" & wait", @@ -44,7 +46,10 @@ "docker:tag:build": "docker tag localdockerimage augmint/contracts:commit-$(git log -1 --format='%h'); docker tag localdockerimage augmint/contracts:build-$TRAVIS_BUILD_NUMBER", "docker:tag:staging": "docker tag localdockerimage augmint/contracts:staging;", "docker:tag:latest": "docker tag localdockerimage augmint/contracts:latest", - "docker:tag:version": "func () { docker tag localdockerimage augmint/contracts:${1}; }; func" + "docker:tag:version": "func () { docker tag localdockerimage augmint/contracts:${1}; }; func", + "setrate:default": "truffle migrate -f 2000 --to 2000", + "setrate:low": "truffle migrate -f 2001 --to 2001", + "setrate:high": "truffle migrate -f 2002 --to 2002" }, "devDependencies": { "abiniser": "0.5.1", diff --git a/rinkeby_migrations/10_deploy_Rinkeby_0011_setupSbProxySigners.js b/rinkeby_migrations/10_deploy_Rinkeby_0011_setupSbProxySigners.js new file mode 100644 index 00000000..686ba23a --- /dev/null +++ b/rinkeby_migrations/10_deploy_Rinkeby_0011_setupSbProxySigners.js @@ -0,0 +1,7 @@ +const Rinkeby_0011_setupSbProxySigners = artifacts.require("./Rinkeby_0011_setupSbProxySigners.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Rinkeby_0011_setupSbProxySigners); + }); +}; \ No newline at end of file diff --git a/rinkeby_migrations/11_deploy_Rinkeby_0012_noTransferFee.js b/rinkeby_migrations/11_deploy_Rinkeby_0012_noTransferFee.js new file mode 100644 index 00000000..0ba3673e --- /dev/null +++ b/rinkeby_migrations/11_deploy_Rinkeby_0012_noTransferFee.js @@ -0,0 +1,7 @@ +const Rinkeby_0012_noTransferFee = artifacts.require("./Rinkeby_0012_noTransferFee.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Rinkeby_0012_noTransferFee); + }); +}; diff --git a/rinkeby_migrations/7_deploy_loanmanager_and_sbproxy.js b/rinkeby_migrations/7_deploy_loanmanager_and_sbproxy.js new file mode 100644 index 00000000..803b093c --- /dev/null +++ b/rinkeby_migrations/7_deploy_loanmanager_and_sbproxy.js @@ -0,0 +1,17 @@ +const StabilityBoardProxy = artifacts.require("./StabilityBoardProxy.sol"); +const LoanManager = artifacts.require("./LoanManager.sol"); + +const TokenAEurAddress = "0x79065a165Ec09E6A89D584a14872802717FE12a3"; +const MonetarySupervisorAddress = "0x4A7F6EcbE8B324A55b85adcc45313A412957B8ea"; +const RatesAddress = "0xEE8C7a3e99945A5207Dca026504d67527125Da9C"; + +module.exports = function(deployer) { + deployer.then(async () => { + + // ### StabilityBoardProxy ### + await deployer.deploy(StabilityBoardProxy); + + // ### LoanManager ### + await deployer.deploy(LoanManager, StabilityBoardProxy.address, TokenAEurAddress, MonetarySupervisorAddress, RatesAddress); + }); +}; \ No newline at end of file diff --git a/rinkeby_migrations/8_deploy_Rinkeby_0009_migrateToNewProxy.js b/rinkeby_migrations/8_deploy_Rinkeby_0009_migrateToNewProxy.js new file mode 100644 index 00000000..f4460600 --- /dev/null +++ b/rinkeby_migrations/8_deploy_Rinkeby_0009_migrateToNewProxy.js @@ -0,0 +1,7 @@ +const Rinkeby_0009_migrateToNewProxy = artifacts.require("./Rinkeby_0009_migrateToNewProxy.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Rinkeby_0009_migrateToNewProxy); + }); +}; \ No newline at end of file diff --git a/rinkeby_migrations/9_deploy_Rinkeby_0010_setupNewLoanManager.js b/rinkeby_migrations/9_deploy_Rinkeby_0010_setupNewLoanManager.js new file mode 100644 index 00000000..e1282f93 --- /dev/null +++ b/rinkeby_migrations/9_deploy_Rinkeby_0010_setupNewLoanManager.js @@ -0,0 +1,7 @@ +const Rinkeby_0010_setupNewLoanManager = artifacts.require("./Rinkeby_0010_setupNewLoanManager.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Rinkeby_0010_setupNewLoanManager); + }); +}; \ No newline at end of file diff --git a/scripts/runganache_comp.sh b/scripts/runganache_comp.sh new file mode 100755 index 00000000..24c16abd --- /dev/null +++ b/scripts/runganache_comp.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +echo "launching ganache-cli (aka testrpc) with deterministic addresses in compatibility mode" +yarn ganache-cli \ +--gasLimit 0x694920 \ +--gasPrice 1000000000 \ +--networkId 999 \ +--noVMErrorsOnRPCResponse \ +--blockTime 1 \ +-m "hello build tongue rack parade express shine salute glare rate spice stock" \ +"${@}" \ No newline at end of file diff --git a/test/helpers/loanTestHelpers.js b/test/helpers/loanTestHelpers.js index 297b51b9..ea8fc30f 100644 --- a/test/helpers/loanTestHelpers.js +++ b/test/helpers/loanTestHelpers.js @@ -44,7 +44,7 @@ before(async function() { rates = Rates.at(Rates.address); }); -async function createLoan(testInstance, product, borrower, collateralWei) { +async function createLoan(testInstance, product, borrower, collateralWei, minRate = 0) { const loan = await calcLoanValues(rates, product, collateralWei); loan.state = 0; loan.borrower = borrower; @@ -60,7 +60,7 @@ async function createLoan(testInstance, product, borrower, collateralWei) { }) ]); - const tx = await loanManager.newEthBackedLoan(loan.product.id, { + const tx = await loanManager.newEthBackedLoan(loan.product.id, minRate, { from: loan.borrower, value: loan.collateralAmount }); @@ -74,7 +74,8 @@ async function createLoan(testInstance, product, borrower, collateralWei) { collateralAmount: loan.collateralAmount.toString(), loanAmount: loan.loanAmount.toString(), repaymentAmount: loan.repaymentAmount.toString(), - maturity: x => x + maturity: x => x, + currentRate: x => x }), testHelpers.assertEvent(augmintToken, "AugmintTransfer", { @@ -95,6 +96,7 @@ async function createLoan(testInstance, product, borrower, collateralWei) { loan.id = newLoanEvenResult.loanId.toNumber(); loan.maturity = newLoanEvenResult.maturity.toNumber(); + loan.currentRate = newLoanEvenResult.currentRate.toNumber(); const [totalSupplyAfter, totalLoanAmountAfter, ,] = await Promise.all([ augmintToken.totalSupply(), @@ -151,9 +153,10 @@ async function repayLoan(testInstance, loan) { augmintToken.totalSupply(), monetarySupervisor.totalLoanAmount(), - testHelpers.assertEvent(loanManager, "LoanRepayed", { + testHelpers.assertEvent(loanManager, "LoanRepaid", { loanId: loan.id, - borrower: loan.borrower + borrower: loan.borrower, + currentRate: x => x }), /* TODO: these are emmited but why not picked up by assertEvent? */ @@ -269,7 +272,8 @@ async function collectLoan(testInstance, loan, collector) { borrower: loan.borrower, collectedCollateral: collectedCollateral.toString(), releasedCollateral: releasedCollateral.toString(), - defaultingFee: defaultingFee.toString() + defaultingFee: defaultingFee.toString(), + currentRate: x => x }), loanAsserts(loan), @@ -317,7 +321,7 @@ async function getProductsInfo(offset, chunkSize) { minDisbursedAmount, term, discountRate, - collateralRatio, + initialCollateralRatio, defaultingFeePt, maxLoanAmount, isActive, @@ -329,7 +333,7 @@ async function getProductsInfo(offset, chunkSize) { minDisbursedAmount, term, discountRate, - collateralRatio, + initialCollateralRatio, defaultingFeePt, maxLoanAmount, isActive, @@ -385,8 +389,8 @@ async function calcLoanValues(rates, product, collateralWei) { ret.tokenValue = await rates.convertFromWei(peggedSymbol, collateralWei); ret.repaymentAmount = ret.tokenValue - .mul(product.collateralRatio) - .div(ppmDiv) + .mul(ppmDiv) + .div(product.initialCollateralRatio) .round(0, BigNumber.ROUND_DOWN); ret.loanAmount = ret.repaymentAmount diff --git a/test/loanCollection.js b/test/loanCollection.js index b7c51dbc..838401e9 100644 --- a/test/loanCollection.js +++ b/test/loanCollection.js @@ -29,15 +29,15 @@ contract("Loans collection tests", accounts => { ) ]); // These neeed to be sequential b/c product order assumed when retrieving via getProducts - // term (in sec), discountRate, loanCoverageRatio, minDisbursedAmount (w/ 2 decimals), defaultingFeePt, isActive, minCollateralRatio - await loanManager.addLoanProduct(86400, 970000, 850000, 3000, 50000, true, 0); // notDue - await loanManager.addLoanProduct(1, 970000, 850000, 1000, 50000, true, 0); // defaulting - await loanManager.addLoanProduct(1, 900000, 900000, 1000, 100000, true, 0); // defaultingNoLeftOver - await loanManager.addLoanProduct(1, 1000000, 900000, 2000, 50000, true, 0); // zeroInterest - await loanManager.addLoanProduct(1, 1100000, 900000, 2000, 50000, true, 0); // negativeInterest + // term (in sec), discountRate, initialCollateralRatio, minDisbursedAmount (w/ 2 decimals), defaultingFeePt, isActive, minCollateralRatio + await loanManager.addLoanProduct(86400, 970000, 1176471, 3000, 50000, true, 0); // notDue + await loanManager.addLoanProduct(1, 970000, 1176471, 1000, 50000, true, 0); // defaulting + await loanManager.addLoanProduct(1, 900000, 1111111, 1000, 100000, true, 0); // defaultingNoLeftOver + await loanManager.addLoanProduct(1, 1000000, 1111111, 2000, 50000, true, 0); // zeroInterest + await loanManager.addLoanProduct(1, 1100000, 1111111, 2000, 50000, true, 0); // negativeInterest await loanManager.addLoanProduct(1, 990000, 1000000, 2000, 50000, true, 0); // fullCoverage - await loanManager.addLoanProduct(1, 990000, 1200000, 2000, 50000, true, 0); // moreCoverage - await loanManager.addLoanProduct(86400, 970000, 625000, 3000, 50000, true, 1200000); // with margin (collateral ratio: initial = 160%, minimum = 120%) (1/1.6 = 0.625) + await loanManager.addLoanProduct(1, 990000, 833333, 2000, 50000, true, 0); // moreCoverage + await loanManager.addLoanProduct(86400, 970000, 1600000, 3000, 50000, true, 1200000); // with margin (collateral ratio: initial = 160%, minimum = 120%) const [newProducts] = await Promise.all([ loanTestHelpers.getProductsInfo(prodCount, 10), @@ -72,7 +72,7 @@ contract("Loans collection tests", accounts => { this, products.defaulting, accounts[1], - global.web3v1.utils.toWei("0.5") + global.web3v1.utils.toWei("0.05") ); await testHelpers.waitForTimeStamp(loan.maturity); @@ -144,7 +144,7 @@ contract("Loans collection tests", accounts => { await loanTestHelpers.collectLoan(this, loan, accounts[2]); }); - it("Should get and collect a loan with collateralRatio = 1", async function() { + it("Should get and collect a loan with initialCollateralRatio = 1", async function() { const loan = await loanTestHelpers.createLoan( this, products.fullCoverage, @@ -155,7 +155,7 @@ contract("Loans collection tests", accounts => { await loanTestHelpers.collectLoan(this, loan, accounts[2]); }); - it("Should get and collect a loan with collateralRatio > 1", async function() { + it("Should get and collect a loan with initialCollateralRatio < 1", async function() { const loan = await loanTestHelpers.createLoan( this, products.moreCoverage, @@ -169,15 +169,15 @@ contract("Loans collection tests", accounts => { it("Should collect multiple defaulted loans", async function() { const loanCount = (await loanManager.getLoanCount()).toNumber(); await Promise.all([ - loanManager.newEthBackedLoan(products.zeroInterest.id, { + loanManager.newEthBackedLoan(products.zeroInterest.id, 0 ,{ from: accounts[0], value: global.web3v1.utils.toWei("0.05") }), - loanManager.newEthBackedLoan(products.fullCoverage.id, { + loanManager.newEthBackedLoan(products.fullCoverage.id, 0, { from: accounts[1], value: global.web3v1.utils.toWei("0.05") }), - loanManager.newEthBackedLoan(products.negativeInterest.id, { + loanManager.newEthBackedLoan(products.negativeInterest.id, 0, { from: accounts[1], value: global.web3v1.utils.toWei("0.05") }) @@ -192,11 +192,11 @@ contract("Loans collection tests", accounts => { it("Should NOT collect multiple loans if one is not due", async function() { const loanCount = (await loanManager.getLoanCount()).toNumber(); await Promise.all([ - loanManager.newEthBackedLoan(products.notDue.id, { + loanManager.newEthBackedLoan(products.notDue.id, 0, { from: accounts[0], value: global.web3v1.utils.toWei("0.05") }), - loanManager.newEthBackedLoan(products.defaulting.id, { + loanManager.newEthBackedLoan(products.defaulting.id, 0, { from: accounts[1], value: global.web3v1.utils.toWei("0.05") }) @@ -305,6 +305,14 @@ contract("Loans collection tests", accounts => { }); testHelpers.logGasUse(this, tx, "addExtraCollateral"); + testHelpers.assertEvent(loanManager, "LoanChanged", { + loanId: loan.id, + borrower: loan.borrower, + collateralAmount: global.web3v1.utils.toWei("0.1").toString(), + repaymentAmount: loan.repaymentAmount.toString(), + currentRate: (await rates.rates("EUR"))[0].toString() + }); + // should not be collectable assert(await isCollectable(loan.id) === 0); await testHelpers.expectThrow(loanManager.collect([loan.id])); diff --git a/test/loanManager.js b/test/loanManager.js index 73a4994b..7d89b324 100644 --- a/test/loanManager.js +++ b/test/loanManager.js @@ -22,7 +22,7 @@ contract("loanManager tests", accounts => { minDisbursedAmount: 3000, term: 86400, discountRate: 970000, - collateralRatio: 850000, + initialCollateralRatio: 1176471, defaultingFeePt: 50000, isActive: true, minCollateralRatio: 0 @@ -30,7 +30,7 @@ contract("loanManager tests", accounts => { await loanManager.addLoanProduct( loanProduct.term, loanProduct.discountRate, - loanProduct.collateralRatio, + loanProduct.initialCollateralRatio, loanProduct.minDisbursedAmount, loanProduct.defaultingFeePt, loanProduct.isActive, @@ -83,7 +83,7 @@ contract("loanManager tests", accounts => { minDisbursedAmount: 3000, term: 86400, discountRate: 970000, - collateralRatio: 850000, + initialCollateralRatio: 1176471, defaultingFeePt: 50000, isActive: true, minCollateralRatio: 0 @@ -91,7 +91,7 @@ contract("loanManager tests", accounts => { const tx = await loanManager.addLoanProduct( prod.term, prod.discountRate, - prod.collateralRatio, + prod.initialCollateralRatio, prod.minDisbursedAmount, prod.defaultingFeePt, prod.isActive, @@ -121,7 +121,7 @@ contract("loanManager tests", accounts => { assert.equal(lastProduct.id.toNumber(), prod.id); assert.equal(lastProduct.term.toNumber(), prod.term); assert.equal(lastProduct.discountRate.toNumber(), prod.discountRate); - assert.equal(lastProduct.collateralRatio.toNumber(), prod.collateralRatio); + assert.equal(lastProduct.initialCollateralRatio.toNumber(), prod.initialCollateralRatio); assert.equal(lastProduct.minDisbursedAmount.toNumber(), prod.minDisbursedAmount); assert.equal(lastProduct.defaultingFeePt.toNumber(), prod.defaultingFeePt); const expMaxLoanAmount = await tokenTestHelpers.monetarySupervisor.getMaxLoanAmount( @@ -137,7 +137,7 @@ contract("loanManager tests", accounts => { minDisbursedAmount: 3000, term: 86400, discountRate: 970000, - collateralRatio: 850000, + initialCollateralRatio: 1176471, defaultingFeePt: 50000, isActive: true, minCollateralRatio: 0 @@ -145,7 +145,7 @@ contract("loanManager tests", accounts => { const tx = await loanManager.addLoanProduct( prod.term, prod.discountRate, - prod.collateralRatio, + prod.initialCollateralRatio, prod.minDisbursedAmount, prod.defaultingFeePt, prod.isActive, @@ -164,7 +164,7 @@ contract("loanManager tests", accounts => { assert.equal(lastProduct.id.toNumber(), prod.id); assert.equal(lastProduct.term.toNumber(), prod.term); assert.equal(lastProduct.discountRate.toNumber(), prod.discountRate); - assert.equal(lastProduct.collateralRatio.toNumber(), prod.collateralRatio); + assert.equal(lastProduct.initialCollateralRatio.toNumber(), prod.initialCollateralRatio); assert.equal(lastProduct.minDisbursedAmount.toNumber(), prod.minDisbursedAmount); assert.equal(lastProduct.defaultingFeePt.toNumber(), prod.defaultingFeePt); const expMaxLoanAmount = await tokenTestHelpers.monetarySupervisor.getMaxLoanAmount( diff --git a/test/loanToDepositRatioLimits.js b/test/loanToDepositRatioLimits.js index d2bb0215..f4625dbe 100644 --- a/test/loanToDepositRatioLimits.js +++ b/test/loanToDepositRatioLimits.js @@ -169,7 +169,7 @@ contract("Loan to Deposit ratio tests", accounts => { it("LTD when totalLock = 0 and totalLoan > 0 and allowed difference amount is in effect", async function() { // get a loan const collateralAmount = global.web3v1.utils.toWei((3000 / rate).toString()); - await loanManager.newEthBackedLoan(loanProductId, { value: collateralAmount }); + await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // Earned interest 0 let limits = await getLtdLimits(); @@ -198,7 +198,7 @@ contract("Loan to Deposit ratio tests", accounts => { it("LTD when totalLock = totalLoan and allowed difference amount is in effect", async function() { // get a loan const collateralAmount = global.web3v1.utils.toWei((3000 / rate).toString()); - await loanManager.newEthBackedLoan(loanProductId, { value: collateralAmount }); + await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // lock the same amount const amountToLock = 3000; @@ -236,7 +236,7 @@ contract("Loan to Deposit ratio tests", accounts => { // get a loan const collateralAmount = global.web3v1.utils.toWei((640000 / rate).toString()); - await loanManager.newEthBackedLoan(loanProductId, { value: collateralAmount }); + await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // lock less than the loan const amountToLock = 600000; @@ -281,7 +281,7 @@ contract("Loan to Deposit ratio tests", accounts => { // get a loan const collateralAmount = global.web3v1.utils.toWei((640000 / rate).toString()); - await loanManager.newEthBackedLoan(loanProductId, { value: collateralAmount }); + await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // lock less than the loan const amountToLock = 600000; @@ -322,7 +322,7 @@ contract("Loan to Deposit ratio tests", accounts => { // get a loan const collateralAmount = global.web3v1.utils.toWei((600000 / rate).toString()); - await loanManager.newEthBackedLoan(loanProductId, { value: collateralAmount }); + await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // lock more than the loan const amountToLock = 640000; @@ -367,7 +367,7 @@ contract("Loan to Deposit ratio tests", accounts => { // get a loan const collateralAmount = global.web3v1.utils.toWei((359974 / rate).toString()); - await loanManager.newEthBackedLoan(loanProductId, { value: collateralAmount }); + await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // lock more than the loan const amountToLock = 410000; @@ -420,6 +420,6 @@ contract("Loan to Deposit ratio tests", accounts => { it("should NOT allow to borrow more than maxLoanAmountAllowedByLtd ", async function() { const collateralAmount = global.web3v1.utils.toWei(((ltdParams.allowedDifferenceAmount + 1) / rate).toString()); - await testHelpers.expectThrow(loanManager.newEthBackedLoan(loanProductId, { value: collateralAmount })); + await testHelpers.expectThrow(loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount })); }); }); diff --git a/test/loans.js b/test/loans.js index 7cf33032..d6fba83c 100644 --- a/test/loans.js +++ b/test/loans.js @@ -37,16 +37,16 @@ contract("Loans tests", accounts => { ) ]); // These neeed to be sequential b/c product order assumed when retrieving via getProducts - // term (in sec), discountRate, loanCoverageRatio, minDisbursedAmount (w/ 2 decimals), defaultingFeePt, isActive, minCollateralRatio - await loanManager.addLoanProduct(86400, 970000, 850000, 3000, 50000, true, 0); // notDue - await loanManager.addLoanProduct(60, 985000, 900000, 2000, 50000, true, 0); // repaying - await loanManager.addLoanProduct(1, 970000, 850000, 1000, 50000, true, 0); // defaulting - await loanManager.addLoanProduct(1, 990000, 990000, 1000, 50000, false, 0); // disabledProduct - await loanManager.addLoanProduct(60, 1000000, 900000, 2000, 50000, true, 0); // zeroInterest - await loanManager.addLoanProduct(60, 1100000, 900000, 2000, 50000, true, 0); // negativeInterest + // term (in sec), discountRate, initialCollateralRatio, minDisbursedAmount (w/ 2 decimals), defaultingFeePt, isActive, minCollateralRatio + await loanManager.addLoanProduct(86400, 970000, 1176471, 3000, 50000, true, 0); // notDue + await loanManager.addLoanProduct(60, 985000, 1111111, 2000, 50000, true, 0); // repaying + await loanManager.addLoanProduct(1, 970000, 1176471, 1000, 50000, true, 0); // defaulting + await loanManager.addLoanProduct(1, 990000, 1010101, 1000, 50000, false, 0); // disabledProduct + await loanManager.addLoanProduct(60, 1000000, 1111111, 2000, 50000, true, 0); // zeroInterest + await loanManager.addLoanProduct(60, 1100000, 1111111, 2000, 50000, true, 0); // negativeInterest await loanManager.addLoanProduct(60, 990000, 1000000, 2000, 50000, true, 0); // fullCoverage - await loanManager.addLoanProduct(60, 990000, 1200000, 2000, 50000, true, 0); // moreCoverage - await loanManager.addLoanProduct(86400, 970000, 625000, 3000, 50000, true, 1200000); // with margin (collateral ratio: initial = 160%, minimum = 120%) (1/1.6 = 0.625) + await loanManager.addLoanProduct(60, 990000, 833333, 2000, 50000, true, 0); // moreCoverage + await loanManager.addLoanProduct(86400, 970000, 1600000, 3000, 50000, true, 1200000); // with margin (collateral ratio: initial = 160%, minimum = 120%) const [newProducts] = await Promise.all([ loanTestHelpers.getProductsInfo(prodCount, CHUNK_SIZE), @@ -81,6 +81,18 @@ contract("Loans tests", accounts => { await loanTestHelpers.createLoan(this, products.repaying, accounts[0], global.web3v1.utils.toWei("0.5")); }); + it("Should get an A-EUR loan if current rate is not below minRate", async function() { + const minRate = 22020; + await rates.setRate("EUR", minRate); + await loanTestHelpers.createLoan(this, products.repaying, accounts[1], global.web3v1.utils.toWei("0.5"), minRate); + }); + + it("Should NOT get an A-EUR loan if current rate is below minRate", async function() { + const minRate = 22020; + await rates.setRate("EUR", minRate - 1); + await testHelpers.expectThrow(loanManager.newEthBackedLoan(products.repaying.id, minRate, { from: accounts[1], value: global.web3v1.utils.toWei("0.5") })); + }); + it("Should NOT get a loan less than minDisbursedAmount", async function() { const prod = products.repaying; const loanAmount = prod.minDisbursedAmount @@ -89,16 +101,16 @@ contract("Loans tests", accounts => { .mul(1000000) .round(0, BigNumber.ROUND_DOWN); const weiAmount = (await rates.convertToWei(tokenTestHelpers.peggedSymbol, loanAmount)) - .div(prod.collateralRatio) + .div(prod.initialCollateralRatio) .mul(1000000) .round(0, BigNumber.ROUND_DOWN); - await testHelpers.expectThrow(loanManager.newEthBackedLoan(prod.id, { from: accounts[0], value: weiAmount })); + await testHelpers.expectThrow(loanManager.newEthBackedLoan(prod.id, 0, { from: accounts[0], value: weiAmount })); }); it("Shouldn't get a loan for a disabled product", async function() { await testHelpers.expectThrow( - loanManager.newEthBackedLoan(products.disabledProduct.id, { + loanManager.newEthBackedLoan(products.disabledProduct.id, 0, { from: accounts[0], value: global.web3v1.utils.toWei("0.05") }) @@ -171,9 +183,11 @@ contract("Loans tests", accounts => { from: accounts[0] }); - await testHelpers.assertEvent(loanManager, "LoanRepayed", { + const currentRate = (await rates.rates("EUR"))[0].toNumber(); + await testHelpers.assertEvent(loanManager, "LoanRepaid", { loanId: loan.id, - borrower: loan.borrower + borrower: loan.borrower, + currentRate: currentRate }); }); @@ -249,7 +263,7 @@ contract("Loans tests", accounts => { it("Should not get a loan when rates = 0", async function() { await rates.setRate("EUR", 0); await testHelpers.expectThrow( - loanManager.newEthBackedLoan(products.repaying.id, { + loanManager.newEthBackedLoan(products.repaying.id, 0, { from: accounts[1], value: global.web3v1.utils.toWei("0.1") }) @@ -354,11 +368,11 @@ contract("Loans tests", accounts => { await craftedLender.addLoanProduct(100000, 1000000, 1000000, 1000, 50000, true, 0); // testing Lender not having "LoanManager" permission on monetarySupervisor: - await testHelpers.expectThrow(craftedLender.newEthBackedLoan(0, { value: global.web3v1.utils.toWei("0.05") })); + await testHelpers.expectThrow(craftedLender.newEthBackedLoan(0, 0, { value: global.web3v1.utils.toWei("0.05") })); // grant permission to create new loan await monetarySupervisor.grantPermission(craftedLender.address, "LoanManager"); - await craftedLender.newEthBackedLoan(0, { value: global.web3v1.utils.toWei("0.05") }); + await craftedLender.newEthBackedLoan(0, 0, { value: global.web3v1.utils.toWei("0.05") }); // revoke permission and try to repay await monetarySupervisor.revokePermission(craftedLender.address, "LoanManager"), @@ -407,6 +421,7 @@ contract("Loans tests", accounts => { assert.equal(loan.loanAmount.toNumber(), 3025); // = 3118 * 0.97, round up (token) assert.equal(loan.interestAmount.toNumber(), 93); // = 3118 - 3025 (token) assert.equal(loan.state, 0); // = "Open" + assert.equal(loan.currentRate, 99800); // assert LoanData has proper numbers stored const loanInfo = loanTestHelpers.parseLoansInfo(await loanManager.getLoans(loan.id, 1)); @@ -436,6 +451,14 @@ contract("Loans tests", accounts => { }); testHelpers.logGasUse(this, tx, "addExtraCollateral"); + testHelpers.assertEvent(loanManager, "LoanChanged", { + loanId: loan.id, + borrower: loan.borrower, + collateralAmount: global.web3v1.utils.toWei("0.1").toString(), + repaymentAmount: loan.repaymentAmount.toString(), + currentRate: (await rates.rates("EUR"))[0].toString() + }); + // collateralAmount should double up, marginCallRate get halved const loanInfo3 = loanTestHelpers.parseLoansInfo(await loanManager.getLoans(loan.id, 1)); assert.equal(loanInfo3[0].collateralAmount.toNumber(), 2 * 5e16); From 24f1b07eabbf6318beb55ab6fa4716278392caf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= <38250343+treerz@users.noreply.github.com> Date: Mon, 16 Sep 2019 13:18:03 +0200 Subject: [PATCH 19/38] margin loanmanager mainnet deploy (#253) * scripts: deploy loanmanager * scripts: loanmanager permission setup script * abiniser: deployment info for mainnet loanmanager (manual) * scripts: loanmanager product setup script * bump package version to 1.1.1 --- .../deployments/1/LoanManager_DEPLOYS.json | 19 ++++++++- ...Main0029_setup_loanmanager_permissions.sol | 31 ++++++++++++++ .../Main0030_setup_loanmanager_products.sol | 42 +++++++++++++++++++ mainnet_migrations/41_deploy_LoanManager.js | 13 ++++++ mainnet_migrations/42_deploy_Main0029.js | 7 ++++ mainnet_migrations/43_deploy_Main0030.js | 7 ++++ package.json | 2 +- 7 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 contracts/SB_scripts/mainnet/Main0029_setup_loanmanager_permissions.sol create mode 100644 contracts/SB_scripts/mainnet/Main0030_setup_loanmanager_products.sol create mode 100644 mainnet_migrations/41_deploy_LoanManager.js create mode 100644 mainnet_migrations/42_deploy_Main0029.js create mode 100644 mainnet_migrations/43_deploy_Main0030.js diff --git a/abiniser/deployments/1/LoanManager_DEPLOYS.json b/abiniser/deployments/1/LoanManager_DEPLOYS.json index 591f5585..672614da 100644 --- a/abiniser/deployments/1/LoanManager_DEPLOYS.json +++ b/abiniser/deployments/1/LoanManager_DEPLOYS.json @@ -1,6 +1,6 @@ { "contractName": "LoanManager", - "latestAbiHash": "fdf5fde95aa940c6dbfb8353c572c5fb", + "latestAbiHash": "753a73f4b2140507197a8f80bff47b40", "deployedAbis": { "ec709c3341045caa3a75374b8cfc7286": { "latestDeployedAddress": "0xcbefaf199b800deeb9ead61f358ee46e06c54070", @@ -35,6 +35,23 @@ "sourceHash": "234fd5848af85ca2444c888fd6ba61aa" } } + }, + "753a73f4b2140507197a8f80bff47b40": { + "latestDeployedAddress": "0xEb57c12b1E69b4d10b1eD7a33231d31b811464b7", + "deployments": { + "0xEb57c12b1E69b4d10b1eD7a33231d31b811464b7": { + "generatedAt": "2019-09-13T14:30:00.000Z", + "truffleContractFileUpdatedAt": "2019-09-13T14:30:00.000Z", + "deployTransactionHash": "0xb45487a7a400844d3ee9acff1975eb38229e996835cf9ddc79f6ebdb083afb61", + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "bytecodeHash": "4408d1ad57d708e0d0664838e6f10136", + "deployedBytecodeHash": "05ee93b22e275d2ea639c2fcb1284dfa", + "sourceHash": "78a783ccd39197b8ac7ef2cb49cc243c" + } + } } } } \ No newline at end of file diff --git a/contracts/SB_scripts/mainnet/Main0029_setup_loanmanager_permissions.sol b/contracts/SB_scripts/mainnet/Main0029_setup_loanmanager_permissions.sol new file mode 100644 index 00000000..2d28516d --- /dev/null +++ b/contracts/SB_scripts/mainnet/Main0029_setup_loanmanager_permissions.sol @@ -0,0 +1,31 @@ +/* Setup new margin loan manager permissions */ + +pragma solidity 0.4.24; + +import "../../LoanManager.sol"; +import "../../StabilityBoardProxy.sol"; +import "../../FeeAccount.sol"; +import "../../MonetarySupervisor.sol"; + +contract Main0029_setup_loanmanager_permissions { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0xde36a8773531406dCBefFdfd3C7b89fCed7A9F84); + LoanManager public constant LOAN_MANAGER = LoanManager(0xEb57c12b1E69b4d10b1eD7a33231d31b811464b7); + + FeeAccount public constant FEE_ACCOUNT = FeeAccount(0xE3ED84A163b9EeaF4f69B4890ae45cC52171Aa7E); + MonetarySupervisor public constant MONETARY_SUPERVISOR = MonetarySupervisor(0x27484AFe9e6c332fB07F21Fac82d442EBe1D22c3); + + function execute(Main0029_setup_loanmanager_permissions /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + // StabilityBoard permission + LOAN_MANAGER.grantPermission(address(STABILITY_BOARD_PROXY), "StabilityBoard"); + + // NoTransferFee permission + FEE_ACCOUNT.grantPermission(address(LOAN_MANAGER), "NoTransferFee"); + + // LoanManager permission + MONETARY_SUPERVISOR.grantPermission(address(LOAN_MANAGER), "LoanManager"); + } +} \ No newline at end of file diff --git a/contracts/SB_scripts/mainnet/Main0030_setup_loanmanager_products.sol b/contracts/SB_scripts/mainnet/Main0030_setup_loanmanager_products.sol new file mode 100644 index 00000000..ba275220 --- /dev/null +++ b/contracts/SB_scripts/mainnet/Main0030_setup_loanmanager_products.sol @@ -0,0 +1,42 @@ +/* Setup new margin loan manager products, disable old loanamnager products */ + +pragma solidity 0.4.24; + +import "../../LoanManager.sol"; +import "../../StabilityBoardProxy.sol"; + +contract Main0030_setup_loanmanager_products { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0xde36a8773531406dCBefFdfd3C7b89fCed7A9F84); + LoanManager public constant LOAN_MANAGER = LoanManager(0xEb57c12b1E69b4d10b1eD7a33231d31b811464b7); + LoanManager public constant OLD_LOAN_MANAGER = LoanManager(0x1cABc34618ecf2949F0405A86353e7705E01C38b); + + function execute(Main0030_setup_loanmanager_products /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + /****************************************************************************** + * Add loan products + ******************************************************************************/ + // term (in sec), discountRate, initialCollateralRatio (ppm), minDisbursedAmount (token), + // defaultingFeePt (ppm), isActive, minCollateralRatio (ppm) + // 4.9% => [976406, 988063, 995989, 998125, 999062] + + LOAN_MANAGER.addLoanProduct(180 days, 976406, 1600000, 800, 100000, true, 1200000); + LOAN_MANAGER.addLoanProduct(90 days, 988063, 1600000, 800, 100000, true, 1200000); + LOAN_MANAGER.addLoanProduct(30 days, 995989, 1600000, 800, 100000, true, 1200000); + LOAN_MANAGER.addLoanProduct(14 days, 998125, 1600000, 800, 100000, true, 1200000); + LOAN_MANAGER.addLoanProduct(7 days, 999062, 1600000, 800, 100000, true, 1200000); + + + /****************************************************************************** + * Disable previous loan products + ******************************************************************************/ + + OLD_LOAN_MANAGER.setLoanProductActiveState(6, false); + OLD_LOAN_MANAGER.setLoanProductActiveState(7, false); + OLD_LOAN_MANAGER.setLoanProductActiveState(8, false); + OLD_LOAN_MANAGER.setLoanProductActiveState(9, false); + OLD_LOAN_MANAGER.setLoanProductActiveState(10, false); + } +} \ No newline at end of file diff --git a/mainnet_migrations/41_deploy_LoanManager.js b/mainnet_migrations/41_deploy_LoanManager.js new file mode 100644 index 00000000..30c19448 --- /dev/null +++ b/mainnet_migrations/41_deploy_LoanManager.js @@ -0,0 +1,13 @@ +/* deploy new (margin) LoanManager contract */ +const LoanManager = artifacts.require("./LoanManager.sol"); + +const STABILITYBOARD_PROXY_ADDRESS = "0xde36a8773531406dCBefFdfd3C7b89fCed7A9F84"; +const TOKENAEUR_ADDRESS = "0xc994a2dEb02543Db1f48688438b9903c4b305ce3"; +const MONETARY_SUPERVISOR_ADDRESS = "0x27484AFe9e6c332fB07F21Fac82d442EBe1D22c3"; +const RATES_ADDRESS = "0x4272dB2EB82068E898588C3D6e4B5D55c3848793"; + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(LoanManager, STABILITYBOARD_PROXY_ADDRESS, TOKENAEUR_ADDRESS, MONETARY_SUPERVISOR_ADDRESS, RATES_ADDRESS); + }); +}; \ No newline at end of file diff --git a/mainnet_migrations/42_deploy_Main0029.js b/mainnet_migrations/42_deploy_Main0029.js new file mode 100644 index 00000000..0d695c33 --- /dev/null +++ b/mainnet_migrations/42_deploy_Main0029.js @@ -0,0 +1,7 @@ +const Main0029_setup_loanmanager_permissions = artifacts.require("./Main0029_setup_loanmanager_permissions.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Main0029_setup_loanmanager_permissions); + }); +}; \ No newline at end of file diff --git a/mainnet_migrations/43_deploy_Main0030.js b/mainnet_migrations/43_deploy_Main0030.js new file mode 100644 index 00000000..9c633b8e --- /dev/null +++ b/mainnet_migrations/43_deploy_Main0030.js @@ -0,0 +1,7 @@ +const Main0030_setup_loanmanager_products = artifacts.require("./Main0030_setup_loanmanager_products.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Main0030_setup_loanmanager_products); + }); +}; \ No newline at end of file diff --git a/package.json b/package.json index 1ca3f8d5..cd4cc792 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@augmint/contracts", - "version": "1.1.0", + "version": "1.1.1", "description": "Augmint Stable Tokens - Solidity contract's abi and deployment descriptors", "author": "“Augmint”", "homepage": "https://github.com/Augmint/augmint-contracts#readme", From c7052861de05a3070a01de96a1859163c6b59333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= Date: Thu, 26 Sep 2019 17:48:23 +0200 Subject: [PATCH 20/38] sb script: transfer eth from reserve --- .../mainnet/Main0031_reserve_transfer.sol | 18 ++++++++++++++++++ mainnet_migrations/44_deploy_Main0031.js | 7 +++++++ 2 files changed, 25 insertions(+) create mode 100644 contracts/SB_scripts/mainnet/Main0031_reserve_transfer.sol create mode 100644 mainnet_migrations/44_deploy_Main0031.js diff --git a/contracts/SB_scripts/mainnet/Main0031_reserve_transfer.sol b/contracts/SB_scripts/mainnet/Main0031_reserve_transfer.sol new file mode 100644 index 00000000..465b74af --- /dev/null +++ b/contracts/SB_scripts/mainnet/Main0031_reserve_transfer.sol @@ -0,0 +1,18 @@ +pragma solidity 0.4.24; + +import "../../StabilityBoardProxy.sol"; +import "../../AugmintReserves.sol"; + +contract Main0031_reserve_transfer { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0xde36a8773531406dCBefFdfd3C7b89fCed7A9F84); + AugmintReserves public constant AUGMINT_RESERVES = AugmintReserves(0x65F30f8DD20c707C1938CcAd7416c7381E6eB9C8); + address public constant TARGET_ADDRESS = 0x6F67E0A5588564c0EcBd8161Fc7306B5e133291A; + + function execute(Main0031_reserve_transfer /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + AUGMINT_RESERVES.migrate(TARGET_ADDRESS, 17487307795593659456); + } +} \ No newline at end of file diff --git a/mainnet_migrations/44_deploy_Main0031.js b/mainnet_migrations/44_deploy_Main0031.js new file mode 100644 index 00000000..b5529c50 --- /dev/null +++ b/mainnet_migrations/44_deploy_Main0031.js @@ -0,0 +1,7 @@ +const Main0031_reserve_transfer = artifacts.require("./Main0031_reserve_transfer.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Main0031_reserve_transfer); + }); +}; \ No newline at end of file From 9717ddef7760a4197af791f94b568aeb54f0f076 Mon Sep 17 00:00:00 2001 From: Peter Petrovics Date: Wed, 9 Sep 2020 19:26:49 +0100 Subject: [PATCH 21/38] yarn version to 1.22.4 (#262) --- .travis.yml | 2 +- docs/developmentEnvironment.md | 2 +- package.json | 8 +- yarn.lock | 1290 ++++++++++++++++---------------- 4 files changed, 672 insertions(+), 630 deletions(-) diff --git a/.travis.yml b/.travis.yml index e4a0a5e1..f2ac0859 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ dist: xenial # https://docs.travis-ci.com/user/reference/xenial/ language: node_js cache: yarn before_install: - - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.15.2 + - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.22.4 - export PATH="$HOME/.yarn/bin:$PATH" - export BRANCH="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}" - yarn global add greenkeeper-lockfile@1 diff --git a/docs/developmentEnvironment.md b/docs/developmentEnvironment.md index 7c9b541f..76cd1ee9 100644 --- a/docs/developmentEnvironment.md +++ b/docs/developmentEnvironment.md @@ -28,7 +28,7 @@ These instructions are about the dev environment for contract development. For U n ``` -1. Yarn: `npm install -g yarn@` +1. Yarn: `npm install -g yarn@` NB: check required yarn version in [package.json](../package.json) 1. [Docker cli](https://hub.docker.com/search/?type=edition&offering=community) diff --git a/package.json b/package.json index cd4cc792..15f4b9ec 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ ], "engines": { "node": "10.15.3", - "yarn": ">=1.15.2" + "yarn": ">=1.22.4" }, "scripts": { "start": "yarn runmigrate", @@ -73,5 +73,7 @@ "bignumber.js" ] }, - "files": ["abiniser"] -} + "files": [ + "abiniser" + ] +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index d3d66616..f10a1109 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,25 +3,30 @@ "@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: - "@babel/highlight" "^7.0.0" + "@babel/highlight" "^7.10.4" -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== dependencies: + "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" - esutils "^2.0.2" js-tokens "^4.0.0" "@types/node@^10.3.2": - version "10.14.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.4.tgz#1c586b991457cbb58fef51bc4e0cfcfa347714b5" - integrity sha512-DT25xX/YgyPKiHFOpNuANIQIVvYEwCWXgK2jYYwqgaMrYE6+tq+DtmMwlD3drl6DJbUwtlIDnn0d7tIn/EbXBg== + version "10.17.30" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.30.tgz#20556a0d7f62b83e163973a6cd640af636d3dd3b" + integrity sha512-euU8QLX0ipj+5mOYa4ZqZoTv+53BY7yTg9I2ZIhDXgiI3M+0n4mdAt9TQCuvxVAgU179g8OsRLaBt0qEi0T6xA== abbrev@1: version "1.1.1" @@ -42,35 +47,35 @@ abiniser@0.5.1: json-stable-stringify "1.0.1" md5 "2.2.1" -accepts@~1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= +accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" + mime-types "~2.1.24" + negotiator "0.6.2" -acorn-jsx@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== +acorn-jsx@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn@^6.0.7: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== +acorn@^7.1.1: + version "7.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" + integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= -ajv@^6.10.0, ajv@^6.5.5, ajv@^6.9.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3: + version "6.12.4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" + integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== dependencies: - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" @@ -129,14 +134,15 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" asn1@~0.2.3: version "0.2.4" @@ -156,9 +162,9 @@ astral-regex@^1.0.0: integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async@1.x: version "1.5.2" @@ -176,9 +182,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + version "1.10.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" + integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== babel-code-frame@^6.26.0: version "6.26.0" @@ -311,9 +317,9 @@ balanced-match@^1.0.0: integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== + 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== bcrypt-pbkdf@^1.0.0: version "1.0.2" @@ -339,9 +345,9 @@ bindings@^1.3.1: file-uri-to-path "1.0.0" bl@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== dependencies: readable-stream "^2.3.5" safe-buffer "^5.1.1" @@ -359,35 +365,45 @@ bluebird@^2.9.34: integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= bluebird@^3.5.0: - version "3.5.4" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" - integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw== + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== 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, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.6, bn.js@^4.4.0: +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== -body-parser@1.18.3, body-parser@^1.16.0: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.6, bn.js@^4.4.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: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== + +body-parser@1.19.0, body-parser@^1.16.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== dependencies: - bytes "3.0.0" + bytes "3.1.0" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" + http-errors "1.7.2" + iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" brace-expansion@^1.1.7: version "1.1.11" @@ -438,7 +454,7 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0: +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= @@ -455,17 +471,19 @@ browserify-sha3@^0.0.4: safe-buffer "^5.1.1" browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" buffer-alloc-unsafe@^1.1.0: version "1.1.0" @@ -506,17 +524,24 @@ buffer-xor@^1.0.3: integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= buffer@^5.0.5, buffer@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" - integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== + 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== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= +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== + dependencies: + node-gyp-build "~3.7.0" + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== callsites@^3.0.0: version "3.1.0" @@ -584,9 +609,9 @@ cli-cursor@^2.1.0: restore-cursor "^2.0.0" cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== cliui@^3.2.0: version "3.2.0" @@ -624,9 +649,9 @@ color-name@1.1.3: integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" @@ -635,27 +660,27 @@ commander@2.11.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== -commander@2.20.0, commander@^2.8.1, commander@~2.20.0: +commander@2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== -commander@~2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= - dependencies: - graceful-readlink ">= 1.0.0" +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== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" content-type@~1.0.4: version "1.0.4" @@ -663,9 +688,9 @@ content-type@~1.0.4: integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== convert-source-map@^1.5.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" @@ -674,10 +699,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== cookiejar@^2.1.1: version "2.1.2" @@ -685,9 +710,9 @@ cookiejar@^2.1.1: integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7: - version "2.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" - integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -715,14 +740,14 @@ coveralls@3.0.4: request "^2.86.0" create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" - elliptic "^6.0.0" + elliptic "^6.5.3" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -733,7 +758,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -788,9 +813,17 @@ crypto-browserify@3.12.0: randomfill "^1.0.3" crypto-js@^3.1.4: - version "3.1.8" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.8.tgz#715f070bf6014f2ae992a98b3929258b713f08d5" - integrity sha1-cV8HC/YBTyrpkqmLOSkli3E/CNU= + version "3.3.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" + integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" dashdash@^1.12.0: version "1.14.1" @@ -882,9 +915,9 @@ decompress-unzip@^4.0.1: yauzl "^2.4.2" decompress@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" - integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= + 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== dependencies: decompress-tar "^4.0.0" decompress-tarbz2 "^4.0.0" @@ -900,13 +933,6 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -define-properties@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -918,9 +944,9 @@ depd@~1.1.2: integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -959,9 +985,9 @@ doctrine@^3.0.0: esutils "^2.0.2" dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" - integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== dotenv@8.0.0: version "8.0.0" @@ -996,10 +1022,10 @@ elliptic@6.3.3: hash.js "^1.0.0" inherits "^2.0.1" -elliptic@^6.0.0, elliptic@^6.4.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" - integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== +elliptic@^6.4.0, elliptic@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -1020,9 +1046,9 @@ encodeurl@~1.0.2: integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= end-of-stream@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" @@ -1033,26 +1059,31 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.5.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== +es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" escape-html@~1.0.3: version "1.0.3" @@ -1085,14 +1116,16 @@ eslint-scope@^4.0.3: estraverse "^4.1.1" eslint-utils@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" - integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint@6.0.0: version "6.0.0" @@ -1137,13 +1170,13 @@ eslint@6.0.0: text-table "^0.2.0" espree@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.0.0.tgz#716fc1f5a245ef5b9a7fdb1d7b0d3f02322e75f6" - integrity sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q== + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" esprima@2.7.x, esprima@^2.7.1: version "2.7.3" @@ -1156,33 +1189,38 @@ esprima@^4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== dependencies: - estraverse "^4.0.0" + estraverse "^5.1.0" esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@~1.8.1: version "1.8.1" @@ -1197,7 +1235,7 @@ eth-ens-namehash@2.0.8: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" -eth-lib@0.1.27, eth-lib@^0.1.26: +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== @@ -1219,6 +1257,18 @@ eth-lib@0.2.7: elliptic "^6.4.0" xhr-request-promise "^0.1.2" +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + ethereumjs-testrpc-sc@6.1.6: version "6.1.6" resolved "https://registry.yarnpkg.com/ethereumjs-testrpc-sc/-/ethereumjs-testrpc-sc-6.1.6.tgz#290595380b5182814564d4aa38f35b7788aab070" @@ -1277,50 +1327,57 @@ execa@^0.7.0: strip-eof "^1.0.0" express@^4.14.0: - version "4.16.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" - integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== dependencies: - accepts "~1.3.5" + accepts "~1.3.7" array-flatten "1.1.1" - body-parser "1.18.3" - content-disposition "0.5.2" + body-parser "1.19.0" + content-disposition "0.5.3" content-type "~1.0.4" - cookie "0.3.1" + cookie "0.4.0" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.1.1" + finalhandler "~1.1.2" fresh "0.5.2" merge-descriptors "1.0.1" methods "~1.1.2" on-finished "~2.3.0" - parseurl "~1.3.2" + parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" - range-parser "~1.2.0" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" safe-buffer "5.1.2" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + 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== external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" - integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" @@ -1336,17 +1393,17 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +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" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + version "2.1.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@~2.0.4: +fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -1392,17 +1449,17 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" - integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" + parseurl "~1.3.3" + statuses "~1.5.0" unpipe "~1.0.0" find-up@^1.0.0: @@ -1430,16 +1487,9 @@ flat-cache@^2.0.1: write "1.0.3" flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== forever-agent@~0.6.1: version "0.6.1" @@ -1504,7 +1554,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fstream@^1.0.2, fstream@^1.0.8: +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== @@ -1514,11 +1564,6 @@ fstream@^1.0.2, fstream@^1.0.8: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, 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: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -1589,22 +1634,10 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob@^7.0.0, glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1622,9 +1655,9 @@ global@~4.3.0: process "~0.5.1" globals@^11.7.0: - version "11.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" - integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^9.18.0: version "9.18.0" @@ -1652,14 +1685,9 @@ got@7.1.0, got@^7.1.0: url-to-options "^1.0.1" graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== growl@1.10.3: version "1.10.3" @@ -1672,13 +1700,14 @@ growl@1.10.3: integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== handlebars@^4.0.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== + version "4.7.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== dependencies: + minimist "^1.2.5" neo-async "^2.6.0" - optimist "^0.6.1" source-map "^0.6.1" + wordwrap "^1.0.0" optionalDependencies: uglify-js "^3.1.4" @@ -1687,12 +1716,12 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.1.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" has-ansi@^2.0.0: @@ -1722,11 +1751,6 @@ has-symbol-support-x@^1.4.1: resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= - has-to-string-tag-x@^1.2.0: version "1.4.1" resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" @@ -1734,20 +1758,14 @@ has-to-string-tag-x@^1.2.0: dependencies: has-symbol-support-x "^1.4.1" -has@^1.0.1, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" hash.js@1.1.3: version "1.1.3" @@ -1798,19 +1816,31 @@ home-or-tmp@^2.0.0: os-tmpdir "^1.0.1" hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== dependencies: depd "~1.1.2" inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" http-https@^1.0.0: version "1.0.0" @@ -1826,14 +1856,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -1858,9 +1881,9 @@ ignore@^4.0.6: integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -1878,15 +1901,20 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: +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.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= inquirer@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" - integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== dependencies: ansi-escapes "^3.2.0" chalk "^2.4.2" @@ -1894,18 +1922,18 @@ inquirer@^6.2.2: cli-width "^2.0.0" external-editor "^3.0.3" figures "^2.0.0" - lodash "^4.17.11" + lodash "^4.17.12" mute-stream "0.0.7" run-async "^2.2.0" rxjs "^6.4.0" string-width "^2.1.0" - strip-ansi "^5.0.0" + strip-ansi "^5.1.0" through "^2.3.6" interpret@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== invariant@^2.2.2: version "2.2.4" @@ -1919,10 +1947,10 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= -ipaddr.js@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" - integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= +ipaddr.js@1.9.1: + version "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-arrayish@^0.2.1: version "0.2.1" @@ -1934,27 +1962,15 @@ is-buffer@~1.1.1: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.3, is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== is-fullwidth-code-point@^1.0.0: version "1.0.0" @@ -1969,9 +1985,9 @@ is-fullwidth-code-point@^2.0.0: integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-function@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" - integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== is-glob@^3.1.0: version "3.1.0" @@ -2007,35 +2023,16 @@ 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-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= - dependencies: - has "^1.0.1" - is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + 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-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== - dependencies: - has-symbols "^1.0.0" - is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -2126,9 +2123,9 @@ js-tokens@^3.0.2: integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= js-yaml@3.x, js-yaml@^3.11.0, js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + 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== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -2256,10 +2253,10 @@ lodash.assign@^4.0.3, lodash.assign@^4.0.6: resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= -lodash@^4.17.11, lodash@^4.17.4: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.4: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== log-driver@^1.2.7: version "1.2.7" @@ -2346,22 +2343,22 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@~1.38.0: - version "1.38.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" - integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg== +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-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.18, mime-types@~2.1.19: - version "2.1.22" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd" - integrity sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog== +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" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: - mime-db "~1.38.0" + mime-db "1.44.0" -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mimic-fn@^1.0.0: version "1.2.0" @@ -2402,15 +2399,10 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== mkdirp-promise@^5.0.1: version "5.0.1" @@ -2419,13 +2411,25 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*, mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1: +mkdirp@*: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" +mkdirp@0.5.x, "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== + dependencies: + minimist "^1.2.5" + mocha@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" @@ -2443,9 +2447,9 @@ mocha@^4.1.0: supports-color "4.4.0" mock-fs@^4.1.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.8.0.tgz#eb0784ceba4b34c91a924a5112eeb36e1b5a9e29" - integrity sha512-Gwj4KnJOW15YeTJKO5frFd/WDO5Mc0zxXqL9oHx3+e9rBqW8EVARqQHSaIXznUdljrD6pvbNGW2ZGXKPEfYJfw== + version "4.13.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.13.0.tgz#31c02263673ec3789f90eb7b6963676aa407a598" + integrity sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA== moment@2.22.2: version "2.22.2" @@ -2462,11 +2466,16 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.1: version "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.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -2481,16 +2490,16 @@ mz@^2.6.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nan@2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" - integrity sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA== - -nan@^2.0.8, nan@^2.11.0, nan@^2.3.3: +nan@2.13.2: version "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.3.3: + version "2.14.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== + 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" @@ -2501,21 +2510,31 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== neo-async@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +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== + nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -2563,11 +2582,6 @@ object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1 resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-keys@^1.0.12: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - oboe@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.3.tgz#2b4865dbd46be81225713f4e9bfe4bcf4f680a4f" @@ -2596,25 +2610,17 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" - fast-levenshtein "~2.0.4" + fast-levenshtein "~2.0.6" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" - wordwrap "~1.0.0" + word-wrap "~1.2.3" original-require@1.0.1: version "1.0.1" @@ -2690,25 +2696,21 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0: - version "5.1.4" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" - integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - asn1.js "^4.0.0" + asn1.js "^5.2.0" browserify-aes "^1.0.0" - create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" parse-headers@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.2.tgz#9545e8a4c1ae5eaea7d24992bca890281ed26e34" - integrity sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg== - dependencies: - for-each "^0.3.3" - string.prototype.trim "^1.1.2" + version "2.0.3" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" + integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== parse-json@^2.2.0: version "2.2.0" @@ -2717,10 +2719,10 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== path-dirname@^1.0.0: version "1.0.2" @@ -2769,9 +2771,9 @@ path-type@^1.0.0: pinkie-promise "^2.0.0" pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -2832,9 +2834,9 @@ private@^0.1.8: integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + 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" @@ -2846,23 +2848,23 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -proxy-addr@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" - integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== dependencies: forwarded "~0.1.2" - ipaddr.js "1.8.0" + ipaddr.js "1.9.1" pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24: - version "1.1.31" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" - integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== public-encrypt@^4.0.0: version "4.0.3" @@ -2881,17 +2883,17 @@ punycode@2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= -punycode@2.x.x, punycode@^2.1.0: +punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@6.5.2, qs@~6.5.2: +qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== @@ -2932,19 +2934,19 @@ randomhex@0.1.5: resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= -range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" unpipe "1.0.0" read-pkg-up@^1.0.1: @@ -2965,9 +2967,9 @@ read-pkg@^1.0.0: path-type "^1.0.0" readable-stream@^2.3.0, readable-stream@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + 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== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -2977,6 +2979,15 @@ readable-stream@^2.3.0, readable-stream@^2.3.5: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -3016,9 +3027,9 @@ req-from@^1.0.1: resolve-from "^2.0.0" request@^2.79.0, request@^2.86.0, request@^2.88.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -3027,7 +3038,7 @@ request@^2.79.0, request@^2.86.0, request@^2.88.0: extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" - har-validator "~5.1.0" + har-validator "~5.1.3" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -3037,7 +3048,7 @@ request@^2.79.0, request@^2.86.0, request@^2.88.0: performance-now "^2.1.0" qs "~6.5.2" safe-buffer "^5.1.2" - tough-cookie "~2.4.3" + tough-cookie "~2.5.0" tunnel-agent "^0.6.0" uuid "^3.3.2" @@ -3072,9 +3083,9 @@ resolve@1.1.x: integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= resolve@^1.1.6, resolve@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" @@ -3086,7 +3097,14 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -rimraf@2, rimraf@2.6.3, rimraf@^2.2.8: +rimraf@2, rimraf@^2.2.8: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -3102,11 +3120,9 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: inherits "^2.0.1" run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= - dependencies: - is-promise "^2.1.0" + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== rx@^4.1.0: version "4.1.0" @@ -3114,17 +3130,22 @@ rx@^4.1.0: integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= rxjs@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" - integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== dependencies: tslib "^1.9.0" -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3158,21 +3179,21 @@ scryptsy@^1.2.1: pbkdf2 "^3.0.3" seek-bzip@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" - integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= + version "1.0.6" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" + integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== dependencies: - commander "~2.8.1" + commander "^2.8.1" "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.5.1: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== dependencies: debug "2.6.9" depd "~1.1.2" @@ -3181,22 +3202,22 @@ send@0.16.2: escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" + range-parser "~1.2.1" + statuses "~1.5.0" -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" + parseurl "~1.3.3" + send "0.17.1" servify@^0.1.12: version "0.1.12" @@ -3224,10 +3245,10 @@ setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" @@ -3238,11 +3259,11 @@ sha.js@^2.4.0, sha.js@^2.4.8: safe-buffer "^5.0.1" sha3@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-1.2.2.tgz#a66c5098de4c25bc88336ec8b4817d005bca7ba9" - integrity sha1-pmxQmN5MJbyIM27ItIF9AFvKe6k= + version "1.2.6" + resolved "https://registry.yarnpkg.com/sha3/-/sha3-1.2.6.tgz#102aa3e47dc793e2357902c3cce8760822f9e905" + integrity sha512-KgLGmJGrmNB4JWVsAV11Yk6KbvsAiygWJc7t5IebWva/0NukNrjJqhtKhzy3Eiv2AKuGvhZZt7dt1mDo7HkoiQ== dependencies: - nan "2.10.0" + nan "2.13.2" shebang-command@^1.2.0: version "1.2.0" @@ -3266,14 +3287,14 @@ shelljs@^0.7.4: rechoir "^0.6.2" signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== simple-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" - integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== simple-get@^2.7.0: version "2.8.1" @@ -3355,9 +3376,9 @@ source-map-support@^0.4.15: source-map "^0.5.6" source-map-support@^0.5.3: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -3367,7 +3388,7 @@ source-map@^0.5.6, source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -3380,30 +3401,30 @@ source-map@~0.2.0: amdefine ">=0.0.4" spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" - integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + 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== sprintf-js@~1.0.2: version "1.0.3" @@ -3425,16 +3446,11 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -"statuses@>= 1.4.0 < 2": +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== - strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -3466,14 +3482,12 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.trim@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" - integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.0" - function-bind "^1.0.2" + safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" @@ -3504,7 +3518,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0: +strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -3588,12 +3602,12 @@ swarm-js@0.1.37: xhr-request-promise "^0.1.2" table@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" - integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== dependencies: - ajv "^6.9.1" - lodash "^4.17.11" + ajv "^6.10.2" + lodash "^4.17.14" slice-ansi "^2.1.0" string-width "^3.0.0" @@ -3622,12 +3636,12 @@ tar.gz@^1.0.5: tar "^2.1.1" tar@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= + 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.2" + fstream "^1.0.12" inherits "2" text-table@^0.2.0: @@ -3643,9 +3657,9 @@ thenify-all@^1.0.0, thenify-all@^1.6.0: thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: any-promise "^1.0.0" @@ -3676,6 +3690,11 @@ to-fast-properties@^1.0.3: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + topo@3.x.x: version "3.0.3" resolved "https://registry.yarnpkg.com/topo/-/topo-3.0.3.tgz#d5a67fb2e69307ebeeb08402ec2a2a6f5f7ad95c" @@ -3683,13 +3702,13 @@ topo@3.x.x: dependencies: hoek "6.x.x" -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: - psl "^1.1.24" - punycode "^1.4.1" + psl "^1.1.28" + punycode "^2.1.1" traverse@^0.6.6: version "0.6.6" @@ -3697,9 +3716,9 @@ traverse@^0.6.6: integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= tree-kill@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" - integrity sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q== + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== trim-right@^1.0.1: version "1.0.1" @@ -3726,9 +3745,9 @@ truffle@4.1.14: solc "0.4.24" tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== tunnel-agent@^0.6.0: version "0.6.0" @@ -3749,19 +3768,29 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" - mime-types "~2.1.18" + mime-types "~2.1.24" type-name@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4" integrity sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q= +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.1.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: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -3770,12 +3799,9 @@ typedarray-to-buffer@^3.1.2, typedarray-to-buffer@^3.1.5: is-typedarray "^1.0.0" uglify-js@^3.1.4: - version "3.6.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" - integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== - dependencies: - commander "~2.20.0" - source-map "~0.6.1" + version "3.10.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.4.tgz#dd680f5687bc0d7a93b14a3482d16db6eba2bfbb" + integrity sha512-kBFT3U4Dcj4/pJ52vfjCSfyLyvG9VYYuGYPmrPvAxRw/i7xHiT4VvCev+uiEMcEEiu6UNB6KgWmGtSUYIWScbw== ultron@~1.1.0: version "1.1.1" @@ -3783,9 +3809,9 @@ ultron@~1.1.0: integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== unbzip2-stream@^1.0.9: - version "1.3.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" - integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== dependencies: buffer "^5.2.1" through "^2.3.8" @@ -3801,9 +3827,9 @@ unpipe@1.0.0, unpipe@~1.0.0: integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== dependencies: punycode "^2.1.0" @@ -3824,6 +3850,13 @@ url-to-options@^1.0.1: resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= +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== + 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" @@ -3834,7 +3867,7 @@ utf8@^2.1.1: resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" integrity sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY= -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -3850,9 +3883,9 @@ uuid@2.0.1: integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== validate-npm-package-license@^3.0.1: version "3.0.4" @@ -4343,13 +4376,15 @@ web3@^0.18.4: web3-utils "1.0.0-beta.34" websocket@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.28.tgz#9e5f6fdc8a3fe01d4422647ef93abdd8d45a78d3" - integrity sha512-00y/20/80P7H4bCYkzuuvvfDvh+dgtXi5kzDf3UcZwN6boTYaKvsrtZ5lIYm1Gsg48siMErd9M4zjSYfYFHTrA== + version "1.0.32" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" + integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== dependencies: + bufferutil "^4.0.1" debug "^2.2.0" - nan "^2.11.0" + es5-ext "^0.10.50" typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" yaeti "^0.0.6" "websocket@git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible": @@ -4383,16 +4418,16 @@ window-size@^0.2.0: resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= -wordwrap@^1.0.0, wordwrap@~1.0.0: +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -4423,13 +4458,13 @@ ws@^3.0.0: ultron "~1.1.0" xhr-request-promise@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.2.tgz#343c44d1ee7726b8648069682d0f840c83b4261d" - integrity sha1-NDxE0e53JrhkgGloLQ+EDIO0Jh0= + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== dependencies: - xhr-request "^1.0.1" + xhr-request "^1.1.0" -xhr-request@^1.0.1: +xhr-request@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== @@ -4449,7 +4484,12 @@ xhr2-cookies@1.1.0: dependencies: cookiejar "^2.1.1" -xhr2@*, xhr2@0.1.4: +xhr2@*: + version "0.2.0" + resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.2.0.tgz#eddeff782f3b7551061b8d75645085269396e521" + integrity sha512-BDtiD0i2iKPK/S8OAZfpk6tyzEDnKKSjxWHcMBVmh+LuqJ8A32qXTyOx+TVOg2dKvq6zGBq2sgKPkEeRs1qTRA== + +xhr2@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" integrity sha1-f4dliEdxbbUCYyOBL4GMras4el8= @@ -4470,9 +4510,9 @@ xmlhttprequest@*, xmlhttprequest@1.8.0: integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= xtend@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^3.2.1: version "3.2.1" From 66c79d3f0a6b5afcc826c22d82413ef9c20a889f Mon Sep 17 00:00:00 2001 From: Peter Petrovics Date: Thu, 10 Sep 2020 18:35:55 +0100 Subject: [PATCH 22/38] upgrade to ganache_cli 6.10.2 (#263) --- package.json | 2 +- test/helpers/exchangeTestHelpers.js | 2 +- test/helpers/loanTestHelpers.js | 4 +- yarn.lock | 367 ++++++++++++++++++---------- 4 files changed, 244 insertions(+), 131 deletions(-) diff --git a/package.json b/package.json index 15f4b9ec..a7079f5d 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "coveralls": "3.0.4", "dotenv": "8.0.0", "eslint": "6.0.0", - "ganache-cli": "6.4.4", + "ganache-cli": "6.10.2", "moment": "2.22.2", "random-seed": "0.3.0", "solidity-coverage": "0.5.11", diff --git a/test/helpers/exchangeTestHelpers.js b/test/helpers/exchangeTestHelpers.js index 7a418a00..ef103f92 100644 --- a/test/helpers/exchangeTestHelpers.js +++ b/test/helpers/exchangeTestHelpers.js @@ -7,7 +7,7 @@ const tokenTestHelpers = require("./tokenTestHelpers.js"); const PLACE_ORDER_MAX_GAS = 200000; const CANCEL_SELL_MAX_GAS = 150000; -const MATCH_ORDER_MAX_GAS = 85000; +const MATCH_ORDER_MAX_GAS = 110000; const PPM_DIV = 1000000; diff --git a/test/helpers/loanTestHelpers.js b/test/helpers/loanTestHelpers.js index ea8fc30f..36ac85d3 100644 --- a/test/helpers/loanTestHelpers.js +++ b/test/helpers/loanTestHelpers.js @@ -8,8 +8,8 @@ const tokenTestHelpers = require("./tokenTestHelpers.js"); const testHelpers = require("./testHelpers.js"); const NEWLOAN_MAX_GAS = 220000; -const REPAY_MAX_GAS = 120000; -const COLLECT_BASE_GAS = 100000; +const REPAY_MAX_GAS = 140000; +const COLLECT_BASE_GAS = 110000; let augmintToken = null; let monetarySupervisor = null; diff --git a/yarn.lock b/yarn.lock index f10a1109..a11788b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -337,13 +337,20 @@ bignumber.js@5.0.0: version "2.0.7" resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" -bindings@^1.3.1: +bindings@^1.2.1, bindings@^1.3.1, 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== dependencies: file-uri-to-path "1.0.0" +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" @@ -374,12 +381,7 @@ bn.js@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.11.6, bn.js@^4.4.0: +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0: version "4.11.9" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== @@ -423,7 +425,7 @@ browser-stdout@1.3.0: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" integrity sha1-81HTKWnTL6XXpVZxVCY9korjvR8= -browserify-aes@^1.0.0, browserify-aes@^1.0.4: +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== @@ -553,10 +555,10 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caseless@~0.12.0: version "0.12.0" @@ -622,14 +624,14 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" code-point-at@^1.0.0: version "1.1.0" @@ -770,16 +772,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -858,7 +851,7 @@ debug@^4.0.1: dependencies: ms "^2.1.1" -decamelize@^1.1.1: +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -994,6 +987,15 @@ dotenv@8.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.0.0.tgz#ed310c165b4e8a97bb745b0a9d99c31bda566440" integrity sha512-30xVGqjLjiUOArT4+M5q9sYdvuR4riM6yK9wMcas9Vbp6zZa+ocC9dp6QoftuhTPhFAiLK/0C5Ni2nou/Bk8lg== +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" @@ -1022,7 +1024,7 @@ elliptic@6.3.3: hash.js "^1.0.0" inherits "^2.0.1" -elliptic@^6.4.0, elliptic@^6.5.3: +elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== @@ -1045,7 +1047,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -1276,6 +1278,19 @@ ethereumjs-testrpc-sc@6.1.6: dependencies: source-map-support "^0.5.3" +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" + ethers@4.0.0-beta.1: version "4.0.0-beta.1" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.1.tgz#0648268b83e0e91a961b1af971c662cdf8cbab6d" @@ -1300,6 +1315,14 @@ ethjs-unit@0.1.6: bn.js "4.11.6" number-to-bn "1.7.0" +ethjs-util@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + eventemitter3@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.1.1.tgz#47786bdaa087caf7b1b75e73abc5c7d540158cd0" @@ -1313,13 +1336,13 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" + cross-spawn "^6.0.0" + get-stream "^4.0.0" is-stream "^1.1.0" npm-run-path "^2.0.0" p-finally "^1.0.0" @@ -1470,12 +1493,12 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: - locate-path "^2.0.0" + locate-path "^3.0.0" flat-cache@^2.0.1: version "2.0.1" @@ -1569,20 +1592,27 @@ functional-red-black-tree@^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-cli@6.4.4: - version "6.4.4" - resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.4.4.tgz#9772bba8585d6e2049bd85adf24369c1cc165170" - integrity sha512-JWygbyZuM2GQl2ZvU7tBkjpgJaKE/XEtB99ech17XTouuqLU5rBcyO3sMb/L83wAtzr0gBnTgenIBl+OeREpJw== +ganache-cli@6.10.2: + version "6.10.2" + resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.10.2.tgz#3256774a47437052e2b9d7df2efc2b3f2250cffd" + integrity sha512-wCuQjy7k040J8hii1KQ/dYHv8qjdHIcP3fw331AWPqQjeqNquf5HVVQNJOYXINTDofMDkCMQv3ru4ze/A+WyPQ== dependencies: - bn.js "4.11.8" - source-map-support "0.5.9" - yargs "11.1.0" + ethereumjs-util "6.1.0" + source-map-support "0.5.12" + yargs "13.2.4" + optionalDependencies: + scrypt "6.0.3" get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-stream@^2.2.0: version "2.3.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" @@ -1596,6 +1626,13 @@ get-stream@^3.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -1947,6 +1984,11 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -2194,6 +2236,16 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.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" + keccakjs@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/keccakjs/-/keccakjs-0.2.3.tgz#5e4e969ce39689a3861f445d7752ee3477f9fe72" @@ -2216,6 +2268,13 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + lcov-parse@^0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" @@ -2240,12 +2299,12 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: - p-locate "^2.0.0" + p-locate "^3.0.0" path-exists "^3.0.0" lodash.assign@^4.0.3, lodash.assign@^4.0.6: @@ -2275,14 +2334,6 @@ lowercase-keys@^1.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -2290,6 +2341,13 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -2313,12 +2371,14 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== dependencies: - mimic-fn "^1.0.0" + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" memorystream@^0.3.1: version "0.3.1" @@ -2365,6 +2425,11 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -2495,7 +2560,7 @@ 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.3.3: +nan@^2.0.8, 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== @@ -2639,14 +2704,14 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== +os-locale@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" @@ -2658,24 +2723,34 @@ p-cancelable@^0.3.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - p-try "^1.0.0" + p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: - p-limit "^1.1.0" + p-limit "^2.0.0" p-timeout@^1.1.1: version "1.2.1" @@ -2684,10 +2759,10 @@ p-timeout@^1.1.1: dependencies: p-finally "^1.0.0" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== parent-module@^1.0.0: version "1.0.1" @@ -2856,11 +2931,6 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.1" -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -2878,6 +2948,14 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" @@ -3067,6 +3145,11 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + resolve-from@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" @@ -3119,6 +3202,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rlp@^2.0.0: + version "2.2.6" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" + integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== + dependencies: + bn.js "^4.11.1" + run-async@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -3164,7 +3254,7 @@ scrypt.js@0.2.0: scrypt "^6.0.2" scryptsy "^1.2.1" -scrypt@^6.0.2: +scrypt@6.0.3, scrypt@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/scrypt/-/scrypt-6.0.3.tgz#04e014a5682b53fa50c2d5cce167d719c06d870d" integrity sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0= @@ -3178,6 +3268,20 @@ scryptsy@^1.2.1: dependencies: pbkdf2 "^3.0.3" +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" + seek-bzip@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" @@ -3360,10 +3464,10 @@ solidity-parser-sc@0.4.11: pegjs "^0.10.0" yargs "^4.6.0" -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== +source-map-support@0.5.12: + version "0.5.12" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" + integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -3465,7 +3569,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -3473,7 +3577,7 @@ string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: +string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -3518,7 +3622,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.1.0: +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -4436,6 +4540,15 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -4519,15 +4632,23 @@ y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 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== + yaeti@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yargs-parser@^13.1.0: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-parser@^2.4.1: version "2.4.1" @@ -4537,30 +4658,22 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= +yargs@13.2.4: + version "13.2.4" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" + integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== dependencies: - camelcase "^4.1.0" - -yargs@11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^2.0.0" + string-width "^3.0.0" which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" + y18n "^4.0.0" + yargs-parser "^13.1.0" yargs@^4.6.0, yargs@^4.7.1: version "4.8.1" From 133cae0de26ec0a64eabcd762df7886c35cbc1d4 Mon Sep 17 00:00:00 2001 From: Peter Petrovics Date: Sat, 12 Sep 2020 19:24:52 +0100 Subject: [PATCH 23/38] mega truffle upgrade (#264) Massive PR to upgrade to truffle 5.1.43 - Latest truffle uses web3 v1 which required a lot of changes in tests due to values returned differently. - Truffle now injects v1 web3 to tests so no need to hack in an additional web3 (v1) for tests anymore (removed package). - As part of reorg changed all BigNumber.js variables to web3 native 'BN.js' vars (removed Bignumber package) --- Dockerfile | 2 +- migrations/1000_initialSetup.js | 65 +- .../1001_topup_interestEarnedAccount.js | 10 +- migrations/1002_authorise_StabilityBoard.js | 47 +- migrations/1003_add_legacyContracts.js | 36 +- migrations/1004_add_test_preTokens.js | 12 +- migrations/2000_setRateDefault.js | 8 +- migrations/2001_setRateLow.js | 8 +- migrations/2002_setRateHigh.js | 8 +- migrations_null/.eslintrc | 24 + migrations_null/.prettierrc | 4 + migrations_null/.readme | 4 +- migrations_null/1_no_migration.js | 3 + package.json | 15 +- test/delegatedTransfer.js | 82 +- test/delegatedTransferAndNotify.js | 84 +- test/exchange.js | 15 +- test/exchangeMatchMultiple.js | 146 +-- test/exchangeMatching.js | 76 +- test/exchangeOrders.js | 146 ++- test/exchangeRandom.js | 41 +- test/feeAccount.js | 57 +- test/helpers/exchangeTestHelpers.js | 133 ++- test/helpers/loanTestHelpers.js | 179 ++-- test/helpers/ratesTestHelpers.js | 22 +- test/helpers/testHelpers.js | 111 +-- test/helpers/tokenTestHelpers.js | 123 ++- test/loanCollection.js | 178 ++-- test/loanToDepositRatioLimits.js | 86 +- test/loans.js | 283 +++--- test/locker.js | 397 ++++---- test/monetarySupervisor.js | 98 +- test/preToken.js | 132 +-- test/preTokenTransfer.js | 66 +- test/rates.js | 81 +- test/restricted.js | 46 +- test/safeMath.js | 44 +- test/stabilityBoardProxy.js | 171 ++-- test/token.js | 42 +- test/tokenConversion.js | 42 +- test/tokenTransfer.js | 82 +- test/tokenTransferFrom.js | 114 +-- truffle.js => truffle-config.js | 48 +- yarn.lock | 891 ++++++++++++------ 44 files changed, 2295 insertions(+), 1967 deletions(-) create mode 100644 migrations_null/.eslintrc create mode 100644 migrations_null/.prettierrc create mode 100644 migrations_null/1_no_migration.js rename truffle.js => truffle-config.js (65%) diff --git a/Dockerfile b/Dockerfile index 247dafc1..c23d5887 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,2 +1,2 @@ -FROM trufflesuite/ganache-cli:v6.4.2 +FROM trufflesuite/ganache-cli:v6.10.2 COPY ["localchaindb", "dockerLocalchaindb"] \ No newline at end of file diff --git a/migrations/1000_initialSetup.js b/migrations/1000_initialSetup.js index 5bfc492e..bb9f80a2 100644 --- a/migrations/1000_initialSetup.js +++ b/migrations/1000_initialSetup.js @@ -12,7 +12,7 @@ const SafeMathTester = artifacts.require("./test/SafeMathTester.sol"); const localTest_initialSetup = artifacts.require("./SB_scripts/localTest/localTest_initialSetup.sol"); -module.exports = function(deployer) { +module.exports = function (deployer) { deployer .deploy( localTest_initialSetup, @@ -27,31 +27,54 @@ module.exports = function(deployer) { Exchange.address, SafeMathTester.address ) - .then(async initialSetupScript => { + .then(async (initialSetupScript) => { // StabilityBoard permissions - const rates = Rates.at(Rates.address); - const feeAccount = FeeAccount.at(FeeAccount.address); - const interestEarnedAccount = InterestEarnedAccount.at(InterestEarnedAccount.address); - const tokenAEur = TokenAEur.at(TokenAEur.address); - const augmintReserves = AugmintReserves.at(AugmintReserves.address); - const monetarySupervisor = MonetarySupervisor.at(MonetarySupervisor.address); - const loanManager = LoanManager.at(LoanManager.address); - const locker = Locker.at(Locker.address); - const exchange = Exchange.at(Exchange.address); + const [ + rates, + feeAccount, + interestEarnedAccount, + tokenAEur, + augmintReserves, + monetarySupervisor, + loanManager, + locker, + exchange, + stabilityBoardProxy, + ] = await Promise.all([ + Rates.at(Rates.address), + FeeAccount.at(FeeAccount.address), + InterestEarnedAccount.at(InterestEarnedAccount.address), + TokenAEur.at(TokenAEur.address), + AugmintReserves.at(AugmintReserves.address), + MonetarySupervisor.at(MonetarySupervisor.address), + LoanManager.at(LoanManager.address), + Locker.at(Locker.address), + Exchange.at(Exchange.address), + StabilityBoardProxy.at(StabilityBoardProxy.address), + ]); + await Promise.all([ - rates.grantPermission(StabilityBoardProxy.address, "PermissionGranter"), - feeAccount.grantPermission(StabilityBoardProxy.address, "PermissionGranter"), - interestEarnedAccount.grantPermission(StabilityBoardProxy.address, "PermissionGranter"), - tokenAEur.grantPermission(StabilityBoardProxy.address, "PermissionGranter"), - augmintReserves.grantPermission(StabilityBoardProxy.address, "PermissionGranter"), - monetarySupervisor.grantPermission(StabilityBoardProxy.address, "PermissionGranter"), - loanManager.grantPermission(StabilityBoardProxy.address, "PermissionGranter"), - locker.grantPermission(StabilityBoardProxy.address, "PermissionGranter"), - exchange.grantPermission(StabilityBoardProxy.address, "PermissionGranter") + rates.grantPermission(StabilityBoardProxy.address, web3.utils.asciiToHex("PermissionGranter")), + feeAccount.grantPermission(StabilityBoardProxy.address, web3.utils.asciiToHex("PermissionGranter")), + interestEarnedAccount.grantPermission( + StabilityBoardProxy.address, + web3.utils.asciiToHex("PermissionGranter") + ), + tokenAEur.grantPermission(StabilityBoardProxy.address, web3.utils.asciiToHex("PermissionGranter")), + augmintReserves.grantPermission( + StabilityBoardProxy.address, + web3.utils.asciiToHex("PermissionGranter") + ), + monetarySupervisor.grantPermission( + StabilityBoardProxy.address, + web3.utils.asciiToHex("PermissionGranter") + ), + loanManager.grantPermission(StabilityBoardProxy.address, web3.utils.asciiToHex("PermissionGranter")), + locker.grantPermission(StabilityBoardProxy.address, web3.utils.asciiToHex("PermissionGranter")), + exchange.grantPermission(StabilityBoardProxy.address, web3.utils.asciiToHex("PermissionGranter")), ]); // run initial setup script - const stabilityBoardProxy = StabilityBoardProxy.at(StabilityBoardProxy.address); await stabilityBoardProxy.sign(initialSetupScript.address); const tx = await stabilityBoardProxy.execute(initialSetupScript.address); diff --git a/migrations/1001_topup_interestEarnedAccount.js b/migrations/1001_topup_interestEarnedAccount.js index 4db70cb7..0345bb81 100644 --- a/migrations/1001_topup_interestEarnedAccount.js +++ b/migrations/1001_topup_interestEarnedAccount.js @@ -3,12 +3,14 @@ const TokenAEur = artifacts.require("./TokenAEur.sol"); const LoanManager = artifacts.require("./LoanManager.sol"); const InterestEarnedAccount = artifacts.require("./InterestEarnedAccount.sol"); -module.exports = function(deployer) { +module.exports = function (deployer) { deployer.then(async () => { - const tokenAEur = TokenAEur.at(TokenAEur.address); - const loanManager = LoanManager.at(LoanManager.address); + const [tokenAEur, loanManager] = await Promise.all([ + TokenAEur.at(TokenAEur.address), + LoanManager.at(LoanManager.address), + ]); - await loanManager.newEthBackedLoan(0, 0, { value: web3.toWei(0.10845) }); // = 50 A-EUR + await loanManager.newEthBackedLoan(0, 0, { value: web3.utils.toWei("0.10845") }); // = 50 A-EUR await tokenAEur.transferWithNarrative( InterestEarnedAccount.address, diff --git a/migrations/1002_authorise_StabilityBoard.js b/migrations/1002_authorise_StabilityBoard.js index cbe70894..151cefaf 100644 --- a/migrations/1002_authorise_StabilityBoard.js +++ b/migrations/1002_authorise_StabilityBoard.js @@ -11,28 +11,39 @@ const LoanManager = artifacts.require("./LoanManager.sol"); const Locker = artifacts.require("./Locker.sol"); const Exchange = artifacts.require("./Exchange.sol"); -module.exports = function(deployer, network, accounts) { +module.exports = function (deployer, network, accounts) { deployer.then(async () => { const stabilityBoardAccounts = [accounts[0]]; - const feeAccount = FeeAccount.at(FeeAccount.address); - const augmintReserves = AugmintReserves.at(AugmintReserves.address); - const tokenAEur = TokenAEur.at(TokenAEur.address); - const interestEarnedAccount = InterestEarnedAccount.at(InterestEarnedAccount.address); - const monetarySupervisor = MonetarySupervisor.at(MonetarySupervisor.address); - const loanManager = LoanManager.at(LoanManager.address); - const locker = Locker.at(Locker.address); - const exchange = Exchange.at(Exchange.address); + const [ + feeAccount, + augmintReserves, + tokenAEur, + interestEarnedAccount, + monetarySupervisor, + loanManager, + locker, + exchange, + ] = await Promise.all([ + FeeAccount.at(FeeAccount.address), + AugmintReserves.at(AugmintReserves.address), + TokenAEur.at(TokenAEur.address), + InterestEarnedAccount.at(InterestEarnedAccount.address), + MonetarySupervisor.at(MonetarySupervisor.address), + LoanManager.at(LoanManager.address), + Locker.at(Locker.address), + Exchange.at(Exchange.address), + ]); - const grantTxs = stabilityBoardAccounts.map(acc => [ - feeAccount.grantPermission(acc, "StabilityBoard"), - augmintReserves.grantPermission(acc, "StabilityBoard"), - tokenAEur.grantPermission(acc, "StabilityBoard"), - interestEarnedAccount.grantPermission(acc, "StabilityBoard"), - monetarySupervisor.grantPermission(acc, "StabilityBoard"), - locker.grantPermission(acc, "StabilityBoard"), - loanManager.grantPermission(acc, "StabilityBoard"), - exchange.grantPermission(acc, "StabilityBoard") + const grantTxs = stabilityBoardAccounts.map((acc) => [ + feeAccount.grantPermission(acc, web3.utils.asciiToHex("StabilityBoard")), + augmintReserves.grantPermission(acc, web3.utils.asciiToHex("StabilityBoard")), + tokenAEur.grantPermission(acc, web3.utils.asciiToHex("StabilityBoard")), + interestEarnedAccount.grantPermission(acc, web3.utils.asciiToHex("StabilityBoard")), + monetarySupervisor.grantPermission(acc, web3.utils.asciiToHex("StabilityBoard")), + locker.grantPermission(acc, web3.utils.asciiToHex("StabilityBoard")), + loanManager.grantPermission(acc, web3.utils.asciiToHex("StabilityBoard")), + exchange.grantPermission(acc, web3.utils.asciiToHex("StabilityBoard")), ]); await Promise.all(grantTxs); diff --git a/migrations/1003_add_legacyContracts.js b/migrations/1003_add_legacyContracts.js index ee4ed0ba..b91cc456 100644 --- a/migrations/1003_add_legacyContracts.js +++ b/migrations/1003_add_legacyContracts.js @@ -8,10 +8,12 @@ const Locker = artifacts.require("./Locker.sol"); const LoanManager_1_0_12 = artifacts.require("./legacy/1.0.12/LoanManager_1_0_12.sol"); const Exchange = artifacts.require("./Exchange.sol"); -module.exports = async function(deployer, network, accounts) { +module.exports = async function (deployer, network, accounts) { deployer.then(async () => { - const monetarySupervisor = MonetarySupervisor.at(MonetarySupervisor.address); - const feeAccount = FeeAccount.at(FeeAccount.address); + const [monetarySupervisor, feeAccount] = await Promise.all([ + MonetarySupervisor.at(MonetarySupervisor.address), + FeeAccount.at(FeeAccount.address), + ]); const oldToken = await TokenAEur.new(accounts[0], FeeAccount.address); @@ -25,32 +27,32 @@ module.exports = async function(deployer, network, accounts) { const oldExchange = await Exchange.new(accounts[0], oldToken.address, Rates.address); await Promise.all([ - oldLoanManager.grantPermission(accounts[0], "StabilityBoard"), - oldLocker.grantPermission(accounts[0], "StabilityBoard"), - oldExchange.grantPermission(accounts[0], "StabilityBoard") + oldLoanManager.grantPermission(accounts[0], web3.utils.asciiToHex("StabilityBoard")), + oldLocker.grantPermission(accounts[0], web3.utils.asciiToHex("StabilityBoard")), + oldExchange.grantPermission(accounts[0], web3.utils.asciiToHex("StabilityBoard")), ]); await Promise.all([ - oldToken.grantPermission(MonetarySupervisor.address, "MonetarySupervisor"), + oldToken.grantPermission(MonetarySupervisor.address, web3.utils.asciiToHex("MonetarySupervisor")), monetarySupervisor.setAcceptedLegacyAugmintToken(oldToken.address, true), - oldToken.grantPermission(accounts[0], "MonetarySupervisor"), // "hack" for test to issue + oldToken.grantPermission(accounts[0], web3.utils.asciiToHex("MonetarySupervisor")), // "hack" for test to issue /* Locker permissions & products */ - monetarySupervisor.grantPermission(oldLocker.address, "Locker"), - feeAccount.grantPermission(oldLocker.address, "NoTransferFee"), + monetarySupervisor.grantPermission(oldLocker.address, web3.utils.asciiToHex("Locker")), + feeAccount.grantPermission(oldLocker.address, web3.utils.asciiToHex("NoTransferFee")), oldLocker.addLockProduct(80001, 31536000, 1000, true), // 365 days, 8% p.a. oldLocker.addLockProduct(1, 60, 1000, true), // 1 minute for testing, ~69.15% p.a. /* LoanManager permissions & products */ - monetarySupervisor.grantPermission(oldLoanManager.address, "LoanManager"), - feeAccount.grantPermission(oldLoanManager.address, "NoTransferFee"), + monetarySupervisor.grantPermission(oldLoanManager.address, web3.utils.asciiToHex("LoanManager")), + feeAccount.grantPermission(oldLoanManager.address, web3.utils.asciiToHex("NoTransferFee")), oldLoanManager.addLoanProduct(1, 999999, 990000, 1000, 50000, true), // defaults in 1 secs for testing ? p.a. oldLoanManager.addLoanProduct(3600, 999989, 980000, 1000, 50000, true), // due in 1hr for testing repayments ? p.a. oldLoanManager.addLoanProduct(31536000, 860000, 550000, 1000, 50000, true), // 365d, 14% p.a. /* Exchange permissions */ - feeAccount.grantPermission(oldExchange.address, "NoTransferFee") + feeAccount.grantPermission(oldExchange.address, web3.utils.asciiToHex("NoTransferFee")), ]); await oldToken.issueTo(accounts[0], 20000); // issue some to account 0 @@ -59,12 +61,12 @@ module.exports = async function(deployer, network, accounts) { oldToken.transferAndNotify(oldLocker.address, 1500, 0), oldToken.transferAndNotify(oldLocker.address, 1600, 1), - oldLoanManager.newEthBackedLoan(0, { value: web3.toWei(0.1) }), - oldLoanManager.newEthBackedLoan(2, { value: web3.toWei(0.2) }), + oldLoanManager.newEthBackedLoan(0, { value: web3.utils.toWei("0.1") }), + oldLoanManager.newEthBackedLoan(2, { value: web3.utils.toWei("0.2") }), oldToken.transferAndNotify(oldExchange.address, 2000, 1010000), oldToken.transferAndNotify(oldExchange.address, 1100, 980000), - oldExchange.placeBuyTokenOrder(990000, { value: web3.toWei(0.01) }), - oldExchange.placeBuyTokenOrder(1020000, { value: web3.toWei(0.011) }) + oldExchange.placeBuyTokenOrder(990000, { value: web3.utils.toWei("0.01") }), + oldExchange.placeBuyTokenOrder(1020000, { value: web3.utils.toWei("0.011") }), ]); console.log( diff --git a/migrations/1004_add_test_preTokens.js b/migrations/1004_add_test_preTokens.js index f0899714..2fb9771a 100644 --- a/migrations/1004_add_test_preTokens.js +++ b/migrations/1004_add_test_preTokens.js @@ -3,28 +3,28 @@ \ */ const PreToken = artifacts.require("./PreToken.sol"); -module.exports = function(deployer, network, accounts) { +module.exports = function (deployer, network, accounts) { deployer.then(async () => { - const preToken = PreToken.at(PreToken.address); - await preToken.grantPermission(accounts[0], "PreTokenSigner"); // only on local test to allow issuance w/o MultiSig + const preToken = await PreToken.at(PreToken.address); + await preToken.grantPermission(accounts[0], web3.utils.asciiToHex("PreTokenSigner")); // only on local test to allow issuance w/o MultiSig const AC0_AGREEMENT = "0xa100000000000000000000000000000000000000000000000000000000000001"; const AC1_AGREEMENT = "0xa200000000000000000000000000000000000000000000000000000000000002"; await Promise.all([ // addAgreement(owner, agreementHash, discount, valuationCap) preToken.addAgreement(accounts[0], AC0_AGREEMENT, 800000, 30000000), - preToken.addAgreement(accounts[1], AC1_AGREEMENT, 850000, 40000000) + preToken.addAgreement(accounts[1], AC1_AGREEMENT, 850000, 40000000), ]); await Promise.all([ preToken.issueTo(AC0_AGREEMENT, 10000), preToken.issueTo(AC0_AGREEMENT, 9000), preToken.issueTo(AC0_AGREEMENT, 8000), - preToken.issueTo(AC1_AGREEMENT, 7000) + preToken.issueTo(AC1_AGREEMENT, 7000), ]); await Promise.all([ preToken.transfer(accounts[2], 7000, { from: accounts[1] }), - preToken.burnFrom(AC0_AGREEMENT, 1000) + preToken.burnFrom(AC0_AGREEMENT, 1000), ]); }); }; diff --git a/migrations/2000_setRateDefault.js b/migrations/2000_setRateDefault.js index 37a124e4..2fc4556e 100644 --- a/migrations/2000_setRateDefault.js +++ b/migrations/2000_setRateDefault.js @@ -2,11 +2,11 @@ // run it with: "truffle migrate -f 2000 --to 2000" or "setrate:default" const Rates = artifacts.require("./Rates.sol"); -const newRate = 99800; +const newRate = "99800"; -module.exports = function(deployer) { +module.exports = function (deployer) { deployer.then(async () => { - const rates = Rates.at(Rates.address); - await rates.setRate("EUR", newRate); + const rates = await Rates.at(Rates.address); + await rates.setRate(web3.utils.asciiToHex("EUR"), newRate); }); }; diff --git a/migrations/2001_setRateLow.js b/migrations/2001_setRateLow.js index ccbd0abd..2ad53ac1 100644 --- a/migrations/2001_setRateLow.js +++ b/migrations/2001_setRateLow.js @@ -2,11 +2,11 @@ // run it with: "truffle migrate -f 2001 --to 2001" or "setrate:low" const Rates = artifacts.require("./Rates.sol"); -const newRate = 42500; +const newRate = "42500"; -module.exports = function(deployer) { +module.exports = function (deployer) { deployer.then(async () => { - const rates = Rates.at(Rates.address); - await rates.setRate("EUR", newRate); + const rates = await Rates.at(Rates.address); + await rates.setRate(web3.utils.asciiToHex("EUR"), newRate); }); }; diff --git a/migrations/2002_setRateHigh.js b/migrations/2002_setRateHigh.js index f65011ac..48de3a8b 100644 --- a/migrations/2002_setRateHigh.js +++ b/migrations/2002_setRateHigh.js @@ -2,11 +2,11 @@ // run it with: "truffle migrate -f 2002 --to 2002" or "setrate:high" const Rates = artifacts.require("./Rates.sol"); -const newRate = 225000; +const newRate = "225000"; -module.exports = function(deployer) { +module.exports = function (deployer) { deployer.then(async () => { - const rates = Rates.at(Rates.address); - await rates.setRate("EUR", newRate); + const rates = await Rates.at(Rates.address); + await rates.setRate(web3.utils.asciiToHex("EUR"), newRate); }); }; diff --git a/migrations_null/.eslintrc b/migrations_null/.eslintrc new file mode 100644 index 00000000..98bc0de7 --- /dev/null +++ b/migrations_null/.eslintrc @@ -0,0 +1,24 @@ +{ + "extends": ['eslint:recommended'], + "parserOptions": { + "ecmaVersion": 2017, + }, + "env": { + "mocha": true, + "node": true, + "es6": true + }, + "rules": { + "indent": ["warn", 4], + max-len: "off", + radix: "off", + no-unused-vars: "warn", + "no-console": "off" + }, + "globals": { + "web3": false, + "assert": false, + "artifacts": false, + "contract": false + } +} diff --git a/migrations_null/.prettierrc b/migrations_null/.prettierrc new file mode 100644 index 00000000..e8980d15 --- /dev/null +++ b/migrations_null/.prettierrc @@ -0,0 +1,4 @@ +{ + "printWidth": 120, + "tabWidth": 4 +} diff --git a/migrations_null/.readme b/migrations_null/.readme index 96d7d9f9..ffc3562f 100644 --- a/migrations_null/.readme +++ b/migrations_null/.readme @@ -1,3 +1,5 @@ An empty dir to speed up test by avoiding migrations running unnecessarily again -when yarn test runing on ganache docker container which already have all contracts +when ganache has all the contracts already (eg. yarn test running on ganache docker container) +This dir is set by default in truffle-config.js and --migrations_directory flag is used to override it +in packages.json scripts see: https://ethereum.stackexchange.com/a/62918/7866 \ No newline at end of file diff --git a/migrations_null/1_no_migration.js b/migrations_null/1_no_migration.js new file mode 100644 index 00000000..09d145b9 --- /dev/null +++ b/migrations_null/1_no_migration.js @@ -0,0 +1,3 @@ +module.exports = function (deployer) { + console.log("Skipping truffle migrations (migrations_null directory set)"); +}; diff --git a/package.json b/package.json index a7079f5d..f96d7538 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ "start_comp": "yarn runmigrate_comp", "build": "truffle compile", "clean": "rm build/contracts/*", - "test": "truffle test --migrations_directory migrations_null", + "test": "truffle test", "coverage": "solidity-coverage", - "migrate": "truffle migrate", + "migrate": "truffle migrate --migrations_directory ./migrations", "compile": "yarn build", "ganache:run": "./scripts/runganache.sh", "ganache:stop": "echo TODO", @@ -54,7 +54,6 @@ "devDependencies": { "abiniser": "0.5.1", "babel-register": "6.26.0", - "bignumber.js": "5.0.0", "coveralls": "3.0.4", "dotenv": "8.0.0", "eslint": "6.0.0", @@ -63,15 +62,9 @@ "random-seed": "0.3.0", "solidity-coverage": "0.5.11", "stringifier": "2.0.0", - "truffle": "4.1.14", + "truffle": "5.1.43", "truffle-hdwallet-provider": "1.0.13", - "wait-on": "3.2.0", - "web3v1": "npm:web3@1.0.0-beta.34" - }, - "greenkeeper": { - "ignore": [ - "bignumber.js" - ] + "wait-on": "3.2.0" }, "files": [ "abiniser" diff --git a/test/delegatedTransfer.js b/test/delegatedTransfer.js index 58dc4426..923daa48 100644 --- a/test/delegatedTransfer.js +++ b/test/delegatedTransfer.js @@ -3,17 +3,21 @@ const testHelpers = require("./helpers/testHelpers.js"); const TokenAEur = artifacts.require("TokenAEur.sol"); const FeeAccount = artifacts.require("FeeAccount.sol"); +const BN = web3.utils.BN; + const DELEGATED_TRANSFER_MAX_GAS = 150000; +let snapshotIdSingleTest; + let tokenAEur; let from; -const signDelegatedTransfer = async clientParams => { +const signDelegatedTransfer = async (clientParams) => { let txHash; if (clientParams.narrative === "") { // workaround b/c solidity keccak256 results different txHAsh with empty string than web3 - txHash = global.web3v1.utils.soliditySha3( + txHash = web3.utils.soliditySha3( clientParams.tokenAEurAddress, clientParams.from, clientParams.to, @@ -22,7 +26,7 @@ const signDelegatedTransfer = async clientParams => { clientParams.nonce ); } else { - txHash = global.web3v1.utils.soliditySha3( + txHash = web3.utils.soliditySha3( clientParams.tokenAEurAddress, clientParams.from, clientParams.to, @@ -33,7 +37,7 @@ const signDelegatedTransfer = async clientParams => { ); } - const signature = await global.web3v1.eth.sign(txHash, clientParams.from); + const signature = await web3.eth.sign(txHash, clientParams.from); return signature; }; @@ -45,19 +49,19 @@ const sendDelegatedTransfer = async (testInstance, clientParams, signature, exec from: clientParams.from, to: clientParams.to, executor: executorParams.executorAddress, - feeAccount: FeeAccount.address + feeAccount: FeeAccount.address, }); const tx = await tokenAEur.methods .delegatedTransfer( clientParams.from, clientParams.to, - clientParams.amount, + clientParams.amount.toString(), clientParams.narrative, - clientParams.maxExecutorFee, + clientParams.maxExecutorFee.toString(), clientParams.nonce, signature, - executorParams.requestedExecutorFee + executorParams.requestedExecutorFee.toString() ) .send({ from: executorParams.executorAddress, gas: 1200000 }); testHelpers.logGasUse(testInstance, tx, "delegatedTransfer"); @@ -70,47 +74,55 @@ const sendDelegatedTransfer = async (testInstance, clientParams, signature, exec .sub(clientParams.amount) .sub(clientParams.fee) .sub(executorParams.requestedExecutorFee), - eth: balBefore.from.eth + eth: balBefore.from.eth, }, to: { ace: balBefore.to.ace.add(clientParams.amount), - eth: balBefore.to.eth + eth: balBefore.to.eth, }, feeAccount: { ace: balBefore.feeAccount.ace.add(clientParams.fee), - eth: balBefore.feeAccount.eth + eth: balBefore.feeAccount.eth, }, executor: { ace: balBefore.executor.ace.add(executorParams.requestedExecutorFee), - gasFee: testHelpers.GAS_PRICE * DELEGATED_TRANSFER_MAX_GAS - } + gasFee: testHelpers.GAS_PRICE * DELEGATED_TRANSFER_MAX_GAS, + }, }); return tx; }; -contract("Delegated Transfers", accounts => { +contract("Delegated Transfers", (accounts) => { before(async () => { from = accounts[1]; - tokenAEur = new global.web3v1.eth.Contract(TokenAEur.abi, TokenAEur.address); + tokenAEur = new web3.eth.Contract(TokenAEur.abi, TokenAEur.address); await tokenTestHelpers.issueToken(accounts[0], from, 10000); }); - it("should transfer when delegatedTransfer is signed", async function() { + beforeEach(async function () { + snapshotIdSingleTest = await testHelpers.takeSnapshot(); + }); + + afterEach(async function () { + await testHelpers.revertSnapshot(snapshotIdSingleTest); + }); + + it("should transfer when delegatedTransfer is signed", async function () { const clientParams = { tokenAEurAddress: TokenAEur.address, from, to: accounts[2], - amount: 1000, + amount: new BN(1000), narrative: "here we go", - maxExecutorFee: 300, - nonce: "0x0000000000000000000000000000000000000000000000000000000000000001" // to be a random hash with proper entrophy + maxExecutorFee: new BN(300), + nonce: "0x0000000000000000000000000000000000000000000000000000000000000001", // to be a random hash with proper entrophy }; const executorParams = { executorAddress: accounts[3], - requestedExecutorFee: clientParams.maxExecutorFee + requestedExecutorFee: clientParams.maxExecutorFee, }; const signature = await signDelegatedTransfer(clientParams); @@ -118,20 +130,20 @@ contract("Delegated Transfers", accounts => { await sendDelegatedTransfer(this, clientParams, signature, executorParams); }); - it("should not execute with the same nonce twice", async function() { + it("should not execute with the same nonce twice", async function () { const clientParams = { tokenAEurAddress: TokenAEur.address, from, to: accounts[2], - amount: 1000, + amount: new BN(1000), narrative: "here we go", - maxExecutorFee: 300, - nonce: "0x0000000000000000000000000000000000000000000000000000000000000002" // to be a random hash with proper entrophy + maxExecutorFee: new BN(300), + nonce: "0x0000000000000000000000000000000000000000000000000000000000000002", // to be a random hash with proper entrophy }; const executorParams = { executorAddress: accounts[3], - requestedExecutorFee: clientParams.maxExecutorFee + requestedExecutorFee: clientParams.maxExecutorFee, }; const signature = await signDelegatedTransfer(clientParams); @@ -141,20 +153,20 @@ contract("Delegated Transfers", accounts => { await testHelpers.expectThrow(sendDelegatedTransfer(this, clientParams, signature, executorParams)); }); - it("should execute with lower requestedExecutorFee than signed", async function() { + it("should execute with lower requestedExecutorFee than signed", async function () { const clientParams = { tokenAEurAddress: TokenAEur.address, from, to: accounts[2], - amount: 1000, + amount: new BN(1000), narrative: "here we go", - maxExecutorFee: 300, - nonce: "0x0000000000000000000000000000000000000000000000000000000000000003" // to be a random hash with proper entrophy + maxExecutorFee: new BN(300), + nonce: "0x0000000000000000000000000000000000000000000000000000000000000003", // to be a random hash with proper entrophy }; const executorParams = { executorAddress: accounts[3], - requestedExecutorFee: clientParams.maxExecutorFee - 10 + requestedExecutorFee: clientParams.maxExecutorFee.sub(new BN(10)), }; const signature = await signDelegatedTransfer(clientParams); @@ -162,20 +174,20 @@ contract("Delegated Transfers", accounts => { await sendDelegatedTransfer(this, clientParams, signature, executorParams); }); - it("should not execute with higher requestedExecutorFee than signed", async function() { + it("should not execute with higher requestedExecutorFee than signed", async function () { const clientParams = { tokenAEurAddress: TokenAEur.address, from, to: accounts[2], - amount: 1000, + amount: new BN(1000), narrative: "here we go", - maxExecutorFee: 300, - nonce: "0x0000000000000000000000000000000000000000000000000000000000000004" // to be a random hash with proper entrophy + maxExecutorFee: new BN(300), + nonce: "0x0000000000000000000000000000000000000000000000000000000000000004", // to be a random hash with proper entrophy }; const executorParams = { executorAddress: accounts[3], - requestedExecutorFee: clientParams.maxExecutorFee + 1 + requestedExecutorFee: clientParams.maxExecutorFee.add(new BN(1)), }; const signature = await signDelegatedTransfer(clientParams); diff --git a/test/delegatedTransferAndNotify.js b/test/delegatedTransferAndNotify.js index f2e31e14..e4c4624e 100644 --- a/test/delegatedTransferAndNotify.js +++ b/test/delegatedTransferAndNotify.js @@ -4,15 +4,19 @@ const TokenAEur = artifacts.require("TokenAEur.sol"); const FeeAccount = artifacts.require("FeeAccount.sol"); const Locker = artifacts.require("Locker.sol"); +const BN = web3.utils.BN; + const DELEGATED_TRANSFERANDNOTIFY_MAX_GAS = 300000; +let snapshotIdSingleTest; + let tokenAEur; let from; let lockProductId; let perTermInterest; -const signDelegatedTransferAndNotify = async clientParams => { - const txHash = global.web3v1.utils.soliditySha3( +const signDelegatedTransferAndNotify = async (clientParams) => { + const txHash = web3.utils.soliditySha3( clientParams.tokenAEurAddress, clientParams.from, clientParams.target, @@ -22,7 +26,7 @@ const signDelegatedTransferAndNotify = async clientParams => { clientParams.nonce ); - const signature = await global.web3v1.eth.sign(txHash, clientParams.from); + const signature = await web3.eth.sign(txHash, clientParams.from); return signature; }; @@ -31,25 +35,25 @@ const sendDelegatedTransferAndNotify = async (testInstance, clientParams, signat clientParams.to = clientParams.target; clientParams.fee = await tokenTestHelpers.getTransferFee(clientParams); - const interestEarned = Math.ceil(clientParams.amount * perTermInterest / 1000000); + const interestEarned = new BN(Math.ceil((clientParams.amount * perTermInterest) / 1000000)); const balBefore = await tokenTestHelpers.getAllBalances({ from: clientParams.from, target: clientParams.target, executor: executorParams.executorAddress, - feeAccount: FeeAccount.address + feeAccount: FeeAccount.address, }); const tx = await tokenAEur.methods .delegatedTransferAndNotify( clientParams.from, clientParams.target, - clientParams.amount, + clientParams.amount.toString(), clientParams.data, - clientParams.maxExecutorFee, + clientParams.maxExecutorFee.toString(), clientParams.nonce, signature, - executorParams.requestedExecutorFee + executorParams.requestedExecutorFee.toString() ) .send({ from: executorParams.executorAddress, gas: 1200000 }); testHelpers.logGasUse(testInstance, tx, "delegatedTransferAndNotify"); @@ -62,52 +66,60 @@ const sendDelegatedTransferAndNotify = async (testInstance, clientParams, signat .sub(clientParams.amount) .sub(clientParams.fee) .sub(executorParams.requestedExecutorFee), - eth: balBefore.from.eth + eth: balBefore.from.eth, }, target: { ace: balBefore.target.ace.add(clientParams.amount).add(interestEarned), - eth: balBefore.target.eth + eth: balBefore.target.eth, }, feeAccount: { ace: balBefore.feeAccount.ace.add(clientParams.fee), - eth: balBefore.feeAccount.eth + eth: balBefore.feeAccount.eth, }, executor: { ace: balBefore.executor.ace.add(executorParams.requestedExecutorFee), - gasFee: testHelpers.GAS_PRICE * DELEGATED_TRANSFERANDNOTIFY_MAX_GAS - } + gasFee: testHelpers.GAS_PRICE * DELEGATED_TRANSFERANDNOTIFY_MAX_GAS, + }, }); return tx; }; -contract("Delegated transferAndNotify", accounts => { +contract("Delegated transferAndNotify", (accounts) => { before(async () => { from = accounts[1]; lockProductId = 0; - tokenAEur = new global.web3v1.eth.Contract(TokenAEur.abi, TokenAEur.address); + tokenAEur = new web3.eth.Contract(TokenAEur.abi, TokenAEur.address); - const lockerInstance = Locker.at(Locker.address); + const lockerInstance = await Locker.at(Locker.address); const product = await lockerInstance.lockProducts(0); perTermInterest = product[0].toNumber(); await tokenTestHelpers.issueToken(accounts[0], from, 10000); }); - it("should lock with delegatedTransferAndNotify", async function() { + beforeEach(async function () { + snapshotIdSingleTest = await testHelpers.takeSnapshot(); + }); + + afterEach(async function () { + await testHelpers.revertSnapshot(snapshotIdSingleTest); + }); + + it("should lock with delegatedTransferAndNotify", async function () { const clientParams = { tokenAEurAddress: TokenAEur.address, from, target: Locker.address, - amount: 1000, + amount: new BN(1000), data: lockProductId, - maxExecutorFee: 300, - nonce: "0x0000000000000000000000000000000000000000000000000000000000000001" // to be a random hash with proper entrophy + maxExecutorFee: new BN(300), + nonce: "0x0000000000000000000000000000000000000000000000000000000000000001", // to be a random hash with proper entrophy }; const executorParams = { executorAddress: accounts[3], - requestedExecutorFee: clientParams.maxExecutorFee + requestedExecutorFee: clientParams.maxExecutorFee, }; const signature = await signDelegatedTransferAndNotify(clientParams); @@ -115,20 +127,20 @@ contract("Delegated transferAndNotify", accounts => { await sendDelegatedTransferAndNotify(this, clientParams, signature, executorParams); }); - it("should not execute with the same nonce twice", async function() { + it("should not execute with the same nonce twice", async function () { const clientParams = { tokenAEurAddress: TokenAEur.address, from, target: Locker.address, - amount: 1000, + amount: new BN(1000), data: lockProductId, - maxExecutorFee: 300, - nonce: "0x0000000000000000000000000000000000000000000000000000000000000002" // to be a random hash with proper entrophy + maxExecutorFee: new BN(300), + nonce: "0x0000000000000000000000000000000000000000000000000000000000000002", // to be a random hash with proper entrophy }; const executorParams = { executorAddress: accounts[3], - requestedExecutorFee: clientParams.maxExecutorFee + requestedExecutorFee: clientParams.maxExecutorFee, }; const signature = await signDelegatedTransferAndNotify(clientParams); @@ -138,20 +150,20 @@ contract("Delegated transferAndNotify", accounts => { await testHelpers.expectThrow(sendDelegatedTransferAndNotify(this, clientParams, signature, executorParams)); }); - it("should execute with lower requestedExecutorFee than signed", async function() { + it("should execute with lower requestedExecutorFee than signed", async function () { const clientParams = { tokenAEurAddress: TokenAEur.address, from, target: Locker.address, - amount: 1000, + amount: new BN(1000), data: lockProductId, - maxExecutorFee: 300, - nonce: "0x0000000000000000000000000000000000000000000000000000000000000003" // to be a random hash with proper entrophy + maxExecutorFee: new BN(300), + nonce: "0x0000000000000000000000000000000000000000000000000000000000000003", // to be a random hash with proper entrophy }; const executorParams = { executorAddress: accounts[3], - requestedExecutorFee: clientParams.maxExecutorFee - 10 + requestedExecutorFee: clientParams.maxExecutorFee.sub(new BN(10)), }; const signature = await signDelegatedTransferAndNotify(clientParams); @@ -159,20 +171,20 @@ contract("Delegated transferAndNotify", accounts => { await sendDelegatedTransferAndNotify(this, clientParams, signature, executorParams); }); - it("should not execute with higher requestedExecutorFee than signed", async function() { + it("should not execute with higher requestedExecutorFee than signed", async function () { const clientParams = { tokenAEurAddress: TokenAEur.address, from, target: Locker.address, - amount: 1000, + amount: new BN(1000), data: lockProductId, - maxExecutorFee: 300, - nonce: "0x0000000000000000000000000000000000000000000000000000000000000004" // to be a random hash with proper entrophy + maxExecutorFee: new BN(300), + nonce: "0x0000000000000000000000000000000000000000000000000000000000000004", // to be a random hash with proper entrophy }; const executorParams = { executorAddress: accounts[3], - requestedExecutorFee: clientParams.maxExecutorFee + 1 + requestedExecutorFee: clientParams.maxExecutorFee.add(new BN(1)), }; const signature = await signDelegatedTransferAndNotify(clientParams); diff --git a/test/exchange.js b/test/exchange.js index 4e132a32..6d4a518e 100644 --- a/test/exchange.js +++ b/test/exchange.js @@ -4,25 +4,26 @@ const ratesTestHelpers = require("./helpers/ratesTestHelpers.js"); let exchange = null; -contract("Exchange tests", accounts => { - before(async function() { +contract("Exchange tests", (accounts) => { + before(async function () { exchange = exchangeTestHelpers.exchange; }); - it("Should allow to change rates contract", async function() { - const newRatesContract = ratesTestHelpers.rates.address; - const tx = await exchange.setRatesContract(newRatesContract); + it("Should allow to change rates contract", async function () { + const newRatesContract = accounts[0]; + + const tx = await exchange.setRatesContract(accounts[0]); testHelpers.logGasUse(this, tx, "setRatesContract"); const [actualRatesContract] = await Promise.all([ exchange.rates(), - testHelpers.assertEvent(exchange, "RatesContractChanged", { newRatesContract }) + testHelpers.assertEvent(exchange, "RatesContractChanged", { newRatesContract }), ]); assert.equal(actualRatesContract, newRatesContract); }); - it("Only allowed should change rates and monetarySupervisor contracts", async function() { + it("Only allowed should change rates and monetarySupervisor contracts", async function () { const newRatesContract = ratesTestHelpers.rates.address; await testHelpers.expectThrow(exchange.setRatesContract(newRatesContract, { from: accounts[1] })); }); diff --git a/test/exchangeMatchMultiple.js b/test/exchangeMatchMultiple.js index eadb98d9..bd947e2f 100644 --- a/test/exchangeMatchMultiple.js +++ b/test/exchangeMatchMultiple.js @@ -10,52 +10,54 @@ let exchange = null; let maker; let taker; -contract("Exchange Multiple Matching tests", () => { - before(async function() { +contract("Exchange Multiple Matching tests", (accounts) => { + before(async function () { exchange = exchangeTestHelper.exchange; - maker = global.accounts[1]; - taker = global.accounts[2]; - await tokenTestHelpers.issueToken(global.accounts[0], maker, 1000000); - await tokenTestHelpers.issueToken(global.accounts[0], taker, 1000000); + maker = accounts[1]; + taker = accounts[2]; + await Promise.all([ + tokenTestHelpers.issueToken(accounts[0], maker, 1000000), + tokenTestHelpers.issueToken(accounts[0], taker, 1000000), + ]); }); - beforeEach(async function() { + beforeEach(async function () { snapshotId = await testHelpers.takeSnapshot(); }); - afterEach(async function() { + afterEach(async function () { await testHelpers.revertSnapshot(snapshotId); }); - it("should match multiple sell orders", async function() { + it("should match multiple sell orders", async function () { const makerPrice = 1010000; const tokenAmount = 10000; const buyOrder1 = { - amount: global.web3v1.utils.toWei("10"), + amount: web3.utils.toWei("10"), maker: maker, - price: makerPrice, - orderType: TOKEN_BUY + price: makerPrice.toString(), + orderType: TOKEN_BUY, }; const buyOrder2 = { - amount: global.web3v1.utils.toWei("20"), + amount: web3.utils.toWei("20"), maker: maker, - price: makerPrice, - orderType: TOKEN_BUY + price: makerPrice.toString(), + orderType: TOKEN_BUY, }; const sellOrder1 = { amount: tokenAmount, maker: taker, - price: 990000, - orderType: TOKEN_SELL + price: "990000", + orderType: TOKEN_SELL, }; const sellOrder2 = Object.assign({}, sellOrder1); const sellOrder3 = Object.assign({}, sellOrder1); await exchangeTestHelper.newOrder(this, buyOrder1); await exchangeTestHelper.newOrder(this, buyOrder2); - await exchangeTestHelper.newOrder(this, sellOrder1), - await exchangeTestHelper.newOrder(this, sellOrder2), + await exchangeTestHelper.newOrder(this, sellOrder1); + await exchangeTestHelper.newOrder(this, sellOrder2); await exchangeTestHelper.newOrder(this, sellOrder3); // await exchangeTestHelper.printOrderBook(10); @@ -74,62 +76,62 @@ contract("Exchange Multiple Matching tests", () => { await testHelpers.assertEvent(exchange, "OrderFill", [ { - sellTokenOrderId: sellOrder1.id, - buyTokenOrderId: buyOrder1.id, + sellTokenOrderId: sellOrder1.id.toString(), + buyTokenOrderId: buyOrder1.id.toString(), tokenSeller: taker, tokenBuyer: maker, publishedRate: () => {}, // ignore, not testing it here, - price: makerPrice, + price: makerPrice.toString(), weiAmount: () => {}, // ignore, not testing it here - tokenAmount: tokenAmount + tokenAmount: tokenAmount.toString(), }, { - sellTokenOrderId: sellOrder2.id, - buyTokenOrderId: buyOrder2.id, + sellTokenOrderId: sellOrder2.id.toString(), + buyTokenOrderId: buyOrder2.id.toString(), tokenSeller: taker, tokenBuyer: maker, publishedRate: () => {}, // ignore, not testing it here, - price: makerPrice, + price: makerPrice.toString(), weiAmount: () => {}, // ignore, not testing it here - tokenAmount: tokenAmount + tokenAmount: tokenAmount.toString(), }, { - sellTokenOrderId: sellOrder3.id, - buyTokenOrderId: buyOrder1.id, + sellTokenOrderId: sellOrder3.id.toString(), + buyTokenOrderId: buyOrder1.id.toString(), tokenSeller: taker, tokenBuyer: maker, publishedRate: () => {}, // ignore, not testing it here, - price: makerPrice, + price: makerPrice.toString(), weiAmount: () => {}, // ignore, not testing it here - tokenAmount: tokenAmount - } + tokenAmount: tokenAmount.toString(), + }, ]); }); // ensure edge cases of passing the same order twice - it("matchMultipleOrders should match as many orders as fits into gas provided", async function() { + it("matchMultipleOrders should match as many orders as fits into gas provided", async function () { const makerPrice = 1010000; const tokenAmount = 10000; const buyOrder = { - amount: global.web3v1.utils.toWei("10"), + amount: web3.utils.toWei("10"), maker: maker, - price: makerPrice, - orderType: TOKEN_BUY + price: makerPrice.toString(), + orderType: TOKEN_BUY, }; const sellOrder1 = { amount: tokenAmount, maker: taker, - price: 990000, - orderType: TOKEN_SELL + price: "990000", + orderType: TOKEN_SELL, }; const sellOrder2 = Object.assign({}, sellOrder1); const sellOrder3 = Object.assign({}, sellOrder1); const sellOrder4 = Object.assign({}, sellOrder1); await exchangeTestHelper.newOrder(this, buyOrder); - await exchangeTestHelper.newOrder(this, sellOrder1), - await exchangeTestHelper.newOrder(this, sellOrder2), + await exchangeTestHelper.newOrder(this, sellOrder1); + await exchangeTestHelper.newOrder(this, sellOrder2); await exchangeTestHelper.newOrder(this, sellOrder3); await exchangeTestHelper.newOrder(this, sellOrder4); @@ -147,35 +149,35 @@ contract("Exchange Multiple Matching tests", () => { await testHelpers.assertEvent(exchange, "OrderFill", [ { - sellTokenOrderId: sellOrder1.id, - buyTokenOrderId: buyOrder.id, + sellTokenOrderId: sellOrder1.id.toString(), + buyTokenOrderId: buyOrder.id.toString(), tokenSeller: taker, tokenBuyer: maker, publishedRate: () => {}, // ignore, not testing it here, - price: makerPrice, + price: makerPrice.toString(), weiAmount: () => {}, // ignore, not testing it here - tokenAmount: tokenAmount + tokenAmount: tokenAmount.toString(), }, { - sellTokenOrderId: sellOrder2.id, - buyTokenOrderId: buyOrder.id, + sellTokenOrderId: sellOrder2.id.toString(), + buyTokenOrderId: buyOrder.id.toString(), tokenSeller: taker, tokenBuyer: maker, publishedRate: () => {}, // ignore, not testing it here, - price: makerPrice, + price: makerPrice.toString(), weiAmount: () => {}, // ignore, not testing it here - tokenAmount: tokenAmount + tokenAmount: tokenAmount.toString(), }, { - sellTokenOrderId: sellOrder3.id, - buyTokenOrderId: buyOrder.id, + sellTokenOrderId: sellOrder3.id.toString(), + buyTokenOrderId: buyOrder.id.toString(), tokenSeller: taker, tokenBuyer: maker, publishedRate: () => {}, // ignore, not testing it here, - price: makerPrice, + price: makerPrice.toString(), weiAmount: () => {}, // ignore, not testing it here - tokenAmount: tokenAmount - } + tokenAmount: tokenAmount.toString(), + }, ]); const stateAfter = await exchangeTestHelper.getState(); @@ -183,34 +185,34 @@ contract("Exchange Multiple Matching tests", () => { assert.equal(stateAfter.buyCount, 1, "Buy token order count should be 1"); }); - it("matchMultipleOrders should carry on if one is duplicate, non-matching or removed", async function() { + it("matchMultipleOrders should carry on if one is duplicate, non-matching or removed", async function () { const makerPrice = 1010000; const tokenAmount = 10000; const buyOrder = { - amount: global.web3v1.utils.toWei("10"), + amount: web3.utils.toWei("10"), maker: maker, - price: makerPrice, - orderType: TOKEN_BUY + price: makerPrice.toString(), + orderType: TOKEN_BUY, }; const sellOrder1 = { - amount: tokenAmount, + amount: tokenAmount.toString(), maker: taker, - price: 990000, - orderType: TOKEN_SELL + price: "990000", + orderType: TOKEN_SELL, }; const sellOrder2Cancelled = Object.assign({}, sellOrder1); const sellOrder3 = Object.assign({}, sellOrder1); const sellOrder4Matched = Object.assign({}, sellOrder1); await exchangeTestHelper.newOrder(this, buyOrder); - await exchangeTestHelper.newOrder(this, sellOrder1), - await exchangeTestHelper.newOrder(this, sellOrder2Cancelled), + await exchangeTestHelper.newOrder(this, sellOrder1); + await exchangeTestHelper.newOrder(this, sellOrder2Cancelled); await exchangeTestHelper.newOrder(this, sellOrder3); await exchangeTestHelper.newOrder(this, sellOrder4Matched); await Promise.all([ exchange.cancelSellTokenOrder(sellOrder2Cancelled.id, { from: sellOrder2Cancelled.maker }), - exchange.matchOrders(buyOrder.id, sellOrder4Matched.id) + exchange.matchOrders(buyOrder.id, sellOrder4Matched.id), ]); // await exchangeTestHelper.printOrderBook(10); @@ -227,26 +229,26 @@ contract("Exchange Multiple Matching tests", () => { await testHelpers.assertEvent(exchange, "OrderFill", [ { - sellTokenOrderId: sellOrder1.id, - buyTokenOrderId: buyOrder.id, + sellTokenOrderId: sellOrder1.id.toString(), + buyTokenOrderId: buyOrder.id.toString(), tokenSeller: taker, tokenBuyer: maker, publishedRate: () => {}, // ignore, not testing it here, - price: makerPrice, + price: makerPrice.toString(), weiAmount: () => {}, // ignore, not testing it here - tokenAmount: tokenAmount + tokenAmount: tokenAmount.toString(), }, { - sellTokenOrderId: sellOrder3.id, - buyTokenOrderId: buyOrder.id, + sellTokenOrderId: sellOrder3.id.toString(), + buyTokenOrderId: buyOrder.id.toString(), tokenSeller: taker, tokenBuyer: maker, publishedRate: () => {}, // ignore, not testing it here, - price: makerPrice, + price: makerPrice.toString(), weiAmount: () => {}, // ignore, not testing it here - tokenAmount: tokenAmount - } + tokenAmount: tokenAmount.toString(), + }, ]); const stateAfter = await exchangeTestHelper.getState(); diff --git a/test/exchangeMatching.js b/test/exchangeMatching.js index 11a3d2cc..ef140d28 100644 --- a/test/exchangeMatching.js +++ b/test/exchangeMatching.js @@ -10,35 +10,35 @@ let exchange = null; let maker; let taker; -contract("Exchange matching tests", () => { - before(async function() { +contract("Exchange matching tests", (accounts) => { + before(async function () { exchange = exchangeTestHelper.exchange; - maker = global.accounts[1]; - taker = global.accounts[2]; - await tokenTestHelpers.issueToken(global.accounts[0], maker, 1000000); - await tokenTestHelpers.issueToken(global.accounts[0], taker, 1000000); + maker = accounts[1]; + taker = accounts[2]; + await tokenTestHelpers.issueToken(accounts[0], maker, 1000000); + await tokenTestHelpers.issueToken(accounts[0], taker, 1000000); }); - beforeEach(async function() { + beforeEach(async function () { snapshotId = await testHelpers.takeSnapshot(); }); - afterEach(async function() { + afterEach(async function () { await testHelpers.revertSnapshot(snapshotId); }); - it("should match two matching orders (buy token fully filled)", async function() { + it("should match two matching orders (buy token fully filled)", async function () { const buyOrder = { - amount: global.web3v1.utils.toWei("0.535367"), + amount: web3.utils.toWei("0.535367"), maker: maker, price: 1010000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const sellOrder = { amount: 95582, maker: taker, price: 990000, - orderType: TOKEN_SELL + orderType: TOKEN_SELL, }; await exchangeTestHelper.newOrder(this, buyOrder); @@ -51,18 +51,18 @@ contract("Exchange matching tests", () => { assert.equal(stateAfter.buyCount, 0, "Buy token order count should be 0"); }); - it("should match two matching orders (sell token fully filled)", async function() { + it("should match two matching orders (sell token fully filled)", async function () { const buyOrder = { - amount: global.web3v1.utils.toWei("1.7504"), + amount: web3.utils.toWei("1.7504"), maker: maker, price: 1010000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const sellOrder = { amount: 56141, maker: taker, price: 990000, - orderType: TOKEN_SELL + orderType: TOKEN_SELL, }; await exchangeTestHelper.newOrder(this, buyOrder); @@ -75,12 +75,12 @@ contract("Exchange matching tests", () => { assert.equal(stateAfter.buyCount, 1, "Buy token order count should be 1"); }); - it("should fail if trying to match a sell order with 0 amount left", async function() { + it("should fail if trying to match a sell order with 0 amount left", async function () { const buyOrder = { - amount: global.web3v1.utils.toWei("1.7504"), + amount: web3.utils.toWei("1.7504"), maker: maker, price: 1010000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const buyOrder2 = Object.assign({}, buyOrder); const sellOrder = { amount: 56141, maker: taker, price: 990000, orderType: TOKEN_SELL }; @@ -104,12 +104,12 @@ contract("Exchange matching tests", () => { await testHelpers.expectThrow(exchange.matchOrders(buyOrder.id, sellOrder.id)); }); - it("should fail if trying to match a buy order with 0 amount left", async function() { + it("should fail if trying to match a buy order with 0 amount left", async function () { const buyOrder = { - amount: global.web3v1.utils.toWei("0.0504"), + amount: web3.utils.toWei("0.0504"), maker: maker, price: 1010000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const sellOrder = { amount: 56141, maker: taker, price: 990000, orderType: TOKEN_SELL }; const buyOrder2 = Object.assign({}, buyOrder); @@ -133,8 +133,8 @@ contract("Exchange matching tests", () => { await testHelpers.expectThrow(exchange.matchOrders(buyOrder.id, sellOrder.id)); }); - it("should fail if trying to match two orders with 0 amount left", async function() { - const buyOrder = { amount: global.web3v1.utils.toWei("1"), maker: maker, price: 1000000, orderType: TOKEN_BUY }; + it("should fail if trying to match two orders with 0 amount left", async function () { + const buyOrder = { amount: web3.utils.toWei("1"), maker: maker, price: 1000000, orderType: TOKEN_BUY }; const sellOrder = { amount: 99800, maker: maker, price: 990000, orderType: TOKEN_SELL }; const buyOrder2 = Object.assign({}, buyOrder); const sellOrder2 = Object.assign({}, sellOrder); @@ -157,8 +157,8 @@ contract("Exchange matching tests", () => { await testHelpers.expectThrow(exchange.matchOrders(buyOrder.id, sellOrder.id)); }); - it("should match two matching orders (both fully filled)", async function() { - const buyOrder = { amount: global.web3v1.utils.toWei("1"), maker: maker, price: 1000000, orderType: TOKEN_BUY }; + it("should match two matching orders (both fully filled)", async function () { + const buyOrder = { amount: web3.utils.toWei("1"), maker: maker, price: 1000000, orderType: TOKEN_BUY }; const sellOrder = { amount: 99800, maker: maker, price: 990000, orderType: TOKEN_SELL }; await exchangeTestHelper.newOrder(this, buyOrder); @@ -171,16 +171,16 @@ contract("Exchange matching tests", () => { assert.equal(stateAfter.buyCount, 0, "Buy token order count should be 0"); }); - it("should fully fill both orders when buy token amount expected to be same as sell token amount", async function() { + it("should fully fill both orders when buy token amount expected to be same as sell token amount", async function () { /* from users perspective: Sell: 100A€ / 998 A€/ETH = 0.1002004008 ETH Buy: 0.1002004008 ETH * 998 A€/ETH = 99.9999999984 A€ wich is 100A€ b/c A€ is w/ 2 decimals */ const buyOrder = { - amount: global.web3v1.utils.toWei("0.1002004008"), + amount: web3.utils.toWei("0.1002004008"), maker: maker, price: 1000000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const sellOrder = { amount: 10000, maker: maker, price: 1000000, orderType: TOKEN_SELL }; @@ -196,12 +196,12 @@ contract("Exchange matching tests", () => { assert.equal(stateAfter.buyCount, 0, "Buy token order count should be 0"); }); - it("should match two matching orders from the same account on sell price if placed first ", async function() { + it("should match two matching orders from the same account on sell price if placed first ", async function () { const buyOrder = { - amount: global.web3v1.utils.toWei("1.7504"), + amount: web3.utils.toWei("1.7504"), maker: maker, price: 1010000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const sellOrder = { amount: 56141, maker: maker, price: 990000, orderType: TOKEN_SELL }; @@ -215,13 +215,13 @@ contract("Exchange matching tests", () => { assert.equal(stateAfter.buyCount, 1, "Buy token order count should be 1"); }); - it("should NOT match two non-matching orders", async function() { + it("should NOT match two non-matching orders", async function () { // buy price lower then sell price, should fail const buyOrder = { - amount: global.web3v1.utils.toWei("1.7504"), + amount: web3.utils.toWei("1.7504"), maker: maker, price: 1010000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const sellOrder = { amount: 56141, maker: maker, price: 1010001, orderType: TOKEN_SELL }; @@ -230,12 +230,12 @@ contract("Exchange matching tests", () => { await testHelpers.expectThrow(exchange.matchOrders(buyOrder.id, sellOrder.id)); }); - it("shouldn't matchmultiple if different count of buy&sell orders passed ", async function() { + it("shouldn't matchmultiple if different count of buy&sell orders passed ", async function () { const buyOrder1 = { - amount: global.web3v1.utils.toWei("0.535367"), + amount: web3.utils.toWei("0.535367"), maker: maker, price: 1010000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const sellOrder1 = { amount: 95582, maker: taker, price: 900000, orderType: TOKEN_SELL }; const sellOrder2 = { amount: 95582, maker: taker, price: 900000, orderType: TOKEN_SELL }; diff --git a/test/exchangeOrders.js b/test/exchangeOrders.js index 965ef440..0ed6142d 100644 --- a/test/exchangeOrders.js +++ b/test/exchangeOrders.js @@ -13,28 +13,28 @@ let snapshotId; let augmintToken = null; let exchange = null; -contract("Exchange orders tests", accounts => { - before(async function() { - makers = [global.accounts[1], global.accounts[2], global.accounts[3]]; +contract("Exchange orders tests", (accounts) => { + before(async function () { + makers = [accounts[1], accounts[2], accounts[3]]; exchange = exchangeTestHelpers.exchange; augmintToken = tokenTestHelpers.augmintToken; - await Promise.all(makers.map(maker => tokenTestHelpers.issueToken(accounts[0], maker, 1000000))); + await Promise.all(makers.map((maker) => tokenTestHelpers.issueToken(accounts[0], maker, 1000000))); }); - beforeEach(async function() { + beforeEach(async function () { snapshotId = await testHelpers.takeSnapshot(); }); - afterEach(async function() { + afterEach(async function () { await testHelpers.revertSnapshot(snapshotId); }); - it("place buy token orders", async function() { + it("place buy token orders", async function () { const order = { - amount: global.web3v1.utils.toWei("1"), + amount: web3.utils.toWei("1"), maker: makers[0], price: 1000000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; await exchangeTestHelpers.newOrder(this, order); @@ -42,13 +42,13 @@ contract("Exchange orders tests", accounts => { //await exchangeTestHelper.printOrderBook(); }); - it("place sell token orders directly on Exchange", async function() { + it("place sell token orders directly on Exchange", async function () { const order = { amount: 10000, maker: makers[0], price: 1010000, orderType: TOKEN_SELL, - viaAugmintToken: false + viaAugmintToken: false, }; const tx = await augmintToken.approve(exchange.address, order.amount * 2, { from: order.maker }); @@ -58,13 +58,13 @@ contract("Exchange orders tests", accounts => { await exchangeTestHelpers.newOrder(this, order); }); - it("shouldn't place a sell token order directly if approval < amount", async function() { + it("shouldn't place a sell token order directly if approval < amount", async function () { const order = { amount: 10000, maker: makers[0], price: 1010000, orderType: TOKEN_SELL, - viaAugmintToken: false + viaAugmintToken: false, }; const tx = await augmintToken.approve(exchange.address, order.amount - 1, { from: order.maker }); @@ -73,42 +73,42 @@ contract("Exchange orders tests", accounts => { await testHelpers.expectThrow(exchange.placeSellTokenOrder(order.price, order.amount, { from: order.maker })); }); - it("place a sell token order via AugmintToken", async function() { + it("place a sell token order via AugmintToken", async function () { const order = { amount: 10000, maker: makers[0], price: 1010000, orderType: TOKEN_SELL }; await exchangeTestHelpers.newOrder(this, order); await exchangeTestHelpers.newOrder(this, order); }); - it("should place a BUY token order", async function() { + it("should place a BUY token order", async function () { const order = { amount: 10000, maker: makers[0], price: 1010000, orderType: TOKEN_BUY }; await exchangeTestHelpers.newOrder(this, order); }); - it("shouldn't place a SELL token order with 0 tokens", async function() { + it("shouldn't place a SELL token order with 0 tokens", async function () { const price = 1010000; await testHelpers.expectThrow(augmintToken.transferAndNotify(exchange.address, 0, price, { from: makers[0] })); }); - it("shouldn't place a SELL token order with 0 price", async function() { + it("shouldn't place a SELL token order with 0 price", async function () { const price = 0; await testHelpers.expectThrow( augmintToken.transferAndNotify(exchange.address, 1000, price, { from: makers[0] }) ); }); - it("shouldn't place a BUY token order with 0 ETH", async function() { + it("shouldn't place a BUY token order with 0 ETH", async function () { const price = 1010000; await testHelpers.expectThrow(exchange.placeBuyTokenOrder(price, { value: 0 })); }); - it("shouldn't place a BUY token order with 0 price", async function() { + it("shouldn't place a BUY token order with 0 price", async function () { const price = 0; - await testHelpers.expectThrow(exchange.placeBuyTokenOrder(price, { value: global.web3v1.utils.toWei("0.1") })); + await testHelpers.expectThrow(exchange.placeBuyTokenOrder(price, { value: web3.utils.toWei("0.1") })); }); - it("no SELL token order when user doesn't have enough ACE", async function() { + it("no SELL token order when user doesn't have enough ACE", async function () { const price = 1010000; const userBal = await augmintToken.balanceOf(makers[0]); await testHelpers.expectThrow( @@ -116,24 +116,24 @@ contract("Exchange orders tests", accounts => { ); }); - it("should remove the proper buy orders from the active list", async function() { + it("should remove the proper buy orders from the active list", async function () { const orderA = { - amount: global.web3v1.utils.toWei("1"), + amount: web3.utils.toWei("1"), maker: makers[0], price: 1100000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const orderB = { - amount: global.web3v1.utils.toWei("2"), + amount: web3.utils.toWei("2"), maker: makers[1], price: 1200000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const orderC = { - amount: global.web3v1.utils.toWei("3"), + amount: web3.utils.toWei("3"), maker: makers[2], price: 1300000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; await exchangeTestHelpers.newOrder(this, orderA); @@ -154,24 +154,24 @@ contract("Exchange orders tests", accounts => { assert.equal(activeBuys[0].id, orderB.id, "wrong ID in active orders list"); }); - it("should remove the proper sell orders from the active list", async function() { + it("should remove the proper sell orders from the active list", async function () { const orderA = { amount: 1000, maker: makers[0], price: 1100000, - orderType: TOKEN_SELL + orderType: TOKEN_SELL, }; const orderB = { amount: 2000, maker: makers[1], price: 1200000, - orderType: TOKEN_SELL + orderType: TOKEN_SELL, }; const orderC = { amount: 3000, maker: makers[2], price: 1300000, - orderType: TOKEN_SELL + orderType: TOKEN_SELL, }; await exchangeTestHelpers.newOrder(this, orderA); @@ -192,26 +192,26 @@ contract("Exchange orders tests", accounts => { assert.equal(activeSells[0].id, orderB.id, "wrong ID in active orders list"); }); - it("should cancel a BUY token order", async function() { + it("should cancel a BUY token order", async function () { const order = { - amount: global.web3v1.utils.toWei("1"), + amount: web3.utils.toWei("1"), maker: makers[0], price: 1010000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; await exchangeTestHelpers.newOrder(this, order); await exchangeTestHelpers.cancelOrder(this, order); }); - it("should cancel a SELL token order", async function() { + it("should cancel a SELL token order", async function () { const order = { amount: 10000, maker: makers[0], price: 1010000, orderType: TOKEN_SELL }; await exchangeTestHelpers.newOrder(this, order); await exchangeTestHelpers.cancelOrder(this, order); }); - it("should fail when cancelling an already deleted sell order", async function() { + it("should fail when cancelling an already deleted sell order", async function () { const sellOrder1 = { amount: 45454, maker: makers[0], price: 1010000, orderType: TOKEN_SELL }; const sellOrder2 = { amount: 45454, maker: makers[0], price: 1010000, orderType: TOKEN_SELL }; @@ -220,18 +220,18 @@ contract("Exchange orders tests", accounts => { await testHelpers.expectThrow(exchange.cancelSellTokenOrder(sellOrder2.id)); }); - it("should fail when cancelling an already deleted buy order", async function() { + it("should fail when cancelling an already deleted buy order", async function () { const buyOrder1 = { - amount: global.web3v1.utils.toWei("1"), + amount: web3.utils.toWei("1"), maker: makers[0], price: 1020000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const buyOrder2 = { - amount: global.web3v1.utils.toWei("1"), + amount: web3.utils.toWei("1"), maker: makers[0], price: 1020000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; await exchangeTestHelpers.newOrder(this, buyOrder1); @@ -239,12 +239,12 @@ contract("Exchange orders tests", accounts => { await testHelpers.expectThrow(exchange.cancelBuyTokenOrder(buyOrder2.id)); }); - it("only own orders should be possible to cancel", async function() { + it("only own orders should be possible to cancel", async function () { const buyOrder = { - amount: global.web3v1.utils.toWei("1"), + amount: web3.utils.toWei("1"), maker: makers[0], price: 1020000, - orderType: TOKEN_BUY + orderType: TOKEN_BUY, }; const sellOrder = { amount: 45454, maker: makers[0], price: 1010000, orderType: TOKEN_SELL }; @@ -254,50 +254,40 @@ contract("Exchange orders tests", accounts => { await testHelpers.expectThrow(exchange.cancelSellTokenOrder(sellOrder.id, { from: accounts[0] })); }); - it("should return CHUNK_SIZE buy orders from offset", async function() { + it("should return CHUNK_SIZE buy orders from offset", async function () { const orderCount = 4; const orders = []; for (let i = 0; i < orderCount; i++) { - orders.push( - exchange.placeBuyTokenOrder(1000000 + i, { value: global.web3v1.utils.toWei("0.5"), from: makers[1] }) - ); + orders.push(exchange.placeBuyTokenOrder(1000000 + i, { value: web3.utils.toWei("0.5"), from: makers[1] })); } const txs = await Promise.all(orders); assert(txs.length, orderCount); const orderQueries = [ - exchangeTestHelpers.getActiveBuyOrders(0, CHUNK_SIZE).then(res => { - assert.equal( - res.length, - Math.min(orderCount, CHUNK_SIZE), - "buy orders count when 0 offset" - ); + exchangeTestHelpers.getActiveBuyOrders(0, CHUNK_SIZE).then((res) => { + assert.equal(res.length, Math.min(orderCount, CHUNK_SIZE), "buy orders count when 0 offset"); }), - exchangeTestHelpers.getActiveBuyOrders(1, CHUNK_SIZE).then(res => { - assert.equal( - res.length, - Math.min(orderCount - 1, CHUNK_SIZE), - "buy count when offset from 1" - ); + exchangeTestHelpers.getActiveBuyOrders(1, CHUNK_SIZE).then((res) => { + assert.equal(res.length, Math.min(orderCount - 1, CHUNK_SIZE), "buy count when offset from 1"); }), - exchangeTestHelpers.getActiveBuyOrders(orderCount - 1, CHUNK_SIZE).then(res => { + exchangeTestHelpers.getActiveBuyOrders(orderCount - 1, CHUNK_SIZE).then((res) => { assert.equal(res.length, 1, "returned buy orders count when offset from last"); }), - exchangeTestHelpers.getActiveBuyOrders(orderCount, CHUNK_SIZE).then(res => { + exchangeTestHelpers.getActiveBuyOrders(orderCount, CHUNK_SIZE).then((res) => { assert.equal(res.length, 0, "returned buy orders count when offset > last"); - }) + }), ]; await Promise.all(orderQueries); }); - it("should return CHUNK_SIZE sell orders from offset", async function() { + it("should return CHUNK_SIZE sell orders from offset", async function () { const orderCount = 4; const orders = []; for (let i = 0; i < orderCount; i++) { orders.push( augmintToken.transferAndNotify(exchange.address, i + 1, 1000000 + i, { - from: makers[0] + from: makers[0], }) ); } @@ -305,32 +295,24 @@ contract("Exchange orders tests", accounts => { assert(txs.length, orderCount); const orderQueries = [ - exchangeTestHelpers.getActiveSellOrders(0, CHUNK_SIZE).then(res => { - assert.equal( - res.length, - Math.min(orderCount, CHUNK_SIZE), - "sell orders count when 0 offset" - ); + exchangeTestHelpers.getActiveSellOrders(0, CHUNK_SIZE).then((res) => { + assert.equal(res.length, Math.min(orderCount, CHUNK_SIZE), "sell orders count when 0 offset"); }), - exchangeTestHelpers.getActiveSellOrders(1, CHUNK_SIZE).then(res => { - assert.equal( - res.length, - Math.min(orderCount - 1, CHUNK_SIZE), - "sell count when offset from 1" - ); + exchangeTestHelpers.getActiveSellOrders(1, CHUNK_SIZE).then((res) => { + assert.equal(res.length, Math.min(orderCount - 1, CHUNK_SIZE), "sell count when offset from 1"); }), - exchangeTestHelpers.getActiveSellOrders(orderCount - 1, CHUNK_SIZE).then(res => { + exchangeTestHelpers.getActiveSellOrders(orderCount - 1, CHUNK_SIZE).then((res) => { assert.equal(res.length, 1, "returned sell orders count when offset from last"); }), - exchangeTestHelpers.getActiveSellOrders(orderCount, CHUNK_SIZE).then(res => { + exchangeTestHelpers.getActiveSellOrders(orderCount, CHUNK_SIZE).then((res) => { assert.equal(res.length, 0, "returned sell orders count when offset > last"); - }) + }), ]; await Promise.all(orderQueries); }); - it("should only allow the token contract call transferNotification", async function() { + it("should only allow the token contract call transferNotification", async function () { await testHelpers.expectThrow(exchange.transferNotification(accounts[0], 1000000, 0, { from: accounts[0] })); }); }); diff --git a/test/exchangeRandom.js b/test/exchangeRandom.js index e13f818c..373315fd 100644 --- a/test/exchangeRandom.js +++ b/test/exchangeRandom.js @@ -1,5 +1,5 @@ const RandomSeed = require("random-seed"); -const BigNumber = require("bignumber.js"); +const BN = web3.utils.BN; const Rates = artifacts.require("./Rates.sol"); const testHelpers = new require("./helpers/testHelpers.js"); @@ -10,7 +10,7 @@ const TOKEN_BUY = testHelpers.TOKEN_BUY; const TOKEN_SELL = testHelpers.TOKEN_SELL; const ORDER_COUNT = 10; -const MARKET_EURETH_RATE = 50000; // 1ETH = 500 EUR +const MARKET_EURETH_RATE = new BN(50000); // 1ETH = 500 EUR const MIN_ORDER_RATE = 990000; // 99% - 1% below parity const MAX_ORDER_RATE = 1010000; // 101% - 1 % above parity const MIN_TOKEN = 10000; // 100 ACE @@ -65,29 +65,28 @@ const getOrderToFill = async () => { /* NB: These tests dependend on each other i.e. place orders then match one by one has to run first */ -contract("Exchange random tests", accounts => { - before(async function() { +contract("Exchange random tests", (accounts) => { + before(async function () { exchange = exchangeTestHelper.exchange; augmintToken = tokenTestHelpers.augmintToken; - const rates = Rates.at(Rates.address); + const rates = await Rates.at(Rates.address); console.log(`\x1b[2m\t*** Topping up ${TEST_ACCS_CT} accounts each with ${ACC_INIT_ACE / 100} A-EURO\x1b[0m`); await Promise.all([ - rates.setRate("EUR", MARKET_EURETH_RATE), - accounts.slice(0, TEST_ACCS_CT).map(acc => tokenTestHelpers.issueToken(accounts[0], acc, ACC_INIT_ACE)) + rates.setRate(web3.utils.asciiToHex("EUR"), MARKET_EURETH_RATE), + accounts.slice(0, TEST_ACCS_CT).map((acc) => tokenTestHelpers.issueToken(accounts[0], acc, ACC_INIT_ACE)), ]); }); - it("place x buy / sell orders", async function() { + it("place x buy / sell orders", async function () { const orders = []; for (let i = 0; i < ORDER_COUNT; i++) { - const tokenAmount = Math.round(random.random() * 100 * (MAX_TOKEN - MIN_TOKEN) / 100) + MIN_TOKEN; + const tokenAmount = Math.round((random.random() * 100 * (MAX_TOKEN - MIN_TOKEN)) / 100) + MIN_TOKEN; const price = Math.floor(random.random() * (MAX_ORDER_RATE - MIN_ORDER_RATE)) + MIN_ORDER_RATE; - const weiAmount = new BigNumber(tokenAmount) - .mul(testHelpers.ONE_ETH) - .div(price == 0 ? MARKET_EURETH_RATE : price) - .round(0, BigNumber.ROUND_HALF_UP); + const weiAmount = new BN(tokenAmount) + .mul(testHelpers.BN_ONE_ETH) + .div(price == 0 ? MARKET_EURETH_RATE : new BN(price)); const orderType = random.random() < 0.5 ? TOKEN_BUY : TOKEN_SELL; @@ -98,25 +97,25 @@ contract("Exchange random tests", accounts => { amount: orderType === TOKEN_BUY ? weiAmount : tokenAmount, maker, price, - orderType + orderType, }); } console.log(`\x1b[2m\t*** Placing ${ORDER_COUNT} random orders\t\x1b[0m`); const txs = await Promise.all( - orders.map(order => { + orders.map((order) => { let tx; if (order.orderType === TOKEN_BUY) { tx = exchange.placeBuyTokenOrder(order.price, { value: order.amount, from: order.maker }); } else { tx = augmintToken.transferAndNotify(exchange.address, order.amount, order.price, { - from: order.maker + from: order.maker, }); } return tx; }) ); - txs.map(tx => + txs.map((tx) => testHelpers.logGasUse( this, tx, @@ -129,7 +128,7 @@ contract("Exchange random tests", accounts => { //await exchangeTestHelper.printOrderBook(10); }); - it("should fill x matching orders", async function() { + it("should fill x matching orders", async function () { const snapshotId = await testHelpers.takeSnapshot(); //await exchangeTestHelper.printOrderBook(10); @@ -157,7 +156,7 @@ contract("Exchange random tests", accounts => { await testHelpers.revertSnapshot(snapshotId); }); - it("should match x orders at once (matchMultipleOrders)", async function() { + it("should match x orders at once (matchMultipleOrders)", async function () { const snapshotId = await testHelpers.takeSnapshot(); //await exchangeTestHelper.printOrderBook(10); @@ -168,7 +167,7 @@ contract("Exchange random tests", accounts => { ), { buyTokenIds: [], - sellTokenIds: [] + sellTokenIds: [], } ); @@ -184,7 +183,7 @@ contract("Exchange random tests", accounts => { await testHelpers.revertSnapshot(snapshotId); }); - it("should cancel all orders", async function() { + it("should cancel all orders", async function () { const snapshotId = await testHelpers.takeSnapshot(); //await exchangeTestHelper.printOrderBook(10); //const stateBefore = await exchangeTestHelper.getState(); diff --git a/test/feeAccount.js b/test/feeAccount.js index b09afade..f5dc636b 100644 --- a/test/feeAccount.js +++ b/test/feeAccount.js @@ -1,47 +1,49 @@ const testHelpers = require("./helpers/testHelpers.js"); const tokenTestHelpers = require("./helpers/tokenTestHelpers.js"); +const BN = web3.utils.BN; + let feeAccountInstance; let augmintTokenInstance; -contract("FeeAccount tests", accounts => { +contract("FeeAccount tests", (accounts) => { before(async () => { feeAccountInstance = tokenTestHelpers.feeAccount; augmintTokenInstance = tokenTestHelpers.augmintToken; }); - it("should be possible to set transfer fees ", async function() { - const fee = { pt: 100000, max: 80, min: 90 }; - const tx = await feeAccountInstance.setTransferFees(fee.pt, fee.min, fee.max, { from: accounts[0] }); + it("should be possible to set transfer fees ", async function () { + const newFee = { pt: 100000, max: 80, min: 90 }; + const tx = await feeAccountInstance.setTransferFees(newFee.pt, newFee.min, newFee.max, { from: accounts[0] }); testHelpers.logGasUse(this, tx, "setTransferFees"); - const [feePt, feeMin, feeMax] = await feeAccountInstance.transferFee(); + const actFee = await feeAccountInstance.transferFee(); await testHelpers.assertEvent(feeAccountInstance, "TransferFeesChanged", { - transferFeePt: fee.pt, - transferFeeMin: fee.min, - transferFeeMax: fee.max + transferFeePt: newFee.pt.toString(), + transferFeeMin: newFee.min.toString(), + transferFeeMax: newFee.max.toString(), }); - assert.equal(feePt, fee.pt); - assert.equal(feeMin, fee.min); - assert.equal(feeMax, fee.max); + assert.equal(actFee.pt, newFee.pt); + assert.equal(actFee.min, newFee.min); + assert.equal(actFee.max, newFee.max); }); - it("only allowed should set transfer fees ", async function() { + it("only allowed should set transfer fees ", async function () { await testHelpers.expectThrow(feeAccountInstance.setTransferFees(10000, 10000, 10000, { from: accounts[1] })); }); - it("should be possible to withdraw from fee account", async function() { - const weiAmount = global.web3v1.utils.toWei("0.2"); + it("should be possible to withdraw from fee account", async function () { + const weiAmount = new BN(web3.utils.toWei("0.2")); - const tokenAmount = 10000; + const tokenAmount = new BN(10000); const narrative = "test withdrawal"; // top up feeAccount with ETH - await global.web3v1.eth.sendTransaction({ + await web3.eth.sendTransaction({ from: accounts[0], to: feeAccountInstance.address, - value: weiAmount + value: weiAmount, }); // top up feeAccount with tokens @@ -49,7 +51,7 @@ contract("FeeAccount tests", accounts => { const balBefore = await tokenTestHelpers.getAllBalances({ to: accounts[0], - feeAccount: feeAccountInstance.address + feeAccount: feeAccountInstance.address, }); const tx = await feeAccountInstance.withdraw( @@ -61,32 +63,33 @@ contract("FeeAccount tests", accounts => { ); testHelpers.logGasUse(this, tx, "withdraw"); + console.log(" weiAmount", weiAmount, typeof weiAmount); await Promise.all([ testHelpers.assertEvent(feeAccountInstance, "WithdrawFromSystemAccount", { tokenAddress: augmintTokenInstance.address, to: accounts[0], - tokenAmount, - weiAmount, - narrative + tokenAmount: tokenAmount.toString(), + weiAmount: weiAmount.toString(), + narrative, }), tokenTestHelpers.assertBalances(balBefore, { to: { eth: balBefore.to.eth.add(weiAmount), ace: balBefore.to.ace.add(tokenAmount), - gasFee: testHelpers.GAS_PRICE * 70000 + gasFee: testHelpers.GAS_PRICE * 70000, }, feeAccount: { eth: balBefore.feeAccount.eth.sub(weiAmount), - ace: balBefore.feeAccount.ace.sub(tokenAmount) - } - }) + ace: balBefore.feeAccount.ace.sub(tokenAmount), + }, + }), ]); }); - it("only allowed should withdraw from fee account", async function() { + it("only allowed should withdraw from fee account", async function () { await testHelpers.expectThrow( feeAccountInstance.withdraw(augmintTokenInstance.address, accounts[0], 0, 0, "should fail", { - from: accounts[1] + from: accounts[1], }) ); }); diff --git a/test/helpers/exchangeTestHelpers.js b/test/helpers/exchangeTestHelpers.js index ef103f92..623808de 100644 --- a/test/helpers/exchangeTestHelpers.js +++ b/test/helpers/exchangeTestHelpers.js @@ -1,5 +1,3 @@ -const BigNumber = require("bignumber.js"); - const Exchange = artifacts.require("./Exchange.sol"); const Rates = artifacts.require("./Rates.sol"); const testHelpers = new require("./testHelpers.js"); @@ -9,7 +7,7 @@ const PLACE_ORDER_MAX_GAS = 200000; const CANCEL_SELL_MAX_GAS = 150000; const MATCH_ORDER_MAX_GAS = 110000; -const PPM_DIV = 1000000; +const BN = web3.utils.BN; module.exports = { newOrder, @@ -23,23 +21,22 @@ module.exports = { printOrderBook, get exchange() { return exchange; - } + }, }; let exchange = null; let augmintToken = null; let rates; -before(async function() { +before(async function () { augmintToken = tokenTestHelpers.augmintToken; - exchange = Exchange.at(Exchange.address); - rates = Rates.at(Rates.address); + [exchange, rates] = await Promise.all([Exchange.at(Exchange.address), Rates.at(Rates.address)]); }); async function newOrder(testInstance, order) { const stateBefore = await getState(); const balBefore = await tokenTestHelpers.getAllBalances({ exchange: exchange.address, maker: order.maker }); - order.amount = new BigNumber(order.amount); // to handle numbers, strings and BigNumbers passed + order.amount = new BN(order.amount); // to handle numbers, strings and BNs passed order.viaAugmintToken = typeof order.viaAugmintToken === "undefined" && order.orderType === testHelpers.TOKEN_SELL ? true @@ -48,21 +45,21 @@ async function newOrder(testInstance, order) { if (order.orderType === testHelpers.TOKEN_BUY) { tx = await exchange.placeBuyTokenOrder(order.price, { value: order.amount, - from: order.maker + from: order.maker, }); testHelpers.logGasUse(testInstance, tx, "placeBuyTokenOrder"); - order.tokenAmount = 0; + order.tokenAmount = new BN(0); order.weiAmount = order.amount; } else { if (order.viaAugmintToken) { tx = await augmintToken.transferAndNotify(exchange.address, order.amount, order.price, { - from: order.maker + from: order.maker, }); testHelpers.logGasUse(testInstance, tx, "transferAndNotify - token sell"); } else { const approvedBefore = await augmintToken.allowed(order.maker, exchange.address); tx = await exchange.placeSellTokenOrder(order.price, order.amount, { - from: order.maker + from: order.maker, }); testHelpers.logGasUse(testInstance, tx, "placeSellTokenOrder"); const approvedAfter = await augmintToken.allowed(order.maker, exchange.address); @@ -74,12 +71,11 @@ async function newOrder(testInstance, order) { } order.tokenAmount = order.amount; - order.weiAmount = 0; + order.weiAmount = new BN(0); } const eventResult = await newOrderEventAsserts(order); order.id = parseInt(eventResult.orderId); - const state = await getState(); let actualOrder, expBuyCount, expSellCount; @@ -107,37 +103,37 @@ async function newOrder(testInstance, order) { await tokenTestHelpers.assertBalances(balBefore, { exchange: { eth: balBefore.exchange.eth.add(order.weiAmount), - ace: balBefore.exchange.ace.add(order.tokenAmount) + ace: balBefore.exchange.ace.add(order.tokenAmount), }, maker: { eth: balBefore.maker.eth.sub(order.weiAmount), ace: balBefore.maker.ace.sub(order.tokenAmount), - gasFee: PLACE_ORDER_MAX_GAS * testHelpers.GAS_PRICE - } + gasFee: PLACE_ORDER_MAX_GAS * testHelpers.GAS_PRICE, + }, }); } async function newOrderEventAsserts(order) { const res = await testHelpers.assertEvent(exchange, "NewOrder", { - orderId: x => x, + orderId: (x) => x, maker: order.maker, - price: order.price, + price: order.price.toString(), weiAmount: order.weiAmount.toString(), - tokenAmount: order.tokenAmount.toString() + tokenAmount: order.tokenAmount.toString(), }); if (order.orderType === testHelpers.TOKEN_SELL) { await testHelpers.assertEvent(augmintToken, "Transfer", { from: order.maker, to: exchange.address, - amount: order.tokenAmount.toString() + amount: order.tokenAmount.toString(), }); await testHelpers.assertEvent(augmintToken, "AugmintTransfer", { from: order.maker, to: exchange.address, amount: order.tokenAmount.toString(), - fee: 0, - narrative: "" + fee: "0", + narrative: "", }); } return res; @@ -159,17 +155,17 @@ async function cancelOrder(testInstance, order) { if (sell) { order.tokenAmount = order.amount; - order.weiAmount = 0; + order.weiAmount = new BN(0); } else { - order.tokenAmount = 0; + order.tokenAmount = new BN(0); order.weiAmount = order.amount; } await testHelpers.assertEvent(exchange, "CancelledOrder", { - orderId: order.id, + orderId: order.id.toString(), maker: order.maker, tokenAmount: order.tokenAmount.toString(), - weiAmount: order.weiAmount.toString() + weiAmount: order.weiAmount.toString(), }); let expSellCount, expBuyCount; @@ -178,8 +174,8 @@ async function cancelOrder(testInstance, order) { amount: order.amount.toString(), from: exchange.address, to: order.maker, - fee: 0, - narrative: "Sell token order cancelled" + fee: "0", + narrative: "Sell token order cancelled", }); expSellCount = stateBefore.sellCount - 1; expBuyCount = stateBefore.buyCount; @@ -194,13 +190,13 @@ async function cancelOrder(testInstance, order) { await tokenTestHelpers.assertBalances(balBefore, { exchange: { eth: balBefore.exchange.eth.sub(order.weiAmount), - ace: balBefore.exchange.ace.sub(order.tokenAmount) + ace: balBefore.exchange.ace.sub(order.tokenAmount), }, maker: { eth: balBefore.maker.eth.add(order.weiAmount), ace: balBefore.maker.ace.add(order.tokenAmount), - gasFee: CANCEL_SELL_MAX_GAS * testHelpers.GAS_PRICE - } + gasFee: CANCEL_SELL_MAX_GAS * testHelpers.GAS_PRICE, + }, }); return; @@ -212,25 +208,26 @@ async function matchOrders(testInstance, buyTokenOrder, sellTokenOrder) { const balancesBefore = await tokenTestHelpers.getAllBalances({ exchange: exchange.address, seller: sellTokenOrder.maker, - buyer: buyTokenOrder.maker + buyer: buyTokenOrder.maker, }); const matchCaller = global.accounts[0]; - const currentRate = parseInt((await rates.rates("EUR"))[0]); + const currentRate = new BN((await rates.rates(web3.utils.asciiToHex("EUR")))[0]); - const expPrice = buyTokenOrder.id > sellTokenOrder.id ? sellTokenOrder.price : buyTokenOrder.price; + const expPrice = new BN(buyTokenOrder.id > sellTokenOrder.id ? sellTokenOrder.price : buyTokenOrder.price); const sellWeiValue = sellTokenOrder.amount - .mul(testHelpers.ONE_ETH) + .mul(new BN(testHelpers.BN_ONE_ETH)) .mul(expPrice) .div(currentRate) - .div(PPM_DIV) - .round(0, BigNumber.ROUND_HALF_UP); - const buyTokenValue = - Math.round(buyTokenOrder.amount * currentRate * PPM_DIV / expPrice / testHelpers.ONE_ETH); + .divRound(testHelpers.PPM_DIV); + + const buyTokenValue = Math.round( + (buyTokenOrder.amount * currentRate * testHelpers.PPM_DIV) / expPrice / testHelpers.ONE_ETH + ); - const tradedWeiAmount = BigNumber.min(buyTokenOrder.amount, sellWeiValue); - const tradedTokenAmount = BigNumber.min(sellTokenOrder.amount, buyTokenValue); + const tradedWeiAmount = BN.min(new BN(buyTokenOrder.amount), sellWeiValue); + const tradedTokenAmount = BN.min(new BN(sellTokenOrder.amount), new BN(buyTokenValue)); const buyFilled = buyTokenOrder.amount.eq(tradedWeiAmount); const sellFilled = sellTokenOrder.amount.eq(tradedTokenAmount); @@ -241,38 +238,38 @@ async function matchOrders(testInstance, buyTokenOrder, sellTokenOrder) { tokenBuyer: buyTokenOrder.maker, price: expPrice, weiAmount: tradedWeiAmount, - tokenAmount: tradedTokenAmount, + tokenAmount: new BN(tradedTokenAmount), buyFilled: buyFilled, sellFilled: sellFilled, sellCount: sellFilled ? stateBefore.sellCount - 1 : stateBefore.sellCount, - buyCount: buyFilled ? stateBefore.buyCount - 1 : stateBefore.buyCount + buyCount: buyFilled ? stateBefore.buyCount - 1 : stateBefore.buyCount, }; const tx = await exchange.matchOrders(buyTokenOrder.id, sellTokenOrder.id); testHelpers.logGasUse(testInstance, tx, "matchOrders"); await testHelpers.assertEvent(exchange, "OrderFill", { - sellTokenOrderId: expMatch.sellTokenOrderId, - buyTokenOrderId: expMatch.buyTokenOrderId, + sellTokenOrderId: expMatch.sellTokenOrderId.toString(), + buyTokenOrderId: expMatch.buyTokenOrderId.toString(), tokenSeller: expMatch.tokenSeller, tokenBuyer: expMatch.tokenBuyer, - publishedRate: currentRate, - price: expMatch.price, + publishedRate: currentRate.toString(), + price: expMatch.price.toString(), weiAmount: expMatch.weiAmount.toString(), - tokenAmount: expMatch.tokenAmount.toString() + tokenAmount: expMatch.tokenAmount.toString(), }); await testHelpers.assertEvent(augmintToken, "Transfer", { from: exchange.address, to: expMatch.tokenBuyer, - amount: expMatch.tokenAmount.toString() + amount: expMatch.tokenAmount.toString(), }); await testHelpers.assertEvent(augmintToken, "AugmintTransfer", { from: exchange.address, to: expMatch.tokenBuyer, amount: expMatch.tokenAmount.toString(), - fee: 0, - narrative: "Buy token order fill" + fee: "0", + narrative: "Buy token order fill", }); const stateAfter = await getState(); @@ -282,29 +279,30 @@ async function matchOrders(testInstance, buyTokenOrder, sellTokenOrder) { await tokenTestHelpers.assertBalances(balancesBefore, { exchange: { eth: balancesBefore.exchange.eth.sub(expMatch.weiAmount), - ace: balancesBefore.exchange.ace.sub(expMatch.tokenAmount) - } + ace: balancesBefore.exchange.ace.sub(expMatch.tokenAmount), + }, }); + if (balancesBefore.seller.address === balancesBefore.buyer.address) { await tokenTestHelpers.assertBalances(balancesBefore, { seller: { eth: balancesBefore.seller.eth.add(expMatch.weiAmount), ace: balancesBefore.seller.ace.add(expMatch.tokenAmount), - gasFee: matchCaller === sellTokenOrder.maker ? MATCH_ORDER_MAX_GAS * testHelpers.GAS_PRICE : 0 - } + gasFee: matchCaller === sellTokenOrder.maker ? MATCH_ORDER_MAX_GAS * testHelpers.GAS_PRICE : 0, + }, }); } else { await tokenTestHelpers.assertBalances(balancesBefore, { seller: { eth: balancesBefore.seller.eth.add(expMatch.weiAmount), ace: balancesBefore.seller.ace, - gasFee: matchCaller === sellTokenOrder.maker ? MATCH_ORDER_MAX_GAS * testHelpers.GAS_PRICE : 0 + gasFee: matchCaller === sellTokenOrder.maker ? MATCH_ORDER_MAX_GAS * testHelpers.GAS_PRICE : 0, }, buyer: { eth: balancesBefore.buyer.eth, ace: balancesBefore.buyer.ace.add(expMatch.tokenAmount), - gasFee: matchCaller === buyTokenOrder.maker ? MATCH_ORDER_MAX_GAS * testHelpers.GAS_PRICE : 0 - } + gasFee: matchCaller === buyTokenOrder.maker ? MATCH_ORDER_MAX_GAS * testHelpers.GAS_PRICE : 0, + }, }); } @@ -321,7 +319,7 @@ async function getState() { async function getBuyTokenOrder(id) { const order = parseOrder(await exchange.buyTokenOrders(id)); - order.id = id; // ID is not filled if we got the order directly from buyTokenOrders + order.id = id; // ID is not filled if we got the order directly from buyTokenOrders order.weiAmount = order.amount; order.tokenAmount = 0; order.orderType = testHelpers.TOKEN_BUY; @@ -330,7 +328,7 @@ async function getBuyTokenOrder(id) { async function getSellTokenOrder(id) { const order = parseOrder(await exchange.sellTokenOrders(id)); - order.id = id; // ID is not filled if we got the order directly from sellTokenOrders + order.id = id; // ID is not filled if we got the order directly from sellTokenOrders order.weiAmount = 0; order.tokenAmount = order.amount; order.orderType = testHelpers.TOKEN_SELL; @@ -345,20 +343,20 @@ function parseOrder(order) { return { maker: order[1], price: order[2].toNumber(), - amount: order[3] + amount: order[3], }; } // Parse an order coming from getActiveBuyOrders/getActiveSellOrders // has id, maker is in number format, no index at all (order[0] already contains the id) function parseOrders(orderType, orders) { - return orders.map(function(order) { + return orders.map(function (order) { return { orderType: orderType, id: order[0].toNumber(), - maker: "0x" + order[1].toString(16).padStart(40, "0"), // leading 0s if address starts with 0 + maker: web3.utils.toChecksumAddress("0x" + order[1].toString(16).padStart(40, "0")), // leading 0s if address starts with 0 price: order[2].toNumber(), - amount: order[3] + amount: order[3], }; }); } @@ -394,8 +392,9 @@ async function printOrderBook(_limit) { }); buyOrders.slice(0, _limit).map((order, i) => { console.log( - ` ${i}. BUY token: price: ${order.price / 10000}% amount: ${order.amount / - testHelpers.ONE_ETH} ETH` + ` orderId: ${order.id} acc: ${order.maker}` + ` ${i}. BUY token: price: ${order.price / 10000}% amount: ${ + order.amount / testHelpers.ONE_ETH + } ETH` + ` orderId: ${order.id} acc: ${order.maker}` ); }); diff --git a/test/helpers/loanTestHelpers.js b/test/helpers/loanTestHelpers.js index 36ac85d3..07fb32d0 100644 --- a/test/helpers/loanTestHelpers.js +++ b/test/helpers/loanTestHelpers.js @@ -1,4 +1,3 @@ -const BigNumber = require("bignumber.js"); const moment = require("moment"); const LoanManager = artifacts.require("./LoanManager.sol"); @@ -7,8 +6,10 @@ const Rates = artifacts.require("./Rates.sol"); const tokenTestHelpers = require("./tokenTestHelpers.js"); const testHelpers = require("./testHelpers.js"); +const BN = web3.utils.BN; + const NEWLOAN_MAX_GAS = 220000; -const REPAY_MAX_GAS = 140000; +const REPAY_MAX_GAS = 150000; const COLLECT_BASE_GAS = 110000; let augmintToken = null; @@ -29,19 +30,20 @@ module.exports = { loanAsserts, get loanManager() { return loanManager; - } + }, }; -before(async function() { - loanManager = LoanManager.at(LoanManager.address); - augmintToken = tokenTestHelpers.augmintToken; - monetarySupervisor = tokenTestHelpers.monetarySupervisor; +before(async function () { + [loanManager, augmintToken, monetarySupervisor, rates] = await Promise.all([ + LoanManager.at(LoanManager.address), + tokenTestHelpers.augmintToken, + tokenTestHelpers.monetarySupervisor, + Rates.at(Rates.address), + ]); reserveAcc = tokenTestHelpers.augmintReserves.address; interestEarnedAcc = tokenTestHelpers.interestEarnedAccount.address; peggedSymbol = tokenTestHelpers.peggedSymbol; - - rates = Rates.at(Rates.address); }); async function createLoan(testInstance, product, borrower, collateralWei, minRate = 0) { @@ -56,35 +58,35 @@ async function createLoan(testInstance, product, borrower, collateralWei, minRat reserve: reserveAcc, borrower: loan.borrower, loanManager: loanManager.address, - interestEarned: interestEarnedAcc - }) + interestEarned: interestEarnedAcc, + }), ]); const tx = await loanManager.newEthBackedLoan(loan.product.id, minRate, { from: loan.borrower, - value: loan.collateralAmount + value: loan.collateralAmount, }); testHelpers.logGasUse(testInstance, tx, "newEthBackedLoan"); - const [newLoanEvenResult, ,] = await Promise.all([ + const [newLoanEventResult, ,] = await Promise.all([ testHelpers.assertEvent(loanManager, "NewLoan", { - loanId: x => x, - productId: loan.product.id.toNumber(), + loanId: (x) => x, + productId: loan.product.id.toString(), borrower: loan.borrower, collateralAmount: loan.collateralAmount.toString(), loanAmount: loan.loanAmount.toString(), repaymentAmount: loan.repaymentAmount.toString(), - maturity: x => x, - currentRate: x => x + maturity: (x) => x, + currentRate: (x) => x, }), testHelpers.assertEvent(augmintToken, "AugmintTransfer", { from: testHelpers.NULL_ACC, to: loan.borrower, amount: loan.loanAmount.toString(), - fee: 0, - narrative: "" - }) + fee: "0", + narrative: "", + }), // TODO: it's emmited but why not picked up by assertEvent? // testHelpers.assertEvent(augmintToken, "Transfer", { @@ -94,9 +96,9 @@ async function createLoan(testInstance, product, borrower, collateralWei, minRat // }) ]); - loan.id = newLoanEvenResult.loanId.toNumber(); - loan.maturity = newLoanEvenResult.maturity.toNumber(); - loan.currentRate = newLoanEvenResult.currentRate.toNumber(); + loan.id = parseInt(newLoanEventResult.loanId); + loan.maturity = parseInt(newLoanEventResult.maturity); + loan.currentRate = parseInt(newLoanEventResult.currentRate); const [totalSupplyAfter, totalLoanAmountAfter, ,] = await Promise.all([ augmintToken.totalSupply(), @@ -108,14 +110,14 @@ async function createLoan(testInstance, product, borrower, collateralWei, minRat reserve: {}, borrower: { ace: balBefore.borrower.ace.add(loan.loanAmount), - eth: balBefore.borrower.eth.minus(loan.collateralAmount), - gasFee: NEWLOAN_MAX_GAS * testHelpers.GAS_PRICE + eth: balBefore.borrower.eth.sub(loan.collateralAmount), + gasFee: NEWLOAN_MAX_GAS * testHelpers.GAS_PRICE, }, loanManager: { - eth: balBefore.loanManager.eth.plus(loan.collateralAmount) + eth: balBefore.loanManager.eth.add(loan.collateralAmount), }, - interestEarned: {} - }) + interestEarned: {}, + }), ]); assert.equal( @@ -139,13 +141,13 @@ async function repayLoan(testInstance, loan) { reserve: reserveAcc, borrower: loan.borrower, loanManager: loanManager.address, - interestEarned: interestEarnedAcc - }) + interestEarned: interestEarnedAcc, + }), ]); loan.state = 1; // repaid const tx = await augmintToken.transferAndNotify(loanManager.address, loan.repaymentAmount, loan.id, { - from: loan.borrower + from: loan.borrower, }); testHelpers.logGasUse(testInstance, tx, "transferAndNotify - repayLoan"); @@ -154,9 +156,9 @@ async function repayLoan(testInstance, loan) { monetarySupervisor.totalLoanAmount(), testHelpers.assertEvent(loanManager, "LoanRepaid", { - loanId: loan.id, + loanId: loan.id.toString(), borrower: loan.borrower, - currentRate: x => x + currentRate: (x) => x, }), /* TODO: these are emmited but why not picked up by assertEvent? */ @@ -180,23 +182,20 @@ async function repayLoan(testInstance, loan) { borrower: { ace: balBefore.borrower.ace.sub(loan.repaymentAmount), eth: balBefore.borrower.eth.add(loan.collateralAmount), - gasFee: REPAY_MAX_GAS * testHelpers.GAS_PRICE + gasFee: REPAY_MAX_GAS * testHelpers.GAS_PRICE, }, loanManager: { - eth: balBefore.loanManager.eth.minus(loan.collateralAmount) + eth: balBefore.loanManager.eth.sub(loan.collateralAmount), }, interestEarned: { - ace: balBefore.interestEarned.ace.add(loan.interestAmount) - } - }) + ace: balBefore.interestEarned.ace.add(loan.interestAmount), + }, + }), ]); assert.equal( totalSupplyAfter.toString(), - totalSupplyBefore - .sub(loan.repaymentAmount) - .add(loan.interestAmount) - .toString(), + totalSupplyBefore.sub(loan.repaymentAmount).add(loan.interestAmount).toString(), "total supply should be reduced by the repayment amount less interestAmount" ); assert.equal( @@ -210,18 +209,17 @@ async function collectLoan(testInstance, loan, collector) { loan.collector = collector; loan.state = 3; // Collected - const targetCollectionInToken = loan.repaymentAmount.mul(loan.product.defaultingFeePt.add(1000000)).div(1000000); - const targetFeeInToken = loan.repaymentAmount.mul(loan.product.defaultingFeePt).div(1000000); - //.round(0, BigNumber.ROUND_DOWN); + const targetCollectionInToken = loan.repaymentAmount + .mul(loan.product.defaultingFeePt.add(testHelpers.PPM_DIV)) + .div(testHelpers.PPM_DIV); + const targetFeeInToken = loan.repaymentAmount.mul(loan.product.defaultingFeePt).div(testHelpers.PPM_DIV); const [ totalSupplyBefore, totalLoanAmountBefore, balBefore, - collateralInToken, - repaymentAmountInWei, targetCollectionInWei, - targetFeeInWei + targetFeeInWei, ] = await Promise.all([ augmintToken.totalSupply(), monetarySupervisor.totalLoanAmount(), @@ -232,32 +230,16 @@ async function collectLoan(testInstance, loan, collector) { borrower: loan.borrower, loanManager: loanManager.address, interestEarned: interestEarnedAcc, - feeAccount: tokenTestHelpers.feeAccount + feeAccount: tokenTestHelpers.feeAccount, }), - rates.convertFromWei(peggedSymbol, loan.collateralAmount), - rates.convertToWei(peggedSymbol, loan.repaymentAmount), + rates.convertToWei(peggedSymbol, targetCollectionInToken), - rates.convertToWei(peggedSymbol, targetFeeInToken) + rates.convertToWei(peggedSymbol, targetFeeInToken), ]); - const releasedCollateral = BigNumber.max(loan.collateralAmount.sub(targetCollectionInWei), 0); + const releasedCollateral = BN.max(loan.collateralAmount.sub(targetCollectionInWei), new BN(0)); const collectedCollateral = loan.collateralAmount.sub(releasedCollateral); - const defaultingFee = BigNumber.min(targetFeeInWei, collectedCollateral); - - // const rate = await rates.rates("EUR"); - // console.log( - // ` *** Collection params: - // A-EUR/EUR: ${rate[0] / 100} - // defaulting fee pt: ${loan.product.defaultingFeePt / 10000} % - // repaymentAmount: ${loan.repaymentAmount / 10000} A-EUR = ${repaymentAmountInWei / testHelpers.ONE_ETH} ETH - // collateral: ${loan.collateralAmount / testHelpers.ONE_ETH} ETH = ${collateralInToken / 100} A-EUR - // -------------------- - // targetFee: ${targetFeeInToken / 100} A-EUR = ${targetFeeInWei / testHelpers.ONE_ETH} ETH - // target collection : ${targetCollectionInToken / 100} A-EUR = ${targetCollectionInWei / testHelpers.ONE_ETH} ETH - // collected: ${collectedCollateral / testHelpers.ONE_ETH} ETH - // released: ${releasedCollateral / testHelpers.ONE_ETH} ETH - // defaultingFee: ${defaultingFee / testHelpers.ONE_ETH} ETH` - // ); + const defaultingFee = BN.min(targetFeeInWei, collectedCollateral); const tx = await loanManager.collect([loan.id], { from: loan.collector }); @@ -268,39 +250,39 @@ async function collectLoan(testInstance, loan, collector) { monetarySupervisor.totalLoanAmount(), testHelpers.assertEvent(loanManager, "LoanCollected", { - loanId: loan.id, + loanId: loan.id.toString(), borrower: loan.borrower, collectedCollateral: collectedCollateral.toString(), releasedCollateral: releasedCollateral.toString(), defaultingFee: defaultingFee.toString(), - currentRate: x => x + currentRate: (x) => x, }), loanAsserts(loan), tokenTestHelpers.assertBalances(balBefore, { reserve: { - eth: balBefore.reserve.eth.add(collectedCollateral).sub(defaultingFee) + eth: balBefore.reserve.eth.add(collectedCollateral).sub(defaultingFee), }, feeAccount: { - eth: balBefore.feeAccount.eth.add(defaultingFee) + eth: balBefore.feeAccount.eth.add(defaultingFee), }, collector: { - gasFee: COLLECT_BASE_GAS * testHelpers.GAS_PRICE + gasFee: COLLECT_BASE_GAS * testHelpers.GAS_PRICE, }, borrower: { - eth: balBefore.borrower.eth.add(releasedCollateral) + eth: balBefore.borrower.eth.add(releasedCollateral), }, loanManager: { - eth: balBefore.loanManager.eth.minus(loan.collateralAmount) + eth: balBefore.loanManager.eth.sub(loan.collateralAmount), }, - interestEarned: {} - }) + interestEarned: {}, + }), ]); assert.equal(totalSupplyAfter.toString(), totalSupplyBefore.toString(), "totalSupply should be the same"); @@ -315,7 +297,7 @@ async function getProductsInfo(offset, chunkSize) { const products = await loanManager.getProducts(offset, chunkSize); assert(products.length <= chunkSize); const result = []; - products.map(prod => { + products.map((prod) => { const [ id, minDisbursedAmount, @@ -325,7 +307,7 @@ async function getProductsInfo(offset, chunkSize) { defaultingFeePt, maxLoanAmount, isActive, - minCollateralRatio + minCollateralRatio, ] = prod; assert(term.gt(0)); result.push({ @@ -337,7 +319,7 @@ async function getProductsInfo(offset, chunkSize) { defaultingFeePt, maxLoanAmount, isActive, - minCollateralRatio + minCollateralRatio, }); }); return result; @@ -346,7 +328,7 @@ async function getProductsInfo(offset, chunkSize) { /* parse array returned by getLoans & getLoansForAddress */ function parseLoansInfo(loans) { const result = []; - loans.map(loan => { + loans.map((loan) => { const [ id, collateralAmount, @@ -359,7 +341,7 @@ function parseLoansInfo(loans) { loanAmount, interestAmount, marginCallRate, - isCollectable + isCollectable, ] = loan; assert(maturity.gt(0)); @@ -375,7 +357,7 @@ function parseLoansInfo(loans) { loanAmount, interestAmount, marginCallRate, - isCollectable + isCollectable, }); }); return result; @@ -383,28 +365,23 @@ function parseLoansInfo(loans) { async function calcLoanValues(rates, product, collateralWei) { const ret = {}; - const ppmDiv = 1000000; - ret.collateralAmount = new BigNumber(collateralWei); + ret.collateralAmount = new BN(collateralWei); ret.tokenValue = await rates.convertFromWei(peggedSymbol, collateralWei); - ret.repaymentAmount = ret.tokenValue - .mul(ppmDiv) - .div(product.initialCollateralRatio) - .round(0, BigNumber.ROUND_DOWN); + // in contract: uint repaymentAmount = collateralValueInToken.mul(PPM_FACTOR).div(product.initialCollateralRatio); + ret.repaymentAmount = ret.tokenValue.mul(testHelpers.PPM_DIV).div(product.initialCollateralRatio); - ret.loanAmount = ret.repaymentAmount - .mul(product.discountRate) - .div(ppmDiv) - .round(0, BigNumber.ROUND_UP); + // in contract: loanAmount = repaymentAmount.mul(product.discountRate).ceilDiv(PPM_FACTOR); + ret.loanAmount = ret.repaymentAmount.mul(product.discountRate).div(testHelpers.PPM_DIV); + if (ret.repaymentAmount.mul(product.discountRate).mod(testHelpers.PPM_DIV).gt(new BN(0))) { + // no ceilDiv in BN + ret.loanAmount.iadd(new BN(1)); + } - ret.interestAmount = ret.repaymentAmount.gt(ret.loanAmount) - ? ret.repaymentAmount.minus(ret.loanAmount) - : new BigNumber(0); + ret.interestAmount = ret.repaymentAmount.gt(ret.loanAmount) ? ret.repaymentAmount.sub(ret.loanAmount) : new BN(0); - ret.disbursementTime = moment() - .utc() - .unix(); + ret.disbursementTime = moment().utc().unix(); ret.product = product; return ret; @@ -420,7 +397,7 @@ async function loanAsserts(expLoan) { assert.equal(loan[5].toNumber(), expLoan.maturity, "maturity should be the same as in NewLoan event"); const maturityActual = loan[5]; - const maturityExpected = expLoan.product.term.add(expLoan.disbursementTime).toNumber(); + const maturityExpected = expLoan.product.term.toNumber() + expLoan.disbursementTime; assert(maturityActual >= maturityExpected, "maturity should be at least term + the time at disbursement"); assert( diff --git a/test/helpers/ratesTestHelpers.js b/test/helpers/ratesTestHelpers.js index 801ed626..c11e31a3 100644 --- a/test/helpers/ratesTestHelpers.js +++ b/test/helpers/ratesTestHelpers.js @@ -5,33 +5,37 @@ module.exports = { newRatesAsserts, get rates() { return rates; - } + }, }; let rates = null; -before(function() { - rates = Rates.at(Rates.address); +before(async function () { + rates = await Rates.at(Rates.address); }); async function newRatesAsserts(tx, symbols, newRates) { - const currentTime = moment() - .utc() - .unix(); - assert.equal(tx.logs.length, symbols.length, "setMultipleRates / setRate should be emmit RateChanged event(s)"); + const currentTime = moment().utc().unix(); + + assert.equal(tx.logs.length, symbols.length, "setMultipleRates / setRate should emmit RateChanged event(s)"); + for (let i = 0; i < symbols.length; i++) { assert.equal(tx.logs[i].event, "RateChanged", "RateChanged event should be emited for " + i + ". symbol"); + assert.equal( - global.web3v1.utils.toAscii(tx.logs[i].args.symbol).slice(0, symbols[i].length), - symbols[i], + web3.utils.hexToUtf8(tx.logs[i].args.symbol), // hexToUtf8 removes trailing zeros from bytes32 ascii + web3.utils.hexToUtf8(symbols[i]), "symbol " + i + ". should be set in RateChanged event" ); + assert.equal( tx.logs[i].args.newRate.toString(), newRates[i].toString(), "newRate " + i + ". should be set in RateChanged event" ); + const rateInfo = await rates.rates(symbols[i]); + assert.equal( rateInfo[0].toString(), newRates[i].toString(), diff --git a/test/helpers/testHelpers.js b/test/helpers/testHelpers.js index 7c910a3d..96a82dc7 100644 --- a/test/helpers/testHelpers.js +++ b/test/helpers/testHelpers.js @@ -3,19 +3,11 @@ var gasUseLog = []; let gasPrice = null; let networkId; -// Use web3v1 in tests. Nb: truffle uses web3 v0.x while web3 v1 is required for tx signatures -const Web3v1 = require("web3v1"); - -//global.web3v0 = new Web3v0(new Web3v0.providers.HttpProvider("http://localhost:8545")); -global.web3v1 = new Web3v1(new Web3v1.providers.HttpProvider("http://localhost:8545")); global.accounts = []; -//dirty hack for web3@1.0.0 support for localhost testrpc, see https://github.com/trufflesuite/truffle-contract/issues/56#issuecomment-331084530 -if (typeof global.web3v1.currentProvider.sendAsync !== "function") { - global.web3v1.currentProvider.sendAsync = function() { - return global.web3v1.currentProvider.send.apply(global.web3v1.currentProvider, arguments); - }; -} +const BN = web3.utils.BN; +const BN_ONE_ETH = new BN("1000000000000000000"); +const PPM_DIV = new BN("1000000"); module.exports = { stringify, @@ -34,6 +26,12 @@ module.exports = { get ONE_ETH() { return 1000000000000000000; }, + get BN_ONE_ETH() { + return BN_ONE_ETH; + }, + get PPM_DIV() { + return PPM_DIV; + }, get NULL_ACC() { return "0x0000000000000000000000000000000000000000"; }, @@ -50,7 +48,7 @@ module.exports = { ); } return gasPrice; - } + }, }; const _stringify = stringifier({ maxDepth: 3, indent: " " }); @@ -58,11 +56,11 @@ const _stringify = stringifier({ maxDepth: 3, indent: " " }); const gasUseLogDisabled = process.env.TEST_DISABLE_LOG_GAS_USE && process.env.TEST_DISABLE_LOG_GAS_USE.trim().toLowerCase() === "true"; -before(async function() { +before(async function () { [global.accounts, gasPrice, networkId] = await Promise.all([ - global.web3v1.eth.getAccounts().then(res => res.map(acc => acc.toLowerCase())), - global.web3v1.eth.getGasPrice(), - global.web3v1.eth.net.getId() + web3.eth.getAccounts(), + web3.eth.getGasPrice(), + web3.eth.net.getId(), ]); }); @@ -72,11 +70,10 @@ function stringify(values) { function getEvents(contractInstance, eventName) { return new Promise((resolve, reject) => { - contractInstance[eventName]().get((err, res) => { + contractInstance.getPastEvents(eventName, (err, res) => { if (err) { return reject(err); } - resolve(res); }); }); @@ -97,9 +94,7 @@ async function assertEvent(contractInstance, eventName, _expectedArgs) { assert( events.length === expectedArgsArray.length, - `Expected ${expectedArgsArray.length} ${eventName} events from ${contractInstance.address} but received ${ - events.length - }` + `Expected ${expectedArgsArray.length} ${eventName} events from ${contractInstance.address} but received ${events.length}` ); // how to get contract name? const ret = {}; // we return values from event (useful when custom validator passed for an id) @@ -110,50 +105,48 @@ async function assertEvent(contractInstance, eventName, _expectedArgs) { assert(event.event === eventName, `Expected ${eventName} event but got ${event.event}`); - const eventArgs = event.args; + const eventArgs = event.returnValues; const expectedArgNames = Object.keys(expectedArgs); const receivedArgNames = Object.keys(eventArgs); assert( - expectedArgNames.length === receivedArgNames.length, - `Expected ${eventName} event to have ${expectedArgNames.length} arguments, but it had ${ - receivedArgNames.length - }` + expectedArgNames.length === receivedArgNames.length / 2, + `Expected ${eventName} event to have ${expectedArgNames.length} arguments, but it had ${receivedArgNames.length}` ); - expectedArgNames.forEach(argName => { + expectedArgNames.forEach((argName) => { assert( - typeof event.args[argName] !== "undefined", + typeof eventArgs[argName] !== "undefined", `${argName} expected in ${eventName} event but it's not found` ); const expectedValue = expectedArgs[argName]; let value; switch (typeof expectedValue) { - case "function": - value = expectedValue(event.args[argName]); - break; - case "number": - value = - typeof event.args[argName].toNumber === "function" - ? event.args[argName].toNumber() - : event.args[argName]; - break; - case "string": - value = - typeof event.args[argName].toString === "function" - ? event.args[argName].toString() - : event.args[argName]; - break; - default: - value = event.args[argName]; + case "function": + value = expectedValue(eventArgs[argName]); + break; + case "number": + value = + typeof eventArgs[argName].toNumber === "function" + ? eventArgs[argName].toNumber() + : eventArgs[argName]; + break; + case "string": + value = + typeof eventArgs[argName].toString === "function" + ? eventArgs[argName].toString() + : eventArgs[argName]; + break; + default: + value = eventArgs[argName]; } if (typeof expectedValue !== "function") { assert( value === expectedValue, - `Event ${eventName} has ${argName} arg with a value of ${value} but expected ${expectedValue}` + `Event ${eventName} has ${argName} arg with a value of ${value} (${typeof value}) but expected ${expectedValue} (${typeof expectedValue})` ); } ret[argName] = value; @@ -169,15 +162,15 @@ async function assertNoEvents(contractInstance, eventName) { //let snapshotCount = 0; function takeSnapshot() { - return new Promise(function(resolve, reject) { - global.web3v1.currentProvider.sendAsync( + return new Promise(function (resolve, reject) { + web3.currentProvider.send( { method: "evm_snapshot", params: [], jsonrpc: "2.0", - id: new Date().getTime() + id: new Date().getTime(), }, - function(error, res) { + function (error, res) { if (error) { reject(new Error("Can't take snapshot with web3\n" + error)); } else { @@ -189,15 +182,15 @@ function takeSnapshot() { } function revertSnapshot(snapshotId) { - return new Promise(function(resolve, reject) { - global.web3v1.currentProvider.sendAsync( + return new Promise(function (resolve, reject) { + web3.currentProvider.send( { method: "evm_revert", params: [snapshotId], jsonrpc: "2.0", - id: new Date().getTime() + id: new Date().getTime(), }, - function(error, res) { + function (error, res) { if (error) { // TODO: this error is not bubbling up to truffle test run :/ reject(new Error("Can't revert snapshot with web3. snapshotId: " + snapshotId + "\n" + error)); @@ -215,7 +208,7 @@ function logGasUse(testObj, tx, txName) { testObj.test.parent.title, testObj.test.fullTitle(), txName || "", - tx.receipt ? tx.receipt.gasUsed : tx.gasUsed /* web3v0 w/ receipt, v1 w/o */ + tx.receipt ? tx.receipt.gasUsed : tx.gasUsed /* web3v0 w/ receipt, v1 w/o */, ]); } } @@ -225,7 +218,7 @@ function waitFor(durationInMs = 1000) { setTimeout(() => { // make a transaction to force the local dev node to create a new block with // new timestamp: - global.web3v1.eth.sendTransaction({ from: global.accounts[0] }, err => { + web3.eth.sendTransaction({ from: global.accounts[0] }, (err) => { if (err) { return reject(err); } @@ -242,14 +235,14 @@ async function waitForTimeStamp(UnixTimestamp) { function expectThrow(promise) { const onPrivateChain = networkId === 1976 ? true : false; // set by .runprivatechain.sh (geth ... --networkid 1976 ..) return promise - .then(res => { + .then((res) => { if (!onPrivateChain) { //console.log("Received solidity tx instead of throw: \r\n", JSON.stringify(res, null, 4)); throw new Error("Received solidity transaction when expected tx to revert"); } // on privatechain we check gasUsed after tx sent return; }) - .catch(error => { + .catch((error) => { // TODO: Check jump destination to destinguish between a throw // and an actual invalid jump. const invalidJump = error.message.search("invalid JUMP") >= 0; @@ -280,7 +273,7 @@ function expectThrow(promise) { }); } -after(function() { +after(function () { // runs after all tests if (gasUseLogDisabled) { console.log("TEST_DISABLE_LOG_GAS_USE env variable is set to true. Gas use log not recorded."); diff --git a/test/helpers/tokenTestHelpers.js b/test/helpers/tokenTestHelpers.js index aa27d723..fb4cf481 100644 --- a/test/helpers/tokenTestHelpers.js +++ b/test/helpers/tokenTestHelpers.js @@ -1,4 +1,3 @@ -const BigNumber = require("bignumber.js"); const testHelpers = new require("./testHelpers.js"); const AugmintToken = artifacts.require("./TokenAEur.sol"); @@ -9,6 +8,8 @@ const FeeAccount = artifacts.require("./FeeAccount.sol"); const TRANSFER_MAX_GAS = 100000; +const BN = web3.utils.BN; + module.exports = { issueToken, transferTest, @@ -39,7 +40,7 @@ module.exports = { }, get feeAccount() { return feeAccount; - } + }, }; let augmintToken = null; @@ -50,22 +51,24 @@ let peggedSymbol = null; let interestEarnedAccount = null; let feeAccount = null; -before(async function() { - augmintToken = AugmintToken.at(AugmintToken.address); - augmintTokenWeb3Contract = new global.web3v1.eth.Contract(AugmintToken.abi, AugmintToken.address); +before(async function () { + [augmintToken, augmintReserves, monetarySupervisor, interestEarnedAccount, feeAccount] = await Promise.all([ + AugmintToken.deployed(), + AugmintReserves.deployed(), + MonetarySupervisor.deployed(), + InterestEarnedAccount.deployed(), + FeeAccount.deployed(), + ]); - augmintReserves = AugmintReserves.at(AugmintReserves.address); - monetarySupervisor = MonetarySupervisor.at(MonetarySupervisor.address); - interestEarnedAccount = InterestEarnedAccount.at(InterestEarnedAccount.address); - feeAccount = FeeAccount.at(FeeAccount.address); + augmintTokenWeb3Contract = new web3.eth.Contract(AugmintToken.abi, AugmintToken.address); - peggedSymbol = global.web3v1.utils.toAscii(await augmintToken.peggedSymbol()); + peggedSymbol = await augmintToken.peggedSymbol(); }); async function issueToken(sender, to, amount) { - await augmintToken.grantPermission(sender, "MonetarySupervisor"); + await augmintToken.grantPermission(sender, web3.utils.asciiToHex("MonetarySupervisor")); await augmintToken.issueTo(to, amount); - await augmintToken.revokePermission(sender, "MonetarySupervisor"); + await augmintToken.revokePermission(sender, web3.utils.asciiToHex("MonetarySupervisor")); } async function transferTest(testInstance, expTransfer) { @@ -76,19 +79,19 @@ async function transferTest(testInstance, expTransfer) { const balBefore = await getAllBalances({ from: expTransfer.from, to: expTransfer.to, - feeAccount: FeeAccount.address + feeAccount: FeeAccount.address, }); let tx, txName; if (expTransfer.narrative === "") { txName = "transfer"; tx = await augmintToken.transfer(expTransfer.to, expTransfer.amount, { - from: expTransfer.from + from: expTransfer.from, }); } else { txName = "transferWithNarrative"; tx = await augmintToken.transferWithNarrative(expTransfer.to, expTransfer.amount, expTransfer.narrative, { - from: expTransfer.from + from: expTransfer.from, }); } await transferEventAsserts(expTransfer); @@ -98,28 +101,28 @@ async function transferTest(testInstance, expTransfer) { await assertBalances(balBefore, { from: { ace: transferBetweenSameAccounts - ? balBefore.from.ace.minus(expTransfer.fee) - : balBefore.from.ace.minus(expTransfer.amount).minus(expTransfer.fee), + ? balBefore.from.ace.sub(expTransfer.fee) + : balBefore.from.ace.sub(expTransfer.amount).sub(expTransfer.fee), eth: balBefore.from.eth, - gasFee: testHelpers.GAS_PRICE * TRANSFER_MAX_GAS + gasFee: testHelpers.GAS_PRICE * TRANSFER_MAX_GAS, }, to: { ace: transferBetweenSameAccounts - ? balBefore.to.ace.minus(expTransfer.fee) + ? balBefore.to.ace.sub(expTransfer.fee) : balBefore.to.ace.add(expTransfer.amount), eth: balBefore.to.eth, - gasFee: transferBetweenSameAccounts ? testHelpers.GAS_PRICE * TRANSFER_MAX_GAS : 0 + gasFee: transferBetweenSameAccounts ? testHelpers.GAS_PRICE * TRANSFER_MAX_GAS : 0, }, feeAccount: { - ace: balBefore.feeAccount.ace.plus(expTransfer.fee), - eth: balBefore.feeAccount.eth - } + ace: balBefore.feeAccount.ace.add(expTransfer.fee), + eth: balBefore.feeAccount.eth, + }, }); } async function approveTest(testInstance, expApprove) { const tx = await augmintToken.approve(expApprove.spender, expApprove.value, { - from: expApprove.owner + from: expApprove.owner, }); await approveEventAsserts(expApprove); testHelpers.logGasUse(testInstance, tx, "approve"); @@ -143,14 +146,14 @@ async function transferFromTest(testInstance, expTransfer) { from: expTransfer.from, to: expTransfer.to, spender: expTransfer.spender, - feeAccount: FeeAccount.address + feeAccount: FeeAccount.address, }); let tx, txName; if (expTransfer.narrative === "") { txName = "transferFrom"; tx = await augmintToken.transferFrom(expTransfer.from, expTransfer.to, expTransfer.amount, { - from: expTransfer.spender + from: expTransfer.spender, }); } else { txName = "transferFromWithNarrative"; @@ -160,7 +163,7 @@ async function transferFromTest(testInstance, expTransfer) { expTransfer.amount, expTransfer.narrative, { - from: expTransfer.spender + from: expTransfer.spender, } ); } @@ -177,54 +180,46 @@ async function transferFromTest(testInstance, expTransfer) { await assertBalances(balBefore, { from: { - ace: balBefore.from.ace.minus(expTransfer.amount).minus(expTransfer.fee), - eth: balBefore.from.eth + ace: balBefore.from.ace.sub(expTransfer.amount).sub(expTransfer.fee), + eth: balBefore.from.eth, }, to: { - ace: balBefore.to.ace.plus(expTransfer.amount), + ace: balBefore.to.ace.add(expTransfer.amount), eth: balBefore.to.eth, - gasFee: expTransfer.to === expTransfer.spender ? testHelpers.GAS_PRICE * TRANSFER_MAX_GAS : 0 + gasFee: expTransfer.to === expTransfer.spender ? testHelpers.GAS_PRICE * TRANSFER_MAX_GAS : 0, }, spender: { - ace: balBefore.spender.ace.plus(expTransfer.to === expTransfer.spender ? expTransfer.amount : 0), + ace: balBefore.spender.ace.add(expTransfer.to === expTransfer.spender ? expTransfer.amount : new BN(0)), eth: balBefore.spender.eth, - gasFee: testHelpers.GAS_PRICE * TRANSFER_MAX_GAS + gasFee: testHelpers.GAS_PRICE * TRANSFER_MAX_GAS, }, feeAccount: { - ace: balBefore.feeAccount.ace.plus(expTransfer.fee), - eth: balBefore.feeAccount.eth - } + ace: balBefore.feeAccount.ace.add(expTransfer.fee), + eth: balBefore.feeAccount.eth, + }, }); } async function getTransferFee(transfer) { const [fromAllowed, toAllowed] = await Promise.all([ - feeAccount.permissions(transfer.from, "NoTransferFee"), - feeAccount.permissions(transfer.to, "NoTransferFee") + feeAccount.permissions(transfer.from, web3.utils.asciiToHex("NoTransferFee")), + feeAccount.permissions(transfer.to, web3.utils.asciiToHex("NoTransferFee")), ]); if (fromAllowed || toAllowed) { - return 0; + return new BN(0); } - const [feePt, feeMin, feeMax] = await feeAccount.transferFee(); - const amount = new BigNumber(transfer.amount); - - let fee = - amount === 0 - ? new BigNumber(0) - : amount - .mul(feePt) - .div(1000000) - .round(0, BigNumber.ROUND_DOWN); - if (fee.lt(feeMin)) { - fee = feeMin; - } else if (fee.gt(feeMax)) { - fee = feeMax; + const feeParams = await feeAccount.transferFee(); + const amount = new BN(transfer.amount); + + let fee = amount.mul(feeParams.pt).div(testHelpers.PPM_DIV); // floored div + + if (fee.lt(feeParams.min)) { + fee = feeParams.min; + } else if (fee.gt(feeParams.max)) { + fee = feeParams.max; } - // console.log( - // `Fee calculations - // amount: ${amount.toString()} feePt: ${feePt.toString()} minFee: ${feeMin.toString()} maxFee: ${feeMax.toString()} fee: ${fee.toString()}` - // ); + return fee; } @@ -234,8 +229,10 @@ async function getAllBalances(accs) { const address = accs[ac].address ? accs[ac].address : accs[ac]; ret[ac] = {}; ret[ac].address = address; - ret[ac].eth = new BigNumber(await global.web3v1.eth.getBalance(address)); - ret[ac].ace = await augmintToken.balanceOf(address); + [ret[ac].eth, ret[ac].ace] = await Promise.all([ + web3.eth.getBalance(address).then((res) => new BN(res)), + augmintToken.balanceOf(address), + ]); } return ret; @@ -285,7 +282,7 @@ async function transferEventAsserts(expTransfer) { expTransferEvents.push({ from: expTransfer.from, to: expTransfer.to, - amount: expTransfer.amount.toString() + amount: expTransfer.amount.toString(), }); // ERC20 Transfer event for the fee amount @@ -293,7 +290,7 @@ async function transferEventAsserts(expTransfer) { expTransferEvents.push({ from: expTransfer.from, to: feeAccount.address, - amount: expTransfer.fee.toString() + amount: expTransfer.fee.toString(), }); } @@ -305,7 +302,7 @@ async function transferEventAsserts(expTransfer) { to: expTransfer.to, amount: expTransfer.amount.toString(), fee: expTransfer.fee.toString(), - narrative: expTransfer.narrative + narrative: expTransfer.narrative, }); } @@ -313,6 +310,6 @@ async function approveEventAsserts(expApprove) { await testHelpers.assertEvent(augmintToken, "Approval", { _owner: expApprove.owner, _spender: expApprove.spender, - _value: expApprove.value.toString() + _value: expApprove.value.toString(), }); } diff --git a/test/loanCollection.js b/test/loanCollection.js index 838401e9..00edf830 100644 --- a/test/loanCollection.js +++ b/test/loanCollection.js @@ -9,11 +9,13 @@ let rates = null; const ltdParams = { lockDifferenceLimit: 300000, loanDifferenceLimit: 200000, allowedDifferenceAmount: 100000 }; let products = {}; +const EUR = web3.utils.asciiToHex("EUR"); + let snapshotIdSingleTest; let snapshotIdAllTests; -contract("Loans collection tests", accounts => { - before(async function() { +contract("Loans collection tests", (accounts) => { + before(async function () { snapshotIdAllTests = await testHelpers.takeSnapshot(); rates = ratesTestHelpers.rates; @@ -21,12 +23,12 @@ contract("Loans collection tests", accounts => { loanManager = loanTestHelpers.loanManager; const [prodCount] = await Promise.all([ - loanManager.getProductCount().then(res => res.toNumber()), + loanManager.getProductCount().then((res) => res.toNumber()), monetarySupervisor.setLtdParams( ltdParams.lockDifferenceLimit, ltdParams.loanDifferenceLimit, ltdParams.allowedDifferenceAmount - ) + ), ]); // These neeed to be sequential b/c product order assumed when retrieving via getProducts // term (in sec), discountRate, initialCollateralRatio, minDisbursedAmount (w/ 2 decimals), defaultingFeePt, isActive, minCollateralRatio @@ -41,7 +43,7 @@ contract("Loans collection tests", accounts => { const [newProducts] = await Promise.all([ loanTestHelpers.getProductsInfo(prodCount, 10), - tokenTestHelpers.issueToken(accounts[0], accounts[0], 1000000000) + tokenTestHelpers.issueToken(accounts[0], accounts[0], 1000000000), ]); [ products.notDue, @@ -51,7 +53,7 @@ contract("Loans collection tests", accounts => { products.negativeInterest, products.fullCoverage, products.moreCoverage, - products.margin + products.margin, ] = newProducts; }); @@ -59,128 +61,123 @@ contract("Loans collection tests", accounts => { await testHelpers.revertSnapshot(snapshotIdAllTests); }); - beforeEach(async function() { + beforeEach(async function () { snapshotIdSingleTest = await testHelpers.takeSnapshot(); }); - afterEach(async function() { + afterEach(async function () { await testHelpers.revertSnapshot(snapshotIdSingleTest); }); - it("Should collect a defaulted A-EUR loan and send back leftover collateral ", async function() { - const loan = await loanTestHelpers.createLoan( - this, - products.defaulting, - accounts[1], - global.web3v1.utils.toWei("0.05") - ); + it("Should collect a defaulted A-EUR loan and send back leftover collateral ", async function () { + const loan = await loanTestHelpers.createLoan(this, products.defaulting, accounts[1], web3.utils.toWei("0.05")); await testHelpers.waitForTimeStamp(loan.maturity); await loanTestHelpers.collectLoan(this, loan, accounts[2]); }); - it("Should collect a defaulted A-EUR loan when no leftover collateral (collection exactly covered)", async function() { - await rates.setRate("EUR", 100000); + it("Should collect a defaulted A-EUR loan when no leftover collateral (collection exactly covered)", async function () { + await rates.setRate(EUR, 100000); const loan = await loanTestHelpers.createLoan( this, products.defaultingNoLeftOver, accounts[1], - global.web3v1.utils.toWei("0.2") + web3.utils.toWei("0.2") ); - await Promise.all([rates.setRate("EUR", 99000), testHelpers.waitForTimeStamp(loan.maturity)]); + await Promise.all([rates.setRate(EUR, 99000), testHelpers.waitForTimeStamp(loan.maturity)]); await loanTestHelpers.collectLoan(this, loan, accounts[2]); }); - it("Should collect a defaulted A-EUR loan when no leftover collateral (collection partially covered)", async function() { - await rates.setRate("EUR", 100000); + it("Should collect a defaulted A-EUR loan when no leftover collateral (collection partially covered)", async function () { + await rates.setRate(EUR, 100000); const loan = await loanTestHelpers.createLoan( this, products.defaultingNoLeftOver, accounts[1], - global.web3v1.utils.toWei("0.2") + web3.utils.toWei("0.2") ); - await Promise.all([rates.setRate("EUR", 98900), testHelpers.waitForTimeStamp(loan.maturity)]); + await Promise.all([rates.setRate(EUR, 98900), testHelpers.waitForTimeStamp(loan.maturity)]); await loanTestHelpers.collectLoan(this, loan, accounts[2]); }); - it("Should collect a defaulted A-EUR loan when no leftover collateral (only fee covered)", async function() { - await rates.setRate("EUR", 99800); + it("Should collect a defaulted A-EUR loan when no leftover collateral (only fee covered)", async function () { + await rates.setRate(EUR, 99800); const loan = await loanTestHelpers.createLoan( this, products.defaultingNoLeftOver, accounts[1], - global.web3v1.utils.toWei("0.2") + web3.utils.toWei("0.2") ); - await Promise.all([rates.setRate("EUR", 1), testHelpers.waitForTimeStamp(loan.maturity)]); + await Promise.all([rates.setRate(EUR, 1), testHelpers.waitForTimeStamp(loan.maturity)]); await loanTestHelpers.collectLoan(this, loan, accounts[2]); - await rates.setRate("EUR", 99800); // restore rates + await rates.setRate(EUR, 99800); // restore rates }); - it("Should get and collect a loan with discountRate = 1 (zero interest)", async function() { + it("Should get and collect a loan with discountRate = 1 (zero interest)", async function () { const loan = await loanTestHelpers.createLoan( this, products.zeroInterest, accounts[0], - global.web3v1.utils.toWei("0.05") + web3.utils.toWei("0.05") ); await testHelpers.waitForTimeStamp(loan.maturity); await loanTestHelpers.collectLoan(this, loan, accounts[2]); }); - it("Should get and collect a loan with discountRate > 1 (negative interest)", async function() { + it("Should get and collect a loan with discountRate > 1 (negative interest)", async function () { const loan = await loanTestHelpers.createLoan( this, products.negativeInterest, accounts[0], - global.web3v1.utils.toWei("0.05") + web3.utils.toWei("0.05") ); await testHelpers.waitForTimeStamp(loan.maturity); await loanTestHelpers.collectLoan(this, loan, accounts[2]); }); - it("Should get and collect a loan with initialCollateralRatio = 1", async function() { + it("Should get and collect a loan with initialCollateralRatio = 1", async function () { const loan = await loanTestHelpers.createLoan( this, products.fullCoverage, accounts[0], - global.web3v1.utils.toWei("0.05") + web3.utils.toWei("0.05") ); await testHelpers.waitForTimeStamp(loan.maturity); await loanTestHelpers.collectLoan(this, loan, accounts[2]); }); - it("Should get and collect a loan with initialCollateralRatio < 1", async function() { + it("Should get and collect a loan with initialCollateralRatio < 1", async function () { const loan = await loanTestHelpers.createLoan( this, products.moreCoverage, accounts[0], - global.web3v1.utils.toWei("0.05") + web3.utils.toWei("0.05") ); await testHelpers.waitForTimeStamp(loan.maturity); await loanTestHelpers.collectLoan(this, loan, accounts[2]); }); - it("Should collect multiple defaulted loans", async function() { + it("Should collect multiple defaulted loans", async function () { const loanCount = (await loanManager.getLoanCount()).toNumber(); await Promise.all([ - loanManager.newEthBackedLoan(products.zeroInterest.id, 0 ,{ + loanManager.newEthBackedLoan(products.zeroInterest.id, 0, { from: accounts[0], - value: global.web3v1.utils.toWei("0.05") + value: web3.utils.toWei("0.05"), }), loanManager.newEthBackedLoan(products.fullCoverage.id, 0, { from: accounts[1], - value: global.web3v1.utils.toWei("0.05") + value: web3.utils.toWei("0.05"), }), loanManager.newEthBackedLoan(products.negativeInterest.id, 0, { from: accounts[1], - value: global.web3v1.utils.toWei("0.05") - }) + value: web3.utils.toWei("0.05"), + }), ]); await testHelpers.waitFor(1000); @@ -189,17 +186,17 @@ contract("Loans collection tests", accounts => { testHelpers.logGasUse(this, tx, "collect 3"); }); - it("Should NOT collect multiple loans if one is not due", async function() { + it("Should NOT collect multiple loans if one is not due", async function () { const loanCount = (await loanManager.getLoanCount()).toNumber(); await Promise.all([ loanManager.newEthBackedLoan(products.notDue.id, 0, { from: accounts[0], - value: global.web3v1.utils.toWei("0.05") + value: web3.utils.toWei("0.05"), }), loanManager.newEthBackedLoan(products.defaulting.id, 0, { from: accounts[1], - value: global.web3v1.utils.toWei("0.05") - }) + value: web3.utils.toWei("0.05"), + }), ]); await testHelpers.waitFor(1000); @@ -207,37 +204,27 @@ contract("Loans collection tests", accounts => { await testHelpers.expectThrow(loanManager.collect([loanCount, loanCount + 1])); }); - it("Should NOT collect a loan before it's due", async function() { - const loan = await loanTestHelpers.createLoan( - this, - products.notDue, - accounts[1], - global.web3v1.utils.toWei("0.05") - ); + it("Should NOT collect a loan before it's due", async function () { + const loan = await loanTestHelpers.createLoan(this, products.notDue, accounts[1], web3.utils.toWei("0.05")); await testHelpers.expectThrow(loanManager.collect([loan.id])); }); - it("Should not collect when rate = 0", async function() { - await rates.setRate("EUR", 99800); + it("Should not collect when rate = 0", async function () { + await rates.setRate(EUR, 99800); const loan = await loanTestHelpers.createLoan( this, products.defaultingNoLeftOver, accounts[1], - global.web3v1.utils.toWei("0.05") + web3.utils.toWei("0.05") ); - await Promise.all([rates.setRate("EUR", 0), testHelpers.waitForTimeStamp(loan.maturity)]); + await Promise.all([rates.setRate(EUR, 0), testHelpers.waitForTimeStamp(loan.maturity)]); testHelpers.expectThrow(loanTestHelpers.collectLoan(this, loan, accounts[2])); - await rates.setRate("EUR", 99800); + await rates.setRate(EUR, 99800); }); - it("Should NOT collect an already collected loan", async function() { - const loan = await loanTestHelpers.createLoan( - this, - products.defaulting, - accounts[1], - global.web3v1.utils.toWei("0.05") - ); + it("Should NOT collect an already collected loan", async function () { + const loan = await loanTestHelpers.createLoan(this, products.defaulting, accounts[1], web3.utils.toWei("0.05")); await testHelpers.waitForTimeStamp(loan.maturity); @@ -245,7 +232,7 @@ contract("Loans collection tests", accounts => { await testHelpers.expectThrow(loanManager.collect([loan.id])); }); - it("only allowed contract should call MonetarySupervisor.loanCollectionNotification", async function() { + it("only allowed contract should call MonetarySupervisor.loanCollectionNotification", async function () { await testHelpers.expectThrow(monetarySupervisor.loanCollectionNotification(0, { from: accounts[0] })); }); @@ -258,66 +245,51 @@ contract("Loans collection tests", accounts => { // 120% => 3742.5 (token) => @ 74850 (token/eth) => marginCallRate: 74832 (due to internal rounding in contract) // 160% => 4990 (token) => @ 99800 (token/eth) - it("Should collect a loan if under margin", async function() { - await rates.setRate("EUR", 99800); - const loan = await loanTestHelpers.createLoan( - this, - products.margin, - accounts[1], - global.web3v1.utils.toWei("0.05") - ); - await rates.setRate("EUR", 74830); - assert(await isCollectable(loan.id) === 1); + it("Should collect a loan if under margin", async function () { + await rates.setRate(EUR, 99800); + const loan = await loanTestHelpers.createLoan(this, products.margin, accounts[1], web3.utils.toWei("0.05")); + await rates.setRate(EUR, 74830); + assert((await isCollectable(loan.id)) === 1); await loanTestHelpers.collectLoan(this, loan, accounts[2]); }); - it("Should not collect a loan if above margin", async function() { - await rates.setRate("EUR", 99800); - const loan = await loanTestHelpers.createLoan( - this, - products.margin, - accounts[1], - global.web3v1.utils.toWei("0.05") - ); - await rates.setRate("EUR", 74840); - assert(await isCollectable(loan.id) === 0); + it("Should not collect a loan if above margin", async function () { + await rates.setRate(EUR, 99800); + const loan = await loanTestHelpers.createLoan(this, products.margin, accounts[1], web3.utils.toWei("0.05")); + await rates.setRate(EUR, 74840); + assert((await isCollectable(loan.id)) === 0); await testHelpers.expectThrow(loanManager.collect([loan.id])); }); - it("Should not collect a loan if enough extra collateral was added", async function() { - await rates.setRate("EUR", 99800); - const loan = await loanTestHelpers.createLoan( - this, - products.margin, - accounts[1], - global.web3v1.utils.toWei("0.05") - ); - assert(await isCollectable(loan.id) === 0); + it("Should not collect a loan if enough extra collateral was added", async function () { + await rates.setRate(EUR, 99800); + const loan = await loanTestHelpers.createLoan(this, products.margin, accounts[1], web3.utils.toWei("0.05")); + assert((await isCollectable(loan.id)) === 0); // set rate below margin - await rates.setRate("EUR", 72000); - assert(await isCollectable(loan.id) === 1); + await rates.setRate(EUR, 72000); + assert((await isCollectable(loan.id)) === 1); // add extra collateral to get above margin const tx = await loanManager.addExtraCollateral(loan.id, { from: accounts[1], - value: global.web3v1.utils.toWei("0.05") + value: web3.utils.toWei("0.05"), }); testHelpers.logGasUse(this, tx, "addExtraCollateral"); testHelpers.assertEvent(loanManager, "LoanChanged", { - loanId: loan.id, + loanId: loan.id.toString(), borrower: loan.borrower, - collateralAmount: global.web3v1.utils.toWei("0.1").toString(), + collateralAmount: web3.utils.toWei("0.1").toString(), repaymentAmount: loan.repaymentAmount.toString(), - currentRate: (await rates.rates("EUR"))[0].toString() + currentRate: (await rates.rates(EUR))[0].toString(), }); // should not be collectable - assert(await isCollectable(loan.id) === 0); + assert((await isCollectable(loan.id)) === 0); await testHelpers.expectThrow(loanManager.collect([loan.id])); }); - const isCollectable = async loanId => + const isCollectable = async (loanId) => loanTestHelpers.parseLoansInfo(await loanManager.getLoans(loanId, 1))[0].isCollectable.toNumber(); }); diff --git a/test/loanToDepositRatioLimits.js b/test/loanToDepositRatioLimits.js index f4625dbe..bd0ea2e2 100644 --- a/test/loanToDepositRatioLimits.js +++ b/test/loanToDepositRatioLimits.js @@ -29,19 +29,21 @@ const getLtdLimits = async () => { monetarySupervisor.getMaxLockAmountAllowedByLtd(), monetarySupervisor.getMaxLoanAmountAllowedByLtd(), monetarySupervisor.getMaxLockAmount(500, lockPerTermInterest), - monetarySupervisor.getMaxLoanAmount(3000) + monetarySupervisor.getMaxLoanAmount(3000), ]); return { maxLockByLtd, maxLoanByLtd, maxLock, maxLoan }; }; -contract("Loan to Deposit ratio tests", accounts => { +contract("Loan to Deposit ratio tests", (accounts) => { before(async () => { snapshotIdAllTests = await testHelpers.takeSnapshot(); - augmintToken = tokenTestHelpers.augmintToken; - loanManager = loanTestHelpers.loanManager; - locker = Locker.at(Locker.address); - const rates = Rates.at(Rates.address); + [augmintToken, loanManager, locker] = await Promise.all([ + tokenTestHelpers.augmintToken, + loanTestHelpers.loanManager, + Locker.at(Locker.address), + ]); + const rates = await Rates.at(Rates.address); /* setup a new blank MS independent from migration scripts */ @@ -58,16 +60,22 @@ contract("Loan to Deposit ratio tests", accounts => { await Promise.all([ tokenTestHelpers.interestEarnedAccount.grantPermission( monetarySupervisor.address, - "MonetarySupervisor" + web3.utils.asciiToHex("MonetarySupervisor") + ), + augmintToken.grantPermission(monetarySupervisor.address, web3.utils.asciiToHex("MonetarySupervisor")), + tokenTestHelpers.feeAccount.grantPermission( + monetarySupervisor.address, + web3.utils.asciiToHex("NoTransferFee") + ), + tokenTestHelpers.augmintReserves.grantPermission( + monetarySupervisor.address, + web3.utils.asciiToHex("MonetarySupervisor") ), - augmintToken.grantPermission(monetarySupervisor.address, "MonetarySupervisor"), - tokenTestHelpers.feeAccount.grantPermission(monetarySupervisor.address, "NoTransferFee"), - tokenTestHelpers.augmintReserves.grantPermission(monetarySupervisor.address, "MonetarySupervisor"), locker.setMonetarySupervisor(monetarySupervisor.address), loanManager.setSystemContracts(rates.address, monetarySupervisor.address), - monetarySupervisor.grantPermission(accounts[0], "StabilityBoard"), - monetarySupervisor.grantPermission(locker.address, "Locker"), - monetarySupervisor.grantPermission(loanManager.address, "LoanManager") + monetarySupervisor.grantPermission(accounts[0], web3.utils.asciiToHex("StabilityBoard")), + monetarySupervisor.grantPermission(locker.address, web3.utils.asciiToHex("Locker")), + monetarySupervisor.grantPermission(loanManager.address, web3.utils.asciiToHex("LoanManager")), ]); const [interestEarnedBalance] = await Promise.all([ @@ -80,13 +88,13 @@ contract("Loan to Deposit ratio tests", accounts => { ltdParams.lockDifferenceLimit, ltdParams.loanDifferenceLimit, ltdParams.allowedDifferenceAmount - ) + ), ]); [loanProductId, lockProductId, rate] = await Promise.all([ - loanManager.getProductCount().then(res => res.toNumber() - 1), - locker.getLockProductCount().then(res => res.toNumber() - 1), - rates.rates("EUR").then(res => res[0]), + loanManager.getProductCount().then((res) => res.toNumber() - 1), + locker.getLockProductCount().then((res) => res.toNumber() - 1), + rates.rates(web3.utils.asciiToHex("EUR")).then((res) => res[0]), tokenTestHelpers.issueToken(accounts[0], accounts[0], 10000000), tokenTestHelpers.interestEarnedAccount.withdraw( augmintToken.address, @@ -94,7 +102,7 @@ contract("Loan to Deposit ratio tests", accounts => { interestEarnedBalance, 0, "clear token balance for tests" - ) + ), ]); }); @@ -102,15 +110,15 @@ contract("Loan to Deposit ratio tests", accounts => { await testHelpers.revertSnapshot(snapshotIdAllTests); }); - beforeEach(async function() { + beforeEach(async function () { snapshotIdSingleTest = await testHelpers.takeSnapshot(); }); - afterEach(async function() { + afterEach(async function () { await testHelpers.revertSnapshot(snapshotIdSingleTest); }); - it("LTD when both totalLock and totalLoan 0", async function() { + it("LTD when both totalLock and totalLoan 0", async function () { // Earned interest 0 let limits = await getLtdLimits(); assert.equal(limits.maxLockByLtd.toString(), "100000"); @@ -135,7 +143,7 @@ contract("Loan to Deposit ratio tests", accounts => { assert.equal(limits.maxLoan.toString(), "100000"); }); - it("LTD when totalLoan 0 and totalLock > 0 and allowed difference amount is in effect", async function() { + it("LTD when totalLoan 0 and totalLock > 0 and allowed difference amount is in effect", async function () { //lock some const amountToLock = 1000; const interestAmount = Math.ceil((amountToLock * lockPerTermInterest) / PERCENT_100); @@ -166,9 +174,9 @@ contract("Loan to Deposit ratio tests", accounts => { assert.equal(limits.maxLoan.toString(), "101000"); }); - it("LTD when totalLock = 0 and totalLoan > 0 and allowed difference amount is in effect", async function() { + it("LTD when totalLock = 0 and totalLoan > 0 and allowed difference amount is in effect", async function () { // get a loan - const collateralAmount = global.web3v1.utils.toWei((3000 / rate).toString()); + const collateralAmount = web3.utils.toWei((3000 / rate).toString()); await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // Earned interest 0 @@ -195,9 +203,9 @@ contract("Loan to Deposit ratio tests", accounts => { assert.equal(limits.maxLoan.toString(), "97000"); }); - it("LTD when totalLock = totalLoan and allowed difference amount is in effect", async function() { + it("LTD when totalLock = totalLoan and allowed difference amount is in effect", async function () { // get a loan - const collateralAmount = global.web3v1.utils.toWei((3000 / rate).toString()); + const collateralAmount = web3.utils.toWei((3000 / rate).toString()); await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // lock the same amount @@ -230,12 +238,12 @@ contract("Loan to Deposit ratio tests", accounts => { assert.equal(limits.maxLoan.toString(), "100000"); }); - it("LTD when totalLock < totalLoan & difference < allowedDifferenceAmount", async function() { + it("LTD when totalLock < totalLoan & difference < allowedDifferenceAmount", async function () { // set allowedDifferenceAmount temporaly to allow setup test base await monetarySupervisor.setLtdParams(ltdParams.lockDifferenceLimit, ltdParams.loanDifferenceLimit, 1000000); // get a loan - const collateralAmount = global.web3v1.utils.toWei((640000 / rate).toString()); + const collateralAmount = web3.utils.toWei((640000 / rate).toString()); await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // lock less than the loan @@ -275,12 +283,12 @@ contract("Loan to Deposit ratio tests", accounts => { assert.equal(limits.maxLoan.toString(), "80000"); }); - it("LTD when totalLock < totalLoan & difference > allowedDifferenceAmount", async function() { + it("LTD when totalLock < totalLoan & difference > allowedDifferenceAmount", async function () { // set allowedDifferenceAmount temporaly to allow setup test base await monetarySupervisor.setLtdParams(ltdParams.lockDifferenceLimit, ltdParams.loanDifferenceLimit, 1000000); // get a loan - const collateralAmount = global.web3v1.utils.toWei((640000 / rate).toString()); + const collateralAmount = web3.utils.toWei((640000 / rate).toString()); await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // lock less than the loan @@ -316,12 +324,12 @@ contract("Loan to Deposit ratio tests", accounts => { assert.equal(limits.maxLoan.toString(), "80000"); }); - it("LTD when totalLock > totalLoan & difference is < allowedDifferenceAmount", async function() { + it("LTD when totalLock > totalLoan & difference is < allowedDifferenceAmount", async function () { // set allowedDifferenceAmount temporaly to allow setup test base await monetarySupervisor.setLtdParams(ltdParams.lockDifferenceLimit, ltdParams.loanDifferenceLimit, 1000000); // get a loan - const collateralAmount = global.web3v1.utils.toWei((600000 / rate).toString()); + const collateralAmount = web3.utils.toWei((600000 / rate).toString()); await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // lock more than the loan @@ -361,12 +369,12 @@ contract("Loan to Deposit ratio tests", accounts => { assert.equal(limits.maxLoan.toString(), "168000"); }); - it("LTD when totalLock > totalLoan & difference > allowedDifferenceAmount", async function() { + it("LTD when totalLock > totalLoan & difference > allowedDifferenceAmount", async function () { // set allowedDifferenceAmount temporaly to allow setup test base await monetarySupervisor.setLtdParams(ltdParams.lockDifferenceLimit, ltdParams.loanDifferenceLimit, 10000000); // get a loan - const collateralAmount = global.web3v1.utils.toWei((359974 / rate).toString()); + const collateralAmount = web3.utils.toWei((359974 / rate).toString()); await loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount }); // lock more than the loan @@ -402,24 +410,24 @@ contract("Loan to Deposit ratio tests", accounts => { assert.equal(limits.maxLoan.toString(), "132026"); }); - it("maxLock & maxLoan should be 0 if lock/loan allowed by LTD is < minLock/LoanAmount", async function() { + it("maxLock & maxLoan should be 0 if lock/loan allowed by LTD is < minLock/LoanAmount", async function () { const [maxLock, maxLoan] = await Promise.all([ monetarySupervisor.getMaxLockAmount(ltdParams.allowedDifferenceAmount + 1, lockPerTermInterest), - monetarySupervisor.getMaxLoanAmount(ltdParams.allowedDifferenceAmount + 1) + monetarySupervisor.getMaxLoanAmount(ltdParams.allowedDifferenceAmount + 1), ]); assert.equal(maxLock.toString(), "0"); assert.equal(maxLoan.toString(), "0"); }); - it("should NOT allow to lock more than maxLockAmountAllowedByLtd ", async function() { + it("should NOT allow to lock more than maxLockAmountAllowedByLtd ", async function () { // transfer enough to interestEarnedAccount so lock is not be bound by it await augmintToken.transfer(InterestEarnedAccount.address, 10000); const amountToLock = ltdParams.allowedDifferenceAmount + 1; await testHelpers.expectThrow(augmintToken.transferAndNotify(locker.address, amountToLock, lockProductId)); }); - it("should NOT allow to borrow more than maxLoanAmountAllowedByLtd ", async function() { - const collateralAmount = global.web3v1.utils.toWei(((ltdParams.allowedDifferenceAmount + 1) / rate).toString()); + it("should NOT allow to borrow more than maxLoanAmountAllowedByLtd ", async function () { + const collateralAmount = web3.utils.toWei(((ltdParams.allowedDifferenceAmount + 1) / rate).toString()); await testHelpers.expectThrow(loanManager.newEthBackedLoan(loanProductId, 0, { value: collateralAmount })); }); }); diff --git a/test/loans.js b/test/loans.js index d6fba83c..99d1288e 100644 --- a/test/loans.js +++ b/test/loans.js @@ -1,4 +1,3 @@ -const BigNumber = require("bignumber.js"); const LoanManager = artifacts.require("./LoanManager.sol"); const testHelpers = require("./helpers/testHelpers.js"); @@ -6,11 +5,15 @@ const tokenTestHelpers = require("./helpers/tokenTestHelpers.js"); const loanTestHelpers = require("./helpers/loanTestHelpers.js"); const ratesTestHelpers = require("./helpers/ratesTestHelpers.js"); +const BN = web3.utils.BN; + let augmintToken = null; let loanManager = null; let monetarySupervisor = null; let rates = null; +const EUR = web3.utils.asciiToHex("EUR"); + const ltdParams = { lockDifferenceLimit: 300000, loanDifferenceLimit: 200000, allowedDifferenceAmount: 1000000 }; let products = {}; @@ -19,22 +22,24 @@ let CHUNK_SIZE = 10; let snapshotIdSingleTest; let snapshotIdAllTests; -contract("Loans tests", accounts => { - before(async function() { - snapshotIdAllTests = await testHelpers.takeSnapshot(); +contract("Loans tests", (accounts) => { + before(async function () { + [snapshotIdAllTests, rates, monetarySupervisor, augmintToken, loanManager] = await Promise.all([ + testHelpers.takeSnapshot(), - rates = ratesTestHelpers.rates; - monetarySupervisor = tokenTestHelpers.monetarySupervisor; - augmintToken = tokenTestHelpers.augmintToken; - loanManager = loanTestHelpers.loanManager; + ratesTestHelpers.rates, + tokenTestHelpers.monetarySupervisor, + tokenTestHelpers.augmintToken, + loanTestHelpers.loanManager, + ]); const [prodCount] = await Promise.all([ - loanManager.getProductCount().then(res => res.toNumber()), + loanManager.getProductCount().then((res) => res.toNumber()), monetarySupervisor.setLtdParams( ltdParams.lockDifferenceLimit, ltdParams.loanDifferenceLimit, ltdParams.allowedDifferenceAmount - ) + ), ]); // These neeed to be sequential b/c product order assumed when retrieving via getProducts // term (in sec), discountRate, initialCollateralRatio, minDisbursedAmount (w/ 2 decimals), defaultingFeePt, isActive, minCollateralRatio @@ -50,7 +55,7 @@ contract("Loans tests", accounts => { const [newProducts] = await Promise.all([ loanTestHelpers.getProductsInfo(prodCount, CHUNK_SIZE), - tokenTestHelpers.issueToken(accounts[0], accounts[0], 1000000000) + tokenTestHelpers.issueToken(accounts[0], accounts[0], 1000000000), ]); [ products.notDue, @@ -61,7 +66,7 @@ contract("Loans tests", accounts => { products.negativeInterest, products.fullCoverage, products.moreCoverage, - products.margin + products.margin, ] = newProducts; }); @@ -69,143 +74,130 @@ contract("Loans tests", accounts => { await testHelpers.revertSnapshot(snapshotIdAllTests); }); - beforeEach(async function() { + beforeEach(async function () { snapshotIdSingleTest = await testHelpers.takeSnapshot(); }); - afterEach(async function() { + afterEach(async function () { await testHelpers.revertSnapshot(snapshotIdSingleTest); }); - it("Should get an A-EUR loan", async function() { - await loanTestHelpers.createLoan(this, products.repaying, accounts[0], global.web3v1.utils.toWei("0.5")); + it("Should get an A-EUR loan", async function () { + await loanTestHelpers.createLoan(this, products.repaying, accounts[0], web3.utils.toWei("0.5")); }); - it("Should get an A-EUR loan if current rate is not below minRate", async function() { + it("Should get an A-EUR loan if current rate is not below minRate", async function () { const minRate = 22020; - await rates.setRate("EUR", minRate); - await loanTestHelpers.createLoan(this, products.repaying, accounts[1], global.web3v1.utils.toWei("0.5"), minRate); + await rates.setRate(EUR, minRate); + await loanTestHelpers.createLoan(this, products.repaying, accounts[1], web3.utils.toWei("0.5"), minRate); }); - it("Should NOT get an A-EUR loan if current rate is below minRate", async function() { + it("Should NOT get an A-EUR loan if current rate is below minRate", async function () { const minRate = 22020; - await rates.setRate("EUR", minRate - 1); - await testHelpers.expectThrow(loanManager.newEthBackedLoan(products.repaying.id, minRate, { from: accounts[1], value: global.web3v1.utils.toWei("0.5") })); + await rates.setRate(EUR, minRate - 1); + await testHelpers.expectThrow( + loanManager.newEthBackedLoan(products.repaying.id, minRate, { + from: accounts[1], + value: web3.utils.toWei("0.5"), + }) + ); }); - it("Should NOT get a loan less than minDisbursedAmount", async function() { + it("Should NOT get a loan less than minDisbursedAmount", async function () { const prod = products.repaying; - const loanAmount = prod.minDisbursedAmount - .sub(1) - .div(prod.discountRate) - .mul(1000000) - .round(0, BigNumber.ROUND_DOWN); + const loanAmount = prod.minDisbursedAmount.sub(new BN(1)).div(prod.discountRate).mul(testHelpers.PPM_DIV); const weiAmount = (await rates.convertToWei(tokenTestHelpers.peggedSymbol, loanAmount)) - .div(prod.initialCollateralRatio) - .mul(1000000) - .round(0, BigNumber.ROUND_DOWN); + .mul(testHelpers.PPM_DIV) + .div(prod.initialCollateralRatio); - await testHelpers.expectThrow(loanManager.newEthBackedLoan(prod.id, 0, { from: accounts[0], value: weiAmount })); + await testHelpers.expectThrow( + loanManager.newEthBackedLoan(prod.id, 0, { from: accounts[0], value: weiAmount }) + ); }); - it("Shouldn't get a loan for a disabled product", async function() { + it("Shouldn't get a loan for a disabled product", async function () { await testHelpers.expectThrow( loanManager.newEthBackedLoan(products.disabledProduct.id, 0, { from: accounts[0], - value: global.web3v1.utils.toWei("0.05") + value: web3.utils.toWei("0.05"), }) ); }); - it("Should repay an A-EUR loan before maturity", async function() { - const loan = await loanTestHelpers.createLoan( - this, - products.notDue, - accounts[1], - global.web3v1.utils.toWei("0.05") - ); + it("Should repay an A-EUR loan before maturity", async function () { + const loan = await loanTestHelpers.createLoan(this, products.notDue, accounts[1], web3.utils.toWei("0.05")); // send interest to borrower to have enough A-EUR to repay in test await augmintToken.transfer(loan.borrower, loan.interestAmount, { - from: accounts[0] + from: accounts[0], }); await loanTestHelpers.repayLoan(this, loan); }); - it("Should get and repay a loan whith discountRate = 1 (zero interest)", async function() { + it("Should get and repay a loan whith discountRate = 1 (zero interest)", async function () { const loan = await loanTestHelpers.createLoan( this, products.zeroInterest, accounts[0], - global.web3v1.utils.toWei("0.05") + web3.utils.toWei("0.05") ); await loanTestHelpers.repayLoan(this, loan); }); - it("Should get and repay a loan whith discountRate > 1 (negative interest)", async function() { + it("Should get and repay a loan whith discountRate > 1 (negative interest)", async function () { const loan = await loanTestHelpers.createLoan( this, products.negativeInterest, accounts[0], - global.web3v1.utils.toWei("0.05") + web3.utils.toWei("0.05") ); await loanTestHelpers.repayLoan(this, loan); }); - it("Should get and repay a loan with colletaralRatio = 1", async function() { + it("Should get and repay a loan with colletaralRatio = 1", async function () { const loan = await loanTestHelpers.createLoan( this, products.fullCoverage, accounts[0], - global.web3v1.utils.toWei("0.05") + web3.utils.toWei("0.05") ); await loanTestHelpers.repayLoan(this, loan); }); - it("Should get and repay a loan with colletaralRatio > 1", async function() { + it("Should get and repay a loan with colletaralRatio > 1", async function () { const loan = await loanTestHelpers.createLoan( this, products.moreCoverage, accounts[0], - global.web3v1.utils.toWei("0.05") + web3.utils.toWei("0.05") ); await loanTestHelpers.repayLoan(this, loan); }); - it("Non owner should be able to repay a loan too", async function() { - const loan = await loanTestHelpers.createLoan( - this, - products.notDue, - accounts[1], - global.web3v1.utils.toWei("0.05") - ); + it("Non owner should be able to repay a loan too", async function () { + const loan = await loanTestHelpers.createLoan(this, products.notDue, accounts[1], web3.utils.toWei("0.05")); await augmintToken.transferAndNotify(loanManager.address, loan.repaymentAmount, loan.id, { - from: accounts[0] + from: accounts[0], }); - const currentRate = (await rates.rates("EUR"))[0].toNumber(); + const currentRate = (await rates.rates(EUR))[0].toNumber(); await testHelpers.assertEvent(loanManager, "LoanRepaid", { - loanId: loan.id, + loanId: loan.id.toString(), borrower: loan.borrower, - currentRate: currentRate + currentRate: currentRate.toString(), }); }); - it("Should NOT repay an A-EUR loan on maturity if A-EUR balance is insufficient", async function() { + it("Should NOT repay an A-EUR loan on maturity if A-EUR balance is insufficient", async function () { const borrower = accounts[2]; - const loan = await loanTestHelpers.createLoan( - this, - products.notDue, - borrower, - global.web3v1.utils.toWei("0.05") - ); + const loan = await loanTestHelpers.createLoan(this, products.notDue, borrower, web3.utils.toWei("0.05")); const accBal = await augmintToken.balanceOf(borrower); // send just 0.01 A€ less than required for repayment - const topUp = loan.repaymentAmount.sub(accBal).sub(1); + const topUp = loan.repaymentAmount.sub(accBal).sub(new BN(1)); assert(accBal.add(topUp).lt(loan.repaymentAmount)); // sanitiy against previous tests accidently leaving A€ borrower account await augmintToken.transfer(borrower, topUp, { - from: accounts[0] + from: accounts[0], }); await testHelpers.expectThrow( @@ -213,70 +205,60 @@ contract("Loans tests", accounts => { ); }); - it("should not repay a loan with smaller amount than repaymentAmount", async function() { + it("should not repay a loan with smaller amount than repaymentAmount", async function () { const borrower = accounts[1]; - const loan = await loanTestHelpers.createLoan( - this, - products.notDue, - borrower, - global.web3v1.utils.toWei("0.05") - ); + const loan = await loanTestHelpers.createLoan(this, products.notDue, borrower, web3.utils.toWei("0.05")); await augmintToken.transfer(loan.borrower, loan.interestAmount, { - from: accounts[0] + from: accounts[0], }); await testHelpers.expectThrow( - augmintToken.transferAndNotify(loanManager.address, loan.repaymentAmount.sub(1), loan.id, { - from: borrower + augmintToken.transferAndNotify(loanManager.address, loan.repaymentAmount.sub(new BN(1)), loan.id, { + from: borrower, }) ); }); - it("Should not repay with invalid loanId", async function() { + it("Should not repay with invalid loanId", async function () { const loanCount = await loanManager.getLoanCount(); await testHelpers.expectThrow(augmintToken.transferAndNotify(loanManager.address, 10000, loanCount)); }); - it("Should NOT repay a loan after maturity", async function() { + it("Should NOT repay a loan after maturity", async function () { const borrower = accounts[0]; - const loan = await loanTestHelpers.createLoan( - this, - products.defaulting, - borrower, - global.web3v1.utils.toWei("0.05") - ); + const loan = await loanTestHelpers.createLoan(this, products.defaulting, borrower, web3.utils.toWei("0.05")); const [accBal] = await Promise.all([ augmintToken.balanceOf(borrower), - testHelpers.waitForTimeStamp(loan.maturity + 1) + testHelpers.waitForTimeStamp(loan.maturity + 1), ]); assert(accBal.gt(loan.repaymentAmount)); // sanitiy to make sure repayment is not failing on insufficient A€ await testHelpers.expectThrow( augmintToken.transferAndNotify(loanManager.address, loan.repaymentAmount, loan.id, { - from: borrower + from: borrower, }) ); }); - it("Should not get a loan when rates = 0", async function() { - await rates.setRate("EUR", 0); + it("Should not get a loan when rates = 0", async function () { + await rates.setRate(EUR, 0); await testHelpers.expectThrow( loanManager.newEthBackedLoan(products.repaying.id, 0, { from: accounts[1], - value: global.web3v1.utils.toWei("0.1") + value: web3.utils.toWei("0.1"), }) ); - await rates.setRate("EUR", 99800); // restore rates + await rates.setRate(EUR, 99800); // restore rates }); - it("Should list loans from offset", async function() { + it("Should list loans from offset", async function () { const product = products.repaying; const product2 = products.defaulting; - const loan1 = await loanTestHelpers.createLoan(this, product, accounts[1], global.web3v1.utils.toWei("0.05")); - const loan2 = await loanTestHelpers.createLoan(this, product2, accounts[2], global.web3v1.utils.toWei("0.06")); + const loan1 = await loanTestHelpers.createLoan(this, product, accounts[1], web3.utils.toWei("0.05")); + const loan2 = await loanTestHelpers.createLoan(this, product2, accounts[2], web3.utils.toWei("0.06")); await testHelpers.waitForTimeStamp(loan2.maturity); @@ -288,17 +270,17 @@ contract("Loans tests", accounts => { const loan1Actual = loanInfo[0]; - assert.equal(loan1Actual.id.toNumber(), loan1.id); - assert.equal(loan1Actual.collateralAmount.toNumber(), loan1.collateralAmount); - assert.equal(loan1Actual.repaymentAmount.toNumber(), loan1.repaymentAmount); + assert.equal(loan1Actual.id.toString(), loan1.id.toString()); + assert.equal(loan1Actual.collateralAmount.toString(), loan1.collateralAmount.toString()); + assert.equal(loan1Actual.repaymentAmount.toString(), loan1.repaymentAmount.toString()); assert.equal( "0x" + loan1Actual.borrower.toString(16).padStart(40, "0"), // leading 0s if address starts with 0 - loan1.borrower + loan1.borrower.toLowerCase() ); - assert.equal(loan1Actual.productId.toNumber(), product.id); - assert.equal(loan1Actual.state.toNumber(), loan1.state); - assert.equal(loan1Actual.isCollectable.toNumber(), 0); - assert.equal(loan1Actual.maturity.toNumber(), loan1.maturity); + assert.equal(loan1Actual.productId.toString(), product.id.toString()); + assert.equal(loan1Actual.state.toString(), loan1.state.toString()); + assert.equal(loan1Actual.isCollectable.toString(), "0"); + assert.equal(loan1Actual.maturity.toString(), loan1.maturity.toString()); assert.equal(loan1Actual.disbursementTime.toNumber(), loan1.maturity - product.term); assert.equal(loan1Actual.loanAmount.toNumber(), loan1.loanAmount); assert.equal(loan1Actual.interestAmount.toNumber(), loan1.interestAmount); @@ -308,19 +290,19 @@ contract("Loans tests", accounts => { assert.equal(loan2Actual.id.toNumber(), loan2.id); assert.equal( "0x" + loan2Actual.borrower.toString(16).padStart(40, "0"), // leading 0s if address starts with 0 - loan2.borrower + loan2.borrower.toLowerCase() ); assert.equal(loan2Actual.state.toNumber(), 0); // Open (defaulted but not yet collected) assert.equal(loan2Actual.isCollectable.toNumber(), 1); }); - it("Should list loans for one account from offset", async function() { + it("Should list loans for one account from offset", async function () { const product1 = products.repaying; const product2 = products.defaulting; const borrower = accounts[1]; - const loan1 = await loanTestHelpers.createLoan(this, product1, borrower, global.web3v1.utils.toWei("0.05")); - const loan2 = await loanTestHelpers.createLoan(this, product2, borrower, global.web3v1.utils.toWei("0.06")); + const loan1 = await loanTestHelpers.createLoan(this, product1, borrower, web3.utils.toWei("0.05")); + const loan2 = await loanTestHelpers.createLoan(this, product2, borrower, web3.utils.toWei("0.06")); const accountLoanCount = await loanManager.getLoanCountForAddress(borrower); await testHelpers.waitForTimeStamp(loan2.maturity); @@ -333,12 +315,12 @@ contract("Loans tests", accounts => { const loan1Actual = loanInfo[0]; - assert.equal(loan1Actual.id.toNumber(), loan1.id); - assert.equal(loan1Actual.collateralAmount.toNumber(), loan1.collateralAmount); - assert.equal(loan1Actual.repaymentAmount.toNumber(), loan1.repaymentAmount); + assert.equal(loan1Actual.id.toString(), loan1.id.toString()); + assert.equal(loan1Actual.collateralAmount.toString(), loan1.collateralAmount.toString()); + assert.equal(loan1Actual.repaymentAmount.toString(), loan1.repaymentAmount.toString()); assert.equal( "0x" + loan1Actual.borrower.toString(16).padStart(40, "0"), // leading 0s if address starts with 0 - loan1.borrower + loan1.borrower.toLowerCase() ); assert.equal(loan1Actual.productId.toNumber(), product1.id); assert.equal(loan1Actual.state.toNumber(), loan1.state); @@ -354,7 +336,7 @@ contract("Loans tests", accounts => { assert.equal(loan2Actual.isCollectable.toNumber(), 1); }); - it("should only allow whitelisted loan contract to be used", async function() { + it("should only allow whitelisted loan contract to be used", async function () { const craftedLender = await LoanManager.new( accounts[0], augmintToken.address, @@ -362,36 +344,36 @@ contract("Loans tests", accounts => { rates.address ); await Promise.all([ - await rates.setRate("EUR", 99800), - await craftedLender.grantPermission(accounts[0], "StabilityBoard") + await rates.setRate(EUR, 99800), + await craftedLender.grantPermission(accounts[0], web3.utils.asciiToHex("StabilityBoard")), ]); await craftedLender.addLoanProduct(100000, 1000000, 1000000, 1000, 50000, true, 0); // testing Lender not having "LoanManager" permission on monetarySupervisor: - await testHelpers.expectThrow(craftedLender.newEthBackedLoan(0, 0, { value: global.web3v1.utils.toWei("0.05") })); + await testHelpers.expectThrow(craftedLender.newEthBackedLoan(0, 0, { value: web3.utils.toWei("0.05") })); // grant permission to create new loan - await monetarySupervisor.grantPermission(craftedLender.address, "LoanManager"); - await craftedLender.newEthBackedLoan(0, 0, { value: global.web3v1.utils.toWei("0.05") }); + await monetarySupervisor.grantPermission(craftedLender.address, web3.utils.asciiToHex("LoanManager")); + await craftedLender.newEthBackedLoan(0, 0, { value: web3.utils.toWei("0.05") }); // revoke permission and try to repay - await monetarySupervisor.revokePermission(craftedLender.address, "LoanManager"), - await testHelpers.expectThrow( - augmintToken.transferAndNotify(craftedLender.address, 99800, 0, { - from: accounts[0] - }) - ); + await monetarySupervisor.revokePermission(craftedLender.address, web3.utils.asciiToHex("LoanManager")), + await testHelpers.expectThrow( + augmintToken.transferAndNotify(craftedLender.address, 99800, 0, { + from: accounts[0], + }) + ); }); - it("should only allow the token contract to call transferNotification", async function() { + it("should only allow the token contract to call transferNotification", async function () { await testHelpers.expectThrow(loanManager.transferNotification(accounts[0], 1000, 0, { from: accounts[0] })); }); - it("only allowed contract should call MonetarySupervisor.issueLoan", async function() { + it("only allowed contract should call MonetarySupervisor.issueLoan", async function () { await testHelpers.expectThrow(monetarySupervisor.issueLoan(accounts[0], 0, { from: accounts[0] })); }); - it("only allowed contract should call MonetarySupervisor.loanRepaymentNotification", async function() { + it("only allowed contract should call MonetarySupervisor.loanRepaymentNotification", async function () { await testHelpers.expectThrow(monetarySupervisor.loanRepaymentNotification(0, { from: accounts[0] })); }); @@ -405,63 +387,58 @@ contract("Loans tests", accounts => { // 120% => 3742.5 (token) => @ 74850 (token/eth) => marginCallRate: 74832 (due to internal rounding in contract) // 160% => 4990 (token) => @ 99800 (token/eth) - it("tests loan margin numbers", async function() { - await rates.setRate("EUR", 99800); - const loan = await loanTestHelpers.createLoan( - this, - products.margin, - accounts[1], - global.web3v1.utils.toWei("0.05") - ); + it("tests loan margin numbers", async function () { + await rates.setRate(EUR, 99800); + const loan = await loanTestHelpers.createLoan(this, products.margin, accounts[1], web3.utils.toWei("0.05")); // assert event has proper numbers - assert.equal(loan.collateralAmount.toNumber(), 5e16); // = 0.05 (eth) - assert.equal(loan.tokenValue.toNumber(), 4990); // = 99800 * 0.05 (token) - assert.equal(loan.repaymentAmount.toNumber(), 3118); // = 4990 / 1.6, round down (token) - assert.equal(loan.loanAmount.toNumber(), 3025); // = 3118 * 0.97, round up (token) - assert.equal(loan.interestAmount.toNumber(), 93); // = 3118 - 3025 (token) - assert.equal(loan.state, 0); // = "Open" + assert.equal(loan.collateralAmount.toString(), (5e16).toString()); // = 0.05 (eth) + assert.equal(loan.tokenValue.toNumber(), 4990); // = 99800 * 0.05 (token) + assert.equal(loan.repaymentAmount.toNumber(), 3118); // = 4990 / 1.6, round down (token) + assert.equal(loan.loanAmount.toNumber(), 3025); // = 3118 * 0.97, round up (token) + assert.equal(loan.interestAmount.toNumber(), 93); // = 3118 - 3025 (token) + assert.equal(loan.state, 0); // = "Open" assert.equal(loan.currentRate, 99800); // assert LoanData has proper numbers stored const loanInfo = loanTestHelpers.parseLoansInfo(await loanManager.getLoans(loan.id, 1)); - assert.equal(loanInfo[0].collateralAmount.toNumber(), 5e16); + assert.equal(loanInfo[0].collateralAmount.toString(), (5e16).toString()); assert.equal(loanInfo[0].repaymentAmount.toNumber(), 3118); assert.equal(loanInfo[0].state.toNumber(), 0); assert.equal(loanInfo[0].loanAmount.toNumber(), 3025); assert.equal(loanInfo[0].interestAmount.toNumber(), 93); - assert.equal(loanInfo[0].marginCallRate.toNumber(), 74832); // = 3118 * 1.2 / 0.05 (token/eth) - assert.equal(loanInfo[0].isCollectable.toNumber(), 0); // = false + assert.equal(loanInfo[0].marginCallRate.toNumber(), 74832); // = 3118 * 1.2 / 0.05 (token/eth) + assert.equal(loanInfo[0].isCollectable.toNumber(), 0); // = false // every number stays the same below margin, only isCollectable will be true - await rates.setRate("EUR", 72000); + await rates.setRate(EUR, 72000); const loanInfo2 = loanTestHelpers.parseLoansInfo(await loanManager.getLoans(loan.id, 1)); - assert.equal(loanInfo2[0].collateralAmount.toNumber(), 5e16); + assert.equal(loanInfo2[0].collateralAmount.toString(), (5e16).toString()); assert.equal(loanInfo2[0].repaymentAmount.toNumber(), 3118); assert.equal(loanInfo2[0].state.toNumber(), 0); assert.equal(loanInfo2[0].loanAmount.toNumber(), 3025); assert.equal(loanInfo2[0].interestAmount.toNumber(), 93); assert.equal(loanInfo2[0].marginCallRate.toNumber(), 74832); - assert.equal(loanInfo2[0].isCollectable.toNumber(), 1); // = true + assert.equal(loanInfo2[0].isCollectable.toNumber(), 1); // = true // add extra collateral to get above margin const tx = await loanManager.addExtraCollateral(loan.id, { from: accounts[1], - value: global.web3v1.utils.toWei("0.05") + value: web3.utils.toWei("0.05"), }); testHelpers.logGasUse(this, tx, "addExtraCollateral"); testHelpers.assertEvent(loanManager, "LoanChanged", { - loanId: loan.id, + loanId: loan.id.toString(), borrower: loan.borrower, - collateralAmount: global.web3v1.utils.toWei("0.1").toString(), + collateralAmount: web3.utils.toWei("0.1").toString(), repaymentAmount: loan.repaymentAmount.toString(), - currentRate: (await rates.rates("EUR"))[0].toString() + currentRate: (await rates.rates(EUR))[0].toString(), }); // collateralAmount should double up, marginCallRate get halved const loanInfo3 = loanTestHelpers.parseLoansInfo(await loanManager.getLoans(loan.id, 1)); - assert.equal(loanInfo3[0].collateralAmount.toNumber(), 2 * 5e16); + assert.equal(loanInfo3[0].collateralAmount.toString(), (2 * 5e16).toString()); assert.equal(loanInfo3[0].repaymentAmount.toNumber(), 3118); assert.equal(loanInfo3[0].state.toNumber(), 0); assert.equal(loanInfo3[0].loanAmount.toNumber(), 3025); diff --git a/test/locker.js b/test/locker.js index a5bddca1..17fe5a54 100644 --- a/test/locker.js +++ b/test/locker.js @@ -4,6 +4,8 @@ const tokenTestHelpers = require("./helpers/tokenTestHelpers.js"); const testHelpers = require("./helpers/testHelpers.js"); +const BN = web3.utils.BN; + const LOCK_MAX_GAS = 230000; const RELEASE_MAX_GAS = 80000; @@ -16,17 +18,16 @@ let CHUNK_SIZE = 10; const ltdParams = { lockDifferenceLimit: 300000, loanDifferenceLimit: 200000, allowedDifferenceAmount: 100000 }; -contract("Lock", accounts => { - before(async function() { +contract("Locker", (accounts) => { + before(async function () { tokenHolder = accounts[1]; - augmintToken = await tokenTestHelpers.augmintToken; + [augmintToken, lockerInstance] = await Promise.all([tokenTestHelpers.augmintToken, Locker.at(Locker.address)]); + monetarySupervisor = tokenTestHelpers.monetarySupervisor; interestEarnedAddress = tokenTestHelpers.interestEarnedAccount.address; - lockerInstance = Locker.at(Locker.address); - await Promise.all([ monetarySupervisor.setLtdParams( ltdParams.lockDifferenceLimit, @@ -34,11 +35,11 @@ contract("Lock", accounts => { ltdParams.allowedDifferenceAmount ), tokenTestHelpers.issueToken(accounts[0], tokenHolder, 40000), - tokenTestHelpers.issueToken(accounts[0], interestEarnedAddress, 10000) + tokenTestHelpers.issueToken(accounts[0], interestEarnedAddress, 10000), ]); }); - it("Verifies default test lockproduct interest rates", async function() { + it("Verifies default test lockproduct interest rates", async function () { // correlates with lock products set up in localTest_initialSetup.sol // IRPA: Interest Rate Per Annum : the percentage value on the UI @@ -47,33 +48,33 @@ contract("Lock", accounts => { // IRPA = (PTI / 1_000_000) * (365 / termInDays) // PTI = (IRPA * 1_000_000) * (termInDays / 365) - const toPti = (irpa, termInDays) => Math.ceil((irpa * 1000000) * (termInDays / 365)) + const toPti = (irpa, termInDays) => Math.ceil(irpa * 1000000 * (termInDays / 365)); const p = await lockerInstance.getLockProducts(0, CHUNK_SIZE); - assert.equal(p[0][0].toNumber(), toPti(0.12, 365)) - assert.equal(p[1][0].toNumber(), toPti(0.115, 180)) - assert.equal(p[2][0].toNumber(), toPti(0.11, 90)) - assert.equal(p[3][0].toNumber(), toPti(0.105, 60)) - assert.equal(p[4][0].toNumber(), toPti(0.10, 30)) - assert.equal(p[5][0].toNumber(), toPti(0.10, 14)) - assert.equal(p[6][0].toNumber(), toPti(0.10, 7)) + assert.equal(p[0][0].toNumber(), toPti(0.12, 365)); + assert.equal(p[1][0].toNumber(), toPti(0.115, 180)); + assert.equal(p[2][0].toNumber(), toPti(0.11, 90)); + assert.equal(p[3][0].toNumber(), toPti(0.105, 60)); + assert.equal(p[4][0].toNumber(), toPti(0.1, 30)); + assert.equal(p[5][0].toNumber(), toPti(0.1, 14)); + assert.equal(p[6][0].toNumber(), toPti(0.1, 7)); }); - it("should allow lock products to be created", async function() { + it("should allow lock products to be created", async function () { // create lock product with 5% per term, and 60 sec lock time: const tx = await lockerInstance.addLockProduct(50000, 60, 100, true); testHelpers.logGasUse(this, tx, "addLockProduct"); await testHelpers.assertEvent(lockerInstance, "NewLockProduct", { - lockProductId: x => x, - perTermInterest: 50000, - durationInSecs: 60, - minimumLockAmount: 100, - isActive: true + lockProductId: (x) => x, + perTermInterest: "50000", + durationInSecs: "60", + minimumLockAmount: "100", + isActive: true, }); }); - it("should allow the number of lock products to be queried", async function() { + it("should allow the number of lock products to be queried", async function () { const startingNumLocks = (await lockerInstance.getLockProductCount()).toNumber(); // create lock product with 5% per term, and 120 sec lock time: @@ -85,33 +86,27 @@ contract("Lock", accounts => { assert(startingNumLocks + 1 === endNumLocks); }); - it("should allow the getting of individual lock products", async function() { + it("should allow the getting of individual lock products", async function () { // create lock product with 8% per term, and 120 sec lock time: const tx = await lockerInstance.addLockProduct(80000, 120, 50, true); testHelpers.logGasUse(this, tx, "addLockProduct"); const numLocks = (await lockerInstance.getLockProductCount()).toNumber(); - const product = await lockerInstance.lockProducts(numLocks - 1); - - // each product should be a 4 element array - assert.isArray(product); - assert(product.length === 4); + const prod = await lockerInstance.lockProducts(numLocks - 1); - // the product should be [ perTermInterest, durationInSecs, minimumLockAmount, isActive ]: - const [perTermInterest, durationInSecs, minimumLockAmount, isActive] = product; - assert(perTermInterest.toNumber() === 80000); - assert(durationInSecs.toNumber() === 120); - assert(minimumLockAmount.toNumber() === 50); - assert(isActive === true); + assert.equal(prod.perTermInterest, "80000"); + assert.equal(prod.durationInSecs, "120"); + assert.equal(prod.minimumLockAmount, "50"); + assert(prod.isActive, "product should be in active state"); }); - it("should allow the listing of lock products (0 offset)", async function() { + it("should allow the listing of lock products (0 offset)", async function () { // create lock product with 10% per term, and 120 sec lock time: const tx = await lockerInstance.addLockProduct(100000, 120, 75, true); testHelpers.logGasUse(this, tx, "addLockProduct"); - const numLocks = await lockerInstance.getLockProductCount().then(res => res.toNumber()); + const numLocks = await lockerInstance.getLockProductCount().then((res) => res.toNumber()); const products = await lockerInstance.getLockProducts(0, numLocks); // getLockProducts should return a element array: @@ -124,8 +119,7 @@ contract("Lock", accounts => { assert.isArray(newestProduct); assert(newestProduct.length === 5); - // the products should be [ perTermInterest, durationInSecs, maxLockAmount, isActive ] all - // represented as uints (i.e. BigNumber objects in JS land): + // the products should be [ perTermInterest, durationInSecs, maxLockAmount, isActive ] const [perTermInterest, durationInSecs, minimumLockAmount, maxLockAmount, isActive] = newestProduct; assert(perTermInterest.toNumber() === 100000); assert(durationInSecs.toNumber() === 120); @@ -135,7 +129,7 @@ contract("Lock", accounts => { assert(isActive.toNumber() === 1); }); - it("should allow the listing of lock products (non-zero offset)", async function() { + it("should allow the listing of lock products (non-zero offset)", async function () { const offset = 1; const products = await lockerInstance.getLockProducts(offset, CHUNK_SIZE); @@ -147,39 +141,36 @@ contract("Lock", accounts => { // each product should be a 5 element array assert.isArray(product); - assert(product.length === 5); + assert.equal(product.length, 5, "number of products"); - const expectedProduct = await lockerInstance.lockProducts(offset); - const [ - expectedPerTermInterest, - expectedDurationInSecs, - expectedMinimumLockAmount, - expectedIsActive - ] = expectedProduct; - - // the products should be [ perTermInterest, durationInSecs, maxLockAmount, isActive ] all - // represented as uints (i.e. BigNumber objects in JS land): + // the products should be [ perTermInterest, durationInSecs, maxLockAmount, isActive ] const [perTermInterest, durationInSecs, minimumLockAmount, maxLockAmount, isActive] = product; - const expMaxLockAmount = await monetarySupervisor.getMaxLockAmount(minimumLockAmount, perTermInterest); - assert(perTermInterest.toNumber() === expectedPerTermInterest.toNumber()); - assert(durationInSecs.toNumber() === expectedDurationInSecs.toNumber()); - assert(minimumLockAmount.toNumber() === expectedMinimumLockAmount.toNumber()); - assert.equal(maxLockAmount.toString(), expMaxLockAmount.toString()); - assert(!!isActive.toNumber() === expectedIsActive); + const expProd = await lockerInstance.lockProducts(offset); + + const expMaxLockAmount = await monetarySupervisor.getMaxLockAmount( + expProd.minimumLockAmount, + expProd.perTermInterest + ); + + assert.equal(perTermInterest.toString(), expProd.perTermInterest.toString(), "perTermInterest"); + assert.equal(durationInSecs.toString(), expProd.durationInSecs.toString(), "durationInSecs"); + assert.equal(minimumLockAmount.toString(), expProd.minimumLockAmount.toString(), "minimumLockAmount"); + assert.equal(maxLockAmount.toString(), expMaxLockAmount.toString(), "maxLockAmount"); + assert.equal(isActive, expProd.isActive, "isActive"); }); it("should allow the listing of lock products when there are more than CHUNK_SIZE products"); - it("should allow lock products to be enabled/disabled", async function() { + it("should allow lock products to be enabled/disabled", async function () { const lockProductId = 0; const tx = await lockerInstance.setLockProductActiveState(lockProductId, false); testHelpers.logGasUse(this, tx, "setLockProductActiveState"); await testHelpers.assertEvent(lockerInstance, "LockProductActiveChange", { - lockProductId: lockProductId, - newActiveState: false + lockProductId: lockProductId.toString(), + newActiveState: false, }); let product = await lockerInstance.lockProducts(lockProductId); @@ -189,8 +180,8 @@ contract("Lock", accounts => { await lockerInstance.setLockProductActiveState(lockProductId, true); await testHelpers.assertEvent(lockerInstance, "LockProductActiveChange", { - lockProductId: lockProductId, - newActiveState: true + lockProductId: lockProductId.toString(), + newActiveState: true, }); product = await lockerInstance.lockProducts(lockProductId); @@ -198,14 +189,15 @@ contract("Lock", accounts => { assert(product[3] === true); }); - it("should allow tokens to be locked", async function() { - const [startingBalances, totalLockAmountBefore] = await Promise.all([ + it("should allow tokens to be locked", async function () { + const [startingBalances, totalLockAmountBefore, expectedLockId] = await Promise.all([ tokenTestHelpers.getAllBalances({ tokenHolder: tokenHolder, lockerInstance: lockerInstance.address, - interestEarned: interestEarnedAddress + interestEarned: interestEarnedAddress, }), - monetarySupervisor.totalLockedAmount() + monetarySupervisor.totalLockedAmount(), + lockerInstance.getLockCount(), ]); const amountToLock = 1000; @@ -213,8 +205,8 @@ contract("Lock", accounts => { const [product, lockingTransaction] = await Promise.all([ lockerInstance.lockProducts(0), augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { - from: tokenHolder - }) + from: tokenHolder, + }), ]); testHelpers.logGasUse(this, lockingTransaction, "transferAndNotify - lockFunds"); @@ -223,7 +215,7 @@ contract("Lock", accounts => { const interestEarned = Math.ceil((amountToLock * perTermInterest) / 1000000); // need the block to get the timestamp to check lockedUntil in NewLock event: - const block = await global.web3v1.eth.getBlock(lockingTransaction.receipt.blockHash); + const block = await web3.eth.getBlock(lockingTransaction.receipt.blockHash); const expectedLockedUntil = block.timestamp + durationInSecs; // sanity check: assert(expectedLockedUntil > Math.floor(Date.now() / 1000)); @@ -233,12 +225,12 @@ contract("Lock", accounts => { testHelpers.assertEvent(lockerInstance, "NewLock", { lockOwner: tokenHolder, - lockId: 0, - amountLocked: amountToLock, - interestEarned: interestEarned, - lockedUntil: expectedLockedUntil, - perTermInterest: perTermInterest, - durationInSecs: durationInSecs + lockId: expectedLockId.toString(), + amountLocked: amountToLock.toString(), + interestEarned: interestEarned.toString(), + lockedUntil: expectedLockedUntil.toString(), + perTermInterest: perTermInterest.toString(), + durationInSecs: durationInSecs.toString(), }), // TODO: events are emitted but can't retrieve them @@ -258,37 +250,37 @@ contract("Lock", accounts => { tokenTestHelpers.assertBalances(startingBalances, { tokenHolder: { - ace: startingBalances.tokenHolder.ace.sub(amountToLock), - gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE + ace: startingBalances.tokenHolder.ace.sub(new BN(amountToLock)), + gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE, }, - lockerInstance: { ace: startingBalances.lockerInstance.ace.add(amountToLock + interestEarned) }, - interestEarned: { ace: startingBalances.interestEarned.ace.sub(interestEarned) } - }) + lockerInstance: { ace: startingBalances.lockerInstance.ace.add(new BN(amountToLock + interestEarned)) }, + interestEarned: { ace: startingBalances.interestEarned.ace.sub(new BN(interestEarned)) }, + }), ]); assert.equal( totalLockAmountAfter.toString(), - totalLockAmountBefore.add(amountToLock).toString(), + totalLockAmountBefore.add(new BN(amountToLock)).toString(), "totalLockedAmount should be increased by locked amount " ); }); - it("should not allow to lock with an inactive lockproduct", async function() { + it("should not allow to lock with an inactive lockproduct", async function () { await lockerInstance.addLockProduct(50000, 60, 100, false); const newLockProductId = (await lockerInstance.getLockProductCount()) - 1; await testHelpers.expectThrow( augmintToken.transferAndNotify(lockerInstance.address, 10000, newLockProductId, { - from: tokenHolder + from: tokenHolder, }) ); }); - it("should allow an account to see how many locks it has", async function() { + it("should allow an account to see how many locks it has", async function () { const startingNumLocks = (await lockerInstance.getLockCountForAddress(tokenHolder)).toNumber(); const amountToLock = 1000; await augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { - from: tokenHolder + from: tokenHolder, }); const finishingNumLocks = (await lockerInstance.getLockCountForAddress(tokenHolder)).toNumber(); @@ -296,15 +288,15 @@ contract("Lock", accounts => { assert(finishingNumLocks === startingNumLocks + 1); }); - it("should allow tokens to be unlocked", async function() { + it("should allow tokens to be unlocked", async function () { const [startingBalances, addProdTx] = await Promise.all([ tokenTestHelpers.getAllBalances({ tokenHolder: tokenHolder, lockerInstance: lockerInstance.address, - interestEarned: interestEarnedAddress + interestEarned: interestEarnedAddress, }), // create lock product with 10% per term, and 1 sec lock time: - lockerInstance.addLockProduct(100000, 1, 0, true) + lockerInstance.addLockProduct(100000, 1, 0, true), ]); testHelpers.logGasUse(this, addProdTx, "addLockProduct"); @@ -313,13 +305,13 @@ contract("Lock", accounts => { const newLockProductId = (await lockerInstance.getLockProductCount()) - 1; const lockTx = await augmintToken.transferAndNotify(lockerInstance.address, amountToLock, newLockProductId, { - from: tokenHolder + from: tokenHolder, }); testHelpers.logGasUse(this, lockTx, "transferAndNotify - lockFunds"); const [totalLockAmountBefore, newestLockId] = await Promise.all([ monetarySupervisor.totalLockedAmount(), - lockerInstance.getLockCount().then(res => res - 1) + lockerInstance.getLockCount().then((res) => res - 1), ]); const lockedUntil = (await lockerInstance.locks(newestLockId))[3].toNumber(); @@ -333,53 +325,53 @@ contract("Lock", accounts => { tokenTestHelpers.assertBalances(startingBalances, { tokenHolder: { - ace: startingBalances.tokenHolder.ace.add(interestEarned), - gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE + RELEASE_MAX_GAS * testHelpers.GAS_PRICE + ace: startingBalances.tokenHolder.ace.add(new BN(interestEarned)), + gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE + RELEASE_MAX_GAS * testHelpers.GAS_PRICE, }, lockerInstance: { ace: startingBalances.lockerInstance.ace }, - interestEarned: { ace: startingBalances.interestEarned.ace.sub(interestEarned) } + interestEarned: { ace: startingBalances.interestEarned.ace.sub(new BN(interestEarned)) }, }), testHelpers.assertEvent(lockerInstance, "LockReleased", { lockOwner: tokenHolder, - lockId: newestLockId + lockId: newestLockId.toString(), }), testHelpers.assertEvent(augmintToken, "AugmintTransfer", { from: lockerInstance.address, to: tokenHolder, - amount: amountToLock + interestEarned, - fee: 0, - narrative: "Funds released from lock" + amount: (amountToLock + interestEarned).toString(), + fee: "0", + narrative: "Funds released from lock", }), testHelpers.assertEvent(augmintToken, "Transfer", { from: lockerInstance.address, to: tokenHolder, - amount: amountToLock + interestEarned - }) + amount: (amountToLock + interestEarned).toString(), + }), ]); assert.equal( totalLockAmountAfter.toString(), - totalLockAmountBefore.sub(amountToLock).toString(), + totalLockAmountBefore.sub(new BN(amountToLock)).toString(), "totalLockedAmount should be the decrased by released amount (w/o interest) after release " ); }); - it("should allow an account to see it's individual locks", async function() { + it("should allow an account to see it's individual locks", async function () { const amountToLock = 1000; // lock funds, and get the product that was used: const [product, lockingTransaction] = await Promise.all([ lockerInstance.lockProducts(0), - augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { from: tokenHolder }) + augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { from: tokenHolder }), ]); const expectedDurationInSecs = product[1].toNumber(); // need the block to get the timestamp to check lockedUntil in NewLock event: - const block = await global.web3v1.eth.getBlock(lockingTransaction.receipt.blockHash); + const block = await web3.eth.getBlock(lockingTransaction.receipt.blockHash); const expectedLockedUntil = block.timestamp + expectedDurationInSecs; // sanity check: assert(expectedLockedUntil > Math.floor(Date.now() / 1000)); @@ -387,28 +379,23 @@ contract("Lock", accounts => { const numLocks = (await lockerInstance.getLockCountForAddress(tokenHolder)).toNumber(); const newestLock = await lockerInstance.locks(numLocks - 1); - // each lock should be a 5 element array - assert.isArray(newestLock); - assert.equal(newestLock.length, 5); - // the locks should be [ amountLocked, owner, interestEarned, lockedUntil, perTermInterest, durationInSecs, isActive ] - const [amountLocked, owner, productId, lockedUntil, isActive] = newestLock; - assert(owner === tokenHolder); - assert(amountLocked.toNumber() === amountToLock); - assert(productId.toNumber() === 0); - assert(lockedUntil.toNumber() === expectedLockedUntil); - assert(isActive === true); + assert.equal(newestLock.owner, tokenHolder, "owner"); + assert.equal(newestLock.amountLocked, amountToLock.toString(), "amountLocked"); + assert.equal(newestLock.productId, "0", "productId"); + assert.equal(newestLock.lockedUntil, expectedLockedUntil.toString(), "lockedUntil"); + assert(newestLock.isActive, "isActive"); }); it("should allow to list all locks (0 offset)"); - it("should allow to list all locks (non-zero offset)", async function() { + it("should allow to list all locks (non-zero offset)", async function () { const amountToLock = 1000; const [product, lockingTransaction, ,] = await Promise.all([ lockerInstance.lockProducts(0), augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { from: tokenHolder }), augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { from: tokenHolder }), - augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { from: tokenHolder }) + augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { from: tokenHolder }), ]); const expectedPerTermInterest = product[0].toNumber(); @@ -416,7 +403,7 @@ contract("Lock", accounts => { const expectedInterestEarned = Math.ceil((amountToLock * expectedPerTermInterest) / 1000000); // need the block to get the timestamp to check lockedUntil in NewLock event: - const block = await global.web3v1.eth.getBlock(lockingTransaction.receipt.blockHash); + const block = await web3.eth.getBlock(lockingTransaction.receipt.blockHash); const expectedLockedUntil = block.timestamp + expectedDurationInSecs; // sanity check: assert(expectedLockedUntil > Math.floor(Date.now() / 1000)); @@ -441,19 +428,19 @@ contract("Lock", accounts => { lockedUntil, perTermInterest, durationInSecs, - isActive + isActive, ] = lock2; assert.equal(lockId.toNumber(), lockId2); assert.equal( "0x" + owner.toString(16).padStart(40, "0"), // leading 0s if address starts with 0 - tokenHolder + tokenHolder.toLowerCase() ); - assert.equal(amountLocked.toNumber(), amountToLock); - assert.equal(interestEarned.toNumber(), expectedInterestEarned); - assert.isAtLeast(lockedUntil.toNumber(), expectedLockedUntil); - assert.equal(perTermInterest.toNumber(), expectedPerTermInterest); - assert.equal(durationInSecs.toNumber(), expectedDurationInSecs); - assert.equal(isActive.toNumber(), 1); + assert.equal(amountLocked.toNumber(), amountToLock, "amountLocked"); + assert.equal(interestEarned.toNumber(), expectedInterestEarned, "interestEarned"); + assert.isAtLeast(lockedUntil.toNumber(), expectedLockedUntil, "lockedUntil"); + assert.equal(perTermInterest.toNumber(), expectedPerTermInterest, "perTermInterest"); + assert.equal(durationInSecs.toNumber(), expectedDurationInSecs, "durationInSecs"); + assert(isActive, "isActive"); const lock3 = locks[1]; assert.equal(lock3[0].toNumber(), lockId3); @@ -461,7 +448,7 @@ contract("Lock", accounts => { it("should allow to list all locks when it has more than CHUNK_SIZE locks"); - it("should allow to list an account's locks (0 offset)", async function() { + it("should allow to list an account's locks (0 offset)", async function () { // NB: this test assumes that tokenHolder has less than CHUNK_SIZE locks (when checking newestLock) const amountToLock = 1000; @@ -469,7 +456,7 @@ contract("Lock", accounts => { // lock funds, and get the product that was used: const [product, lockingTransaction] = await Promise.all([ lockerInstance.lockProducts(0), - augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { from: tokenHolder }) + augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { from: tokenHolder }), ]); const expectedPerTermInterest = product[0].toNumber(); @@ -477,7 +464,7 @@ contract("Lock", accounts => { const expectedInterestEarned = Math.ceil((amountToLock * expectedPerTermInterest) / 1000000); // need the block to get the timestamp to check lockedUntil in NewLock event: - const block = await global.web3v1.eth.getBlock(lockingTransaction.receipt.blockHash); + const block = await web3.eth.getBlock(lockingTransaction.receipt.blockHash); const expectedLockedUntil = block.timestamp + expectedDurationInSecs; // sanity check: assert(expectedLockedUntil > Math.floor(Date.now() / 1000)); @@ -503,7 +490,7 @@ contract("Lock", accounts => { lockedUntil, perTermInterest, durationInSecs, - isActive + isActive, ] = newestLock; assert(lockId.toNumber() === expectedLockId); assert(amountLocked.toNumber() === amountToLock); @@ -514,13 +501,13 @@ contract("Lock", accounts => { assert(isActive.toNumber() === 1); }); - it("should allow to list an account's locks (non-zero offset)", async function() { + it("should allow to list an account's locks (non-zero offset)", async function () { const amountToLock = 1000; // lock funds, and get the product that was used: const [product] = await Promise.all([ lockerInstance.lockProducts(0), - augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { from: tokenHolder }) + augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { from: tokenHolder }), ]); const expectedPerTermInterest = product[0].toNumber(); @@ -532,49 +519,43 @@ contract("Lock", accounts => { const accountLocks = await lockerInstance.getLocksForAddress(tokenHolder, expectedAccountLockIndex, CHUNK_SIZE); assert.isArray(accountLocks); - assert(accountLocks.length <= CHUNK_SIZE); + assert(accountLocks.length <= CHUNK_SIZE, "number of owner's locks returned"); const lock = accountLocks[0]; // each lock should be a 7 element array assert.isArray(lock); - assert(lock.length === 7); + assert.equal(lock.length, 7, "locks array length"); const expectedLockId = (await lockerInstance.getLockCount()) - 1; const expectedLock = await lockerInstance.locks(expectedLockId); - const [ - expectedAmountLocked, - expectedOwner, - expectedProductId, - expectedLockedUntil, - expectedIsActive - ] = expectedLock; // the locks should be [ owner, amountLocked, interestEarned, lockedUntil, perTermInterest, durationInSecs, isActive ] const [lockId, amountLocked, interestEarned, lockedUntil, perTermInterest, durationInSecs, isActive] = lock; - assert(lockId.toNumber() === expectedLockId); - assert(expectedOwner === tokenHolder); - assert(expectedProductId.toNumber() === 0); - assert(amountLocked.toNumber() === expectedAmountLocked.toNumber()); - assert(interestEarned.toNumber() === expectedInterestEarned); - assert(lockedUntil.toNumber() === expectedLockedUntil.toNumber()); - assert(perTermInterest.toNumber() === expectedPerTermInterest); - assert(durationInSecs.toNumber() === expectedDurationInSecs); - assert(!!isActive.toNumber() === expectedIsActive); + + assert.equal(lockId.toNumber(), expectedLockId, "lockId"); + assert.equal(expectedLock.owner, tokenHolder, "owner"); + assert.equal(expectedLock.productId.toNumber(), 0, "productId"); + assert.equal(amountLocked.toNumber(), expectedLock.amountLocked.toNumber(), "amountLocked"); + assert.equal(interestEarned.toNumber(), expectedInterestEarned, "interestEarned"); + assert.equal(lockedUntil.toNumber(), expectedLock.lockedUntil.toNumber(), "lockedUntil"); + assert.equal(perTermInterest.toNumber(), expectedPerTermInterest, "perTermInterest"); + assert.equal(durationInSecs.toNumber(), expectedDurationInSecs, "durationInSecs"); + assert.equal(isActive, expectedLock.isActive, "isActive"); }); it("should allow to list an account's locks when it has more than CHUNK_SIZE locks"); - it("should prevent someone from locking more tokens than they have", async function() { + it("should prevent someone from locking more tokens than they have", async function () { const [startingBalances, totalLockAmountBefore, startingNumLocks] = await Promise.all([ tokenTestHelpers.getAllBalances({ tokenHolder: tokenHolder, lockerInstance: lockerInstance.address, - interestEarned: interestEarnedAddress + interestEarned: interestEarnedAddress, }), monetarySupervisor.totalLockedAmount(), - lockerInstance.getLockCountForAddress(tokenHolder) + lockerInstance.getLockCountForAddress(tokenHolder), ]); const amountToLock = startingBalances.tokenHolder.ace + 1000; @@ -590,8 +571,8 @@ contract("Lock", accounts => { tokenTestHelpers.assertBalances(startingBalances, { tokenHolder: { ace: startingBalances.tokenHolder.ace, gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE }, lockerInstance: { ace: startingBalances.lockerInstance.ace }, - interestEarned: { ace: startingBalances.interestEarned.ace } - }) + interestEarned: { ace: startingBalances.interestEarned.ace }, + }), ]); assert.equal( @@ -603,7 +584,7 @@ contract("Lock", accounts => { assert.equal(finishingNumLocks.toNumber(), startingNumLocks.toNumber(), "number of locks shouldn't change"); }); - it("should prevent someone from depleting the interestEarnedAccount via locking", async function() { + it("should prevent someone from depleting the interestEarnedAccount via locking", async function () { // create lock product with 100% per term interest: await lockerInstance.addLockProduct(1000000, 120, 0, true); const newLockProductId = (await lockerInstance.getLockProductCount()).toNumber() - 1; @@ -612,13 +593,13 @@ contract("Lock", accounts => { tokenTestHelpers.getAllBalances({ tokenHolder: tokenHolder, lockerInstance: lockerInstance.address, - interestEarned: interestEarnedAddress + interestEarned: interestEarnedAddress, }), monetarySupervisor.totalLockedAmount(), - lockerInstance.getLockCountForAddress(tokenHolder) + lockerInstance.getLockCountForAddress(tokenHolder), ]); - const amountToLock = startingBalances.interestEarned.ace.add(1); + const amountToLock = startingBalances.interestEarned.ace.add(new BN(1)); // this is less a test for the code, a more a sanity check for the test // (so that the lockFunds doesn't fail due to tokenHolder having insufficient funds): @@ -627,7 +608,7 @@ contract("Lock", accounts => { await testHelpers.expectThrow( augmintToken.transferAndNotify(lockerInstance.address, amountToLock, newLockProductId, { - from: tokenHolder + from: tokenHolder, }) ); await testHelpers.assertNoEvents(lockerInstance, "NewLock"); @@ -638,8 +619,8 @@ contract("Lock", accounts => { tokenTestHelpers.assertBalances(startingBalances, { tokenHolder: { ace: startingBalances.tokenHolder.ace, gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE }, lockerInstance: { ace: startingBalances.lockerInstance.ace }, - interestEarned: { ace: startingBalances.interestEarned.ace } - }) + interestEarned: { ace: startingBalances.interestEarned.ace }, + }), ]); assert.equal( @@ -651,7 +632,7 @@ contract("Lock", accounts => { assert.equal(finishingNumLocks.toNumber(), startingNumLocks.toNumber(), "number of locks shouldn't change"); }); - it("should prevent someone from locking less than the minimumLockAmount", async function() { + it("should prevent someone from locking less than the minimumLockAmount", async function () { const minimumLockAmount = 1000; // create lock product with token minimum: @@ -662,20 +643,20 @@ contract("Lock", accounts => { // can't lock less than the minimumLockAmount: await testHelpers.expectThrow( augmintToken.transferAndNotify(lockerInstance.address, minimumLockAmount - 1, newLockProductId, { - from: tokenHolder + from: tokenHolder, }) ); }); - it("should allow someone to lock exactly the minimum", async function() { + it("should allow someone to lock exactly the minimum", async function () { const [startingBalances, totalLockAmountBefore, startingNumLocks] = await Promise.all([ tokenTestHelpers.getAllBalances({ tokenHolder: tokenHolder, lockerInstance: lockerInstance.address, - interestEarned: interestEarnedAddress + interestEarned: interestEarnedAddress, }), monetarySupervisor.totalLockedAmount(), - lockerInstance.getLockCountForAddress(tokenHolder) + lockerInstance.getLockCountForAddress(tokenHolder), ]); const minimumLockAmount = 1000; @@ -685,7 +666,7 @@ contract("Lock", accounts => { const newLockProductId = (await lockerInstance.getLockProductCount()).toNumber() - 1; const tx = await augmintToken.transferAndNotify(lockerInstance.address, minimumLockAmount, newLockProductId, { - from: tokenHolder + from: tokenHolder, }); testHelpers.logGasUse(this, tx, "transferAndNotify - lockFunds"); @@ -693,12 +674,12 @@ contract("Lock", accounts => { const eventResults = await testHelpers.assertEvent(lockerInstance, "NewLock", { lockOwner: tokenHolder, - lockId: expectedLockId, - amountLocked: minimumLockAmount, - interestEarned: x => x, - lockedUntil: x => x, - perTermInterest: x => x, - durationInSecs: x => x + lockId: expectedLockId.toString(), + amountLocked: minimumLockAmount.toString(), + interestEarned: (x) => x, + lockedUntil: (x) => x, + perTermInterest: (x) => x, + durationInSecs: (x) => x, }); const [totalLockAmountAfter, finishingNumLocks] = await Promise.all([ @@ -708,34 +689,36 @@ contract("Lock", accounts => { tokenTestHelpers.assertBalances(startingBalances, { tokenHolder: { - ace: startingBalances.tokenHolder.ace.sub(minimumLockAmount), - gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE + ace: startingBalances.tokenHolder.ace.sub(new BN(minimumLockAmount)), + gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE, }, lockerInstance: { - ace: startingBalances.lockerInstance.ace.add(minimumLockAmount).add(eventResults.interestEarned) + ace: startingBalances.lockerInstance.ace + .add(new BN(minimumLockAmount)) + .add(new BN(eventResults.interestEarned)), }, - interestEarned: { ace: startingBalances.interestEarned.ace.sub(eventResults.interestEarned) } - }) + interestEarned: { ace: startingBalances.interestEarned.ace.sub(new BN(eventResults.interestEarned)) }, + }), ]); assert.equal( totalLockAmountAfter.toString(), - totalLockAmountBefore.add(minimumLockAmount).toString(), + totalLockAmountBefore.add(new BN(minimumLockAmount)).toString(), "totalLockedAmount should be increased by locked amount " ); assert.equal(finishingNumLocks.toNumber(), startingNumLocks.toNumber() + 1, "number of locks should be +1"); }); - it("should prevent someone from releasing a lock early", async function() { + it("should prevent someone from releasing a lock early", async function () { const amountToLock = 1000; const [startingBalances, totalLockAmountBefore] = await Promise.all([ tokenTestHelpers.getAllBalances({ tokenHolder: tokenHolder, lockerInstance: lockerInstance.address, - interestEarned: interestEarnedAddress + interestEarned: interestEarnedAddress, }), - monetarySupervisor.totalLockedAmount() + monetarySupervisor.totalLockedAmount(), ]); // lock funds, and get the product that was used: @@ -743,8 +726,8 @@ contract("Lock", accounts => { lockerInstance.lockProducts(0), augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { - from: tokenHolder - }) + from: tokenHolder, + }), ]); testHelpers.logGasUse(this, lockFundsTx, "transferAndNotify - lockFunds"); @@ -762,30 +745,30 @@ contract("Lock", accounts => { tokenTestHelpers.assertBalances(startingBalances, { tokenHolder: { - ace: startingBalances.tokenHolder.ace.sub(amountToLock), - gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE + ace: startingBalances.tokenHolder.ace.sub(new BN(amountToLock)), + gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE, }, - lockerInstance: { ace: startingBalances.lockerInstance.ace.add(amountToLock + interestEarned) }, - interestEarned: { ace: startingBalances.interestEarned.ace.sub(interestEarned) } - }) + lockerInstance: { ace: startingBalances.lockerInstance.ace.add(new BN(amountToLock + interestEarned)) }, + interestEarned: { ace: startingBalances.interestEarned.ace.sub(new BN(interestEarned)) }, + }), ]); assert.equal( totalLockAmountAfter.toString(), - totalLockAmountBefore.add(amountToLock).toString(), + totalLockAmountBefore.add(new BN(amountToLock)).toString(), "totalLockedAmount should be increased by locked amount " ); }); - it("should prevent someone from unlocking an unlocked lock", async function() { + it("should prevent someone from unlocking an unlocked lock", async function () { const [startingBalances, totalLockAmountBefore, startingNumLocks] = await Promise.all([ tokenTestHelpers.getAllBalances({ tokenHolder: tokenHolder, lockerInstance: lockerInstance.address, - interestEarned: interestEarnedAddress + interestEarned: interestEarnedAddress, }), monetarySupervisor.totalLockedAmount(), - lockerInstance.getLockCountForAddress(tokenHolder) + lockerInstance.getLockCountForAddress(tokenHolder), ]); const amountToLock = 1000; @@ -800,7 +783,7 @@ contract("Lock", accounts => { amountToLock, newLockProductId, { - from: tokenHolder + from: tokenHolder, } ); testHelpers.logGasUse(this, lockFundsTx, "transferAndNotify - lockFunds"); @@ -822,14 +805,14 @@ contract("Lock", accounts => { tokenTestHelpers.assertBalances(startingBalances, { tokenHolder: { - ace: startingBalances.tokenHolder.ace.add(interestEarned), - gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE + RELEASE_MAX_GAS * testHelpers.GAS_PRICE + ace: startingBalances.tokenHolder.ace.add(new BN(interestEarned)), + gasFee: LOCK_MAX_GAS * testHelpers.GAS_PRICE + RELEASE_MAX_GAS * testHelpers.GAS_PRICE, }, lockerInstance: { - ace: startingBalances.lockerInstance.ace + ace: startingBalances.lockerInstance.ace, }, - interestEarned: { ace: startingBalances.interestEarned.ace.sub(interestEarned) } - }) + interestEarned: { ace: startingBalances.interestEarned.ace.sub(new BN(interestEarned)) }, + }), ]); assert.equal( @@ -845,53 +828,53 @@ contract("Lock", accounts => { ); }); - it("should only allow whitelisted lock contract to be used", async function() { + it("should only allow whitelisted lock contract to be used", async function () { const craftedLocker = await Locker.new(accounts[0], augmintToken.address, monetarySupervisor.address); - await craftedLocker.grantPermission(accounts[0], "StabilityBoard"); + await craftedLocker.grantPermission(accounts[0], web3.utils.asciiToHex("StabilityBoard")); await craftedLocker.addLockProduct(1000000, 120, 0, true); const newLockProductId = (await craftedLocker.getLockProductCount()).toNumber() - 1; await testHelpers.expectThrow( augmintToken.transferAndNotify(craftedLocker.address, 10000, newLockProductId, { - from: tokenHolder + from: tokenHolder, }) ); }); - it("should only allow the token contract to call transferNotification", async function() { + it("should only allow the token contract to call transferNotification", async function () { await testHelpers.expectThrow(lockerInstance.transferNotification(accounts[0], 1000, 0, { from: accounts[0] })); }); - it("only allowed contract should call requestInterest ", async function() { + it("only allowed contract should call requestInterest ", async function () { const interestAmount = 100; // make sure it's not reverting b/c not enough interest assert((await augmintToken.balanceOf(interestEarnedAddress)).gte(interestAmount)); await testHelpers.expectThrow(monetarySupervisor.requestInterest(1000, interestAmount, { from: accounts[0] })); }); - it("only allowed contract should call releaseFundsNotification ", async function() { + it("only allowed contract should call releaseFundsNotification ", async function () { const amountToLock = 10000; const lockFundsTx = await augmintToken.transferAndNotify(lockerInstance.address, amountToLock, 0, { - from: tokenHolder + from: tokenHolder, }); testHelpers.logGasUse(this, lockFundsTx, "transferAndNotify - lockFunds"); await testHelpers.expectThrow(monetarySupervisor.releaseFundsNotification(amountToLock, { from: accounts[0] })); }); - it("Should allow to change monetarySupervisor contract", async function() { + it("Should allow to change monetarySupervisor contract", async function () { const newMonetarySupervisor = monetarySupervisor.address; const tx = await lockerInstance.setMonetarySupervisor(newMonetarySupervisor); testHelpers.logGasUse(this, tx, "setSystemContracts"); const [actualMonetarySupervisor] = await Promise.all([ lockerInstance.monetarySupervisor(), - testHelpers.assertEvent(lockerInstance, "MonetarySupervisorChanged", { newMonetarySupervisor }) + testHelpers.assertEvent(lockerInstance, "MonetarySupervisorChanged", { newMonetarySupervisor }), ]); assert.equal(actualMonetarySupervisor, newMonetarySupervisor); }); - it("Only allowed should change rates and monetarySupervisor contracts", async function() { + it("Only allowed should change rates and monetarySupervisor contracts", async function () { const newMonetarySupervisor = monetarySupervisor.address; await testHelpers.expectThrow( lockerInstance.setMonetarySupervisor(newMonetarySupervisor, { from: accounts[1] }) diff --git a/test/monetarySupervisor.js b/test/monetarySupervisor.js index 9d61ef5a..b366c4cf 100644 --- a/test/monetarySupervisor.js +++ b/test/monetarySupervisor.js @@ -1,24 +1,31 @@ const tokenTestHelpers = require("./helpers/tokenTestHelpers.js"); const testHelpers = require("./helpers/testHelpers.js"); +const BN = web3.utils.BN; + let augmintToken = null; let monetarySupervisor = null; let augmintReserves = null; -contract("MonetarySupervisor tests", accounts => { +contract("MonetarySupervisor tests", (accounts) => { before(async () => { augmintToken = tokenTestHelpers.augmintToken; monetarySupervisor = tokenTestHelpers.monetarySupervisor; augmintReserves = tokenTestHelpers.augmintReserves; }); - it("should be possible to issue new tokens to reserve", async function() { - const amount = 100000; - const [totalSupplyBefore, reserveBalBefore, issuedByStabilityBoardBefore, burnedByStabilityBoardBefore] = await Promise.all([ + it("should be possible to issue new tokens to reserve", async function () { + const amount = new BN(100000); + const [ + totalSupplyBefore, + reserveBalBefore, + issuedByStabilityBoardBefore, + burnedByStabilityBoardBefore, + ] = await Promise.all([ augmintToken.totalSupply(), augmintToken.balanceOf(augmintReserves.address), monetarySupervisor.issuedByStabilityBoard(), - monetarySupervisor.burnedByStabilityBoard() + monetarySupervisor.burnedByStabilityBoard(), ]); const tx = await monetarySupervisor.issueToReserve(amount); @@ -27,14 +34,14 @@ contract("MonetarySupervisor tests", accounts => { await testHelpers.assertEvent(augmintToken, "Transfer", { from: testHelpers.NULL_ACC, to: augmintReserves.address, - amount: amount + amount: amount.toString(), }); const [totalSupply, reserveBal, issuedByStabilityBoard, burnedByStabilityBoard] = await Promise.all([ augmintToken.totalSupply(), augmintToken.balanceOf(augmintReserves.address), monetarySupervisor.issuedByStabilityBoard(), - monetarySupervisor.burnedByStabilityBoard() + monetarySupervisor.burnedByStabilityBoard(), ]); assert.equal( @@ -59,18 +66,23 @@ contract("MonetarySupervisor tests", accounts => { ); }); - it("only allowed should issue tokens", async function() { + it("only allowed should issue tokens", async function () { await testHelpers.expectThrow(monetarySupervisor.issueToReserve(1000, { from: accounts[1] })); }); - it("should be possible to burn tokens from reserve", async function() { - const amount = 9000000; + it("should be possible to burn tokens from reserve", async function () { + const amount = new BN(9000000); await monetarySupervisor.issueToReserve(amount); - const [totalSupplyBefore, reserveBalBefore, issuedByStabilityBoardBefore, burnedByStabilityBoardBefore] = await Promise.all([ + const [ + totalSupplyBefore, + reserveBalBefore, + issuedByStabilityBoardBefore, + burnedByStabilityBoardBefore, + ] = await Promise.all([ augmintToken.totalSupply(), augmintToken.balanceOf(augmintReserves.address), monetarySupervisor.issuedByStabilityBoard(), - monetarySupervisor.burnedByStabilityBoard() + monetarySupervisor.burnedByStabilityBoard(), ]); const tx = await monetarySupervisor.burnFromReserve(amount, { from: accounts[0] }); @@ -79,14 +91,14 @@ contract("MonetarySupervisor tests", accounts => { await testHelpers.assertEvent(augmintToken, "Transfer", { from: augmintReserves.address, to: testHelpers.NULL_ACC, - amount: amount + amount: amount.toString(), }); const [totalSupply, reserveBal, issuedByStabilityBoard, burnedByStabilityBoard] = await Promise.all([ augmintToken.totalSupply(), augmintToken.balanceOf(augmintReserves.address), monetarySupervisor.issuedByStabilityBoard(), - monetarySupervisor.burnedByStabilityBoard() + monetarySupervisor.burnedByStabilityBoard(), ]); assert.equal( totalSupply.toString(), @@ -110,23 +122,23 @@ contract("MonetarySupervisor tests", accounts => { ); }); - it("only allowed should burn tokens", async function() { + it("only allowed should burn tokens", async function () { await monetarySupervisor.issueToReserve(2000); await testHelpers.expectThrow(monetarySupervisor.burnFromReserve(1000, { from: accounts[1] })); }); - it("should be possible to set parameters", async function() { + it("should be possible to set parameters", async function () { const params = { - lockDifferenceLimit: 12345, - loanDifferenceLimit: 54321, - allowedDifferenceAmount: 1234 + lockDifferenceLimit: "12345", + loanDifferenceLimit: "54321", + allowedDifferenceAmount: "1234", }; const tx = await monetarySupervisor.setLtdParams( params.lockDifferenceLimit, params.loanDifferenceLimit, params.allowedDifferenceAmount, { - from: accounts[0] + from: accounts[0], } ); testHelpers.logGasUse(this, tx, "setLtdParams"); @@ -134,50 +146,48 @@ contract("MonetarySupervisor tests", accounts => { await testHelpers.assertEvent(monetarySupervisor, "LtdParamsChanged", { lockDifferenceLimit: params.lockDifferenceLimit, loanDifferenceLimit: params.loanDifferenceLimit, - allowedDifferenceAmount: params.allowedDifferenceAmount + allowedDifferenceAmount: params.allowedDifferenceAmount, }); - const [ - lockDifferenceLimit, - loanDifferenceLimit, - allowedDifferenceAmount - ] = await monetarySupervisor.ltdParams(); - - assert.equal(lockDifferenceLimit, params.lockDifferenceLimit); - assert.equal(loanDifferenceLimit, params.loanDifferenceLimit); - assert.equal(allowedDifferenceAmount, params.allowedDifferenceAmount); + const actualParams = await monetarySupervisor.ltdParams(); + + assert.equal(actualParams.lockDifferenceLimit, params.lockDifferenceLimit); + assert.equal(actualParams.loanDifferenceLimit, params.loanDifferenceLimit); + assert.equal(actualParams.allowedDifferenceAmount, params.allowedDifferenceAmount); }); - it("only allowed should set ltd params ", async function() { + it("only allowed should set ltd params ", async function () { await testHelpers.expectThrow(monetarySupervisor.setLtdParams(10000, 10000, 10000, { from: accounts[1] })); }); - it("should adjust KPIs", async function() { + it("should adjust KPIs", async function () { + const loansAdjustment = new BN(10); + const locksAdjustment = new BN(20); const [totalLoanAmountBefore, totalLockedAmountBefore] = await Promise.all([ monetarySupervisor.totalLoanAmount(), - monetarySupervisor.totalLockedAmount() + monetarySupervisor.totalLockedAmount(), ]); - const tx = await monetarySupervisor.adjustKPIs(10, 20, { from: accounts[0] }); + const tx = await monetarySupervisor.adjustKPIs("10", 20, { from: accounts[0] }); testHelpers.logGasUse(this, tx, "adjustKPIs"); const [totalLoanAmountAfter, totalLockedAmountAfter] = await Promise.all([ monetarySupervisor.totalLoanAmount(), monetarySupervisor.totalLockedAmount(), testHelpers.assertEvent(monetarySupervisor, "KPIsAdjusted", { - totalLoanAmountAdjustment: 10, - totalLockedAmountAdjustment: 20 - }) + totalLoanAmountAdjustment: "10", + totalLockedAmountAdjustment: "20", + }), ]); - assert.equal(totalLoanAmountAfter.toString(), totalLoanAmountBefore.add(10).toString()); - assert.equal(totalLockedAmountAfter.toString(), totalLockedAmountBefore.add(20).toString()); + assert.equal(totalLoanAmountAfter.toString(), totalLoanAmountBefore.add(loansAdjustment).toString()); + assert.equal(totalLockedAmountAfter.toString(), totalLockedAmountBefore.add(locksAdjustment).toString()); }); - it("only allowed should adjust KPIs", async function() { + it("only allowed should adjust KPIs", async function () { await testHelpers.expectThrow(monetarySupervisor.adjustKPIs(10, 10, { from: accounts[1] })); }); - it("should change interestEarnedAccount and augmintReserves", async function() { + it("should change interestEarnedAccount and augmintReserves", async function () { const newInterestEarnedAccount = accounts[2]; const newAugmintReserves = accounts[3]; const tx = await monetarySupervisor.setSystemContracts(newInterestEarnedAccount, newAugmintReserves); @@ -188,15 +198,15 @@ contract("MonetarySupervisor tests", accounts => { monetarySupervisor.augmintReserves(), testHelpers.assertEvent(monetarySupervisor, "SystemContractsChanged", { newInterestEarnedAccount, - newAugmintReserves - }) + newAugmintReserves, + }), ]); assert.equal(actualInterestEarnedContract, newInterestEarnedAccount); assert.equal(actualAugmintReserves, newAugmintReserves); }); - it("only allowed should change interestEarnedAccount and augmintReserves", async function() { + it("only allowed should change interestEarnedAccount and augmintReserves", async function () { const newInterestEarnedAccount = tokenTestHelpers.interestEarnedAccount.address; const newAugmintReserves = augmintReserves.address; await testHelpers.expectThrow( diff --git a/test/preToken.js b/test/preToken.js index e670f77a..cc62654d 100644 --- a/test/preToken.js +++ b/test/preToken.js @@ -1,41 +1,45 @@ const PreToken = artifacts.require("./PreToken.sol"); const testHelpers = require("./helpers/testHelpers.js"); +const BN = web3.utils.BN; + let preToken; let testAgreement; // used for test failing function parseAgreement(agreementArray) { - return agreementArray.filter(agreementTuple => !agreementTuple[1].eq(0)).map(tuple => { - return { - id: tuple[0].toNumber(), - owner: "0x" + tuple[1].toString(16).padStart(40, "0"), - balance: tuple[2].toNumber(), - hash: "0x" + tuple[3].toString(16).padStart(64, "0"), - discount: tuple[4].toNumber(), - cap: tuple[5].toNumber() - }; - }); + return agreementArray + .filter((agreementTuple) => !agreementTuple[1].eq(0)) + .map((tuple) => { + return { + id: tuple[0].toNumber(), + owner: "0x" + tuple[1].toString(16).padStart(40, "0"), + balance: tuple[2].toNumber(), + hash: "0x" + tuple[3].toString(16).padStart(64, "0"), + discount: tuple[4].toNumber(), + cap: tuple[5].toNumber(), + }; + }); } -contract("PreToken", accounts => { +contract("PreToken", (accounts) => { before(async () => { - preToken = PreToken.at(PreToken.address); + preToken = await PreToken.at(PreToken.address); testAgreement = { owner: accounts[8], hash: "0x0000000000000000000000000000000000000000000000000000000000000008", discount: 800000, - cap: 20000000 + cap: 20000000, }; await preToken.addAgreement(testAgreement.owner, testAgreement.hash, testAgreement.discount, testAgreement.cap); }); - it("should add an agreement", async function() { + it("should add an agreement", async function () { const agreement = { owner: accounts[3], hash: "0x0000000000000000000000000000000000000000000000000000000000000001", discount: 800000, - cap: 20000000 + cap: 20000000, }; const agreementsCountBefore = (await preToken.getAgreementsCount()).toNumber(); @@ -47,50 +51,50 @@ contract("PreToken", accounts => { agreementsCountAfter, actualAgreementArray, actualAgreementOwnerHash, - actualAgreementGetter + actualAgreementGetter, ] = await Promise.all([ - preToken.getAgreementsCount().then(res => res.toNumber()), + preToken.getAgreementsCount().then((res) => res.toNumber()), preToken.agreements(agreement.hash), preToken.agreementOwners(agreement.owner), preToken.getAgreements(agreementsCountBefore, 1), testHelpers.assertEvent(preToken, "NewAgreement", { owner: agreement.owner, agreementHash: agreement.hash, - discount: agreement.discount, - valuationCap: agreement.cap - }) + discount: agreement.discount.toString(), + valuationCap: agreement.cap.toString(), + }), ]); const parsedAgreement = parseAgreement(actualAgreementGetter)[0]; assert.equal(agreementsCountAfter, agreementsCountBefore + 1); assert.equal(parsedAgreement.id, agreementsCountBefore); - assert.equal(parsedAgreement.owner, agreement.owner); + assert.equal(parsedAgreement.owner, agreement.owner.toLowerCase(), "Agreement owner shoud be set (via getter)"); assert.equal(parsedAgreement.hash, agreement.hash); - assert.equal(parsedAgreement.discount, agreement.discount); + assert.equal(parsedAgreement.discount, agreement.discount.toString()); assert.equal(parsedAgreement.cap, agreement.cap); assert.equal(actualAgreementOwnerHash, agreement.hash); - assert.equal(actualAgreementArray[0].toString(), agreement.owner); + assert.equal(actualAgreementArray[0], agreement.owner, "Agreement owner shoud be set in contract array"); assert.equal(actualAgreementArray[1].toString(), "0"); assert.equal(actualAgreementArray[2].toNumber(), agreement.discount); assert.equal(actualAgreementArray[3].toNumber(), agreement.cap); }); - it("Should list agreements", async function() { + it("Should list agreements", async function () { const agreement1 = { owner: accounts[4], hash: "0x0000000000000000000000000000000000000000000000000000000000000002", discount: 800000, - cap: 20000000 + cap: 20000000, }; const agreement2 = { owner: accounts[5], hash: "0x0000000000000000000000000000000000000000000000000000000000000003", discount: 900000, - cap: 25000000 + cap: 25000000, }; const agreementsCountBefore = (await preToken.getAgreementsCount()).toNumber(); @@ -101,23 +105,23 @@ contract("PreToken", accounts => { await testHelpers.assertEvent(preToken, "NewAgreement", { owner: agreement1.owner, agreementHash: agreement1.hash, - discount: agreement1.discount, - valuationCap: agreement1.cap + discount: agreement1.discount.toString(), + valuationCap: agreement1.cap.toString(), }); const tx2 = await preToken.addAgreement(agreement2.owner, agreement2.hash, agreement2.discount, agreement2.cap); testHelpers.logGasUse(this, tx2, "addAgreement"); const [agreementsCountAfter, agreementsAfter] = await Promise.all([ - preToken.getAgreementsCount().then(res => res.toNumber()), + preToken.getAgreementsCount().then((res) => res.toNumber()), preToken.getAgreements(agreementsCountBefore, 2), testHelpers.assertEvent(preToken, "NewAgreement", { owner: agreement2.owner, agreementHash: agreement2.hash, - discount: agreement2.discount, - valuationCap: agreement2.cap - }) + discount: agreement2.discount.toString(), + valuationCap: agreement2.cap.toString(), + }), ]); const parsedAgreements = parseAgreement(agreementsAfter); @@ -125,24 +129,24 @@ contract("PreToken", accounts => { assert.equal(agreementsCountAfter, agreementsCountBefore + 2); assert.equal(parsedAgreements[0].id, agreementsCountBefore); - assert.equal(parsedAgreements[0].owner, agreement1.owner); + assert.equal(parsedAgreements[0].owner, agreement1.owner.toLowerCase(), "Owner 1 should be set"); assert.equal(parsedAgreements[0].hash, agreement1.hash); - assert.equal(parsedAgreements[0].discount, agreement1.discount); - assert.equal(parsedAgreements[0].cap, agreement1.cap); + assert.equal(parsedAgreements[0].discount, agreement1.discount.toString()); + assert.equal(parsedAgreements[0].cap, agreement1.cap.toString()); assert.equal(parsedAgreements[1].id, agreementsCountBefore + 1); - assert.equal(parsedAgreements[1].owner, agreement2.owner); + assert.equal(parsedAgreements[1].owner, agreement2.owner.toLowerCase(), "Owner 2 should be set"); assert.equal(parsedAgreements[1].hash, agreement2.hash); - assert.equal(parsedAgreements[1].discount, agreement2.discount); - assert.equal(parsedAgreements[1].cap, agreement2.cap); + assert.equal(parsedAgreements[1].discount, agreement2.discount.toString()); + assert.equal(parsedAgreements[1].cap, agreement2.cap.toString()); }); - it("should NOT add an agreement to 0x0 account", async function() { + it("should NOT add an agreement to 0x0 account", async function () { const agreement = { owner: "0x0000000000000000000000000000000000000000", hash: "0x0000000000000000000000000000000000000000000000000000000000000004", discount: 800000, - cap: 20000000 + cap: 20000000, }; await testHelpers.expectThrow( @@ -150,12 +154,12 @@ contract("PreToken", accounts => { ); }); - it("should NOT add an agreement with 0 discount", async function() { + it("should NOT add an agreement with 0 discount", async function () { const agreement = { owner: accounts[6], hash: "0x0000000000000000000000000000000000000000000000000000000000000005", discount: 0, - cap: 20000000 + cap: 20000000, }; await testHelpers.expectThrow( @@ -163,12 +167,12 @@ contract("PreToken", accounts => { ); }); - it("should NOT add an agreement without agreementHash", async function() { + it("should NOT add an agreement without agreementHash", async function () { const agreement = { owner: accounts[6], hash: "0x0000000000000000000000000000000000000000000000000000000000000000", discount: 800000, - cap: 20000000 + cap: 20000000, }; await testHelpers.expectThrow( @@ -176,12 +180,12 @@ contract("PreToken", accounts => { ); }); - it("should NOT add an agreement if owner already has one", async function() { + it("should NOT add an agreement if owner already has one", async function () { const agreement = { owner: accounts[6], hash: "0x0000000000000000000000000000000000000000000000000000000000000006", discount: 800000, - cap: 20000000 + cap: 20000000, }; const tx = await preToken.addAgreement(agreement.owner, agreement.hash, agreement.discount, agreement.cap); testHelpers.logGasUse(this, tx, "addAgreement"); @@ -191,22 +195,22 @@ contract("PreToken", accounts => { ); }); - it("add agreement should be only via multiSig", async function() { + it("add agreement should be only via multiSig", async function () { const agreement = { owner: accounts[7], hash: "0x0000000000000000000000000000000000000000000000000000000000000007", discount: 800000, - cap: 20000000 + cap: 20000000, }; await testHelpers.expectThrow( preToken.addAgreement(agreement.owner, agreement.hash, agreement.discount, agreement.cap, { - from: accounts[1] + from: accounts[1], }) ); }); - it("should issueTo an account with agreement", async function() { - const amount = 1000; + it("should issueTo an account with agreement", async function () { + const amount = new BN(1000); const supplyBefore = await preToken.totalSupply(); const tx = await preToken.issueTo(testAgreement.hash, amount); @@ -218,29 +222,29 @@ contract("PreToken", accounts => { testHelpers.assertEvent(preToken, "Transfer", { from: "0x0000000000000000000000000000000000000000", to: testAgreement.owner, - amount - }) + amount: amount.toString(), + }), ]); assert.equal(supplyAfter.toString(), supplyBefore.add(amount).toString()); assert.equal(balanceAfter.toString(), amount.toString()); }); - it("should NOT issueTo a non existing agreement", async function() { + it("should NOT issueTo a non existing agreement", async function () { await testHelpers.expectThrow( preToken.issueTo("0x0000000000000000000000000000000000000000000000000000000000000007", 1000) ); }); - it("only permitted should call issueTo", async function() { + it("only permitted should call issueTo", async function () { await testHelpers.expectThrow(preToken.issueTo(testAgreement.owner, 1000, { from: accounts[1] })); }); - it("should burnFrom an account with agreement", async function() { - const amount = 100; + it("should burnFrom an account with agreement", async function () { + const amount = new BN(100); const [supplyBefore, balanceBefore] = await Promise.all([ preToken.totalSupply(), - preToken.balanceOf(testAgreement.owner) + preToken.balanceOf(testAgreement.owner), ]); const tx = await preToken.burnFrom(testAgreement.hash, amount); @@ -252,25 +256,25 @@ contract("PreToken", accounts => { testHelpers.assertEvent(preToken, "Transfer", { to: "0x0000000000000000000000000000000000000000", from: testAgreement.owner, - amount - }) + amount: amount.toString(), + }), ]); assert.equal(supplyAfter.toString(), supplyBefore.sub(amount).toString()); assert.equal(balanceAfter.toString(), balanceBefore.sub(amount).toString()); }); - it("shouldn't burnFrom more than balance", async function() { + it("shouldn't burnFrom more than balance", async function () { const balanceBefore = await preToken.balanceOf(testAgreement.owner); - await testHelpers.expectThrow(preToken.burnFrom(testAgreement.hash, balanceBefore.add(1))); + await testHelpers.expectThrow(preToken.burnFrom(testAgreement.hash, balanceBefore.add(new BN(1)))); }); - it("shouldn't burnFrom 0 amount", async function() { + it("shouldn't burnFrom 0 amount", async function () { await testHelpers.expectThrow(preToken.burnFrom(testAgreement.hash, 0)); }); - it("only allowed should burnFrom", async function() { + it("only allowed should burnFrom", async function () { await testHelpers.expectThrow(preToken.burnFrom(testAgreement.hash, 1, { from: accounts[1] })); }); }); diff --git a/test/preTokenTransfer.js b/test/preTokenTransfer.js index d2cc657f..ac543fa0 100644 --- a/test/preTokenTransfer.js +++ b/test/preTokenTransfer.js @@ -1,34 +1,36 @@ const PreToken = artifacts.require("./PreToken.sol"); const testHelpers = require("./helpers/testHelpers.js"); +const BN = web3.utils.BN; + let preToken; let agreement; let snapshotId; -const initialIssue = 1000000; +const initialIssue = new BN(1000000); -contract("PreToken transfer", accounts => { +contract("PreToken transfer", (accounts) => { before(async () => { - preToken = PreToken.at(PreToken.address); + preToken = await PreToken.at(PreToken.address); agreement = { owner: accounts[3], hash: "0x36517e28afd52e6a9fc53d6922833c67b02e339943d737f1abefa877ff69b68a", discount: 700000, - cap: 15000000 + cap: 15000000, }; await preToken.addAgreement(agreement.owner, agreement.hash, agreement.discount, agreement.cap); await preToken.issueTo(agreement.hash, initialIssue); }); - beforeEach(async function() { + beforeEach(async function () { snapshotId = await testHelpers.takeSnapshot(); }); - afterEach(async function() { + afterEach(async function () { await testHelpers.revertSnapshot(snapshotId); }); - it("should transfer to an account which has no agreement yet", async function() { + it("should transfer to an account which has no agreement yet", async function () { const to = accounts[4]; const supplyBefore = await preToken.totalSupply(); @@ -41,7 +43,7 @@ contract("PreToken transfer", accounts => { fromAgreementOwnerHashAfter, toAgreementOwnerHashAfter, fromBalAfter, - toBalAfter + toBalAfter, ] = await Promise.all([ preToken.totalSupply(), preToken.agreements(agreement.hash), @@ -49,35 +51,39 @@ contract("PreToken transfer", accounts => { preToken.agreementOwners(to), preToken.balanceOf(agreement.owner), preToken.balanceOf(to), - testHelpers.assertEvent(preToken, "Transfer", { from: agreement.owner, to, amount: initialIssue }) + testHelpers.assertEvent(preToken, "Transfer", { + from: agreement.owner, + to, + amount: initialIssue.toString(), + }), ]); - assert.equal(supplyAfter.toString(), supplyBefore.toString()); - assert.equal(toBalAfter.toNumber(), initialIssue); + assert.equal(supplyAfter.toString(), supplyBefore.toString(), "Total supply should NOT change"); + assert.equal(toBalAfter.toString(), initialIssue.toString(), "Recevier balance should update"); assert.equal(fromBalAfter.toString(), "0"); assert.equal(fromAgreementOwnerHashAfter, "0x0000000000000000000000000000000000000000000000000000000000000000"); assert.equal(toAgreementOwnerHashAfter, agreement.hash); assert.equal(agreementAfter[0], to); - assert.equal(agreementAfter[1].toNumber(), initialIssue); + assert.equal(agreementAfter[1].toString(), initialIssue.toString()); assert.equal(agreementAfter[2].toNumber(), agreement.discount); assert.equal(agreementAfter[3].toNumber(), agreement.cap); }); - it("should NOT transfer 0 amount", async function() { + it("should NOT transfer 0 amount", async function () { const to = accounts[4]; const amount = 0; await testHelpers.expectThrow(preToken.transfer(to, amount, { from: agreement.owner })); }); - it("should NOT transfer to an account which has an agreement", async function() { + it("should NOT transfer to an account which has an agreement", async function () { const agreement2 = { owner: accounts[4], hash: "0x66517e28afd52e6a9fc53d6922833c67b02e339943d737f1abefa877ff69b68a", discount: 700000, - cap: 15000000 + cap: 15000000, }; await preToken.addAgreement(agreement2.owner, agreement2.hash, agreement2.discount, agreement2.cap); @@ -85,31 +91,31 @@ contract("PreToken transfer", accounts => { await testHelpers.expectThrow(preToken.transfer(agreement2.owner, initialIssue, { from: agreement.owner })); }); - it("should NOT transfer less than balance", async function() { + it("should NOT transfer less than balance", async function () { const to = accounts[4]; - const amount = initialIssue - 1; + const amount = initialIssue.sub(new BN(1)); await testHelpers.expectThrow(preToken.transfer(to, amount, { from: agreement.owner })); }); - it("should NOT transfer more than balance", async function() { + it("should NOT transfer more than balance", async function () { const to = accounts[4]; - const amount = initialIssue + 1; + const amount = initialIssue.add(new BN(1)); await testHelpers.expectThrow(preToken.transfer(to, amount, { from: agreement.owner })); }); - it("should NOT transfer to 0x0", async function() { - const to = "0x0"; + it("should NOT transfer to 0x0", async function () { + const to = "0x0000000000000000000000000000000000000000"; await testHelpers.expectThrow(preToken.transfer(to, initialIssue, { from: agreement.owner })); }); - it("should NOT transfer if has no agreement", async function() { + it("should NOT transfer if has no agreement", async function () { const to = accounts[5]; const from = accounts[6]; const amount = 0; await testHelpers.expectThrow(preToken.transfer(to, amount, { from })); }); - it("should transferFrom", async function() { + it("should transferFrom", async function () { const to = accounts[4]; const fromHash = agreement.hash; const supplyBefore = await preToken.totalSupply(); @@ -122,20 +128,24 @@ contract("PreToken transfer", accounts => { preToken.agreements(agreement.hash), preToken.balanceOf(agreement.owner), preToken.balanceOf(to), - testHelpers.assertEvent(preToken, "Transfer", { from: agreement.owner, to, amount: initialIssue }) + testHelpers.assertEvent(preToken, "Transfer", { + from: agreement.owner, + to, + amount: initialIssue.toString(), + }), ]); - assert.equal(supplyAfter.toString(), supplyBefore.toString()); + assert.equal(supplyAfter.toString(), supplyBefore.toString(), "Total supply should NOT change"); assert.equal(ownerBalAfter.toNumber(), 0); - assert.equal(toBalAfter.toNumber(), initialIssue); + assert.equal(toBalAfter.toString(), initialIssue.toString(), "Recevier balance should update"); assert.equal(agreementAfter[0], to); - assert.equal(agreementAfter[1].toNumber(), initialIssue); + assert.equal(agreementAfter[1].toString(), initialIssue.toString()); assert.equal(agreementAfter[2].toNumber(), agreement.discount); assert.equal(agreementAfter[3].toNumber(), agreement.cap); }); - it("only permitted should transferFrom", async function() { + it("only permitted should transferFrom", async function () { const to = accounts[4]; const fromHash = agreement.owner; diff --git a/test/rates.js b/test/rates.js index fd809ff9..b14ca18f 100644 --- a/test/rates.js +++ b/test/rates.js @@ -4,21 +4,32 @@ const testHelpers = require("./helpers/testHelpers.js"); let rates = null; let snapshotId; -contract("Rates tests", accounts => { - before(async function() { +const SYM = { + EUR: web3.utils.asciiToHex("EUR"), + USD: web3.utils.asciiToHex("USD"), + GBP: web3.utils.asciiToHex("GBP"), + XXX: web3.utils.asciiToHex("XXX"), + AAA: web3.utils.asciiToHex("AAA"), + BBB: web3.utils.asciiToHex("BBB"), + NOTSETYET: web3.utils.asciiToHex("NOTSETYET"), + SETTOZERO: web3.utils.asciiToHex("SETTOZERO"), +}; + +contract("Rates tests", (accounts) => { + before(async function () { rates = ratesTestHelpers.rates; }); - beforeEach(async function() { + beforeEach(async function () { snapshotId = await testHelpers.takeSnapshot(); }); - afterEach(async function() { + afterEach(async function () { await testHelpers.revertSnapshot(snapshotId); }); - it("should be possible to set 1 rate", async function() { - const symbol = "EUR"; + it("should be possible to set 1 rate", async function () { + const symbol = SYM.EUR; // change the symbol 1st time let tx = await rates.setRate(symbol, 12340000); @@ -31,8 +42,8 @@ contract("Rates tests", accounts => { await ratesTestHelpers.newRatesAsserts(tx, [symbol], [12350000]); }); - it("should be possible to set multiple rates", async function() { - const symbols = ["GBP", "USD"]; + it("should be possible to set multiple rates", async function () { + const symbols = [SYM.GBP, SYM.USD]; let newRates = [12350000, 11110000]; // change the symbols 1st time @@ -47,58 +58,54 @@ contract("Rates tests", accounts => { await ratesTestHelpers.newRatesAsserts(tx, symbols, newRates); }); - it("should throw if set multiple rates invalid", async function() { - const symbols = ["GBP", "USD", "XXX"]; + it("should throw if set multiple rates invalid", async function () { + const symbols = [SYM.GBP, SYM.GBP, SYM.XXX]; let newRates = [12350000, 11110000]; await testHelpers.expectThrow(rates.setMultipleRates(symbols, newRates)); }); - it("should be possible to convert WEI to/from EUR", async function() { + it("should be possible to convert WEI to/from EUR", async function () { const rate = 41592653; const testEur = 31415926536; - await rates.setRate("EUR", rate); - const ethValue = await rates.convertToWei("EUR", testEur); - assert.equal( - global.web3v1.utils.fromWei(ethValue.toString()), - testEur / rate, - "ethValue converted should be correct" - ); - const eurValue = await rates.convertFromWei("EUR", ethValue); + await rates.setRate(SYM.EUR, rate); + const ethValue = await rates.convertToWei(SYM.EUR, testEur); + assert.equal(web3.utils.fromWei(ethValue.toString()), testEur / rate, "ethValue converted should be correct"); + const eurValue = await rates.convertFromWei(SYM.EUR, ethValue); assert.equal( eurValue.toString(), - global.web3v1.utils.fromWei(ethValue.toString()) * rate, + web3.utils.fromWei(ethValue.toString()) * rate, "eurValue converted should be correct" ); - //console.log(global.web3v1.utils.fromWei(ethValue).toString(), eurValue.toString()); }); - it("setRate should allow to set 0 rate", async function() { - let tx = await rates.setRate("XXX", 0); + it("setRate should allow to set 0 rate", async function () { + let tx = await rates.setRate(SYM.XXX, 0); testHelpers.logGasUse(this, tx, "setRate to 0 1st"); - await ratesTestHelpers.newRatesAsserts(tx, ["XXX"], [0]); + await ratesTestHelpers.newRatesAsserts(tx, [SYM.XXX], [0]); - tx = await rates.setRate("XXX", 0); + tx = await rates.setRate(SYM.XXX, 0); testHelpers.logGasUse(this, tx, "setRate to 0"); - await ratesTestHelpers.newRatesAsserts(tx, ["XXX"], [0]); + await ratesTestHelpers.newRatesAsserts(tx, [SYM.XXX], [0]); }); - it("setMultipleRates should allow 0 rate set", async function() { - let tx = await rates.setMultipleRates(["AAA", "BBB"], [0, 0]); + it("setMultipleRates should allow 0 rate set", async function () { + const symbols = [SYM.AAA, SYM.BBB]; + let tx = await rates.setMultipleRates(symbols, [0, 0]); testHelpers.logGasUse(this, tx, "setMultipleRates 2 to 0 1st"); - await ratesTestHelpers.newRatesAsserts(tx, ["AAA", "BBB"], [0, 0]); + await ratesTestHelpers.newRatesAsserts(tx, symbols, [0, 0]); - tx = await rates.setMultipleRates(["AAA", "BBB"], [0, 0]); + tx = await rates.setMultipleRates(symbols, [0, 0]); testHelpers.logGasUse(this, tx, "setMultipleRates 2 to 0"); - await ratesTestHelpers.newRatesAsserts(tx, ["AAA", "BBB"], [0, 0]); + await ratesTestHelpers.newRatesAsserts(tx, symbols, [0, 0]); }); - it("convert should throw when 0 rate set", async function() { - await testHelpers.expectThrow(rates.convertToWei("NOTSETYET", 1230000)); - await testHelpers.expectThrow(rates.convertFromWei("NOTSETYET", 1230000)); - await rates.setRate("SETTOZERO", 0); - await testHelpers.expectThrow(rates.convertToWei("SETTOZERO", 1230000)); - await testHelpers.expectThrow(rates.convertFromWei("SETTOZERO", 1230000)); + it("convert should throw when 0 rate set", async function () { + await testHelpers.expectThrow(rates.convertToWei(SYM.NOTSETYET, 1230000)); + await testHelpers.expectThrow(rates.convertFromWei(SYM.NOTSETYET, 1230000)); + await rates.setRate(SYM.SETTOZERO, 0); + await testHelpers.expectThrow(rates.convertToWei(SYM.SETTOZERO, 1230000)); + await testHelpers.expectThrow(rates.convertFromWei(SYM.SETTOZERO, 1230000)); }); }); diff --git a/test/restricted.js b/test/restricted.js index d85552f0..f9a30cbd 100644 --- a/test/restricted.js +++ b/test/restricted.js @@ -3,69 +3,73 @@ */ const testHelpers = require("./helpers/testHelpers.js"); const tokenTestHelpers = require("./helpers/tokenTestHelpers.js"); +const PERM1 = web3.utils.asciiToHex("TESTPERMISSION1"); +const PERM2 = web3.utils.asciiToHex("TESTPERMISSION2"); let augmintTokenInstance; -contract("Restricted.sol tests", accounts => { +contract("Restricted.sol tests", (accounts) => { before(async () => { augmintTokenInstance = tokenTestHelpers.augmintToken; }); - it("only permitted should be able to grant permissions ", async function() { + it("only permitted should be able to grant permissions ", async function () { await testHelpers.expectThrow( - augmintTokenInstance.grantPermission(accounts[0], "TESTPERMISSION", { from: accounts[1] }) + augmintTokenInstance.grantPermission(accounts[0], PERM1, { + from: accounts[1], + }) ); }); - it("only permitted should be able to grant multiple permissions ", async function() { + it("only permitted should be able to grant multiple permissions ", async function () { await testHelpers.expectThrow( - augmintTokenInstance.grantMultiplePermissions(accounts[0], ["TESTPERMISSION1", "TESTPERMISSION2"], { - from: accounts[1] + augmintTokenInstance.grantMultiplePermissions(accounts[0], [PERM1, PERM2], { + from: accounts[1], }) ); }); - it("only permitted to revoke permission ", async function() { + it("only permitted to revoke permission ", async function () { await testHelpers.expectThrow( - augmintTokenInstance.revokePermission(accounts[0], "TESTPERMISSION1", { - from: accounts[1] + augmintTokenInstance.revokePermission(accounts[0], PERM1, { + from: accounts[1], }) ); }); - it("should grant & revoke multiple permissions ", async function() { - const tx1 = await augmintTokenInstance.grantMultiplePermissions(accounts[0], ["perm1", "perm2"], { - from: accounts[0] + it("should grant & revoke multiple permissions ", async function () { + const tx1 = await augmintTokenInstance.grantMultiplePermissions(accounts[0], [PERM1, PERM2], { + from: accounts[0], }); testHelpers.logGasUse(this, tx1, "grantMultiplePermissions"); let perm1; let perm2; [perm1, perm2] = await Promise.all([ - augmintTokenInstance.permissions(accounts[0], "perm1"), - augmintTokenInstance.permissions(accounts[0], "perm2") + augmintTokenInstance.permissions(accounts[0], PERM1), + augmintTokenInstance.permissions(accounts[0], PERM2), ]); assert.equal(perm1, true); assert.equal(perm2, true); - const tx2 = await augmintTokenInstance.revokeMultiplePermissions(accounts[0], ["perm1", "perm2"], { - from: accounts[0] + const tx2 = await augmintTokenInstance.revokeMultiplePermissions(accounts[0], [PERM1, PERM2], { + from: accounts[0], }); testHelpers.logGasUse(this, tx2, "revokeMultiplePermissions"); [perm1, perm2] = await Promise.all([ - augmintTokenInstance.permissions(accounts[0], "perm1"), - augmintTokenInstance.permissions(accounts[0], "perm2") + augmintTokenInstance.permissions(accounts[0], PERM1), + augmintTokenInstance.permissions(accounts[0], PERM2), ]); assert.equal(perm1, false); assert.equal(perm2, false); }); - it("only permitted to revoke multiple permissions ", async function() { + it("only permitted to revoke multiple permissions ", async function () { await testHelpers.expectThrow( - augmintTokenInstance.revokeMultiplePermissions(accounts[0], ["TESTPERMISSION1", "TESTPERMISSION2"], { - from: accounts[1] + augmintTokenInstance.revokeMultiplePermissions(accounts[0], [PERM1, PERM2], { + from: accounts[1], }) ); }); diff --git a/test/safeMath.js b/test/safeMath.js index 43e6143e..61c75a36 100644 --- a/test/safeMath.js +++ b/test/safeMath.js @@ -2,41 +2,39 @@ sub, div, rounded div covered by other test cases */ -const BigNumber = require("bignumber.js"); const Locker = artifacts.require("./Locker.sol"); const testHelpers = require("./helpers/testHelpers.js"); const MonetarySupervisor = artifacts.require("./MonetarySupervisor.sol"); const SafeMathTester = artifacts.require("./test/SafeMathTester.sol"); +const BN = web3.utils.BN; + let locker; let monetarySupervisor; let safeMathTester; -const MAX_UINT256 = new BigNumber(2).pow(256).sub(1); +const MAX_UINT256 = new BN(2).pow(new BN(256)).sub(new BN(1)); contract("SafeMath", () => { - before(() => { - locker = Locker.at(Locker.address); - monetarySupervisor = MonetarySupervisor.at(MonetarySupervisor.address); - safeMathTester = SafeMathTester.at(SafeMathTester.address); + before(async () => { + [locker, monetarySupervisor, safeMathTester] = await Promise.all([ + Locker.deployed(), + MonetarySupervisor.deployed(), + SafeMathTester.deployed(), + ]); }); - it("should throw if mul overflows", async function() { + it("should throw if mul overflows", async function () { await testHelpers.expectThrow( - locker.calculateInterest( - 2, - MAX_UINT256.add(1) - .div(2) - .round(0, BigNumber.ROUND_UP) - ) + locker.calculateInterest(2, MAX_UINT256.add(new BN(1)).div(new BN(2)).add(new BN(1))) ); }); - it("should throw if add overflows", async function() { - await monetarySupervisor.issueToReserve(1); - await testHelpers.expectThrow(monetarySupervisor.issueToReserve(MAX_UINT256.toString())); + it("should throw if add overflows", async function () { + await monetarySupervisor.issueToReserve(new BN(1)); + await testHelpers.expectThrow(monetarySupervisor.issueToReserve(MAX_UINT256)); }); - it("should round up if not exactly divisible", async function() { + it("should round up if not exactly divisible", async function () { assert.equal(Number(await locker.calculateInterest(1000, 1000)), 1); assert.equal(Number(await locker.calculateInterest(1, 1000000)), 1); assert.equal(Number(await locker.calculateInterest(1000, 1001)), 2); @@ -51,7 +49,7 @@ contract("SafeMath", () => { assert.equal(Number(await locker.calculateInterest(120000, 10000)), 1200); }); - it("should round properly when using roundedDiv", async function() { + it("should round properly when using roundedDiv", async function () { assert.equal(Number(await safeMathTester.roundedDiv(0, 2)), 0); assert.equal(Number(await safeMathTester.roundedDiv(1, 2)), 1); assert.equal(Number(await safeMathTester.roundedDiv(2, 2)), 1); @@ -74,13 +72,13 @@ contract("SafeMath", () => { assert.equal(Number(await safeMathTester.roundedDiv(MAX_UINT256, 1)), MAX_UINT256); assert.equal(Number(await safeMathTester.roundedDiv(MAX_UINT256, MAX_UINT256)), 1); - assert.equal(Number(await safeMathTester.roundedDiv(MAX_UINT256.sub(1), MAX_UINT256)), 1); - assert.equal(Number(await safeMathTester.roundedDiv(MAX_UINT256, MAX_UINT256.sub(1))), 1); - assert.equal(Number(await safeMathTester.roundedDiv(MAX_UINT256, MAX_UINT256.div(2))), 2); - assert.equal(Number(await safeMathTester.roundedDiv(MAX_UINT256, MAX_UINT256.div(3))), 3); + assert.equal(Number(await safeMathTester.roundedDiv(MAX_UINT256.sub(new BN(1)), MAX_UINT256)), 1); + assert.equal(Number(await safeMathTester.roundedDiv(MAX_UINT256, MAX_UINT256.sub(new BN(1)))), 1); + assert.equal(Number(await safeMathTester.roundedDiv(MAX_UINT256, MAX_UINT256.div(new BN(2)))), 2); + assert.equal(Number(await safeMathTester.roundedDiv(MAX_UINT256, MAX_UINT256.div(new BN(3)))), 3); }); - it("should not divide by zero", async function() { + it("should not divide by zero", async function () { await testHelpers.expectThrow(safeMathTester.roundedDiv(0, 0)); await testHelpers.expectThrow(safeMathTester.roundedDiv(1, 0)); await testHelpers.expectThrow(safeMathTester.roundedDiv(MAX_UINT256, 0)); diff --git a/test/stabilityBoardProxy.js b/test/stabilityBoardProxy.js index c020ea86..0df42fe4 100644 --- a/test/stabilityBoardProxy.js +++ b/test/stabilityBoardProxy.js @@ -18,12 +18,12 @@ async function addSigners(newSigners) { // assuming allSigners are active const [addSignerScript, currentSigners] = await Promise.all([ SB_addSigners.new(newSigners), - stabilityBoardProxy.getSigners(0, CHUNK_SIZE) + stabilityBoardProxy.getSigners(0, CHUNK_SIZE), ]); const signTxs = currentSigners - .filter(signerTuple => !signerTuple[1].eq(0)) - .map(tuple => { + .filter((signerTuple) => !signerTuple[1].eq(0)) + .map((tuple) => { const signerAddress = "0x" + tuple[1].toString(16).padStart(40, "0"); return stabilityBoardProxy.sign(addSignerScript.address, { from: signerAddress }); }); @@ -35,30 +35,27 @@ async function addSigners(newSigners) { return executeTx; } -contract("StabilityBoardProxy", accounts => { +contract("StabilityBoardProxy", (accounts) => { before(async () => { - stabilityBoardProxy = StabilityBoardProxy.at(StabilityBoardProxy.address); - stabilityBoardProxyWeb3Contract = new global.web3v1.eth.Contract( - StabilityBoardProxy.abi, - StabilityBoardProxy.address - ); + stabilityBoardProxy = await StabilityBoardProxy.deployed(); + stabilityBoardProxyWeb3Contract = new web3.eth.Contract(StabilityBoardProxy.abi, StabilityBoardProxy.address); }); - beforeEach(async function() { + beforeEach(async function () { snapshotId = await testHelpers.takeSnapshot(); }); - afterEach(async function() { + afterEach(async function () { await testHelpers.revertSnapshot(snapshotId); }); - it("only signer should sign", async function() { + it("only signer should sign", async function () { testHelpers.expectThrow( stabilityBoardProxy.sign("0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", { from: accounts[1] }) ); }); - it("signer should be able to sign", async function() { + it("signer should be able to sign", async function () { const scriptAddress = "0x0000000000000000000000000000000000000001"; const tx = await stabilityBoardProxy.sign(scriptAddress); testHelpers.logGasUse(this, tx, "multiSig.sign"); @@ -66,13 +63,13 @@ contract("StabilityBoardProxy", accounts => { const [script] = await Promise.all([ stabilityBoardProxyWeb3Contract.methods.scripts(scriptAddress).call(), testHelpers.assertEvent(stabilityBoardProxy, "ScriptSigned", { signer: accounts[0], scriptAddress }), - testHelpers.assertEvent(stabilityBoardProxy, "ScriptApproved", { scriptAddress }) + testHelpers.assertEvent(stabilityBoardProxy, "ScriptApproved", { scriptAddress }), ]); assert.equal(script.signCount, 1); assert.equal(script.state, scriptState.Approved); }); - it("should not sign twice", async function() { + it("should not sign twice", async function () { const scriptAddress = "0x0000000000000000000000000000000000000002"; const tx = await stabilityBoardProxy.sign(scriptAddress); testHelpers.logGasUse(this, tx, "multiSig.sign"); @@ -82,12 +79,12 @@ contract("StabilityBoardProxy", accounts => { await testHelpers.expectThrow(stabilityBoardProxy.sign(scriptAddress, { from: accounts[0] })); }); - it("should add then disable signers and should not cancel or execute in Done state", async function() { + it("should add then disable signers and should not cancel or execute in Done state", async function () { const newSigners = [accounts[1], accounts[2]]; const [allSignersCountBefore, activeSignersCountBefore] = await Promise.all([ - stabilityBoardProxy.getAllSignersCount().then(res => res.toNumber()), - stabilityBoardProxy.activeSignersCount().then(res => res.toNumber()) + stabilityBoardProxy.getAllSignersCount().then((res) => res.toNumber()), + stabilityBoardProxy.activeSignersCount().then((res) => res.toNumber()), ]); const addSignerScript = await SB_addSigners.new(newSigners); @@ -105,12 +102,12 @@ contract("StabilityBoardProxy", accounts => { stabilityBoardProxyWeb3Contract.methods.scripts(addSignerScript.address).call(), testHelpers.assertEvent(stabilityBoardProxy, "SignerAdded", [ { signer: newSigners[0] }, - { signer: newSigners[1] } + { signer: newSigners[1] }, ]), testHelpers.assertEvent(stabilityBoardProxy, "ScriptExecuted", { scriptAddress: addSignerScript.address, - result: true - }) + result: true, + }), ]); assert.equal(script.state, scriptState.Done); @@ -126,7 +123,7 @@ contract("StabilityBoardProxy", accounts => { const [signTx1, signTx2] = await Promise.all([ await stabilityBoardProxy.sign(removeSignerScript.address, { from: newSigners[0] }), - await stabilityBoardProxy.sign(removeSignerScript.address, { from: newSigners[1] }) + await stabilityBoardProxy.sign(removeSignerScript.address, { from: newSigners[1] }), ]); testHelpers.logGasUse(this, signTx1, "multiSig.sign"); testHelpers.logGasUse(this, signTx2, "multiSig.sign"); @@ -140,12 +137,12 @@ contract("StabilityBoardProxy", accounts => { stabilityBoardProxyWeb3Contract.methods.scripts(removeSignerScript.address).call(), testHelpers.assertEvent(stabilityBoardProxy, "SignerRemoved", [ { signer: newSigners[0] }, - { signer: newSigners[1] } + { signer: newSigners[1] }, ]), testHelpers.assertEvent(stabilityBoardProxy, "ScriptExecuted", { scriptAddress: removeSignerScript.address, - result: true - }) + result: true, + }), ]); assert.equal(script.state, scriptState.Done); @@ -168,18 +165,18 @@ contract("StabilityBoardProxy", accounts => { stabilityBoardProxyWeb3Contract.methods.scripts(cancelScript.address).call(), testHelpers.assertEvent(stabilityBoardProxy, "ScriptExecuted", { scriptAddress: cancelScript.address, - result: false - }) + result: false, + }), ]); assert(script2After.state, scriptState.Failed); }); - it("should add then disable signers in same script", async function() { + it("should add then disable signers in same script", async function () { const expNewSigners = [accounts[1], accounts[2]]; const [allSignersCountBefore, activeSignersCountBefore] = await Promise.all([ - stabilityBoardProxy.getAllSignersCount().then(res => res.toNumber()), - stabilityBoardProxy.activeSignersCount().then(res => res.toNumber()) + stabilityBoardProxy.getAllSignersCount().then((res) => res.toNumber()), + stabilityBoardProxy.activeSignersCount().then((res) => res.toNumber()), ]); const addSignerScript = await SB_addAndRemoveSigners.new(); @@ -197,13 +194,13 @@ contract("StabilityBoardProxy", accounts => { stabilityBoardProxyWeb3Contract.methods.scripts(addSignerScript.address).call(), testHelpers.assertEvent(stabilityBoardProxy, "SignerAdded", [ { signer: expNewSigners[0] }, - { signer: expNewSigners[1] } + { signer: expNewSigners[1] }, ]), testHelpers.assertEvent(stabilityBoardProxy, "SignerRemoved", { signer: accounts[0] }), testHelpers.assertEvent(stabilityBoardProxy, "ScriptExecuted", { scriptAddress: addSignerScript.address, - result: true - }) + result: true, + }), ]); assert.equal(script.state, scriptState.Done); @@ -215,19 +212,19 @@ contract("StabilityBoardProxy", accounts => { assert.equal(allSignersCountAfter.toNumber(), allSignersCountBefore + expNewSigners.length); }); - it("should not add 0x0 signer", async function() { - const newSigners = [accounts[1], "0x0"]; + it("should not add 0x0 signer", async function () { + const newSigners = [accounts[1], "0x0000000000000000000000000000000000000000"]; await addSigners(newSigners); await testHelpers.assertEvent(stabilityBoardProxy, "ScriptExecuted", { - scriptAddress: res => res, - result: false + scriptAddress: (res) => res, + result: false, }); const activeSignersCountAfter = await stabilityBoardProxy.activeSignersCount(); assert.equal(activeSignersCountAfter.toNumber(), 1); }); - it("should not remove all signers", async function() { + it("should not remove all signers", async function () { const removeSignerScript = await SB_removeSigners.new([accounts[0]]); const signTx = await stabilityBoardProxy.sign(removeSignerScript.address, { from: accounts[0] }); @@ -238,14 +235,14 @@ contract("StabilityBoardProxy", accounts => { await testHelpers.assertEvent(stabilityBoardProxy, "ScriptExecuted", { scriptAddress: removeSignerScript.address, - result: false + result: false, }); const activeSignersCountAfter = await stabilityBoardProxy.activeSignersCount(); assert.equal(activeSignersCountAfter.toNumber(), 1); }); - it("should not execute when script is New state (no quorum)", async function() { + it("should not execute when script is New state (no quorum)", async function () { const newSigners = [accounts[1]]; await addSigners(newSigners); @@ -260,17 +257,17 @@ contract("StabilityBoardProxy", accounts => { await testHelpers.expectThrow(stabilityBoardProxy.execute(removeSignerScript.address, { from: accounts[0] })); }); - it("should accept signatures after quorum reached", async function() { + it("should accept signatures after quorum reached", async function () { const newSigners = [accounts[1], accounts[2]]; await addSigners(newSigners); const removeSignerScript = await SB_removeSigners.new(newSigners); await Promise.all( - newSigners.map(signer => + newSigners.map((signer) => stabilityBoardProxy .sign(removeSignerScript.address, { from: signer }) - .then(tx => testHelpers.logGasUse(this, tx, "multiSig.sign")) + .then((tx) => testHelpers.logGasUse(this, tx, "multiSig.sign")) ) ); @@ -285,7 +282,7 @@ contract("StabilityBoardProxy", accounts => { assert.equal(scriptAfter.signCount, newSigners.length + 1); }); - it("should cancel a script in New state", async function() { + it("should cancel a script in New state", async function () { const newSigners = [accounts[1]]; await addSigners(newSigners); @@ -298,7 +295,9 @@ contract("StabilityBoardProxy", accounts => { // create , sign & execute a script to cancel our removeSignerScript const cancelScript = await SB_cancelScript.new(removeSignerScript.address); await Promise.all( - [...newSigners, accounts[0]].map(signer => stabilityBoardProxy.sign(cancelScript.address, { from: signer })) + [...newSigners, accounts[0]].map((signer) => + stabilityBoardProxy.sign(cancelScript.address, { from: signer }) + ) ); const cancelTx = await stabilityBoardProxy.execute(cancelScript.address, { from: accounts[0] }); @@ -307,13 +306,13 @@ contract("StabilityBoardProxy", accounts => { const [scriptAfter] = await Promise.all([ stabilityBoardProxyWeb3Contract.methods.scripts(removeSignerScript.address).call(), testHelpers.assertEvent(stabilityBoardProxy, "ScriptCancelled", { - scriptAddress: removeSignerScript.address - }) + scriptAddress: removeSignerScript.address, + }), ]); assert.equal(scriptAfter.state, scriptState.Cancelled); }); - it("should cancel an Approved script then should not cancel or execute in Cancelled state", async function() { + it("should cancel an Approved script then should not cancel or execute in Cancelled state", async function () { // Create and apprive script to be cancelled const removeSignerScript = await SB_removeSigners.new([accounts[0]]); await stabilityBoardProxy.sign(removeSignerScript.address); @@ -330,8 +329,8 @@ contract("StabilityBoardProxy", accounts => { const [scriptAfter] = await Promise.all([ stabilityBoardProxyWeb3Contract.methods.scripts(removeSignerScript.address).call(), testHelpers.assertEvent(stabilityBoardProxy, "ScriptCancelled", { - scriptAddress: removeSignerScript.address - }) + scriptAddress: removeSignerScript.address, + }), ]); assert.equal(scriptAfter.state, scriptState.Cancelled); @@ -347,13 +346,13 @@ contract("StabilityBoardProxy", accounts => { stabilityBoardProxyWeb3Contract.methods.scripts(cancelScript2.address).call(), testHelpers.assertEvent(stabilityBoardProxy, "ScriptExecuted", { scriptAddress: cancelScript2.address, - result: false - }) + result: false, + }), ]); assert(script2After.state, scriptState.Failed); }); - it("should set script state to Failed if script fails & should not cancel or execute in Failed state", async function() { + it("should set script state to Failed if script fails & should not cancel or execute in Failed state", async function () { const revertingScript = await SB_revertingScript.new(); await stabilityBoardProxy.sign(revertingScript.address); @@ -365,8 +364,8 @@ contract("StabilityBoardProxy", accounts => { stabilityBoardProxyWeb3Contract.methods.scripts(revertingScript.address).call(), testHelpers.assertEvent(stabilityBoardProxy, "ScriptExecuted", { scriptAddress: revertingScript.address, - result: false - }) + result: false, + }), ]); assert.equal(signersCountAfter.toNumber(), 1); @@ -384,13 +383,13 @@ contract("StabilityBoardProxy", accounts => { stabilityBoardProxyWeb3Contract.methods.scripts(revertingScript2.address).call(), testHelpers.assertEvent(stabilityBoardProxy, "ScriptExecuted", { scriptAddress: revertingScript2.address, - result: false - }) + result: false, + }), ]); assert(script2After.state, scriptState.Failed); }); - it("should set script state to Failed if script runs out of gas", async function() { + it("should set script state to Failed if script runs out of gas", async function () { const outOfGasScript = await SB_outOfGasScript.new(); await stabilityBoardProxy.sign(outOfGasScript.address); const tx = await stabilityBoardProxy.execute(outOfGasScript.address, { gas: 200000 }); @@ -400,19 +399,19 @@ contract("StabilityBoardProxy", accounts => { stabilityBoardProxyWeb3Contract.methods.scripts(outOfGasScript.address).call(), testHelpers.assertEvent(stabilityBoardProxy, "ScriptExecuted", { scriptAddress: outOfGasScript.address, - result: false - }) + result: false, + }), ]); assert.equal(script.state, scriptState.Failed); }); - it("Should list scripts", async function() { + it("Should list scripts", async function () { const [scriptCountBefore, approvedScript, revertingScript, doneScript] = await Promise.all([ - stabilityBoardProxy.getScriptsCount().then(res => res.toNumber()), + stabilityBoardProxy.getScriptsCount().then((res) => res.toNumber()), SB_addSigners.new([accounts[1]]), SB_revertingScript.new(), - SB_addSigners.new([accounts[1]]) + SB_addSigners.new([accounts[1]]), ]); // need to do it in sequence for deterministic order @@ -422,60 +421,60 @@ contract("StabilityBoardProxy", accounts => { await Promise.all([ stabilityBoardProxy.execute(revertingScript.address), - stabilityBoardProxy.execute(doneScript.address) + stabilityBoardProxy.execute(doneScript.address), ]); const [scriptsCountAfter, scriptsArray] = await Promise.all([ - stabilityBoardProxy.getScriptsCount().then(res => res.toNumber()), - stabilityBoardProxy.getScripts(scriptCountBefore, CHUNK_SIZE) + stabilityBoardProxy.getScriptsCount().then((res) => res.toNumber()), + stabilityBoardProxy.getScripts(scriptCountBefore, CHUNK_SIZE), ]); const scripts = scriptsArray - .filter(item => !item[1].eq(0)) - .map(item => { + .filter((item) => !item[1].eq(0)) + .map((item) => { return { index: item[0].toNumber(), address: "0x" + item[1].toString(16).padStart(40, "0"), state: item[2].toNumber(), - signCount: item[3].toNumber() + signCount: item[3].toNumber(), }; }); assert.equal(scripts.length, 3); assert.equal(scriptsCountAfter, scriptCountBefore + 3); assert.equal(scripts[0].state, scriptState.Approved); - assert.equal(scripts[0].address, approvedScript.address); + assert.equal(scripts[0].address, approvedScript.address.toLowerCase()); assert.equal(scripts[0].signCount, 1); assert.equal(scripts[1].state, scriptState.Failed); - assert.equal(scripts[1].address, revertingScript.address); + assert.equal(scripts[1].address, revertingScript.address.toLowerCase()); assert.equal(scripts[1].signCount, 1); assert.equal(scripts[2].state, scriptState.Done); - assert.equal(scripts[2].address, doneScript.address); + assert.equal(scripts[2].address, doneScript.address.toLowerCase()); assert.equal(scripts[2].signCount, 1); }); - it("only a signer should execute an Approved script", async function() { + it("only a signer should execute an Approved script", async function () { const addSignerScript = await SB_addSigners.new([accounts[1]]); await stabilityBoardProxy.sign(addSignerScript.address); await testHelpers.expectThrow(stabilityBoardProxy.execute(addSignerScript.address, { from: accounts[1] })); }); - it("should not call cancelScript directly", async function() { + it("should not call cancelScript directly", async function () { const addSignerScript = await SB_addSigners.new([accounts[1]]); await stabilityBoardProxy.sign(addSignerScript.address); await testHelpers.expectThrow(stabilityBoardProxy.cancelScript(addSignerScript.address)); }); - it("should not call addSigners directly", async function() { + it("should not call addSigners directly", async function () { testHelpers.expectThrow(stabilityBoardProxy.addSigners([accounts[0]])); }); - it("should not call removeSigners directly", async function() { + it("should not call removeSigners directly", async function () { testHelpers.expectThrow(stabilityBoardProxy.removeSigners([accounts[0]])); }); - it("should dryExecute a script (success)", async function() { + it("should dryExecute a script (success)", async function () { const addSignerScript = await SB_addAndRemoveSigners.new(); try { @@ -488,14 +487,14 @@ contract("StabilityBoardProxy", accounts => { let [allSignersCountAfter, script] = await Promise.all([ stabilityBoardProxy.getAllSignersCount(), stabilityBoardProxyWeb3Contract.methods.scripts(addSignerScript.address).call(), - testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted") + testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted"), ]); assert.equal(script.state, scriptState.New); assert.equal(allSignersCountAfter.toNumber(), 1); }); - it("should dryExecute a script (revert with reason)", async function() { + it("should dryExecute a script (revert with reason)", async function () { const revertingScript = await SB_revertingScript.new(); try { @@ -510,43 +509,43 @@ contract("StabilityBoardProxy", accounts => { let [script] = await Promise.all([ stabilityBoardProxyWeb3Contract.methods.scripts(revertingScript.address).call(), - testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted") + testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted"), ]); assert.equal(script.state, scriptState.New); }); - it("should dryExecute a script (revert no reason)", async function() { + it("should dryExecute a script (revert no reason)", async function () { const revertingNoReasonScript = await SB_revertingNoReasonScript.new(); try { await stabilityBoardProxy.dryExecute(revertingNoReasonScript.address, { gas: 200000 }); assert.fail("Should be rejected"); } catch (error) { - assert.equal(error.message, "VM Exception while processing transaction: revert"); + assert.equal(error.message, "Returned error: VM Exception while processing transaction: revert"); } let [script] = await Promise.all([ stabilityBoardProxyWeb3Contract.methods.scripts(revertingNoReasonScript.address).call(), - testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted") + testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted"), ]); assert.equal(script.state, scriptState.New); }); - it("should dryExecute a script (out of gas)", async function() { + it("should dryExecute a script (out of gas)", async function () { const outOfGasScript = await SB_outOfGasScript.new(); try { await stabilityBoardProxy.dryExecute(outOfGasScript.address, { gas: 200000 }); assert.fail("Should be rejected"); } catch (error) { - assert.equal(error.message, "VM Exception while processing transaction: revert"); + assert.equal(error.message, "Returned error: VM Exception while processing transaction: revert"); } let [script] = await Promise.all([ stabilityBoardProxyWeb3Contract.methods.scripts(outOfGasScript.address).call(), - testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted") + testHelpers.assertNoEvents(stabilityBoardProxy, "ScriptExecuted"), ]); assert.equal(script.state, scriptState.New); diff --git a/test/token.js b/test/token.js index 0c84da55..87a3d38f 100644 --- a/test/token.js +++ b/test/token.js @@ -7,52 +7,52 @@ const SB_setFeeAccount = artifacts.require("./scriptTests/SB_setFeeAccount.sol") let augmintToken; let stabilityBoardProxy; -contract("AugmintToken tests", accounts => { +contract("AugmintToken tests", (accounts) => { before(async () => { augmintToken = tokenTestHelpers.augmintToken; - stabilityBoardProxy = StabilityBoardProxy.at(StabilityBoardProxy.address); + stabilityBoardProxy = await StabilityBoardProxy.deployed(); }); - it("shouldn't create a token contract without feeAccount", async function() { + it("shouldn't create a token contract without feeAccount", async function () { await testHelpers.expectThrow( AugmintToken.new( accounts[0], "Augmint Euro", // name - "AEUR", // symbol - "EUR", // peggedSymbol + web3.utils.asciiToHex("AEUR"), // symbol + web3.utils.asciiToHex("EUR"), // peggedSymbol 2, // decimals - 0 // feeaccount + "0x0000000000000000000000000000000000000000" // feeaccount ) ); }); - it("shouldn't create a token contract without token name", async function() { + it("shouldn't create a token contract without token name", async function () { await testHelpers.expectThrow( AugmintToken.new( accounts[0], "", // name - "AEUR", // symbol - "EUR", // peggedSymbol + web3.utils.asciiToHex("AEUR"), // symbol + web3.utils.asciiToHex("EUR"), // peggedSymbol 2, // decimals tokenTestHelpers.feeAccount.address ) ); }); - it("shouldn't create a token contract without token symbol", async function() { + it("shouldn't create a token contract without token symbol", async function () { await testHelpers.expectThrow( AugmintToken.new( accounts[0], "Augmint Euro", // name "", // symbol - "EUR", // peggedSymbol + web3.utils.asciiToHex("EUR"), // peggedSymbol 2, // decimals, tokenTestHelpers.feeAccount.address ) ); }); - it("should change feeAccount", async function() { + it("should change feeAccount", async function () { const newFeeAccount = accounts[2]; const setFeeAccountScript = await SB_setFeeAccount.new(augmintToken.address, newFeeAccount); @@ -64,24 +64,22 @@ contract("AugmintToken tests", accounts => { const [actualFeeAccount] = await Promise.all([ augmintToken.feeAccount(), testHelpers.assertEvent(augmintToken, "FeeAccountChanged", { - newFeeAccount - }) + newFeeAccount, + }), ]); assert.equal(actualFeeAccount, newFeeAccount); }); - it("should not call setFeeAccount directly", async function() { + it("should not call setFeeAccount directly", async function () { const newFeeAccount = accounts[2]; await testHelpers.expectThrow(augmintToken.setFeeAccount(newFeeAccount, { from: accounts[1] })); }); - it("should change token name if caller has permission", async function() { + it("should change token name if caller has permission", async function () { const oldName = await augmintToken.name(); - await testHelpers.expectThrow( - augmintToken.setName("Unauthorized Name", { from: accounts[1] }) - ); + await testHelpers.expectThrow(augmintToken.setName("Unauthorized Name", { from: accounts[1] })); assert.equal(await augmintToken.name(), oldName); const newName = "New Name for Old Token"; @@ -93,12 +91,10 @@ contract("AugmintToken tests", accounts => { assert.equal(await augmintToken.name(), oldName); }); - it("should change token symbol if caller has permission", async function() { + it("should change token symbol if caller has permission", async function () { const oldSymbol = await augmintToken.symbol(); - await testHelpers.expectThrow( - augmintToken.setSymbol("UNAUTHORIZED", { from: accounts[1] }) - ); + await testHelpers.expectThrow(augmintToken.setSymbol("UNAUTHORIZED", { from: accounts[1] })); assert.equal(await augmintToken.symbol(), oldSymbol); const newSymbol = "NEW"; diff --git a/test/tokenConversion.js b/test/tokenConversion.js index 238887d3..510605e5 100644 --- a/test/tokenConversion.js +++ b/test/tokenConversion.js @@ -3,12 +3,14 @@ const testHelpers = require("./helpers/testHelpers.js"); const MonetarySupervisor = artifacts.require("./MonetarySupervisor.sol"); const AugmintToken = artifacts.require("./TokenAEur.sol"); +const BN = web3.utils.BN; + let augmintToken = null; let monetarySupervisor = null; let newMS; let newToken; -contract("token conversion tests", accounts => { +contract("token conversion tests", (accounts) => { before(async () => { augmintToken = tokenTestHelpers.augmintToken; monetarySupervisor = tokenTestHelpers.monetarySupervisor; @@ -26,14 +28,14 @@ contract("token conversion tests", accounts => { ); await Promise.all([ - tokenTestHelpers.feeAccount.grantPermission(newMS.address, "NoTransferFee"), - newToken.grantPermission(newMS.address, "MonetarySupervisor"), - newToken.grantPermission(accounts[0], "StabilityBoard"), - newMS.grantPermission(accounts[0], "StabilityBoard") + tokenTestHelpers.feeAccount.grantPermission(newMS.address, web3.utils.asciiToHex("NoTransferFee")), + newToken.grantPermission(newMS.address, web3.utils.asciiToHex("MonetarySupervisor")), + newToken.grantPermission(accounts[0], web3.utils.asciiToHex("StabilityBoard")), + newMS.grantPermission(accounts[0], web3.utils.asciiToHex("StabilityBoard")), ]); }); - it("should set accepted legacy Augmint token", async function() { + it("should set accepted legacy Augmint token", async function () { const legacyToken = accounts[1]; const tx = await monetarySupervisor.setAcceptedLegacyAugmintToken(legacyToken, true); testHelpers.logGasUse(this, tx, "setAcceptedLegacyAugmintToken"); @@ -42,8 +44,8 @@ contract("token conversion tests", accounts => { monetarySupervisor.acceptedLegacyAugmintTokens(legacyToken), testHelpers.assertEvent(monetarySupervisor, "AcceptedLegacyAugmintTokenChanged", { augmintTokenAddress: legacyToken, - newAcceptedState: true - }) + newAcceptedState: true, + }), ]); assert.equal(newState, true); @@ -55,32 +57,32 @@ contract("token conversion tests", accounts => { monetarySupervisor.acceptedLegacyAugmintTokens(legacyToken), testHelpers.assertEvent(monetarySupervisor, "AcceptedLegacyAugmintTokenChanged", { augmintTokenAddress: legacyToken, - newAcceptedState: false - }) + newAcceptedState: false, + }), ]); assert.equal(newState, false); }); - it("only permitted set accepted legacy Augmint token", async function() { + it("only permitted set accepted legacy Augmint token", async function () { await testHelpers.expectThrow( monetarySupervisor.setAcceptedLegacyAugmintToken(accounts[1], false, { from: accounts[1] }) ); }); - it("should convert legacy tokens", async function() { - const amount = 50000; + it("should convert legacy tokens", async function () { + const amount = new BN(50000); const account = accounts[0]; await Promise.all([ tokenTestHelpers.issueToken(accounts[0], account, amount), - newMS.setAcceptedLegacyAugmintToken(augmintToken.address, true) + newMS.setAcceptedLegacyAugmintToken(augmintToken.address, true), ]); const [oldTokenSupplyBefore, newTokenSupplyBefore, oldTokenBalBefore, newTokenBalBefore] = await Promise.all([ augmintToken.totalSupply(), newToken.totalSupply(), augmintToken.balanceOf(account), - newToken.balanceOf(account) + newToken.balanceOf(account), ]); const tx = await augmintToken.transferAndNotify(newMS.address, amount, 0, { from: account }); @@ -94,13 +96,13 @@ contract("token conversion tests", accounts => { testHelpers.assertEvent(newToken, "Transfer", { from: "0x0000000000000000000000000000000000000000", to: account, - amount: amount + amount: amount.toString(), }), testHelpers.assertEvent(newMS, "LegacyTokenConverted", { oldTokenAddress: augmintToken.address, account, - amount - }) + amount: amount.toString(), + }), ]); assert.equal(oldTokenSupplyAfter.toString(), oldTokenSupplyBefore.sub(amount).toString(), "old Token Supply"); @@ -109,13 +111,13 @@ contract("token conversion tests", accounts => { assert.equal(newTokenBalAfter.toString(), newTokenBalBefore.add(amount).toString(), "new token balance"); }); - it("only accepted tokens should be converted", async function() { + it("only accepted tokens should be converted", async function () { const amount = 1000; const account = accounts[0]; await Promise.all([ newMS.setAcceptedLegacyAugmintToken(augmintToken.address, false), - tokenTestHelpers.issueToken(accounts[0], account, amount) + tokenTestHelpers.issueToken(accounts[0], account, amount), ]); await testHelpers.expectThrow(augmintToken.transferAndNotify(newMS.address, amount, 0, { from: account })); diff --git a/test/tokenTransfer.js b/test/tokenTransfer.js index e5db3246..26d17c5c 100644 --- a/test/tokenTransfer.js +++ b/test/tokenTransfer.js @@ -1,115 +1,123 @@ const testHelpers = new require("./helpers/testHelpers.js"); const tokenTestHelpers = new require("./helpers/tokenTestHelpers.js"); +const BN = web3.utils.BN; + let augmintToken = null; let minFee, maxFee, feePt, minFeeAmount, maxFeeAmount; let snapshotId; -contract("Transfer Augmint tokens tests", accounts => { - before(async function() { +contract("Transfer Augmint tokens tests", (accounts) => { + before(async function () { augmintToken = tokenTestHelpers.augmintToken; + await Promise.all([ tokenTestHelpers.issueToken(accounts[0], accounts[0], 500000000), - tokenTestHelpers.issueToken(accounts[0], accounts[1], 500000000) + tokenTestHelpers.issueToken(accounts[0], accounts[1], 500000000), ]); - [feePt, minFee, maxFee] = await tokenTestHelpers.feeAccount.transferFee(); - minFeeAmount = minFee.div(feePt).mul(1000000); - maxFeeAmount = maxFee.div(feePt).mul(1000000); + + const feeParams = await tokenTestHelpers.feeAccount.transferFee(); + feePt = feeParams.pt; + minFee = feeParams.min; + maxFee = feeParams.max; + + minFeeAmount = minFee.mul(testHelpers.PPM_DIV).div(feePt); + maxFeeAmount = maxFee.mul(testHelpers.PPM_DIV).div(feePt); }); - beforeEach(async function() { + beforeEach(async function () { snapshotId = await testHelpers.takeSnapshot(); }); - afterEach(async function() { + afterEach(async function () { await testHelpers.revertSnapshot(snapshotId); }); - it("Should be able to transfer tokens between accounts (without narrative, min fee)", async function() { + it("Should be able to transfer tokens between accounts (without narrative, min fee)", async function () { await tokenTestHelpers.transferTest(this, { from: accounts[1], to: accounts[2], - amount: minFeeAmount.sub(10), - narrative: "" + amount: minFeeAmount.sub(new BN(10)), + narrative: "", }); }); - it("Should be able to transfer tokens between accounts (with narrative, max fee)", async function() { + it("Should be able to transfer tokens between accounts (with narrative, max fee)", async function () { await tokenTestHelpers.transferTest(this, { from: accounts[1], to: accounts[2], - amount: maxFeeAmount.add(10), - narrative: "test narrative" + amount: maxFeeAmount.add(new BN(10)), + narrative: "test narrative", }); }); - it("transfer fee % should deducted when fee % is between min and max fee", async function() { + it("transfer fee % should deducted when fee % is between min and max fee", async function () { await tokenTestHelpers.transferTest(this, { from: accounts[1], to: accounts[2], - amount: maxFeeAmount.sub(10), - narrative: "" + amount: maxFeeAmount.sub(new BN(10)), + narrative: "", }); }); - it("Should be able to transfer 0 amount without narrative", async function() { + it("Should be able to transfer 0 amount without narrative", async function () { await tokenTestHelpers.transferTest(this, { from: accounts[1], to: accounts[2], - amount: 0, - narrative: "" + amount: new BN(0), + narrative: "", }); }); - it("Should be able to transfer 0 with narrative", async function() { + it("Should be able to transfer 0 with narrative", async function () { await tokenTestHelpers.transferTest(this, { from: accounts[1], to: accounts[2], - amount: 0, - narrative: "test narrative" + amount: new BN(0), + narrative: "test narrative", }); }); - it("Shouldn't be able to transfer tokens when token balance is insufficient", async function() { + it("Shouldn't be able to transfer tokens when token balance is insufficient", async function () { await testHelpers.expectThrow( - augmintToken.transfer(accounts[2], (await augmintToken.balanceOf(accounts[1])).plus(1), { - from: accounts[1] + augmintToken.transfer(accounts[2], (await augmintToken.balanceOf(accounts[1])).add(new BN(1)), { + from: accounts[1], }) ); }); - it("Should be able to transfer tokens between the same accounts", async function() { + it("Should be able to transfer tokens between the same accounts", async function () { await tokenTestHelpers.transferTest(this, { from: accounts[1], to: accounts[1], - amount: 100 + amount: new BN(100), }); }); - it("Shouldn't be able to transfer to 0x0", async function() { + it("Shouldn't be able to transfer to 0x0", async function () { await testHelpers.expectThrow( - augmintToken.transfer("0x0", 20000, { - from: accounts[1] + augmintToken.transfer("0x0000000000000000000000000000000000000000", 20000, { + from: accounts[1], }) ); }); - it("should have zero fee if 'to' or 'from' is NoTransferFee", async function() { - await tokenTestHelpers.feeAccount.grantPermission(accounts[0], "NoTransferFee"); + it("should have zero fee if 'to' or 'from' is NoTransferFee", async function () { + await tokenTestHelpers.feeAccount.grantPermission(accounts[0], web3.utils.asciiToHex("NoTransferFee")); await tokenTestHelpers.transferTest(this, { from: accounts[0], to: accounts[1], - amount: 10000, + amount: new BN(10000), narrative: "", - fee: 0 + fee: new BN(0), }); await tokenTestHelpers.transferTest(this, { from: accounts[1], to: accounts[0], - amount: 10000, + amount: new BN(10000), narrative: "transfer 0 test", - fee: 0 + fee: new BN(0), }); }); }); diff --git a/test/tokenTransferFrom.js b/test/tokenTransferFrom.js index 5fea229e..7c77dbf5 100644 --- a/test/tokenTransferFrom.js +++ b/test/tokenTransferFrom.js @@ -5,48 +5,52 @@ let augmintToken = null; let maxFee = null; let snapshotId; -contract("TransferFrom AugmintToken tests", accounts => { - before(async function() { +const BN = web3.utils.BN; + +contract("TransferFrom AugmintToken tests", (accounts) => { + before(async function () { augmintToken = tokenTestHelpers.augmintToken; - [[, , maxFee], ,] = await Promise.all([ + const [feeParams, ,] = await Promise.all([ tokenTestHelpers.feeAccount.transferFee(), tokenTestHelpers.issueToken(accounts[0], accounts[0], 500000000), - tokenTestHelpers.issueToken(accounts[0], accounts[1], 500000000) + tokenTestHelpers.issueToken(accounts[0], accounts[1], 500000000), ]); + + maxFee = feeParams.max; }); - beforeEach(async function() { + beforeEach(async function () { snapshotId = await testHelpers.takeSnapshot(); }); - afterEach(async function() { + afterEach(async function () { await testHelpers.revertSnapshot(snapshotId); }); - it("transferFrom", async function() { + it("transferFrom", async function () { const from = accounts[1]; const to = accounts[2]; const transfer1 = { from: from, to: to, - amount: 75000 + amount: new BN(75000), }; const fee1 = await tokenTestHelpers.getTransferFee(transfer1); const transfer2 = { from: from, to: to, - amount: 25000, - narrative: "Test with narrative" + amount: new BN(25000), + narrative: "Test with narrative", }; const fee2 = await tokenTestHelpers.getTransferFee(transfer2); const expApprove = { owner: from, spender: to, - value: transfer1.amount + fee1 + transfer2.amount + fee2 + value: transfer1.amount + fee1 + transfer2.amount + fee2, }; await tokenTestHelpers.approveTest(this, expApprove); @@ -54,11 +58,11 @@ contract("TransferFrom AugmintToken tests", accounts => { await tokenTestHelpers.transferFromTest(this, transfer2); }); - it("transferFrom spender to send to different to than itself", async function() { + it("transferFrom spender to send to different to than itself", async function () { const expApprove = { owner: accounts[1], spender: accounts[2], - value: 200000 + value: 200000, }; await tokenTestHelpers.approveTest(this, expApprove); @@ -67,115 +71,115 @@ contract("TransferFrom AugmintToken tests", accounts => { from: expApprove.owner, spender: expApprove.spender, to: accounts[2], - amount: Math.round(expApprove.value / 2), - narrative: "Test with narrative" + amount: new BN(Math.round(expApprove.value / 2)), + narrative: "Test with narrative", }); }); - it("Shouldn't approve 0x0 spender", async function() { + it("Shouldn't approve 0x0 spender", async function () { await testHelpers.expectThrow( - augmintToken.approve("0x0", 100, { - from: accounts[2] + augmintToken.approve("0x0000000000000000000000000000000000000000", 100, { + from: accounts[2], }) ); }); - it("transferFrom only if approved", async function() { + it("transferFrom only if approved", async function () { await testHelpers.expectThrow( augmintToken.transferFrom(accounts[0], accounts[2], 100, { - from: accounts[2] + from: accounts[2], }) ); }); - it("should transferFrom 0 amount when some approved", async function() { + it("should transferFrom 0 amount when some approved", async function () { const expApprove = { owner: accounts[1], spender: accounts[2], - value: 100000 + value: 100000, }; await tokenTestHelpers.approveTest(this, expApprove); await tokenTestHelpers.transferFromTest(this, { from: expApprove.owner, spender: expApprove.spender, - amount: 0, - narrative: "Test with narrative" + amount: new BN(0), + narrative: "Test with narrative", }); }); - it("shouldn't transferFrom even 0 amount when not approved", async function() { + it("shouldn't transferFrom even 0 amount when not approved", async function () { const expApprove = { owner: accounts[1], spender: accounts[2], - value: 0 + value: 0, }; await tokenTestHelpers.approveTest(this, expApprove); await testHelpers.expectThrow( augmintToken.transferFrom(expApprove.owner, expApprove.spender, 0, { - from: expApprove.spender + from: expApprove.spender, }) ); }); - it("shouldn't transferFrom to 0x0", async function() { + it("shouldn't transferFrom to 0x0", async function () { const expApprove = { owner: accounts[1], spender: accounts[2], - value: 10000 + value: 10000, }; await tokenTestHelpers.approveTest(this, expApprove); await testHelpers.expectThrow( - augmintToken.transferFrom(expApprove.owner, "0x0", 0, { - from: expApprove.spender + augmintToken.transferFrom(expApprove.owner, "0x0000000000000000000000000000000000000000", 0, { + from: expApprove.spender, }) ); }); - it("transferFrom only if approved is greater than amount", async function() { + it("transferFrom only if approved is greater than amount", async function () { const expApprove = { owner: accounts[1], spender: accounts[2], - value: 200000 + value: 200000, }; await tokenTestHelpers.approveTest(this, expApprove); await testHelpers.expectThrow( augmintToken.transferFrom(expApprove.owner, expApprove.spender, expApprove.value + 1, { - from: expApprove.spender + from: expApprove.spender, }) ); }); - it("transferFrom only if balance is enough", async function() { + it("transferFrom only if balance is enough", async function () { await augmintToken.transfer(accounts[1], maxFee, { from: accounts[0] }); // to cover the transfer fee const amount = await augmintToken.balanceOf(accounts[0]); const expApprove = { owner: accounts[1], spender: accounts[2], - value: amount + value: amount, }; await tokenTestHelpers.approveTest(this, expApprove); await testHelpers.expectThrow( augmintToken.transferFrom(expApprove.owner, expApprove.spender, expApprove.value + 1, { - from: expApprove.spender + from: expApprove.spender, }) ); }); - it("should have zero fee for transferFrom if 'to' is NoTransferFee", async function() {}); + it("should have zero fee for transferFrom if 'to' is NoTransferFee", async function () {}); - it("should have zero fee for transferFrom if 'from' or 'to' is NoTransferFee ", async function() { - await tokenTestHelpers.feeAccount.grantPermission(accounts[0], "NoTransferFee"); + it("should have zero fee for transferFrom if 'from' or 'to' is NoTransferFee ", async function () { + await tokenTestHelpers.feeAccount.grantPermission(accounts[0], web3.utils.asciiToHex("NoTransferFee")); const expApprove1 = { owner: accounts[0], spender: accounts[1], to: accounts[2], - value: 100000 + value: 100000, }; await tokenTestHelpers.approveTest(this, expApprove1); @@ -183,15 +187,15 @@ contract("TransferFrom AugmintToken tests", accounts => { from: expApprove1.owner, spender: expApprove1.spender, to: expApprove1.to, - amount: expApprove1.value, - fee: 0 + amount: new BN(expApprove1.value), + fee: new BN(0), }); const expApprove2 = { owner: accounts[1], spender: accounts[0], to: accounts[0], - value: 100000 + value: 100000, }; await tokenTestHelpers.approveTest(this, expApprove2); @@ -199,21 +203,21 @@ contract("TransferFrom AugmintToken tests", accounts => { from: expApprove2.owner, spender: expApprove2.spender, to: expApprove2.to, - amount: expApprove2.value, - fee: 0 + amount: new BN(expApprove2.value), + fee: new BN(0), }); }); - it("increaseApproval", async function() { + it("increaseApproval", async function () { const expApprove = { owner: accounts[0], spender: accounts[1], - value: 100000 + value: new BN(100000), }; const startingAllowance = await augmintToken.allowance(expApprove.owner, expApprove.spender); const tx = await augmintToken.increaseApproval(expApprove.spender, expApprove.value, { - from: expApprove.owner + from: expApprove.owner, }); testHelpers.logGasUse(this, tx, "increaseApproval"); @@ -228,19 +232,19 @@ contract("TransferFrom AugmintToken tests", accounts => { ); }); - it("decreaseApproval", async function() { + it("decreaseApproval", async function () { const startingAllowance = 300000; const decreaseValue = 50000; const expApprove = { owner: accounts[0], spender: accounts[1], - value: startingAllowance - decreaseValue + value: startingAllowance - decreaseValue, }; await augmintToken.approve(expApprove.spender, startingAllowance, { from: expApprove.owner }); const tx = await augmintToken.decreaseApproval(expApprove.spender, decreaseValue, { - from: expApprove.owner + from: expApprove.owner, }); testHelpers.logGasUse(this, tx, "decreaseApproval"); @@ -255,19 +259,19 @@ contract("TransferFrom AugmintToken tests", accounts => { ); }); - it("decreaseApproval to 0", async function() { + it("decreaseApproval to 0", async function () { const startingAllowance = 2000; const decreaseValue = 3000; const expApprove = { owner: accounts[0], spender: accounts[1], - value: 0 + value: 0, }; await augmintToken.approve(expApprove.spender, startingAllowance, { from: expApprove.owner }); const tx = await augmintToken.decreaseApproval(expApprove.spender, decreaseValue, { - from: expApprove.owner + from: expApprove.owner, }); testHelpers.logGasUse(this, tx, "decreaseApproval"); diff --git a/truffle.js b/truffle-config.js similarity index 65% rename from truffle.js rename to truffle-config.js index 286d1264..f1e7062f 100644 --- a/truffle.js +++ b/truffle-config.js @@ -8,37 +8,47 @@ const MNEMONIC = process.env.DEPLOYER_MNEMONIC; const INFURA_API_KEY = process.env.INFURA_API_KEY; module.exports = { - /* TODO: tempfix because of issue: https://github.com/trufflesuite/truffle-migrate/issues/10 - for now ./build/contracts need to be copied manually to src/contractsBuild folder after every truffle migrate - */ - //contracts_build_directory: './src/contractsBuild', - //working_directory: './contracts', - //migrations_directory: './migrations', + // Workaround of --migrations_directory flag removed truffle test. + // We will pass --migrations_directory to truffle migrate instead (./migrations) + migrations_directory: "./migrations_null", + compilers: { + solc: { + version: "0.4.24", + docker: false, // TODO: check if we could use this for better docker integration + parser: "solcjs", // Leverages solc-js purely for speedy parsing + settings: { + optimizer: { + enabled: false, + }, + // evmVersion: // Default: "petersburg" + }, + }, + }, networks: { development: { host: "localhost", port: 8545, network_id: "999", - gasPrice: 1000000000 // 1 GWEI + gasPrice: 1000000000, // 1 GWEI }, coverage: { host: "localhost", network_id: "*", port: 8555, // <-- If you change this, also set the port option in .solcover.js. gas: 0xfffffffffff, // <-- Use this high gas value - gasPrice: 0x01 // <-- Use this low gas price + gasPrice: 0x01, // <-- Use this low gas price }, truffleLocal: { host: "localhost", port: 9545, network_id: "4447", - gas: 4707806 + gas: 4707806, }, privatechain: { host: "localhost", port: 8565, network_id: "1976", - gas: 4707806 + gas: 4707806, }, rinkeby: { host: "localhost", // Connect to geth on the specified @@ -46,7 +56,7 @@ module.exports = { from: "0xae653250B4220835050B75D3bC91433246903A95", // default address to use for any transaction Truffle makes during migrations network_id: 4, gas: 4700000, // Gas limit used for deploys - gasPrice: 1000000000 // 1 Gwei + gasPrice: 1000000000, // 1 Gwei }, rinkebyFork: { // Rinkeby deploy Forks for dry runs. @@ -57,23 +67,19 @@ module.exports = { from: "0xae653250B4220835050B75D3bC91433246903A95", // default address to use for any transaction Truffle makes during migrations network_id: 4, gas: 4700000, // Gas limit used for deploys - gasPrice: 1000000000 // 1 Gwei + gasPrice: 1000000000, // 1 Gwei }, ropsten: { host: "localhost", // Connect to geth on the specified port: 8545, network_id: 3, gas: 4700000, // Gas limit used for deploys - gasPrice: 140000000000 // 140 Gwei + gasPrice: 140000000000, // 140 Gwei }, mainnet: { - provider: () => - new HDWalletProvider( - MNEMONIC, - "https://mainnet.infura.io/" + INFURA_API_KEY - ), + provider: () => new HDWalletProvider(MNEMONIC, "https://mainnet.infura.io/" + INFURA_API_KEY), network_id: 1, - gasPrice: 6000000000 // 6 Gwei - } - } + gasPrice: 6000000000, // 6 Gwei + }, + }, }; diff --git a/yarn.lock b/yarn.lock index a11788b5..b4f3ebe4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,10 +23,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@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== + "@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 "10.17.32" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.32.tgz#4ef6ff8b842ea0eb3fcbc4331489f4ae64036fa8" + integrity sha512-EUq+cjH/3KCzQHikGnNbWAGe548IFLSm93Vl8xA7EuYEEATiyOVDyEVuGkowL7c9V69FF/RiZSAOCFPApMs/ig== abbrev@1: version "1.1.1" @@ -85,6 +90,11 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= +ansi-colors@4.1.1: + version "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-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -117,11 +127,32 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: 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== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + any-promise@1.3.0, any-promise@^1.0.0, any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +app-module-path@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" + integrity sha1-ZBqlXft9am8KgUHEucCqULbCTdU= + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -134,6 +165,16 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= +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== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.4" + asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -328,15 +369,15 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bignumber.js@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-5.0.0.tgz#fbce63f09776b3000a83185badcde525daf34833" - integrity sha512-KWTu6ZMVk9sxlDJQh2YH1UOnfDP8O8TpxUxgQG/vKASoSnEjK9aVuOueFaPcQEYQ5fyNXNTOYwYw3099RYebWg== - "bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": version "2.0.7" resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" +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.3.1, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" @@ -415,6 +456,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -425,6 +473,11 @@ browser-stdout@1.3.0: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" integrity sha1-81HTKWnTL6XXpVZxVCY9korjvR8= +browser-stdout@1.3.1: + version "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: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -555,7 +608,7 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^5.0.0: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -585,6 +638,14 @@ chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -595,6 +656,21 @@ charenc@~0.0.1: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= +chokidar@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" + integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== + dependencies: + 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.4.0" + optionalDependencies: + fsevents "~2.1.2" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -645,11 +721,23 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -844,7 +932,7 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@^4.0.1: +debug@4.1.1, debug@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -926,6 +1014,13 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -961,6 +1056,11 @@ diff@3.3.1: resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" integrity sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww== +diff@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -1061,6 +1161,68 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" +es-abstract@^1.17.0-next.1, 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== + 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" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.0: + version "1.18.0-next.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.0.tgz#b302834927e624d8e5837ed48224291f2c66e6fc" + integrity sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ== + 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-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" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + 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== + dependencies: + es-abstract "^1.17.4" + has-symbols "^1.0.1" + is-arguments "^1.0.4" + is-map "^2.0.1" + is-set "^2.0.1" + is-string "^1.0.5" + isarray "^2.0.5" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + 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" @@ -1097,6 +1259,11 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@1.8.x: version "1.8.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" @@ -1472,6 +1639,13 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -1485,6 +1659,14 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -1509,6 +1691,13 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +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== + dependencies: + is-buffer "~2.0.3" + flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" @@ -1543,17 +1732,6 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.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" @@ -1577,6 +1755,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= +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" @@ -1587,6 +1770,11 @@ fstream@^1.0.12, fstream@^1.0.8: mkdirp ">=0.5 0" rimraf "2" +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: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -1648,6 +1836,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -1660,26 +1855,26 @@ glob@7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^5.0.15: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= +glob@7.1.6, glob@^7.0.0, glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: + fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "2 || 3" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.3: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= dependencies: - fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "2 || 3" once "^1.3.0" path-is-absolute "^1.0.0" @@ -1721,7 +1916,7 @@ got@7.1.0, got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" -graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== @@ -1731,7 +1926,7 @@ growl@1.10.3: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q== -"growl@~> 1.10.0": +growl@1.10.5, "growl@~> 1.10.0": version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== @@ -1783,11 +1978,21 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + has-to-string-tag-x@^1.2.0: version "1.4.1" resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" @@ -1795,6 +2000,13 @@ has-to-string-tag-x@^1.2.0: dependencies: has-symbol-support-x "^1.4.1" +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + hash-base@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" @@ -1825,6 +2037,11 @@ he@1.1.1: resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -1994,16 +2211,43 @@ 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-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== + 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@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@~1.1.1: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +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-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-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -2038,7 +2282,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -2050,11 +2294,26 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= +is-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== + 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-negative-zero@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" + integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" @@ -2065,16 +2324,40 @@ 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-regex@^1.1.0, 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== + dependencies: + has-symbols "^1.0.1" + is-retry-allowed@^1.0.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== + is-stream@^1.0.0, is-stream@^1.1.0: version "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: + 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== + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -2085,6 +2368,11 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -2135,6 +2423,19 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" +iterate-iterator@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.1.tgz#1693a768c1ddd79c969051459453f082fe82e9f6" + integrity sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw== + +iterate-value@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" + integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== + dependencies: + es-get-iterator "^1.0.2" + iterate-iterator "^1.0.1" + joi@^13.0.0: version "13.7.0" resolved "https://registry.yarnpkg.com/joi/-/joi-13.7.0.tgz#cfd85ebfe67e8a1900432400b4d03bbd93fb879f" @@ -2164,7 +2465,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@3.x, js-yaml@^3.11.0, js-yaml@^3.13.1: +js-yaml@3.14.0, js-yaml@3.x, js-yaml@^3.11.0, js-yaml@^3.13.1: 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== @@ -2254,13 +2555,6 @@ keccakjs@^0.2.1: browserify-sha3 "^0.0.4" sha3 "^1.2.2" -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -2307,6 +2601,13 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.assign@^4.0.3, lodash.assign@^4.0.6: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -2322,6 +2623,13 @@ log-driver@^1.2.7: resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== +log-symbols@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^4.0.0" + loose-envify@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -2380,11 +2688,6 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -2452,7 +2755,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@^3.0.4: +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -2495,6 +2798,37 @@ mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1: dependencies: minimist "^1.2.5" +mocha@8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.2.tgz#d67fad13300e4f5cd48135a935ea566f96caf827" + integrity sha512-I8FRAcuACNMLQn3lS4qeWLxXqLvGf6r2CaLstDpZmMUUSmvW6Cnm1AuHxgbc7ctZVRcfwspCRbDHymPsi3dkJw== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.4.2" + debug "4.1.1" + diff "4.0.2" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.6" + growl "1.10.5" + he "1.2.0" + js-yaml "3.14.0" + 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" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.0.0" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.1" + mocha@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" @@ -2536,7 +2870,7 @@ 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.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -2617,6 +2951,11 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -2647,6 +2986,36 @@ object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1 resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +object-inspect@^1.7.0, object-inspect@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +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== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" + integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.0" + has-symbols "^1.0.1" + object-keys "^1.1.1" + oboe@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.3.tgz#2b4865dbd46be81225713f4e9bfe4bcf4f680a4f" @@ -2745,6 +3114,13 @@ p-limit@^2.0.0: dependencies: 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== + dependencies: + p-try "^2.0.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -2752,6 +3128,13 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-timeout@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" @@ -2816,6 +3199,11 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2871,6 +3259,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -2923,6 +3316,17 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise.allsettled@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" + integrity sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg== + dependencies: + array.prototype.map "^1.0.1" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + iterate-value "^1.0.0" + proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -2992,7 +3396,7 @@ random-seed@0.3.0: dependencies: json-stringify-safe "^5.0.1" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -3066,6 +3470,13 @@ readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + 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" @@ -3135,11 +3546,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= - require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -3180,7 +3586,7 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -rimraf@2, rimraf@^2.2.8: +rimraf@2: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -3289,7 +3695,7 @@ seek-bzip@^1.0.5: dependencies: commander "^2.8.1" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.5.1: +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.5.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -3313,6 +3719,13 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" +serialize-javascript@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + 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" @@ -3428,17 +3841,6 @@ sol-explore@^1.6.2: resolved "https://registry.yarnpkg.com/sol-explore/-/sol-explore-1.6.2.tgz#43ae8c419fd3ac056a05f8a9d1fb1022cd41ecc2" integrity sha1-Q66MQZ/TrAVqBfip0fsQIs1B7MI= -solc@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.24.tgz#354f14b269b38cbaa82a47d1ff151723502b954e" - integrity sha512-2xd7Cf1HeVwrIb6Bu1cwY2/TaLRodrppCq3l7rhLimFQgmxptXhTC3+/wesVLpB09F1A2kZgvbMOgH7wvhFnBQ== - dependencies: - fs-extra "^0.30.0" - memorystream "^0.3.1" - require-from-string "^1.1.0" - semver "^5.3.0" - yargs "^4.7.1" - solidity-coverage@0.5.11: version "0.5.11" resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.5.11.tgz#1ee45f6d98b75a615aadb8f9aa7db4a2b32258e7" @@ -3569,7 +3971,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.1.0: +"string-width@^1.0.2 || 2", string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -3586,6 +3988,22 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +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== + dependencies: + 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== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -3655,6 +4073,11 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" +strip-json-comments@3.0.1: + version "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@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -3667,6 +4090,13 @@ supports-color@4.4.0: dependencies: has-flag "^2.0.0" +supports-color@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + 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" @@ -3686,6 +4116,13 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.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" + swarm-js@0.1.37: version "0.1.37" resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.37.tgz#27d485317a340bbeec40292af783cc10acfa4663" @@ -3794,6 +4231,13 @@ to-fast-properties@^1.0.3: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" @@ -3839,14 +4283,14 @@ truffle-hdwallet-provider@1.0.13: web3 "1.0.0-beta.37" websocket "^1.0.28" -truffle@4.1.14: - version "4.1.14" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-4.1.14.tgz#8d2c298e29abf9b1e486e44ff9faca6d34bb9030" - integrity sha512-e7tTLvKP3bN9dE7MagfWyFjy4ZgoEGbeujECy1me1ENBzbj/aO/+45gs72qsL3+3IkCNNcWNOJjjrm8BYZZNNg== +truffle@5.1.43: + version "5.1.43" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.43.tgz#544e7b0955b6728a00761a86555c1eb259313266" + integrity sha512-KXda/70RAG9TBdQta8JEwVQmL9r/AZzU++5aZkrF4/nDosund8SV1yM9CcDTib4xLWuMaB15YyOC5r163QdLAw== dependencies: - mocha "^4.1.0" + app-module-path "^2.2.0" + mocha "8.1.2" original-require "1.0.1" - solc "0.4.24" tslib@^1.9.0: version "1.13.0" @@ -4024,15 +4468,6 @@ wait-on@3.2.0: request "^2.88.0" rx "^4.1.0" -web3-bzz@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.34.tgz#068d37777ab65e5c60f8ec8b9a50cfe45277929c" - integrity sha1-Bo03d3q2Xlxg+OyLmlDP5FJ3kpw= - dependencies: - got "7.1.0" - swarm-js "0.1.37" - underscore "1.8.3" - web3-bzz@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.37.tgz#59e3e4f5a9d732731008fe9165c3ec8bf85d502f" @@ -4042,15 +4477,6 @@ web3-bzz@1.0.0-beta.37: swarm-js "0.1.37" underscore "1.8.3" -web3-core-helpers@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.34.tgz#b168da00d3e19e156bc15ae203203dd4dfee2d03" - integrity sha1-sWjaANPhnhVrwVriAyA91N/uLQM= - dependencies: - underscore "1.8.3" - web3-eth-iban "1.0.0-beta.34" - web3-utils "1.0.0-beta.34" - web3-core-helpers@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz#04ec354b7f5c57234c309eea2bda9bf1f2fe68ba" @@ -4060,17 +4486,6 @@ web3-core-helpers@1.0.0-beta.37: web3-eth-iban "1.0.0-beta.37" web3-utils "1.0.0-beta.37" -web3-core-method@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.34.tgz#ec163c8a2c490fa02a7ec15559fa7307fc7cc6dd" - integrity sha1-7BY8iixJD6AqfsFVWfpzB/x8xt0= - dependencies: - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.34" - web3-core-promievent "1.0.0-beta.34" - web3-core-subscriptions "1.0.0-beta.34" - web3-utils "1.0.0-beta.34" - web3-core-method@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.37.tgz#53d148e63f818b23461b26307afdfbdaa9457744" @@ -4082,14 +4497,6 @@ web3-core-method@1.0.0-beta.37: web3-core-subscriptions "1.0.0-beta.37" web3-utils "1.0.0-beta.37" -web3-core-promievent@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.34.tgz#a4f4fa6784bb293e82c60960ae5b56a94cd03edc" - integrity sha1-pPT6Z4S7KT6CxglgrltWqUzQPtw= - dependencies: - any-promise "1.3.0" - eventemitter3 "1.1.1" - web3-core-promievent@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.37.tgz#4e51c469d0a7ac0a969885a4dbcde8504abe5b02" @@ -4098,17 +4505,6 @@ web3-core-promievent@1.0.0-beta.37: any-promise "1.3.0" eventemitter3 "1.1.1" -web3-core-requestmanager@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.34.tgz#01f8f6cf2ae6b6f0b70c38bae1ef741b5bab215c" - integrity sha1-Afj2zyrmtvC3DDi64e90G1urIVw= - dependencies: - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.34" - web3-providers-http "1.0.0-beta.34" - web3-providers-ipc "1.0.0-beta.34" - web3-providers-ws "1.0.0-beta.34" - web3-core-requestmanager@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.37.tgz#721a75df5920621bff42d9d74f7a64413675d56b" @@ -4120,15 +4516,6 @@ web3-core-requestmanager@1.0.0-beta.37: web3-providers-ipc "1.0.0-beta.37" web3-providers-ws "1.0.0-beta.37" -web3-core-subscriptions@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.34.tgz#9fed144033f221c3cf21060302ffdaf5ef2de2de" - integrity sha1-n+0UQDPyIcPPIQYDAv/a9e8t4t4= - dependencies: - eventemitter3 "1.1.1" - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.34" - web3-core-subscriptions@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.37.tgz#40de5e2490cc05b15faa8f935c97fd48d670cd9a" @@ -4138,16 +4525,6 @@ web3-core-subscriptions@1.0.0-beta.37: underscore "1.8.3" web3-core-helpers "1.0.0-beta.37" -web3-core@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.34.tgz#121be8555e9fb00d2c5d05ddd3381d0c9e46987e" - integrity sha1-EhvoVV6fsA0sXQXd0zgdDJ5GmH4= - dependencies: - web3-core-helpers "1.0.0-beta.34" - web3-core-method "1.0.0-beta.34" - web3-core-requestmanager "1.0.0-beta.34" - web3-utils "1.0.0-beta.34" - web3-core@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.37.tgz#66c2c7000772c9db36d737ada31607ace09b7e90" @@ -4158,16 +4535,6 @@ web3-core@1.0.0-beta.37: web3-core-requestmanager "1.0.0-beta.37" web3-utils "1.0.0-beta.37" -web3-eth-abi@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.34.tgz#034533e3aa2f7e59ff31793eaea685c0ed5af67a" - integrity sha1-A0Uz46ovfln/MXk+rqaFwO1a9no= - dependencies: - bn.js "4.11.6" - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.34" - web3-utils "1.0.0-beta.34" - web3-eth-abi@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.37.tgz#55592fa9cd2427d9f0441d78f3b8d0c1359a2a24" @@ -4177,22 +4544,6 @@ web3-eth-abi@1.0.0-beta.37: underscore "1.8.3" web3-utils "1.0.0-beta.37" -web3-eth-accounts@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.34.tgz#e09142eeecc797ac3459b75e9b23946d3695f333" - integrity sha1-4JFC7uzHl6w0WbdemyOUbTaV8zM= - 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.34" - web3-core-helpers "1.0.0-beta.34" - web3-core-method "1.0.0-beta.34" - web3-utils "1.0.0-beta.34" - web3-eth-accounts@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.37.tgz#0a5a9f14a6c3bd285e001c15eb3bb38ffa4b5204" @@ -4209,20 +4560,6 @@ web3-eth-accounts@1.0.0-beta.37: web3-core-method "1.0.0-beta.37" web3-utils "1.0.0-beta.37" -web3-eth-contract@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.34.tgz#9dbb38fae7643a808427a20180470ec7415c91e6" - integrity sha1-nbs4+udkOoCEJ6IBgEcOx0FckeY= - dependencies: - underscore "1.8.3" - web3-core "1.0.0-beta.34" - web3-core-helpers "1.0.0-beta.34" - web3-core-method "1.0.0-beta.34" - web3-core-promievent "1.0.0-beta.34" - web3-core-subscriptions "1.0.0-beta.34" - web3-eth-abi "1.0.0-beta.34" - web3-utils "1.0.0-beta.34" - web3-eth-contract@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.37.tgz#87f93c95ed16f320ba54943b7886890de6766013" @@ -4251,14 +4588,6 @@ web3-eth-ens@1.0.0-beta.37: web3-eth-contract "1.0.0-beta.37" web3-utils "1.0.0-beta.37" -web3-eth-iban@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.34.tgz#9af458605867ccf74ea979aaf326b38ba6a5ba0c" - integrity sha1-mvRYYFhnzPdOqXmq8yazi6alugw= - dependencies: - bn.js "4.11.6" - web3-utils "1.0.0-beta.34" - web3-eth-iban@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz#313a3f18ae2ab00ba98678ea1156b09ef32a3655" @@ -4267,17 +4596,6 @@ web3-eth-iban@1.0.0-beta.37: bn.js "4.11.6" web3-utils "1.0.0-beta.37" -web3-eth-personal@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.34.tgz#9afba167342ebde5420bcd5895c3f6c34388f205" - integrity sha1-mvuhZzQuveVCC81YlcP2w0OI8gU= - dependencies: - web3-core "1.0.0-beta.34" - web3-core-helpers "1.0.0-beta.34" - web3-core-method "1.0.0-beta.34" - web3-net "1.0.0-beta.34" - web3-utils "1.0.0-beta.34" - web3-eth-personal@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.37.tgz#187472f51861e2b6d45da43411801bc91a859f9a" @@ -4289,24 +4607,6 @@ web3-eth-personal@1.0.0-beta.37: web3-net "1.0.0-beta.37" web3-utils "1.0.0-beta.37" -web3-eth@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.34.tgz#74086000850c6fe6f535ef49837d6d4bb6113268" - integrity sha1-dAhgAIUMb+b1Ne9Jg31tS7YRMmg= - dependencies: - underscore "1.8.3" - web3-core "1.0.0-beta.34" - web3-core-helpers "1.0.0-beta.34" - web3-core-method "1.0.0-beta.34" - web3-core-subscriptions "1.0.0-beta.34" - web3-eth-abi "1.0.0-beta.34" - web3-eth-accounts "1.0.0-beta.34" - web3-eth-contract "1.0.0-beta.34" - web3-eth-iban "1.0.0-beta.34" - web3-eth-personal "1.0.0-beta.34" - web3-net "1.0.0-beta.34" - web3-utils "1.0.0-beta.34" - web3-eth@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.37.tgz#0e8ffcd857a5f85ae4b5f052ad831ca5c56f4f74" @@ -4326,15 +4626,6 @@ web3-eth@1.0.0-beta.37: web3-net "1.0.0-beta.37" web3-utils "1.0.0-beta.37" -web3-net@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.34.tgz#427cea2f431881449c8e38d523290f173f9ff63d" - integrity sha1-QnzqL0MYgUScjjjVIykPFz+f9j0= - dependencies: - web3-core "1.0.0-beta.34" - web3-core-method "1.0.0-beta.34" - web3-utils "1.0.0-beta.34" - web3-net@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.37.tgz#b494136043f3c6ba84fe4a47d4c028c2a63c9a8e" @@ -4344,14 +4635,6 @@ web3-net@1.0.0-beta.37: web3-core-method "1.0.0-beta.37" web3-utils "1.0.0-beta.37" -web3-providers-http@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.34.tgz#e561b52bbb43766282007d40285bfe3550c27e7a" - integrity sha1-5WG1K7tDdmKCAH1AKFv+NVDCfno= - dependencies: - web3-core-helpers "1.0.0-beta.34" - xhr2 "0.1.4" - web3-providers-http@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.37.tgz#c06efd60e16e329e25bd268d2eefc68d82d13651" @@ -4360,15 +4643,6 @@ web3-providers-http@1.0.0-beta.37: web3-core-helpers "1.0.0-beta.37" xhr2-cookies "1.1.0" -web3-providers-ipc@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.34.tgz#a1b77f1a306d73649a9c039052e40cb71328d00a" - integrity sha1-obd/GjBtc2SanAOQUuQMtxMo0Ao= - dependencies: - oboe "2.1.3" - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.34" - web3-providers-ipc@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.37.tgz#55d247e7197257ca0c3e4f4b0fe1561311b9d5b9" @@ -4378,15 +4652,6 @@ web3-providers-ipc@1.0.0-beta.37: underscore "1.8.3" web3-core-helpers "1.0.0-beta.37" -web3-providers-ws@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.34.tgz#7de70f1b83f2de36476772156becfef6e3516eb3" - integrity sha1-fecPG4Py3jZHZ3IVa+z+9uNRbrM= - dependencies: - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.34" - websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" - web3-providers-ws@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.37.tgz#77c15aebc00b75d760d22d063ac2e415bdbef72f" @@ -4396,16 +4661,6 @@ web3-providers-ws@1.0.0-beta.37: web3-core-helpers "1.0.0-beta.37" websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" -web3-shh@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.34.tgz#975061d71eaec42ccee576f7bd8f70f03844afe0" - integrity sha1-l1Bh1x6uxCzO5Xb3vY9w8DhEr+A= - dependencies: - web3-core "1.0.0-beta.34" - web3-core-method "1.0.0-beta.34" - web3-core-subscriptions "1.0.0-beta.34" - web3-net "1.0.0-beta.34" - web3-shh@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.37.tgz#3246ce5229601b525020828a56ee283307057105" @@ -4416,19 +4671,6 @@ web3-shh@1.0.0-beta.37: web3-core-subscriptions "1.0.0-beta.37" web3-net "1.0.0-beta.37" -web3-utils@1.0.0-beta.34: - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.34.tgz#9411fc39aaef39ca4e06169f762297d9ff020970" - integrity sha1-lBH8OarvOcpOBhafdiKX2f8CCXA= - 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-utils@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.37.tgz#ab868a90fe5e649337e38bdaf72133fcbf4d414d" @@ -4466,19 +4708,6 @@ web3@^0.18.4: xhr2 "*" xmlhttprequest "*" -"web3v1@npm:web3@1.0.0-beta.34": - version "1.0.0-beta.34" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.34.tgz#347e561b784098cb5563315f490479a1d91f2ab1" - integrity sha1-NH5WG3hAmMtVYzFfSQR5odkfKrE= - dependencies: - web3-bzz "1.0.0-beta.34" - web3-core "1.0.0-beta.34" - web3-eth "1.0.0-beta.34" - web3-eth-personal "1.0.0-beta.34" - web3-net "1.0.0-beta.34" - web3-shh "1.0.0-beta.34" - web3-utils "1.0.0-beta.34" - websocket@^1.0.28: version "1.0.32" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" @@ -4510,6 +4739,13 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + which@^1.1.1, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -4517,6 +4753,13 @@ which@^1.1.1, which@^1.2.9: dependencies: isexe "^2.0.0" +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" @@ -4532,6 +4775,11 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +workerpool@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" + integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -4602,11 +4850,6 @@ xhr2@*: resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.2.0.tgz#eddeff782f3b7551061b8d75645085269396e521" integrity sha512-BDtiD0i2iKPK/S8OAZfpk6tyzEDnKKSjxWHcMBVmh+LuqJ8A32qXTyOx+TVOg2dKvq6zGBq2sgKPkEeRs1qTRA== -xhr2@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" - integrity sha1-f4dliEdxbbUCYyOBL4GMras4el8= - xhr@^2.0.4, xhr@^2.3.3: version "2.5.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" @@ -4642,7 +4885,7 @@ yaeti@^0.0.6: resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= -yargs-parser@^13.1.0: +yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== @@ -4650,6 +4893,14 @@ yargs-parser@^13.1.0: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== + 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" @@ -4658,6 +4909,17 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" +yargs-unparser@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" + integrity sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA== + dependencies: + camelcase "^5.3.1" + decamelize "^1.2.0" + flat "^4.1.0" + is-plain-obj "^1.1.0" + yargs "^14.2.3" + yargs@13.2.4: version "13.2.4" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" @@ -4675,7 +4937,40 @@ yargs@13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" -yargs@^4.6.0, yargs@^4.7.1: +yargs@13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^14.2.3: + version "14.2.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== + dependencies: + cliui "^5.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^15.0.1" + +yargs@^4.6.0: version "4.8.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA= From 89a51bd3be0a228126e7b76ffd352e822c9d5c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Treer=20Zolt=C3=A1n?= <38250343+treerz@users.noreply.github.com> Date: Sun, 13 Sep 2020 00:50:38 +0200 Subject: [PATCH 24/38] sb script: eth transfer from reserve (#255) * Main0034_feeaccount_transfer [0x4120e93d6fa16e30fae5284e35b8fbe8526274a5](https://etherscan.io/address/0x4120e93d6fa16e30fae5284e35b8fbe8526274a5#code) * Main0032_reserve_transfer [0x7872040512885e0f7DEDDfEE95cc38aA8108e4d2](https://etherscan.io/address/0x7872040512885e0f7deddfee95cc38aa8108e4d2) * Main0033_reserve_transfer [0x3d55c33d5aab0d863c644f1b9d8b2836292d104e](https://etherscan.io/address/0x3d55c33d5aab0d863c644f1b9d8b2836292d104e) --- .../mainnet/Main0032_reserve_transfer.sol | 18 +++++++++++++++++ .../mainnet/Main0033_reserve_transfer.sol | 18 +++++++++++++++++ .../mainnet/Main0034_feeaccount_transfer.sol | 20 +++++++++++++++++++ mainnet_migrations/45_deploy_Main0032.js | 7 +++++++ mainnet_migrations/46_deploy_Main0033.js | 7 +++++++ mainnet_migrations/47_deploy_Main0034.js | 7 +++++++ 6 files changed, 77 insertions(+) create mode 100644 contracts/SB_scripts/mainnet/Main0032_reserve_transfer.sol create mode 100644 contracts/SB_scripts/mainnet/Main0033_reserve_transfer.sol create mode 100644 contracts/SB_scripts/mainnet/Main0034_feeaccount_transfer.sol create mode 100644 mainnet_migrations/45_deploy_Main0032.js create mode 100644 mainnet_migrations/46_deploy_Main0033.js create mode 100644 mainnet_migrations/47_deploy_Main0034.js diff --git a/contracts/SB_scripts/mainnet/Main0032_reserve_transfer.sol b/contracts/SB_scripts/mainnet/Main0032_reserve_transfer.sol new file mode 100644 index 00000000..fd2b5a1e --- /dev/null +++ b/contracts/SB_scripts/mainnet/Main0032_reserve_transfer.sol @@ -0,0 +1,18 @@ +pragma solidity 0.4.24; + +import "../../StabilityBoardProxy.sol"; +import "../../AugmintReserves.sol"; + +contract Main0032_reserve_transfer { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0xde36a8773531406dCBefFdfd3C7b89fCed7A9F84); + AugmintReserves public constant AUGMINT_RESERVES = AugmintReserves(0x65F30f8DD20c707C1938CcAd7416c7381E6eB9C8); + address public constant TARGET_ADDRESS = 0x53DBF6E8fe46307C7536eAbb0D90CADA3e732716; + + function execute(Main0032_reserve_transfer /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + AUGMINT_RESERVES.migrate(TARGET_ADDRESS, 189 ether); + } +} \ No newline at end of file diff --git a/contracts/SB_scripts/mainnet/Main0033_reserve_transfer.sol b/contracts/SB_scripts/mainnet/Main0033_reserve_transfer.sol new file mode 100644 index 00000000..400246dc --- /dev/null +++ b/contracts/SB_scripts/mainnet/Main0033_reserve_transfer.sol @@ -0,0 +1,18 @@ +pragma solidity 0.4.24; + +import "../../StabilityBoardProxy.sol"; +import "../../AugmintReserves.sol"; + +contract Main0033_reserve_transfer { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0xde36a8773531406dCBefFdfd3C7b89fCed7A9F84); + AugmintReserves public constant AUGMINT_RESERVES = AugmintReserves(0x65F30f8DD20c707C1938CcAd7416c7381E6eB9C8); + address public constant TARGET_ADDRESS = 0x53DBF6E8fe46307C7536eAbb0D90CADA3e732716; + + function execute(Main0033_reserve_transfer /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + AUGMINT_RESERVES.migrate(TARGET_ADDRESS, address(AUGMINT_RESERVES).balance); + } +} \ No newline at end of file diff --git a/contracts/SB_scripts/mainnet/Main0034_feeaccount_transfer.sol b/contracts/SB_scripts/mainnet/Main0034_feeaccount_transfer.sol new file mode 100644 index 00000000..a15b6614 --- /dev/null +++ b/contracts/SB_scripts/mainnet/Main0034_feeaccount_transfer.sol @@ -0,0 +1,20 @@ +pragma solidity 0.4.24; + +import "../../StabilityBoardProxy.sol"; +import "../../FeeAccount.sol"; +import "../../TokenAEur.sol"; + +contract Main0034_feeaccount_transfer { + + StabilityBoardProxy public constant STABILITY_BOARD_PROXY = StabilityBoardProxy(0xde36a8773531406dCBefFdfd3C7b89fCed7A9F84); + TokenAEur public constant AUGMINT_TOKEN = TokenAEur(0xc994a2dEb02543Db1f48688438b9903c4b305ce3); + FeeAccount public constant FEE_ACCOUNT = FeeAccount(0xE3ED84A163b9EeaF4f69B4890ae45cC52171Aa7E); + address public constant TARGET_ADDRESS = 0x53DBF6E8fe46307C7536eAbb0D90CADA3e732716; + + function execute(Main0034_feeaccount_transfer /* self, not used */) external { + // called via StabilityBoardProxy + require(address(this) == address(STABILITY_BOARD_PROXY), "only execute via StabilityBoardProxy"); + + FEE_ACCOUNT.withdraw(AUGMINT_TOKEN, TARGET_ADDRESS, 0, address(FEE_ACCOUNT).balance, ""); + } +} \ No newline at end of file diff --git a/mainnet_migrations/45_deploy_Main0032.js b/mainnet_migrations/45_deploy_Main0032.js new file mode 100644 index 00000000..36df7c47 --- /dev/null +++ b/mainnet_migrations/45_deploy_Main0032.js @@ -0,0 +1,7 @@ +const Main0032_reserve_transfer = artifacts.require("./Main0032_reserve_transfer.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Main0032_reserve_transfer); + }); +}; \ No newline at end of file diff --git a/mainnet_migrations/46_deploy_Main0033.js b/mainnet_migrations/46_deploy_Main0033.js new file mode 100644 index 00000000..b710957d --- /dev/null +++ b/mainnet_migrations/46_deploy_Main0033.js @@ -0,0 +1,7 @@ +const Main0033_reserve_transfer = artifacts.require("./Main0033_reserve_transfer.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Main0033_reserve_transfer); + }); +}; \ No newline at end of file diff --git a/mainnet_migrations/47_deploy_Main0034.js b/mainnet_migrations/47_deploy_Main0034.js new file mode 100644 index 00000000..62b29767 --- /dev/null +++ b/mainnet_migrations/47_deploy_Main0034.js @@ -0,0 +1,7 @@ +const Main0034_feeaccount_transfer = artifacts.require("./Main0034_feeaccount_transfer.sol"); + +module.exports = function(deployer) { + deployer.then(async () => { + await deployer.deploy(Main0034_feeaccount_transfer); + }); +}; \ No newline at end of file From 0fa33445ff9210a7eb38f5f47f3d3ced89f7ff78 Mon Sep 17 00:00:00 2001 From: Peter Petrovics Date: Sun, 13 Sep 2020 00:23:26 +0100 Subject: [PATCH 25/38] Truffle to 5.1.44 (#266) * truffle to 5.1.44 --- package.json | 2 +- test/feeAccount.js | 1 - yarn.lock | 8 ++++---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index f96d7538..edeb3ceb 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "random-seed": "0.3.0", "solidity-coverage": "0.5.11", "stringifier": "2.0.0", - "truffle": "5.1.43", + "truffle": "5.1.44", "truffle-hdwallet-provider": "1.0.13", "wait-on": "3.2.0" }, diff --git a/test/feeAccount.js b/test/feeAccount.js index f5dc636b..a26c9a95 100644 --- a/test/feeAccount.js +++ b/test/feeAccount.js @@ -63,7 +63,6 @@ contract("FeeAccount tests", (accounts) => { ); testHelpers.logGasUse(this, tx, "withdraw"); - console.log(" weiAmount", weiAmount, typeof weiAmount); await Promise.all([ testHelpers.assertEvent(feeAccountInstance, "WithdrawFromSystemAccount", { tokenAddress: augmintTokenInstance.address, diff --git a/yarn.lock b/yarn.lock index b4f3ebe4..6d1ca853 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4283,10 +4283,10 @@ truffle-hdwallet-provider@1.0.13: web3 "1.0.0-beta.37" websocket "^1.0.28" -truffle@5.1.43: - version "5.1.43" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.43.tgz#544e7b0955b6728a00761a86555c1eb259313266" - integrity sha512-KXda/70RAG9TBdQta8JEwVQmL9r/AZzU++5aZkrF4/nDosund8SV1yM9CcDTib4xLWuMaB15YyOC5r163QdLAw== +truffle@5.1.44: + version "5.1.44" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.44.tgz#11a91b1befc68b85d38baf2cb301d566d18a3780" + integrity sha512-8NIFw8jJFbi2vYHWGeflFHZByIDtx56r+BDl2CkPjpGEb9arEFDaCmjy70UQe4PBIX+olsl3opSVqpUb16b6tQ== dependencies: app-module-path "^2.2.0" mocha "8.1.2" From 7ab3825ec56c2b6e9f7e7b33750c1967dd44d52f Mon Sep 17 00:00:00 2001 From: Peter Petrovics Date: Sun, 13 Sep 2020 00:38:13 +0100 Subject: [PATCH 26/38] enable dependabot (#267) --- .github/dependabot.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..bae83718 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,9 @@ +updates: + # Enable version updates for npm + - package-ecosystem: "npm" + # Look for `package.json` and `lock` files in the `root` directory + directory: "/" + # Check the npm registry for updates every day (weekdays) + schedule: + interval: "daily" + open-pull-requests-limit: 20 From 30c8bf6a85f976a48c341576f23b0fb7488f8b13 Mon Sep 17 00:00:00 2001 From: Peter Petrovics Date: Sun, 13 Sep 2020 00:46:13 +0100 Subject: [PATCH 27/38] Dependabot conf fix (#268) * fix dependabot.yml --- .github/dependabot.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index bae83718..f605b627 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,3 +1,4 @@ +version: 2 updates: # Enable version updates for npm - package-ecosystem: "npm" From c87fb375aa1e9cb212cee96b48d46f4808ccb05f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Sep 2020 00:53:44 +0100 Subject: [PATCH 28/38] Bump stringifier from 2.0.0 to 2.1.0 (#269) Bumps [stringifier](https://github.com/twada/stringifier) from 2.0.0 to 2.1.0. - [Release notes](https://github.com/twada/stringifier/releases) - [Changelog](https://github.com/twada/stringifier/blob/master/CHANGELOG.md) - [Commits](https://github.com/twada/stringifier/compare/v2.0.0...v2.1.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index edeb3ceb..60e7a64c 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "moment": "2.22.2", "random-seed": "0.3.0", "solidity-coverage": "0.5.11", - "stringifier": "2.0.0", + "stringifier": "2.1.0", "truffle": "5.1.44", "truffle-hdwallet-provider": "1.0.13", "wait-on": "3.2.0" diff --git a/yarn.lock b/yarn.lock index 6d1ca853..4f7d6bab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4018,10 +4018,10 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringifier@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-2.0.0.tgz#dd1718e0d67e5ee355861ccd4ba2fe0007539c26" - integrity sha512-WaJ0zgVy16iT/lEWw3dPczyMHnpeAXPoWSwdwV/Gkxij38dpFFS+5vcJXEYoEZKVhdP2a3HCRHmwZQ85qFKgfQ== +stringifier@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-2.1.0.tgz#44f0364a3c02f7aa0c3c6ea455da25cea8c12dd9" + integrity sha512-ThhjcKQHR3x7gVV9p90bm2MO+VVl9wbcgMltn6Luzq83OzgEUkaYJrd6HK0B3d1o3iaX1Laz42Blx16kcS/tWQ== dependencies: traverse "^0.6.6" type-name "^2.0.1" From ed967b02dd9719b1794ec53ca3924b7064a68037 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Sep 2020 01:36:58 +0100 Subject: [PATCH 29/38] Bump moment from 2.22.2 to 2.27.0 (#270) Bumps [moment](https://github.com/moment/moment) from 2.22.2 to 2.27.0. - [Release notes](https://github.com/moment/moment/releases) - [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) - [Commits](https://github.com/moment/moment/compare/2.22.2...2.27.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 60e7a64c..20626b8d 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "dotenv": "8.0.0", "eslint": "6.0.0", "ganache-cli": "6.10.2", - "moment": "2.22.2", + "moment": "2.27.0", "random-seed": "0.3.0", "solidity-coverage": "0.5.11", "stringifier": "2.1.0", diff --git a/yarn.lock b/yarn.lock index 4f7d6bab..cd69bd01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2850,10 +2850,10 @@ mock-fs@^4.1.0: resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.13.0.tgz#31c02263673ec3789f90eb7b6963676aa407a598" integrity sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA== -moment@2.22.2: - version "2.22.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" - integrity sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y= +moment@2.27.0: + version "2.27.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" + integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== mout@^0.11.0: version "0.11.1" From 31ba141f3ae28ff0e0a2b6c234f0fd7a6b2984a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Sep 2020 01:51:46 +0100 Subject: [PATCH 30/38] Bump solidity-coverage from 0.5.11 to 0.7.10 (#271) Bumps [solidity-coverage](https://github.com/sc-forks/solidity-coverage) from 0.5.11 to 0.7.10. - [Release notes](https://github.com/sc-forks/solidity-coverage/releases) - [Changelog](https://github.com/sc-forks/solidity-coverage/blob/master/CHANGELOG.md) - [Commits](https://github.com/sc-forks/solidity-coverage/commits) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Peter Petrovics --- package.json | 2 +- yarn.lock | 1968 ++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 1488 insertions(+), 482 deletions(-) diff --git a/package.json b/package.json index 20626b8d..8938b300 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "ganache-cli": "6.10.2", "moment": "2.27.0", "random-seed": "0.3.0", - "solidity-coverage": "0.5.11", + "solidity-coverage": "0.7.10", "stringifier": "2.1.0", "truffle": "5.1.44", "truffle-hdwallet-provider": "1.0.13", diff --git a/yarn.lock b/yarn.lock index cd69bd01..b147446e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,16 +23,141 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@solidity-parser/parser@^0.7.0": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.7.1.tgz#660210130e4237476cb55e2882064809f80f861e" + integrity sha512-5ma2uuwPAEX1TPl2rAPAAuGlBkKnn2oUKQvnhTFlDIB8U/KDWX77FpHtL6Rcz+OwqSCWx9IClxACgyIEJ/GhIw== + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@truffle/error@^0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.7.tgz#e9db39885575647ef08bf624b0c13fe46d41a209" + integrity sha512-UIfVKsXSXocKnn5+RNklUXNoGd/JVj7V8KmC48TQzmjU33HQI86PX0JDS7SpHMHasI3w9X//1q7Lu7nZtj3Zzg== + +"@truffle/interface-adapter@^0.3.0": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.3.3.tgz#61305378cf81776769ef36c60d394e568ac4a2ee" + integrity sha512-l3I4WFTfnBSIfG96IOBRtAIE6AHDAxcOUJE7W5zh9hocQwzQlGWc2yEyyTcLa0656TTM8RxaZZ2S/KdHHMvCaw== + dependencies: + bn.js "^4.11.8" + ethers "^4.0.32" + lodash "^4.17.13" + web3 "1.2.2" + +"@truffle/provider@^0.1.17": + version "0.1.19" + resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.1.19.tgz#3e6f15fdd8475ca5d0c846d2b412cc823f1fb767" + integrity sha512-ke8iQmzW4Y99+8iff8xQcc+mCNU4AkwtaZ/iSpmVD8qpLytw8/DSNCm0RiEz9/+I93Q1zqI4Jnij/rXnkS2Njw== + dependencies: + "@truffle/error" "^0.0.7" + "@truffle/interface-adapter" "^0.3.0" + web3 "1.2.1" + +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.4": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + "@types/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== -"@types/node@^10.3.2": +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "14.10.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.10.1.tgz#cc323bad8e8a533d4822f45ce4e5326f36e42177" + integrity sha512-aYNbO+FZ/3KGeQCEkNhHFRIzBOUgc7QvcVNKXbfnhDkSfwUv91JsQQa10rDgKSTSLkXZ1UIyPe4FJJNVgw1xWQ== + +"@types/node@^10.12.18", "@types/node@^10.3.2": version "10.17.32" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.32.tgz#4ef6ff8b842ea0eb3fcbc4331489f4ae64036fa8" integrity sha512-EUq+cjH/3KCzQHikGnNbWAGe548IFLSm93Vl8xA7EuYEEATiyOVDyEVuGkowL7c9V69FF/RiZSAOCFPApMs/ig== +"@types/node@^12.6.1": + version "12.12.58" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.58.tgz#46dae9b2b9ee5992818c8f7cee01ff4ce03ab44c" + integrity sha512-Be46CNIHWAagEfINOjmriSxuv7IVcqbGe+sDSg2SYCEz/0CRBy7LRASGfRbD8KZkqoePU73Wsx3UvOSFcq/9hA== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/secp256k1@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.1.tgz#fb3aa61a1848ad97d7425ff9dcba784549fca5a4" + integrity sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog== + dependencies: + "@types/node" "*" + +"@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" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -70,6 +195,11 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== +address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" @@ -165,6 +295,11 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + 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" @@ -357,6 +492,13 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base-x@^3.0.2: + version "3.0.8" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" + integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== + dependencies: + safe-buffer "^5.0.1" + base64-js@^1.0.2: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" @@ -369,10 +511,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -"bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": - version "2.0.7" - resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" - binary-extensions@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" @@ -400,6 +538,11 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" +blakejs@^1.1.0: + version "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" @@ -422,6 +565,11 @@ bn.js@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.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0: version "4.11.9" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" @@ -456,7 +604,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@~3.0.2: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -468,17 +616,12 @@ brorand@^1.0.1: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= -browser-stdout@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" - integrity sha1-81HTKWnTL6XXpVZxVCY9korjvR8= - browser-stdout@1.3.1: version "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.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, 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== @@ -540,6 +683,22 @@ browserify-sign@^4.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" @@ -598,16 +757,24 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -671,6 +838,11 @@ chokidar@3.4.2: optionalDependencies: fsevents "~2.1.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -691,15 +863,6 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -709,10 +872,12 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -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= +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" color-convert@^1.9.0: version "1.9.3" @@ -745,11 +910,6 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" - integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== - commander@2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" @@ -893,11 +1053,6 @@ crypto-browserify@3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-js@^3.1.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" - integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== - d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -918,20 +1073,13 @@ death@^1.1.0: resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" integrity sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg= -debug@2.6.9, debug@^2.2.0, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@4.1.1, debug@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -939,7 +1087,7 @@ debug@4.1.1, debug@^4.0.1: dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1014,6 +1162,11 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -1051,10 +1204,13 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -diff@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" - integrity sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww== +detect-port@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" + integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== + dependencies: + address "^1.0.1" + debug "^2.6.0" diff@4.0.2: version "4.0.2" @@ -1070,6 +1226,13 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -1124,7 +1287,7 @@ elliptic@6.3.3: hash.js "^1.0.0" inherits "^2.0.1" -elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: +elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== @@ -1154,13 +1317,6 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -error-ex@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - es-abstract@^1.17.0-next.1, 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" @@ -1254,16 +1410,16 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - escape-string-regexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + escodegen@1.8.x: version "1.8.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" @@ -1438,12 +1594,55 @@ eth-lib@^0.1.26: ws "^3.0.0" xhr-request-promise "^0.1.2" -ethereumjs-testrpc-sc@6.1.6: - version "6.1.6" - resolved "https://registry.yarnpkg.com/ethereumjs-testrpc-sc/-/ethereumjs-testrpc-sc-6.1.6.tgz#290595380b5182814564d4aa38f35b7788aab070" - integrity sha512-iv2qiGBFgk9mn5Nq2enX8dG5WQ7Lk+FCqpnxfPfH4Ns8KLPwttmNOy264nh3SXDJJvcQwz/XnlLteDQVILotbg== +eth-lib@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +ethereum-bloom-filters@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.7.tgz#b7b80735e385dbb7f944ce6b4533e24511306060" + integrity sha512-cDcJJSJ9GMAcURiAWO3DxIEhTL/uWqlQnvgKpuYQzYPrt/izuGU+1ntQmHt0IRq6ADoSYHFnB+aCEFIldjhkMQ== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== + +ethereumjs-tx@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== dependencies: - source-map-support "^0.5.3" + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" ethereumjs-util@6.1.0: version "6.1.0" @@ -1458,6 +1657,19 @@ ethereumjs-util@6.1.0: safe-buffer "^5.1.1" secp256k1 "^3.0.1" +ethereumjs-util@^6.0.0: + 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" + ethers@4.0.0-beta.1: version "4.0.0-beta.1" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.1.tgz#0648268b83e0e91a961b1af971c662cdf8cbab6d" @@ -1474,6 +1686,37 @@ ethers@4.0.0-beta.1: uuid "2.0.1" xmlhttprequest "1.8.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@^4.0.32: + 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" + ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" @@ -1495,6 +1738,11 @@ eventemitter3@1.1.1: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.1.1.tgz#47786bdaa087caf7b1b75e73abc5c7d540158cd0" integrity sha1-R3hr2qCHyvext15zq8XH1UAVjNA= +eventemitter3@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -1588,6 +1836,18 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-glob@^3.0.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -1598,6 +1858,13 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastq@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" + integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + dependencies: + reusify "^1.0.4" + fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -1667,14 +1934,6 @@ find-up@5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -1740,6 +1999,31 @@ fs-extra@^2.0.0, fs-extra@^2.1.2: graceful-fs "^4.1.2" jsonfile "^2.1.0" +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + fs-promise@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-2.0.3.tgz#f64e4f854bcf689aa8bddcba268916db3db46854" @@ -1791,10 +2075,14 @@ ganache-cli@6.10.2: optionalDependencies: scrypt "6.0.3" -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +ganache-cli@6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.9.0.tgz#94d7e26964dff80b7382a33829ec75e15709a948" + integrity sha512-ZdL6kPrApXF/O+f6uU431OJcwxMk69H3KPDSHHrMP82ZvZRNpDHbR+rVv7XX/YUeoQ5q6nZ2AFiGiFAVn9pfzA== + dependencies: + ethereumjs-util "6.1.0" + source-map-support "0.5.12" + yargs "13.2.4" get-caller-file@^2.0.1: version "2.0.5" @@ -1814,13 +2102,20 @@ get-stream@^3.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= -get-stream@^4.0.0: +get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -1828,6 +2123,14 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +ghost-testrpc@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz#c4de9557b1d1ae7b2d20bbe474a91378ca90ce92" + integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== + dependencies: + chalk "^2.4.2" + node-emoji "^1.10.0" + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -1836,25 +2139,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@~5.1.0: +glob-parent@^5.1.0, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" -glob@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@7.1.6, glob@^7.0.0, glob@^7.1.3: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -1878,6 +2169,22 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + global@~4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" @@ -1896,6 +2203,20 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.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" @@ -1916,16 +2237,28 @@ got@7.1.0, got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" -graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +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" + +graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -growl@1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" - integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q== - growl@1.10.5, "growl@~> 1.10.0": version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -1968,11 +2301,6 @@ has-flag@^1.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2024,7 +2352,7 @@ hash.js@1.1.3: inherits "^2.0.3" minimalistic-assert "^1.0.0" -hash.js@^1.0.0, hash.js@^1.0.3: +hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== @@ -2032,11 +2360,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= - he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -2069,10 +2392,10 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== http-errors@1.7.2: version "1.7.2" @@ -2134,6 +2457,11 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.1.1: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + import-fresh@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" @@ -2165,6 +2493,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + inquirer@^6.2.2: version "6.5.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" @@ -2196,11 +2529,6 @@ invariant@^2.2.2: dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" @@ -2216,11 +2544,6 @@ is-arguments@^1.0.4: resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== -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@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -2258,13 +2581,6 @@ is-finite@^1.0.0: resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -2363,11 +2679,6 @@ 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-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= - isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -2395,26 +2706,6 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs= - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - isurl@^1.0.0-alpha5: version "1.0.0" resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" @@ -2455,6 +2746,11 @@ js-sha3@^0.6.1: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.6.1.tgz#5b89f77a7477679877f58c4a075240934b1f95c0" integrity sha1-W4n3enR3Z5h39YxKB1JAk0sflcA= +js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + "js-tokens@^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" @@ -2483,6 +2779,11 @@ jsesc@^1.3.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -2522,11 +2823,23 @@ jsonfile@^2.1.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= +jsonschema@^1.2.4: + version "1.2.6" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.6.tgz#52b0a8e9dc06bbae7295249d03e4b9faee8a0c0b" + integrity sha512-SqhURKZG07JyKKeo/ir24QnS4/BV7a6gQy93bUSe4lUdNp0QNpIz2c9elWJQ9dpc5cQYY6cvCzgRwy0MQCLyqA== + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -2547,6 +2860,14 @@ keccak@^1.0.2: nan "^2.2.1" safe-buffer "^5.1.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" @@ -2555,12 +2876,17 @@ keccakjs@^0.2.1: browserify-sha3 "^0.0.4" sha3 "^1.2.2" -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: - invert-kv "^1.0.0" + json-buffer "3.0.0" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== lcid@^2.0.0: version "2.0.0" @@ -2582,17 +2908,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -2608,12 +2923,12 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.assign@^4.0.3, lodash.assign@^4.0.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.4: +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -2637,11 +2952,16 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lowercase-keys@^1.0.0: +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -2693,11 +3013,24 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge2@^1.2.3, merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + 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@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -2733,7 +3066,7 @@ mimic-fn@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0: +mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== @@ -2762,16 +3095,26 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + mkdirp-promise@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" @@ -2784,14 +3127,7 @@ mkdirp@*: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1: +mkdirp@0.5.x, "mkdirp@>=0.5 0", 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== @@ -2829,22 +3165,6 @@ mocha@8.1.2: yargs-parser "13.1.2" yargs-unparser "1.6.1" -mocha@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" - integrity sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA== - dependencies: - browser-stdout "1.3.0" - commander "2.11.0" - debug "3.1.0" - diff "3.3.1" - escape-string-regexp "1.0.5" - glob "7.1.2" - growl "1.10.3" - he "1.1.1" - mkdirp "0.5.1" - supports-color "4.4.0" - mock-fs@^4.1.0: version "4.13.0" resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.13.0.tgz#31c02263673ec3789f90eb7b6963676aa407a598" @@ -2929,6 +3249,23 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-emoji@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + dependencies: + lodash.toarray "^4.4.0" + +node-gyp-build@^4.2.0: + version "4.2.3" + 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" @@ -2941,21 +3278,16 @@ nopt@3.x: dependencies: abbrev "1" -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -2963,11 +3295,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - number-to-bn@1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" @@ -3023,6 +3350,13 @@ oboe@2.1.3: 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" + integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= + dependencies: + http-https "^1.0.0" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -3066,13 +3400,6 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -3092,6 +3419,11 @@ p-cancelable@^0.3.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -3170,13 +3502,6 @@ parse-headers@^2.0.0: resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -3187,13 +3512,6 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -3224,16 +3542,12 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pbkdf2@^3.0.3: +pbkdf2@^3.0.17, pbkdf2@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== @@ -3244,11 +3558,6 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -pegjs@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" - integrity sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0= - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -3259,12 +3568,12 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -pify@^2.0.0, pify@^2.3.0: +pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -3274,6 +3583,11 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -3296,6 +3610,11 @@ prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -3431,23 +3750,6 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - readable-stream@^2.3.0, readable-stream@^2.3.5: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -3484,6 +3786,13 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +recursive-readdir@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -3501,20 +3810,6 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -req-cwd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-1.0.1.tgz#0d73aeae9266e697a78f7976019677e76acf0fff" - integrity sha1-DXOurpJm5penj3l2AZZ352rPD/8= - dependencies: - req-from "^1.0.1" - -req-from@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/req-from/-/req-from-1.0.1.tgz#bf81da5147947d32d13b947dc12a58ad4587350e" - integrity sha1-v4HaUUeUfTLRO5R9wSpYrUWHNQ4= - dependencies: - resolve-from "^2.0.0" - request@^2.79.0, request@^2.86.0, request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -3546,21 +3841,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -resolve-from@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" - integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -3571,13 +3856,20 @@ resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.10.0: +resolve@^1.1.6: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -3586,6 +3878,11 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rimraf@2: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -3608,7 +3905,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rlp@^2.0.0: +rlp@^2.0.0, rlp@^2.2.3: version "2.2.6" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== @@ -3620,6 +3917,11 @@ run-async@^2.2.0: resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + rx@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" @@ -3647,11 +3949,49 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sc-istanbul@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/sc-istanbul/-/sc-istanbul-0.4.5.tgz#1896066484d55336cf2cdbcc7884dc79da50dc76" + integrity sha512-7wR5EZFLsC4w0wSm9BUuCgW+OGKAU7PNlW5L0qwVPbh+Q1sfVn2fyzfMXYCm6rkNA5ipaCOt94nApcguQwF5Gg== + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + 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.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +"scrypt-shim@github:web3-js/scrypt-shim": + version "0.1.0" + uid aafdadda13e660e25e1c525d1f5b2443f5eb1ebb + resolved "https://codeload.github.com/web3-js/scrypt-shim/tar.gz/aafdadda13e660e25e1c525d1f5b2443f5eb1ebb" + dependencies: + scryptsy "^2.1.0" + semver "^6.3.0" + scrypt.js@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.2.0.tgz#af8d1465b71e9990110bedfc593b9479e03a8ada" @@ -3667,6 +4007,11 @@ scrypt@6.0.3, scrypt@^6.0.2: dependencies: nan "^2.0.8" +scryptsy@2.1.0, scryptsy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" + integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== + scryptsy@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" @@ -3688,6 +4033,15 @@ secp256k1@^3.0.1: 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" + integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== + dependencies: + elliptic "^6.5.2" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + seek-bzip@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" @@ -3695,11 +4049,21 @@ seek-bzip@^1.0.5: dependencies: commander "^2.8.1" -"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.5.1: +semver@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" + integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== + +semver@^5.5.0, semver@^5.5.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +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== + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -3794,10 +4158,10 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -shelljs@^0.7.4: - version "0.7.8" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" - integrity sha1-3svPh0sNHl+3LhSxZKloMEjprLM= +shelljs@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -3827,6 +4191,11 @@ slash@^1.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -3836,35 +4205,29 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -sol-explore@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/sol-explore/-/sol-explore-1.6.2.tgz#43ae8c419fd3ac056a05f8a9d1fb1022cd41ecc2" - integrity sha1-Q66MQZ/TrAVqBfip0fsQIs1B7MI= - -solidity-coverage@0.5.11: - version "0.5.11" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.5.11.tgz#1ee45f6d98b75a615aadb8f9aa7db4a2b32258e7" - integrity sha512-qikdsSi6+9XbfvwA0aI7HUVpF9fIFNqRWTw23M89GMDY+b6Gj0wWU9IngJS0fimoZIAdEp3bfChxvpfVcrUesg== +solidity-coverage@0.7.10: + version "0.7.10" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.10.tgz#ab183c11d0742478d3f4f7a025a8c813ded24ca9" + integrity sha512-F98rYoD3bscB9qIJJrqkk+o93GbOWTT54VgfO97PrcWAenOFIC1EI5DzGJSrMvmFFfr8fsMPR89on6JR0Xf/Ig== dependencies: + "@solidity-parser/parser" "^0.7.0" + "@truffle/provider" "^0.1.17" + chalk "^2.4.2" death "^1.1.0" - ethereumjs-testrpc-sc "6.1.6" - istanbul "^0.4.5" - keccakjs "^0.2.1" - req-cwd "^1.0.1" - shelljs "^0.7.4" - sol-explore "^1.6.2" - solidity-parser-sc "0.4.11" - tree-kill "^1.2.0" - web3 "^0.18.4" - -solidity-parser-sc@0.4.11: - version "0.4.11" - resolved "https://registry.yarnpkg.com/solidity-parser-sc/-/solidity-parser-sc-0.4.11.tgz#86734c9205537007f4d6201b57176e41696ee607" - integrity sha512-1kV5iC7m3CtMDfmHaVNwz2saSGQVIuF16rIxU417Al38MVCWHMQQ5vT6cmLsNwDe60S74auobWij9vNawSeOyw== - dependencies: - mocha "^4.1.0" - pegjs "^0.10.0" - yargs "^4.6.0" + detect-port "^1.3.0" + fs-extra "^8.1.0" + ganache-cli "6.9.0" + ghost-testrpc "^0.0.2" + global-modules "^2.0.0" + globby "^10.0.1" + jsonschema "^1.2.4" + lodash "^4.17.15" + node-emoji "^1.10.0" + pify "^4.0.1" + recursive-readdir "^2.2.2" + sc-istanbul "^0.4.5" + shelljs "^0.8.3" + web3 "1.2.6" source-map-support@0.5.12: version "0.5.12" @@ -3881,14 +4244,6 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.3: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -3906,32 +4261,6 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.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== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -3962,15 +4291,6 @@ 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: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - "string-width@^1.0.2 || 2", string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -4026,7 +4346,7 @@ stringifier@2.1.0: traverse "^0.6.6" type-name "^2.0.1" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -4047,13 +4367,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - strip-dirs@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" @@ -4083,13 +4396,6 @@ strip-json-comments@^2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -supports-color@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" - integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== - dependencies: - has-flag "^2.0.0" - supports-color@7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" @@ -4142,6 +4448,24 @@ swarm-js@0.1.37: tar.gz "^1.0.5" xhr-request-promise "^0.1.2" +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== + 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" + table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -4185,6 +4509,19 @@ tar@^2.1.1: fstream "^1.0.12" inherits "2" +tar@^4.0.2: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -4231,6 +4568,11 @@ to-fast-properties@^1.0.3: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -4263,11 +4605,6 @@ traverse@^0.6.6: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= -tree-kill@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -4369,6 +4706,16 @@ underscore@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== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -4388,6 +4735,13 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + url-set-query@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" @@ -4410,10 +4764,10 @@ utf8@2.1.1: resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.1.tgz#2e01db02f7d8d0944f77104f1609eb0c304cf768" integrity sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g= -utf8@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" - integrity sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY= +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" @@ -4430,19 +4784,16 @@ uuid@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" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -4477,6 +4828,35 @@ web3-bzz@1.0.0-beta.37: swarm-js "0.1.37" underscore "1.8.3" +web3-bzz@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.1.tgz#c3bd1e8f0c02a13cd6d4e3c3e9e1713f144f6f0d" + integrity sha512-LdOO44TuYbGIPfL4ilkuS89GQovxUpmLz6C1UC7VYVVRILeZS740FVB3j9V4P4FHUk1RenaDfKhcntqgVCHtjw== + dependencies: + got "9.6.0" + swarm-js "0.1.39" + underscore "1.9.1" + +web3-bzz@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.2.tgz#a3b9f613c49fd3e120e0997088a73557d5adb724" + integrity sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA== + dependencies: + "@types/node" "^10.12.18" + got "9.6.0" + swarm-js "0.1.39" + underscore "1.9.1" + +web3-bzz@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.6.tgz#0b88c0b96029eaf01b10cb47c4d5f79db4668883" + integrity sha512-9NiHLlxdI1XeFtbPJAmi2jnnIHVF+GNy517wvOS72P7ZfuJTPwZaSNXfT01vWgPPE9R96/uAHDWHOg+T4WaDQQ== + dependencies: + "@types/node" "^10.12.18" + got "9.6.0" + swarm-js "0.1.39" + underscore "1.9.1" + web3-core-helpers@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz#04ec354b7f5c57234c309eea2bda9bf1f2fe68ba" @@ -4486,6 +4866,33 @@ web3-core-helpers@1.0.0-beta.37: web3-eth-iban "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-core-helpers@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" + integrity sha512-Gx3sTEajD5r96bJgfuW377PZVFmXIH4TdqDhgGwd2lZQCcMi+DA4TgxJNJGxn0R3aUVzyyE76j4LBrh412mXrw== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.1" + web3-utils "1.2.1" + +web3-core-helpers@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz#484974f4bd4a487217b85b0d7cfe841af0907619" + integrity sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.2" + web3-utils "1.2.2" + +web3-core-helpers@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.6.tgz#7aacd25bf8015adcdfc0f3243d0dcfdff0373f7d" + integrity sha512-gYKWmC2HmO7RcDzpo4L1K8EIoy5L8iubNDuTC6q69UxczwqKF/Io0kbK/1Z10Av++NlzOSiuyGp2gc4t4UOsDw== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.6" + web3-utils "1.2.6" + web3-core-method@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.37.tgz#53d148e63f818b23461b26307afdfbdaa9457744" @@ -4497,6 +4904,39 @@ web3-core-method@1.0.0-beta.37: web3-core-subscriptions "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-core-method@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" + integrity sha512-Ghg2WS23qi6Xj8Od3VCzaImLHseEA7/usvnOItluiIc5cKs00WYWsNy2YRStzU9a2+z8lwQywPYp0nTzR/QXdQ== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + web3-core-promievent "1.2.1" + web3-core-subscriptions "1.2.1" + web3-utils "1.2.1" + +web3-core-method@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.2.tgz#d4fe2bb1945b7152e5f08e4ea568b171132a1e56" + integrity sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.2" + web3-core-promievent "1.2.2" + web3-core-subscriptions "1.2.2" + web3-utils "1.2.2" + +web3-core-method@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.6.tgz#f5a3e4d304abaf382923c8ab88ec8eeef45c1b3b" + integrity sha512-r2dzyPEonqkBg7Mugq5dknhV5PGaZTHBZlS/C+aMxNyQs3T3eaAsCTqlQDitwNUh/sUcYPEGF0Vo7ahYK4k91g== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.6" + web3-core-promievent "1.2.6" + web3-core-subscriptions "1.2.6" + web3-utils "1.2.6" + web3-core-promievent@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.37.tgz#4e51c469d0a7ac0a969885a4dbcde8504abe5b02" @@ -4505,6 +4945,30 @@ web3-core-promievent@1.0.0-beta.37: any-promise "1.3.0" eventemitter3 "1.1.1" +web3-core-promievent@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" + integrity sha512-IVUqgpIKoeOYblwpex4Hye6npM0aMR+kU49VP06secPeN0rHMyhGF0ZGveWBrGvf8WDPI7jhqPBFIC6Jf3Q3zw== + dependencies: + any-promise "1.3.0" + eventemitter3 "3.1.2" + +web3-core-promievent@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz#3b60e3f2a0c96db8a891c927899d29d39e66ab1c" + integrity sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ== + dependencies: + any-promise "1.3.0" + eventemitter3 "3.1.2" + +web3-core-promievent@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.6.tgz#b1550a3a4163e48b8b704c1fe4b0084fc2dad8f5" + integrity sha512-km72kJef/qtQNiSjDJJVHIZvoVOm6ytW3FCYnOcCs7RIkviAb5JYlPiye0o4pJOLzCXYID7DK7Q9bhY8qWb1lw== + dependencies: + any-promise "1.3.0" + eventemitter3 "3.1.2" + web3-core-requestmanager@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.37.tgz#721a75df5920621bff42d9d74f7a64413675d56b" @@ -4516,6 +4980,39 @@ web3-core-requestmanager@1.0.0-beta.37: web3-providers-ipc "1.0.0-beta.37" web3-providers-ws "1.0.0-beta.37" +web3-core-requestmanager@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" + integrity sha512-xfknTC69RfYmLKC+83Jz73IC3/sS2ZLhGtX33D4Q5nQ8yc39ElyAolxr9sJQS8kihOcM6u4J+8gyGMqsLcpIBg== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + web3-providers-http "1.2.1" + web3-providers-ipc "1.2.1" + web3-providers-ws "1.2.1" + +web3-core-requestmanager@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz#667ba9ac724c9c76fa8965ae8a3c61f66e68d8d6" + integrity sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.2" + web3-providers-http "1.2.2" + web3-providers-ipc "1.2.2" + web3-providers-ws "1.2.2" + +web3-core-requestmanager@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.6.tgz#5808c0edc0d6e2991a87b65508b3a1ab065b68ec" + integrity sha512-QU2cbsj9Dm0r6om40oSwk8Oqbp3wTa08tXuMpSmeOTkGZ3EMHJ1/4LiJ8shwg1AvPMrKVU0Nri6+uBNCdReZ+g== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.6" + web3-providers-http "1.2.6" + web3-providers-ipc "1.2.6" + web3-providers-ws "1.2.6" + web3-core-subscriptions@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.37.tgz#40de5e2490cc05b15faa8f935c97fd48d670cd9a" @@ -4525,6 +5022,33 @@ web3-core-subscriptions@1.0.0-beta.37: underscore "1.8.3" web3-core-helpers "1.0.0-beta.37" +web3-core-subscriptions@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" + integrity sha512-nmOwe3NsB8V8UFsY1r+sW6KjdOS68h8nuh7NzlWxBQT/19QSUGiERRTaZXWu5BYvo1EoZRMxCKyCQpSSXLc08g== + dependencies: + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.1" + +web3-core-subscriptions@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz#bf4ba23a653a003bdc3551649958cc0b080b068e" + integrity sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ== + dependencies: + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.2" + +web3-core-subscriptions@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.6.tgz#9d44189e2321f8f1abc31f6c09103b5283461b57" + integrity sha512-M0PzRrP2Ct13x3wPulFtc5kENH4UtnPxO9YxkfQlX2WRKENWjt4Rfq+BCVGYEk3rTutDfWrjfzjmqMRvXqEY5Q== + dependencies: + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.6" + web3-core@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.37.tgz#66c2c7000772c9db36d737ada31607ace09b7e90" @@ -4535,6 +5059,40 @@ web3-core@1.0.0-beta.37: web3-core-requestmanager "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-core@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" + integrity sha512-5ODwIqgl8oIg/0+Ai4jsLxkKFWJYE0uLuE1yUKHNVCL4zL6n3rFjRMpKPokd6id6nJCNgeA64KdWQ4XfpnjdMg== + dependencies: + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-requestmanager "1.2.1" + web3-utils "1.2.1" + +web3-core@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.2.tgz#334b99c8222ef9cfd0339e27352f0b58ea789a2f" + integrity sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ== + dependencies: + "@types/bn.js" "^4.11.4" + "@types/node" "^12.6.1" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-core-requestmanager "1.2.2" + web3-utils "1.2.2" + +web3-core@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.6.tgz#bb42a1d7ae49a7258460f0d95ddb00906f59ef92" + integrity sha512-y/QNBFtr5cIR8vxebnotbjWJpOnO8LDYEAzZjeRRUJh2ijmhjoYk7dSNx9ExgC0UCfNFRoNCa9dGRu/GAxwRlw== + dependencies: + "@types/bn.js" "^4.11.4" + "@types/node" "^12.6.1" + web3-core-helpers "1.2.6" + web3-core-method "1.2.6" + web3-core-requestmanager "1.2.6" + web3-utils "1.2.6" + web3-eth-abi@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.37.tgz#55592fa9cd2427d9f0441d78f3b8d0c1359a2a24" @@ -4544,6 +5102,33 @@ web3-eth-abi@1.0.0-beta.37: underscore "1.8.3" web3-utils "1.0.0-beta.37" +web3-eth-abi@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" + integrity sha512-jI/KhU2a/DQPZXHjo2GW0myEljzfiKOn+h1qxK1+Y9OQfTcBMxrQJyH5AP89O6l6NZ1QvNdq99ThAxBFoy5L+g== + dependencies: + ethers "4.0.0-beta.3" + underscore "1.9.1" + web3-utils "1.2.1" + +web3-eth-abi@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz#d5616d88a90020f894763423a9769f2da11fe37a" + integrity sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw== + dependencies: + ethers "4.0.0-beta.3" + underscore "1.9.1" + web3-utils "1.2.2" + +web3-eth-abi@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.6.tgz#b495383cc5c0d8e2857b26e7fe25606685983b25" + integrity sha512-w9GAyyikn8nSifSDZxAvU9fxtQSX+W2xQWMmrtTXmBGCaE4/ywKOSPAO78gq8AoU4Wq5yqVGKZLLbfpt7/sHlA== + dependencies: + ethers "4.0.0-beta.3" + underscore "1.9.1" + web3-utils "1.2.6" + web3-eth-accounts@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.37.tgz#0a5a9f14a6c3bd285e001c15eb3bb38ffa4b5204" @@ -4560,6 +5145,59 @@ web3-eth-accounts@1.0.0-beta.37: web3-core-method "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-eth-accounts@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" + integrity sha512-26I4qq42STQ8IeKUyur3MdQ1NzrzCqPsmzqpux0j6X/XBD7EjZ+Cs0lhGNkSKH5dI3V8CJasnQ5T1mNKeWB7nQ== + dependencies: + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "0.2.7" + scryptsy "2.1.0" + semver "6.2.0" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-utils "1.2.1" + +web3-eth-accounts@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz#c187e14bff6baa698ac352220290222dbfd332e5" + integrity sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA== + dependencies: + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "0.2.7" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-shim "github:web3-js/scrypt-shim" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-utils "1.2.2" + +web3-eth-accounts@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.6.tgz#a1ba4bf75fa8102a3ec6cddd0eccd72462262720" + integrity sha512-cDVtonHRgzqi/ZHOOf8kfCQWFEipcfQNAMzXIaKZwc0UUD9mgSI5oJrN45a89Ze+E6Lz9m77cDG5Ax9zscSkcw== + dependencies: + "@web3-js/scrypt-shim" "^0.1.0" + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "^0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.6" + web3-core-helpers "1.2.6" + web3-core-method "1.2.6" + web3-utils "1.2.6" + web3-eth-contract@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.37.tgz#87f93c95ed16f320ba54943b7886890de6766013" @@ -4574,6 +5212,50 @@ web3-eth-contract@1.0.0-beta.37: web3-eth-abi "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-eth-contract@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" + integrity sha512-kYFESbQ3boC9bl2rYVghj7O8UKMiuKaiMkxvRH5cEDHil8V7MGEGZNH0slSdoyeftZVlaWSMqkRP/chfnKND0g== + dependencies: + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-promievent "1.2.1" + web3-core-subscriptions "1.2.1" + web3-eth-abi "1.2.1" + web3-utils "1.2.1" + +web3-eth-contract@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz#84e92714918a29e1028ee7718f0712536e14e9a1" + integrity sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA== + dependencies: + "@types/bn.js" "^4.11.4" + underscore "1.9.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-core-promievent "1.2.2" + web3-core-subscriptions "1.2.2" + web3-eth-abi "1.2.2" + web3-utils "1.2.2" + +web3-eth-contract@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.6.tgz#39111543960035ed94c597a239cf5aa1da796741" + integrity sha512-ak4xbHIhWgsbdPCkSN+HnQc1SH4c856y7Ly+S57J/DQVzhFZemK5HvWdpwadJrQTcHET3ZeId1vq3kmW7UYodw== + dependencies: + "@types/bn.js" "^4.11.4" + underscore "1.9.1" + web3-core "1.2.6" + web3-core-helpers "1.2.6" + web3-core-method "1.2.6" + web3-core-promievent "1.2.6" + web3-core-subscriptions "1.2.6" + web3-eth-abi "1.2.6" + web3-utils "1.2.6" + web3-eth-ens@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.37.tgz#714ecb01eb447ee3eb39b2b20a10ae96edb1f01f" @@ -4588,6 +5270,48 @@ web3-eth-ens@1.0.0-beta.37: web3-eth-contract "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-eth-ens@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" + integrity sha512-lhP1kFhqZr2nnbu3CGIFFrAnNxk2veXpOXBY48Tub37RtobDyHijHgrj+xTh+mFiPokyrapVjpFsbGa+Xzye4Q== + dependencies: + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-promievent "1.2.1" + web3-eth-abi "1.2.1" + web3-eth-contract "1.2.1" + web3-utils "1.2.1" + +web3-eth-ens@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz#0a4abed1d4cbdacbf5e1ab06e502d806d1192bc6" + integrity sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg== + dependencies: + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-promievent "1.2.2" + web3-eth-abi "1.2.2" + web3-eth-contract "1.2.2" + web3-utils "1.2.2" + +web3-eth-ens@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.6.tgz#bf86a624c4c72bc59913c2345180d3ea947e110d" + integrity sha512-8UEqt6fqR/dji/jBGPFAyBs16OJjwi0t2dPWXPyGXmty/fH+osnXwWXE4HRUyj4xuafiM5P1YkXMsPhKEadjiw== + dependencies: + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.6" + web3-core-helpers "1.2.6" + web3-core-promievent "1.2.6" + web3-eth-abi "1.2.6" + web3-eth-contract "1.2.6" + web3-utils "1.2.6" + web3-eth-iban@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz#313a3f18ae2ab00ba98678ea1156b09ef32a3655" @@ -4596,6 +5320,30 @@ web3-eth-iban@1.0.0-beta.37: bn.js "4.11.6" web3-utils "1.0.0-beta.37" +web3-eth-iban@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" + integrity sha512-9gkr4QPl1jCU+wkgmZ8EwODVO3ovVj6d6JKMos52ggdT2YCmlfvFVF6wlGLwi0VvNa/p+0BjJzaqxnnG/JewjQ== + dependencies: + bn.js "4.11.8" + web3-utils "1.2.1" + +web3-eth-iban@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz#76bec73bad214df7c4192388979a59fc98b96c5a" + integrity sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ== + dependencies: + bn.js "4.11.8" + web3-utils "1.2.2" + +web3-eth-iban@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.6.tgz#0b22191fd1aa6e27f7ef0820df75820bfb4ed46b" + integrity sha512-TPMc3BW9Iso7H+9w+ytbqHK9wgOmtocyCD3PaAe5Eie50KQ/j7ThA60dGJnxItVo6yyRv5pZAYxPVob9x/fJlg== + dependencies: + bn.js "4.11.8" + web3-utils "1.2.6" + web3-eth-personal@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.37.tgz#187472f51861e2b6d45da43411801bc91a859f9a" @@ -4607,6 +5355,41 @@ web3-eth-personal@1.0.0-beta.37: web3-net "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-eth-personal@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" + integrity sha512-RNDVSiaSoY4aIp8+Hc7z+X72H7lMb3fmAChuSBADoEc7DsJrY/d0R5qQDK9g9t2BO8oxgLrLNyBP/9ub2Hc6Bg== + dependencies: + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-net "1.2.1" + web3-utils "1.2.1" + +web3-eth-personal@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz#eee1c86a8132fa16b5e34c6d421ca92e684f0be6" + integrity sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg== + dependencies: + "@types/node" "^12.6.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-net "1.2.2" + web3-utils "1.2.2" + +web3-eth-personal@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.6.tgz#47a0a0657ec04dd77f95451a6869d4751d324b6b" + integrity sha512-T2NUkh1plY8d7wePXSoHnaiKOd8dLNFaQfgBl9JHU6S7IJrG9jnYD9bVxLEgRUfHs9gKf9tQpDf7AcPFdq/A8g== + dependencies: + "@types/node" "^12.6.1" + web3-core "1.2.6" + web3-core-helpers "1.2.6" + web3-core-method "1.2.6" + web3-net "1.2.6" + web3-utils "1.2.6" + web3-eth@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.37.tgz#0e8ffcd857a5f85ae4b5f052ad831ca5c56f4f74" @@ -4626,6 +5409,63 @@ web3-eth@1.0.0-beta.37: web3-net "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-eth@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" + integrity sha512-/2xly4Yry5FW1i+uygPjhfvgUP/MS/Dk+PDqmzp5M88tS86A+j8BzKc23GrlA8sgGs0645cpZK/999LpEF5UdA== + dependencies: + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-subscriptions "1.2.1" + web3-eth-abi "1.2.1" + web3-eth-accounts "1.2.1" + web3-eth-contract "1.2.1" + web3-eth-ens "1.2.1" + web3-eth-iban "1.2.1" + web3-eth-personal "1.2.1" + web3-net "1.2.1" + web3-utils "1.2.1" + +web3-eth@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.2.tgz#65a1564634a23b990efd1655bf94ad513904286c" + integrity sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA== + dependencies: + underscore "1.9.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-core-subscriptions "1.2.2" + web3-eth-abi "1.2.2" + web3-eth-accounts "1.2.2" + web3-eth-contract "1.2.2" + web3-eth-ens "1.2.2" + web3-eth-iban "1.2.2" + web3-eth-personal "1.2.2" + web3-net "1.2.2" + web3-utils "1.2.2" + +web3-eth@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.6.tgz#15a8c65fdde0727872848cae506758d302d8d046" + integrity sha512-ROWlDPzh4QX6tlGGGlAK6X4kA2n0/cNj/4kb0nNVWkRouGmYO0R8k6s47YxYHvGiXt0s0++FUUv5vAbWovtUQw== + dependencies: + underscore "1.9.1" + web3-core "1.2.6" + web3-core-helpers "1.2.6" + web3-core-method "1.2.6" + web3-core-subscriptions "1.2.6" + web3-eth-abi "1.2.6" + web3-eth-accounts "1.2.6" + web3-eth-contract "1.2.6" + web3-eth-ens "1.2.6" + web3-eth-iban "1.2.6" + web3-eth-personal "1.2.6" + web3-net "1.2.6" + web3-utils "1.2.6" + web3-net@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.37.tgz#b494136043f3c6ba84fe4a47d4c028c2a63c9a8e" @@ -4635,6 +5475,33 @@ web3-net@1.0.0-beta.37: web3-core-method "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-net@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" + integrity sha512-Yt1Bs7WgnLESPe0rri/ZoPWzSy55ovioaP35w1KZydrNtQ5Yq4WcrAdhBzcOW7vAkIwrsLQsvA+hrOCy7mNauw== + dependencies: + web3-core "1.2.1" + web3-core-method "1.2.1" + web3-utils "1.2.1" + +web3-net@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.2.tgz#5c3226ca72df7c591422440ce6f1203fd42ddad9" + integrity sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw== + dependencies: + web3-core "1.2.2" + web3-core-method "1.2.2" + web3-utils "1.2.2" + +web3-net@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.6.tgz#035ca0fbe55282fda848ca17ebb4c8966147e5ea" + integrity sha512-hsNHAPddrhgjWLmbESW0KxJi2GnthPcow0Sqpnf4oB6+/+ZnQHU9OsIyHb83bnC1OmunrK2vf9Ye2mLPdFIu3A== + dependencies: + web3-core "1.2.6" + web3-core-method "1.2.6" + web3-utils "1.2.6" + web3-providers-http@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.37.tgz#c06efd60e16e329e25bd268d2eefc68d82d13651" @@ -4643,6 +5510,30 @@ web3-providers-http@1.0.0-beta.37: web3-core-helpers "1.0.0-beta.37" xhr2-cookies "1.1.0" +web3-providers-http@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.1.tgz#c93ea003a42e7b894556f7e19dd3540f947f5013" + integrity sha512-BDtVUVolT9b3CAzeGVA/np1hhn7RPUZ6YYGB/sYky+GjeO311Yoq8SRDUSezU92x8yImSC2B+SMReGhd1zL+bQ== + dependencies: + web3-core-helpers "1.2.1" + xhr2-cookies "1.1.0" + +web3-providers-http@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.2.tgz#155e55c1d69f4c5cc0b411ede40dea3d06720956" + integrity sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg== + dependencies: + web3-core-helpers "1.2.2" + xhr2-cookies "1.1.0" + +web3-providers-http@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.6.tgz#3c7b1252751fb37e53b873fce9dbb6340f5e31d9" + integrity sha512-2+SaFCspb5f82QKuHB3nEPQOF9iSWxRf7c18fHtmnLNVkfG9SwLN1zh67bYn3tZGUdOI3gj8aX4Uhfpwx9Ezpw== + dependencies: + web3-core-helpers "1.2.6" + xhr2-cookies "1.1.0" + web3-providers-ipc@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.37.tgz#55d247e7197257ca0c3e4f4b0fe1561311b9d5b9" @@ -4652,6 +5543,33 @@ web3-providers-ipc@1.0.0-beta.37: underscore "1.8.3" web3-core-helpers "1.0.0-beta.37" +web3-providers-ipc@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" + integrity sha512-oPEuOCwxVx8L4CPD0TUdnlOUZwGBSRKScCz/Ws2YHdr9Ium+whm+0NLmOZjkjQp5wovQbyBzNa6zJz1noFRvFA== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.1" + +web3-providers-ipc@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz#c6d165a12bc68674b4cdd543ea18aec79cafc2e8" + integrity sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.2" + +web3-providers-ipc@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.6.tgz#adabab5ac66b3ff8a26c7dc97af3f1a6a7609701" + integrity sha512-b0Es+/GTZyk5FG3SgUDW+2/mBwJAXWt5LuppODptiOas8bB2khLjG6+Gm1K4uwOb+1NJGPt5mZZ8Wi7vibtQ+A== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.6" + web3-providers-ws@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.37.tgz#77c15aebc00b75d760d22d063ac2e415bdbef72f" @@ -4661,6 +5579,33 @@ web3-providers-ws@1.0.0-beta.37: web3-core-helpers "1.0.0-beta.37" websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" +web3-providers-ws@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" + integrity sha512-oqsQXzu+ejJACVHy864WwIyw+oB21nw/pI65/sD95Zi98+/HQzFfNcIFneF1NC4bVF3VNX4YHTNq2I2o97LAiA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" + +web3-providers-ws@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz#d2c05c68598cea5ad3fa6ef076c3bcb3ca300d29" + integrity sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.2" + websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" + +web3-providers-ws@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.6.tgz#3cecc49f7c99f07a75076d3c54247050bc4f7e11" + integrity sha512-20waSYX+gb5M5yKhug5FIwxBBvkKzlJH7sK6XEgdOx6BZ9YYamLmvg9wcRVtnSZO8hV/3cWenO/tRtTrHVvIgQ== + dependencies: + "@web3-js/websocket" "^1.0.29" + underscore "1.9.1" + web3-core-helpers "1.2.6" + web3-shh@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.37.tgz#3246ce5229601b525020828a56ee283307057105" @@ -4671,6 +5616,36 @@ web3-shh@1.0.0-beta.37: web3-core-subscriptions "1.0.0-beta.37" web3-net "1.0.0-beta.37" +web3-shh@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" + integrity sha512-/3Cl04nza5kuFn25bV3FJWa0s3Vafr5BlT933h26xovQ6HIIz61LmvNQlvX1AhFL+SNJOTcQmK1SM59vcyC8bA== + dependencies: + web3-core "1.2.1" + web3-core-method "1.2.1" + web3-core-subscriptions "1.2.1" + web3-net "1.2.1" + +web3-shh@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.2.tgz#44ed998f2a6ba0ec5cb9d455184a0f647826a49c" + integrity sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg== + dependencies: + web3-core "1.2.2" + web3-core-method "1.2.2" + web3-core-subscriptions "1.2.2" + web3-net "1.2.2" + +web3-shh@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.6.tgz#2492616da4cac32d4c7534b890f43bac63190c14" + integrity sha512-rouWyOOM6YMbLQd65grpj8BBezQfgNeRRX+cGyW4xsn6Xgu+B73Zvr6OtA/ftJwwa9bqHGpnLrrLMeWyy4YLUw== + dependencies: + web3-core "1.2.6" + web3-core-method "1.2.6" + web3-core-subscriptions "1.2.6" + web3-net "1.2.6" + web3-utils@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.37.tgz#ab868a90fe5e649337e38bdaf72133fcbf4d414d" @@ -4684,6 +5659,47 @@ web3-utils@1.0.0-beta.37: underscore "1.8.3" utf8 "2.1.1" +web3-utils@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" + integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== + dependencies: + bn.js "4.11.8" + eth-lib "0.2.7" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randomhex "0.1.5" + underscore "1.9.1" + utf8 "3.0.0" + +web3-utils@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.2.tgz#b53a08c40d2c3f31d3c4a28e7d749405df99c8c0" + integrity sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A== + dependencies: + bn.js "4.11.8" + eth-lib "0.2.7" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + +web3-utils@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.6.tgz#b9a25432da00976457fcc1094c4af8ac6d486db9" + integrity sha512-8/HnqG/l7dGmKMgEL9JeKPTtjScxOePTzopv5aaKFExPfaBrYRkgoMqhoowCiAl/s16QaTn4DoIF1QC4YsT7Mg== + dependencies: + bn.js "4.11.8" + eth-lib "0.2.7" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + web3@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.37.tgz#b42c30e67195f816cd19d048fda872f70eca7083" @@ -4697,16 +5713,46 @@ web3@1.0.0-beta.37: web3-shh "1.0.0-beta.37" web3-utils "1.0.0-beta.37" -web3@^0.18.4: - version "0.18.4" - resolved "https://registry.yarnpkg.com/web3/-/web3-0.18.4.tgz#81ec1784145491f2eaa8955b31c06049e07c5e7d" - integrity sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0= - dependencies: - bignumber.js "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" - crypto-js "^3.1.4" - utf8 "^2.1.1" - xhr2 "*" - xmlhttprequest "*" +web3@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" + integrity sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw== + dependencies: + web3-bzz "1.2.1" + web3-core "1.2.1" + web3-eth "1.2.1" + web3-eth-personal "1.2.1" + web3-net "1.2.1" + web3-shh "1.2.1" + web3-utils "1.2.1" + +web3@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.2.tgz#b1b8b69aafdf94cbaeadbb68a8aa1df2ef266aec" + integrity sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg== + dependencies: + "@types/node" "^12.6.1" + web3-bzz "1.2.2" + web3-core "1.2.2" + web3-eth "1.2.2" + web3-eth-personal "1.2.2" + web3-net "1.2.2" + web3-shh "1.2.2" + web3-utils "1.2.2" + +web3@1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.6.tgz#c497dcb14cdd8d6d9fb6b445b3b68ff83f8ccf68" + integrity sha512-tpu9fLIComgxGrFsD8LUtA4s4aCZk7px8UfcdEy6kS2uDi/ZfR07KJqpXZMij7Jvlq+cQrTAhsPSiBVvoMaivA== + dependencies: + "@types/node" "^12.6.1" + web3-bzz "1.2.6" + web3-core "1.2.6" + web3-eth "1.2.6" + web3-eth-personal "1.2.6" + web3-net "1.2.6" + web3-shh "1.2.6" + web3-utils "1.2.6" websocket@^1.0.28: version "1.0.32" @@ -4729,10 +5775,16 @@ websocket@^1.0.28: typedarray-to-buffer "^3.1.2" yaeti "^0.0.6" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= +"websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": + version "1.0.29" + uid ef5ea2f41daf4a2113b80c9223df884b4d56c400 + resolved "https://codeload.github.com/web3-js/WebSocket-Node/tar.gz/ef5ea2f41daf4a2113b80c9223df884b4d56c400" + dependencies: + debug "^2.2.0" + es5-ext "^0.10.50" + nan "^2.14.0" + typedarray-to-buffer "^3.1.5" + yaeti "^0.0.6" which-module@^2.0.0: version "2.0.0" @@ -4746,7 +5798,7 @@ which@2.0.2: dependencies: isexe "^2.0.0" -which@^1.1.1, which@^1.2.9: +which@^1.1.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== @@ -4760,11 +5812,6 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= - word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -4780,14 +5827,6 @@ workerpool@6.0.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -4845,11 +5884,6 @@ xhr2-cookies@1.1.0: dependencies: cookiejar "^2.1.1" -xhr2@*: - version "0.2.0" - resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.2.0.tgz#eddeff782f3b7551061b8d75645085269396e521" - integrity sha512-BDtiD0i2iKPK/S8OAZfpk6tyzEDnKKSjxWHcMBVmh+LuqJ8A32qXTyOx+TVOg2dKvq6zGBq2sgKPkEeRs1qTRA== - xhr@^2.0.4, xhr@^2.3.3: version "2.5.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" @@ -4860,7 +5894,7 @@ xhr@^2.0.4, xhr@^2.3.3: parse-headers "^2.0.0" xtend "^4.0.0" -xmlhttprequest@*, xmlhttprequest@1.8.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= @@ -4870,11 +5904,6 @@ xtend@^4.0.0: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -4885,6 +5914,11 @@ yaeti@^0.0.6: resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= +yallist@^3.0.0, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -4901,14 +5935,6 @@ yargs-parser@^15.0.1: 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" - integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= - dependencies: - camelcase "^3.0.0" - lodash.assign "^4.0.6" - yargs-unparser@1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" @@ -4970,26 +5996,6 @@ yargs@^14.2.3: y18n "^4.0.0" yargs-parser "^15.0.1" -yargs@^4.6.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA= - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - lodash.assign "^4.0.3" - 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.1" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.1" - yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" From 895139d526db9b3f7b5fa88232257ae2fa97f957 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Sep 2020 02:00:23 +0100 Subject: [PATCH 31/38] Bump dotenv from 8.0.0 to 8.2.0 (#272) Bumps [dotenv](https://github.com/motdotla/dotenv) from 8.0.0 to 8.2.0. - [Release notes](https://github.com/motdotla/dotenv/releases) - [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md) - [Commits](https://github.com/motdotla/dotenv/compare/v8.0.0...v8.2.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Peter Petrovics --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8938b300..63a86239 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "abiniser": "0.5.1", "babel-register": "6.26.0", "coveralls": "3.0.4", - "dotenv": "8.0.0", + "dotenv": "8.2.0", "eslint": "6.0.0", "ganache-cli": "6.10.2", "moment": "2.27.0", diff --git a/yarn.lock b/yarn.lock index b147446e..9e1631d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1245,10 +1245,10 @@ dom-walk@^0.1.0: resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -dotenv@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.0.0.tgz#ed310c165b4e8a97bb745b0a9d99c31bda566440" - integrity sha512-30xVGqjLjiUOArT4+M5q9sYdvuR4riM6yK9wMcas9Vbp6zZa+ocC9dp6QoftuhTPhFAiLK/0C5Ni2nou/Bk8lg== +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== drbg.js@^1.0.1: version "1.0.1" From 5a810f2d386335075203ed3494e39bde8080b05d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Sep 2020 02:27:46 +0100 Subject: [PATCH 32/38] Bump wait-on from 3.2.0 to 5.2.0 (#273) Bumps [wait-on](https://github.com/jeffbski/wait-on) from 3.2.0 to 5.2.0. - [Release notes](https://github.com/jeffbski/wait-on/releases) - [Commits](https://github.com/jeffbski/wait-on/compare/v3.2.0...v5.2.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 123 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 74 insertions(+), 51 deletions(-) diff --git a/package.json b/package.json index 63a86239..409bf348 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "stringifier": "2.1.0", "truffle": "5.1.44", "truffle-hdwallet-provider": "1.0.13", - "wait-on": "3.2.0" + "wait-on": "5.2.0" }, "files": [ "abiniser" diff --git a/yarn.lock b/yarn.lock index 9e1631d4..11d46df2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,35 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@hapi/address@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-4.1.0.tgz#d60c5c0d930e77456fdcde2598e77302e2955e1d" + integrity sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@hapi/formula@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@hapi/formula/-/formula-2.0.0.tgz#edade0619ed58c8e4f164f233cda70211e787128" + integrity sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A== + +"@hapi/hoek@^9.0.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.0.tgz#6c9eafc78c1529248f8f4d92b0799a712b6052c6" + integrity sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw== + +"@hapi/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@hapi/pinpoint/-/pinpoint-2.0.0.tgz#805b40d4dbec04fc116a73089494e00f073de8df" + integrity sha512-vzXR5MY7n4XeIvLpfl3HtE3coZYO4raKXW766R6DZw/6aLqR26iuZ109K7a0NtF2Db0jxqh7xz2AxkUwpUFybw== + +"@hapi/topo@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" + integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== + dependencies: + "@hapi/hoek" "^9.0.0" + "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -362,6 +391,13 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== +axios@^0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -959,7 +995,7 @@ cookiejar@^2.1.1: resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7: +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== @@ -1087,6 +1123,13 @@ debug@4.1.1, debug@^4.0.1: dependencies: ms "^2.1.1" +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1962,6 +2005,13 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -2374,16 +2424,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoek@5.x.x: - version "5.0.4" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.4.tgz#0f7fa270a1cafeb364a4b2ddfaa33f864e4157da" - integrity sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w== - -hoek@6.x.x: - version "6.1.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.3.tgz#73b7d33952e01fe27a38b0457294b79dd8da242c" - integrity sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ== - home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -2689,13 +2729,6 @@ isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isemail@3.x.x: - version "3.2.0" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" - integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg== - dependencies: - punycode "2.x.x" - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -2727,14 +2760,16 @@ iterate-value@^1.0.0: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" -joi@^13.0.0: - version "13.7.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-13.7.0.tgz#cfd85ebfe67e8a1900432400b4d03bbd93fb879f" - integrity sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q== +joi@^17.1.1: + version "17.2.1" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.2.1.tgz#e5140fdf07e8fecf9bc977c2832d1bdb1e3f2a0a" + integrity sha512-YT3/4Ln+5YRpacdmfEfrrKh50/kkgX3LgBltjqnlMPIYiZ4hxXZuVJcxmsvxsdeHg9soZfE3qXxHC2tMpCCBOA== dependencies: - hoek "5.x.x" - isemail "3.x.x" - topo "3.x.x" + "@hapi/address" "^4.1.0" + "@hapi/formula" "^2.0.0" + "@hapi/hoek" "^9.0.0" + "@hapi/pinpoint" "^2.0.0" + "@hapi/topo" "^5.0.0" js-sha3@0.5.7, js-sha3@^0.5.7: version "0.5.7" @@ -2928,7 +2963,7 @@ lodash.toarray@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -3684,7 +3719,7 @@ punycode@2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= -punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -3810,7 +3845,7 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.79.0, request@^2.86.0, request@^2.88.0: +request@^2.79.0, request@^2.86.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -3922,12 +3957,7 @@ run-parallel@^1.1.9: resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== -rx@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" - integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= - -rxjs@^6.4.0: +rxjs@^6.4.0, rxjs@^6.5.5: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== @@ -4585,13 +4615,6 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -topo@3.x.x: - version "3.0.3" - resolved "https://registry.yarnpkg.com/topo/-/topo-3.0.3.tgz#d5a67fb2e69307ebeeb08402ec2a2a6f5f7ad95c" - integrity sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ== - dependencies: - hoek "6.x.x" - tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -4808,16 +4831,16 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -wait-on@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-3.2.0.tgz#c83924df0fc42a675c678324c49c769d378bcb85" - integrity sha512-QUGNKlKLDyY6W/qHdxaRlXUAgLPe+3mLL/tRByHpRNcHs/c7dZXbu+OnJWGNux6tU1WFh/Z8aEwvbuzSAu79Zg== +wait-on@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-5.2.0.tgz#6711e74422523279714a36d52cf49fb47c9d9597" + integrity sha512-U1D9PBgGw2XFc6iZqn45VBubw02VsLwnZWteQ1au4hUVHasTZuFSKRzlTB2dqgLhji16YVI8fgpEpwUdCr8B6g== dependencies: - core-js "^2.5.7" - joi "^13.0.0" - minimist "^1.2.0" - request "^2.88.0" - rx "^4.1.0" + axios "^0.19.2" + joi "^17.1.1" + lodash "^4.17.19" + minimist "^1.2.5" + rxjs "^6.5.5" web3-bzz@1.0.0-beta.37: version "1.0.0-beta.37" From 6b4475cbcfef9c2ae73c2c4ae267d647ddb67265 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Sep 2020 02:44:52 +0100 Subject: [PATCH 33/38] Bump truffle-hdwallet-provider from 1.0.13 to 1.0.17 (#274) Bumps [truffle-hdwallet-provider](https://github.com/trufflesuite/truffle) from 1.0.13 to 1.0.17. - [Release notes](https://github.com/trufflesuite/truffle/releases) - [Commits](https://github.com/trufflesuite/truffle/compare/truffle-hdwallet-provider@1.0.13...truffle-hdwallet-provider@1.0.17) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 516 +++------------------------------------------------ 2 files changed, 30 insertions(+), 488 deletions(-) diff --git a/package.json b/package.json index 409bf348..3a1ea583 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "solidity-coverage": "0.7.10", "stringifier": "2.1.0", "truffle": "5.1.44", - "truffle-hdwallet-provider": "1.0.13", + "truffle-hdwallet-provider": "1.0.17", "wait-on": "5.2.0" }, "files": [ diff --git a/yarn.lock b/yarn.lock index 11d46df2..4a4c89ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -294,7 +294,7 @@ ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -any-promise@1.3.0, any-promise@^1.0.0, any-promise@^1.3.0: +any-promise@1.3.0, any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= @@ -579,18 +579,6 @@ 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: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -696,14 +684,6 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: bn.js "^4.1.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" @@ -1603,19 +1583,6 @@ eth-ens-namehash@2.0.8: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" -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" @@ -1713,22 +1680,6 @@ ethereumjs-util@^6.0.0: ethjs-util "0.1.6" rlp "^2.2.3" -ethers@4.0.0-beta.1: - version "4.0.0-beta.1" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.1.tgz#0648268b83e0e91a961b1af971c662cdf8cbab6d" - integrity sha512-SoYhktEbLxf+fiux5SfCEwdzWENMvgIbMZD90I62s4GZD9nEjgEWy8ZboI3hck193Vs0bDoTohDISx84f2H2tw== - 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@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" @@ -1776,11 +1727,6 @@ ethjs-util@0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -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: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" @@ -2041,14 +1987,6 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -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: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -2074,16 +2012,6 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" -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.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2094,16 +2022,6 @@ fsevents@~2.1.2: 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: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2267,7 +2185,24 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -got@7.1.0, got@^7.1.0: +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@^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== @@ -2287,23 +2222,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" - graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" @@ -2523,7 +2441,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.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2776,11 +2694,6 @@ js-sha3@0.5.7, js-sha3@^0.5.7: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= -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-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" @@ -2851,13 +2764,6 @@ json5@^0.5.1: resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -2903,14 +2809,6 @@ keccak@^3.0.0: 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" - integrity sha512-BjLkNDcfaZ6l8HBG9tH0tpmDv3sS2mA7FNQxFHpCdzP3Gb2MVruXBSuoM66SnVxKJpAr5dKGdkHD+bDokt8fTg== - dependencies: - browserify-sha3 "^0.0.4" - sha3 "^1.2.2" - keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -3162,7 +3060,7 @@ mkdirp@*: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@0.5.x, 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== @@ -3210,11 +3108,6 @@ moment@2.27.0: resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== -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= - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3235,21 +3128,7 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -mz@^2.6.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nan@2.13.2: - version "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.14.0, nan@^2.2.1, nan@^2.3.3: +nan@^2.0.8, nan@^2.14.0, nan@^2.2.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== @@ -3378,13 +3257,6 @@ object.assign@^4.1.0: has-symbols "^1.0.1" object-keys "^1.1.1" -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" @@ -3918,13 +3790,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -4022,15 +3887,7 @@ scrypt-js@^3.0.0: scryptsy "^2.1.0" semver "^6.3.0" -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@6.0.3, scrypt@^6.0.2: +scrypt@6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/scrypt/-/scrypt-6.0.3.tgz#04e014a5682b53fa50c2d5cce167d719c06d870d" integrity sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0= @@ -4042,13 +3899,6 @@ scryptsy@2.1.0, scryptsy@^2.1.0: resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== -scryptsy@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" - integrity sha1-oyJfpLJST4AnAHYeKFW987LZIWM= - dependencies: - pbkdf2 "^3.0.3" - secp256k1@^3.0.1: version "3.8.0" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" @@ -4169,13 +4019,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" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -4459,25 +4302,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -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" - swarm-js@0.1.39: version "0.1.39" resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" @@ -4519,26 +4343,6 @@ tar-stream@^1.5.2: to-buffer "^1.1.1" xtend "^4.0.0" -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: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -4557,20 +4361,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -thenify-all@^1.0.0, thenify-all@^1.6.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= - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -4633,14 +4423,14 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -truffle-hdwallet-provider@1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.13.tgz#be0d9338cc60da7d6419a5fc0f02f0d42e7e2ef9" - integrity sha512-I4qkKKl8ikwrCjOuTU1YBltcAWWffy4cnVH9QpVGEqTjArYPk40HWzwr4vcfr+nPNBlYyTyMUEbGt+4iouLznQ== +truffle-hdwallet-provider@1.0.17: + version "1.0.17" + resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.17.tgz#fe8edd0d6974eeb31af9959e41525fb19abd74ca" + integrity sha512-s6DvSP83jiIAc6TUcpr7Uqnja1+sLGJ8og3X7n41vfyC4OCaKmBtXL5HOHf+SsU3iblOvnbFDgmN6Y1VBL/fsg== dependencies: any-promise "^1.3.0" bindings "^1.3.1" - web3 "1.0.0-beta.37" + web3 "1.2.1" websocket "^1.0.28" truffle@5.1.44: @@ -4699,7 +4489,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== @@ -4724,11 +4514,6 @@ unbzip2-stream@^1.0.9: buffer "^5.2.1" through "^2.3.8" -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" @@ -4782,11 +4567,6 @@ utf-8-validate@^5.0.2: 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= - utf8@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" @@ -4842,15 +4622,6 @@ wait-on@5.2.0: minimist "^1.2.5" rxjs "^6.5.5" -web3-bzz@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.37.tgz#59e3e4f5a9d732731008fe9165c3ec8bf85d502f" - integrity sha512-E+dho49Nsm/QpQvYWOF35YDsQrMvLB19AApENxhlQsu6HpWQt534DQul0t3Y/aAh8rlKD6Kanxt8LhHDG3vejQ== - dependencies: - got "7.1.0" - swarm-js "0.1.37" - underscore "1.8.3" - web3-bzz@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.1.tgz#c3bd1e8f0c02a13cd6d4e3c3e9e1713f144f6f0d" @@ -4880,15 +4651,6 @@ web3-bzz@1.2.6: swarm-js "0.1.39" underscore "1.9.1" -web3-core-helpers@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz#04ec354b7f5c57234c309eea2bda9bf1f2fe68ba" - integrity sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew== - dependencies: - underscore "1.8.3" - web3-eth-iban "1.0.0-beta.37" - web3-utils "1.0.0-beta.37" - web3-core-helpers@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" @@ -4916,17 +4678,6 @@ web3-core-helpers@1.2.6: web3-eth-iban "1.2.6" web3-utils "1.2.6" -web3-core-method@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.37.tgz#53d148e63f818b23461b26307afdfbdaa9457744" - integrity sha512-pKWFUeqnVmzx3VrZg+CseSdrl/Yrk2ioid/HzolNXZE6zdoITZL0uRjnsbqXGEzgRRd1Oe/pFndpTlRsnxXloA== - dependencies: - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.37" - web3-core-promievent "1.0.0-beta.37" - web3-core-subscriptions "1.0.0-beta.37" - web3-utils "1.0.0-beta.37" - web3-core-method@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" @@ -4960,14 +4711,6 @@ web3-core-method@1.2.6: web3-core-subscriptions "1.2.6" web3-utils "1.2.6" -web3-core-promievent@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.37.tgz#4e51c469d0a7ac0a969885a4dbcde8504abe5b02" - integrity sha512-GTF2r1lP8nJBeA5Gxq5yZpJy9l8Fb9CXGZPfF8jHvaRdQHtm2Z+NDhqYmF833lcdkokRSyfPcXlz1mlWeClFpg== - dependencies: - any-promise "1.3.0" - eventemitter3 "1.1.1" - web3-core-promievent@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" @@ -4992,17 +4735,6 @@ web3-core-promievent@1.2.6: any-promise "1.3.0" eventemitter3 "3.1.2" -web3-core-requestmanager@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.37.tgz#721a75df5920621bff42d9d74f7a64413675d56b" - integrity sha512-66VUqye5BGp1Zz1r8psCxdNH+GtTjaFwroum2Osx+wbC5oRjAiXkkadiitf6wRb+edodjEMPn49u7B6WGNuewQ== - dependencies: - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.37" - web3-providers-http "1.0.0-beta.37" - web3-providers-ipc "1.0.0-beta.37" - web3-providers-ws "1.0.0-beta.37" - web3-core-requestmanager@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" @@ -5036,15 +4768,6 @@ web3-core-requestmanager@1.2.6: web3-providers-ipc "1.2.6" web3-providers-ws "1.2.6" -web3-core-subscriptions@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.37.tgz#40de5e2490cc05b15faa8f935c97fd48d670cd9a" - integrity sha512-FdXl8so9kwkRRWziuCSpFsAuAdg9KvpXa1fQlT16uoGcYYfxwFO/nkwyBGQzkZt7emShI2IRugcazyPCZDwkOA== - dependencies: - eventemitter3 "1.1.1" - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.37" - web3-core-subscriptions@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" @@ -5072,16 +4795,6 @@ web3-core-subscriptions@1.2.6: underscore "1.9.1" web3-core-helpers "1.2.6" -web3-core@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.37.tgz#66c2c7000772c9db36d737ada31607ace09b7e90" - integrity sha512-cIwEqCj7OJyefQNauI0HOgW4sSaOQ98V99H2/HEIlnCZylsDzfw7gtQUdwnRFiIyIxjbWy3iWsjwDPoXNPZBYg== - dependencies: - web3-core-helpers "1.0.0-beta.37" - web3-core-method "1.0.0-beta.37" - web3-core-requestmanager "1.0.0-beta.37" - web3-utils "1.0.0-beta.37" - web3-core@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" @@ -5116,15 +4829,6 @@ web3-core@1.2.6: web3-core-requestmanager "1.2.6" web3-utils "1.2.6" -web3-eth-abi@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.37.tgz#55592fa9cd2427d9f0441d78f3b8d0c1359a2a24" - integrity sha512-g9DKZGM2OqwKp/tX3W/yihcj7mQCtJ6CXyZXEIZfuDyRBED/iSEIFfieDOd+yo16sokLMig6FG7ADhhu+19hdA== - dependencies: - ethers "4.0.0-beta.1" - underscore "1.8.3" - web3-utils "1.0.0-beta.37" - web3-eth-abi@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" @@ -5152,22 +4856,6 @@ web3-eth-abi@1.2.6: underscore "1.9.1" web3-utils "1.2.6" -web3-eth-accounts@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.37.tgz#0a5a9f14a6c3bd285e001c15eb3bb38ffa4b5204" - integrity sha512-uvbHL62/zwo4GDmwKdqH9c/EgYd8QVnAfpVw8D3epSISpgbONNY7Hr4MRMSd/CqAP12l2Ls9JVQGLhhC83bW6g== - 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.37" - web3-core-helpers "1.0.0-beta.37" - web3-core-method "1.0.0-beta.37" - web3-utils "1.0.0-beta.37" - web3-eth-accounts@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" @@ -5221,20 +4909,6 @@ web3-eth-accounts@1.2.6: web3-core-method "1.2.6" web3-utils "1.2.6" -web3-eth-contract@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.37.tgz#87f93c95ed16f320ba54943b7886890de6766013" - integrity sha512-h1B3A8Z/C7BlnTCHkrWbXZQTViDxfR12lKMeTkT8Sqj5phFmxrBlPE4ORy4lf1Dk5b23mZYE0r/IRACx4ThCrQ== - dependencies: - underscore "1.8.3" - web3-core "1.0.0-beta.37" - web3-core-helpers "1.0.0-beta.37" - web3-core-method "1.0.0-beta.37" - web3-core-promievent "1.0.0-beta.37" - web3-core-subscriptions "1.0.0-beta.37" - web3-eth-abi "1.0.0-beta.37" - web3-utils "1.0.0-beta.37" - web3-eth-contract@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" @@ -5279,20 +4953,6 @@ web3-eth-contract@1.2.6: web3-eth-abi "1.2.6" web3-utils "1.2.6" -web3-eth-ens@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.37.tgz#714ecb01eb447ee3eb39b2b20a10ae96edb1f01f" - integrity sha512-dR3UkrVzdRrJhfP57xBPx0CMiVnCcYFvh+u2XMkGydrhHgupSUkjqGr89xry/j1T0BkuN9mikpbyhdCVMXqMbg== - dependencies: - eth-ens-namehash "2.0.8" - underscore "1.8.3" - web3-core "1.0.0-beta.37" - web3-core-helpers "1.0.0-beta.37" - web3-core-promievent "1.0.0-beta.37" - web3-eth-abi "1.0.0-beta.37" - web3-eth-contract "1.0.0-beta.37" - web3-utils "1.0.0-beta.37" - web3-eth-ens@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" @@ -5335,14 +4995,6 @@ web3-eth-ens@1.2.6: web3-eth-contract "1.2.6" web3-utils "1.2.6" -web3-eth-iban@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz#313a3f18ae2ab00ba98678ea1156b09ef32a3655" - integrity sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ== - dependencies: - bn.js "4.11.6" - web3-utils "1.0.0-beta.37" - web3-eth-iban@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" @@ -5367,17 +5019,6 @@ web3-eth-iban@1.2.6: bn.js "4.11.8" web3-utils "1.2.6" -web3-eth-personal@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.37.tgz#187472f51861e2b6d45da43411801bc91a859f9a" - integrity sha512-B4dZpGbD+nGnn48i6nJBqrQ+HB7oDmd+Q3wGRKOsHSK5HRWO/KwYeA7wgwamMAElkut50lIsT9EJl4Apfk3G5Q== - dependencies: - web3-core "1.0.0-beta.37" - web3-core-helpers "1.0.0-beta.37" - web3-core-method "1.0.0-beta.37" - web3-net "1.0.0-beta.37" - web3-utils "1.0.0-beta.37" - web3-eth-personal@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" @@ -5413,25 +5054,6 @@ web3-eth-personal@1.2.6: web3-net "1.2.6" web3-utils "1.2.6" -web3-eth@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.37.tgz#0e8ffcd857a5f85ae4b5f052ad831ca5c56f4f74" - integrity sha512-Eb3aGtkz3G9q+Z9DKgSQNbn/u8RtcZQQ0R4sW9hy5KK47GoT6vab5c6DiD3QWzI0BzitHzR5Ji+3VHf/hPUGgw== - dependencies: - underscore "1.8.3" - web3-core "1.0.0-beta.37" - web3-core-helpers "1.0.0-beta.37" - web3-core-method "1.0.0-beta.37" - web3-core-subscriptions "1.0.0-beta.37" - web3-eth-abi "1.0.0-beta.37" - web3-eth-accounts "1.0.0-beta.37" - web3-eth-contract "1.0.0-beta.37" - web3-eth-ens "1.0.0-beta.37" - web3-eth-iban "1.0.0-beta.37" - web3-eth-personal "1.0.0-beta.37" - web3-net "1.0.0-beta.37" - web3-utils "1.0.0-beta.37" - web3-eth@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" @@ -5489,15 +5111,6 @@ web3-eth@1.2.6: web3-net "1.2.6" web3-utils "1.2.6" -web3-net@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.37.tgz#b494136043f3c6ba84fe4a47d4c028c2a63c9a8e" - integrity sha512-xG/uBtMdDa1UMXw9KjDUgf3fXA/fDEJUYUS0TDn+U9PMgngA+UVECHNNvQTrVVDxEky38V3sahwIDiopNsQdsw== - dependencies: - web3-core "1.0.0-beta.37" - web3-core-method "1.0.0-beta.37" - web3-utils "1.0.0-beta.37" - web3-net@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" @@ -5525,14 +5138,6 @@ web3-net@1.2.6: web3-core-method "1.2.6" web3-utils "1.2.6" -web3-providers-http@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.37.tgz#c06efd60e16e329e25bd268d2eefc68d82d13651" - integrity sha512-FM/1YDB1jtZuTo78habFj7S9tNHoqt0UipdyoQV29b8LkGKZV9Vs3is8L24hzuj1j/tbwkcAH+ewIseHwu0DTg== - dependencies: - web3-core-helpers "1.0.0-beta.37" - xhr2-cookies "1.1.0" - web3-providers-http@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.1.tgz#c93ea003a42e7b894556f7e19dd3540f947f5013" @@ -5557,15 +5162,6 @@ web3-providers-http@1.2.6: web3-core-helpers "1.2.6" xhr2-cookies "1.1.0" -web3-providers-ipc@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.37.tgz#55d247e7197257ca0c3e4f4b0fe1561311b9d5b9" - integrity sha512-NdRPRxYMIU0C3u18NI8u4bwbhI9pCg5nRgDGYcmSAx5uOBxiYcQy+hb0WkJRRhBoyIXJmy+s26FoH8904+UnPg== - dependencies: - oboe "2.1.3" - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.37" - web3-providers-ipc@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" @@ -5593,15 +5189,6 @@ web3-providers-ipc@1.2.6: underscore "1.9.1" web3-core-helpers "1.2.6" -web3-providers-ws@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.37.tgz#77c15aebc00b75d760d22d063ac2e415bdbef72f" - integrity sha512-8p6ZLv+1JYa5Vs8oBn33Nn3VGFBbF+wVfO+b78RJS1Qf1uIOzjFVDk3XwYDD7rlz9G5BKpxhaQw+6EGQ7L02aw== - dependencies: - underscore "1.8.3" - web3-core-helpers "1.0.0-beta.37" - websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" - web3-providers-ws@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" @@ -5629,16 +5216,6 @@ web3-providers-ws@1.2.6: underscore "1.9.1" web3-core-helpers "1.2.6" -web3-shh@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.37.tgz#3246ce5229601b525020828a56ee283307057105" - integrity sha512-h5STG/xqZNQWtCLYOu7NiMqwqPea8SfkKQUPUFxXKIPVCFVKpHuQEwW1qcPQRJMLhlQIv17xuoUe1A+RzDNbrw== - dependencies: - web3-core "1.0.0-beta.37" - web3-core-method "1.0.0-beta.37" - web3-core-subscriptions "1.0.0-beta.37" - web3-net "1.0.0-beta.37" - web3-shh@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" @@ -5669,19 +5246,6 @@ web3-shh@1.2.6: web3-core-subscriptions "1.2.6" web3-net "1.2.6" -web3-utils@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.37.tgz#ab868a90fe5e649337e38bdaf72133fcbf4d414d" - integrity sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ== - 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-utils@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" @@ -5723,19 +5287,6 @@ web3-utils@1.2.6: underscore "1.9.1" utf8 "3.0.0" -web3@1.0.0-beta.37: - version "1.0.0-beta.37" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.37.tgz#b42c30e67195f816cd19d048fda872f70eca7083" - integrity sha512-8XLgUspdzicC/xHG82TLrcF/Fxzj2XYNJ1KTYnepOI77bj5rvpsxxwHYBWQ6/JOjk0HkZqoBfnXWgcIHCDhZhQ== - dependencies: - web3-bzz "1.0.0-beta.37" - web3-core "1.0.0-beta.37" - web3-eth "1.0.0-beta.37" - web3-eth-personal "1.0.0-beta.37" - web3-net "1.0.0-beta.37" - web3-shh "1.0.0-beta.37" - web3-utils "1.0.0-beta.37" - web3@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" @@ -5789,15 +5340,6 @@ websocket@^1.0.28: 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" - dependencies: - debug "^2.2.0" - nan "^2.3.3" - typedarray-to-buffer "^3.1.2" - yaeti "^0.0.6" - "websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": version "1.0.29" uid ef5ea2f41daf4a2113b80c9223df884b4d56c400 From c15a07742506d6c8ec30c76cd8f67365ab3be8d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Sep 2020 01:52:45 +0000 Subject: [PATCH 34/38] Bump eslint from 6.0.0 to 7.9.0 (#276) --- package.json | 2 +- yarn.lock | 375 +++++++++++++++++++++++++-------------------------- 2 files changed, 187 insertions(+), 190 deletions(-) diff --git a/package.json b/package.json index 3a1ea583..cb104d38 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "babel-register": "6.26.0", "coveralls": "3.0.4", "dotenv": "8.2.0", - "eslint": "6.0.0", + "eslint": "7.9.0", "ganache-cli": "6.10.2", "moment": "2.27.0", "random-seed": "0.3.0", diff --git a/yarn.lock b/yarn.lock index 4a4c89ee..8aa6e7a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,22 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@eslint/eslintrc@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" + integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@hapi/address@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-4.1.0.tgz#d60c5c0d930e77456fdcde2598e77302e2955e1d" @@ -219,7 +235,7 @@ acorn-jsx@^5.2.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn@^7.1.1: +acorn@^7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== @@ -234,7 +250,7 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: version "6.12.4" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== @@ -249,16 +265,11 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -ansi-colors@4.1.1: +ansi-colors@4.1.1, ansi-colors@^4.1.1: version "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-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -274,6 +285,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -812,7 +828,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -829,11 +845,6 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - charenc@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" @@ -867,18 +878,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -1036,7 +1035,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -1047,6 +1046,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypt@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" @@ -1096,7 +1104,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4.1.1, debug@^4.0.1: +debug@4.1.1, debug@^4.0.1, 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== @@ -1180,7 +1188,7 @@ decompress@^4.0.0: pify "^2.3.0" strip-dirs "^2.0.0" -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -1340,6 +1348,13 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + es-abstract@^1.17.0-next.1, 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" @@ -1455,76 +1470,77 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +eslint-scope@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.0.0.tgz#9223f19223de73b4ed730e11bff44a376b65844d" - integrity sha512-SrrIfcd4tOgsspOKTSwamuTOAMZOUigHQhVMrzNjz4/B9Za6SHQDIocMIyIDfwDgx6MhS15nS6HC8kumCV2qBQ== +eslint@7.9.0: + version "7.9.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.9.0.tgz#522aeccc5c3a19017cf0cb46ebfd660a79acf337" + integrity sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA== dependencies: "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.1.3" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^6.0.0" - esquery "^1.0.1" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.3.0" + esquery "^1.2.0" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^3.1.0" - globals "^11.7.0" + glob-parent "^5.0.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" + levn "^0.4.1" + lodash "^4.17.19" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" table "^5.2.3" text-table "^0.2.0" + v8-compile-cache "^2.0.3" -espree@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== +espree@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" + integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== dependencies: - acorn "^7.1.1" + acorn "^7.4.0" acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" + eslint-visitor-keys "^1.3.0" esprima@2.7.x, esprima@^2.7.1: version "2.7.3" @@ -1536,14 +1552,14 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: +esquery@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -1801,15 +1817,6 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -1842,7 +1849,7 @@ 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@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -1861,13 +1868,6 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -2099,15 +2099,7 @@ ghost-testrpc@^0.0.2: chalk "^2.4.2" node-emoji "^1.10.0" -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.0, glob-parent@~5.1.0: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== @@ -2161,10 +2153,12 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^11.7.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" globals@^9.18.0: version "9.18.0" @@ -2391,7 +2385,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -2420,7 +2414,7 @@ ignore@^5.1.1: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -import-fresh@^3.0.0: +import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== @@ -2456,25 +2450,6 @@ ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^6.2.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - interpret@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" @@ -2529,7 +2504,7 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -2549,13 +2524,6 @@ is-function@^1.0.1: resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -2833,7 +2801,15 @@ lcov-parse@^0.0.10: resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM= -levn@^0.3.0, levn@~0.3.0: +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= @@ -2861,7 +2837,7 @@ lodash.toarray@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4: +lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -2989,11 +2965,6 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -3123,11 +3094,6 @@ ms@2.1.2, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - nan@^2.0.8, nan@^2.14.0, nan@^2.2.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" @@ -3278,14 +3244,7 @@ once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -optionator@^0.8.1, optionator@^0.8.2: +optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -3297,6 +3256,18 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + original-require@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" @@ -3316,7 +3287,7 @@ os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -3414,11 +3385,6 @@ parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -3439,6 +3405,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -3507,6 +3478,11 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -3705,10 +3681,10 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== repeating@^2.0.0: version "2.0.1" @@ -3777,14 +3753,6 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -3812,17 +3780,12 @@ rlp@^2.0.0, rlp@^2.2.3: dependencies: bn.js "^4.11.1" -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-parallel@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== -rxjs@^6.4.0, rxjs@^6.5.5: +rxjs@^6.5.5: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== @@ -3934,7 +3897,7 @@ semver@6.2.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== -semver@^5.5.0, semver@^5.5.1: +semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -3944,6 +3907,11 @@ semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.2.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -4026,11 +3994,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shelljs@^0.8.3: version "0.8.4" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" @@ -4040,7 +4020,7 @@ shelljs@^0.8.3: interpret "^1.0.0" rechoir "^0.6.2" -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -4164,7 +4144,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.2 || 2", string-width@^2.1.0: +"string-width@^1.0.2 || 2": version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -4240,6 +4220,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-dirs@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" @@ -4264,10 +4251,10 @@ 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@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-json-comments@^3.1.0, 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== supports-color@7.1.0: version "7.1.0" @@ -4361,7 +4348,7 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through@^2.3.6, through@^2.3.8: +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= @@ -4371,13 +4358,6 @@ timed-out@^4.0.0, timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - to-buffer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" @@ -4459,6 +4439,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -4466,6 +4453,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -4597,6 +4589,11 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -5356,7 +5353,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@2.0.2: +which@2.0.2, which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -5377,7 +5374,7 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== From 16782cf8d4968361399bf95a2964f9164ba14b66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Sep 2020 03:06:34 +0100 Subject: [PATCH 35/38] Bump coveralls from 3.0.4 to 3.1.0 (#275) Bumps [coveralls](https://github.com/nickmerwin/node-coveralls) from 3.0.4 to 3.1.0. - [Release notes](https://github.com/nickmerwin/node-coveralls/releases) - [Commits](https://github.com/nickmerwin/node-coveralls/compare/3.0.4...v3.1.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 33 ++++++++++++++++----------------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index cb104d38..6a93f023 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "devDependencies": { "abiniser": "0.5.1", "babel-register": "6.26.0", - "coveralls": "3.0.4", + "coveralls": "3.1.0", "dotenv": "8.2.0", "eslint": "7.9.0", "ganache-cli": "6.10.2", diff --git a/yarn.lock b/yarn.lock index 8aa6e7a6..296cce3e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -992,17 +992,16 @@ cors@^2.8.1: object-assign "^4" vary "^1" -coveralls@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.4.tgz#f50233c9c62fd0973f710fce85fd19dba24cff4b" - integrity sha512-eyqUWA/7RT0JagiL0tThVhjbIjoiEUyWCjtUJoOPcWoeofP5WK/jb2OJYoBFrR6DvplR+AxOyuBqk4JHkk5ykA== +coveralls@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.1.0.tgz#13c754d5e7a2dd8b44fe5269e21ca394fb4d615b" + integrity sha512-sHxOu2ELzW8/NC1UP5XVLbZDzO4S3VxfFye3XYCznopHy02YjNkHcj5bKaVw2O7hVaBdBjEdQGpie4II1mWhuQ== dependencies: - growl "~> 1.10.0" - js-yaml "^3.11.0" - lcov-parse "^0.0.10" + js-yaml "^3.13.1" + lcov-parse "^1.0.0" log-driver "^1.2.7" - minimist "^1.2.0" - request "^2.86.0" + minimist "^1.2.5" + request "^2.88.2" create-ecdh@^4.0.0: version "4.0.4" @@ -2221,7 +2220,7 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -growl@1.10.5, "growl@~> 1.10.0": +growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== @@ -2677,7 +2676,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@3.14.0, js-yaml@3.x, js-yaml@^3.11.0, js-yaml@^3.13.1: +js-yaml@3.14.0, js-yaml@3.x, js-yaml@^3.13.1: 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== @@ -2796,10 +2795,10 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" -lcov-parse@^0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" - integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM= +lcov-parse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" + integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= levn@^0.4.1: version "0.4.1" @@ -2999,7 +2998,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -3693,7 +3692,7 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.79.0, request@^2.86.0: +request@^2.79.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== From a4a815734223ad2d38c18c7902a1222fc3312175 Mon Sep 17 00:00:00 2001 From: Peter Petrovics Date: Sun, 13 Sep 2020 03:42:26 +0100 Subject: [PATCH 36/38] truffle-hdwallet upgrade & dump babel-register (#277) --- package.json | 3 +- truffle-config.js | 4 +- yarn.lock | 1470 +++++++++++++++++++++++++++++++++++---------- 3 files changed, 1145 insertions(+), 332 deletions(-) diff --git a/package.json b/package.json index 6a93f023..bcff58d0 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,6 @@ }, "devDependencies": { "abiniser": "0.5.1", - "babel-register": "6.26.0", "coveralls": "3.1.0", "dotenv": "8.2.0", "eslint": "7.9.0", @@ -63,7 +62,7 @@ "solidity-coverage": "0.7.10", "stringifier": "2.1.0", "truffle": "5.1.44", - "truffle-hdwallet-provider": "1.0.17", + "@truffle/hdwallet-provider": "1.0.44", "wait-on": "5.2.0" }, "files": [ diff --git a/truffle-config.js b/truffle-config.js index f1e7062f..93c8921f 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -1,8 +1,6 @@ -// Allows us to use ES6 in our migrations and tests. -require("babel-register"); require("dotenv").config(); -const HDWalletProvider = require("truffle-hdwallet-provider"); +const HDWalletProvider = require("@truffle/hdwallet-provider"); const MNEMONIC = process.env.DEPLOYER_MNEMONIC; const INFURA_API_KEY = process.env.INFURA_API_KEY; diff --git a/yarn.lock b/yarn.lock index 296cce3e..214cf5b4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,18 @@ dependencies: "@babel/highlight" "^7.10.4" +"@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-plugin-utils@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" @@ -23,6 +35,32 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/plugin-transform-runtime@^7.5.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.5.tgz#f108bc8e0cf33c37da031c097d1df470b3a293fc" + integrity sha512-9aIoee+EhjySZ6vY5hnLjigHzunBlscx9ANKutkeWTJTx6m5Rbq6Ic01tLvO54lSusR+BxV7u4UDdCmXv5aagg== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/runtime@^7.5.5": + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" + integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/types@^7.10.4": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" + integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@eslint/eslintrc@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" @@ -39,6 +77,128 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@ethersproject/abi@5.0.0-beta.153": + version "5.0.0-beta.153" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" + integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== + dependencies: + "@ethersproject/address" ">=5.0.0-beta.128" + "@ethersproject/bignumber" ">=5.0.0-beta.130" + "@ethersproject/bytes" ">=5.0.0-beta.129" + "@ethersproject/constants" ">=5.0.0-beta.128" + "@ethersproject/hash" ">=5.0.0-beta.128" + "@ethersproject/keccak256" ">=5.0.0-beta.127" + "@ethersproject/logger" ">=5.0.0-beta.129" + "@ethersproject/properties" ">=5.0.0-beta.131" + "@ethersproject/strings" ">=5.0.0-beta.130" + +"@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.4.tgz#8669bcbd02f4b64f4cede0a10e84df6d964ec9d3" + integrity sha512-CIjAeG6zNehbpJTi0sgwUvaH2ZICiAV9XkCBaFy5tjuEVFpQNeqd6f+B7RowcNO7Eut+QbhcQ5CVLkmP5zhL9A== + 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/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.7.tgz#720b3e3df3e125a99669ee869478106d0afe7b76" + integrity sha512-wwKgDJ+KA7IpgJwc8Fc0AjKIRuDskKA2cque29/+SgII9/1K/38JpqVNPKIovkLwTC2DDofIyzHcxeaKpMFouQ== + dependencies: + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/logger" "^5.0.5" + bn.js "^4.4.0" + +"@ethersproject/bytes@>=5.0.0-beta.129", "@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== + dependencies: + "@ethersproject/logger" "^5.0.5" + +"@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.4.tgz#9ddaa5f3c738a94e5adc4b3f71b36206fa5cdf88" + integrity sha512-Df32lcXDHPgZRPgp1dgmByNbNe4Ki1QoXR+wU61on5nggQGTqWR1Bb7pp9VtI5Go9kyE/JflFc4Te6o9MvYt8A== + dependencies: + "@ethersproject/bignumber" "^5.0.7" + +"@ethersproject/hash@>=5.0.0-beta.128": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.4.tgz#385642786405d236f3d2f1acdfaf250ab519cdac" + integrity sha512-VCs/bFBU8AQFhHcT1cQH6x7a4zjulR6fJmAOcPxUgrN7bxOQ7QkpBKF+YCDJhFtkLdaljIsr/r831TuWU4Ysfg== + dependencies: + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/strings" "^5.0.4" + +"@ethersproject/keccak256@>=5.0.0-beta.127", "@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== + dependencies: + "@ethersproject/bytes" "^5.0.4" + js-sha3 "0.5.7" + +"@ethersproject/logger@>=5.0.0-beta.129", "@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/properties@>=5.0.0-beta.131", "@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== + dependencies: + "@ethersproject/logger" "^5.0.5" + +"@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== + dependencies: + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/logger" "^5.0.5" + +"@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== + dependencies: + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + elliptic "6.5.3" + +"@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.4.tgz#67cda604eee3ffcc004cb9f3bd03516e1c7b09a0" + integrity sha512-azXFHaNkDXzefhr4LVVzzDMFwj3kH9EOKlATu51HjxabQafuUyVLPFgmxRFmCynnAi0Bmmp7nr+qK1pVDgRDLQ== + dependencies: + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/logger" "^5.0.5" + +"@ethersproject/transactions@^5.0.0-beta.135": + version "5.0.5" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.5.tgz#9a966f9ef4817b1752265d4efee0f1e9fd6aeaad" + integrity sha512-1Ga/QmbcB74DItggP8/DK1tggu4ErEvwTkIwIlUXUcvIAuRNXXE7kgQhlp+w1xA/SAQFhv56SqCoyqPiiLCvVA== + dependencies: + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@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" + "@hapi/address@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-4.1.0.tgz#d60c5c0d930e77456fdcde2598e77302e2955e1d" @@ -111,6 +271,22 @@ resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.7.tgz#e9db39885575647ef08bf624b0c13fe46d41a209" integrity sha512-UIfVKsXSXocKnn5+RNklUXNoGd/JVj7V8KmC48TQzmjU33HQI86PX0JDS7SpHMHasI3w9X//1q7Lu7nZtj3Zzg== +"@truffle/hdwallet-provider@1.0.44": + version "1.0.44" + resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-1.0.44.tgz#4b61c49ae4d48cd438946aff74e92de83f951be4" + integrity sha512-pStsF5me3cxthf6dVjuQV08CzssUneURw9ZZCDknFZIq/kofWuk710VnmSIhDBcT2iSxGzemy0hIuP+3MG3fYQ== + dependencies: + "@trufflesuite/web3-provider-engine" "15.0.13-1" + "@types/web3" "^1.0.20" + any-promise "^1.3.0" + bindings "^1.5.0" + ethereum-cryptography "^0.1.3" + ethereum-protocol "^1.0.1" + ethereumjs-tx "^1.0.0" + ethereumjs-util "^6.1.0" + ethereumjs-wallet "^0.6.3" + source-map-support "^0.5.19" + "@truffle/interface-adapter@^0.3.0": version "0.3.3" resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.3.3.tgz#61305378cf81776769ef36c60d394e568ac4a2ee" @@ -130,7 +306,85 @@ "@truffle/interface-adapter" "^0.3.0" web3 "1.2.1" -"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.4": +"@trufflesuite/eth-json-rpc-filters@^4.1.2-1": + version "4.1.2-1" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-filters/-/eth-json-rpc-filters-4.1.2-1.tgz#61ab78c52e98a883e5cf086925b34a30297b1824" + integrity sha512-/MChvC5dw2ck9NU1cZmdovCz2VKbOeIyR4tcxDvA5sT+NaL0rA2/R5U0yI7zsbo1zD+pgqav77rQHTzpUdDNJQ== + dependencies: + "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-0" + await-semaphore "^0.1.3" + eth-query "^2.1.2" + json-rpc-engine "^5.1.3" + lodash.flatmap "^4.5.0" + safe-event-emitter "^1.0.1" + +"@trufflesuite/eth-json-rpc-infura@^4.0.3-0": + version "4.0.3-0" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-infura/-/eth-json-rpc-infura-4.0.3-0.tgz#6d22122937cf60ec9d21a02351c101fdc608c4fe" + integrity sha512-xaUanOmo0YLqRsL0SfXpFienhdw5bpQ1WEXxMTRi57az4lwpZBv4tFUDvcerdwJrxX9wQqNmgUgd1BrR01dumw== + dependencies: + "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-1" + cross-fetch "^2.1.1" + eth-json-rpc-errors "^1.0.1" + json-rpc-engine "^5.1.3" + +"@trufflesuite/eth-json-rpc-middleware@^4.4.2-0", "@trufflesuite/eth-json-rpc-middleware@^4.4.2-1": + version "4.4.2-1" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.2-1.tgz#8c3638ed8a7ed89a1e5e71407de068a65bef0df2" + integrity sha512-iEy9H8ja7/8aYES5HfrepGBKU9n/Y4OabBJEklVd/zIBlhCCBAWBqkIZgXt11nBXO/rYAeKwYuE3puH3ByYnLA== + dependencies: + "@trufflesuite/eth-sig-util" "^1.4.2" + btoa "^1.2.1" + clone "^2.1.1" + eth-json-rpc-errors "^1.0.1" + eth-query "^2.1.2" + ethereumjs-block "^1.6.0" + ethereumjs-tx "^1.3.7" + ethereumjs-util "^5.1.2" + ethereumjs-vm "^2.6.0" + fetch-ponyfill "^4.0.0" + json-rpc-engine "^5.1.3" + json-stable-stringify "^1.0.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + +"@trufflesuite/eth-sig-util@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-sig-util/-/eth-sig-util-1.4.2.tgz#b529e2f38ac08e652116f48981132a26242a4f08" + integrity sha512-+GyfN6b0LNW77hbQlH3ufZ/1eCON7mMrGym6tdYf7xiNw9Vv3jBO72bmmos1EId2NgBvPMhmYYm6DSLQFTmzrA== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^5.1.1" + +"@trufflesuite/web3-provider-engine@15.0.13-1": + version "15.0.13-1" + resolved "https://registry.yarnpkg.com/@trufflesuite/web3-provider-engine/-/web3-provider-engine-15.0.13-1.tgz#f6a7f7131a2fdc4ab53976318ed13ce83e8e4bcb" + integrity sha512-6u3x/iIN5fyj8pib5QTUDmIOUiwAGhaqdSTXdqCu6v9zo2BEwdCqgEJd1uXDh3DBmPRDfiZ/ge8oUPy7LerpHg== + dependencies: + "@trufflesuite/eth-json-rpc-filters" "^4.1.2-1" + "@trufflesuite/eth-json-rpc-infura" "^4.0.3-0" + "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-1" + "@trufflesuite/eth-sig-util" "^1.4.2" + async "^2.5.0" + backoff "^2.5.0" + clone "^2.0.0" + cross-fetch "^2.1.0" + eth-block-tracker "^4.4.2" + eth-json-rpc-errors "^2.0.2" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.5" + ethereumjs-vm "^2.3.4" + 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" + +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.4", "@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== @@ -165,7 +419,7 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.32.tgz#4ef6ff8b842ea0eb3fcbc4331489f4ae64036fa8" integrity sha512-EUq+cjH/3KCzQHikGnNbWAGe548IFLSm93Vl8xA7EuYEEATiyOVDyEVuGkowL7c9V69FF/RiZSAOCFPApMs/ig== -"@types/node@^12.6.1": +"@types/node@^12.12.6", "@types/node@^12.6.1": version "12.12.58" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.58.tgz#46dae9b2b9ee5992818c8f7cee01ff4ce03ab44c" integrity sha512-Be46CNIHWAagEfINOjmriSxuv7IVcqbGe+sDSg2SYCEz/0CRBy7LRASGfRbD8KZkqoePU73Wsx3UvOSFcq/9hA== @@ -184,6 +438,13 @@ dependencies: "@types/node" "*" +"@types/web3@^1.0.20": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.2.2.tgz#d95a101547ce625c5ebd0470baa5dbd4b9f3c015" + integrity sha512-eFiYJKggNrOl0nsD+9cMh2MLk4zVBfXfGnVeRFbpiZzBE20eet4KLA3fXcjSuHaBn0RnQzwLAGdgzgzdet4C0A== + dependencies: + web3 "*" + "@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" @@ -222,6 +483,20 @@ abiniser@0.5.1: json-stable-stringify "1.0.1" md5 "2.2.1" +abstract-leveldown@~2.6.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" + integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@~2.7.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" + integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== + dependencies: + xtend "~4.0.0" + accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -250,6 +525,11 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= +aes-js@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: version "6.12.4" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" @@ -270,11 +550,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-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" @@ -290,11 +565,6 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -382,21 +652,40 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +async-eventemitter@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" + async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@1.x: +async@1.x, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= +async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +await-semaphore@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/await-semaphore/-/await-semaphore-0.1.3.tgz#2b88018cc8c28e06167ae1cdff02504f1f9688d3" + integrity sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q== + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -414,137 +703,19 @@ axios@^0.19.2: dependencies: follow-redirects "1.5.10" -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= +backoff@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" + integrity sha1-9hbtqdPktmuMp/ynn2lXIsX44m8= dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-register@6.26.0, babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + precond "0.2" balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base-x@^3.0.2: +base-x@^3.0.2, base-x@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== @@ -563,12 +734,17 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +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@^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.3.1, bindings@^1.5.0: +bindings@^1.2.1, 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== @@ -610,7 +786,7 @@ bn.js@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.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0: +bn.js@^4.0.0, bn.js@^4.1.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: version "4.11.9" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== @@ -731,6 +907,11 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" @@ -769,7 +950,7 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -buffer@^5.0.5, buffer@^5.2.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== @@ -817,17 +998,6 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -850,6 +1020,13 @@ charenc@~0.0.1: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= +checkpoint-store@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" + integrity sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY= + dependencies: + functional-red-black-tree "^1.0.1" + chokidar@3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" @@ -870,6 +1047,17 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -878,6 +1066,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -894,6 +1087,11 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +clone@^2.0.0, clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -947,18 +1145,20 @@ content-disposition@0.5.3: dependencies: safe-buffer "5.1.2" +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -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== - dependencies: - safe-buffer "~5.1.1" - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -974,11 +1174,6 @@ cookiejar@^2.1.1: resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== -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== - core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1034,6 +1229,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-fetch@^2.1.0, cross-fetch@^2.1.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.3.tgz#e8a0b3c54598136e037f8650f8e823ccdfac198e" + integrity sha512-PrWWNH3yL2NYIb/7WF/5vFG3DCQiXDOVf8k3ijatbrtnwNuhMWLC7YF7uqf53tbTFDzHIUD8oITw4Bxt8ST3Nw== + dependencies: + node-fetch "2.1.2" + whatwg-fetch "2.0.4" + cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -1096,7 +1299,7 @@ death@^1.1.0: resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" integrity sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg= -debug@2.6.9, debug@^2.2.0, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.6.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1197,6 +1400,13 @@ defer-to-connect@^1.0.1: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== +deferred-leveldown@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" + integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== + dependencies: + abstract-leveldown "~2.6.0" + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -1227,13 +1437,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" - detect-port@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" @@ -1340,6 +1543,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -1354,6 +1564,13 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" +errno@~0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + es-abstract@^1.17.0-next.1, 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" @@ -1452,7 +1669,7 @@ escape-string-regexp@4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -1590,6 +1807,18 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +eth-block-tracker@^4.4.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" + integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== + dependencies: + "@babel/plugin-transform-runtime" "^7.5.5" + "@babel/runtime" "^7.5.5" + eth-query "^2.1.0" + json-rpc-random-id "^1.0.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + eth-ens-namehash@2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" @@ -1598,6 +1827,20 @@ eth-ens-namehash@2.0.8: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" +eth-json-rpc-errors@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz#148377ef55155585981c21ff574a8937f9d6991f" + integrity sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-json-rpc-errors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz#c1965de0301fe941c058e928bebaba2e1285e3c4" + integrity sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA== + dependencies: + fast-safe-stringify "^2.0.6" + eth-lib@0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.7.tgz#2f93f17b1e23aec3759cd4a3fe20c1286a3fc1ca" @@ -1607,6 +1850,15 @@ eth-lib@0.2.7: elliptic "^6.4.0" xhr-request-promise "^0.1.2" +eth-lib@0.2.8, eth-lib@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + eth-lib@^0.1.26: version "0.1.29" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" @@ -1619,14 +1871,20 @@ eth-lib@^0.1.26: ws "^3.0.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" - integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== +eth-query@^2.1.0, eth-query@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" + integrity sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" + +eth-rpc-errors@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" + integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== + dependencies: + fast-safe-stringify "^2.0.6" ethereum-bloom-filters@^1.0.6: version "1.0.7" @@ -1635,6 +1893,16 @@ ethereum-bloom-filters@^1.0.6: dependencies: js-sha3 "^0.8.0" +ethereum-common@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" + integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== + +ethereum-common@^0.0.18: + version "0.0.18" + resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" + integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= + ethereum-cryptography@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" @@ -1656,11 +1924,63 @@ ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" -ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: +ethereum-protocol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz#b7d68142f4105e0ae7b5e178cf42f8d4dc4b93cf" + integrity sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg== + +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== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-account@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" + integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== + dependencies: + ethereumjs-util "^5.0.0" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-block@^1.2.2, ethereumjs-block@^1.6.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" + integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== + dependencies: + async "^2.0.1" + ethereum-common "0.2.0" + ethereumjs-tx "^1.2.2" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-block@~2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" + integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== + dependencies: + async "^2.0.1" + ethereumjs-common "^1.5.0" + ethereumjs-tx "^2.1.1" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== +ethereumjs-tx@^1.0.0, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.7: + 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.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" @@ -1682,7 +2002,20 @@ ethereumjs-util@6.1.0: safe-buffer "^5.1.1" secp256k1 "^3.0.1" -ethereumjs-util@^6.0.0: +ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.5: + version "5.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" + integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "^0.1.3" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0: version "6.2.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== @@ -1695,6 +2028,38 @@ ethereumjs-util@^6.0.0: ethjs-util "0.1.6" rlp "^2.2.3" +ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" + integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereumjs-account "^2.0.3" + ethereumjs-block "~2.2.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-wallet@^0.6.3: + 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@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" @@ -1734,7 +2099,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.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== @@ -1747,6 +2112,16 @@ eventemitter3@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== + +events@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -1826,6 +2201,13 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= +fake-merkle-patricia-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" + integrity sha1-S4w6z7Ugr635hgsfFM2M40As3dM= + dependencies: + checkpoint-store "^1.1.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" @@ -1853,6 +2235,11 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-safe-stringify@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" + integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== + fastq@^1.6.0: version "1.8.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" @@ -1867,6 +2254,13 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +fetch-ponyfill@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" + integrity sha1-rjzl9zLGReq4fkroeTQUcJsjmJM= + dependencies: + node-fetch "~1.7.1" + file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -2159,11 +2553,6 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - globby@^10.0.1: version "10.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" @@ -2250,13 +2639,6 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -2335,14 +2717,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -2391,6 +2765,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" + integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + idna-uts46-hx@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" @@ -2413,6 +2794,11 @@ ignore@^5.1.1: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== + import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" @@ -2434,7 +2820,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.3: +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: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2454,13 +2840,6 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -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== - dependencies: - loose-envify "^1.0.0" - invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" @@ -2508,10 +2887,10 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== +is-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" + integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= is-fullwidth-code-point@^2.0.0: version "2.0.0" @@ -2582,7 +2961,7 @@ is-set@^2.0.1: resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== -is-stream@^1.0.0, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -2604,6 +2983,11 @@ 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= +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -2666,16 +3050,11 @@ 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-tokens@^3.0.0 || ^4.0.0", js-tokens@^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" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-yaml@3.14.0, js-yaml@3.x, js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" @@ -2689,16 +3068,24 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= +json-rpc-engine@^5.1.3: + version "5.3.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.3.0.tgz#7dc7291766b28766ebda33eb6d3f4c6301c44ff4" + integrity sha512-+diJ9s8rxB+fbJhT7ZEf8r8spaLRignLd8jTgQ/h5JSGppAHGtNMZtCoabipCaleR1B3GTGxbXBOqhaJSGmPGQ== + dependencies: + eth-rpc-errors "^3.0.0" + safe-event-emitter "^1.0.1" + +json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" + integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -2714,7 +3101,7 @@ json-stable-stringify-without-jsonify@^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: +json-stable-stringify@1.0.1, 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" integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= @@ -2726,11 +3113,6 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -2800,6 +3182,56 @@ lcov-parse@^1.0.0: resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= +level-codec@~7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" + integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== + +level-errors@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" + integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== + dependencies: + errno "~0.1.1" + +level-errors@~1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" + integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== + dependencies: + errno "~0.1.1" + +level-iterator-stream@~1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" + integrity sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0= + dependencies: + inherits "^2.0.1" + level-errors "^1.0.3" + readable-stream "^1.0.33" + xtend "^4.0.0" + +level-ws@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" + integrity sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos= + dependencies: + readable-stream "~1.0.15" + xtend "~2.1.1" + +levelup@^1.2.1: + version "1.3.9" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" + integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== + dependencies: + deferred-leveldown "~1.2.1" + level-codec "~7.0.0" + level-errors "~1.0.3" + level-iterator-stream "~1.3.0" + prr "~1.0.1" + semver "~5.4.1" + xtend "~4.0.0" + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -2831,12 +3263,17 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.flatmap@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" + integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4= + lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= -lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4: +lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -2853,13 +3290,6 @@ log-symbols@4.0.0: dependencies: chalk "^4.0.0" -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" @@ -2870,6 +3300,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +ltgt@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -2916,6 +3351,18 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" +memdown@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" + integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= + dependencies: + abstract-leveldown "~2.7.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" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -2926,6 +3373,20 @@ merge2@^1.2.3, merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +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== + dependencies: + async "^1.4.2" + ethereumjs-util "^5.0.0" + level-ws "0.0.0" + levelup "^1.2.1" + memdown "^1.0.0" + readable-stream "^2.0.0" + rlp "^2.0.0" + semaphore ">=1.0.1" + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -3093,6 +3554,46 @@ ms@2.1.2, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + nan@^2.0.8, nan@^2.14.0, nan@^2.2.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" @@ -3140,6 +3641,19 @@ node-emoji@^1.10.0: dependencies: lodash.toarray "^4.4.0" +node-fetch@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" + integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= + +node-fetch@~1.7.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-gyp-build@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" @@ -3202,6 +3716,11 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= + object.assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" @@ -3272,11 +3791,6 @@ original-require@1.0.1: resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" integrity sha1-DxMEcVhM0zURxew4yNWSE/msXiA= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -3286,11 +3800,6 @@ os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - p-cancelable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" @@ -3394,7 +3903,7 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= @@ -3477,6 +3986,11 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +precond@0.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" + integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -3497,11 +4011,6 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -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: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -3517,6 +4026,14 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-to-callback@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" + integrity sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= + dependencies: + is-fn "^1.0.0" + set-immediate-shim "^1.0.1" + promise.allsettled@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" @@ -3536,6 +4053,11 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.1" +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -3597,7 +4119,7 @@ random-seed@0.3.0: dependencies: json-stringify-safe "^5.0.1" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +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" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -3632,7 +4154,17 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -readable-stream@^2.3.0, readable-stream@^2.3.5: +readable-stream@^1.0.33: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.5: 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== @@ -3654,6 +4186,16 @@ readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~1.0.15: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@~3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" @@ -3675,24 +4217,17 @@ recursive-readdir@^2.2.2: dependencies: minimatch "3.0.4" -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -request@^2.79.0, request@^2.88.2: +request@^2.79.0, request@^2.85.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -3738,7 +4273,7 @@ resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6: +resolve@^1.1.6, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -3784,6 +4319,11 @@ run-parallel@^1.1.9: resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + rxjs@^6.5.5: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" @@ -3801,7 +4341,14 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +safe-event-emitter@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" + integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== + dependencies: + events "^3.0.0" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -3836,14 +4383,13 @@ scrypt-js@2.0.4: resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== -scrypt-js@^3.0.0: +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-shim@github:web3-js/scrypt-shim": version "0.1.0" - uid aafdadda13e660e25e1c525d1f5b2443f5eb1ebb resolved "https://codeload.github.com/web3-js/scrypt-shim/tar.gz/aafdadda13e660e25e1c525d1f5b2443f5eb1ebb" dependencies: scryptsy "^2.1.0" @@ -3861,6 +4407,13 @@ scryptsy@2.1.0, scryptsy@^2.1.0: resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== +scryptsy@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" + integrity sha1-oyJfpLJST4AnAHYeKFW987LZIWM= + dependencies: + pbkdf2 "^3.0.3" + secp256k1@^3.0.1: version "3.8.0" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" @@ -3891,12 +4444,17 @@ seek-bzip@^1.0.5: dependencies: commander "^2.8.1" +semaphore@>=1.0.1, semaphore@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" + integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== + semver@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== -semver@^5.5.0: +semver@^5.5.0, semver@^5.5.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -3911,6 +4469,11 @@ semver@^7.2.1: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +semver@~5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -3963,6 +4526,11 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + setimmediate@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" @@ -4038,11 +4606,6 @@ simple-get@^2.7.0: once "^1.3.1" simple-concat "^1.0.0" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -4089,17 +4652,13 @@ source-map-support@0.5.12: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== +source-map-support@^0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: - source-map "^0.5.6" - -source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + buffer-from "^1.0.0" + source-map "^0.6.0" source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" @@ -4183,6 +4742,11 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -4198,13 +4762,6 @@ stringifier@2.1.0: traverse "^0.6.6" type-name "^2.0.1" -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" @@ -4262,11 +4819,6 @@ 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@^3.1.0: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" @@ -4306,6 +4858,23 @@ swarm-js@0.1.39: tar "^4.0.2" xhr-request-promise "^0.1.2" +swarm-js@^0.1.40: + version "0.1.40" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" + integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + 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 "^1.0.1" + table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -4362,10 +4931,10 @@ to-buffer@^1.1.1: resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-readable-stream@^1.0.0: version "1.0.0" @@ -4397,21 +4966,6 @@ traverse@^0.6.6: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - -truffle-hdwallet-provider@1.0.17: - version "1.0.17" - resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.17.tgz#fe8edd0d6974eeb31af9959e41525fb19abd74ca" - integrity sha512-s6DvSP83jiIAc6TUcpr7Uqnja1+sLGJ8og3X7n41vfyC4OCaKmBtXL5HOHf+SsU3iblOvnbFDgmN6Y1VBL/fsg== - dependencies: - any-promise "^1.3.0" - bindings "^1.3.1" - web3 "1.2.1" - websocket "^1.0.28" - truffle@5.1.44: version "5.1.44" resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.44.tgz#11a91b1befc68b85d38baf2cb301d566d18a3780" @@ -4558,7 +5112,7 @@ utf-8-validate@^5.0.2: dependencies: node-gyp-build "~3.7.0" -utf8@3.0.0: +utf8@3.0.0, utf8@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== @@ -4593,6 +5147,11 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== +varint@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.0.tgz#d826b89f7490732fabc0c0ed693ed475dcb29ebf" + integrity sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8= + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -4627,6 +5186,16 @@ web3-bzz@1.2.1: swarm-js "0.1.39" underscore "1.9.1" +web3-bzz@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" + integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.9.1" + web3-bzz@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.2.tgz#a3b9f613c49fd3e120e0997088a73557d5adb724" @@ -4656,6 +5225,15 @@ web3-core-helpers@1.2.1: web3-eth-iban "1.2.1" web3-utils "1.2.1" +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" + integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.11" + web3-utils "1.2.11" + web3-core-helpers@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz#484974f4bd4a487217b85b0d7cfe841af0907619" @@ -4685,6 +5263,18 @@ web3-core-method@1.2.1: web3-core-subscriptions "1.2.1" web3-utils "1.2.1" +web3-core-method@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" + integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-utils "1.2.11" + web3-core-method@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.2.tgz#d4fe2bb1945b7152e5f08e4ea568b171132a1e56" @@ -4715,6 +5305,13 @@ web3-core-promievent@1.2.1: any-promise "1.3.0" eventemitter3 "3.1.2" +web3-core-promievent@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" + integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== + dependencies: + eventemitter3 "4.0.4" + web3-core-promievent@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz#3b60e3f2a0c96db8a891c927899d29d39e66ab1c" @@ -4742,6 +5339,17 @@ web3-core-requestmanager@1.2.1: web3-providers-ipc "1.2.1" web3-providers-ws "1.2.1" +web3-core-requestmanager@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" + integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-providers-http "1.2.11" + web3-providers-ipc "1.2.11" + web3-providers-ws "1.2.11" + web3-core-requestmanager@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz#667ba9ac724c9c76fa8965ae8a3c61f66e68d8d6" @@ -4773,6 +5381,15 @@ web3-core-subscriptions@1.2.1: underscore "1.9.1" web3-core-helpers "1.2.1" +web3-core-subscriptions@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" + integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-core-subscriptions@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz#bf4ba23a653a003bdc3551649958cc0b080b068e" @@ -4801,6 +5418,19 @@ web3-core@1.2.1: web3-core-requestmanager "1.2.1" web3-utils "1.2.1" +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== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-requestmanager "1.2.11" + web3-utils "1.2.11" + web3-core@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.2.tgz#334b99c8222ef9cfd0339e27352f0b58ea789a2f" @@ -4834,6 +5464,15 @@ web3-eth-abi@1.2.1: underscore "1.9.1" web3-utils "1.2.1" +web3-eth-abi@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" + integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== + dependencies: + "@ethersproject/abi" "5.0.0-beta.153" + underscore "1.9.1" + web3-utils "1.2.11" + web3-eth-abi@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz#d5616d88a90020f894763423a9769f2da11fe37a" @@ -4869,6 +5508,23 @@ web3-eth-accounts@1.2.1: web3-core-method "1.2.1" web3-utils "1.2.1" +web3-eth-accounts@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" + integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== + dependencies: + crypto-browserify "3.12.0" + 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.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" + web3-eth-accounts@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz#c187e14bff6baa698ac352220290222dbfd332e5" @@ -4919,6 +5575,21 @@ web3-eth-contract@1.2.1: web3-eth-abi "1.2.1" web3-utils "1.2.1" +web3-eth-contract@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" + integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== + dependencies: + "@types/bn.js" "^4.11.5" + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-utils "1.2.11" + web3-eth-contract@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz#84e92714918a29e1028ee7718f0712536e14e9a1" @@ -4963,6 +5634,21 @@ web3-eth-ens@1.2.1: web3-eth-contract "1.2.1" web3-utils "1.2.1" +web3-eth-ens@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" + integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-contract "1.2.11" + web3-utils "1.2.11" + web3-eth-ens@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz#0a4abed1d4cbdacbf5e1ab06e502d806d1192bc6" @@ -4999,6 +5685,14 @@ web3-eth-iban@1.2.1: bn.js "4.11.8" web3-utils "1.2.1" +web3-eth-iban@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" + integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== + dependencies: + bn.js "^4.11.9" + web3-utils "1.2.11" + web3-eth-iban@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz#76bec73bad214df7c4192388979a59fc98b96c5a" @@ -5026,6 +5720,18 @@ web3-eth-personal@1.2.1: web3-net "1.2.1" web3-utils "1.2.1" +web3-eth-personal@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" + integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" + web3-eth-personal@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz#eee1c86a8132fa16b5e34c6d421ca92e684f0be6" @@ -5069,6 +5775,25 @@ web3-eth@1.2.1: web3-net "1.2.1" web3-utils "1.2.1" +web3-eth@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" + integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== + dependencies: + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-accounts "1.2.11" + web3-eth-contract "1.2.11" + web3-eth-ens "1.2.11" + web3-eth-iban "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" + web3-eth@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.2.tgz#65a1564634a23b990efd1655bf94ad513904286c" @@ -5116,6 +5841,15 @@ web3-net@1.2.1: web3-core-method "1.2.1" web3-utils "1.2.1" +web3-net@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" + integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== + dependencies: + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" + web3-net@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.2.tgz#5c3226ca72df7c591422440ce6f1203fd42ddad9" @@ -5142,6 +5876,14 @@ web3-providers-http@1.2.1: web3-core-helpers "1.2.1" 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" + integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== + dependencies: + web3-core-helpers "1.2.11" + xhr2-cookies "1.1.0" + web3-providers-http@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.2.tgz#155e55c1d69f4c5cc0b411ede40dea3d06720956" @@ -5167,6 +5909,15 @@ web3-providers-ipc@1.2.1: underscore "1.9.1" web3-core-helpers "1.2.1" +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" + integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-providers-ipc@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz#c6d165a12bc68674b4cdd543ea18aec79cafc2e8" @@ -5194,6 +5945,16 @@ web3-providers-ws@1.2.1: web3-core-helpers "1.2.1" websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" +web3-providers-ws@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" + integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + websocket "^1.0.31" + web3-providers-ws@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz#d2c05c68598cea5ad3fa6ef076c3bcb3ca300d29" @@ -5222,6 +5983,16 @@ web3-shh@1.2.1: web3-core-subscriptions "1.2.1" web3-net "1.2.1" +web3-shh@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" + integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== + dependencies: + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-net "1.2.11" + web3-shh@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.2.tgz#44ed998f2a6ba0ec5cb9d455184a0f647826a49c" @@ -5255,6 +6026,20 @@ web3-utils@1.2.1: underscore "1.9.1" utf8 "3.0.0" +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== + dependencies: + 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" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + web3-utils@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.2.tgz#b53a08c40d2c3f31d3c4a28e7d749405df99c8c0" @@ -5283,6 +6068,19 @@ web3-utils@1.2.6: underscore "1.9.1" utf8 "3.0.0" +web3@*: + 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.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" @@ -5324,7 +6122,7 @@ web3@1.2.6: web3-shh "1.2.6" web3-utils "1.2.6" -websocket@^1.0.28: +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== @@ -5338,7 +6136,6 @@ websocket@^1.0.28: "websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": version "1.0.29" - uid ef5ea2f41daf4a2113b80c9223df884b4d56c400 resolved "https://codeload.github.com/web3-js/WebSocket-Node/tar.gz/ef5ea2f41daf4a2113b80c9223df884b4d56c400" dependencies: debug "^2.2.0" @@ -5347,6 +6144,11 @@ websocket@^1.0.28: typedarray-to-buffer "^3.1.5" yaeti "^0.0.6" +whatwg-fetch@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -5418,6 +6220,13 @@ ws@^3.0.0: safe-buffer "~5.1.0" ultron "~1.1.0" +ws@^5.1.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + xhr-request-promise@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" @@ -5425,7 +6234,7 @@ xhr-request-promise@^0.1.2: dependencies: xhr-request "^1.1.0" -xhr-request@^1.1.0: +xhr-request@^1.0.1, xhr-request@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== @@ -5445,7 +6254,7 @@ xhr2-cookies@1.1.0: dependencies: cookiejar "^2.1.1" -xhr@^2.0.4, xhr@^2.3.3: +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== @@ -5460,11 +6269,18 @@ xmlhttprequest@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.0, xtend@^4.0.1, xtend@~4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +xtend@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= + dependencies: + object-keys "~0.4.0" + y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" From 4cd553c4d825dba255733f49dc396ede7fb12fc6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2020 10:05:57 +0100 Subject: [PATCH 37/38] Bump moment from 2.27.0 to 2.28.0 (#278) Bumps [moment](https://github.com/moment/moment) from 2.27.0 to 2.28.0. - [Release notes](https://github.com/moment/moment/releases) - [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) - [Commits](https://github.com/moment/moment/compare/2.27.0...2.28.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index bcff58d0..5a49b994 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "dotenv": "8.2.0", "eslint": "7.9.0", "ganache-cli": "6.10.2", - "moment": "2.27.0", + "moment": "2.28.0", "random-seed": "0.3.0", "solidity-coverage": "0.7.10", "stringifier": "2.1.0", diff --git a/yarn.lock b/yarn.lock index 214cf5b4..b18a5496 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3534,10 +3534,10 @@ mock-fs@^4.1.0: resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.13.0.tgz#31c02263673ec3789f90eb7b6963676aa407a598" integrity sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA== -moment@2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== +moment@2.28.0: + version "2.28.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.28.0.tgz#cdfe73ce01327cee6537b0fafac2e0f21a237d75" + integrity sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw== ms@2.0.0: version "2.0.0" From 8bec0ebf5e1b4453615efc46d43038daf5e108a1 Mon Sep 17 00:00:00 2001 From: Peter Petrovics Date: Mon, 14 Sep 2020 10:16:59 +0100 Subject: [PATCH 38/38] bump package version to 1.1.2 (#279) --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5a49b994..231e70ff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@augmint/contracts", - "version": "1.1.1", + "version": "1.1.2", "description": "Augmint Stable Tokens - Solidity contract's abi and deployment descriptors", "author": "“Augmint”", "homepage": "https://github.com/Augmint/augmint-contracts#readme", @@ -68,4 +68,4 @@ "files": [ "abiniser" ] -} \ No newline at end of file +}