diff --git a/package.json b/package.json index 8544cdcfe..7b568f75a 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "follow-redirects": "1.5.7", "fs-extra": "7.0.0", "fuzzy": "0.1.3", - "ganache-cli": "6.1.8", + "ganache-cli": "6.2.3", "glob": "7.1.3", "globule": "1.2.1", "handlebars": "4.0.12", @@ -153,6 +153,7 @@ "shelljs": "0.5.3", "simples": "0.8.8", "solc": "0.5.0", + "solidity-parser-antlr": "0.3.2", "source-map-support": "0.5.9", "stream-json": "1.1.3", "string-replace-async": "1.2.1", @@ -191,6 +192,7 @@ "@babel/cli": "7.1.2", "@babel/plugin-proposal-optional-chaining": "7.0.0", "@types/async": "2.0.50", + "@types/globule": "1.1.3", "@types/handlebars": "4.0.39", "@types/i18n": "0.8.3", "@types/node": "10.11.7", diff --git a/src/lib/constants.json b/src/lib/constants.json index bedc3c0dd..ebe87973d 100644 --- a/src/lib/constants.json +++ b/src/lib/constants.json @@ -56,7 +56,8 @@ "restart": "restart" }, "tests": { - "gasLimit": 6000000 + "gasLimit": 6000000, + "coverageGasLimit": 4503599627370495 }, "codeGenerator": { "gasLimit": 6000000 diff --git a/src/lib/core/fs.js b/src/lib/core/fs.js index 27ee80edb..d17161f7c 100644 --- a/src/lib/core/fs.js +++ b/src/lib/core/fs.js @@ -120,6 +120,10 @@ function ensureFileSync() { return restrictPath(fs.ensureFileSync, fs.ensureFileSync, 1, arguments); } +function ensureDirSync() { + return restrictPath(fs.ensureDirSync, fs.ensureDirSync, 1, arguments); +} + function access() { return restrictPath(fs.access, fs.access, 1, arguments); } @@ -195,6 +199,7 @@ module.exports = { embarkPath, existsSync, ensureFileSync, + ensureDirSync, mkdirp, mkdirpSync, move, diff --git a/src/lib/modules/blockchain_connector/index.js b/src/lib/modules/blockchain_connector/index.js index 6b60f536e..9445c44be 100644 --- a/src/lib/modules/blockchain_connector/index.js +++ b/src/lib/modules/blockchain_connector/index.js @@ -105,7 +105,8 @@ class BlockchainConnector { if (type === 'vm') { const sim = self._getSimulator(); - self.provider = sim.provider(self.config.contractsConfig.deployment); + const options = Object.assign({}, self.config.contractsConfig.deployment, {gasPrice: "0x01", gasLimit: "0xfffffffffffff"}); + self.provider = sim.provider(options); if (coverage) { // Here we patch the sendAsync method on the provider. The goal behind this is to force pure/constant/view calls to become @@ -124,7 +125,7 @@ class BlockchainConnector { return self.provider.realSendAsync(payload, cb); } self.events.request('reporter:toggleGasListener'); - let newParams = Object.assign({}, payload.params[0], {gasPrice: '0x77359400'}); + let newParams = Object.assign({}, payload.params[0]); let newPayload = { id: payload.id + 1, method: 'eth_sendTransaction', diff --git a/src/lib/modules/coverage/contractEnhanced.ts b/src/lib/modules/coverage/contractEnhanced.ts new file mode 100644 index 000000000..cd315f905 --- /dev/null +++ b/src/lib/modules/coverage/contractEnhanced.ts @@ -0,0 +1,143 @@ +import * as path from "path"; +import parser, { Location } from "solidity-parser-antlr"; +import { EventLog } from "web3/types"; + +import { decrypt } from "./eventId"; +import { Injector } from "./injector"; +import { Instrumenter } from "./instrumenter"; +import { InstrumentWalker } from "./instrumentWalker"; +import { coverageContractsPath } from "./path"; +import { Suppressor } from "./suppressor"; +import { BranchType, Coverage } from "./types"; + +const fs = require("../../core/fs"); + +enum EventEnum { + statement = "__StatementCoverage", + branch = "__BranchCoverage", + function = "__FunctionCoverage", +} + +let id = 0; +function nextId() { + id++; + return id; +} + +export class ContractEnhanced { + public id: number; + public coverage: Coverage; + public originalSource: string; + public source: string; + private ast: parser.ASTNode; + private coverageFilepath: string; + + constructor(public filepath: string) { + this.id = nextId(); + this.source = fs.readFileSync(filepath, "utf-8"); + this.originalSource = this.source; + + this.coverageFilepath = path.join(coverageContractsPath(), this.filepath); + + this.coverage = { + b: {}, + branchMap: {}, + code: this.originalSource, + f: {}, + fnMap: {}, + l: {}, + path: filepath, + s: {}, + statementMap: {}, + }; + this.ast = parser.parse(this.source, {loc: true, range: true}); + } + + public instrument() { + new Suppressor(this).process(); + const instrumenter = new Instrumenter(this); + const instrumentWalker = new InstrumentWalker(instrumenter); + instrumentWalker.walk(this.ast); + + const injector = new Injector(this); + instrumenter.getInjectionPoints().forEach(injector.process.bind(injector)); + } + + public save() { + fs.ensureFileSync(this.coverageFilepath); + fs.writeFileSync(this.coverageFilepath, this.source); + } + + public updateCoverage(events: EventLog[]) { + events.filter(this.filterCoverageEvent).forEach((event) => { + const value = parseInt(event.returnValues[0], 10); + const {contractId, injectionPointId, locationIdx} = decrypt(value); + + if (contractId !== this.id) { + return; + } + + switch (event.event) { + case "__StatementCoverage": { + this.coverage.s[injectionPointId] += 1; + const statement = this.coverage.statementMap[injectionPointId]; + this.coverage.l[statement.start.line] += 1; + break; + } + case "__FunctionCoverage": { + this.coverage.f[injectionPointId] += 1; + const fn = this.coverage.fnMap[injectionPointId]; + this.coverage.l[fn.line] += 1; + break; + } + case "__BranchCoverage": { + this.coverage.b[injectionPointId][locationIdx] += 1; + break; + } + } + }); + } + + public addStatement(location: Location) { + const coverageId = this.getNewCoverageId(this.coverage.statementMap); + this.coverage.statementMap[coverageId] = location; + this.coverage.s[coverageId] = 0; + this.coverage.l[location.start.line] = 0; + return coverageId; + } + + public addBranch(line: number, type: BranchType, locations: Location[]) { + const coverageId = this.getNewCoverageId(this.coverage.branchMap); + this.coverage.branchMap[coverageId] = { + line, + locations, + type, + }; + this.coverage.b[coverageId] = locations.map(() => 0); + this.coverage.l[line] = 0; + return coverageId; + } + + public addFunction(location: Location, name: string) { + const coverageId = this.getNewCoverageId(this.coverage.fnMap); + const line = location.start.line; + this.coverage.fnMap[coverageId] = { + line, + loc: location, + name, + }; + this.coverage.f[coverageId] = 0; + this.coverage.l[line] = 0; + return coverageId; + } + + private getNewCoverageId(object: {[key: string]: any}) { + const lastId = Object.keys(object).map(Number).sort((a, b) => b - a)[0] || 0; + return lastId + 1; + } + + private filterCoverageEvent(event: EventLog) { + return [EventEnum.function, EventEnum.branch, EventEnum.statement].includes(event.event as EventEnum); + } + +} diff --git a/src/lib/modules/coverage/contractSource.js b/src/lib/modules/coverage/contractSource.js deleted file mode 100644 index 50c8d4468..000000000 --- a/src/lib/modules/coverage/contractSource.js +++ /dev/null @@ -1,380 +0,0 @@ -const SourceMap = require('./sourceMap'); - -class ContractSource { - constructor(file, path, body) { - this.file = file; - this.path = path; - this.body = body; - - this.lineLengths = body.split("\n").map(line => line.length); - this.lineCount = this.lineLengths.length; - - this.lineOffsets = this.lineLengths.reduce((sum, _elt, i) => { - sum[i] = (i === 0) ? 0 : this.lineLengths[i-1] + sum[i-1] + 1; - return sum; - }, []); - - this.contracts = {}; - } - - sourceMapToLocations(sourceMap) { - const [offset, length, ..._] = sourceMap.split(":").map((val) => { - return parseInt(val, 10); - }); - - const locations = {}; - - for(let i = 0; i < this.lineCount; i++) { - if(this.lineOffsets[i+1] <= offset) continue; - - locations.start = {line: i, column: offset - this.lineOffsets[i]}; - break; - } - - for(let i = locations.start.line; i < this.lineCount; i++) { - if(this.lineOffsets[i+1] <= offset + length) continue; - - locations.end = {line: i, column: ((offset + length) - this.lineOffsets[i])}; - break; - } - - // Ensure we return an "end" as a safeguard if the marker ends up to be - // or surpass the offset for last character. - if(!locations.end) { - const lastLine = this.lineCount - 1; - locations.end = {line: lastLine, column: this.lineLengths[lastLine]}; - } - - // Istanbul likes lines to be 1-indexed, so we'll increment here before returning. - locations.start.line++; - locations.end.line++; - return locations; - } - - parseSolcOutput(source, contracts) { - this.id = source.id; - this.ast = source.ast; - this.contractBytecode = {}; - this.contractDeployedBytecode = {}; - - for(const contractName in contracts) { - this.contractBytecode[contractName] = {}; - this.contractDeployedBytecode[contractName] = {}; - - var contract = contracts[contractName]; - var opcodes = contract.evm.bytecode.opcodes.trim().split(' '); - var deployedOpcodes = contract.evm.deployedBytecode.opcodes.trim().split(' '); - var sourceMaps = contract.evm.bytecode.sourceMap.split(';'); - var deployedSourceMaps = contract.evm.deployedBytecode.sourceMap.split(';'); - - this._buildContractBytecode(contractName, this.contractBytecode, opcodes, sourceMaps); - this._buildContractBytecode(contractName, this.contractDeployedBytecode, deployedOpcodes, deployedSourceMaps); - } - } - - isInterface() { - return this.contractBytecode !== undefined && - Object.values(this.contractBytecode).every((contractBytecode) => { return (Object.values(contractBytecode).length <= 1); }); - } - - /*eslint complexity: ["error", 50]*/ - generateCodeCoverage(trace) { - if(!this.ast || !this.contractBytecode) throw new Error('Error generating coverage: solc output was not assigned'); - - const coverage = { - code: this.body.trim().split("\n"), - l: {}, - path: this.path, - s: {}, - b: {}, - f: {}, - fnMap: {}, - statementMap: {}, - branchMap: {} - }; - - let nodesRequiringVisiting = [this.ast]; - const sourceMapToNodeType = {}; - - do { - const node = nodesRequiringVisiting.pop(); - - if(!node) continue; - - let children = []; - let markLocations = []; - let location; - switch(node.nodeType) { - case 'Assignment': - case 'EventDefinition': - case 'ImportDirective': - case 'Literal': - case 'PlaceholderStatement': - case 'PragmaDirective': - case 'StructDefinition': - case 'VariableDeclaration': - case 'UsingForDirective': - case 'EnumDefinition': - // We don't need to do anything with these. Just carry on. - break; - - case 'IfStatement': { - location = this.sourceMapToLocations(node.src); - const trueBranchLocation = this.sourceMapToLocations(node.trueBody.src); - - const declarationSourceMap = new SourceMap(node.src).subtract(new SourceMap(node.trueBody.src)); - const declarationLocation = this.sourceMapToLocations(declarationSourceMap.toString()); - - let falseBranchLocation; - if(node.falseBody) { - falseBranchLocation = this.sourceMapToLocations(node.falseBody.src); - } else { - falseBranchLocation = trueBranchLocation; - } - - coverage.b[node.id] = [0,0]; - coverage.branchMap[node.id] = { - type: 'if', - locations: [trueBranchLocation, falseBranchLocation], - line: location.start.line - }; - - markLocations = [declarationLocation]; - children = [node.condition]; - - const trueExpression = (node.trueBody && node.trueBody.statements && node.trueBody.statements[0]) || node.trueBody; - if(trueExpression) { - children = children.concat(trueExpression); - trueExpression._parent = {type: 'b', id: node.id, idx: 0}; - } - - const falseExpression = (node.falseBody && node.falseBody.statements && node.falseBody.statements[0]) || node.falseBody; - if(falseExpression) { - children = children.concat(falseExpression); - falseExpression._parent = {type: 'b', id: node.id, idx: 1}; - } - - sourceMapToNodeType[node.src] = [{type: 'b', id: node.id, body: {loc: location}}]; - break; - } - - case 'EmitStatement': { - children = [node.eventCall]; - break; - } - - case 'BinaryOperation': - case 'ExpressionStatement': - case 'FunctionCall': - case 'Identifier': - case 'Return': - case 'UnaryOperation': - coverage.s[node.id] = 0; - - location = this.sourceMapToLocations(node.src); - coverage.statementMap[node.id] = location; - - if(!sourceMapToNodeType[node.src]) sourceMapToNodeType[node.src] = []; - sourceMapToNodeType[node.src].push({ - type: 's', - id: node.id, - body: {loc: coverage.statementMap[node.id]}, - parent: node._parent - }); - - markLocations = [location]; - break; - - case 'ContractDefinition': - case 'SourceUnit': - children = node.nodes; - break; - - case 'ModifierDefinition': - case 'FunctionDefinition': { - // Istanbul only wants the function definition, not the body, so we're - // going to do some fun math here. - const functionSourceMap = new SourceMap(node.src); - const functionParametersSourceMap = new SourceMap(node.parameters.src); - - const functionDefinitionSourceMap = new SourceMap( - functionSourceMap.offset, - (functionParametersSourceMap.offset + functionParametersSourceMap.length) - functionSourceMap.offset - ).toString(); - - const fnName = node.isConstructor ? "(constructor)" : node.name; - location = this.sourceMapToLocations(functionDefinitionSourceMap); - - coverage.f[node.id] = 0; - coverage.fnMap[node.id] = { - name: fnName, - line: location.start.line, - loc: location - }; - - // Record function positions. - sourceMapToNodeType[node.src] = [{type: 'f', id: node.id, body: coverage.fnMap[node.id]}]; - - if(node.body) children = node.body.statements; - markLocations = [location]; - break; - } - case 'WhileStatement': - case 'ForStatement': { - // For statements will be a bit of a special case. We want to count the body - // iterations but we only want to count the for loop being hit once. Because - // of this, we cover the initialization on the node. - const sourceMap = new SourceMap(node.src); - const bodySourceMap = new SourceMap(node.body.src); - const forLoopDeclaration = sourceMap.subtract(bodySourceMap).toString(); - - location = this.sourceMapToLocations(forLoopDeclaration); - - const markExpression = node.initializationExpression || node.loopExpression || node.condition; - const expressionLocation = this.sourceMapToLocations(markExpression.src); - - if(!sourceMapToNodeType[markExpression.src]) sourceMapToNodeType[markExpression.src] = []; - sourceMapToNodeType[markExpression.src].push({type: 's', id: node.id, body: {loc: location}}); - markLocations = [expressionLocation]; - - coverage.s[node.id] = 0; - coverage.statementMap[node.id] = location; - - children = node.body.statements; - break; - } - - case 'VariableDeclarationStatement': { - location = this.sourceMapToLocations(node.src); - - coverage.s[node.id] = 0; - coverage.statementMap[node.id] = location; - markLocations = [location]; - - if(!sourceMapToNodeType[node.src]) sourceMapToNodeType[node.src] = []; - sourceMapToNodeType[node.src].push({type: 's', id: node.id, body: {loc: location}, foo: 'bar'}); - - break; - } - - default: - break; - } - - nodesRequiringVisiting = nodesRequiringVisiting.concat(children); - - markLocations.forEach((location) => { - for(var i = location.start.line; i <= location.end.line; i++) { - coverage.l[i] = 0; - } - }); - - } while(nodesRequiringVisiting.length > 0); - - this._generateCodeCoverageForBytecode(trace, coverage, sourceMapToNodeType, this.contractBytecode); - this._generateCodeCoverageForBytecode(trace, coverage, sourceMapToNodeType, this.contractDeployedBytecode); - - return coverage; - } - - _generateCodeCoverageForBytecode(trace, coverage, sourceMapToNodeType, contractBytecode) { - let contractMatches = true; - for(const contractName in contractBytecode) { - const bytecode = contractBytecode[contractName]; - - // Try to match the contract to the bytecode. If it doesn't, - // then we bail. - - contractMatches = trace.structLogs.filter((step) => bytecode[step.pc]); - - if(!contractMatches) continue; - contractMatches.forEach((step) => { - step = bytecode[step.pc]; - - if(!step.sourceMap || step.sourceMap === '' || step.sourceMap === SourceMap.empty()) return; - - const sourceMapString = step.sourceMap.toString(this.id); - - const [offsetToFind, lengthToFind, _] = sourceMapString.split(":"); - const nodes = this._findNodes(offsetToFind, lengthToFind, sourceMapToNodeType); - - if(!nodes) return; - - nodes.forEach((node) => { - // Skip duplicate function reports by only reporting when there is a jump. - if(node.type === 'f' && step.jump) return; - - if(node.type !== 'b' && node.body && node.body.loc) { - for(let line = node.body.loc.start.line; line <= node.body.loc.end.line; line++) { - coverage.l[line]++; - } - } - - if(node.type !== 'b') coverage[node.type][node.id]++; - - if(!node.parent) return; - - switch(node.parent.type) { - case 'b': - coverage.b[node.parent.id][node.parent.idx]++; - break; - - default: - // do nothing - } - }); - }); - } - } - - _findNodes(offsetToFind, _lengthToFind, sourceMapToNodeType) { - let nodes; - Object.keys(sourceMapToNodeType).some(sourceMap => { - const [offset, _length, _] = sourceMap.split(":"); - if (offsetToFind === offset) { - nodes = sourceMapToNodeType[sourceMap]; - return true; - } - }); - return nodes; - } - - _buildContractBytecode(contractName, contractBytecode, opcodes, sourceMaps) { - const bytecodeMapping = contractBytecode[contractName]; - let bytecodeIdx = 0; - let pc = 0; - let instructions = 0; - let previousSourceMap = null; - - do { - let sourceMap; - const sourceMapArgs = sourceMaps[instructions]; - if(previousSourceMap === null) { - sourceMap = new SourceMap(sourceMapArgs); - } else { - sourceMap = previousSourceMap.createRelativeTo(sourceMapArgs); - } - - const instruction = opcodes[bytecodeIdx]; - const length = this._instructionLength(instruction); - bytecodeMapping[pc] = { - instruction: instruction, - sourceMap: sourceMap, - jump: sourceMap.jump, - seen: false - }; - - pc += length; - instructions++; - bytecodeIdx += (length > 1) ? 2 : 1; - previousSourceMap = sourceMap; - } while(bytecodeIdx < opcodes.length); - } - - _instructionLength(instruction) { - if(instruction.indexOf('PUSH') === -1) return 1; - return parseInt(instruction.match(/PUSH(\d+)/m)[1], 10) + 1; - } -} - -module.exports = ContractSource; diff --git a/src/lib/modules/coverage/contractSources.js b/src/lib/modules/coverage/contractSources.js deleted file mode 100644 index 3e1aca648..000000000 --- a/src/lib/modules/coverage/contractSources.js +++ /dev/null @@ -1,101 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const ContractSource = require('./contractSource'); - -class ContractSources { - constructor(files) { - this.files = {}; - - switch(Object.prototype.toString.call(files)) { - case '[object Object]': - Object.keys(files).forEach((file) => { this.addFile(file, files[file]); }); - break; - - case '[object String]': - // No 'break' statement here on purpose, as it shares - // the logic below. - files = [files]; - // falls through - - case '[object Array]': - files.forEach((file) => { - const content = fs.readFileSync(file).toString(); - this.addFile(file, content); - }); - break; - - default: - throw new Error(`Don't know how to initialize with ${Object.prototype.toString.call(files)}`); - } - } - - addFile(fullPath, contents) { - const basename = path.basename(fullPath); - if(this.files[basename]) return; - - this.files[basename] = new ContractSource(basename, fullPath, contents); - } - - toSolcInputs() { - const inputs = {}; - - for(const filename in this.files) { - inputs[filename] = {content: this.files[filename].body}; - } - - return inputs; - } - - parseSolcOutput(output) { - for(const filename in output.contracts) { - const contractSource = this.files[path.basename(filename)]; - if(!contractSource) continue; - - contractSource.parseSolcOutput(output.sources[filename], output.contracts[filename]); - } - } - - generateCodeCoverage(trace) { - const coverageReport = {}; - - for(const filename in this.files) { - if(this.files[filename].isInterface()) continue; - coverageReport[filename] = this.files[filename].generateCodeCoverage(trace); - } - - if(!this.coverageReport) { - this.coverageReport = coverageReport; - return this.coverageReport; - } - - // We already have a previous coverage report, so we're merging results here. - Object.keys(coverageReport).forEach((file) => { - if(!this.coverageReport[file]) { - this.coverageReport[file] = coverageReport[file]; - return; - } - - // Increment counters for statements, functions and lines - ['s', 'f', 'l'].forEach((countType) => { - Object.keys(coverageReport[file][countType]).forEach((id) => { - this.coverageReport[file][countType][id] += coverageReport[file][countType][id]; - }); - }); - - // Branch counts are tracked in a different manner so we'll do these now - Object.keys(coverageReport[file].b).forEach((id) => { - // FIXME in solc-tests, this is sometimes empty - if (!this.coverageReport[file].b[id] || !this.coverageReport[file].b[id].length) { - return; - } - this.coverageReport[file].b[id][0] += coverageReport[file].b[id][0]; - this.coverageReport[file].b[id][1] += coverageReport[file].b[id][1]; - }); - }); - - return this.coverageReport; - } -} - -module.exports = ContractSources; diff --git a/src/lib/modules/coverage/eventId.ts b/src/lib/modules/coverage/eventId.ts new file mode 100644 index 000000000..8eb578458 --- /dev/null +++ b/src/lib/modules/coverage/eventId.ts @@ -0,0 +1,33 @@ +const CONTRACT_ID_FACTOR = 100000000; +const INJECTION_POINT_ID_FACTOR = 10000; + +/** + * Convert the 3 params as uint32 where the first 2 digits are for contractsId, + * the next 3 digit are for injectionPoint id and the rest if for the locationIds + * + * @export + * @param {number} contractId + * @param {number} injectionPointId + * @param {number} [locationIdx] + * @returns a number representing the 3 params as uint32 + */ +export function encrypt(contractId: number, injectionPointId: number, locationIdx?: number) { + return contractId * CONTRACT_ID_FACTOR + injectionPointId * INJECTION_POINT_ID_FACTOR + (locationIdx || 0); +} + +/** + * Explore the uint32 into contractId, injectionPointId and locationIds where + * the first 2 digits are for contractsId, + * the next 3 digit are for injectionPoint id and the rest if for the locationIds + * + * @export + * @param {number} value + * @returns + */ +export function decrypt(value: number) { + const contractId = Math.floor(value / CONTRACT_ID_FACTOR); + const injectionPointId = Math.floor(value / INJECTION_POINT_ID_FACTOR) - contractId * INJECTION_POINT_ID_FACTOR; + const locationIdx = value - contractId * CONTRACT_ID_FACTOR - injectionPointId * INJECTION_POINT_ID_FACTOR; + + return {contractId, injectionPointId, locationIdx}; +} diff --git a/src/lib/modules/coverage/index.js b/src/lib/modules/coverage/index.js deleted file mode 100644 index 143932a4e..000000000 --- a/src/lib/modules/coverage/index.js +++ /dev/null @@ -1,72 +0,0 @@ -/*global web3*/ -const fs = require('../../core/fs'); -const ContractSources = require('./contractSources'); - -class CodeCoverage { - constructor(embark, _options) { - this.events = embark.events; - this.logger = embark.logger; - - embark.events.on('contracts:compile:solc', this.compileSolc.bind(this)); - embark.events.on('contracts:compiled:solc', this.compiledSolc.bind(this)); - embark.events.on('contracts:run:solc', this.runSolc.bind(this)); - embark.events.on('block:header', this.runSolc.bind(this)); - - embark.events.on('tests:finished', this.updateCoverageReport.bind(this)); - - embark.events.on('blockchain:ready', () => { - embark.events.request('blockchain:get', (web3) => { - // Set up the web3 extension - web3.extend({ - property: 'debug', - methods: [{name: 'traceTransaction', call: 'debug_traceTransaction', params: 2}] - }); - - }); - }); - - this.seenTransactions = {}; - this.coverageReport = {}; - this.contractSources = new ContractSources([]); - - this.dotEmbarkPath = fs.dappPath('.embark'); - this.coverageReportPath = fs.dappPath('.embark', 'coverage.json'); - } - - compileSolc(input) { - Object.keys(input.sources).forEach((file) => { - this.contractSources.addFile(file, input.sources[file].content); - }); - } - - compiledSolc(output) { - this.contractSources.parseSolcOutput(output); - } - - updateCoverageReport(cb) { - fs.mkdirp(this.dotEmbarkPath, () => { - fs.writeFile(this.coverageReportPath, JSON.stringify(this.coverageReport), cb); - }); - } - - async runSolc(receipt) { - let block = await web3.eth.getBlock(receipt.number); - if(block.transactions.length === 0) return; - - let requests = block.transactions.reduce((acc, txHash) => { - if(this.seenTransactions[txHash]) return; - - this.seenTransactions[txHash] = true; - acc.push(web3.debug.traceTransaction(txHash, {})); - return acc; - }, []); - - let traces = await Promise.all(requests); - - traces.forEach(trace => { - this.coverageReport = this.contractSources.generateCodeCoverage(trace); - }); - } -} - -module.exports = CodeCoverage; diff --git a/src/lib/modules/coverage/index.ts b/src/lib/modules/coverage/index.ts new file mode 100644 index 000000000..29a4e5433 --- /dev/null +++ b/src/lib/modules/coverage/index.ts @@ -0,0 +1,121 @@ +import * as globule from "globule"; +import * as path from "path"; +import { Contract as Web3Contract } from "web3/types"; + +import { Contract } from "../../../typings/contract"; +import { Embark } from "../../../typings/embark"; +import { ContractEnhanced } from "./contractEnhanced"; +import { coverageContractsPath } from "./path"; +import { Coverage as ICoverage } from "./types"; + +const fs = require("../../core/fs"); + +export default class Coverage { + private contracts: ContractEnhanced[]; + private deployedContracts: Contract[] = []; + private web3Contracts: Web3Contract[] = []; + private contractsDir: string[] = []; + + constructor(private embark: Embark, options: any) { + fs.ensureDirSync(coverageContractsPath()); + + const contractsDirConfig = this.embark.config.embarkConfig.contracts; + this.contractsDir = Array.isArray(contractsDirConfig) ? contractsDirConfig : [contractsDirConfig]; + + this.contracts = this.getContracts(); + + this.instrumentContracts(); + this.swapContracts(); + + this.embark.events.on("tests:ready", this.pushDeployedContracts.bind(this)); + this.embark.events.on("tests:finished", this.produceCoverageReport.bind(this)); + this.embark.events.on("tests:manualDeploy", this.registerWeb3Contract.bind(this)); + } + + private getContracts() { + const filepaths = this.contractsDir.reduce((acc: string[], pattern: string) => ( + acc.concat(globule.find(pattern, { prefixBase: false, srcBase: fs.dappPath() })) + ), []); + + return filepaths.filter((filepath) => fs.statSync(filepath).isFile()) + .map((filepath) => new ContractEnhanced(filepath)); + } + + private instrumentContracts() { + this.contracts.forEach((contract) => contract.instrument()); + } + + private swapContracts() { + this.contracts.forEach((contract) => { + contract.save(); + }); + + this.embark.config.embarkConfig.contracts = this.contractsDir.reduce((acc: string[], value: string) => ( + acc.concat(path.join(coverageContractsPath(), value)) + ), []); + this.embark.config.contractsFiles = []; + this.embark.config.reloadConfig(); + } + + private async pushDeployedContracts() { + const newContracts = await this.getDeployedContracts(); + this.deployedContracts = this.deployedContracts.concat(newContracts); + } + + private async produceCoverageReport(cb: () => void) { + const web3Contracts = await this.getWeb3Contracts(); + await Promise.all(this.collectEvents(web3Contracts)); + this.writeCoverageReport(cb); + } + + private writeCoverageReport(cb: () => void) { + fs.ensureDirSync(path.join(fs.dappPath(), ".embark")); + const coveragePath = path.join(fs.dappPath(), ".embark", "coverage.json"); + + const coverageReport = this.contracts.reduce((acc: {[name: string]: ICoverage}, contract) => { + acc[contract.filepath] = contract.coverage; + return acc; + }, {}); + + fs.writeFile(coveragePath, JSON.stringify(coverageReport, null, 2), cb); + } + + private collectEvents(web3Contracts: Web3Contract[]) { + return web3Contracts.map(async (web3Contract) => { + const events = await web3Contract.getPastEvents("allEvents", {fromBlock: 0}); + this.contracts.forEach((contract) => contract.updateCoverage(events)); + }); + } + + private getWeb3Contract(deployedContract: Contract) { + return new Promise((resolve) => { + const address = deployedContract.deployedAddress; + const abi = deployedContract.abiDefinition; + this.embark.events.request("blockchain:contract:create", {address, abi}, (web3Contract: Web3Contract) => { + resolve(web3Contract); + }); + }); + } + + private getDeployedContracts() { + return new Promise((resolve, reject) => { + this.embark.events.request("contracts:all", (error: Error, contracts: {[name: string]: Contract}) => { + if (error) { + return reject(error); + } + resolve(Object.values(contracts)); + }); + }); + } + + private async getWeb3Contracts() { + const web3Contracts = this.deployedContracts.filter((deployedContract) => deployedContract.deployedAddress) + .map((deployedContract) => this.getWeb3Contract(deployedContract)); + + return (await Promise.all(web3Contracts)).concat(this.web3Contracts); + } + + private registerWeb3Contract(web3Contract: Web3Contract) { + this.web3Contracts.push(web3Contract); + } +} diff --git a/src/lib/modules/coverage/injector.ts b/src/lib/modules/coverage/injector.ts new file mode 100644 index 000000000..45e3aa5a3 --- /dev/null +++ b/src/lib/modules/coverage/injector.ts @@ -0,0 +1,53 @@ +import { ContractEnhanced } from "./contractEnhanced"; +import { encrypt } from "./eventId"; +import { InjectionPoint } from "./types"; + +export class Injector { + + constructor(private contract: ContractEnhanced) { + } + + public process(injectionPoint: InjectionPoint) { + switch (injectionPoint.type) { + case "statement": + return this.statement(injectionPoint); + case "function": + return this.function(injectionPoint); + case "branch": + return this.branch(injectionPoint); + case "contractDefinition": + return this.contractDefinition(injectionPoint); + } + } + + private statement(injectionPoint: InjectionPoint) { + const data = `emit __StatementCoverage(${encrypt(this.contract.id, injectionPoint.id)});`; + this.insertAt(injectionPoint.location.start.line - 1, data); + } + + private function(injectionPoint: InjectionPoint) { + const data = `emit __FunctionCoverage(${encrypt(this.contract.id, injectionPoint.id)});`; + this.insertAt(injectionPoint.location.start.line, data); + } + + private branch(injectionPoint: InjectionPoint) { + const data = `emit __BranchCoverage(${encrypt(this.contract.id, injectionPoint.id, injectionPoint.locationIdx)});`; + this.insertAt(injectionPoint.location.start.line, data); + } + + private contractDefinition(injectionPoint: InjectionPoint) { + const data = [ + "event __FunctionCoverage(uint32 value);", + "event __StatementCoverage(uint32 value);", + "event __BranchCoverage(uint32 value);", + ].join("\n"); + + this.insertAt(injectionPoint.location.start.line, data); + } + + private insertAt(line: number, data: string) { + const lines = this.contract.source.split("\n"); + lines.splice(line, 0, data); + this.contract.source = lines.join("\n"); + } +} diff --git a/src/lib/modules/coverage/instrumentWalker.ts b/src/lib/modules/coverage/instrumentWalker.ts new file mode 100644 index 000000000..24e495857 --- /dev/null +++ b/src/lib/modules/coverage/instrumentWalker.ts @@ -0,0 +1,63 @@ +import parser, { + ASTNode, + BreakStatement, + ContinueStatement, + ContractDefinition, + EmitStatement, + ExpressionStatement, + FunctionDefinition, + IfStatement, + ModifierDefinition, + ReturnStatement, + ThrowStatement, + VariableDeclarationStatement, + WhileStatement, +} from "solidity-parser-antlr"; +import { Instrumenter } from "./instrumenter"; + +export class InstrumentWalker { + constructor(private instrumenter: Instrumenter) { + } + + public walk(ast: ASTNode) { + parser.visit(ast, { + BreakStatement: (node: BreakStatement) => { + this.instrumenter.instrumentStatement(node); + }, + ContinueStatement: (node: ContinueStatement) => { + this.instrumenter.instrumentStatement(node); + }, + ContractDefinition: (node: ContractDefinition) => { + this.instrumenter.instrumentContractDefinition(node); + }, + EmitStatement: (node: EmitStatement) => { + this.instrumenter.instrumentStatement(node); + }, + ExpressionStatement: (node: ExpressionStatement) => { + this.instrumenter.instrumentStatement(node); + }, + FunctionDefinition: (node: FunctionDefinition) => { + this.instrumenter.instrumentFunction(node); + }, + IfStatement: (node: IfStatement) => { + this.instrumenter.instrumentStatement(node); + this.instrumenter.instrumentIfStatement(node); + }, + ModifierDefinition: (node: ModifierDefinition) => { + this.instrumenter.instrumentFunction(node); + }, + ReturnStatement: (node: ReturnStatement) => { + this.instrumenter.instrumentStatement(node); + }, + ThrowStatement: (node: ThrowStatement) => { + this.instrumenter.instrumentStatement(node); + }, + VariableDeclarationStatement: (node: VariableDeclarationStatement) => { + this.instrumenter.instrumentStatement(node); + }, + WhileStatement: (node: WhileStatement) => { + this.instrumenter.instrumentStatement(node); + }, + }); + } +} diff --git a/src/lib/modules/coverage/instrumenter.ts b/src/lib/modules/coverage/instrumenter.ts new file mode 100644 index 000000000..4d4e1eeaf --- /dev/null +++ b/src/lib/modules/coverage/instrumenter.ts @@ -0,0 +1,81 @@ +import { + ContractDefinition, + FunctionDefinition, + IfStatement, + Location, + Statement, +} from "solidity-parser-antlr"; + +import { ContractEnhanced } from "./contractEnhanced"; +import { InjectionPoint, InjectionPointType } from "./types"; + +export class Instrumenter { + private injectionPoints: InjectionPoint[] = []; + + constructor(private contract: ContractEnhanced) { + } + + public getInjectionPoints() { + return this.injectionPoints.sort((a, b) => b.location.start.line - a.location.start.line); + } + + public instrumentContractDefinition(node: ContractDefinition) { + if (!node.loc) { + return; + } + + if (node.loc.start.line === node.loc.end.line) { + return; + } + + this.addInjectionPoints("contractDefinition", 1, node.loc); + } + + public instrumentFunction(node: FunctionDefinition) { + if (!node.loc) { + return; + } + + if (!node.body || !node.body.loc) { + return; + } + + if (node.body.loc.start.line === node.body.loc.end.line) { + return; + } + + const id = this.contract.addFunction(node.loc, node.name); + this.addInjectionPoints("function", id, node.body.loc); + } + + public instrumentStatement(node: Statement) { + if (!node.loc) { + return; + } + + const id = this.contract.addStatement(node.loc); + this.addInjectionPoints("statement", id, node.loc); + } + + public instrumentIfStatement(node: IfStatement) { + if (!node.loc) { + return; + } + + const locations = [node.trueBody, node.falseBody].reduce((acc: Location[], body) => { + if (body && body.loc) { + acc.push(body.loc); + } + return acc; + }, []); + + const id = this.contract.addBranch(node.loc.start.line, "if", locations); + locations.forEach((location, index) => { + this.addInjectionPoints("branch", id, location, index); + }); + } + + private addInjectionPoints(type: InjectionPointType, id: number, location: Location, locationIdx?: number) { + this.injectionPoints.push({type, id, location, locationIdx}); + } +} diff --git a/src/lib/modules/coverage/path.ts b/src/lib/modules/coverage/path.ts new file mode 100644 index 000000000..99abd5b27 --- /dev/null +++ b/src/lib/modules/coverage/path.ts @@ -0,0 +1,5 @@ +import * as path from "path"; + +const fs = require("../../core/fs"); + +export const coverageContractsPath = () => path.join(fs.dappPath(), "coverage", "instrumentedContracts"); diff --git a/src/lib/modules/coverage/sourceMap.js b/src/lib/modules/coverage/sourceMap.js deleted file mode 100644 index 058a2606a..000000000 --- a/src/lib/modules/coverage/sourceMap.js +++ /dev/null @@ -1,63 +0,0 @@ -const EmptySourceMap = { - createRelativeTo: function(sourceMapString) { - if(sourceMapString === '') return EmptySourceMap; - - return new SourceMap(sourceMapString); - }, - toString: function() { - return ''; - } -}; - -class SourceMap { - constructor(sourceMapStringOrOffset, length, id, jump) { - if(typeof sourceMapStringOrOffset === 'string') { - const [offset, length, id, jump] = sourceMapStringOrOffset.split(":"); - - this.offset = parseInt(offset, 10); - this.length = parseInt(length, 10); - - if(id) this.id = parseInt(id, 10); - this.jump = jump; - } else { - this.offset = sourceMapStringOrOffset; - this.length = length; - this.id = id; - this.jump = jump; - } - } - - createRelativeTo(sourceMapString) { - if(!sourceMapString) return EmptySourceMap; - - let [offset, length, id, jump] = sourceMapString.split(":"); - - offset = (offset) ? parseInt(offset, 10) : this.offset; - id = (id) ? parseInt(id, 10) : this.id; - length = parseInt(length, 10); - - return new SourceMap(offset, length, id, jump); - } - - subtract(sourceMap) { - return new SourceMap(this.offset, sourceMap.offset - this.offset, this.id, this.jump); - } - - toString(defaultId) { - const parts = [this.offset, this.length]; - - if(this.id !== undefined && this.id !== '') { - parts.push(this.id); - } else if(defaultId !== undefined) { - parts.push(defaultId); - } - - return parts.join(':'); - } - - static empty() { - return EmptySourceMap; - } -} - -module.exports = SourceMap; diff --git a/src/lib/modules/coverage/suppressor.ts b/src/lib/modules/coverage/suppressor.ts new file mode 100644 index 000000000..ba3ca6980 --- /dev/null +++ b/src/lib/modules/coverage/suppressor.ts @@ -0,0 +1,12 @@ +import { ContractEnhanced } from "./contractEnhanced"; + +export class Suppressor { + + constructor(private contract: ContractEnhanced) { + } + + public process() { + this.contract.source = this.contract.source.replace(/pure/g, ""); + this.contract.source = this.contract.source.replace(/view/g, ""); + } +} diff --git a/src/lib/modules/coverage/types.ts b/src/lib/modules/coverage/types.ts new file mode 100644 index 000000000..097d90d04 --- /dev/null +++ b/src/lib/modules/coverage/types.ts @@ -0,0 +1,38 @@ +import { Location } from "solidity-parser-antlr"; + +export type InjectionPointType = "statement" | "branch" | "function" | "contractDefinition"; +export type BranchType = "if" | "switch"; + +export interface InjectionPoint { + type: InjectionPointType; + id: number; + location: Location; + locationIdx?: number; +} + +export interface Coverage { + b: { [branchId: number]: number[] }; + branchMap: { + [branchId: number]: { + line: number; + locations: Location[]; + type: BranchType; + }; + }; + code: string; + f: { [functionId: number]: number }; + fnMap: { + [functionId: number]: { + line: number; + loc: Location; + name: string; + skip?: boolean; + }; + }; + l: { [line: number]: number }; + path: string; + s: { [statementId: number]: number }; + statementMap: { + [statementId: number]: Location; + }; +} diff --git a/src/lib/modules/solidity/index.js b/src/lib/modules/solidity/index.js index ac2f2d706..08f028bbd 100644 --- a/src/lib/modules/solidity/index.js +++ b/src/lib/modules/solidity/index.js @@ -8,7 +8,6 @@ class Solidity { this.logger = embark.logger; this.events = embark.events; this.ipc = options.ipc; - this.contractDirectories = embark.config.contractDirectories; this.solcAlreadyLoaded = false; this.solcW = null; this.useDashboard = options.useDashboard; @@ -169,7 +168,7 @@ class Solidity { function (file, fileCb) { let filename = file.filename; - for (let directory of self.contractDirectories) { + for (let directory of self.embark.config.contractDirectories) { let match = new RegExp("^" + directory); filename = filename.replace(match, ''); } diff --git a/src/lib/modules/tests/index.js b/src/lib/modules/tests/index.js index 26e798d84..a02f300ed 100644 --- a/src/lib/modules/tests/index.js +++ b/src/lib/modules/tests/index.js @@ -89,13 +89,13 @@ class TestRunner { if (err) { return next(err); } - console.info(`Coverage report created. You can find it here: ${fs.dappPath('coverage/__root__/index.html')}\n`); + console.info(`Coverage report created. You can find it here: ${fs.dappPath('coverage/index.html')}\n`); const opn = require('opn'); const _next = () => { next(null, results); }; if (options.noBrowser) { return next(null, results); } - opn(fs.dappPath('coverage/__root__/index.html'), {wait: false}) + opn(fs.dappPath('coverage/index.html'), {wait: false}) .then(() => new Promise(resolve => setTimeout(resolve, 1000))) .then(_next, _next); }); @@ -185,11 +185,12 @@ class TestRunner { let fns = files.map((file) => { return (cb) => { const mocha = new Mocha(); + const gasLimit = options.coverage ? constants.tests.coverageGasLimit : constants.tests.gasLimit; const reporter = options.inProcess ? EmbarkApiSpec : EmbarkSpec; mocha.reporter(reporter, { events: self.events, gasDetails: options.gasDetails, - gasLimit: constants.tests.gasLimit + gasLimit }); mocha.addFile(file); diff --git a/src/lib/modules/tests/test.js b/src/lib/modules/tests/test.js index 700b1910a..de24a1e80 100644 --- a/src/lib/modules/tests/test.js +++ b/src/lib/modules/tests/test.js @@ -227,7 +227,13 @@ class Test { }); } - _deploy(config, callback) { + async deploy(contract, deployArgs = {}, sendArgs = {}) { + const instance = await contract.deploy(deployArgs).send(sendArgs); + this.events.emit("tests:manualDeploy", instance); + return instance; + } + + async _deploy(config, callback) { const self = this; async.waterfall([ function getConfig(next) { diff --git a/src/test/coverage.js b/src/test/coverage.js deleted file mode 100644 index f43fa5d03..000000000 --- a/src/test/coverage.js +++ /dev/null @@ -1,279 +0,0 @@ -/*global describe, it*/ -const {assert} = require('chai'); -const fs = require('fs'); -const path = require('path'); -const sinon = require('sinon'); - -const ContractSources = require('../lib/modules/coverage/contractSources'); -const ContractSource = require('../lib/modules/coverage/contractSource'); -const SourceMap = require('../lib/modules/coverage/sourceMap'); - -function fixturePath(fixture) { - return path.join(__dirname, 'fixtures', fixture); -} - -function loadFixture(fixture) { - return fs.readFileSync(fixturePath(fixture)).toString(); -} - -describe('ContractSources', () => { - describe('constructor', () => { - it('should read files and create instances of ContractSource', (done) => { - const contractPath = fixturePath('cont.sol'); - var cs = new ContractSources([contractPath]); - assert.instanceOf(cs.files['cont.sol'], ContractSource); - - done(); - }); - - it('should work when a single path is passed', (done) => { - const contractPath = fixturePath('cont.sol'); - var cs = new ContractSources(contractPath); - assert.instanceOf(cs.files['cont.sol'], ContractSource); - - done(); - }); - - it('should throw an error when the file does not exist', (done) => { - assert.throws(() => { - new ContractSources(['fixtures/404.sol']); - }, /ENOENT: no such file or directory, open/); - - done(); - }); - }); - - describe('#toSolcInputs', () => { - it('should build the hash in the format that solc likes', (done) => { - const contractPath = fixturePath('cont.sol'); - var cs = new ContractSources([contractPath]); - assert.deepEqual({ - 'cont.sol': {content: cs.files['cont.sol'].body} - }, cs.toSolcInputs()); - done(); - }); - }); - - describe('#parseSolcOutput', () => { - it('should send the output to each of the ContractSource instances', (done) => { - const contractPath = fixturePath('cont.sol'); - var cs = new ContractSources([contractPath]); - - var parseSolcOutputSpy = sinon.spy(cs.files['cont.sol'], 'parseSolcOutput'); - const solcOutput = JSON.parse(loadFixture('solc-output.json')); - cs.parseSolcOutput(solcOutput); - - assert(parseSolcOutputSpy.calledOnce); - done(); - }); - }); -}); - -describe('ContractSource', () => { - const contractSource = ` -pragma solidity ^0.4.24; - -contract x { - int number; - string name; - - constructor(string _name) - public - { - name = _name; - } - - function g(int _number) - public - returns (int _multiplication) - { - number = _number; - return _number * 5; - } - - function f(int _foo, int _bar) - public - pure - returns (int _addition) - { - return _foo + _bar; - } - - function h(int _bar) - public - pure - returns (bool _great) - { - if(_bar > 25) { - return true; - } else { - return false; - } - } -} - `.trim(); - - const cs = new ContractSource('contract.sol', '/tmp/contract.sol', contractSource); - - describe('constructor', () => { - it('should set line offsets and line lengths correctly', (done) => { - // +1 here accounts for a newline - assert.equal("pragma solidity ^0.4.24;".length + 1, cs.lineOffsets[1]); - done(); - }); - }); - - describe('#sourceMapToLocations', () => { - it('should return objects that indicate start and end location and columns', (done) => { - // constructor function - var loc = cs.sourceMapToLocations('71:60:0'); - assert.deepEqual({line: 7, column: 2}, loc.start); - assert.deepEqual({line: 11, column: 3}, loc.end); - - // f function - loc = cs.sourceMapToLocations('257:104:0'); - assert.deepEqual({line: 21, column: 2}, loc.start); - assert.deepEqual({line: 27, column: 3}, loc.end); - - // g function - loc = cs.sourceMapToLocations('135:118:0'); - assert.deepEqual({line: 13, column: 2}, loc.start); - assert.deepEqual({line: 19, column: 3}, loc.end); - - done(); - }); - }); - - describe('#parseSolcOutput', () => { - it('should parse the deployed bytecode output correctly', (done) => { - var solcOutput = JSON.parse(loadFixture('solc-output.json')); - const contractPath = fixturePath('cont.sol'); - var cs = new ContractSources(contractPath); - cs.parseSolcOutput(solcOutput); - - var contractSource = cs.files['cont.sol']; - - assert.isNotEmpty(contractSource.contractDeployedBytecode); - assert.isNotEmpty(contractSource.contractDeployedBytecode['x']); - - var bytecode = contractSource.contractDeployedBytecode['x']; - - assert.deepEqual({instruction: 'PUSH1', sourceMap: {offset: 26, length: 487, id: 0, jump: '-'}, jump: '-', seen: false}, bytecode[0]); - assert.deepEqual({instruction: 'PUSH1', sourceMap: SourceMap.empty(), seen: false, jump: undefined}, bytecode[2]); - assert.deepEqual({instruction: 'MSTORE', sourceMap: SourceMap.empty(), seen: false, jump: undefined}, bytecode[4]); - assert.deepEqual({instruction: 'PUSH1', sourceMap: SourceMap.empty(), seen: false, jump: undefined}, bytecode[5]); - - done(); - }); - }); - - describe('#parseSolcOutput', () => { - it('should parse the bytecode output correctly', (done) => { - var solcOutput = JSON.parse(loadFixture('solc-output.json')); - const contractPath = fixturePath('cont.sol'); - var cs = new ContractSources(contractPath); - cs.parseSolcOutput(solcOutput); - - var contractSource = cs.files['cont.sol']; - - assert.isNotEmpty(contractSource.contractBytecode); - assert.isNotEmpty(contractSource.contractBytecode['x']); - - var bytecode = contractSource.contractBytecode['x']; - - assert.deepEqual({instruction: 'PUSH1', sourceMap: {offset: 26, length: 487, id: 0, jump: '-'}, jump: '-', seen: false}, bytecode[0]); - assert.deepEqual({instruction: 'PUSH1', sourceMap: SourceMap.empty(), seen: false, jump: undefined}, bytecode[2]); - assert.deepEqual({instruction: 'MSTORE', sourceMap: SourceMap.empty(), seen: false, jump: undefined}, bytecode[4]); - assert.deepEqual({instruction: 'CALLVALUE', sourceMap: {offset: 71, length: 60, jump: undefined}, seen: false, jump: undefined}, bytecode[5]); - - done(); - }); - }); - - describe('#generateCodeCoverage', () => { - it('should return an error when solc output was not parsed', (done) => { - const contractPath = fixturePath('cont.sol'); - var cs = new ContractSources(contractPath); - var contractSource = cs.files['cont.sol']; - var trace = JSON.parse(loadFixture('geth-debugtrace-output-g.json')); - - assert.throws(() => { - contractSource.generateCodeCoverage(trace); - }, 'Error generating coverage: solc output was not assigned'); - - done(); - }); - - it('should return a coverage report when solc output was parsed', (done) => { - var solcOutput = JSON.parse(loadFixture('solc-output.json')); - const contractPath = fixturePath('cont.sol'); - var cs = new ContractSources(contractPath); - cs.parseSolcOutput(solcOutput); - - var trace = JSON.parse(loadFixture('geth-debugtrace-output-h-5.json')); - var coverage = cs.generateCodeCoverage(trace); - assert.exists(coverage); - - done(); - }); - - it('should merge coverages as we add more traces', (done) => { - const contractPath = fixturePath('cont.sol'); - var cs = new ContractSources(contractPath); - - const solcOutput = JSON.parse(loadFixture('solc-output.json')); - cs.parseSolcOutput(solcOutput); - - var trace = JSON.parse(loadFixture('geth-debugtrace-output-h-5.json')); - cs.generateCodeCoverage(trace); - - trace = JSON.parse(loadFixture('geth-debugtrace-output-h-50.json')); - var coverage = cs.generateCodeCoverage(trace)['cont.sol']; - - // In the fixture, the branch has an ID of 61, and the function has the - // ID of 63 - assert.deepEqual([1,0], coverage.b['61']); - assert.equal(6, coverage.f['63']); - - done(); - }); - }); -}); - -describe('SourceMap', () => { - describe('#subtract', () => { - it('should return the correct values', (done) => { - var sm1 = new SourceMap('365:146:0'); - var sm2 = new SourceMap('428:83:0'); - - var result = sm1.subtract(sm2); - - assert.equal(365, result.offset); - assert.equal(63, result.length); - - done(); - }); - }); - - describe('#createRelativeTo', () => { - it('should return an empty source map on an empty string', (done) => { - var sm1 = new SourceMap('192:10:0'); - var sm2 = sm1.createRelativeTo(''); - - assert.equal('', sm2.toString()); - - done(); - }); - - it('should return the correct source map on a relative string', (done) => { - var sm1 = new SourceMap('192:10:0'); - var sm2 = sm1.createRelativeTo(':14'); - - assert.equal(192, sm2.offset); - assert.equal(14, sm2.length); - assert.equal(0, sm2.id); - - done(); - }); - }); -}); diff --git a/src/typings/contract.d.ts b/src/typings/contract.d.ts index dd0a9b2f7..7f467a84a 100644 --- a/src/typings/contract.d.ts +++ b/src/typings/contract.d.ts @@ -2,5 +2,6 @@ import { ABIDefinition } from "web3/eth/abi"; export interface Contract { abiDefinition: ABIDefinition[]; + deployedAddress: string; className: string; } diff --git a/src/typings/embark.d.ts b/src/typings/embark.d.ts index c94815234..b3777aee2 100644 --- a/src/typings/embark.d.ts +++ b/src/typings/embark.d.ts @@ -14,12 +14,14 @@ export interface Embark { registerConsoleCommand: any; logger: Logger; config: { + contractsFiles: any[]; embarkConfig: { contracts: string[] | string; config: { contracts: string; }; }; + reloadConfig(): void; }; registerActionForEvent(name: string, action: (callback: () => void) => void): void; } diff --git a/src/typings/solidity-parser-antlr/index.d.ts b/src/typings/solidity-parser-antlr/index.d.ts new file mode 100644 index 000000000..31a7c1daf --- /dev/null +++ b/src/typings/solidity-parser-antlr/index.d.ts @@ -0,0 +1,332 @@ +declare module "solidity-parser-antlr" { + export interface LineColumn { + line: number; + column: number; + } + export interface Location { + start: LineColumn; + end: LineColumn; + } + export interface BaseASTNode { + type: string; + range?: [number, number]; + loc?: Location; + } + export interface SourceUnit extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface PragmaDirective extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface PragmaName extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface PragmaValue extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface Version extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface VersionOperator extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface VersionConstraint extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ImportDeclaration extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ImportDirective extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ContractDefinition extends BaseASTNode { + name: string; + } + export interface InheritanceSpecifier extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ContractPart extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface StateVariableDeclaration extends BaseASTNode { + variables: VariableDeclaration[]; + } + export interface UsingForDeclaration extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface StructDefinition extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ModifierDefinition extends BaseASTNode { + name: string; + } + export interface ModifierInvocation extends BaseASTNode { + name: string; + } + export interface FunctionDefinition extends BaseASTNode { + name: string; + body?: Block; + } + export interface ReturnParameters extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ModifierList extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface EventDefinition extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface EnumValue extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface EnumDefinition extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ParameterList extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface Parameter extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface EventParameterList extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface EventParameter extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface FunctionTypeParameterList extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface FunctionTypeParameter extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface VariableDeclaration extends BaseASTNode { + visibility: "public" | "private"; + isStateVar: boolean; + } + export interface TypeName extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface UserDefinedTypeName extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface Mapping extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface FunctionTypeName extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface StorageLocation extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface StateMutability extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface Block extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface Statement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface EmitStatement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ExpressionStatement extends BaseASTNode { + expression: ASTNode; + } + export interface IfStatement extends BaseASTNode { + trueBody: ASTNode; + falseBody: ASTNode; + } + export interface WhileStatement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface SimpleStatement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ForStatement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface InlineAssemblyStatement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface DoWhileStatement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ContinueStatement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface BreakStatement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ReturnStatement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ThrowStatement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface VariableDeclarationStatement extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface IdentifierList extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ElementaryTypeName extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface Expression extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface PrimaryExpression extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ExpressionList extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface NameValueList extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface NameValue extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface FunctionCallArguments extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyBlock extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyItem extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyExpression extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyCall extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyLocalDefinition extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyAssignment extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyIdentifierOrList extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyIdentifierList extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyStackAssignment extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface LabelDefinition extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblySwitch extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyCase extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyFunctionDefinition extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyFunctionReturns extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyFor extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyIf extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface AssemblyLiteral extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface SubAssembly extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface TupleExpression extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface ElementaryTypeNameExpression extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface NumberLiteral extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export interface Identifier extends BaseASTNode {} // tslint:disable-line:no-empty-interface + export type BinOp = + | "+" + | "-" + | "*" + | "/" + | "**" + | "%" + | "<<" + | ">>" + | "&&" + | "||" + | "&" + | "|" + | "^" + | "<" + | ">" + | "<=" + | ">=" + | "==" + | "!=" + | "=" + | "|=" + | "^=" + | "&=" + | "<<=" + | ">>=" + | "+=" + | "-=" + | "*=" + | "/=" + | "%="; + export interface BinaryOperation extends BaseASTNode { + left: ASTNode; + right: ASTNode; + operator: BinOp; + } + export interface Conditional extends BaseASTNode { + trueExpression: ASTNode; + falseExpression: ASTNode; + } + + export type ASTNode = + | SourceUnit + | PragmaDirective + | PragmaName + | PragmaValue + | Version + | VersionOperator + | VersionConstraint + | ImportDeclaration + | ImportDirective + | ContractDefinition + | InheritanceSpecifier + | ContractPart + | StateVariableDeclaration + | UsingForDeclaration + | StructDefinition + | ModifierDefinition + | ModifierInvocation + | FunctionDefinition + | ReturnParameters + | ModifierList + | EventDefinition + | EnumValue + | EnumDefinition + | ParameterList + | Parameter + | EventParameterList + | EventParameter + | FunctionTypeParameterList + | FunctionTypeParameter + | VariableDeclaration + | TypeName + | UserDefinedTypeName + | Mapping + | FunctionTypeName + | StorageLocation + | StateMutability + | Block + | Statement + | EmitStatement + | ExpressionStatement + | IfStatement + | WhileStatement + | SimpleStatement + | ForStatement + | InlineAssemblyStatement + | DoWhileStatement + | ContinueStatement + | BreakStatement + | ReturnStatement + | ThrowStatement + | VariableDeclarationStatement + | IdentifierList + | ElementaryTypeName + | Expression + | PrimaryExpression + | ExpressionList + | NameValueList + | NameValue + | FunctionCallArguments + | AssemblyBlock + | AssemblyItem + | AssemblyExpression + | AssemblyCall + | AssemblyLocalDefinition + | AssemblyAssignment + | AssemblyIdentifierOrList + | AssemblyIdentifierList + | AssemblyStackAssignment + | LabelDefinition + | AssemblySwitch + | AssemblyCase + | AssemblyFunctionDefinition + | AssemblyFunctionReturns + | AssemblyFor + | AssemblyIf + | AssemblyLiteral + | SubAssembly + | TupleExpression + | ElementaryTypeNameExpression + | NumberLiteral + | Identifier + | BinaryOperation + | Conditional; + export interface Visitor { + SourceUnit?: (node: SourceUnit) => void; + PragmaDirective?: (node: PragmaDirective) => void; + PragmaName?: (node: PragmaName) => void; + PragmaValue?: (node: PragmaValue) => void; + Version?: (node: Version) => void; + VersionOperator?: (node: VersionOperator) => void; + VersionConstraint?: (node: VersionConstraint) => void; + ImportDeclaration?: (node: ImportDeclaration) => void; + ImportDirective?: (node: ImportDirective) => void; + ContractDefinition?: (node: ContractDefinition) => void; + InheritanceSpecifier?: (node: InheritanceSpecifier) => void; + ContractPart?: (node: ContractPart) => void; + StateVariableDeclaration?: (node: StateVariableDeclaration) => void; + UsingForDeclaration?: (node: UsingForDeclaration) => void; + StructDefinition?: (node: StructDefinition) => void; + ModifierDefinition?: (node: ModifierDefinition) => void; + ModifierInvocation?: (node: ModifierInvocation) => void; + FunctionDefinition?: (node: FunctionDefinition) => void; + ReturnParameters?: (node: ReturnParameters) => void; + ModifierList?: (node: ModifierList) => void; + EventDefinition?: (node: EventDefinition) => void; + EnumValue?: (node: EnumValue) => void; + EnumDefinition?: (node: EnumDefinition) => void; + ParameterList?: (node: ParameterList) => void; + Parameter?: (node: Parameter) => void; + EventParameterList?: (node: EventParameterList) => void; + EventParameter?: (node: EventParameter) => void; + FunctionTypeParameterList?: (node: FunctionTypeParameterList) => void; + FunctionTypeParameter?: (node: FunctionTypeParameter) => void; + VariableDeclaration?: (node: VariableDeclaration) => void; + TypeName?: (node: TypeName) => void; + UserDefinedTypeName?: (node: UserDefinedTypeName) => void; + Mapping?: (node: Mapping) => void; + FunctionTypeName?: (node: FunctionTypeName) => void; + StorageLocation?: (node: StorageLocation) => void; + StateMutability?: (node: StateMutability) => void; + Block?: (node: Block) => void; + Statement?: (node: Statement) => void; + EmitStatement?: (node: Statement) => void; + ExpressionStatement?: (node: ExpressionStatement) => void; + IfStatement?: (node: IfStatement) => void; + WhileStatement?: (node: WhileStatement) => void; + SimpleStatement?: (node: SimpleStatement) => void; + ForStatement?: (node: ForStatement) => void; + InlineAssemblyStatement?: (node: InlineAssemblyStatement) => void; + DoWhileStatement?: (node: DoWhileStatement) => void; + ContinueStatement?: (node: ContinueStatement) => void; + BreakStatement?: (node: BreakStatement) => void; + ReturnStatement?: (node: ReturnStatement) => void; + ThrowStatement?: (node: ThrowStatement) => void; + VariableDeclarationStatement?: (node: VariableDeclarationStatement) => void; + IdentifierList?: (node: IdentifierList) => void; + ElementaryTypeName?: (node: ElementaryTypeName) => void; + Expression?: (node: Expression) => void; + PrimaryExpression?: (node: PrimaryExpression) => void; + ExpressionList?: (node: ExpressionList) => void; + NameValueList?: (node: NameValueList) => void; + NameValue?: (node: NameValue) => void; + FunctionCallArguments?: (node: FunctionCallArguments) => void; + AssemblyBlock?: (node: AssemblyBlock) => void; + AssemblyItem?: (node: AssemblyItem) => void; + AssemblyExpression?: (node: AssemblyExpression) => void; + AssemblyCall?: (node: AssemblyCall) => void; + AssemblyLocalDefinition?: (node: AssemblyLocalDefinition) => void; + AssemblyAssignment?: (node: AssemblyAssignment) => void; + AssemblyIdentifierOrList?: (node: AssemblyIdentifierOrList) => void; + AssemblyIdentifierList?: (node: AssemblyIdentifierList) => void; + AssemblyStackAssignment?: (node: AssemblyStackAssignment) => void; + LabelDefinition?: (node: LabelDefinition) => void; + AssemblySwitch?: (node: AssemblySwitch) => void; + AssemblyCase?: (node: AssemblyCase) => void; + AssemblyFunctionDefinition?: (node: AssemblyFunctionDefinition) => void; + AssemblyFunctionReturns?: (node: AssemblyFunctionReturns) => void; + AssemblyFor?: (node: AssemblyFor) => void; + AssemblyIf?: (node: AssemblyIf) => void; + AssemblyLiteral?: (node: AssemblyLiteral) => void; + SubAssembly?: (node: SubAssembly) => void; + TupleExpression?: (node: TupleExpression) => void; + ElementaryTypeNameExpression?: (node: ElementaryTypeNameExpression) => void; + NumberLiteral?: (node: NumberLiteral) => void; + Identifier?: (node: Identifier) => void; + BinaryOperation?: (node: BinaryOperation) => void; + Conditional?: (node: Conditional) => void; + } + export interface ParserOpts { + tolerant?: boolean; + range?: boolean; + loc?: boolean; + } + export function parse(sourceCode: string, parserOpts: ParserOpts): ASTNode; + export function visit(ast: ASTNode, visitor: Visitor): void; +} diff --git a/templates/demo/contracts/simple_storage.sol b/templates/demo/contracts/simple_storage.sol index 5c66a6179..035023e02 100644 --- a/templates/demo/contracts/simple_storage.sol +++ b/templates/demo/contracts/simple_storage.sol @@ -15,4 +15,4 @@ contract SimpleStorage { return storedData; } -} +} \ No newline at end of file diff --git a/test_apps/coverage_app/app/components/blockchain.js b/test_apps/coverage_app/app/components/blockchain.js deleted file mode 100644 index 242af464f..000000000 --- a/test_apps/coverage_app/app/components/blockchain.js +++ /dev/null @@ -1,79 +0,0 @@ -import EmbarkJS from 'Embark/EmbarkJS'; -import SimpleStorage from 'Embark/contracts/SimpleStorage'; -import React from 'react'; -import { Form, FormGroup, FormControl, HelpBlock, Button } from 'react-bootstrap'; - -class Blockchain extends React.Component { - - constructor(props) { - super(props); - - this.state = { - valueSet: 10, - valueGet: "", - logs: [] - } - } - - handleChange(e){ - this.setState({valueSet: e.target.value}); - } - - setValue(e){ - e.preventDefault(); - - var value = parseInt(this.state.valueSet, 10); - - SimpleStorage.methods.set(value).send({from: web3.eth.defaultAccount}); - this._addToLog("SimpleStorage.methods.set(value).send({from: web3.eth.defaultAccount})"); - } - - getValue(e){ - e.preventDefault(); - - SimpleStorage.methods.get().call() - .then(_value => this.setState({valueGet: _value})); - this._addToLog("SimpleStorage.methods.get(console.log)"); - } - - _addToLog(txt){ - this.state.logs.push(txt); - this.setState({logs: this.state.logs}); - } - - render(){ - return ( -

1. Set the value in the blockchain

-
- - this.handleChange(e)} /> - - Once you set the value, the transaction will need to be mined and then the value will be updated on the blockchain. - -
- -

2. Get the current value

-
- - current value is {this.state.valueGet} - - Click the button to get the current value. The initial value is 100. - -
- -

3. Contract Calls

-

Javascript calls being made:

-
- { - this.state.logs.map((item, i) =>

{item}

) - } -
-
- ); - } - } - - export default Blockchain; diff --git a/test_apps/coverage_app/app/components/ens.js b/test_apps/coverage_app/app/components/ens.js deleted file mode 100644 index 0167bfcdc..000000000 --- a/test_apps/coverage_app/app/components/ens.js +++ /dev/null @@ -1,172 +0,0 @@ -/*global web3*/ -import EmbarkJS from 'Embark/EmbarkJS'; -import React from 'react'; -import { Alert, Form, FormGroup, FormControl, Button } from 'react-bootstrap'; - -window.EmbarkJS = EmbarkJS; - -class ENS extends React.Component { - - constructor(props) { - super(props); - - this.state = { - valueResolve: 'embark.eth', - responseResolve: null, - isResolveError: false, - valueLookup: '', - responseLookup: null, - isLookupError: false, - valueRegister: '', - addressRegister: '', - responseRegister: null, - isRegisterError: false, - embarkLogs: [] - }; - } - - componentDidMount() { - EmbarkJS.onReady(() => { - if (!web3.eth.defaultAccount) { - this.setState({ - globalError: 'There is currently no default account. If Metamask is active, please sign in or deactivate it.' - }); - } - this.setState({ - addressRegister: web3.eth.defaultAccount, - valueLookup: web3.eth.defaultAccount - }) - }); - } - - handleChange(stateName, e) { - this.setState({ [stateName]: e.target.value }); - } - - registerSubDomain(e) { - e.preventDefault(); - const self = this; - const embarkLogs = this.state.embarkLogs; - embarkLogs.push(`EmbarkJS.Names.registerSubDomain('${this.state.valueRegister}', '${this.state.addressRegister}', console.log)`); - this.setState({ - embarkLogs: embarkLogs - }); - - EmbarkJS.Names.registerSubDomain(this.state.valueRegister, this.state.addressRegister, (err, transaction) => { - const message = err ? err : `Successfully registered "${this.state.valueRegister}" with ${transaction.gasUsed} gas`; - self.setState({ - responseRegister: message, - isRegisterError: !!err - }); - }); - } - - resolveName(e) { - e.preventDefault(); - const embarkLogs = this.state.embarkLogs; - embarkLogs.push(`EmbarkJS.Names.resolve('${this.state.valueResolve}', console.log)`); - - this.setState({ - embarkLogs: embarkLogs - }); - EmbarkJS.Names.resolve(this.state.valueResolve, (err, result) => { - if (err) { - return this.setState({ - responseResolve: err.message || err, - isResolveError: true - }); - } - this.setState({ - responseResolve: result, - isResolveError: false - }); - }); - } - - lookupAddress(e) { - e.preventDefault(); - const embarkLogs = this.state.embarkLogs; - embarkLogs.push(`EmbarkJS.Names.resolve('${this.state.valueLookup}', console.log)`); - - this.setState({ - embarkLogs: embarkLogs - }); - EmbarkJS.Names.lookup(this.state.valueLookup, (err, result) => { - if (err) { - return this.setState({ - responseLookup: err.message || err, - isLookupError: true - }); - } - this.setState({ - responseLookup: result, - isLookupError: false - }); - }); - } - - render() { - return ( - {this.state.globalError && {this.state.globalError}} -

Resolve a name

-
- - {this.state.responseResolve && - - Resolved address: {this.state.responseResolve} - } - this.handleChange('valueResolve', e)}/> - - -
- -

Lookup an address

-
- - {this.state.responseLookup && - - Looked up domain: {this.state.responseLookup} - } - this.handleChange('valueLookup', e)}/> - - -
- -

Register subdomain for embark

-
- - {this.state.responseRegister && - - {this.state.responseRegister} - } - this.handleChange('valueRegister', e)}/> - this.handleChange('addressRegister', e)}/> - - -
- -

