fix contract export issue & make tests use exported contracts
This commit is contained in:
parent
ca261d48e2
commit
685750d1b2
|
@ -18,8 +18,6 @@ pragma solidity ^0.4.11;
|
|||
*/
|
||||
|
||||
import "./LiquidPledging.sol";
|
||||
// hack so that solcpiler will generate a contracts.Kernel object
|
||||
import "@aragon/os/contracts/kernel/Kernel.sol";
|
||||
|
||||
/// @dev `LiquidPledgingMock` allows for mocking up
|
||||
/// a `LiquidPledging` contract with the added ability
|
||||
|
|
36
index.js
36
index.js
|
@ -1,10 +1,30 @@
|
|||
const contracts = require('./build/contracts');
|
||||
exports.LiquidPledging = contracts.LiquidPledging;
|
||||
exports.LiquidPledgingState = require('./lib/liquidPledgingState.js');
|
||||
exports.LPVault = contracts.LPVault;
|
||||
exports.LPFactory = contracts.LPFactory;
|
||||
exports.test = {
|
||||
StandardTokenTest: contracts.StandardToken,
|
||||
const contractInfo = require('./build/LPFactory.sol');
|
||||
const LiquidPledgingMockInfo = require('./build/LiquidPledgingMock.sol');
|
||||
const LPVaultInfo = require('./build/LPVault.sol');
|
||||
const StandardTokenInfo = require('./build/StandardToken.sol');
|
||||
const KernelInfo = require('./build/Kernel.sol');
|
||||
const ACLInfo = require('./build/ACL.sol');
|
||||
const generateClass = require('eth-contract-class').default;
|
||||
|
||||
module.exports = {
|
||||
LiquidPledging: generateClass(
|
||||
contractInfo.LiquidPledgingAbi,
|
||||
contractInfo.LiquidPledgingByteCode,
|
||||
),
|
||||
LPFactory: generateClass(contractInfo.LPFactoryAbi, contractInfo.LPFactoryByteCode),
|
||||
LiquidPledgingState: require('./lib/liquidPledgingState.js'),
|
||||
LPVault: generateClass(contractInfo.LPVaultAbi, contractInfo.LPVaultByteCode),
|
||||
Kernel: generateClass(KernelInfo.KernelAbi, KernelInfo.KernelByteCode),
|
||||
ACL: generateClass(ACLInfo.ACLAbi, ACLInfo.ACLByteCode),
|
||||
test: {
|
||||
StandardTokenTest: generateClass(
|
||||
StandardTokenInfo.StandardTokenAbi,
|
||||
StandardTokenInfo.StandardTokenByteCode,
|
||||
),
|
||||
assertFail: require('./test/helpers/assertFail'),
|
||||
LiquidPledgingMock: contracts.LiquidPledgingMock,
|
||||
LiquidPledgingMock: generateClass(
|
||||
LiquidPledgingMockInfo.LiquidPledgingMockAbi,
|
||||
LiquidPledgingMockInfo.LiquidPledgingMockByteCode,
|
||||
),
|
||||
},
|
||||
};
|
||||
|
|
19
package.json
19
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "giveth-liquidpledging",
|
||||
"version": "0.1.0",
|
||||
"version": "0.1.1",
|
||||
"description": "Liquid Pledging Smart Contract",
|
||||
"main": "index.js",
|
||||
"directories": {
|
||||
|
@ -9,7 +9,8 @@
|
|||
},
|
||||
"scripts": {
|
||||
"test": "npm run build; mocha --harmony",
|
||||
"sol-compile": "solcpiler --solc-version v0.4.18+commit.9cf6e910",
|
||||
"sol-compile":
|
||||
"solcpiler --solc-version v0.4.18+commit.9cf6e910 -i './contracts/**/*.sol' ./node_modules/@aragon/os/contracts/{kernel/Kernel.sol,acl/ACL.sol}",
|
||||
"js-compile": "babel -d lib/ js/",
|
||||
"build": "npm run sol-compile; npm run js-compile",
|
||||
"prepublish": "npm run build"
|
||||
|
@ -18,15 +19,7 @@
|
|||
"type": "git",
|
||||
"url": "git+https://github.com/Giveth/liquidpledging.git"
|
||||
},
|
||||
"keywords": [
|
||||
"liquid",
|
||||
"pledging",
|
||||
"tracking",
|
||||
"smart",
|
||||
"contract",
|
||||
"solidity",
|
||||
"donation"
|
||||
],
|
||||
"keywords": ["liquid", "pledging", "tracking", "smart", "contract", "solidity", "donation"],
|
||||
"author": "Jordi Baylina",
|
||||
"license": "GPL-3.0",
|
||||
"bugs": {
|
||||
|
@ -44,7 +37,7 @@
|
|||
"lerna": "^2.2.0",
|
||||
"mocha": "^3.5.0",
|
||||
"random-bytes": "^1.0.0",
|
||||
"solcpiler": "https://github.com/perissology/solcpiler.git#9862d1f",
|
||||
"solcpiler": "https://github.com/perissology/solcpiler.git#6393e66",
|
||||
"web3": "1.0.0-beta.31"
|
||||
},
|
||||
"homepage": "https://github.com/Giveth/liquidpledging#readme",
|
||||
|
@ -52,7 +45,7 @@
|
|||
"@aragon/os": "3.0.1",
|
||||
"async": "^2.4.0",
|
||||
"chai": "^4.1.0",
|
||||
"eth-contract-class": "0.0.6",
|
||||
"eth-contract-class": "0.0.8",
|
||||
"giveth-common-contracts": "^0.4.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,23 +1,31 @@
|
|||
/* eslint-env mocha */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require("ganache-cli");
|
||||
const TestRPC = require('ganache-cli');
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const assertFail = require('./helpers/assertFail');
|
||||
const contracts = require("../build/contracts.js");
|
||||
const LiquidPledgingState = require('../index').LiquidPledgingState;
|
||||
const {
|
||||
LPVault,
|
||||
LPFactory,
|
||||
LiquidPledgingState,
|
||||
test,
|
||||
} = require('../index');
|
||||
|
||||
const simpleProjectPluginFactoryAbi = require('../build/TestSimpleProjectPluginFactory.sol').TestSimpleProjectPluginFactoryAbi;
|
||||
const simpleProjectPluginFactoryByteCode = require('../build/TestSimpleProjectPluginFactory.sol').TestSimpleProjectPluginFactoryByteCode;
|
||||
const simpleProjectPluginRuntimeByteCode = require('../build/TestSimpleProjectPluginFactory.sol').TestSimpleProjectPluginRuntimeByteCode;
|
||||
const simpleProjectPluginFactoryAbi = require('../build/TestSimpleProjectPluginFactory.sol')
|
||||
.TestSimpleProjectPluginFactoryAbi;
|
||||
const simpleProjectPluginFactoryByteCode = require('../build/TestSimpleProjectPluginFactory.sol')
|
||||
.TestSimpleProjectPluginFactoryByteCode;
|
||||
const simpleProjectPluginRuntimeByteCode = require('../build/TestSimpleProjectPluginFactory.sol')
|
||||
.TestSimpleProjectPluginRuntimeByteCode;
|
||||
const assert = chai.assert;
|
||||
|
||||
const printState = async (liquidPledgingState) => {
|
||||
const { StandardTokenTest, assertFail, LiquidPledgingMock } = test;
|
||||
|
||||
const printState = async liquidPledgingState => {
|
||||
const st = await liquidPledgingState.getState();
|
||||
console.log(JSON.stringify(st, null, 2));
|
||||
};
|
||||
|
||||
describe('LiquidPledging plugins test', function () {
|
||||
describe('LiquidPledging plugins test', function() {
|
||||
this.timeout(0);
|
||||
|
||||
let testrpc;
|
||||
|
@ -46,57 +54,63 @@ describe('LiquidPledging plugins test', function () {
|
|||
adminDelegate1 = accounts[3];
|
||||
});
|
||||
|
||||
after((done) => {
|
||||
after(done => {
|
||||
testrpc.close();
|
||||
done();
|
||||
});
|
||||
|
||||
it('Should deploy LiquidPledging contract', async function () {
|
||||
const baseVault = await contracts.LPVault.new(web3, accounts[0]);
|
||||
const baseLP = await contracts.LiquidPledgingMock.new(web3, accounts[0]);
|
||||
lpFactory = await contracts.LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
it('Should deploy LiquidPledging contract', async function() {
|
||||
const baseVault = await LPVault.new(web3, accounts[0]);
|
||||
const baseLP = await LiquidPledgingMock.new(web3, accounts[0]);
|
||||
lpFactory = await LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
|
||||
const r = await lpFactory.newLP(accounts[0], accounts[0]);
|
||||
|
||||
const vaultAddress = r.events.DeployVault.returnValues.vault;
|
||||
vault = new contracts.LPVault(web3, vaultAddress);
|
||||
vault = new LPVault(web3, vaultAddress);
|
||||
|
||||
const lpAddress = r.events.DeployLiquidPledging.returnValues.liquidPledging;
|
||||
liquidPledging = new contracts.LiquidPledgingMock(web3, lpAddress);
|
||||
liquidPledging = new LiquidPledgingMock(web3, lpAddress);
|
||||
|
||||
liquidPledgingState = new LiquidPledgingState(liquidPledging);
|
||||
|
||||
token = await contracts.StandardToken.new(web3);
|
||||
token = await StandardTokenTest.new(web3);
|
||||
await token.mint(giver1, web3.utils.toWei('1000'));
|
||||
await token.approve(liquidPledging.$address, "0xFFFFFFFFFFFFFFFF", { from: giver1 });
|
||||
await token.approve(liquidPledging.$address, '0xFFFFFFFFFFFFFFFF', { from: giver1 });
|
||||
});
|
||||
|
||||
it('Should create create giver with no plugin', async function () {
|
||||
it('Should create create giver with no plugin', async function() {
|
||||
await liquidPledging.addGiver('Giver1', '', 0, '0x0', { from: adminProject1 });
|
||||
|
||||
const nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
assert.equal(nAdmins, 1);
|
||||
});
|
||||
|
||||
it('Should fail to create giver with invalid plugin', async function () {
|
||||
it('Should fail to create giver with invalid plugin', async function() {
|
||||
await assertFail(
|
||||
liquidPledging.addGiver('Giver2', '', 0, vault.$address, { from: giver1, gas: 4000000 })
|
||||
liquidPledging.addGiver('Giver2', '', 0, vault.$address, { from: giver1, gas: 4000000 }),
|
||||
);
|
||||
});
|
||||
|
||||
it('Should fail to create delegate with invalid plugin', async function () {
|
||||
it('Should fail to create delegate with invalid plugin', async function() {
|
||||
await assertFail(
|
||||
liquidPledging.addDelegate('delegate1', '', 0, liquidPledging.$address, { from: adminDelegate1, gas: 4000000 })
|
||||
liquidPledging.addDelegate('delegate1', '', 0, liquidPledging.$address, {
|
||||
from: adminDelegate1,
|
||||
gas: 4000000,
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it('Should fail to create project with invalid plugin', async function () {
|
||||
it('Should fail to create project with invalid plugin', async function() {
|
||||
await assertFail(
|
||||
liquidPledging.addProject('Project1', '', giver1, 0, 0, vault.$address, { from: adminProject1, gas: 4000000 })
|
||||
liquidPledging.addProject('Project1', '', giver1, 0, 0, vault.$address, {
|
||||
from: adminProject1,
|
||||
gas: 4000000,
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it('Should deploy TestSimpleProjectPlugin and add project', async function () {
|
||||
it('Should deploy TestSimpleProjectPlugin and add project', async function() {
|
||||
// add plugin as valid plugin
|
||||
const codeHash = web3.utils.soliditySha3(simpleProjectPluginRuntimeByteCode);
|
||||
await liquidPledging.addValidPluginContract(codeHash, { $extraGas: 200000 });
|
||||
|
@ -105,19 +119,20 @@ describe('LiquidPledging plugins test', function () {
|
|||
const factoryContract = await new web3.eth.Contract(simpleProjectPluginFactoryAbi)
|
||||
.deploy({
|
||||
data: simpleProjectPluginFactoryByteCode,
|
||||
arguments: []
|
||||
}).send({ from: adminProject1, gas: 5000000 });
|
||||
arguments: [],
|
||||
})
|
||||
.send({ from: adminProject1, gas: 5000000 });
|
||||
factoryContract.setProvider(web3.currentProvider);
|
||||
|
||||
await factoryContract.methods
|
||||
.deploy(liquidPledging.$address, "SimplePlugin1", "", 0)
|
||||
.send({ from: adminProject1, gas: 5000000 })
|
||||
.deploy(liquidPledging.$address, 'SimplePlugin1', '', 0)
|
||||
.send({ from: adminProject1, gas: 5000000 });
|
||||
|
||||
const nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
assert.equal(nAdmins, 2);
|
||||
});
|
||||
|
||||
it('Should allow all plugins', async function () {
|
||||
it('Should allow all plugins', async function() {
|
||||
await liquidPledging.useWhitelist(false, { $extraGas: 200000 });
|
||||
|
||||
await liquidPledging.addGiver('Giver2', '', 0, vault.$address, { from: giver1 });
|
||||
|
@ -126,4 +141,3 @@ describe('LiquidPledging plugins test', function () {
|
|||
assert.equal(nAdmins, 3);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,20 +1,18 @@
|
|||
/* eslint-env mocha */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require("ganache-cli");
|
||||
const TestRPC = require('ganache-cli');
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const assertFail = require('./helpers/assertFail');
|
||||
const contracts = require("../build/contracts.js");
|
||||
const LiquidPledgingState = require('../index').LiquidPledgingState;
|
||||
const { assert } = require('chai');
|
||||
const { LPVault, LPFactory, LiquidPledgingState, test } = require('../index');
|
||||
|
||||
const assert = chai.assert;
|
||||
const { StandardTokenTest, assertFail, LiquidPledgingMock } = test;
|
||||
|
||||
const printState = async (liquidPledgingState) => {
|
||||
const printState = async liquidPledgingState => {
|
||||
const st = await liquidPledgingState.getState();
|
||||
console.log(JSON.stringify(st, null, 2));
|
||||
};
|
||||
|
||||
describe('LiquidPledging cancelPledge normal scenario', function () {
|
||||
describe('LiquidPledging cancelPledge normal scenario', function() {
|
||||
this.timeout(0);
|
||||
|
||||
let testrpc;
|
||||
|
@ -38,38 +36,40 @@ describe('LiquidPledging cancelPledge normal scenario', function () {
|
|||
|
||||
web3 = new Web3('http://localhost:8545');
|
||||
accounts = await web3.eth.getAccounts();
|
||||
giver1 = accounts[ 1 ];
|
||||
adminProject1 = accounts[ 2 ];
|
||||
adminProject2 = accounts[ 3 ];
|
||||
giver1 = accounts[1];
|
||||
adminProject1 = accounts[2];
|
||||
adminProject2 = accounts[3];
|
||||
});
|
||||
|
||||
after((done) => {
|
||||
after(done => {
|
||||
testrpc.close();
|
||||
done();
|
||||
});
|
||||
|
||||
it('Should deploy LiquidPledging contract', async () => {
|
||||
const baseVault = await contracts.LPVault.new(web3, accounts[0]);
|
||||
const baseLP = await contracts.LiquidPledgingMock.new(web3, accounts[0]);
|
||||
lpFactory = await contracts.LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
const baseVault = await LPVault.new(web3, accounts[0]);
|
||||
const baseLP = await LiquidPledgingMock.new(web3, accounts[0]);
|
||||
lpFactory = await LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
|
||||
const r = await lpFactory.newLP(accounts[0], accounts[0]);
|
||||
|
||||
const vaultAddress = r.events.DeployVault.returnValues.vault;
|
||||
vault = new contracts.LPVault(web3, vaultAddress);
|
||||
vault = new LPVault(web3, vaultAddress);
|
||||
|
||||
const lpAddress = r.events.DeployLiquidPledging.returnValues.liquidPledging;
|
||||
liquidPledging = new contracts.LiquidPledgingMock(web3, lpAddress);
|
||||
liquidPledging = new LiquidPledgingMock(web3, lpAddress);
|
||||
|
||||
liquidPledgingState = new LiquidPledgingState(liquidPledging);
|
||||
|
||||
token = await contracts.StandardToken.new(web3);
|
||||
token = await StandardTokenTest.new(web3);
|
||||
await token.mint(giver1, web3.utils.toWei('1000'));
|
||||
await token.approve(liquidPledging.$address, "0xFFFFFFFFFFFFFFFF", { from: giver1 });
|
||||
await token.approve(liquidPledging.$address, '0xFFFFFFFFFFFFFFFF', { from: giver1 });
|
||||
});
|
||||
|
||||
it('Should add project and donate ', async () => {
|
||||
await liquidPledging.addProject('Project1', 'URLProject1', adminProject1, 0, 0, '0x0', { from: adminProject1 });
|
||||
await liquidPledging.addProject('Project1', 'URLProject1', adminProject1, 0, 0, '0x0', {
|
||||
from: adminProject1,
|
||||
});
|
||||
await liquidPledging.addGiverAndDonate(1, token.$address, 1000, { from: giver1 });
|
||||
|
||||
const nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
|
@ -77,9 +77,7 @@ describe('LiquidPledging cancelPledge normal scenario', function () {
|
|||
});
|
||||
|
||||
it('Should only allow pledge owner to cancel pledge', async () => {
|
||||
await assertFail(
|
||||
liquidPledging.cancelPledge(2, 1000, { from: giver1, gas: 4000000 })
|
||||
);
|
||||
await assertFail(liquidPledging.cancelPledge(2, 1000, { from: giver1, gas: 4000000 }));
|
||||
});
|
||||
|
||||
it('Should cancel pledge and return to oldPledge', async () => {
|
||||
|
@ -92,9 +90,6 @@ describe('LiquidPledging cancelPledge normal scenario', function () {
|
|||
});
|
||||
|
||||
it('Should not allow to cancel pledge if oldPledge === 0', async () => {
|
||||
await assertFail(
|
||||
liquidPledging.cancelPledge(1, 1000, { from: giver1, gas: 4000000 })
|
||||
);
|
||||
})
|
||||
await assertFail(liquidPledging.cancelPledge(1, 1000, { from: giver1, gas: 4000000 }));
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,20 +1,18 @@
|
|||
/* eslint-env mocha */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require("ganache-cli");
|
||||
const TestRPC = require('ganache-cli');
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const contracts = require("../build/contracts.js");
|
||||
const LiquidPledgingState = require('../index').LiquidPledgingState;
|
||||
const { assert } = require('chai');
|
||||
const { LPVault, LPFactory, LiquidPledgingState, test } = require('../index');
|
||||
|
||||
const assertFail = require('./helpers/assertFail');
|
||||
const assert = chai.assert;
|
||||
const { StandardTokenTest, assertFail, LiquidPledgingMock } = test;
|
||||
|
||||
const printState = async (liquidPledgingState) => {
|
||||
const printState = async liquidPledgingState => {
|
||||
const st = await liquidPledgingState.getState();
|
||||
console.log(JSON.stringify(st, null, 2));
|
||||
};
|
||||
|
||||
describe('DelegationChain test', function () {
|
||||
describe('DelegationChain test', function() {
|
||||
this.timeout(0);
|
||||
|
||||
let testrpc;
|
||||
|
@ -50,29 +48,29 @@ describe('DelegationChain test', function () {
|
|||
giver2 = accounts[6];
|
||||
});
|
||||
|
||||
after((done) => {
|
||||
after(done => {
|
||||
testrpc.close();
|
||||
done();
|
||||
});
|
||||
|
||||
it('Should deploy LiquidPledging contract', async () => {
|
||||
const baseVault = await contracts.LPVault.new(web3, accounts[0]);
|
||||
const baseLP = await contracts.LiquidPledgingMock.new(web3, accounts[0]);
|
||||
lpFactory = await contracts.LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
const baseVault = await LPVault.new(web3, accounts[0]);
|
||||
const baseLP = await LiquidPledgingMock.new(web3, accounts[0]);
|
||||
lpFactory = await LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
|
||||
const r = await lpFactory.newLP(accounts[0], accounts[0]);
|
||||
|
||||
const vaultAddress = r.events.DeployVault.returnValues.vault;
|
||||
vault = new contracts.LPVault(web3, vaultAddress);
|
||||
vault = new LPVault(web3, vaultAddress);
|
||||
|
||||
const lpAddress = r.events.DeployLiquidPledging.returnValues.liquidPledging;
|
||||
liquidPledging = new contracts.LiquidPledgingMock(web3, lpAddress);
|
||||
liquidPledging = new LiquidPledgingMock(web3, lpAddress);
|
||||
|
||||
liquidPledgingState = new LiquidPledgingState(liquidPledging);
|
||||
|
||||
token = await contracts.StandardToken.new(web3);
|
||||
token = await StandardTokenTest.new(web3);
|
||||
await token.mint(giver1, web3.utils.toWei('1000'));
|
||||
await token.approve(liquidPledging.$address, "0xFFFFFFFFFFFFFFFF", { from: giver1 });
|
||||
await token.approve(liquidPledging.$address, '0xFFFFFFFFFFFFFFFF', { from: giver1 });
|
||||
});
|
||||
|
||||
it('Should add pledgeAdmins', async () => {
|
||||
|
@ -80,7 +78,9 @@ describe('DelegationChain test', function () {
|
|||
await liquidPledging.addDelegate('Delegate1', 'URLDelegate1', 259200, 0, { from: delegate1 }); // pledgeAdmin 2
|
||||
await liquidPledging.addDelegate('Delegate2', 'URLDelegate2', 0, 0, { from: delegate2 }); // pledgeAdmin 3
|
||||
await liquidPledging.addDelegate('Delegate3', 'URLDelegate3', 0, 0, { from: delegate3 }); // pledgeAdmin 4
|
||||
await liquidPledging.addProject('Project1', 'URLProject1', adminProject1, 0, 0, 0, { from: adminProject1 }); // pledgeAdmin 5
|
||||
await liquidPledging.addProject('Project1', 'URLProject1', adminProject1, 0, 0, 0, {
|
||||
from: adminProject1,
|
||||
}); // pledgeAdmin 5
|
||||
await liquidPledging.addGiver('Giver2', 'URLGiver2', 0, 0, { from: giver2 }); // pledgeAdmin 6
|
||||
|
||||
const nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
|
@ -192,7 +192,7 @@ describe('DelegationChain test', function () {
|
|||
assert.equal(pledge.commitTime, now + 259200); // 259200 is longest commitTime in delegationChain
|
||||
});
|
||||
|
||||
it('delegation chain should remain the same when owner veto\'s delegation', async () => {
|
||||
it("delegation chain should remain the same when owner veto's delegation", async () => {
|
||||
// owner veto delegation to project1
|
||||
await liquidPledging.transfer(1, 8, 1000, 3, { from: giver1, $extraGas: 200000 });
|
||||
|
||||
|
@ -204,7 +204,7 @@ describe('DelegationChain test', function () {
|
|||
assert.equal(st.pledges[3].delegates[1].id, 3);
|
||||
});
|
||||
|
||||
it('delegation chain should remain the same upto delegate of reciever when owner veto\'s delegation', async () => {
|
||||
it("delegation chain should remain the same upto delegate of reciever when owner veto's delegation", async () => {
|
||||
// propose project1 delegation
|
||||
await liquidPledging.transfer(3, 3, 1000, 5, { from: delegate2, $extraGas: 200000 });
|
||||
// owner veto delegation to project1 and remove delegate2
|
||||
|
|
|
@ -2,22 +2,18 @@
|
|||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require('ganache-cli');
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const assertFail = require('./helpers/assertFail');
|
||||
const contracts = require("../build/contracts.js");
|
||||
const { assert } = require('chai');
|
||||
const { LPVault, LPFactory, LiquidPledgingState, Kernel, ACL, test } = require('../index');
|
||||
|
||||
const { StandardTokenTest, assertFail, LiquidPledgingMock } = test;
|
||||
const { utils } = Web3;
|
||||
|
||||
const LiquidPledgingState = require('../index').LiquidPledgingState;
|
||||
const assert = chai.assert;
|
||||
|
||||
|
||||
const printState = async (liquidPledgingState) => {
|
||||
const printState = async liquidPledgingState => {
|
||||
const st = await liquidPledgingState.getState();
|
||||
console.log(JSON.stringify(st, null, 2));
|
||||
};
|
||||
|
||||
describe('LiquidPledging test', function () {
|
||||
describe('LiquidPledging test', function() {
|
||||
this.timeout(0);
|
||||
let testrpc;
|
||||
let web3;
|
||||
|
@ -61,15 +57,17 @@ describe('LiquidPledging test', function () {
|
|||
escapeHatchCaller = accounts[10];
|
||||
});
|
||||
|
||||
after((done) => {
|
||||
after(done => {
|
||||
testrpc.close();
|
||||
done();
|
||||
});
|
||||
|
||||
it('Should deploy LiquidPledging contract', async () => {
|
||||
const baseVault = await contracts.LPVault.new(web3, escapeHatchDestination);
|
||||
const baseLP = await contracts.LiquidPledgingMock.new(web3, escapeHatchDestination, {gas: 6700000});
|
||||
lpFactory = await contracts.LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
const baseVault = await LPVault.new(web3, escapeHatchDestination);
|
||||
const baseLP = await LiquidPledgingMock.new(web3, escapeHatchDestination, {
|
||||
gas: 6700000,
|
||||
});
|
||||
lpFactory = await LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
|
||||
assert.isAbove(Number(await baseVault.getInitializationBlock()), 0);
|
||||
assert.isAbove(Number(await baseLP.getInitializationBlock()), 0);
|
||||
|
@ -77,29 +75,51 @@ describe('LiquidPledging test', function () {
|
|||
const r = await lpFactory.newLP(accounts[0], escapeHatchDestination);
|
||||
|
||||
const vaultAddress = r.events.DeployVault.returnValues.vault;
|
||||
vault = new contracts.LPVault(web3, vaultAddress);
|
||||
vault = new LPVault(web3, vaultAddress);
|
||||
|
||||
const lpAddress = r.events.DeployLiquidPledging.returnValues.liquidPledging;
|
||||
liquidPledging = new contracts.LiquidPledgingMock(web3, lpAddress);
|
||||
liquidPledging = new LiquidPledgingMock(web3, lpAddress);
|
||||
|
||||
liquidPledgingState = new LiquidPledgingState(liquidPledging);
|
||||
|
||||
// set permissions
|
||||
const kernel = new contracts.Kernel(web3, await liquidPledging.kernel());
|
||||
acl = new contracts.ACL(web3, await kernel.acl());
|
||||
await acl.createPermission(accounts[0], vault.$address, await vault.CANCEL_PAYMENT_ROLE(), accounts[0], {$extraGas: 200000});
|
||||
await acl.createPermission(accounts[0], vault.$address, await vault.CONFIRM_PAYMENT_ROLE(), accounts[0], {$extraGas: 200000});
|
||||
await acl.grantPermission(escapeHatchCaller, vault.$address, await vault.ESCAPE_HATCH_CALLER_ROLE(), {$extraGas: 200000});
|
||||
await acl.revokePermission(accounts[0], vault.$address, await vault.ESCAPE_HATCH_CALLER_ROLE(), {$extraGas: 200000});
|
||||
const kernel = new Kernel(web3, await liquidPledging.kernel());
|
||||
acl = new ACL(web3, await kernel.acl());
|
||||
await acl.createPermission(
|
||||
accounts[0],
|
||||
vault.$address,
|
||||
await vault.CANCEL_PAYMENT_ROLE(),
|
||||
accounts[0],
|
||||
{ $extraGas: 200000 },
|
||||
);
|
||||
await acl.createPermission(
|
||||
accounts[0],
|
||||
vault.$address,
|
||||
await vault.CONFIRM_PAYMENT_ROLE(),
|
||||
accounts[0],
|
||||
{ $extraGas: 200000 },
|
||||
);
|
||||
await acl.grantPermission(
|
||||
escapeHatchCaller,
|
||||
vault.$address,
|
||||
await vault.ESCAPE_HATCH_CALLER_ROLE(),
|
||||
{ $extraGas: 200000 },
|
||||
);
|
||||
await acl.revokePermission(
|
||||
accounts[0],
|
||||
vault.$address,
|
||||
await vault.ESCAPE_HATCH_CALLER_ROLE(),
|
||||
{ $extraGas: 200000 },
|
||||
);
|
||||
|
||||
giver1Token = await contracts.StandardToken.new(web3);
|
||||
giver2Token = await contracts.StandardToken.new(web3);
|
||||
giver1Token = await StandardTokenTest.new(web3);
|
||||
giver2Token = await StandardTokenTest.new(web3);
|
||||
|
||||
await giver1Token.mint(giver1, web3.utils.toWei('1000'));
|
||||
await giver2Token.mint(giver2, web3.utils.toWei('1000'));
|
||||
|
||||
await giver1Token.approve(liquidPledging.$address, "0xFFFFFFFFFFFFFFFF", {from: giver1});
|
||||
await giver2Token.approve(liquidPledging.$address, "0xFFFFFFFFFFFFFFFF", {from: giver2});
|
||||
await giver1Token.approve(liquidPledging.$address, '0xFFFFFFFFFFFFFFFF', { from: giver1 });
|
||||
await giver2Token.approve(liquidPledging.$address, '0xFFFFFFFFFFFFFFFF', { from: giver2 });
|
||||
});
|
||||
it('Should create a giver', async () => {
|
||||
await liquidPledging.addGiver('Giver1', 'URLGiver1', 86400, 0, { from: giver1, gas: 1000000 });
|
||||
|
@ -114,7 +134,10 @@ describe('LiquidPledging test', function () {
|
|||
assert.equal(res[4], 86400);
|
||||
});
|
||||
it('Should make a donation', async () => {
|
||||
const r = await liquidPledging.donate(1, 1, giver1Token.$address, utils.toWei('1'), { from: giver1, $extraGas: 100000 });
|
||||
const r = await liquidPledging.donate(1, 1, giver1Token.$address, utils.toWei('1'), {
|
||||
from: giver1,
|
||||
$extraGas: 100000,
|
||||
});
|
||||
const nPledges = await liquidPledging.numberOfPledges();
|
||||
assert.equal(nPledges, 1);
|
||||
const p = await liquidPledging.getPledge(1);
|
||||
|
@ -122,8 +145,8 @@ describe('LiquidPledging test', function () {
|
|||
assert.equal(p.owner, 1);
|
||||
const vaultBal = await giver1Token.balanceOf(vault.$address);
|
||||
const giver1Bal = await giver1Token.balanceOf(giver1);
|
||||
assert.equal(vaultBal, web3.utils.toWei('1'))
|
||||
assert.equal(giver1Bal, web3.utils.toWei('999'))
|
||||
assert.equal(vaultBal, web3.utils.toWei('1'));
|
||||
assert.equal(giver1Bal, web3.utils.toWei('999'));
|
||||
});
|
||||
it('Should create a delegate', async () => {
|
||||
await liquidPledging.addDelegate('Delegate1', 'URLDelegate1', 0, 0, { from: delegate1 });
|
||||
|
@ -152,7 +175,9 @@ describe('LiquidPledging test', function () {
|
|||
assert.equal(d[2], 'Delegate1');
|
||||
});
|
||||
it('Should create a 2 projects', async () => {
|
||||
await liquidPledging.addProject('Project1', 'URLProject1', adminProject1, 0, 86400, 0, { from: adminProject1 });
|
||||
await liquidPledging.addProject('Project1', 'URLProject1', adminProject1, 0, 86400, 0, {
|
||||
from: adminProject1,
|
||||
});
|
||||
|
||||
const nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
assert.equal(nAdmins, 3);
|
||||
|
@ -165,7 +190,9 @@ describe('LiquidPledging test', function () {
|
|||
assert.equal(res[5], 0);
|
||||
assert.equal(res[6], false);
|
||||
|
||||
await liquidPledging.addProject('Project2', 'URLProject2', adminProject2, 0, 86400, 0, { from: adminProject2 });
|
||||
await liquidPledging.addProject('Project2', 'URLProject2', adminProject2, 0, 86400, 0, {
|
||||
from: adminProject2,
|
||||
});
|
||||
|
||||
const nAdmins2 = await liquidPledging.numberOfPledgeAdmins();
|
||||
assert.equal(nAdmins2, 4);
|
||||
|
@ -210,7 +237,7 @@ describe('LiquidPledging test', function () {
|
|||
});
|
||||
it('After the time, the project1 should be able to spend part of it', async () => {
|
||||
const n = Math.floor(new Date().getTime() / 1000);
|
||||
await liquidPledging.setMockedTime(n + 86401, {$extraGas: 100000});
|
||||
await liquidPledging.setMockedTime(n + 86401, { $extraGas: 100000 });
|
||||
await liquidPledging.withdraw(3, utils.toWei('0.05'), { from: adminProject1 });
|
||||
const nPledges = await liquidPledging.numberOfPledges();
|
||||
assert.equal(nPledges, 6);
|
||||
|
@ -236,7 +263,7 @@ describe('LiquidPledging test', function () {
|
|||
it('Should collect the token', async () => {
|
||||
const initialBalance = await giver1Token.balanceOf(adminProject1);
|
||||
|
||||
await vault.confirmPayment(0, {$extraGas: 200000});
|
||||
await vault.confirmPayment(0, { $extraGas: 200000 });
|
||||
const finalBalance = await giver1Token.balanceOf(adminProject1);
|
||||
|
||||
const collected = utils.fromWei(utils.toBN(finalBalance).sub(utils.toBN(initialBalance)));
|
||||
|
@ -265,11 +292,14 @@ describe('LiquidPledging test', function () {
|
|||
assert.equal(utils.fromWei(p.amount), 0.05);
|
||||
|
||||
await assertFail(
|
||||
liquidPledging.withdraw(5, utils.toWei('0.01'), { from: adminProject1, gas: 4000000 })
|
||||
liquidPledging.withdraw(5, utils.toWei('0.01'), { from: adminProject1, gas: 4000000 }),
|
||||
);
|
||||
});
|
||||
it('Delegate should send part of this ETH to project2', async () => {
|
||||
await liquidPledging.transfer(2, 5, utils.toWei('0.03'), 4, {from: delegate1, $extraGas: 100000});
|
||||
await liquidPledging.transfer(2, 5, utils.toWei('0.03'), 4, {
|
||||
from: delegate1,
|
||||
$extraGas: 100000,
|
||||
});
|
||||
const st = await liquidPledgingState.getState(liquidPledging);
|
||||
assert.equal(st.pledges.length, 9);
|
||||
assert.equal(utils.fromWei(st.pledges[8].amount), 0.03);
|
||||
|
@ -279,27 +309,38 @@ describe('LiquidPledging test', function () {
|
|||
assert.equal(st.pledges[8].intendedProject, 4);
|
||||
});
|
||||
it('Giver should be able to send the remaining to project2', async () => {
|
||||
await liquidPledging.transfer(1, 5, utils.toWei('0.02'), 4, { from: giver1, $extraGas: 100000 });
|
||||
await liquidPledging.transfer(1, 5, utils.toWei('0.02'), 4, {
|
||||
from: giver1,
|
||||
$extraGas: 100000,
|
||||
});
|
||||
const st = await liquidPledgingState.getState(liquidPledging);
|
||||
assert.equal(st.pledges.length, 9);
|
||||
assert.equal(utils.fromWei(st.pledges[5].amount), 0);
|
||||
assert.equal(utils.fromWei(st.pledges[4].amount), 0.12);
|
||||
});
|
||||
it('A subproject 2a and a delegate2 is created', async () => {
|
||||
await liquidPledging.addProject('Project2a', 'URLProject2a', adminProject2a, 4, 86400, 0, { from: adminProject2 });
|
||||
await liquidPledging.addProject('Project2a', 'URLProject2a', adminProject2a, 4, 86400, 0, {
|
||||
from: adminProject2,
|
||||
});
|
||||
await liquidPledging.addDelegate('Delegate2', 'URLDelegate2', 0, 0, { from: delegate2 });
|
||||
const nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
assert.equal(nAdmins, 6);
|
||||
});
|
||||
it('Project 2 delegate in delegate2', async () => {
|
||||
await liquidPledging.transfer(4, 4, utils.toWei('0.02'), 6, { from: adminProject2, $extraGas: 200000 });
|
||||
await liquidPledging.transfer(4, 4, utils.toWei('0.02'), 6, {
|
||||
from: adminProject2,
|
||||
$extraGas: 200000,
|
||||
});
|
||||
const st = await liquidPledgingState.getState();
|
||||
assert.equal(st.pledges.length, 10);
|
||||
assert.equal(utils.fromWei(st.pledges[9].amount), 0.02);
|
||||
assert.equal(utils.fromWei(st.pledges[4].amount), 0.1);
|
||||
});
|
||||
it('delegate2 assigns to projec2a', async () => {
|
||||
await liquidPledging.transfer(6, 9, utils.toWei('0.01'), 5, { from: delegate2, $extraGas: 100000 });
|
||||
await liquidPledging.transfer(6, 9, utils.toWei('0.01'), 5, {
|
||||
from: delegate2,
|
||||
$extraGas: 100000,
|
||||
});
|
||||
const st = await liquidPledgingState.getState(liquidPledging);
|
||||
assert.equal(st.pledges.length, 11);
|
||||
assert.equal(utils.fromWei(st.pledges[9].amount), 0.01);
|
||||
|
@ -307,8 +348,11 @@ describe('LiquidPledging test', function () {
|
|||
});
|
||||
it('project2a authorize to spend a litle', async () => {
|
||||
const n = Math.floor(new Date().getTime() / 1000);
|
||||
await liquidPledging.setMockedTime(n + (86401 * 3), {$extraGas: 200000});
|
||||
await liquidPledging.withdraw(10, utils.toWei('0.005'), { from: adminProject2a, $extraGas: 200000 });
|
||||
await liquidPledging.setMockedTime(n + 86401 * 3, { $extraGas: 200000 });
|
||||
await liquidPledging.withdraw(10, utils.toWei('0.005'), {
|
||||
from: adminProject2a,
|
||||
$extraGas: 200000,
|
||||
});
|
||||
const st = await liquidPledgingState.getState(liquidPledging);
|
||||
assert.equal(st.pledges.length, 13);
|
||||
assert.equal(utils.fromWei(st.pledges[10].amount), 0);
|
||||
|
@ -320,7 +364,7 @@ describe('LiquidPledging test', function () {
|
|||
});
|
||||
it('Should not be able to withdraw it', async () => {
|
||||
await assertFail(
|
||||
liquidPledging.withdraw(12, utils.toWei('0.005'), { from: giver1, gas: 4000000 })
|
||||
liquidPledging.withdraw(12, utils.toWei('0.005'), { from: giver1, gas: 4000000 }),
|
||||
);
|
||||
});
|
||||
it('Should be able to cancel payment', async () => {
|
||||
|
@ -343,13 +387,17 @@ describe('LiquidPledging test', function () {
|
|||
|
||||
// .substring is to remove the 0x prefix on the toHex result
|
||||
const encodedPledges = pledges.map(p => {
|
||||
return '0x' + utils.padLeft(utils.toHex(p.amount).substring(2), 48) + utils.padLeft(utils.toHex(p.id).substring(2), 16);
|
||||
return (
|
||||
'0x' +
|
||||
utils.padLeft(utils.toHex(p.amount).substring(2), 48) +
|
||||
utils.padLeft(utils.toHex(p.id).substring(2), 16)
|
||||
);
|
||||
});
|
||||
|
||||
await liquidPledging.mWithdraw(encodedPledges, { from: giver1, $extraGas: 200000 });
|
||||
|
||||
const initialBalance = await giver1Token.balanceOf(giver1);
|
||||
await vault.multiConfirm([2, 3, 4, 5, 6], {$extraGas: 200000});
|
||||
await vault.multiConfirm([2, 3, 4, 5, 6], { $extraGas: 200000 });
|
||||
|
||||
const finalBalance = await giver1Token.balanceOf(giver1);
|
||||
const collected = utils.fromWei(utils.toBN(finalBalance).sub(utils.toBN(initialBalance)));
|
||||
|
@ -359,7 +407,10 @@ describe('LiquidPledging test', function () {
|
|||
it('Should make a donation and create giver', async () => {
|
||||
const oldNPledges = await liquidPledging.numberOfPledges();
|
||||
const oldNAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
await liquidPledging.addGiverAndDonate(1, giver2Token.$address, utils.toWei('1'), { from: giver2, $extraGas: 200000 });
|
||||
await liquidPledging.addGiverAndDonate(1, giver2Token.$address, utils.toWei('1'), {
|
||||
from: giver2,
|
||||
$extraGas: 200000,
|
||||
});
|
||||
const nPledges = await liquidPledging.numberOfPledges();
|
||||
assert.equal(utils.toDecimal(nPledges), utils.toDecimal(oldNPledges) + 2);
|
||||
const nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
|
@ -375,7 +426,9 @@ describe('LiquidPledging test', function () {
|
|||
});
|
||||
it('Should allow childProject with different parentProject owner', async () => {
|
||||
const nAdminsBefore = await liquidPledging.numberOfPledgeAdmins();
|
||||
await liquidPledging.addProject('Project3', 'URLProject3', adminProject3, 4, 86400, 0, { from: adminProject3 });
|
||||
await liquidPledging.addProject('Project3', 'URLProject3', adminProject3, 4, 86400, 0, {
|
||||
from: adminProject3,
|
||||
});
|
||||
const nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
assert.equal(nAdmins, utils.toDecimal(nAdminsBefore) + 1);
|
||||
});
|
||||
|
@ -383,23 +436,36 @@ describe('LiquidPledging test', function () {
|
|||
it('should throw if projectLevel > 20', async () => {
|
||||
let nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
|
||||
await liquidPledging.addProject('ProjectLevel0', '', adminProject1, 0, 86400, 0, { from: adminProject1, $extraGas: 100000 });
|
||||
await liquidPledging.addProject('ProjectLevel0', '', adminProject1, 0, 86400, 0, {
|
||||
from: adminProject1,
|
||||
$extraGas: 100000,
|
||||
});
|
||||
|
||||
for (let i = 2; i <= 20; i++) {
|
||||
await liquidPledging.addProject(`ProjectLevel${i}`, '', adminProject1, ++nAdmins, 86400, 0, { from: adminProject1, $extraGas: 100000 });
|
||||
await liquidPledging.addProject(`ProjectLevel${i}`, '', adminProject1, ++nAdmins, 86400, 0, {
|
||||
from: adminProject1,
|
||||
$extraGas: 100000,
|
||||
});
|
||||
}
|
||||
|
||||
await assertFail(
|
||||
liquidPledging.addProject('ProjectLevel21', '', adminProject1, ++nAdmins, 86400, 0, { from: adminProject1, gas: 4000000 })
|
||||
liquidPledging.addProject('ProjectLevel21', '', adminProject1, ++nAdmins, 86400, 0, {
|
||||
from: adminProject1,
|
||||
gas: 4000000,
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it('should prevent donation to 0 receiverId', async () => {
|
||||
await assertFail(liquidPledging.donate(1, 0, giver1Token.$address, 1, { from: giver1, gas: 6700000 }));
|
||||
await assertFail(
|
||||
liquidPledging.donate(1, 0, giver1Token.$address, 1, { from: giver1, gas: 6700000 }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should prevent donation from 0 giverId', async () => {
|
||||
await assertFail(liquidPledging.donate(0, 1, giver1Token.$address, 1, { from: giver1, gas: 6700000 }));
|
||||
await assertFail(
|
||||
liquidPledging.donate(0, 1, giver1Token.$address, 1, { from: giver1, gas: 6700000 }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should donate on behalf of another addy', async () => {
|
||||
|
@ -407,7 +473,10 @@ describe('LiquidPledging test', function () {
|
|||
const oldNAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
const preGiver1Bal = await giver1Token.balanceOf(giver1);
|
||||
|
||||
await liquidPledging.addGiverAndDonate(1, accounts[8], giver1Token.$address, 11, { from: giver1, $extraGas: 200000 });
|
||||
await liquidPledging.addGiverAndDonate(1, accounts[8], giver1Token.$address, 11, {
|
||||
from: giver1,
|
||||
$extraGas: 200000,
|
||||
});
|
||||
|
||||
const nPledges = await liquidPledging.numberOfPledges();
|
||||
assert.equal(utils.toDecimal(nPledges), utils.toDecimal(oldNPledges) + 1);
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
/* eslint-env mocha */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require("ganache-cli");
|
||||
const TestRPC = require('ganache-cli');
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const contracts = require("../build/contracts.js");
|
||||
const LiquidPledgingState = require('../index').LiquidPledgingState;
|
||||
const { assert } = require('chai');
|
||||
const { LPVault, LPFactory, LiquidPledgingState, test } = require('../index');
|
||||
|
||||
const assert = chai.assert;
|
||||
const { StandardTokenTest, assertFail, LiquidPledgingMock } = test;
|
||||
|
||||
const printState = async (liquidPledgingState) => {
|
||||
const printState = async liquidPledgingState => {
|
||||
const st = await liquidPledgingState.getState();
|
||||
console.log(JSON.stringify(st, null, 2));
|
||||
};
|
||||
|
||||
describe('NormalizePledge test', function () {
|
||||
describe('NormalizePledge test', function() {
|
||||
this.timeout(0);
|
||||
|
||||
let testrpc;
|
||||
|
@ -48,39 +47,43 @@ describe('NormalizePledge test', function () {
|
|||
giver2 = accounts[6];
|
||||
});
|
||||
|
||||
after((done) => {
|
||||
after(done => {
|
||||
testrpc.close();
|
||||
done();
|
||||
});
|
||||
|
||||
it('Should deploy LiquidPledging contract', async () => {
|
||||
const baseVault = await contracts.LPVault.new(web3, accounts[0]);
|
||||
const baseLP = await contracts.LiquidPledgingMock.new(web3, accounts[0]);
|
||||
lpFactory = await contracts.LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
const baseVault = await LPVault.new(web3, accounts[0]);
|
||||
const baseLP = await LiquidPledgingMock.new(web3, accounts[0]);
|
||||
lpFactory = await LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
|
||||
const r = await lpFactory.newLP(accounts[0], accounts[0]);
|
||||
|
||||
const vaultAddress = r.events.DeployVault.returnValues.vault;
|
||||
vault = new contracts.LPVault(web3, vaultAddress);
|
||||
vault = new LPVault(web3, vaultAddress);
|
||||
|
||||
const lpAddress = r.events.DeployLiquidPledging.returnValues.liquidPledging;
|
||||
liquidPledging = new contracts.LiquidPledgingMock(web3, lpAddress);
|
||||
liquidPledging = new LiquidPledgingMock(web3, lpAddress);
|
||||
|
||||
liquidPledgingState = new LiquidPledgingState(liquidPledging);
|
||||
|
||||
token = await contracts.StandardToken.new(web3);
|
||||
token = await StandardTokenTest.new(web3);
|
||||
await token.mint(giver1, web3.utils.toWei('1000'));
|
||||
await token.mint(giver2, web3.utils.toWei('1000'));
|
||||
await token.approve(liquidPledging.$address, "0xFFFFFFFFFFFFFFFF", { from: giver1 });
|
||||
await token.approve(liquidPledging.$address, "0xFFFFFFFFFFFFFFFF", { from: giver2 });
|
||||
await token.approve(liquidPledging.$address, '0xFFFFFFFFFFFFFFFF', { from: giver1 });
|
||||
await token.approve(liquidPledging.$address, '0xFFFFFFFFFFFFFFFF', { from: giver2 });
|
||||
});
|
||||
|
||||
it('Should add pledgeAdmins', async () => {
|
||||
await liquidPledging.addGiver('Giver1', 'URLGiver1', 86400, 0, { from: giver1 }); // pledgeAdmin 1
|
||||
await liquidPledging.addDelegate('Delegate1', 'URLDelegate1', 259200, 0, { from: delegate1 }); // pledgeAdmin 2
|
||||
await liquidPledging.addDelegate('Delegate2', 'URLDelegate2', 0, 0, { from: delegate2 }); // pledgeAdmin 3
|
||||
await liquidPledging.addProject('Project1', 'URLProject1', adminProject1, 0, 0, 0, { from: adminProject1 }); // pledgeAdmin 4
|
||||
await liquidPledging.addProject('Project2', 'URLProject2', adminProject2, 0, 0, 0, { from: adminProject2 }); // pledgeAdmin 5
|
||||
await liquidPledging.addProject('Project1', 'URLProject1', adminProject1, 0, 0, 0, {
|
||||
from: adminProject1,
|
||||
}); // pledgeAdmin 4
|
||||
await liquidPledging.addProject('Project2', 'URLProject2', adminProject2, 0, 0, 0, {
|
||||
from: adminProject2,
|
||||
}); // pledgeAdmin 5
|
||||
await liquidPledging.addGiver('Giver2', 'URLGiver2', 0, 0, { from: giver2 }); // pledgeAdmin 6
|
||||
|
||||
const nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
|
@ -135,5 +138,5 @@ describe('NormalizePledge test', function () {
|
|||
assert.equal(st.pledges[5].amount, 1000);
|
||||
assert.equal(st.pledges[9].amount, 0);
|
||||
assert.equal(st.pledges[11].amount, 0);
|
||||
})
|
||||
});
|
||||
});
|
||||
|
|
120
test/Vault.js
120
test/Vault.js
|
@ -1,15 +1,13 @@
|
|||
/* eslint-env mocha */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require("ganache-cli");
|
||||
const TestRPC = require('ganache-cli');
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const assertFail = require('./helpers/assertFail');
|
||||
const contracts = require("../build/contracts.js");
|
||||
const { assert } = require('chai');
|
||||
const { LPVault, LPFactory, LiquidPledgingState, Kernel, ACL, test } = require('../index');
|
||||
|
||||
const LiquidPledgingState = require('../index').LiquidPledgingState;
|
||||
const assert = chai.assert;
|
||||
const { StandardTokenTest, assertFail, LiquidPledgingMock } = test;
|
||||
|
||||
describe('Vault test', function () {
|
||||
describe('Vault test', function() {
|
||||
this.timeout(0);
|
||||
|
||||
let testrpc;
|
||||
|
@ -36,95 +34,131 @@ describe('Vault test', function () {
|
|||
|
||||
web3 = new Web3('http://localhost:8545');
|
||||
accounts = await web3.eth.getAccounts();
|
||||
giver1 = accounts[ 1 ];
|
||||
adminProject1 = accounts[ 2 ];
|
||||
vaultOwner = accounts[ 3 ];
|
||||
escapeHatchDestination = accounts[ 4 ];
|
||||
escapeHatchCaller = accounts[ 5 ];
|
||||
restrictedPaymentsConfirmer = accounts[ 6 ];
|
||||
giver1 = accounts[1];
|
||||
adminProject1 = accounts[2];
|
||||
vaultOwner = accounts[3];
|
||||
escapeHatchDestination = accounts[4];
|
||||
escapeHatchCaller = accounts[5];
|
||||
restrictedPaymentsConfirmer = accounts[6];
|
||||
});
|
||||
|
||||
after((done) => {
|
||||
after(done => {
|
||||
testrpc.close();
|
||||
done();
|
||||
});
|
||||
|
||||
it('Should deploy Vault contract', async function () {
|
||||
const baseVault = await contracts.LPVault.new(web3, escapeHatchDestination);
|
||||
const baseLP = await contracts.LiquidPledgingMock.new(web3, escapeHatchDestination);
|
||||
lpFactory = await contracts.LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
it('Should deploy Vault contract', async function() {
|
||||
const baseVault = await LPVault.new(web3, escapeHatchDestination);
|
||||
const baseLP = await LiquidPledgingMock.new(web3, escapeHatchDestination);
|
||||
lpFactory = await LPFactory.new(web3, baseVault.$address, baseLP.$address);
|
||||
|
||||
const r = await lpFactory.newLP(accounts[0], escapeHatchDestination);
|
||||
|
||||
const vaultAddress = r.events.DeployVault.returnValues.vault;
|
||||
vault = new contracts.LPVault(web3, vaultAddress);
|
||||
vault = new LPVault(web3, vaultAddress);
|
||||
|
||||
const lpAddress = r.events.DeployLiquidPledging.returnValues.liquidPledging;
|
||||
liquidPledging = new contracts.LiquidPledgingMock(web3, lpAddress);
|
||||
liquidPledging = new LiquidPledgingMock(web3, lpAddress);
|
||||
|
||||
liquidPledgingState = new LiquidPledgingState(liquidPledging);
|
||||
|
||||
// set permissions
|
||||
const kernel = new contracts.Kernel(web3, await liquidPledging.kernel());
|
||||
acl = new contracts.ACL(web3, await kernel.acl());
|
||||
await acl.createPermission(accounts[0], vault.$address, await vault.CANCEL_PAYMENT_ROLE(), accounts[0], { $extraGas: 200000 });
|
||||
await acl.createPermission(accounts[0], vault.$address, await vault.CONFIRM_PAYMENT_ROLE(), accounts[0], { $extraGas: 200000 });
|
||||
await acl.grantPermission(escapeHatchCaller, vault.$address, await vault.ESCAPE_HATCH_CALLER_ROLE(), {$extraGas: 200000});
|
||||
await acl.revokePermission(accounts[0], vault.$address, await vault.ESCAPE_HATCH_CALLER_ROLE(), {$extraGas: 200000});
|
||||
const kernel = new Kernel(web3, await liquidPledging.kernel());
|
||||
acl = new ACL(web3, await kernel.acl());
|
||||
await acl.createPermission(
|
||||
accounts[0],
|
||||
vault.$address,
|
||||
await vault.CANCEL_PAYMENT_ROLE(),
|
||||
accounts[0],
|
||||
{ $extraGas: 200000 },
|
||||
);
|
||||
await acl.createPermission(
|
||||
accounts[0],
|
||||
vault.$address,
|
||||
await vault.CONFIRM_PAYMENT_ROLE(),
|
||||
accounts[0],
|
||||
{ $extraGas: 200000 },
|
||||
);
|
||||
await acl.grantPermission(
|
||||
escapeHatchCaller,
|
||||
vault.$address,
|
||||
await vault.ESCAPE_HATCH_CALLER_ROLE(),
|
||||
{ $extraGas: 200000 },
|
||||
);
|
||||
await acl.revokePermission(
|
||||
accounts[0],
|
||||
vault.$address,
|
||||
await vault.ESCAPE_HATCH_CALLER_ROLE(),
|
||||
{ $extraGas: 200000 },
|
||||
);
|
||||
|
||||
await liquidPledging.addGiver('Giver1', '', 0, '0x0', { from: giver1, $extraGas: 100000 });
|
||||
await liquidPledging.addProject('Project1', '', adminProject1, 0, 0, '0x0', { from: adminProject1, $extraGas: 100000 });
|
||||
await liquidPledging.addProject('Project1', '', adminProject1, 0, 0, '0x0', {
|
||||
from: adminProject1,
|
||||
$extraGas: 100000,
|
||||
});
|
||||
|
||||
const nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
assert.equal(nAdmins, 2);
|
||||
|
||||
token = await contracts.StandardToken.new(web3);
|
||||
|
||||
token = await StandardTokenTest.new(web3);
|
||||
await token.mint(giver1, web3.utils.toWei('1000'));
|
||||
await token.approve(liquidPledging.$address, "0xFFFFFFFFFFFFFFFF", {from: giver1});
|
||||
await token.approve(liquidPledging.$address, '0xFFFFFFFFFFFFFFFF', { from: giver1 });
|
||||
});
|
||||
|
||||
it('Should hold funds from liquidPledging', async function () {
|
||||
await liquidPledging.addGiverAndDonate(2, token.$address, 10000, { from: giver1, $extraGas: 100000 });
|
||||
it('Should hold funds from liquidPledging', async function() {
|
||||
await liquidPledging.addGiverAndDonate(2, token.$address, 10000, {
|
||||
from: giver1,
|
||||
$extraGas: 100000,
|
||||
});
|
||||
|
||||
const balance = await token.balanceOf(vault.$address);
|
||||
assert.equal(10000, balance);
|
||||
});
|
||||
|
||||
it('escapeFunds should fail', async function () {
|
||||
it('escapeFunds should fail', async function() {
|
||||
// only vaultOwner can escapeFunds
|
||||
await assertFail(vault.escapeFunds(0x0, 1000, {gas: 4000000}));
|
||||
await assertFail(vault.escapeFunds(0x0, 1000, { gas: 4000000 }));
|
||||
|
||||
// can't send more then the balance
|
||||
await assertFail(vault.escapeFunds(0x0, 11000, { from: vaultOwner, gas: 4000000 }));
|
||||
});
|
||||
|
||||
it('escapeFunds should send funds to escapeHatchDestination', async function () {
|
||||
it('escapeFunds should send funds to escapeHatchDestination', async function() {
|
||||
const preBalance = await token.balanceOf(escapeHatchDestination);
|
||||
|
||||
await assertFail(vault.escapeFunds(0x0, 1000, { from: escapeHatchCaller, gas: 1000000}));
|
||||
await assertFail(vault.escapeFunds(0x0, 1000, { from: escapeHatchCaller, gas: 1000000 }));
|
||||
|
||||
await vault.escapeFunds(token.$address, 1000, { from: escapeHatchCaller, $extraGas: 200000 });
|
||||
|
||||
const vaultBalance = await token.balanceOf(vault.$address);
|
||||
assert.equal(9000, vaultBalance);
|
||||
|
||||
const expected = web3.utils.toBN(preBalance).add(web3.utils.toBN('1000')).toString();
|
||||
const expected = web3.utils
|
||||
.toBN(preBalance)
|
||||
.add(web3.utils.toBN('1000'))
|
||||
.toString();
|
||||
const postBalance = await token.balanceOf(escapeHatchDestination);
|
||||
|
||||
assert.equal(expected, postBalance);
|
||||
|
||||
await token.transfer(vault.$address, 1000, {from: escapeHatchDestination, $extraGas: 200000});
|
||||
await token.transfer(vault.$address, 1000, { from: escapeHatchDestination, $extraGas: 200000 });
|
||||
});
|
||||
|
||||
it('should restrict confirm payment to payments under specified amount', async function () {
|
||||
await liquidPledging.withdraw(2, 300, {from: adminProject1, $extraGas: 200000});
|
||||
await liquidPledging.withdraw(2, 700, {from: adminProject1, $extraGas: 200000});
|
||||
it('should restrict confirm payment to payments under specified amount', async function() {
|
||||
await liquidPledging.withdraw(2, 300, { from: adminProject1, $extraGas: 200000 });
|
||||
await liquidPledging.withdraw(2, 700, { from: adminProject1, $extraGas: 200000 });
|
||||
|
||||
// set permission for 2nd param (p.amount) <= 300
|
||||
await acl.grantPermissionP(restrictedPaymentsConfirmer, vault.$address, await vault.CONFIRM_PAYMENT_ROLE(), ["0x010600000000000000000000000000000000000000000000000000000000012c"], {$extraGas: 200000});
|
||||
await acl.grantPermissionP(
|
||||
restrictedPaymentsConfirmer,
|
||||
vault.$address,
|
||||
await vault.CONFIRM_PAYMENT_ROLE(),
|
||||
['0x010600000000000000000000000000000000000000000000000000000000012c'],
|
||||
{ $extraGas: 200000 },
|
||||
);
|
||||
|
||||
await assertFail(vault.confirmPayment(1, { from: restrictedPaymentsConfirmer, gas: 4000000 }));
|
||||
await vault.confirmPayment(0, { from: restrictedPaymentsConfirmer, $extraGas: 200000 });
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
let bNumber;
|
||||
module.exports = (gasUsage) => (res) => {
|
||||
if (res.includes('Block Number: ')) {
|
||||
bNumber= res.split('Block Number: ')[1];
|
||||
} else if (res.includes('Gas usage: ')) {
|
||||
const g = res.split('Gas usage: ')[1];
|
||||
gasUsage[bNumber] = g;
|
||||
} else if (res.includes('Runtime Error: ')) {
|
||||
// need to subtract 1 b/c gas gets printed before block number, so we are always 1 block behind
|
||||
delete gasUsage[bNumber - 1];
|
||||
}
|
||||
}
|
578
yarn.lock
578
yarn.lock
|
@ -75,6 +75,13 @@
|
|||
lodash "^4.2.0"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@mrmlnc/readdir-enhanced@^2.2.1":
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
|
||||
dependencies:
|
||||
call-me-maybe "^1.0.1"
|
||||
glob-to-regexp "^0.3.0"
|
||||
|
||||
JSONStream@^1.0.4:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea"
|
||||
|
@ -216,10 +223,18 @@ arr-diff@^2.0.0:
|
|||
dependencies:
|
||||
arr-flatten "^1.0.1"
|
||||
|
||||
arr-flatten@^1.0.1:
|
||||
arr-diff@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
|
||||
|
||||
arr-flatten@^1.0.1, arr-flatten@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
|
||||
|
||||
arr-union@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
|
||||
|
||||
array-find-index@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
|
||||
|
@ -253,6 +268,14 @@ array-unique@^0.2.1:
|
|||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
|
||||
|
||||
array-unique@^0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
|
||||
|
||||
arrify@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
||||
|
||||
asap@~2.0.3:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
|
||||
|
@ -287,6 +310,10 @@ assertion-error@^1.0.1:
|
|||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
|
||||
|
||||
assign-symbols@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
|
||||
|
||||
ast-types-flow@0.0.7:
|
||||
version "0.0.7"
|
||||
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
|
||||
|
@ -313,6 +340,10 @@ asynckit@^0.4.0:
|
|||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
|
||||
atob@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.0.tgz#ab2b150e51d7b122b9efc8d7340c06b6c41076bc"
|
||||
|
||||
aws-sign2@~0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
|
||||
|
@ -854,6 +885,18 @@ base64-js@^1.0.2:
|
|||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801"
|
||||
|
||||
base@^0.11.1:
|
||||
version "0.11.2"
|
||||
resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
|
||||
dependencies:
|
||||
cache-base "^1.0.1"
|
||||
class-utils "^0.3.5"
|
||||
component-emitter "^1.2.1"
|
||||
define-property "^1.0.0"
|
||||
isobject "^3.0.1"
|
||||
mixin-deep "^1.2.0"
|
||||
pascalcase "^0.1.1"
|
||||
|
||||
bcrypt-pbkdf@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
|
||||
|
@ -948,6 +991,21 @@ braces@^1.8.2:
|
|||
preserve "^0.2.0"
|
||||
repeat-element "^1.1.2"
|
||||
|
||||
braces@^2.3.1:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
|
||||
dependencies:
|
||||
arr-flatten "^1.1.0"
|
||||
array-unique "^0.3.2"
|
||||
extend-shallow "^2.0.1"
|
||||
fill-range "^4.0.0"
|
||||
isobject "^3.0.1"
|
||||
repeat-element "^1.1.2"
|
||||
snapdragon "^0.8.1"
|
||||
snapdragon-node "^2.0.1"
|
||||
split-string "^3.0.2"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
brorand@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
|
||||
|
@ -1072,6 +1130,24 @@ bytes@3.0.0:
|
|||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
|
||||
|
||||
cache-base@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
|
||||
dependencies:
|
||||
collection-visit "^1.0.0"
|
||||
component-emitter "^1.2.1"
|
||||
get-value "^2.0.6"
|
||||
has-value "^1.0.0"
|
||||
isobject "^3.0.1"
|
||||
set-value "^2.0.0"
|
||||
to-object-path "^0.3.0"
|
||||
union-value "^1.0.0"
|
||||
unset-value "^1.0.0"
|
||||
|
||||
call-me-maybe@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
|
||||
|
||||
camelcase-keys@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
|
||||
|
@ -1181,6 +1257,15 @@ 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-utils@^0.3.5:
|
||||
version "0.3.6"
|
||||
resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
|
||||
dependencies:
|
||||
arr-union "^3.1.0"
|
||||
define-property "^0.2.5"
|
||||
isobject "^3.0.0"
|
||||
static-extend "^0.1.1"
|
||||
|
||||
cli-cursor@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
|
||||
|
@ -1242,6 +1327,13 @@ codecov@^2.3.0:
|
|||
request "2.77.0"
|
||||
urlgrey "0.4.4"
|
||||
|
||||
collection-visit@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
|
||||
dependencies:
|
||||
map-visit "^1.0.0"
|
||||
object-visit "^1.0.0"
|
||||
|
||||
color-convert@^1.9.0:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
|
||||
|
@ -1300,6 +1392,10 @@ compare-func@^1.3.1:
|
|||
array-ify "^1.0.0"
|
||||
dot-prop "^3.0.0"
|
||||
|
||||
component-emitter@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
|
@ -1500,6 +1596,10 @@ cookie@0.3.1:
|
|||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
|
||||
|
||||
copy-descriptor@^0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
|
||||
|
||||
core-js@^1.0.0:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
|
||||
|
@ -1633,7 +1733,7 @@ debug@2.6.8:
|
|||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
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.3.3, debug@^2.6.8, debug@^2.6.9:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||
dependencies:
|
||||
|
@ -1734,6 +1834,25 @@ define-properties@^1.1.2:
|
|||
foreach "^2.0.5"
|
||||
object-keys "^1.0.8"
|
||||
|
||||
define-property@^0.2.5:
|
||||
version "0.2.5"
|
||||
resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
|
||||
dependencies:
|
||||
is-descriptor "^0.1.0"
|
||||
|
||||
define-property@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
|
||||
dependencies:
|
||||
is-descriptor "^1.0.0"
|
||||
|
||||
define-property@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
|
||||
dependencies:
|
||||
is-descriptor "^1.0.2"
|
||||
isobject "^3.0.1"
|
||||
|
||||
delayed-stream@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||
|
@ -1791,6 +1910,13 @@ diffie-hellman@^5.0.0:
|
|||
miller-rabin "^4.0.0"
|
||||
randombytes "^2.0.0"
|
||||
|
||||
dir-glob@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
|
||||
dependencies:
|
||||
arrify "^1.0.1"
|
||||
path-type "^3.0.0"
|
||||
|
||||
doctrine@1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
|
||||
|
@ -2080,13 +2206,7 @@ etag@~1.8.1:
|
|||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
|
||||
|
||||
eth-contract-class@0.0.6:
|
||||
version "0.0.6"
|
||||
resolved "https://registry.yarnpkg.com/eth-contract-class/-/eth-contract-class-0.0.6.tgz#398b8952149cc747cb959fa8b5d480288c7a8bce"
|
||||
dependencies:
|
||||
web3-core-promievent "^1.0.0-beta.21"
|
||||
|
||||
eth-contract-class@^0.0.8:
|
||||
eth-contract-class@0.0.8, eth-contract-class@^0.0.8:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/eth-contract-class/-/eth-contract-class-0.0.8.tgz#0ba4590e6185f156c08b7f44b0581fd8d6b7c5b0"
|
||||
dependencies:
|
||||
|
@ -2171,6 +2291,18 @@ expand-brackets@^0.1.4:
|
|||
dependencies:
|
||||
is-posix-bracket "^0.1.0"
|
||||
|
||||
expand-brackets@^2.1.4:
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
|
||||
dependencies:
|
||||
debug "^2.3.3"
|
||||
define-property "^0.2.5"
|
||||
extend-shallow "^2.0.1"
|
||||
posix-character-classes "^0.1.0"
|
||||
regex-not "^1.0.0"
|
||||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
expand-range@^1.8.1:
|
||||
version "1.8.2"
|
||||
resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
|
||||
|
@ -2212,6 +2344,19 @@ express@^4.14.0:
|
|||
utils-merge "1.0.1"
|
||||
vary "~1.1.2"
|
||||
|
||||
extend-shallow@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
|
||||
dependencies:
|
||||
is-extendable "^0.1.0"
|
||||
|
||||
extend-shallow@^3.0.0, extend-shallow@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
|
||||
dependencies:
|
||||
assign-symbols "^1.0.0"
|
||||
is-extendable "^1.0.1"
|
||||
|
||||
extend@~3.0.0, extend@~3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
|
||||
|
@ -2230,6 +2375,19 @@ extglob@^0.3.1:
|
|||
dependencies:
|
||||
is-extglob "^1.0.0"
|
||||
|
||||
extglob@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
|
||||
dependencies:
|
||||
array-unique "^0.3.2"
|
||||
define-property "^1.0.0"
|
||||
expand-brackets "^2.1.4"
|
||||
extend-shallow "^2.0.1"
|
||||
fragment-cache "^0.2.1"
|
||||
regex-not "^1.0.0"
|
||||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
extsprintf@1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
|
||||
|
@ -2242,6 +2400,16 @@ fast-deep-equal@^1.0.0:
|
|||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
|
||||
|
||||
fast-glob@^2.0.2:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.1.tgz#686c2345be88f3741e174add0be6f2e5b6078889"
|
||||
dependencies:
|
||||
"@mrmlnc/readdir-enhanced" "^2.2.1"
|
||||
glob-parent "^3.1.0"
|
||||
is-glob "^4.0.0"
|
||||
merge2 "^1.2.1"
|
||||
micromatch "^3.1.10"
|
||||
|
||||
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"
|
||||
|
@ -2296,6 +2464,15 @@ fill-range@^2.1.0:
|
|||
repeat-element "^1.1.2"
|
||||
repeat-string "^1.5.2"
|
||||
|
||||
fill-range@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
|
||||
dependencies:
|
||||
extend-shallow "^2.0.1"
|
||||
is-number "^3.0.0"
|
||||
repeat-string "^1.6.1"
|
||||
to-regex-range "^2.1.0"
|
||||
|
||||
finalhandler@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
|
||||
|
@ -2327,7 +2504,7 @@ for-each@^0.3.2:
|
|||
dependencies:
|
||||
is-function "~1.0.0"
|
||||
|
||||
for-in@^1.0.1:
|
||||
for-in@^1.0.1, for-in@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
||||
|
||||
|
@ -2365,6 +2542,12 @@ forwarded@~0.1.2:
|
|||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
|
||||
|
||||
fragment-cache@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
|
||||
dependencies:
|
||||
map-cache "^0.2.2"
|
||||
|
||||
fresh@0.5.2:
|
||||
version "0.5.2"
|
||||
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
|
||||
|
@ -2506,6 +2689,10 @@ get-stream@^3.0.0:
|
|||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
||||
|
||||
get-value@^2.0.3, get-value@^2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
||||
|
||||
getpass@^0.1.1:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
|
||||
|
@ -2571,6 +2758,10 @@ glob-parent@^3.1.0:
|
|||
is-glob "^3.1.0"
|
||||
path-dirname "^1.0.0"
|
||||
|
||||
glob-to-regexp@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
|
||||
|
||||
glob@7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
|
||||
|
@ -2618,6 +2809,18 @@ globby@^6.1.0:
|
|||
pify "^2.0.0"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
globby@^8.0.1:
|
||||
version "8.0.1"
|
||||
resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50"
|
||||
dependencies:
|
||||
array-union "^1.0.1"
|
||||
dir-glob "^2.0.0"
|
||||
fast-glob "^2.0.2"
|
||||
glob "^7.1.2"
|
||||
ignore "^3.3.5"
|
||||
pify "^3.0.0"
|
||||
slash "^1.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"
|
||||
|
@ -2742,6 +2945,33 @@ has-unicode@^2.0.0:
|
|||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
|
||||
|
||||
has-value@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
|
||||
dependencies:
|
||||
get-value "^2.0.3"
|
||||
has-values "^0.1.4"
|
||||
isobject "^2.0.0"
|
||||
|
||||
has-value@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
|
||||
dependencies:
|
||||
get-value "^2.0.6"
|
||||
has-values "^1.0.0"
|
||||
isobject "^3.0.0"
|
||||
|
||||
has-values@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
|
||||
|
||||
has-values@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
|
||||
dependencies:
|
||||
is-number "^3.0.0"
|
||||
kind-of "^4.0.0"
|
||||
|
||||
has@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
|
||||
|
@ -2858,6 +3088,10 @@ ieee754@^1.1.4:
|
|||
version "1.1.8"
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
|
||||
|
||||
ignore@^3.3.5:
|
||||
version "3.3.7"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
|
||||
|
||||
imurmurhash@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
||||
|
@ -2928,6 +3162,18 @@ ipaddr.js@1.6.0:
|
|||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b"
|
||||
|
||||
is-accessor-descriptor@^0.1.6:
|
||||
version "0.1.6"
|
||||
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
|
||||
dependencies:
|
||||
kind-of "^3.0.2"
|
||||
|
||||
is-accessor-descriptor@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
|
||||
dependencies:
|
||||
kind-of "^6.0.0"
|
||||
|
||||
is-arrayish@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
||||
|
@ -2958,10 +3204,38 @@ is-ci@^1.0.10:
|
|||
dependencies:
|
||||
ci-info "^1.0.0"
|
||||
|
||||
is-data-descriptor@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
|
||||
dependencies:
|
||||
kind-of "^3.0.2"
|
||||
|
||||
is-data-descriptor@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
|
||||
dependencies:
|
||||
kind-of "^6.0.0"
|
||||
|
||||
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"
|
||||
|
||||
is-descriptor@^0.1.0:
|
||||
version "0.1.6"
|
||||
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
|
||||
dependencies:
|
||||
is-accessor-descriptor "^0.1.6"
|
||||
is-data-descriptor "^0.1.4"
|
||||
kind-of "^5.0.0"
|
||||
|
||||
is-descriptor@^1.0.0, is-descriptor@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
|
||||
dependencies:
|
||||
is-accessor-descriptor "^1.0.0"
|
||||
is-data-descriptor "^1.0.0"
|
||||
kind-of "^6.0.2"
|
||||
|
||||
is-dotfile@^1.0.0:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
|
||||
|
@ -2972,15 +3246,21 @@ is-equal-shallow@^0.1.3:
|
|||
dependencies:
|
||||
is-primitive "^2.0.0"
|
||||
|
||||
is-extendable@^0.1.1:
|
||||
is-extendable@^0.1.0, is-extendable@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
|
||||
|
||||
is-extendable@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
|
||||
dependencies:
|
||||
is-plain-object "^2.0.4"
|
||||
|
||||
is-extglob@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
|
||||
|
||||
is-extglob@^2.1.0:
|
||||
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"
|
||||
|
||||
|
@ -3016,6 +3296,12 @@ is-glob@^3.1.0:
|
|||
dependencies:
|
||||
is-extglob "^2.1.0"
|
||||
|
||||
is-glob@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
|
||||
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"
|
||||
|
@ -3050,6 +3336,10 @@ is-number@^3.0.0:
|
|||
dependencies:
|
||||
kind-of "^3.0.2"
|
||||
|
||||
is-number@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
|
||||
|
||||
is-obj@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
|
||||
|
@ -3058,10 +3348,22 @@ is-object@^1.0.1:
|
|||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
|
||||
|
||||
is-odd@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24"
|
||||
dependencies:
|
||||
is-number "^4.0.0"
|
||||
|
||||
is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
|
||||
|
||||
is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
|
||||
dependencies:
|
||||
isobject "^3.0.1"
|
||||
|
||||
is-posix-bracket@^0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
|
||||
|
@ -3118,6 +3420,10 @@ is-utf8@^0.2.0:
|
|||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
|
||||
|
||||
is-windows@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||
|
||||
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
|
@ -3132,6 +3438,10 @@ isobject@^2.0.0:
|
|||
dependencies:
|
||||
isarray "1.0.0"
|
||||
|
||||
isobject@^3.0.0, isobject@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
|
||||
|
||||
isomorphic-fetch@^2.1.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
|
||||
|
@ -3260,7 +3570,7 @@ keccakjs@^0.2.1:
|
|||
browserify-sha3 "^0.0.1"
|
||||
sha3 "^1.1.0"
|
||||
|
||||
kind-of@^3.0.2:
|
||||
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
|
||||
version "3.2.2"
|
||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
|
||||
dependencies:
|
||||
|
@ -3272,6 +3582,14 @@ kind-of@^4.0.0:
|
|||
dependencies:
|
||||
is-buffer "^1.1.5"
|
||||
|
||||
kind-of@^5.0.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
|
||||
|
||||
kind-of@^6.0.0, kind-of@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
|
||||
|
||||
klaw@^1.0.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
|
||||
|
@ -3489,10 +3807,20 @@ make-dir@^1.0.0:
|
|||
dependencies:
|
||||
pify "^3.0.0"
|
||||
|
||||
map-cache@^0.2.2:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
|
||||
|
||||
map-obj@^1.0.0, map-obj@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
|
||||
|
||||
map-visit@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
|
||||
dependencies:
|
||||
object-visit "^1.0.0"
|
||||
|
||||
md5.js@^1.3.4:
|
||||
version "1.3.4"
|
||||
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
|
||||
|
@ -3540,6 +3868,10 @@ merge-descriptors@1.0.1:
|
|||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
|
||||
|
||||
merge2@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.1.tgz#271d2516ff52d4af7f7b710b8bf3e16e183fef66"
|
||||
|
||||
methods@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||
|
@ -3562,6 +3894,24 @@ micromatch@^2.1.5:
|
|||
parse-glob "^3.0.4"
|
||||
regex-cache "^0.4.2"
|
||||
|
||||
micromatch@^3.1.10:
|
||||
version "3.1.10"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
|
||||
dependencies:
|
||||
arr-diff "^4.0.0"
|
||||
array-unique "^0.3.2"
|
||||
braces "^2.3.1"
|
||||
define-property "^2.0.2"
|
||||
extend-shallow "^3.0.2"
|
||||
extglob "^2.0.4"
|
||||
fragment-cache "^0.2.1"
|
||||
kind-of "^6.0.2"
|
||||
nanomatch "^1.2.9"
|
||||
object.pick "^1.3.0"
|
||||
regex-not "^1.0.0"
|
||||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.2"
|
||||
|
||||
miller-rabin@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
|
||||
|
@ -3627,6 +3977,13 @@ minimist@~0.0.1:
|
|||
version "0.0.10"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
|
||||
|
||||
mixin-deep@^1.2.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
|
||||
dependencies:
|
||||
for-in "^1.0.2"
|
||||
is-extendable "^1.0.1"
|
||||
|
||||
mkdirp-promise@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1"
|
||||
|
@ -3711,6 +4068,23 @@ 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"
|
||||
|
||||
nanomatch@^1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2"
|
||||
dependencies:
|
||||
arr-diff "^4.0.0"
|
||||
array-unique "^0.3.2"
|
||||
define-property "^2.0.2"
|
||||
extend-shallow "^3.0.2"
|
||||
fragment-cache "^0.2.1"
|
||||
is-odd "^2.0.0"
|
||||
is-windows "^1.0.2"
|
||||
kind-of "^6.0.2"
|
||||
object.pick "^1.3.0"
|
||||
regex-not "^1.0.0"
|
||||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
negotiator@0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
|
||||
|
@ -3826,10 +4200,24 @@ object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1
|
|||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
|
||||
object-copy@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
|
||||
dependencies:
|
||||
copy-descriptor "^0.1.0"
|
||||
define-property "^0.2.5"
|
||||
kind-of "^3.0.3"
|
||||
|
||||
object-keys@^1.0.8:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
|
||||
|
||||
object-visit@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
|
||||
dependencies:
|
||||
isobject "^3.0.0"
|
||||
|
||||
object.omit@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
|
||||
|
@ -3837,6 +4225,12 @@ object.omit@^2.0.0:
|
|||
for-own "^0.1.4"
|
||||
is-extendable "^0.1.1"
|
||||
|
||||
object.pick@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
|
||||
dependencies:
|
||||
isobject "^3.0.1"
|
||||
|
||||
oboe@2.1.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.3.tgz#2b4865dbd46be81225713f4e9bfe4bcf4f680a4f"
|
||||
|
@ -3999,6 +4393,10 @@ parseurl@~1.3.2:
|
|||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
|
||||
|
||||
pascalcase@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
|
||||
|
||||
path-browserify@0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
|
||||
|
@ -4107,6 +4505,10 @@ pkg-dir@^1.0.0:
|
|||
dependencies:
|
||||
find-up "^1.0.0"
|
||||
|
||||
posix-character-classes@^0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
||||
|
||||
prepend-http@^1.0.1:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
|
||||
|
@ -4358,6 +4760,13 @@ regex-cache@^0.4.2:
|
|||
dependencies:
|
||||
is-equal-shallow "^0.1.3"
|
||||
|
||||
regex-not@^1.0.0, regex-not@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
|
||||
dependencies:
|
||||
extend-shallow "^3.0.2"
|
||||
safe-regex "^1.1.0"
|
||||
|
||||
regexpu-core@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
|
||||
|
@ -4397,7 +4806,7 @@ repeat-element@^1.1.2:
|
|||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
|
||||
|
||||
repeat-string@^1.5.2:
|
||||
repeat-string@^1.5.2, repeat-string@^1.6.1:
|
||||
version "1.6.1"
|
||||
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
|
||||
|
||||
|
@ -4498,6 +4907,10 @@ 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"
|
||||
|
||||
resolve-url@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
||||
|
||||
resolve@^1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
|
||||
|
@ -4511,6 +4924,10 @@ restore-cursor@^2.0.0:
|
|||
onetime "^2.0.0"
|
||||
signal-exit "^3.0.2"
|
||||
|
||||
ret@~0.1.10:
|
||||
version "0.1.15"
|
||||
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
|
||||
|
||||
right-align@^0.1.1:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
|
||||
|
@ -4550,6 +4967,12 @@ safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s
|
|||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
|
||||
|
||||
safe-regex@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
|
||||
dependencies:
|
||||
ret "~0.1.10"
|
||||
|
||||
scrypt.js@0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.2.0.tgz#af8d1465b71e9990110bedfc593b9479e03a8ada"
|
||||
|
@ -4624,6 +5047,24 @@ 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"
|
||||
|
||||
set-value@^0.4.3:
|
||||
version "0.4.3"
|
||||
resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
|
||||
dependencies:
|
||||
extend-shallow "^2.0.1"
|
||||
is-extendable "^0.1.1"
|
||||
is-plain-object "^2.0.1"
|
||||
to-object-path "^0.3.0"
|
||||
|
||||
set-value@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
|
||||
dependencies:
|
||||
extend-shallow "^2.0.1"
|
||||
is-extendable "^0.1.1"
|
||||
is-plain-object "^2.0.3"
|
||||
split-string "^3.0.1"
|
||||
|
||||
setimmediate@^1.0.4, setimmediate@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
|
||||
|
@ -4679,6 +5120,33 @@ slash@^1.0.0:
|
|||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
|
||||
|
||||
snapdragon-node@^2.0.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
|
||||
dependencies:
|
||||
define-property "^1.0.0"
|
||||
isobject "^3.0.0"
|
||||
snapdragon-util "^3.0.1"
|
||||
|
||||
snapdragon-util@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
|
||||
dependencies:
|
||||
kind-of "^3.2.0"
|
||||
|
||||
snapdragon@^0.8.1:
|
||||
version "0.8.2"
|
||||
resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
|
||||
dependencies:
|
||||
base "^0.11.1"
|
||||
debug "^2.2.0"
|
||||
define-property "^0.2.5"
|
||||
extend-shallow "^2.0.1"
|
||||
map-cache "^0.2.2"
|
||||
source-map "^0.5.6"
|
||||
source-map-resolve "^0.5.0"
|
||||
use "^3.1.0"
|
||||
|
||||
sntp@1.x.x:
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
|
||||
|
@ -4709,15 +5177,16 @@ solc@^0.4.19:
|
|||
semver "^5.3.0"
|
||||
yargs "^4.7.1"
|
||||
|
||||
"solcpiler@https://github.com/perissology/solcpiler.git#9862d1f":
|
||||
"solcpiler@https://github.com/perissology/solcpiler.git#6393e66":
|
||||
version "0.0.18"
|
||||
resolved "https://github.com/perissology/solcpiler.git#9862d1f09a402f93b3ba159b6fbca0d5f6c5e93b"
|
||||
resolved "https://github.com/perissology/solcpiler.git#6393e6639e74946a855e2d2c4f89e9a67b8eda71"
|
||||
dependencies:
|
||||
app-root-path "^2.0.1"
|
||||
async "^2.5.0"
|
||||
eth-contract-class "^0.0.8"
|
||||
glob "^7.1.2"
|
||||
globby "^8.0.1"
|
||||
lodash "^4.17.4"
|
||||
mkdirp "^0.5.1"
|
||||
solc "^0.4.19"
|
||||
web3-utils "^1.0.0-beta.30"
|
||||
yargs "^8.0.2"
|
||||
|
@ -4752,6 +5221,16 @@ source-list-map@^2.0.0:
|
|||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
|
||||
|
||||
source-map-resolve@^0.5.0:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a"
|
||||
dependencies:
|
||||
atob "^2.0.0"
|
||||
decode-uri-component "^0.2.0"
|
||||
resolve-url "^0.2.1"
|
||||
source-map-url "^0.4.0"
|
||||
urix "^0.1.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"
|
||||
|
@ -4764,6 +5243,10 @@ source-map-support@^0.5.0:
|
|||
dependencies:
|
||||
source-map "^0.6.0"
|
||||
|
||||
source-map-url@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
|
||||
|
||||
source-map@^0.4.4:
|
||||
version "0.4.4"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
|
||||
|
@ -4792,6 +5275,12 @@ spdx-license-ids@^1.0.2:
|
|||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
|
||||
|
||||
split-string@^3.0.1, split-string@^3.0.2:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
|
||||
dependencies:
|
||||
extend-shallow "^3.0.0"
|
||||
|
||||
split2@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493"
|
||||
|
@ -4818,6 +5307,13 @@ sshpk@^1.7.0:
|
|||
jsbn "~0.1.0"
|
||||
tweetnacl "~0.14.0"
|
||||
|
||||
static-extend@^0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
|
||||
dependencies:
|
||||
define-property "^0.2.5"
|
||||
object-copy "^0.1.0"
|
||||
|
||||
"statuses@>= 1.3.1 < 2":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
|
||||
|
@ -5097,6 +5593,28 @@ 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"
|
||||
|
||||
to-object-path@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
|
||||
dependencies:
|
||||
kind-of "^3.0.2"
|
||||
|
||||
to-regex-range@^2.1.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
|
||||
dependencies:
|
||||
is-number "^3.0.0"
|
||||
repeat-string "^1.6.1"
|
||||
|
||||
to-regex@^3.0.1, to-regex@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
|
||||
dependencies:
|
||||
define-property "^2.0.2"
|
||||
extend-shallow "^3.0.2"
|
||||
regex-not "^1.0.2"
|
||||
safe-regex "^1.1.0"
|
||||
|
||||
tough-cookie@~2.3.0, tough-cookie@~2.3.3:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
|
||||
|
@ -5202,6 +5720,15 @@ underscore@1.8.3:
|
|||
version "1.8.3"
|
||||
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
|
||||
|
||||
union-value@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
|
||||
dependencies:
|
||||
arr-union "^3.1.0"
|
||||
get-value "^2.0.6"
|
||||
is-extendable "^0.1.1"
|
||||
set-value "^0.4.3"
|
||||
|
||||
universalify@^0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7"
|
||||
|
@ -5210,10 +5737,21 @@ unpipe@1.0.0, unpipe@~1.0.0:
|
|||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
||||
|
||||
unset-value@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
|
||||
dependencies:
|
||||
has-value "^0.3.1"
|
||||
isobject "^3.0.0"
|
||||
|
||||
unzip-response@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
|
||||
|
||||
urix@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
|
||||
|
||||
url-parse-lax@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
|
||||
|
@ -5239,6 +5777,12 @@ urlgrey@0.4.4:
|
|||
version "0.4.4"
|
||||
resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f"
|
||||
|
||||
use@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544"
|
||||
dependencies:
|
||||
kind-of "^6.0.2"
|
||||
|
||||
user-home@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
|
||||
|
|
Loading…
Reference in New Issue