Embark Calls

-

Javascript calls being made:

-
- { - this.state.embarkLogs.map((item, i) =>

{item}

) - } -
-
- ); - } -} - -export default ENS; diff --git a/test_apps/coverage_app/app/components/storage.js b/test_apps/coverage_app/app/components/storage.js deleted file mode 100644 index a3295a38e..000000000 --- a/test_apps/coverage_app/app/components/storage.js +++ /dev/null @@ -1,258 +0,0 @@ -import EmbarkJS from 'Embark/EmbarkJS'; -import React from 'react'; -import {Alert, Form, FormGroup, FormControl, HelpBlock, Button} from 'react-bootstrap'; - -class Storage extends React.Component { - - constructor(props) { - super(props); - - this.state = { - textToSave: 'hello world!', - generatedHash: '', - loadText: '', - storedText: '', - fileToUpload: null, - fileHash: '', - imageToDownload: '', - url: '', - logs: [], - storageError: '', - valueRegister: '', - valueResolver: '', - }; - } - - handleChange(e, name) { - this.state[name] = e.target.value; - this.setState(this.state); - } - - handleFileUpload(e) { - this.setState({fileToUpload: [e.target]}); - } - - addToLog(txt) { - this.state.logs.push(txt); - this.setState({logs: this.state.logs}); - } - - setText(e) { - e.preventDefault(); - - EmbarkJS.Storage.saveText(this.state.textToSave) - .then((hash) => { - this.setState({ - generatedHash: hash, - loadText: hash, - storageError: '' - }); - this.addToLog("EmbarkJS.Storage.saveText('" + this.state.textToSave + "').then(function(hash) { })"); - }) - .catch((err) => { - if (err) { - this.setState({storageError: err.message}); - console.log("Storage saveText Error => " + err.message); - } - }); - } - - loadHash(e) { - e.preventDefault(); - - EmbarkJS.Storage.get(this.state.loadText) - .then((content) => { - this.setState({storedText: content, storageError: ''}); - this.addToLog("EmbarkJS.Storage.get('" + this.state.loadText + "').then(function(content) { })"); - }) - .catch((err) => { - if (err) { - this.setState({storageError: err.message}); - console.log("Storage get Error => " + err.message); - } - }); - } - - uploadFile(e) { - e.preventDefault(); - - EmbarkJS.Storage.uploadFile(this.state.fileToUpload) - .then((hash) => { - this.setState({ - fileHash: hash, - imageToDownload: hash, - storageError: '' - }); - this.addToLog("EmbarkJS.Storage.uploadFile(this.state.fileToUpload).then(function(hash) { })"); - }) - .catch((err) => { - if (err) { - this.setState({storageError: err.message}); - console.log("Storage uploadFile Error => " + err.message); - } - }); - } - - loadFile(e) { - let _url = EmbarkJS.Storage.getUrl(this.state.imageToDownload); - this.setState({url: _url}); - this.addToLog("EmbarkJS.Storage.getUrl('" + this.state.imageToDownload + "')"); - } - - ipnsRegister(e) { - e.preventDefault(); - this.setState({ registering: true, responseRegister: false }); - this.addToLog("EmbarkJS.Names.register(this.state.ipfsHash).then(function(hash) { })"); - EmbarkJS.Names.register(this.state.valueRegister, (err, name) => { - let responseRegister; - let isRegisterError = false; - if (err) { - isRegisterError = true; - responseRegister = "Name Register Error: " + (err.message || err) - } else { - responseRegister = name; - } - - this.setState({ - registering: false, - responseRegister, - isRegisterError - }); - }); - } - - ipnsResolve(e) { - e.preventDefault(); - this.setState({ resolving: true, responseResolver: false }); - this.addToLog("EmbarkJS.Names.resolve(this.state.ipnsName, function(err, path) { })"); - EmbarkJS.Names.resolve(this.state.valueResolver, (err, path) => { - let responseResolver; - let isResolverError = false; - if (err) { - isResolverError = true; - responseResolver = "Name Resolve Error: " + (err.message || err) - } else { - responseResolver = path; - } - - this.setState({ - resolving: false, - responseResolver, - isResolverError - }); - }); - } - - render() { - return - { - !this.props.enabled ? - - The node you are using does not support IPFS. Please ensure CORS is setup for the IPFS - node. - : '' - } - { - this.state.storageError !== '' ? - {this.state.storageError} - : '' - } -

Save text to storage

-
- - this.handleChange(e, 'textToSave')}/> - - generated Hash: {this.state.generatedHash} - -
- -

Load text from storage given an hash

-
- - this.handleChange(e, 'loadText')}/> - - result: {this.state.storedText} - -
- -

Upload file to storage

-
- - this.handleFileUpload(e)}/> - - generated hash: {this.state.fileHash} - -
- -

Get file or image from storage

-
- - this.handleChange(e, 'imageToDownload')}/> - - file available at: {this.state.url} - - -
- -

Register to IPNS

-
- - this.handleChange(e, 'valueRegister')}/> - - It will take around 1 minute - {this.state.responseRegister && - - {this.state.responseRegister} - } - -
- -

Resolve name

-
- - this.handleChange(e, 'valueResolver')}/> - - It will take around 1 minute - {this.state.responseResolver && - - {this.state.responseResolver} - } - -
- - -

Javascript calls being made:

-
-

EmbarkJS.Storage.setProvider('ipfs',{'{'}server: 'localhost', port: '5001'{'}'})

- { - this.state.logs.map((item, i) =>

{item}

) - } -
-
; - } -} - -export default Storage; diff --git a/test_apps/coverage_app/app/components/whisper.js b/test_apps/coverage_app/app/components/whisper.js deleted file mode 100644 index 3c056bf21..000000000 --- a/test_apps/coverage_app/app/components/whisper.js +++ /dev/null @@ -1,118 +0,0 @@ -import EmbarkJS from 'Embark/EmbarkJS'; -import React from 'react'; -import {Alert, Form, FormGroup, FormControl, Button} from 'react-bootstrap'; - -class Whisper extends React.Component { - - constructor (props) { - super(props); - - this.state = { - listenTo: '', - channel: '', - message: '', - subscribedChannels: [], - messageList: [], - logs: [] - }; - } - - handleChange (e, name) { - this.state[name] = e.target.value; - this.setState(this.state); - } - - sendMessage (e) { - e.preventDefault(); - EmbarkJS.Messages.sendMessage({topic: this.state.channel, data: this.state.message}); - this.addToLog("EmbarkJS.Messages.sendMessage({topic: '" + this.state.channel + "', data: '" + this.state.message + "'})"); - } - - listenToChannel (e) { - e.preventDefault(); - - const subscribedChannels = this.state.subscribedChannels; - subscribedChannels.push(Subscribed to {this.state.listenTo}. Now try sending a message); - this.setState({ - subscribedChannels - }); - - EmbarkJS.Messages.listenTo({topic: [this.state.listenTo]}, (error, message) => { - const messageList = this.state.messageList; - if (error) { - messageList.push(Error: {error}); - } else { - messageList.push(Channel: {message.topic} | Message: {message.data}); - } - this.setState({ - messageList - }); - }); - - this.addToLog("EmbarkJS.Messages.listenTo({topic: ['" + this.state.listenTo + "']}).then(function(message) {})"); - } - - addToLog (txt) { - this.state.logs.push(txt); - this.setState({logs: this.state.logs}); - } - - render () { - return ( - - { - !this.props.enabled ? - - The node you are using does not support Whisper - The node uses an unsupported version of Whisper - : '' - } -

Listen To channel

-
- - this.handleChange(e, 'listenTo')}/> - -
- {this.state.subscribedChannels.map((item, i) =>

{item}

)} -
-

messages received:

-
- {this.state.messageList.map((item, i) =>

{item}

)} -
-
-
- -

Send Message

-
- - this.handleChange(e, 'channel')}/> - this.handleChange(e, 'message')}/> - - -
- -

Javascript calls being made:

-
-

EmbarkJS.Messages.setProvider('whisper')

- { - this.state.logs.map((item, i) =>

{item}

) - } -
-
- ); - } -} - -export default Whisper; diff --git a/test_apps/coverage_app/app/dapp.css b/test_apps/coverage_app/app/dapp.css deleted file mode 100644 index 401124e86..000000000 --- a/test_apps/coverage_app/app/dapp.css +++ /dev/null @@ -1,57 +0,0 @@ - -div { - margin: 15px; -} - -.logs { - background-color: black; - font-size: 14px; - color: white; - font-weight: bold; - padding: 10px; - border-radius: 8px; -} - -.tab-content { - border-left: 1px solid #ddd; - border-right: 1px solid #ddd; - border-bottom: 1px solid #ddd; - padding: 10px; - margin: 0px; -} - -.nav-tabs { - margin-bottom: 0; -} - -.status-offline { - vertical-align: middle; - margin-left: 5px; - margin-top: 4px; - width: 12px; - height: 12px; - background: red; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; -} - -.status-online { - vertical-align: middle; - margin-left: 5px; - margin-top: 4px; - width: 12px; - height: 12px; - background: mediumseagreen; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; -} - -input.form-control { - margin-right: 5px; -} - -.alert-result { - margin-left: 0; -} diff --git a/test_apps/coverage_app/app/dapp.js b/test_apps/coverage_app/app/dapp.js deleted file mode 100644 index 4184e0a9b..000000000 --- a/test_apps/coverage_app/app/dapp.js +++ /dev/null @@ -1,76 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import {Tabs, Tab} from 'react-bootstrap'; - -import EmbarkJS from 'Embark/EmbarkJS'; -import Blockchain from './components/blockchain'; -import Whisper from './components/whisper'; -import Storage from './components/storage'; -import ENS from './components/ens'; - -import './dapp.css'; - -class App extends React.Component { - - constructor(props) { - super(props); - - this.handleSelect = this.handleSelect.bind(this); - - this.state = { - activeKey: 1, - whisperEnabled: false, - storageEnabled: false, - ensEnabled: false - }; - } - - componentDidMount() { - EmbarkJS.onReady(() => { - EmbarkJS.Messages.Providers.whisper.getWhisperVersion((err, _version) => { - if (err) { - return console.log(err); - } - this.setState({whisperEnabled: true}); - }); - }); - } - - _renderStatus(title, available) { - let className = available ? 'pull-right status-online' : 'pull-right status-offline'; - return - {title} - - ; - } - - handleSelect(key) { - if (key === 2) { - EmbarkJS.Names.setProvider('ipns', {server: 'localhost', port: '5001'}); - } else if (key === 4) { - EmbarkJS.Names.currentNameSystems = this.state.ensNameSystems - } - this.setState({ activeKey: key }); - } - - render() { - return (

Embark - Usage Example

- - - - - - - - - - - - - - -
); - } -} - -ReactDOM.render(, document.getElementById('app')); diff --git a/test_apps/coverage_app/app/images/.gitkeep b/test_apps/coverage_app/app/images/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/test_apps/coverage_app/app/index.html b/test_apps/coverage_app/app/index.html deleted file mode 100644 index 55521af61..000000000 --- a/test_apps/coverage_app/app/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - Embark - SimpleStorage Demo - - - - -
-
- - - diff --git a/test_apps/coverage_app/config/blockchain.js b/test_apps/coverage_app/config/blockchain.js deleted file mode 100644 index 6ef6cad96..000000000 --- a/test_apps/coverage_app/config/blockchain.js +++ /dev/null @@ -1,79 +0,0 @@ -module.exports = { - development: { - enabled: true, - networkType: "custom", // Can be: testnet, rinkeby, livenet or custom, in which case, it will use the specified networkId - networkId: "1337", // Network id used when networkType is custom - isDev: true, // Uses and ephemeral proof-of-authority network with a pre-funded developer account, mining enabled - datadir: ".embark/development/datadir", // Data directory for the databases and keystore - mineWhenNeeded: true, // Uses our custom script (if isDev is false) to mine only when needed - nodiscover: true, // Disables the peer discovery mechanism (manual peer addition) - maxpeers: 0, // Maximum number of network peers (network disabled if set to 0) (default: 25) - rpcHost: "localhost", // HTTP-RPC server listening interface (default: "localhost") - rpcPort: 8545, // HTTP-RPC server listening port (default: 8545) - rpcCorsDomain: "auto", // Comma separated list of domains from which to accept cross origin requests (browser enforced) - // When set to "auto", Embark will automatically set the cors to the address of the webserver - proxy: true, // Proxy is used to present meaningful information about transactions - targetGasLimit: 8000000, // Target gas limit sets the artificial target gas floor for the blocks to mine - wsRPC: true, // Enable the WS-RPC server - wsOrigins: "http://localhost:8000,http://localhost:8080,embark", // Origins from which to accept websockets requests - // When set to "auto", Embark will automatically set the cors to the address of the webserver - wsHost: "localhost", // WS-RPC server listening interface (default: "localhost") - wsPort: 8546, // WS-RPC server listening port (default: 8546) - simulatorBlocktime: 0 // Specify blockTime in seconds for automatic mining. Default is 0 and no auto-mining. - }, - privatenet: { - enabled: true, - networkType: "custom", - networkId: "1337", - isDev: false, - genesisBlock: "config/privatenet/genesis.json", // Genesis block to initiate on first creation of a development node - datadir: ".embark/privatenet/datadir", - mineWhenNeeded: true, - nodiscover: true, - maxpeers: 0, - rpcHost: "localhost", - rpcPort: 8545, - rpcCorsDomain: "auto", - proxy: true, - accounts: [ - { - nodeAccounts: true, - password: "config/privatenet/password" // Password to unlock the account - } - ], - targetGasLimit: 8000000, - wsRPC: true, - wsOrigins: "auto", - wsHost: "localhost", - wsPort: 8546, - simulatorBlocktime: 0 - }, - testnet: { - enabled: true, - networkType: "testnet", - syncMode: "light", - rpcHost: "localhost", - rpcPort: 8545, - rpcCorsDomain: "http://localhost:8000", - accounts: [ - { - nodeAccounts: true, - password: "config/testnet/password" // Password to unlock the account - } - ] - }, - livenet: { - enabled: true, - networkType: "livenet", - syncMode: "light", - rpcHost: "localhost", - rpcPort: 8545, - rpcCorsDomain: "http://localhost:8000", - accounts: [ - { - nodeAccounts: true, - password: "config/livenet/password" // Password to unlock the account - } - ] - } -}; diff --git a/test_apps/coverage_app/config/communication.js b/test_apps/coverage_app/config/communication.js deleted file mode 100644 index 8c4d1f918..000000000 --- a/test_apps/coverage_app/config/communication.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - default: { - enabled: true, - provider: "whisper", // Communication provider. Currently, Embark only supports whisper - available_providers: ["whisper"], // Array of available providers - connection: { - host: "localhost", // Host of the blockchain node - port: 8546, // Port of the blockchain node - type: "ws" // Type of connection (ws or rpc) - } - } -}; diff --git a/test_apps/coverage_app/config/contracts.js b/test_apps/coverage_app/config/contracts.js deleted file mode 100644 index 008441466..000000000 --- a/test_apps/coverage_app/config/contracts.js +++ /dev/null @@ -1,41 +0,0 @@ -module.exports = { - // default applies to all environments - default: { - // Blockchain node to deploy the contracts - deployment: { - host: "localhost", // Host of the blockchain node - port: 8546, // Port of the blockchain node - type: "ws" // Type of connection (ws or rpc), - // Accounts to use instead of the default account to populate your wallet - /*,accounts: [ - { - privateKey: "your_private_key", - balance: "5 ether" // You can set the balance of the account in the dev environment - // Balances are in Wei, but you can specify the unit with its name - }, - { - privateKeyFile: "path/to/file" // You can put more than one key, separated by , or ; - }, - { - mnemonic: "12 word mnemonic", - addressIndex: "0", // Optionnal. The index to start getting the address - numAddresses: "1", // Optionnal. The number of addresses to get - hdpath: "m/44'/60'/0'/0/" // Optionnal. HD derivation path - } - ]*/ - }, - // order of connections the dapp should connect to - dappConnection: [ - "$WEB3", // uses pre existing web3 object if available (e.g in Mist) - "ws://localhost:8546", - "http://localhost:8545" - ], - gas: "auto", - contracts: { - SimpleStorage: { - fromIndex: 0, - args: [100] - } - } - } -}; diff --git a/test_apps/coverage_app/config/namesystem.js b/test_apps/coverage_app/config/namesystem.js deleted file mode 100644 index 4e9891ac1..000000000 --- a/test_apps/coverage_app/config/namesystem.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - default: { - available_providers: ["ens", "ipns"], - provider: "ens", - register: { - rootDomain: "embark.eth", - subdomains: { - 'status': '0x1a2f3b98e434c02363f3dac3174af93c1d690914' - } - } - } -}; diff --git a/test_apps/coverage_app/config/privatenet/genesis.json b/test_apps/coverage_app/config/privatenet/genesis.json deleted file mode 100644 index a67418b85..000000000 --- a/test_apps/coverage_app/config/privatenet/genesis.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "config": { - "homesteadBlock": 0, - "byzantiumBlock": 0, - "daoForkSupport": true - }, - "nonce": "0x0000000000000042", - "difficulty": "0x0", - "alloc": { - "0x3333333333333333333333333333333333333333": {"balance": "15000000000000000000"} - }, - "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "coinbase": "0x3333333333333333333333333333333333333333", - "timestamp": "0x00", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x", - "gasLimit": "0x7a1200" -} diff --git a/test_apps/coverage_app/config/privatenet/password b/test_apps/coverage_app/config/privatenet/password deleted file mode 100644 index c747d679e..000000000 --- a/test_apps/coverage_app/config/privatenet/password +++ /dev/null @@ -1 +0,0 @@ -dev_password diff --git a/test_apps/coverage_app/config/storage.js b/test_apps/coverage_app/config/storage.js deleted file mode 100644 index 7ea9de274..000000000 --- a/test_apps/coverage_app/config/storage.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = { - default: { - enabled: true, - ipfs_bin: "ipfs", - available_providers: ["ipfs"], - upload: { - provider: "ipfs", - host: "localhost", - port: 5001 - }, - dappConnection: [ - { - provider:"ipfs", - host: "localhost", - port: 5001, - getUrl: "http://localhost:8080/ipfs/" - } - ] - // Configuration to start Swarm in the same terminal as `embark run` - /*,account: { - address: "YOUR_ACCOUNT_ADDRESS", // Address of account accessing Swarm - password: "PATH/TO/PASSWORD/FILE" // File containing the password of the account - }, - swarmPath: "PATH/TO/SWARM/EXECUTABLE" // Path to swarm executable (default: swarm)*/ - }, - development: { - enabled: true, - upload: { - provider: "ipfs", - host: "localhost", - port: 5001, - getUrl: "http://localhost:8080/ipfs/" - } - } -}; diff --git a/test_apps/coverage_app/config/testnet/password b/test_apps/coverage_app/config/testnet/password deleted file mode 100644 index 414f84905..000000000 --- a/test_apps/coverage_app/config/testnet/password +++ /dev/null @@ -1 +0,0 @@ -test_password diff --git a/test_apps/coverage_app/config/webserver.js b/test_apps/coverage_app/config/webserver.js deleted file mode 100644 index 1814065d0..000000000 --- a/test_apps/coverage_app/config/webserver.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - enabled: true, - host: "localhost", - port: 8000 -}; diff --git a/test_apps/coverage_app/contracts/branches.sol b/test_apps/coverage_app/contracts/branches.sol deleted file mode 100644 index e661f7e3a..000000000 --- a/test_apps/coverage_app/contracts/branches.sol +++ /dev/null @@ -1,40 +0,0 @@ -pragma solidity ^0.5.0; - -contract Branches { - uint public lastComparison; - uint public storedData; - - constructor(uint initialValue) public { - storedData = initialValue; - } - - function bigger(uint x) public returns (uint biggest) { - lastComparison = x; - - if(x > storedData) { - storedData = x; - return x; - } else { - return storedData; - } - } - - function smaller(uint x) public returns (uint smallest) { - lastComparison = x; - - if(x < storedData) { - return x; - } else { - return storedData; - } - } - - function get() public view returns (uint retVal) { - return storedData; - } - - function smallFunctionWithoutStatements() public view returns (uint retVal) { - if(false) return storedData * 10; - if(true) return storedData * 20; - } -} diff --git a/test_apps/coverage_app/contracts/events.sol b/test_apps/coverage_app/contracts/events.sol deleted file mode 100644 index 0f6045d9a..000000000 --- a/test_apps/coverage_app/contracts/events.sol +++ /dev/null @@ -1,16 +0,0 @@ -pragma solidity ^0.5.0; - -contract Events { - uint public balance; - - event Deposit(uint value); - - constructor(uint initialValue) public { - balance = initialValue; - } - - function deposit(uint x) public { - balance = balance + x; - emit Deposit(x); - } -} diff --git a/test_apps/coverage_app/contracts/loops.sol b/test_apps/coverage_app/contracts/loops.sol deleted file mode 100644 index caf72d52d..000000000 --- a/test_apps/coverage_app/contracts/loops.sol +++ /dev/null @@ -1,21 +0,0 @@ -pragma solidity ^0.5.0; - -contract Loops { - uint public storedData; - - constructor(uint initialValue) public { - storedData = initialValue; - } - - - function set(uint x) public { - for(uint i = storedData; i < x; i++) { - uint newValue = storedData + x; - storedData = newValue; - } - } - - function get() public view returns (uint retVal) { - return storedData; - } -} diff --git a/test_apps/coverage_app/contracts/modifiers.sol b/test_apps/coverage_app/contracts/modifiers.sol deleted file mode 100644 index f3ca062b2..000000000 --- a/test_apps/coverage_app/contracts/modifiers.sol +++ /dev/null @@ -1,25 +0,0 @@ -pragma solidity ^0.5.0; - -contract Modifiers { - uint public storedData; - - constructor(uint initialValue) public { - storedData = initialValue; - } - - modifier upTo(uint amount, uint desired) { - require( - desired <= amount, - "Value is too high." - ); - _; - } - - function set(uint x) public upTo(1000, x) { - storedData = x; - } - - function get() public view returns (uint retVal) { - return storedData; - } -} diff --git a/test_apps/coverage_app/contracts/simple_storage.sol b/test_apps/coverage_app/contracts/simple_storage.sol deleted file mode 100644 index a845284a2..000000000 --- a/test_apps/coverage_app/contracts/simple_storage.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity ^0.5.0; - -contract SimpleStorage { - uint public storedData; - - constructor(uint initialValue) public { - storedData = initialValue; - } - - function set(uint x) public { - storedData = x; - } - - function get() public view returns (uint retVal) { - return storedData; - } -} diff --git a/test_apps/coverage_app/embark.json b/test_apps/coverage_app/embark.json deleted file mode 100644 index 840ac4fbd..000000000 --- a/test_apps/coverage_app/embark.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "contracts": ["contracts/**"], - "app": { - "js/dapp.js": ["app/dapp.js"], - "index.html": "app/index.html", - "images/": ["app/images/**"] - }, - "buildDir": "dist/", - "config": "config/", - "versions": { - "web3": "1.0.0-beta", - "solc": "0.5.0", - "ipfs-api": "17.2.4" - }, - "plugins": { - } -} diff --git a/test_apps/coverage_app/package-lock.json b/test_apps/coverage_app/package-lock.json deleted file mode 100644 index 6c2ea9a22..000000000 --- a/test_apps/coverage_app/package-lock.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "name": "app_name", - "version": "0.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" - } - } - }, - "classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" - }, - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - }, - "dom-helpers": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.3.1.tgz", - "integrity": "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg==" - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "~0.4.13" - } - }, - "fbjs": { - "version": "0.8.17", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", - "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" - } - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "keycode": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz", - "integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ=" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - }, - "prop-types": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", - "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", - "requires": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" - } - }, - "prop-types-extra": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.0.tgz", - "integrity": "sha512-QFyuDxvMipmIVKD2TwxLVPzMnO4e5oOf1vr3tJIomL8E7d0lr6phTHd5nkPhFIzTD1idBLLEPeylL9g+rrTzRg==", - "requires": { - "react-is": "^16.3.2", - "warning": "^3.0.0" - } - }, - "react": { - "version": "16.4.2", - "resolved": "https://registry.npmjs.org/react/-/react-16.4.2.tgz", - "integrity": "sha512-dMv7YrbxO4y2aqnvA7f/ik9ibeLSHQJTI6TrYAenPSaQ6OXfb+Oti+oJiy8WBxgRzlKatYqtCjphTgDSCEiWFg==", - "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.0" - } - }, - "react-bootstrap": { - "version": "0.32.1", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.32.1.tgz", - "integrity": "sha512-RbfzKUbsukWsToWqGHfCCyMFq9QQI0TznutdyxyJw6dih2NvIne25Mrssg8LZsprqtPpyQi8bN0L0Fx3fUsL8Q==", - "requires": { - "babel-runtime": "^6.11.6", - "classnames": "^2.2.5", - "dom-helpers": "^3.2.0", - "invariant": "^2.2.1", - "keycode": "^2.1.2", - "prop-types": "^15.5.10", - "prop-types-extra": "^1.0.1", - "react-overlays": "^0.8.0", - "react-prop-types": "^0.4.0", - "react-transition-group": "^2.0.0", - "uncontrollable": "^4.1.0", - "warning": "^3.0.0" - } - }, - "react-dom": { - "version": "16.4.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.2.tgz", - "integrity": "sha512-Usl73nQqzvmJN+89r97zmeUpQDKDlh58eX6Hbs/ERdDHzeBzWy+ENk7fsGQ+5KxArV1iOFPT46/VneklK9zoWw==", - "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.0" - } - }, - "react-is": { - "version": "16.4.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.4.2.tgz", - "integrity": "sha512-rI3cGFj/obHbBz156PvErrS5xc6f1eWyTwyV4mo0vF2lGgXgS+mm7EKD5buLJq6jNgIagQescGSVG2YzgXt8Yg==" - }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "react-overlays": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.8.3.tgz", - "integrity": "sha512-h6GT3jgy90PgctleP39Yu3eK1v9vaJAW73GOA/UbN9dJ7aAN4BTZD6793eI1D5U+ukMk17qiqN/wl3diK1Z5LA==", - "requires": { - "classnames": "^2.2.5", - "dom-helpers": "^3.2.1", - "prop-types": "^15.5.10", - "prop-types-extra": "^1.0.1", - "react-transition-group": "^2.2.0", - "warning": "^3.0.0" - } - }, - "react-prop-types": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.4.0.tgz", - "integrity": "sha1-+ZsL+0AGkpya8gUefBQUpcdbk9A=", - "requires": { - "warning": "^3.0.0" - } - }, - "react-transition-group": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.4.0.tgz", - "integrity": "sha512-Xv5d55NkJUxUzLCImGSanK8Cl/30sgpOEMGc5m86t8+kZwrPxPCPcFqyx83kkr+5Lz5gs6djuvE5By+gce+VjA==", - "requires": { - "dom-helpers": "^3.3.1", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-lifecycles-compat": "^3.0.4" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "ua-parser-js": { - "version": "0.7.18", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz", - "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==" - }, - "uncontrollable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz", - "integrity": "sha1-4DWCkSUuGGUiLZCTmxny9J+Bwak=", - "requires": { - "invariant": "^2.1.0" - } - }, - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - } - } -} diff --git a/test_apps/coverage_app/package.json b/test_apps/coverage_app/package.json deleted file mode 100644 index 6198d0af2..000000000 --- a/test_apps/coverage_app/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "coverage_app", - "version": "0.0.1", - "description": "", - "main": "Gruntfile.js", - "scripts": { - "coverage": "istanbul report --root .embark --format html", - "embark": "node ../../bin/embark", - "test": "npm run embark test" - }, - "author": "", - "license": "ISC", - "homepage": "", - "dependencies": { - "react": "^16.3.2", - "react-bootstrap": "^0.32.1", - "react-dom": "^16.3.2", - "istanbul": "^0.4.5" - } -} diff --git a/test_apps/coverage_app/test/branches_spec.js b/test_apps/coverage_app/test/branches_spec.js deleted file mode 100644 index 593c15b61..000000000 --- a/test_apps/coverage_app/test/branches_spec.js +++ /dev/null @@ -1,35 +0,0 @@ -/*global contract, config, it, assert*/ -const Branches = require('Embark/contracts/Branches'); - -config({ - contracts: { - "Branches": { - args: [5] - } - } -}); - -contract("Branches", function() { - it("should return the bigger value and set it", function(done) { - Branches.methods.bigger(10).send().then(() => { - Branches.methods.get().call().then((result) => { - assert.strictEqual(parseInt(result, 10), 10); - done(); - }); - }); - }); - - it("should return the set number if it's bigger", function(done) { - Branches.methods.bigger(1).send().then(() => { - done(); - }); - }); - - it("should return the smaller number", function(done) { - Branches.methods.smaller(10).send().then(() => { done(); }); - }); - - it("should not crash code coverage on `if` without statements", function(done) { - Branches.methods.smallFunctionWithoutStatements().call().then(() => { done(); }); - }); -}); diff --git a/test_apps/coverage_app/test/events_spec.js b/test_apps/coverage_app/test/events_spec.js deleted file mode 100644 index a6e46bfa0..000000000 --- a/test_apps/coverage_app/test/events_spec.js +++ /dev/null @@ -1,16 +0,0 @@ -/*global contract, config, it, assert*/ -const Events = require('Embark/contracts/Events'); - -config({ - contracts: { - "Events": { - args: [100] - } - } -}); - -contract("Events", function() { - it("should deposit", function(done) { - Events.methods.deposit(10).send().then(() => { done(); }); - }); -}); diff --git a/test_apps/coverage_app/test/loops_spec.js b/test_apps/coverage_app/test/loops_spec.js deleted file mode 100644 index 4e5c9c6c9..000000000 --- a/test_apps/coverage_app/test/loops_spec.js +++ /dev/null @@ -1,28 +0,0 @@ -/*global contract, config, it, assert*/ -const Loops = require('Embark/contracts/Loops'); - -config({ - contracts: { - "Loops": { - args: [1] - } - } -}); - -contract("Loops", function() { - it("should set constructor value", function(done) { - Loops.methods.storedData().call().then((result) => { - assert.strictEqual(parseInt(result, 10), 1); - done(); - }); - }); - - it("set storage value", function(done) { - Loops.methods.set(5).send().then(() => { - Loops.methods.get().call().then((result) => { - assert.strictEqual(parseInt(result, 10), 21); - done(); - }); - }); - }); -}); diff --git a/test_apps/coverage_app/test/modifiers_spec.js b/test_apps/coverage_app/test/modifiers_spec.js deleted file mode 100644 index ea6d8afa9..000000000 --- a/test_apps/coverage_app/test/modifiers_spec.js +++ /dev/null @@ -1,34 +0,0 @@ -/*global contract, config, it, assert*/ -const Modifiers = require('Embark/contracts/Modifiers'); - -config({ - contracts: { - "Modifiers": { - args: [100] - } - } -}); - -contract("Modifiers", function() { - it("should set constructor value", function(done) { - Modifiers.methods.storedData().call().then((result) => { - assert.strictEqual(parseInt(result, 10), 100); - done(); - }); - }); - - it("set storage value when valid", function(done) { - Modifiers.methods.set(150).send().then(() => { - Modifiers.methods.get().call().then((result) => { - assert.strictEqual(parseInt(result, 10), 150); - done(); - }); - }); - }); - - it("refuses storage value when invalid", function(done) { - Modifiers.methods.set(10000).send().catch((_err) => { - done(); - }); - }); -}); diff --git a/test_apps/coverage_app/test/simple_storage_spec.js b/test_apps/coverage_app/test/simple_storage_spec.js deleted file mode 100644 index cbcdf3363..000000000 --- a/test_apps/coverage_app/test/simple_storage_spec.js +++ /dev/null @@ -1,28 +0,0 @@ -/*global contract, config, it, assert*/ -const SimpleStorage = require('Embark/contracts/SimpleStorage'); - -config({ - contracts: { - "SimpleStorage": { - args: [100] - } - } -}); - -contract("SimpleStorage", function() { - it("should set constructor value", function(done) { - SimpleStorage.methods.storedData().call().then((result) => { - assert.strictEqual(parseInt(result, 10), 100); - done(); - }); - }); - - it("set storage value", function(done) { - SimpleStorage.methods.set(150).send().then(() => { - SimpleStorage.methods.get().call().then((result) => { - assert.strictEqual(parseInt(result, 10), 150); - done(); - }); - }); - }); -}); diff --git a/yarn.lock b/yarn.lock index 76f5aaa1d..72c38a548 100644 --- a/yarn.lock +++ b/yarn.lock @@ -843,6 +843,11 @@ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.30.tgz#dc1e40f7af3b9c815013a7860e6252f6352a84df" integrity sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ== +"@types/events@*": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" + integrity sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA== + "@types/fs-extra@^5.0.2": version "5.0.4" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.0.4.tgz#b971134d162cc0497d221adde3dbb67502225599" @@ -850,6 +855,23 @@ dependencies: "@types/node" "*" +"@types/glob@*": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/globule@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@types/globule/-/globule-1.1.3.tgz#07610e53848779830c2ad337c09f0b34af933f14" + integrity sha1-B2EOU4SHeYMMKtM3wJ8LNK+TPxQ= + dependencies: + "@types/glob" "*" + "@types/minimatch" "*" + "@types/handlebars@4.0.39": version "4.0.39" resolved "https://registry.yarnpkg.com/@types/handlebars/-/handlebars-4.0.39.tgz#961fb54db68030890942e6aeffe9f93a957807bd" @@ -865,6 +887,11 @@ resolved "https://registry.yarnpkg.com/@types/lockfile/-/lockfile-1.0.0.tgz#76a7c19c50fe8ee2b1666d653ff5d557c30fe0ff" integrity sha512-pD6JuijPmrfi84qF3/TzGQ7zi0QIX+d7ZdetD6jUA6cp+IsCzAquXZfi5viesew+pfpOTIdAVKuh1SHA7KeKzg== +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + "@types/node-fetch@^1.6.8": version "1.6.9" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-1.6.9.tgz#a750fb0f4cf2960bf72b462e4c86908022dd69c5" @@ -1102,6 +1129,27 @@ abbrev@1.0.x: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= +abstract-leveldown@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz#5cb89f958a44f526779d740d1440e743e0c30a57" + integrity sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@^2.4.1, abstract-leveldown@~2.7.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" + integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz#f7128e1f86ccabf7d2893077ce5d06d798e386c6" + integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== + dependencies: + xtend "~4.0.0" + abstract-leveldown@~2.6.0: version "2.6.3" resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" @@ -1109,13 +1157,6 @@ abstract-leveldown@~2.6.0: dependencies: xtend "~4.0.0" -abstract-leveldown@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" - integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== - dependencies: - xtend "~4.0.0" - accepts@~1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" @@ -1161,6 +1202,11 @@ aes-js@^0.2.3: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-0.2.4.tgz#94b881ab717286d015fa219e08fb66709dda5a3d" integrity sha1-lLiBq3FyhtAV+iGeCPtmcJ3aWj0= +aes-js@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + ajv-errors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" @@ -1472,6 +1518,12 @@ async-eventemitter@^0.2.2: dependencies: async "^2.4.0" +async-eventemitter@ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c: + version "0.2.3" + resolved "https://codeload.github.com/ahultgren/async-eventemitter/tar.gz/fa06e39e56786ba541c180061dbf2c0a5bbf951c" + dependencies: + async "^2.4.0" + async-foreach@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" @@ -1482,7 +1534,7 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== -async@1.x, async@^1.4.2, async@~1.5.2: +async@1.x, async@^1.4.2, async@^1.5.2, async@~1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= @@ -1523,6 +1575,158 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" +babel-core@^6.0.14, babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-loader@8.0.4: version "8.0.4" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.4.tgz#7bbf20cbe4560629e2e41534147692d3fecbdce6" @@ -1533,6 +1737,20 @@ babel-loader@8.0.4: mkdirp "^0.5.1" util.promisify "^1.0.0" +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + dependencies: + babel-runtime "^6.22.0" + babel-plugin-dynamic-import-node@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz#c0adfb07d95f4a4495e9aaac6ec386c4d7c2524e" @@ -1559,11 +1777,362 @@ babel-plugin-module-resolver@3.1.1: reselect "^3.0.1" resolve "^1.4.0" +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + babel-plugin-transform-react-remove-prop-types@0.4.18: version "0.4.18" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.18.tgz#85ff79d66047b34288c6f7cc986b8854ab384f8c" integrity sha512-azed2nHo8vmOy7EY26KH+om5oOcWRs0r1U8wOmhwta+SBMMnmJ4H6yaBZRCcHBtMeWp9AVhvBTL/lpR1kEx+Xw== +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babelify@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" + integrity sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU= + dependencies: + babel-core "^6.0.14" + object-assign "^4.0.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +backoff@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" + integrity sha1-9hbtqdPktmuMp/ynn2lXIsX44m8= + dependencies: + precond "0.2" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -1695,16 +2264,16 @@ bn.js@4.11.6: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= +bn.js@4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.3, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0, bn.js@^4.8.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + bn.js@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-1.3.0.tgz#0db4cbf96f8f23b742f5bcb9d1aa7a9994a05e83" integrity sha1-DbTL+W+PI7dC9by50ap6mZSgXoM= -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.0, bn.js@^4.11.3, bn.js@^4.11.6, bn.js@^4.4.0, bn.js@^4.8.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - body-parser@1.18.2: version "1.18.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" @@ -1848,6 +2417,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + browserslist@^4.1.0: version "4.3.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.4.tgz#4477b737db6a1b07077275b24791e680d4300425" @@ -1869,7 +2446,7 @@ bs58@^3.1.0: dependencies: base-x "^1.1.0" -bs58@^4.0.1: +bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= @@ -1884,6 +2461,15 @@ bs58check@^1.0.8: bs58 "^3.1.0" create-hash "^1.1.0" +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" @@ -1973,6 +2559,21 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= +bytewise-core@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" + integrity sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI= + dependencies: + typewise-core "^1.2" + +bytewise@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" + integrity sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4= + dependencies: + bytewise-core "^1.2.2" + typewise "^1.0.3" + cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" @@ -2007,6 +2608,14 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cachedown@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" + integrity sha1-1D8DbkUQaWsxJG19sx6/D3rDLRU= + dependencies: + abstract-leveldown "^2.4.1" + lru-cache "^3.2.0" + caching-transform@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-2.0.0.tgz#e1292bd92d35b6e8b1ed7075726724b3bd64eea0" @@ -2098,6 +2707,11 @@ camelize@1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= +caniuse-lite@^1.0.30000844: + version "1.0.30000921" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000921.tgz#7a607c1623444b22351d834e093aedda3c42fbe8" + integrity sha512-Bu09ciy0lMWLgpYC77I0YGuI8eFRBPPzaSOYJK1jTI64txCphYCqnWbxJYjHABYVt/TYX/p3jNjLBR87u1Bfpw== + caniuse-lite@^1.0.30000899: version "1.0.30000912" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000912.tgz#08e650d4090a9c0ab06bfd2b46b7d3ad6dcaea28" @@ -2333,6 +2947,11 @@ clone-deep@^2.0.1: kind-of "^6.0.0" shallow-clone "^1.0.0" +clone@2.1.2, clone@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -2688,7 +3307,7 @@ conventional-recommended-bump@^1.0.0: meow "^3.3.0" object-assign "^4.0.1" -convert-source-map@^1.1.0, convert-source-map@^1.6.0: +convert-source-map@^1.1.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== @@ -2727,6 +3346,11 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +core-js@^2.4.0, core-js@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.0.tgz#1e30793e9ee5782b307e37ffa22da0eacddd84d4" + integrity sha512-kLRC6ncVpuEW/1kwrOXYX6KQASCVtrh1gQr/UiaVgFlf9WE5Vp+lNe5+h3LuMr5PAucWnnEXwH0nQHRH/gpGtw== + core-js@^2.5.7: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" @@ -2794,6 +3418,14 @@ cross-env@5.2.0: cross-spawn "^6.0.5" is-windows "^1.0.0" +cross-fetch@^2.1.0, cross-fetch@^2.1.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.3.tgz#e8a0b3c54598136e037f8650f8e823ccdfac198e" + integrity sha512-PrWWNH3yL2NYIb/7WF/5vFG3DCQiXDOVf8k3ijatbrtnwNuhMWLC7YF7uqf53tbTFDzHIUD8oITw4Bxt8ST3Nw== + dependencies: + node-fetch "2.1.2" + whatwg-fetch "2.0.4" + cross-spawn@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" @@ -2952,7 +3584,7 @@ debug@*, debug@^4.0.1, debug@^4.1.0: dependencies: ms "^2.1.1" -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: +debug@2.6.9, debug@^2.1.2, 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" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -3058,7 +3690,7 @@ deep-eql@^3.0.0: dependencies: type-detect "^4.0.0" -deep-equal@1.0.1: +deep-equal@1.0.1, deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= @@ -3094,6 +3726,14 @@ deferred-leveldown@~1.2.1: dependencies: abstract-leveldown "~2.6.0" +deferred-leveldown@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz#0b0570087827bf480a23494b398f04c128c19a20" + integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== + dependencies: + abstract-leveldown "~5.0.0" + inherits "^2.0.3" + define-properties@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -3123,6 +3763,11 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +defined@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -3161,6 +3806,13 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + dependencies: + repeating "^2.0.0" + detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -3315,6 +3967,11 @@ ejs@2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== +electron-to-chromium@^1.3.47: + version "1.3.92" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.92.tgz#9027b5abaea400045edd652c0e4838675c814399" + integrity sha512-En051LMzMl3/asMWGZEtU808HOoVWIpmmZx1Ep8N+TT9e7z/X8RcLeBU2kLSNLGQ+5SuKELzMx+MVuTBXk6Q9w== + electron-to-chromium@^1.3.82: version "1.3.85" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.85.tgz#5c46f790aa96445cabc57eb9d17346b1e46476fe" @@ -3369,6 +4026,24 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding-down@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-5.0.4.tgz#1e477da8e9e9d0f7c8293d320044f8b2cd8e9614" + integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== + dependencies: + abstract-leveldown "^5.0.0" + inherits "^2.0.3" + level-codec "^9.0.0" + level-errors "^2.0.0" + xtend "^4.0.1" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -3411,7 +4086,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.4.3, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.7.0: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== @@ -3584,6 +4259,33 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +eth-block-tracker@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-2.3.1.tgz#ab6d177e5b50128fa06d7ae9e0489c7484bac95e" + integrity sha512-NamWuMBIl8kmkJFVj8WzGatySTzQPQag4Xr677yFxdVtIxACFbL/dQowk0MzEqIKk93U1TwY3MjVU6mOcwZnKA== + dependencies: + async-eventemitter ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c + eth-query "^2.1.0" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.3" + ethjs-util "^0.1.3" + json-rpc-engine "^3.6.0" + pify "^2.3.0" + tape "^4.6.3" + +eth-block-tracker@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz#95cd5e763c7293e0b1b2790a2a39ac2ac188a5e1" + integrity sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug== + dependencies: + eth-query "^2.1.0" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.3" + ethjs-util "^0.1.3" + json-rpc-engine "^3.6.0" + pify "^2.3.0" + tape "^4.6.3" + eth-ens-namehash@2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" @@ -3592,6 +4294,36 @@ eth-ens-namehash@2.0.8: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" +eth-json-rpc-infura@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.1.2.tgz#04c5d0cee98619e93ba8a9842492b771b316e83a" + integrity sha512-IuK5Iowfs6taluA/3Okmu6EfZcFMq6MQuyrUL1PrCoJstuuBr3TvVeSy3keDyxfbrjFB34nCo538I8G+qMtsbw== + dependencies: + cross-fetch "^2.1.1" + eth-json-rpc-middleware "^1.5.0" + json-rpc-engine "^3.4.0" + json-rpc-error "^2.0.0" + tape "^4.8.0" + +eth-json-rpc-middleware@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz#5c9d4c28f745ccb01630f0300ba945f4bef9593f" + integrity sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q== + dependencies: + async "^2.5.0" + eth-query "^2.1.2" + eth-tx-summary "^3.1.2" + ethereumjs-block "^1.6.0" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.2" + ethereumjs-vm "^2.1.0" + fetch-ponyfill "^4.0.0" + json-rpc-engine "^3.6.0" + json-rpc-error "^2.0.0" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + tape "^4.6.3" + eth-lib@0.1.27, eth-lib@^0.1.26, eth-lib@^0.1.27: version "0.1.27" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.27.tgz#f0b0fd144f865d2d6bf8257a40004f2e75ca1dd6" @@ -3623,6 +4355,54 @@ eth-lib@0.2.7: elliptic "^6.4.0" xhr-request-promise "^0.1.2" +eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" + integrity sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= + dependencies: + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" + +eth-sig-util@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.0.2.tgz#bfdb274293620404b7631019dc3d7f17bb2e06f4" + integrity sha512-tB6E8jf/aZQ943bo3+iojl8xRe3Jzcl+9OT6v8K7kWis6PdIX19SB2vYvN849cB9G9m/XLjYFK381SgdbsnpTA== + dependencies: + ethereumjs-abi "0.6.5" + ethereumjs-util "^5.1.1" + +eth-sig-util@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" + integrity sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA= + dependencies: + ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" + ethereumjs-util "^5.1.1" + +eth-tx-summary@^3.1.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/eth-tx-summary/-/eth-tx-summary-3.2.3.tgz#a52d7215616888e012fbc083b3eacd28f3e64764" + integrity sha512-1gZpA5fKarJOVSb5OUlPnhDQuIazqAkI61zlVvf5LdG47nEgw+/qhyZnuj3CUdE/TLTKuRzPLeyXLjaB4qWTRQ== + dependencies: + async "^2.1.2" + bn.js "^4.11.8" + clone "^2.0.0" + concat-stream "^1.5.1" + end-of-stream "^1.1.0" + eth-query "^2.0.2" + ethereumjs-block "^1.4.1" + ethereumjs-tx "^1.1.1" + ethereumjs-util "^5.0.1" + ethereumjs-vm "2.3.4" + through2 "^2.0.3" + treeify "^1.0.1" + web3-provider-engine "^13.3.2" + +ethereum-common@0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.16.tgz#9a1e169ead34ab75e089f50ca512bfd0fbd12655" + integrity sha1-mh4Wnq00q3XgifUMpRK/0PvRJlU= + ethereum-common@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" @@ -3633,7 +4413,22 @@ ethereum-common@^0.0.18: resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= -ethereumjs-account@^2.0.3: +ethereumjs-abi@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" + integrity sha1-WmN+8Wq0NHP6cqKa2QhxQFs/UkE= + dependencies: + bn.js "^4.10.0" + ethereumjs-util "^4.3.0" + +"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": + version "0.6.5" + resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799" + dependencies: + bn.js "^4.10.0" + ethereumjs-util "^5.0.0" + +ethereumjs-account@2.0.5, ethereumjs-account@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== @@ -3642,7 +4437,18 @@ ethereumjs-account@^2.0.3: rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-block@^1.6.0, ethereumjs-block@~1.7.0: +ethereumjs-block@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.2.2.tgz#2ec7534a59021b8ec9b83c30e49690c6ebaedda1" + integrity sha1-LsdTSlkCG47JuDww5JaQxuuu3aE= + dependencies: + async "^1.5.2" + ethereum-common "0.0.16" + ethereumjs-tx "^1.0.0" + ethereumjs-util "^4.0.1" + merkle-patricia-tree "^2.1.2" + +ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0, ethereumjs-block@~1.7.0: version "1.7.1" resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== @@ -3653,12 +4459,28 @@ ethereumjs-block@^1.6.0, ethereumjs-block@~1.7.0: ethereumjs-util "^5.0.0" merkle-patricia-tree "^2.1.2" +ethereumjs-block@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.1.0.tgz#71d1b19e18061f14cf6371bf34ba31a359931360" + integrity sha512-ip+x4/7hUInX+TQfhEKsQh9MJK1Dbjp4AuPjf1UdX3udAV4beYD4EMCNIPzBLCsGS8WQZYXLpo83tVTISYNpow== + dependencies: + async "^2.0.1" + ethereumjs-common "^0.6.0" + ethereumjs-tx "^1.2.2" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-common@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-0.6.1.tgz#ec98edf315a7f107afb6acc48e937a8266979fae" + integrity sha512-4jOrfDu9qOBTTGGb3zrfT1tE1Hyc6a8LJpEk0Vk9AYlLkBY7crjVICyJpRvjNI+KLDMpMITMw3eWVZOLMtZdhw== + ethereumjs-common@~0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-0.4.1.tgz#27690a24a817b058cc3a2aedef9392e8d7d63984" integrity sha512-ywYGsOeGCsMNWso5Y4GhjWI24FJv9FK7+VyVKiQgXg8ZRDPXJ7F/kJ1CnjtkjTvDF4e0yqU+FWswlqR3bmZQ9Q== -ethereumjs-tx@1.3.7, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: +ethereumjs-tx@1.3.7, ethereumjs-tx@^1.0.0, ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: version "1.3.7" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== @@ -3666,7 +4488,20 @@ ethereumjs-tx@1.3.7, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: ethereum-common "^0.0.18" ethereumjs-util "^5.0.0" -ethereumjs-util@6.0.0: +ethereumjs-util@5.2.0, ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" + integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "^0.1.3" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + +ethereumjs-util@6.0.0, ethereumjs-util@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.0.0.tgz#f14841c182b918615afefd744207c7932c8536c0" integrity sha512-E3yKUyl0Fs95nvTFQZe/ZSNcofhDzUsDlA5y2uoRmf1+Ec7gpGhNCsgKkZBRh7Br5op8mJcYF/jFbmjj909+nQ== @@ -3679,7 +4514,7 @@ ethereumjs-util@6.0.0: safe-buffer "^5.1.1" secp256k1 "^3.0.1" -ethereumjs-util@^4.4.0, ethereumjs-util@^4.5.0: +ethereumjs-util@^4.0.1, ethereumjs-util@^4.3.0, ethereumjs-util@^4.4.0, ethereumjs-util@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz#3e9428b317eebda3d7260d854fddda954b1f1bc6" integrity sha1-PpQosxfuvaPXJg2FT93alUsfG8Y= @@ -3690,18 +4525,22 @@ ethereumjs-util@^4.4.0, ethereumjs-util@^4.5.0: rlp "^2.0.0" secp256k1 "^3.0.1" -ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.2, ethereumjs-util@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" - integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== +ethereumjs-vm@2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.3.4.tgz#f635d7cb047571a1840a6e9a74d29de4488f8ad6" + integrity sha512-Y4SlzNDqxrCO58jhp98HdnZVdjOqB+HC0hoU+N/DEp1aU+hFkRX/nru5F7/HkQRPIlA6aJlQp/xIA6xZs1kspw== dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "^0.1.3" - keccak "^1.0.2" - rlp "^2.0.0" + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereum-common "0.2.0" + ethereumjs-account "^2.0.3" + ethereumjs-block "~1.7.0" + ethereumjs-util "^5.1.3" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.1.2" + rustbn.js "~0.1.1" safe-buffer "^5.1.1" - secp256k1 "^3.0.1" ethereumjs-vm@2.4.0: version "2.4.0" @@ -3720,6 +4559,23 @@ ethereumjs-vm@2.4.0: rustbn.js "~0.2.0" safe-buffer "^5.1.1" +ethereumjs-vm@^2.0.2, ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.5.0.tgz#71dde54a093bd813c9defdc6d45ceb8fcca2f603" + integrity sha512-Cp1do4J2FIJFnbofqLsKb/aoZKG+Q8NBIbTa1qwZPQkQxzeR3DZVpFk/VbE1EUO6Ha0kSClJ1jzfj07z3cScSQ== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereumjs-account "^2.0.3" + ethereumjs-block "~2.1.0" + ethereumjs-common "^0.6.0" + ethereumjs-util "^6.0.0" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.1.2" + rustbn.js "~0.2.0" + safe-buffer "^5.1.1" + ethereumjs-wallet@0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.0.tgz#82763b1697ee7a796be7155da9dfb49b2f98cfdb" @@ -3733,6 +4589,20 @@ ethereumjs-wallet@0.6.0: utf8 "^2.1.1" uuid "^2.0.1" +ethereumjs-wallet@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.2.tgz#67244b6af3e8113b53d709124b25477b64aeccda" + integrity sha512-DHEKPV9lYORM7dL8602dkb+AgdfzCYz2lxpdYQoD3OwG355LLDuivW9rGuLpDMCry/ORyBYV6n+QCo/71SwACg== + dependencies: + aes-js "^3.1.1" + bs58check "^2.1.2" + ethereumjs-util "^5.2.0" + hdkey "^1.0.0" + safe-buffer "^5.1.2" + scrypt.js "^0.2.0" + utf8 "^3.0.0" + uuid "^3.3.2" + ethers@4.0.0-beta.1: version "4.0.0-beta.1" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.1.tgz#0648268b83e0e91a961b1af971c662cdf8cbab6d" @@ -3801,6 +4671,11 @@ events@^1.0.0: resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -4076,6 +4951,13 @@ fecha@^2.3.3: resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" integrity sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg== +fetch-ponyfill@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" + integrity sha1-rjzl9zLGReq4fkroeTQUcJsjmJM= + dependencies: + node-fetch "~1.7.1" + figures@^1.5.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -4245,7 +5127,7 @@ follow-redirects@^1.0.0: dependencies: debug "=3.1.0" -for-each@^0.3.2: +for-each@^0.3.2, for-each@~0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== @@ -4425,7 +5307,7 @@ fstream@^1.0.0, fstream@^1.0.2, fstream@^1.0.8: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.1: +function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== @@ -4440,12 +5322,48 @@ fuzzy@0.1.3: resolved "https://registry.yarnpkg.com/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8" integrity sha1-THbsL/CsGjap3M+aAN+GIweNTtg= -ganache-cli@6.1.8: - version "6.1.8" - resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.1.8.tgz#49a8a331683a9652183f82ef1378d17e1814fcd3" - integrity sha512-yXzteu4SIgUL31mnpm9j+x6dpHUw0p/nsRVkcySKq0w+1vDxH9jMErP1QhZAJuTVE6ni4nfvGSNkaQx5cD3jfg== +ganache-cli@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.2.3.tgz#8648224e7c54aa86c52125f8fa10fba2f549b149" + integrity sha512-+FYzINouw+yHHG6bT8m6O5xCw5NP6rpSL2keChKlcwgRRFz8SrZS6Q26iJ7ixBp6bk+UMMua8IPZgNFizbdZlQ== dependencies: + bn.js "4.11.8" + ganache-core "^2.3.1" source-map-support "^0.5.3" + yargs "^11.0.0" + +ganache-core@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.3.1.tgz#c22a22edfec9c990e530c7a9736dbf09599b99bb" + integrity sha512-I4t4P+LYUZRnGbxDseqSa5vIJ8C5e35vw5Fr7f2iMMN6jmO5TVjWWgNib60G2iL+XTbYUFmou040hHxrTaNtnA== + dependencies: + abstract-leveldown "3.0.0" + async "2.6.1" + bip39 "2.5.0" + bn.js "4.11.8" + cachedown "1.0.0" + clone "2.1.2" + debug "3.1.0" + encoding-down "5.0.4" + eth-sig-util "2.0.2" + ethereumjs-abi "0.6.5" + ethereumjs-account "2.0.5" + ethereumjs-block "1.2.2" + ethereumjs-tx "1.3.7" + ethereumjs-util "5.2.0" + ethereumjs-vm "2.4.0" + heap "0.2.6" + level-sublevel "6.6.4" + levelup "3.1.1" + lodash "4.17.10" + merkle-patricia-tree "2.3.1" + seedrandom "2.4.4" + tmp "0.0.33" + web3-provider-engine "14.1.0" + websocket "1.0.26" + optionalDependencies: + ethereumjs-wallet "0.6.2" + web3 "1.0.0-beta.35" gauge@~2.7.3: version "2.7.4" @@ -4578,7 +5496,7 @@ glob@7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.3, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: +glob@7.1.3, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1, glob@~7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -4645,6 +5563,11 @@ globals@^11.1.0, globals@^11.7.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== + globule@1.2.1, globule@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" @@ -4813,7 +5736,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1, has@^1.0.3: +has@^1.0.1, has@^1.0.3, has@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -4852,6 +5775,15 @@ hdkey@^0.7.0: coinstring "^2.0.0" secp256k1 "^3.0.1" +hdkey@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-1.1.0.tgz#e74e7b01d2c47f797fa65d1d839adb7a44639f29" + integrity sha512-E7aU8pNlWUJbXGjTz/+lKf1LkMcA3hUrC5ZleeizrmLSd++kvf8mSOe3q8CmBDA9j4hdfXO5iY6hGiTUCOV2jQ== + dependencies: + coinstring "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -4865,6 +5797,11 @@ header-case@^1.0.0: no-case "^2.2.0" upper-case "^1.1.3" +heap@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" + integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= + helmet-crossdomain@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/helmet-crossdomain/-/helmet-crossdomain-0.3.0.tgz#707e2df930f13ad61f76ed08e1bb51ab2b2e85fa" @@ -4923,6 +5860,14 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" @@ -5022,7 +5967,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5379,6 +6324,11 @@ is-finite@^1.0.0: dependencies: number-is-nan "^1.0.0" +is-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" + integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -5492,7 +6442,7 @@ is-retry-allowed@^1.0.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= -is-stream@^1.0.0, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -5715,6 +6665,11 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -5730,6 +6685,30 @@ json-parse-better-errors@1.0.2, json-parse-better-errors@^1.0.1, json-parse-bett resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz#9d4ff447241792e1d0a232f6ef927302bb0c62a9" + integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== + dependencies: + async "^2.0.1" + babel-preset-env "^1.7.0" + babelify "^7.3.0" + json-rpc-error "^2.0.0" + promise-to-callback "^1.0.0" + safe-event-emitter "^1.0.1" + +json-rpc-error@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" + integrity sha1-p6+cICg4tekFxyUOVH8a/3cligI= + dependencies: + inherits "^2.0.1" + +json-rpc-random-id@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" + integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= + json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -5750,6 +6729,13 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -5896,6 +6882,11 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" +level-codec@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.0.tgz#2d3a0e835c4aa8339ec63de3f5a37480b74a5f87" + integrity sha512-OIpVvjCcZNP5SdhcNupnsI1zo5Y9Vpm+k/F1gfG5kXrtctlrwanisakweJtE0uA0OpLukRfOQae+Fg0M5Debhg== + level-codec@~7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" @@ -5908,6 +6899,13 @@ level-errors@^1.0.3: dependencies: errno "~0.1.1" +level-errors@^2.0.0, level-errors@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.0.tgz#2de5b566b62eef92f99e19be74397fbc512563fa" + integrity sha512-AmY4HCp9h3OiU19uG+3YWkdELgy05OTP/r23aNHaQKWv8DO787yZgsEuGVkoph40uwN+YdUKnANlrxSsoOaaxg== + dependencies: + errno "~0.1.1" + level-errors@~1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" @@ -5915,6 +6913,15 @@ level-errors@~1.0.3: dependencies: errno "~0.1.1" +level-iterator-stream@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz#ccfff7c046dcf47955ae9a86f46dfa06a31688b4" + integrity sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.5" + xtend "^4.0.0" + level-iterator-stream@~1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" @@ -5925,6 +6932,38 @@ level-iterator-stream@~1.3.0: readable-stream "^1.0.33" xtend "^4.0.0" +level-iterator-stream@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz#2c98a4f8820d87cdacab3132506815419077c730" + integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.3.6" + xtend "^4.0.0" + +level-post@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/level-post/-/level-post-1.0.7.tgz#19ccca9441a7cc527879a0635000f06d5e8f27d0" + integrity sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew== + dependencies: + ltgt "^2.1.2" + +level-sublevel@6.6.4: + version "6.6.4" + resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-6.6.4.tgz#f7844ae893919cd9d69ae19d7159499afd5352ba" + integrity sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA== + dependencies: + bytewise "~1.1.0" + level-codec "^9.0.0" + level-errors "^2.0.0" + level-iterator-stream "^2.0.3" + ltgt "~2.1.1" + pull-defer "^0.2.2" + pull-level "^2.0.3" + pull-stream "^3.6.8" + typewiselite "~1.0.0" + xtend "~4.0.0" + level-ws@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" @@ -5933,6 +6972,16 @@ level-ws@0.0.0: readable-stream "~1.0.15" xtend "~2.1.1" +levelup@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-3.1.1.tgz#c2c0b3be2b4dc316647c53b42e2f559e232d2189" + integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== + dependencies: + deferred-leveldown "~4.0.0" + level-errors "~2.0.0" + level-iterator-stream "~3.0.0" + xtend "~4.0.0" + levelup@^1.2.1: version "1.3.9" resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" @@ -6157,7 +7206,12 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= -lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.10: +lodash@4.17.10: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== + +lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.10: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -6185,6 +7239,11 @@ lolex@^2.2.0, lolex@^2.3.2: resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.5.tgz#113001d56bfc7e02d56e36291cc5c413d1aa0733" integrity sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q== +looper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" + integrity sha1-Zs0Md0rz1P7axTeU90LbVtqPCew= + looper@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" @@ -6222,19 +7281,31 @@ lowercase-keys@^1.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== +lru-cache@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" + integrity sha1-cXibO39Tmb7IVl3aOKow0qCX7+4= + dependencies: + pseudomap "^1.0.1" + lru-cache@^4.0.1, lru-cache@^4.1.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + version "4.1.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.4.tgz#51cc46e8e6d9530771c857e24ccc720ecdbcc031" + integrity sha512-EPstzZ23znHUVLKj+lcXO1KvZkrlw+ZirdwvOmnAnA/1PB4ggyXJ77LRkCqkff+ShQ+cqoxCxLQOh4cKITO5iA== dependencies: pseudomap "^1.0.2" - yallist "^2.1.2" + yallist "^3.0.2" -ltgt@~2.2.0: +ltgt@^2.1.2, ltgt@~2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= +ltgt@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" + integrity sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ= + make-dir@^1.0.0, make-dir@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -6410,6 +7481,20 @@ merge@^1.2.0: resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== +merkle-patricia-tree@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.1.tgz#7d4e7263a9c85c1679187cad4a6d71f48d524c71" + integrity sha512-Qp9Mpb3xazznXzzGQBqHbqCpT2AR9joUOHYYPiQjYCarrdCPCnLWXo4BFv77y4xN26KR224xoU1n/qYY7RYYgw== + dependencies: + async "^1.4.2" + ethereumjs-util "^5.0.0" + level-ws "0.0.0" + levelup "^1.2.1" + memdown "^1.0.0" + readable-stream "^2.0.0" + rlp "^2.0.0" + semaphore ">=1.0.1" + merkle-patricia-tree@^2.1.2: version "2.3.2" resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" @@ -6541,7 +7626,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: +minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -6862,11 +7947,24 @@ nocache@2.0.0: resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.0.0.tgz#202b48021a0c4cbde2df80de15a17443c8b43980" integrity sha1-ICtIAhoMTL3i34DeFaF0Q8i0OYA= +node-fetch@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" + integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= + node-fetch@^2.1.2: version "2.3.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA== +node-fetch@~1.7.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-forge@^0.7.1: version "0.7.6" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac" @@ -7166,7 +8264,7 @@ object-assign@^2.0.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" integrity sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo= -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -7180,6 +8278,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" + integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== + object-keys@^1.0.11, object-keys@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" @@ -7336,7 +8439,7 @@ os-locale@^3.0.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -7550,7 +8653,7 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= @@ -7773,6 +8876,11 @@ postcss@^6.0.1, postcss@^6.0.23: source-map "^0.6.1" supports-color "^5.4.0" +precond@0.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" + integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -7790,7 +8898,7 @@ pretty-ms@4.0.0: dependencies: parse-ms "^2.0.0" -private@^0.1.6: +private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -7825,6 +8933,14 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise-to-callback@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" + integrity sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= + dependencies: + is-fn "^1.0.0" + set-immediate-shim "^1.0.1" + promise@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/promise/-/promise-1.3.0.tgz#e5cc9a4c8278e4664ffedc01c7da84842b040175" @@ -7887,7 +9003,7 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -pseudomap@^1.0.2: +pseudomap@^1.0.1, pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= @@ -7909,17 +9025,43 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" +pull-cat@^1.1.9: + version "1.1.11" + resolved "https://registry.yarnpkg.com/pull-cat/-/pull-cat-1.1.11.tgz#b642dd1255da376a706b6db4fa962f5fdb74c31b" + integrity sha1-tkLdElXaN2pwa220+pYvX9t0wxs= + pull-defer@^0.2.2: version "0.2.3" resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.3.tgz#4ee09c6d9e227bede9938db80391c3dac489d113" integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== -pull-pushable@^2.1.1: +pull-level@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pull-level/-/pull-level-2.0.4.tgz#4822e61757c10bdcc7cf4a03af04c92734c9afac" + integrity sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg== + dependencies: + level-post "^1.0.7" + pull-cat "^1.1.9" + pull-live "^1.0.1" + pull-pushable "^2.0.0" + pull-stream "^3.4.0" + pull-window "^2.1.4" + stream-to-pull-stream "^1.7.1" + +pull-live@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pull-live/-/pull-live-1.0.1.tgz#a4ecee01e330155e9124bbbcf4761f21b38f51f5" + integrity sha1-pOzuAeMwFV6RJLu89HYfIbOPUfU= + dependencies: + pull-cat "^1.1.9" + pull-stream "^3.4.0" + +pull-pushable@^2.0.0, pull-pushable@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/pull-pushable/-/pull-pushable-2.2.0.tgz#5f2f3aed47ad86919f01b12a2e99d6f1bd776581" integrity sha1-Xy867UethpGfAbEqLpnW8b13ZYE= -pull-stream@^3.2.3, pull-stream@^3.6.1: +pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.1, pull-stream@^3.6.8: version "3.6.9" resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.9.tgz#c774724cd63bc0984c3695f74c819aa02e977320" integrity sha512-hJn4POeBrkttshdNl0AoSCVjMVSuBwuHocMerUdoZ2+oIUzrWHFTwJMlbHND7OiKLVgvz6TFj8ZUVywUMXccbw== @@ -7929,6 +9071,13 @@ pull-traverse@^1.0.3: resolved "https://registry.yarnpkg.com/pull-traverse/-/pull-traverse-1.0.3.tgz#74fb5d7be7fa6bd7a78e97933e199b7945866938" integrity sha1-dPtde+f6a9enjpeTPhmbeUWGaTg= +pull-window@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/pull-window/-/pull-window-2.1.4.tgz#fc3b86feebd1920c7ae297691e23f705f88552f0" + integrity sha1-/DuG/uvRkgx64pdpHiP3BfiFUvA= + dependencies: + looper "^2.0.0" + pump@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -8147,7 +9296,7 @@ read@^1.0.4: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -8227,11 +9376,25 @@ regenerate@^1.2.1, regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + regenerator-runtime@^0.12.0: version "0.12.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + regenerator-transform@^0.13.3: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" @@ -8261,6 +9424,15 @@ regexpu-core@^1.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + regexpu-core@^4.1.3, regexpu-core@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" @@ -8438,7 +9610,7 @@ request@2.87.0: tunnel-agent "^0.6.0" uuid "^3.1.0" -request@2.88.0, request@^2.79.0, request@^2.87.0: +request@2.88.0, request@^2.67.0, request@^2.79.0, request@^2.85.0, request@^2.87.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -8542,6 +9714,13 @@ resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: dependencies: path-parse "^1.0.5" +resolve@~1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== + dependencies: + path-parse "^1.0.5" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -8550,6 +9729,13 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +resumer@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" + integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= + dependencies: + through "~2.3.4" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -8606,6 +9792,11 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" +rustbn.js@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.1.2.tgz#979fa0f9562216dd667c9d2cd179ae5d13830eff" + integrity sha512-bAkNqSHYdJdFsBC7Z11JgzYktL31HIpB2o70jZcGiL1U1TVtPyvaVhDrGWwS8uZtaqwW2k6NOPGZCqW/Dgh5Lg== + rustbn.js@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" @@ -8628,6 +9819,13 @@ safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-event-emitter@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" + integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== + dependencies: + events "^3.0.0" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -8754,6 +9952,11 @@ secp256k1@^3.0.1, secp256k1@^3.3.0: nan "^2.2.1" safe-buffer "^5.1.0" +seedrandom@2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba" + integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA== + seek-bzip@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" @@ -8761,7 +9964,7 @@ seek-bzip@^1.0.5: dependencies: commander "~2.8.1" -semaphore@>=1.0.1: +semaphore@>=1.0.1, semaphore@^1.0.3: version "1.1.0" resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== @@ -8844,6 +10047,11 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" @@ -9005,6 +10213,11 @@ sinon@4.5.0: supports-color "^5.1.0" type-detect "^4.0.5" +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -9068,7 +10281,7 @@ solc@0.5.0, solc@^0.5.0: semver "^5.5.0" yargs "^11.0.0" -solc@^0.4.13, solc@^0.4.25: +solc@^0.4.13, solc@^0.4.2, solc@^0.4.25: version "0.4.25" resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.25.tgz#06b8321f7112d95b4b903639b1138a4d292f5faa" integrity sha512-jU1YygRVy6zatgXrLY2rRm7HW1d7a8CkkEgNJwvH2VLpWhMFsMdWcJn6kUqZwcSz/Vm+w89dy7Z/aB5p6AFTrg== @@ -9079,6 +10292,11 @@ solc@^0.4.13, solc@^0.4.25: semver "^5.3.0" yargs "^4.7.1" +solidity-parser-antlr@0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.3.2.tgz#1cf9d019280550a31299dc380e87a310dc4ca154" + integrity sha512-aO/lbnc14A81cQigN5sKNuwbxohPyJOq7kpLirYT/6emCw5Gjb0TJoZ3TzL1tYdIX6gjTAMlQ1UZwOcrzOAp4w== + sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -9110,6 +10328,13 @@ source-map-support@0.5.9, source-map-support@^0.5.3: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + 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" @@ -9323,7 +10548,7 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= -stream-to-pull-stream@^1.7.2: +stream-to-pull-stream@^1.7.1, stream-to-pull-stream@^1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.2.tgz#757609ae1cebd33c7432d4afbe31ff78650b9dde" integrity sha1-dXYJrhzr0zx0MtSvvjH/eGULnd4= @@ -9375,6 +10600,15 @@ string.prototype.padend@^3.0.0: es-abstract "^1.4.3" function-bind "^1.0.2" +string.prototype.trim@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" + integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.0" + function-bind "^1.0.2" + string_decoder@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -9558,6 +10792,25 @@ tapable@^1.0.0, tapable@^1.0.0-beta.5, tapable@^1.1.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== +tape@^4.4.0, tape@^4.6.3, tape@^4.8.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.9.1.tgz#1173d7337e040c76fbf42ec86fcabedc9b3805c9" + integrity sha512-6fKIXknLpoe/Jp4rzHKFPpJUHDHDqn8jus99IfPnHIjyz78HYlefTGD3b5EkbQzuLfaEvmfPK3IolLgq2xT3kw== + dependencies: + deep-equal "~1.0.1" + defined "~1.0.0" + for-each "~0.3.3" + function-bind "~1.1.1" + glob "~7.1.2" + has "~1.0.3" + inherits "~2.0.3" + minimist "~1.2.0" + object-inspect "~1.6.0" + resolve "~1.7.1" + resumer "~0.0.0" + string.prototype.trim "~1.1.2" + through "~2.3.8" + tar-stream@^1.5.2, tar-stream@^1.5.5: version "1.6.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" @@ -9680,7 +10933,7 @@ through2@^2.0.0, through2@^2.0.2, through2@^2.0.3: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3", through@^2.3.6: +through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -9710,7 +10963,7 @@ title-case@^2.1.0: no-case "^2.2.0" upper-case "^1.0.3" -tmp@^0.0.33: +tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== @@ -9727,6 +10980,11 @@ to-buffer@^1.1.1: resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -9772,6 +11030,11 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" +treeify@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" + integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -9915,6 +11178,23 @@ typescript@3.1.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.3.tgz#01b70247a6d3c2467f70c45795ef5ea18ce191d5" integrity sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA== +typewise-core@^1.2, typewise-core@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" + integrity sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU= + +typewise@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" + integrity sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE= + dependencies: + typewise-core "^1.2.0" + +typewiselite@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typewiselite/-/typewiselite-1.0.0.tgz#c8882fa1bb1092c06005a97f34ef5c8508e3664e" + integrity sha1-yIgvobsQksBgBal/NO9chQjjZk4= + uglify-es@^3.3.4: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" @@ -10128,6 +11408,11 @@ utf8@^2.1.1: resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" integrity sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY= +utf8@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -10253,6 +11538,15 @@ web3-bzz@1.0.0-beta.27: swarm-js "0.1.37" underscore "1.8.3" +web3-bzz@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.35.tgz#9d5e1362b3db2afd77d65619b7cd46dd5845c192" + integrity sha512-BhAU0qhlr8zltm4gs/+P1gki2VkxHJaM2Rrh4DGesDW0lzwufRoNvWFlwx1bKHoFPWNbSmm9PRkHOYOINL/Tgw== + dependencies: + got "7.1.0" + swarm-js "0.1.37" + underscore "1.8.3" + web3-bzz@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.36.tgz#adb3fe7a70053eb7843e32b106792b01b482ef41" @@ -10280,6 +11574,15 @@ web3-core-helpers@1.0.0-beta.27: web3-eth-iban "1.0.0-beta.27" web3-utils "1.0.0-beta.27" +web3-core-helpers@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.35.tgz#d681d218a0c6e3283ee1f99a078ab9d3eef037f1" + integrity sha512-APOu3sEsamyqWt//8o4yq9KF25/uqGm+pQShson/sC4gKzmfJB07fLo2ond0X30E8fIqAPeVCotPXQxGciGUmA== + dependencies: + underscore "1.8.3" + web3-eth-iban "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-core-helpers@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.36.tgz#6f618e80f1a6588d846efbfdc28f92ae0477f8d2" @@ -10309,6 +11612,17 @@ web3-core-method@1.0.0-beta.27: web3-core-subscriptions "1.0.0-beta.27" web3-utils "1.0.0-beta.27" +web3-core-method@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.35.tgz#fc10e2d546cf4886038e6130bd5726b0952a4e5f" + integrity sha512-jidImCide8q0GpfsO4L73qoHrbkeWgwU3uOH5DKtJtv0ccmG086knNMRgryb/o9ZgetDWLmDEsJnHjBSoIwcbA== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-core-promievent "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-core-method@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.36.tgz#855c0365ae7d0ead394d973ea9e28828602900e0" @@ -10339,6 +11653,14 @@ web3-core-promievent@1.0.0-beta.27: bluebird "3.3.1" eventemitter3 "1.1.1" +web3-core-promievent@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.35.tgz#4f1b24737520fa423fee3afee110fbe82bcb8691" + integrity sha512-GvqXqKq07OmHuVi5uNRg6k79a1/CI0ViCC+EtNv4CORHtDRmYEt5Bvdv6z6FJEiaaQkD0lKbFwNhLxutx7HItw== + dependencies: + any-promise "1.3.0" + eventemitter3 "1.1.1" + web3-core-promievent@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.36.tgz#3a5127787fff751be6de272722cbc77dc9523fd5" @@ -10366,6 +11688,17 @@ web3-core-requestmanager@1.0.0-beta.27: web3-providers-ipc "1.0.0-beta.27" web3-providers-ws "1.0.0-beta.27" +web3-core-requestmanager@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.35.tgz#2b77cbf6303720ad68899b39fa7f584dc03dbc8f" + integrity sha512-S+zW2h17ZZQU9oe3yaCJE0E7aJS4C3Kf4kGPDv+nXjW0gKhQQhgVhw1Doq/aYQGqNSWJp7f1VHkz5gQWwg6RRg== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-providers-http "1.0.0-beta.35" + web3-providers-ipc "1.0.0-beta.35" + web3-providers-ws "1.0.0-beta.35" + web3-core-requestmanager@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.36.tgz#70c8eead84da9ed1cf258e6dde3f137116d0691b" @@ -10397,6 +11730,15 @@ web3-core-subscriptions@1.0.0-beta.27: underscore "1.8.3" web3-core-helpers "1.0.0-beta.27" +web3-core-subscriptions@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.35.tgz#c1b76a2ad3c6e80f5d40b8ba560f01e0f4628758" + integrity sha512-gXzLrWvcGkGiWq1y33Z4Y80XI8XMrwowiQJkrPSjQ81K5PBKquOGwcMffLaKcwdmEy/NpsOXDeFo3eLE1Ghvvw== + dependencies: + eventemitter3 "1.1.1" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-core-subscriptions@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.36.tgz#20f1f20c85d5b40f1e5a49b070ba977a142621f3" @@ -10425,6 +11767,16 @@ web3-core@1.0.0-beta.27: web3-core-requestmanager "1.0.0-beta.27" web3-utils "1.0.0-beta.27" +web3-core@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.35.tgz#0c44d3c50d23219b0b1531d145607a9bc7cd4b4f" + integrity sha512-ayGavbgVk4KL9Y88Uv411fBJ0SVgVfKhKEBweKYzmP0zOqneMzWt6YsyD1n6kRvjAbqA0AfUPEOKyMNjcx2tjw== + dependencies: + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-requestmanager "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-core@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.36.tgz#86182f2456c2cf1cd6e7654d314e195eac211917" @@ -10455,6 +11807,16 @@ web3-eth-abi@1.0.0-beta.27: web3-core-helpers "1.0.0-beta.27" web3-utils "1.0.0-beta.27" +web3-eth-abi@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.35.tgz#2eb9c1c7c7233db04010defcb192293e0db250e6" + integrity sha512-KUDC+EtFFYG8z01ZleKrASdjj327/rtWHzEt6RWsEj7bBa0bGp9nEh+nqdZx/Sdgz1O8tnfFzJlrRcXpfr1vGg== + dependencies: + bn.js "4.11.6" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-eth-abi@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.36.tgz#21c0f222701db827a8a269accb9cd18bbd8f70f9" @@ -10489,6 +11851,22 @@ web3-eth-accounts@1.0.0-beta.27: web3-core-method "1.0.0-beta.27" web3-utils "1.0.0-beta.27" +web3-eth-accounts@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.35.tgz#7d0e5a69f510dc93874471599eb7abfa9ddf3e63" + integrity sha512-duIgRsfht/0kAW/eQ0X9lKtVIykbETrnM2H7EnvplCzPHtQLodpib4o9JXfh9n6ZDgdDC7cuJoiVB9QJg089ew== + dependencies: + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "0.2.7" + scrypt.js "0.2.0" + underscore "1.8.3" + uuid "2.0.1" + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-eth-accounts@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.36.tgz#8aea37df9b038ef2c6cda608856ffd861b39eeef" @@ -10535,6 +11913,20 @@ web3-eth-contract@1.0.0-beta.27: web3-eth-abi "1.0.0-beta.27" web3-utils "1.0.0-beta.27" +web3-eth-contract@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.35.tgz#5276242d8a3358d9f1ce92b71575c74f9015935c" + integrity sha512-foPohOg5O1UCGKGZOIs+kQK5IZdV2QQ7pAWwNxH8WHplUA+fre1MurXNpoxknUmH6mYplFhXjqgYq2MsrBpHrA== + dependencies: + underscore "1.8.3" + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-promievent "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-eth-abi "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-eth-contract@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.36.tgz#c0c366c4e4016896142208cee758a2ff2a31be2a" @@ -10599,6 +11991,14 @@ web3-eth-iban@1.0.0-beta.27: bn.js "^4.11.6" web3-utils "1.0.0-beta.27" +web3-eth-iban@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.35.tgz#5aa10327a9abb26bcfc4ba79d7bad18a002b332c" + integrity sha512-H5wkcNcAIc+h/WoDIKv7ZYmrM2Xqu3O7jBQl1IWo73EDVQji+AoB2i3J8tuwI1yZRInRwrfpI3Zuwuf54hXHmQ== + dependencies: + bn.js "4.11.6" + web3-utils "1.0.0-beta.35" + web3-eth-iban@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.36.tgz#00cb3aba7a5aeb15d02b07421042e263d7b2e01b" @@ -10626,6 +12026,17 @@ web3-eth-personal@1.0.0-beta.27: web3-net "1.0.0-beta.27" web3-utils "1.0.0-beta.27" +web3-eth-personal@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.35.tgz#ecac95b7a53d04a567447062d5cae5f49879e89f" + integrity sha512-AcM9nnlxu7ZRRxPvkrFB9eLxMM4A2cPfj2aCg21Wb2EpMnhR+b/O1cT33k7ApRowoMpM+T9M8vx2oPNwXfaCOQ== + dependencies: + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-eth-personal@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.36.tgz#95545998a8ee377e3bb71e27c8d1a5dc1d7d5a21" @@ -10666,6 +12077,24 @@ web3-eth@1.0.0-beta.27: web3-net "1.0.0-beta.27" web3-utils "1.0.0-beta.27" +web3-eth@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.35.tgz#c52c804afb95e6624b6f5e72a9af90fbf5005b68" + integrity sha512-04mcb2nGPXThawuuYICPOxv0xOHofvQKsjZeIq+89nyOC8DQMGTAErDkGyMHQYtjpth5XDhic0wuEsA80AmFZA== + dependencies: + underscore "1.8.3" + web3-core "1.0.0-beta.35" + web3-core-helpers "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-eth-abi "1.0.0-beta.35" + web3-eth-accounts "1.0.0-beta.35" + web3-eth-contract "1.0.0-beta.35" + web3-eth-iban "1.0.0-beta.35" + web3-eth-personal "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-eth@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.36.tgz#04a8c748d344c1accaa26d7d5d0eac0da7127f14" @@ -10713,6 +12142,15 @@ web3-net@1.0.0-beta.27: web3-core-method "1.0.0-beta.27" web3-utils "1.0.0-beta.27" +web3-net@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.35.tgz#5c6688e0dea71fcd910ee9dc5437b94b7f6b3354" + integrity sha512-bbwaQ/KohGjIJ6HAKbZ6KrklCAaG6/B7hIbAbVLSFLxF+Yz9lmAgQYaDInpidpC/NLb3WOmcbRF+P77J4qMVIA== + dependencies: + web3-core "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3-net@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.36.tgz#396cd35cb40934ed022a1f44a8a642d3908c41eb" @@ -10731,6 +12169,57 @@ web3-net@1.0.0-beta.37: web3-core-method "1.0.0-beta.37" web3-utils "1.0.0-beta.37" +web3-provider-engine@14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.1.0.tgz#91590020f8b8c1b65846321310cbfdb039090fc6" + integrity sha512-vGZtqhSUzGTiMGhJXNnB/aRDlrPZLhLnBZ2NPArkZtr8XSrwg9m08tw4+PuWg5za0TJuoE/vuPQc501HddZZWw== + dependencies: + async "^2.5.0" + backoff "^2.5.0" + clone "^2.0.0" + cross-fetch "^2.1.0" + eth-block-tracker "^3.0.0" + eth-json-rpc-infura "^3.1.0" + eth-sig-util "^1.4.2" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.5" + ethereumjs-vm "^2.3.4" + json-rpc-error "^2.0.0" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + readable-stream "^2.2.9" + request "^2.85.0" + semaphore "^1.0.3" + ws "^5.1.1" + xhr "^2.2.0" + xtend "^4.0.1" + +web3-provider-engine@^13.3.2: + version "13.8.0" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-13.8.0.tgz#4c7c1ad2af5f1fe10343b8a65495879a2f9c00df" + integrity sha512-fZXhX5VWwWpoFfrfocslyg6P7cN3YWPG/ASaevNfeO80R+nzgoPUBXcWQekSGSsNDkeRTis4aMmpmofYf1TNtQ== + dependencies: + async "^2.5.0" + clone "^2.0.0" + eth-block-tracker "^2.2.2" + eth-sig-util "^1.4.2" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.1" + ethereumjs-vm "^2.0.2" + fetch-ponyfill "^4.0.0" + json-rpc-error "^2.0.0" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + readable-stream "^2.2.9" + request "^2.67.0" + semaphore "^1.0.3" + solc "^0.4.2" + tape "^4.4.0" + xhr "^2.2.0" + xtend "^4.0.1" + web3-providers-http@1.0.0-beta.27: version "1.0.0-beta.27" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.27.tgz#2f0ae1609bc5e4a35be25818cd7fc77de062b6a6" @@ -10739,6 +12228,14 @@ web3-providers-http@1.0.0-beta.27: web3-core-helpers "1.0.0-beta.27" xhr2 "0.1.4" +web3-providers-http@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.35.tgz#92059d9d6de6e9f82f4fae30b743efd841afc1e1" + integrity sha512-DcIMFq52Fb08UpWyZ3ZlES6NsNqJnco4hBS/Ej6eOcASfuUayPI+GLkYVZsnF3cBYqlH+DOKuArcKSuIxK7jIA== + dependencies: + web3-core-helpers "1.0.0-beta.35" + xhr2-cookies "1.1.0" + web3-providers-http@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.36.tgz#c1937a2e64f8db7cd30f166794e37cf0fcca1131" @@ -10764,6 +12261,15 @@ web3-providers-ipc@1.0.0-beta.27: underscore "1.8.3" web3-core-helpers "1.0.0-beta.27" +web3-providers-ipc@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.35.tgz#031afeb10fade2ebb0ef2fb82f5e58c04be842d9" + integrity sha512-iB0FG0HcpUnayfa8pn4guqEQ4Y1nrroi/jffdtQgFkrNt0sD3fMSwwC0AbmECqj3tDLl0e1slBR0RENll+ZF0g== + dependencies: + oboe "2.1.3" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + web3-providers-ipc@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.36.tgz#0c78efb4ed6b0305ec830e1e0b785e61217ee605" @@ -10791,6 +12297,15 @@ web3-providers-ws@1.0.0-beta.27: web3-core-helpers "1.0.0-beta.27" websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" +web3-providers-ws@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.35.tgz#5d38603fd450243a26aae0ff7f680644e77fa240" + integrity sha512-Cx64NgDStynKaUGDIIOfaCd0fZusL8h5avKTkdTjUu2aHhFJhZoVBGVLhoDtUaqZGWIZGcBJOoVf2JkGUOjDRQ== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.35" + websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" + web3-providers-ws@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.36.tgz#27b74082c7adfa0cb5a65535eb312e49008c97c3" @@ -10819,6 +12334,16 @@ web3-shh@1.0.0-beta.27: web3-core-subscriptions "1.0.0-beta.27" web3-net "1.0.0-beta.27" +web3-shh@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.35.tgz#7e4a585f8beee0c1927390937c6537748a5d1a58" + integrity sha512-8qSonk/x0xabERS9Sr6AIADN/Ty+5KwARkkGIfSYHKqFpdMDz+76F7cUCxtoCZoS8K04xgZlDKYe0TJXLYA0Fw== + dependencies: + web3-core "1.0.0-beta.35" + web3-core-method "1.0.0-beta.35" + web3-core-subscriptions "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + web3-shh@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.36.tgz#6ff297594480edefc710d9d287765a0c4a5d5af1" @@ -10852,6 +12377,19 @@ web3-utils@1.0.0-beta.27: underscore "1.8.3" utf8 "2.1.1" +web3-utils@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.35.tgz#ced9e1df47c65581c441c5f2af76b05a37a273d7" + integrity sha512-Dq6f0SOKj3BDFRgOPnE6ALbzBDCKVIW8mKWVf7tGVhTDHf+wQaWwQSC3aArFSqdExB75BPBPyDpuMTNszhljpA== + dependencies: + bn.js "4.11.6" + eth-lib "0.1.27" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randomhex "0.1.5" + underscore "1.8.3" + utf8 "2.1.1" + web3-utils@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.36.tgz#dc19c9aeec009b1816cc91ef64d7fe9f8ee344c9" @@ -10902,6 +12440,19 @@ web3@1.0.0-beta.27: web3-shh "1.0.0-beta.27" web3-utils "1.0.0-beta.27" +web3@1.0.0-beta.35: + version "1.0.0-beta.35" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.35.tgz#6475095bd451a96e50a32b997ddee82279292f11" + integrity sha512-xwDmUhvTcHQvvNnOPcPZZgCxKUsI2e+GbHy7JkTK3/Rmnutazy8x7fsAXT9myw7V1qpi3GgLoZ3fkglSUbg1Mg== + dependencies: + web3-bzz "1.0.0-beta.35" + web3-core "1.0.0-beta.35" + web3-eth "1.0.0-beta.35" + web3-eth-personal "1.0.0-beta.35" + web3-net "1.0.0-beta.35" + web3-shh "1.0.0-beta.35" + web3-utils "1.0.0-beta.35" + web3@1.0.0-beta.36: version "1.0.0-beta.36" resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.36.tgz#2954da9e431124c88396025510d840ba731c8373" @@ -10981,6 +12532,16 @@ webpack@4.19.0: watchpack "^1.5.0" webpack-sources "^1.2.0" +websocket@1.0.26: + version "1.0.26" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.26.tgz#a03a01299849c35268c83044aa919c6374be8194" + integrity sha512-fjcrYDPIQxpTnqFQ9JjxUQcdvR89MFAOjPBlF+vjOt49w/XW4fJknUoMz/mDIn2eK1AdslVojcaOxOqyZZV8rw== + dependencies: + debug "^2.2.0" + nan "^2.3.3" + typedarray-to-buffer "^3.1.2" + yaeti "^0.0.6" + "websocket@git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible": version "1.0.26" resolved "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2" @@ -10995,6 +12556,11 @@ webworkify@^1.2.1: resolved "https://registry.yarnpkg.com/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c" integrity sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g== +whatwg-fetch@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" @@ -11129,7 +12695,7 @@ ws@^3.0.0: safe-buffer "~5.1.0" ultron "~1.1.0" -ws@^5.2.0: +ws@^5.1.1, ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== @@ -11173,7 +12739,7 @@ xhr2@*, xhr2@0.1.4: resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" integrity sha1-f4dliEdxbbUCYyOBL4GMras4el8= -xhr@^2.0.4, xhr@^2.3.3, xhr@^2.5.0: +xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3, xhr@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== @@ -11220,11 +12786,6 @@ yaeti@^0.0.6: resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - yallist@^3.0.0, yallist@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"