diff --git a/lib/cmds/blockchain/blockchain.js b/lib/cmds/blockchain/blockchain.js index 787e1de3..0fe6a490 100644 --- a/lib/cmds/blockchain/blockchain.js +++ b/lib/cmds/blockchain/blockchain.js @@ -1,11 +1,12 @@ const async = require('async'); -const shelljs = require('shelljs'); +const child_process = require('child_process'); +const _ = require('underscore'); const fs = require('../../core/fs.js'); const GethCommands = require('./geth_commands.js'); -/*eslint complexity: ["error", 35]*/ +/*eslint complexity: ["error", 36]*/ var Blockchain = function(options) { this.blockchainConfig = options.blockchainConfig; this.env = options.env || 'development'; @@ -54,6 +55,20 @@ var Blockchain = function(options) { this.config.datadir = fs.embarkPath(".embark/development/datadir"); } + const spaceMessage = 'The path for %s in blockchain config contains spaces, please remove them'; + if (this.config.datadir && this.config.datadir.indexOf(' ') > 0) { + console.error(__(spaceMessage, 'datadir')); + process.exit(); + } + if (this.config.account.password && this.config.account.password.indexOf(' ') > 0) { + console.error(__(spaceMessage, 'account.password')); + process.exit(); + } + if (this.config.genesisBlock && this.config.genesisBlock.indexOf(' ') > 0) { + console.error(__(spaceMessage, 'genesisBlock')); + process.exit(); + } + this.client = new options.client({config: this.config, env: this.env, isDev: this.isDev}); }; @@ -62,7 +77,7 @@ Blockchain.prototype.runCommand = function(cmd, options, callback) { if (this.blockchainConfig.silent) { options.silent = true; } - return shelljs.exec(cmd, options, callback); + return child_process.exec(cmd, options, callback); }; Blockchain.prototype.run = function() { @@ -95,44 +110,53 @@ Blockchain.prototype.run = function() { next(); }, function getMainCommand(next) { - self.client.mainCommand(address, function(cmd) { - next(null, cmd); - }); + self.client.mainCommand(address, function(cmd, args) { + next(null, cmd, args); + }, true); } - ], function (err, cmd) { + ], function (err, cmd, args) { if (err) { console.error(err); return; } - const child = self.runCommand(cmd, {}, (err, stdout, _stderr) => { - if (err && self.env === 'development' && stdout.indexOf('Failed to unlock') > 0) { - // console.error is captured and sent to the console output regardless of silent setting + args = _.compact(args); + self.child = child_process.spawn(cmd, args, {cwd: process.cwd()}); + + self.child.on('error', (err) => { + err = err.toString(); + console.error('Blockchain error: ', err); + if (self.env === 'development' && err.indexOf('Failed to unlock') > 0) { console.error('\n' + __('Development blockchain has changed to use the --dev option.').yellow); console.error(__('You can reset your workspace to fix the problem with').yellow + ' embark reset'.cyan); console.error(__('Otherwise, you can change your data directory in blockchain.json (datadir)').yellow); } }); - if (self.onReadyCallback) { - // Geth logs appear in stderr somehow - let lastMessage; - child.stderr.on('data', (data) => { - if (!self.readyCalled && data.indexOf('Mapped network port') > -1) { - self.readyCalled = true; - self.onReadyCallback(); - } - lastMessage = data; - console.log('Geth: ' + data); - }); - child.on('exit', (code) => { - if (code) { - console.error('Geth exited with error code ' + 1); - console.error(lastMessage); - } - }); - } + self.child.stdout.on('data', (data) => { + console.log(`Geth error: ${data}`); + }); + // Geth logs appear in stderr somehow + self.child.stderr.on('data', (data) => { + data = data.toString(); + if (self.onReadyCallback && !self.readyCalled && data.indexOf('WebSocket endpoint opened') > -1) { + self.readyCalled = true; + self.onReadyCallback(); + } + console.log('Geth: ' + data); + }); + self.child.on('exit', (code) => { + if (code) { + console.error('Geth exited with error code ' + code); + } + }); }); }; +Blockchain.prototype.kill = function() { + if (this.child) { + this.child.kill(); + } +}; + Blockchain.prototype.checkPathLength = function() { let dappPath = fs.dappPath(''); if (dappPath.length > 66) { @@ -145,7 +169,7 @@ Blockchain.prototype.checkPathLength = function() { }; Blockchain.prototype.isClientInstalled = function(callback) { - let versionCmd = this.client.determineVersion(); + let versionCmd = this.client.determineVersionCommand(); this.runCommand(versionCmd, {}, (err, stdout, stderr) => { if (err || stderr || !stdout || stdout.indexOf("not found") >= 0) { return callback('Geth not found'); diff --git a/lib/cmds/blockchain/blockchainProcess.js b/lib/cmds/blockchain/blockchainProcess.js index 421703e0..e9d3724f 100644 --- a/lib/cmds/blockchain/blockchainProcess.js +++ b/lib/cmds/blockchain/blockchainProcess.js @@ -30,9 +30,16 @@ class BlockchainProcess extends ProcessWrapper { blockchainReady() { blockchainProcess.send({result: constants.blockchain.blockchainReady}); } + + kill() { + this.blockchain.kill(); + } } process.on('message', (msg) => { + if (msg === 'exit') { + return blockchainProcess.kill(); + } if (msg.action === constants.blockchain.init) { blockchainProcess = new BlockchainProcess(msg.options); return blockchainProcess.send({result: constants.blockchain.initiated}); diff --git a/lib/cmds/blockchain/geth_commands.js b/lib/cmds/blockchain/geth_commands.js index e64f47a6..874e004e 100644 --- a/lib/cmds/blockchain/geth_commands.js +++ b/lib/cmds/blockchain/geth_commands.js @@ -12,75 +12,75 @@ class GethCommands { commonOptions() { let config = this.config; - let cmd = ""; + let cmd = []; - cmd += this.determineNetworkType(config); + cmd.push(this.determineNetworkType(config)); if (config.datadir) { - cmd += "--datadir=\"" + config.datadir + "\" "; + cmd.push(`--datadir=${config.datadir}`); } if (config.light) { - cmd += "--light "; + cmd.push("--light"); } if (config.fast) { - cmd += "--fast "; + cmd.push("--fast"); } if (config.account && config.account.password) { - cmd += "--password " + config.account.password + " "; + cmd.push(`--password=${config.account.password}`); } if (Number.isInteger(config.verbosity) && config.verbosity >=0 && config.verbosity <= 5) { - cmd += "--verbosity " + config.verbosity + " "; + cmd.push("--verbosity=" + config.verbosity); } return cmd; } - determineVersion() { + determineVersionCommand() { return this.geth_bin + " version"; } determineNetworkType(config) { - let cmd = ""; + let cmd; if (config.networkType === 'testnet') { - cmd += "--testnet "; + cmd = "--testnet "; } else if (config.networkType === 'olympic') { - cmd += "--olympic "; + cmd = "--olympic "; } else if (config.networkType === 'custom') { - cmd += "--networkid " + config.networkId + " "; + cmd = "--networkid=" + config.networkId; } return cmd; } initGenesisCommmand() { let config = this.config; - let cmd = this.geth_bin + " " + this.commonOptions(); + let cmd = this.geth_bin + " " + this.commonOptions().join(' '); if (config.genesisBlock) { - cmd += "init \"" + config.genesisBlock + "\" "; + cmd += " init \"" + config.genesisBlock + "\" "; } return cmd; } newAccountCommand() { - return this.geth_bin + " " + this.commonOptions() + "account new "; + return this.geth_bin + " " + this.commonOptions().join(' ') + " account new "; } listAccountsCommand() { - return this.geth_bin + " " + this.commonOptions() + "account list "; + return this.geth_bin + " " + this.commonOptions().join(' ') + " account list "; } determineRpcOptions(config) { - let cmd = ""; + let cmd = []; - cmd += "--port " + config.port + " "; - cmd += "--rpc "; - cmd += "--rpcport " + config.rpcPort + " "; - cmd += "--rpcaddr " + config.rpcHost + " "; + cmd.push("--port=" + config.port); + cmd.push("--rpc"); + cmd.push("--rpcport=" + config.rpcPort); + cmd.push("--rpcaddr=" + config.rpcHost); if (config.rpcCorsDomain) { if (config.rpcCorsDomain === '*') { console.log('=================================='); @@ -88,7 +88,7 @@ class GethCommands { console.log(__('make sure you know what you are doing')); console.log('=================================='); } - cmd += "--rpccorsdomain=\"" + config.rpcCorsDomain + "\" "; + cmd.push("--rpccorsdomain=" + config.rpcCorsDomain); } else { console.log('=================================='); console.log(__('warning: cors is not set')); @@ -99,12 +99,12 @@ class GethCommands { } determineWsOptions(config) { - let cmd = ""; + let cmd = []; if (config.wsRPC) { - cmd += "--ws "; - cmd += "--wsport " + config.wsPort + " "; - cmd += "--wsaddr " + config.wsHost + " "; + cmd.push("--ws"); + cmd.push("--wsport=" + config.wsPort); + cmd.push("--wsaddr=" + config.wsHost); if (config.wsOrigins) { if (config.wsOrigins === '*') { console.log('=================================='); @@ -112,7 +112,7 @@ class GethCommands { console.log(__('make sure you know what you are doing')); console.log('=================================='); } - cmd += "--wsorigins \"" + config.wsOrigins + "\" "; + cmd.push("--wsorigins=" + config.wsOrigins); } else { console.log('=================================='); console.log(__('warning: wsOrigins is not set')); @@ -129,44 +129,54 @@ class GethCommands { let rpc_api = (this.config.rpcApi || ['eth', 'web3', 'net']); let ws_api = (this.config.wsApi || ['eth', 'web3', 'net']); + let args = []; + async.series([ function commonOptions(callback) { let cmd = self.commonOptions(); + args = args.concat(cmd); callback(null, cmd); }, function rpcOptions(callback) { let cmd = self.determineRpcOptions(self.config); + args = args.concat(cmd); callback(null, cmd); }, function wsOptions(callback) { let cmd = self.determineWsOptions(self.config); + args = args.concat(cmd); callback(null, cmd); }, function dontGetPeers(callback) { if (config.nodiscover) { + args.push("--nodiscover"); return callback(null, "--nodiscover"); } callback(null, ""); }, function vmDebug(callback) { if (config.vmdebug) { + args.push("--vmdebug"); return callback(null, "--vmdebug"); } callback(null, ""); }, function maxPeers(callback) { - let cmd = "--maxpeers " + config.maxpeers; + let cmd = "--maxpeers=" + config.maxpeers; + args.push(cmd); callback(null, cmd); }, function mining(callback) { if (config.mineWhenNeeded || config.mine) { - return callback(null, "--mine "); + args.push("--mine"); + return callback(null, "--mine"); } callback(""); }, function bootnodes(callback) { if (config.bootnodes && config.bootnodes !== "" && config.bootnodes !== []) { - return callback(null, "--bootnodes " + config.bootnodes); + args.push("--bootnodes=" + config.bootnodes); + return callback(null, "--bootnodes=" + config.bootnodes); } callback(""); }, @@ -176,15 +186,18 @@ class GethCommands { if (ws_api.indexOf('shh') === -1) { ws_api.push('shh'); } + args.push("--shh"); return callback(null, "--shh "); } callback(""); }, function rpcApi(callback) { - callback(null, '--rpcapi "' + rpc_api.join(',') + '"'); + args.push('--rpcapi=' + rpc_api.join(',')); + callback(null, '--rpcapi=' + rpc_api.join(',')); }, function wsApi(callback) { - callback(null, '--wsapi "' + ws_api.join(',') + '"'); + args.push('--wsapi=' + ws_api.join(',')); + callback(null, '--wsapi=' + ws_api.join(',')); }, function accountToUnlock(callback) { let accountAddress = ""; @@ -194,33 +207,37 @@ class GethCommands { accountAddress = address; } if (accountAddress && !self.isDev) { + args.push("--unlock=" + accountAddress); return callback(null, "--unlock=" + accountAddress); } callback(null, ""); }, function gasLimit(callback) { if (config.targetGasLimit) { - return callback(null, "--targetgaslimit " + config.targetGasLimit); + args.push("--targetgaslimit=" + config.targetGasLimit); + return callback(null, "--targetgaslimit=" + config.targetGasLimit); } callback(null, ""); }, function mineWhenNeeded(callback) { if (config.mineWhenNeeded && !self.isDev) { + args.push("js .embark/" + self.env + "/js/mine.js"); return callback(null, "js .embark/" + self.env + "/js/mine.js"); } callback(null, ""); }, function isDev(callback) { if (self.isDev) { + args.push('--dev'); return callback(null, '--dev'); } callback(null, ''); } - ], function (err, results) { + ], function (err) { if (err) { throw new Error(err.message); } - done(self.geth_bin + " " + results.join(" ")); + return done(self.geth_bin, args); }); } } diff --git a/lib/constants.json b/lib/constants.json index 16e13e30..0315ffbe 100644 --- a/lib/constants.json +++ b/lib/constants.json @@ -17,6 +17,8 @@ "contractConfigChanged": "contractConfigChanged" }, "process": { + "processLaunchRequest": "process:launch-request", + "processLaunchComplete": "process:launch-complete", "log": "log", "events": { "on": "on", @@ -34,5 +36,9 @@ "blockchainReady": "blockchainReady", "init": "init", "initiated": "initiated" + }, + "storage": { + "init": "init", + "initiated": "initiated" } } diff --git a/lib/contracts/blockchain.js b/lib/contracts/blockchain.js index 895860e1..999ae142 100644 --- a/lib/contracts/blockchain.js +++ b/lib/contracts/blockchain.js @@ -109,13 +109,14 @@ class Blockchain { registerServiceCheck() { const self = this; + const NO_NODE = 'noNode'; this.addCheck('Ethereum', function (cb) { async.waterfall([ function checkNodeConnection(next) { self.assertNodeConnection(true, (err) => { if (err) { - return next(true, {name: "No Blockchain node found", status: 'off'}); + return next(NO_NODE, {name: "No Blockchain node found", status: 'off'}); } next(); }); @@ -137,13 +138,12 @@ class Blockchain { }); } ], (err, statusObj) => { - if (err && err !== true) { - self.logger.error(err); - return; + if (err && err !== NO_NODE) { + return cb(err); } cb(statusObj); }); - }); + }, 5000, 'off'); } registerRequests() { diff --git a/lib/core/engine.js b/lib/core/engine.js index 66d5f579..440dc695 100644 --- a/lib/core/engine.js +++ b/lib/core/engine.js @@ -45,7 +45,7 @@ class Engine { }, 0); if (this.interceptLogs || this.interceptLogs === undefined) { - // this.doInterceptLogs(); + this.doInterceptLogs(); } } diff --git a/lib/core/services_monitor.js b/lib/core/services_monitor.js index 1cfc506e..c1342212 100644 --- a/lib/core/services_monitor.js +++ b/lib/core/services_monitor.js @@ -44,9 +44,9 @@ ServicesMonitor.prototype.initCheck = function (checkName) { }); }; -ServicesMonitor.prototype.addCheck = function (checkName, checkFn, time) { +ServicesMonitor.prototype.addCheck = function (checkName, checkFn, time, initialState) { this.logger.trace('add check: ' + checkName); - this.checkList[checkName] = {fn: checkFn, interval: time || 5000}; + this.checkList[checkName] = {fn: checkFn, interval: time || 5000, status: initialState}; if (this.working) { this.initCheck(checkName); diff --git a/lib/dashboard/monitor.js b/lib/dashboard/monitor.js index 21faad20..908eb9fd 100644 --- a/lib/dashboard/monitor.js +++ b/lib/dashboard/monitor.js @@ -330,6 +330,7 @@ class Dashboard { let self = this; this.input.key(["C-c"], function () { + self.events.emit('exit'); process.exit(0); }); diff --git a/lib/i18n/locales/en.json b/lib/i18n/locales/en.json index 75427395..2ec0df1b 100644 --- a/lib/i18n/locales/en.json +++ b/lib/i18n/locales/en.json @@ -138,5 +138,9 @@ "open another console in the same directory and run": "open another console in the same directory and run", "For more info go to http://embark.status.im": "For more info go to http://embark.status.im", "%s is not installed on your machine": "%s is not installed on your machine", - "You can install it by visiting: %s": "You can install it by visiting: %s" + "You can install it by visiting: %s": "You can install it by visiting: %s", + "IPFS node is offline": "IPFS node is offline", + "Starting ipfs process": "Starting ipfs process", + "ipfs process started": "ipfs process started", + "IPFS node detected": "IPFS node detected" } \ No newline at end of file diff --git a/lib/index.js b/lib/index.js index 9c4414c7..82802615 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,6 +1,7 @@ let async = require('async'); const constants = require('./constants'); const _ = require('underscore'); +const StorageProcessesLauncher = require('./processes/storageProcesses/storageProcessesLauncher'); // require("./utils/debug_util.js")(__filename, async); require('colors'); @@ -66,6 +67,42 @@ class Embark { templateGenerator.generate(destinationFolder, name); } + _checkStorageEndpoint(engine, platform, callback) { + let checkFn; + _.find(engine.servicesMonitor.checkList, (value, key) => { + if(key.toLowerCase() === platform.toLowerCase()){ + checkFn = value; + return true; + } + }); + if (!checkFn || typeof checkFn.fn !== 'function') { + return callback(); + } + + checkFn.fn(function (serviceCheckResult) { + if (!serviceCheckResult.status || serviceCheckResult.status === 'off') { + return callback('No node'); + } + callback(); + }); + } + + _startStorageNode(engine, platform, callback) { + const storageProcessesLauncher = new StorageProcessesLauncher({ + logger: engine.logger, + events: engine.events, + storageConfig: engine.config.storageConfig, + webServerConfig: engine.config.webServerConfig + }); + return storageProcessesLauncher.launchProcess(platform.toLowerCase(), (err) => { + if (err) { + engine.logger.error(err); + return callback(err); + } + callback(); + }); + } + run(options) { let self = this; self.context = options.context || [constants.contexts.run, constants.contexts.build]; @@ -135,21 +172,33 @@ class Embark { }); }); + // Check storage + const platform = engine.config.storageConfig.provider; + self._checkStorageEndpoint(engine, platform, (err) => { + if (!err) { + return; + } + self._startStorageNode(engine, platform, (err) => { + if (err) { + engine.logger.error('Error while starting a storage process for ' + platform); + engine.logger.error(err); + } + }); + }); + engine.events.on('outputDone', function () { engine.logger.info((__("Looking for documentation? You can find it at") + " ").cyan + "http://embark.status.im/docs/".green.underline + ".".cyan); engine.logger.info(__("Ready").underline); engine.events.emit("status", __("Ready").green); }); - engine.deployManager.deployContracts(function (err) { - engine.startService("fileWatcher"); - if (options.runWebserver) { - engine.startService("webServer", { - host: options.serverHost, - port: options.serverPort - }); - } - callback(err); - }); + if (options.runWebserver) { + engine.startService("webServer", { + host: options.serverHost, + port: options.serverPort + }); + } + engine.startService("fileWatcher"); + callback(); } ], function (err, _result) { if (err) { @@ -285,7 +334,7 @@ class Embark { } upload(options) { - + const self = this; this.context = options.context || [constants.contexts.upload, constants.contexts.build]; let engine = new Engine({ @@ -324,21 +373,26 @@ class Embark { callback(); }, function checkStorageService(callback){ - let checkFn; - _.find(engine.servicesMonitor.checkList, (value, key) => { - if(key.toLowerCase() === platform.toLowerCase()){ - checkFn = value; - return true; + + const errorObj = {message: __('Cannot upload: {{platform}} node is not running on {{protocol}}://{{host}}:{{port}}.', {platform: platform, protocol: engine.config.storageConfig.protocol, host: engine.config.storageConfig.host, port: engine.config.storageConfig.port})}; + + self._checkStorageEndpoint(engine, platform, function (err) { + if (!err) { + return callback(); } - }); - if (!checkFn || typeof checkFn.fn !== 'function') { - return callback(); - } - checkFn.fn(function (serviceCheckResult) { - if (!serviceCheckResult.status || serviceCheckResult.status === 'off') { - return callback({message: __('Cannot upload: {{platform}} node is not running on {{protocol}}://{{host}}:{{port}}.', {platform: platform, protocol: engine.config.storageConfig.protocol, host: engine.config.storageConfig.host, port: engine.config.storageConfig.port})}); - } - callback(); + self._startStorageNode(engine, platform, (err) => { + if (err) { + engine.logger.error(err); + return callback(errorObj); + } + // Check endpoint again to see if really did start + self._checkStorageEndpoint(engine, platform, (err) => { + if (err) { + return callback(errorObj); + } + callback(); + }); + }); }); }, function setupStoragePlugin(callback){ diff --git a/lib/pipeline/pipeline.js b/lib/pipeline/pipeline.js index 8f6ffd19..db50770e 100644 --- a/lib/pipeline/pipeline.js +++ b/lib/pipeline/pipeline.js @@ -101,8 +101,7 @@ class Pipeline { const webpackProcess = new ProcessLauncher({ modulePath: utils.joinPath(__dirname, 'webpackProcess.js'), logger: self.logger, - events: self.events, - normalizeInput: utils.normalizeInput + events: self.events }); webpackProcess.send({action: constants.pipeline.init, options: {}}); webpackProcess.send({action: constants.pipeline.build, file, importsList}); diff --git a/lib/process/processLauncher.js b/lib/process/processLauncher.js index 450a3600..35c4e2c5 100644 --- a/lib/process/processLauncher.js +++ b/lib/process/processLauncher.js @@ -1,6 +1,7 @@ const child_process = require('child_process'); const constants = require('../constants'); const path = require('path'); +const utils = require('../utils/utils'); class ProcessLauncher { @@ -9,7 +10,6 @@ class ProcessLauncher { * @param {Object} options Options tp start the process * * modulePath {String} Absolute path to the module to fork * * logger {Object} Logger - * * normalizeInput {Function} Function to normalize logs * * events {Function} Events Emitter instance * @return {ProcessLauncher} The ProcessLauncher instance */ @@ -17,7 +17,6 @@ class ProcessLauncher { this.name = path.basename(options.modulePath); this.process = child_process.fork(options.modulePath); this.logger = options.logger; - this.normalizeInput = options.normalizeInput; this.events = options.events; this.silent = options.silent; this.exitCallback = options.exitCallback; @@ -55,9 +54,9 @@ class ProcessLauncher { return; } if (this.logger[msg.type]) { - return this.logger[msg.type](this.normalizeInput(msg.message)); + return this.logger[msg.type](utils.normalizeInput(msg.message)); } - this.logger.debug(this.normalizeInput(msg.message)); + this.logger.debug(utils.normalizeInput(msg.message)); } // Handle event calls from the child process diff --git a/lib/process/processWrapper.js b/lib/process/processWrapper.js index 4bb093c9..594eaa6f 100644 --- a/lib/process/processWrapper.js +++ b/lib/process/processWrapper.js @@ -30,6 +30,7 @@ class ProcessWrapper { context.console.log = this._log.bind(this, 'log'); context.console.warn = this._log.bind(this, 'warn'); + context.console.error = this._log.bind(this, 'error'); context.console.info = this._log.bind(this, 'info'); context.console.debug = this._log.bind(this, 'debug'); context.console.trace = this._log.bind(this, 'trace'); diff --git a/lib/processes/blockchainProcessLauncher.js b/lib/processes/blockchainProcessLauncher.js index 4c5101f8..ba30dbd5 100644 --- a/lib/processes/blockchainProcessLauncher.js +++ b/lib/processes/blockchainProcessLauncher.js @@ -14,17 +14,16 @@ class BlockchainProcessLauncher { } processEnded(code) { - this.logger.error('Blockchain process ended before the end of this process. Code: ' + code); + this.logger.error(__('Blockchain process ended before the end of this process. Code: %s', code)); } startBlockchainNode() { - this.logger.info('Starting Blockchain node in another process'.cyan); + this.logger.info(__('Starting Blockchain node in another process').cyan); this.blockchainProcess = new ProcessLauncher({ modulePath: utils.joinPath(__dirname, '../cmds/blockchain/blockchainProcess.js'), logger: this.logger, events: this.events, - normalizeInput: this.normalizeInput, silent: this.logger.logLevel !== 'trace', exitCallback: this.processEnded.bind(this) }); @@ -41,9 +40,13 @@ class BlockchainProcessLauncher { }); this.blockchainProcess.once('result', constants.blockchain.blockchainReady, () => { - this.logger.info('Blockchain node is ready'.cyan); + this.logger.info(__('Blockchain node is ready').cyan); this.events.emit(constants.blockchain.blockchainReady); }); + + this.events.on('exit', () => { + this.blockchainProcess.send('exit'); + }); } } diff --git a/lib/processes/storageProcesses/ipfs.js b/lib/processes/storageProcesses/ipfs.js new file mode 100644 index 00000000..226c7864 --- /dev/null +++ b/lib/processes/storageProcesses/ipfs.js @@ -0,0 +1,73 @@ +const child_process = require('child_process'); +const ProcessWrapper = require('../../process/processWrapper'); +const constants = require('../../constants'); + +let ipfsProcess; // eslint-disable-line no-unused-vars + +class IPFSProcess extends ProcessWrapper { + constructor(_options) { + super(); + + this.checkIPFSVersion(); + this.startIPFSDaemon(); + } + + checkIPFSVersion() { + child_process.exec('ipfs --version', {silent: true}, (err, stdout, _stderr) => { + if (err) { + console.error(err); + return; + } + const match = stdout.match(/[0-9]+\.[0-9]+\.[0-9]+/); + if (match[0]) { + const versions = match[0].split('.'); + if (versions[0] <= 0 && versions[1] <= 4 && versions[2] <= 14) { + console.error(`You are using IPFS version ${match[0]} which has an issue with processes.`); + console.error(`Please update to IPFS version 0.4.15 or more recent: https://github.com/ipfs/ipfs-update`); + } + } + }); + } + + startIPFSDaemon() { + const self = this; + this.child = child_process.spawn('ipfs', ['daemon']); + + this.child.on('error', (err) => { + err = err.toString(); + console.error('IPFS error: ', err); + }); + this.child.stderr.on('data', (data) => { + data = data.toString(); + console.log(`IPFS error: ${data}`); + }); + this.child.stdout.on('data', (data) => { + data = data.toString(); + if (!self.readyCalled && data.indexOf('Daemon is ready') > -1) { + self.readyCalled = true; + self.send({result: constants.storage.initiated}); + } + console.log('IPFS: ' + data); + }); + this.child.on('exit', (code) => { + if (code) { + console.error('IPFS exited with error code ' + code); + } + }); + } + + kill() { + if (this.child) { + this.child.kill(); + } + } +} + +process.on('message', (msg) => { + if (msg === 'exit') { + return ipfsProcess.kill(); + } + if (msg.action === constants.storage.init) { + ipfsProcess = new IPFSProcess(msg.options); + } +}); diff --git a/lib/processes/storageProcesses/storageProcessesLauncher.js b/lib/processes/storageProcesses/storageProcessesLauncher.js new file mode 100644 index 00000000..49a1ddf4 --- /dev/null +++ b/lib/processes/storageProcesses/storageProcessesLauncher.js @@ -0,0 +1,63 @@ +const fs = require('../../core/fs'); +const utils = require('../../utils/utils'); +const ProcessLauncher = require('../../process/processLauncher'); +const constants = require('../../constants'); + +class StorageProcessesLauncher { + constructor(options) { + this.logger = options.logger; + this.events = options.events; + this.storageConfig = options.storageConfig; + this.webServerConfig = options.webServerConfig; + this.processes = {}; + + this.events.on('exit', () => { + Object.keys(this.processes).forEach(processName => { + this.processes[processName].send('exit'); + }); + }); + } + + processExited(storageName, code) { + this.logger.error(__(`Storage process for ${storageName} ended before the end of this process. Code: ${code}`)); + } + + launchProcess(storageName, callback) { + const self = this; + if (self.processes[storageName]) { + return callback(__('Storage process already started')); + } + const filePath = utils.joinPath(__dirname, `./${storageName}.js`); + fs.access(filePath, (err) => { + if (err) { + return callback(__('No process file for this storage type exists. Please start the process locally.')); + } + self.logger.info(__(`Starting ${storageName} process`).cyan); + self.processes[storageName] = new ProcessLauncher({ + modulePath: filePath, + logger: self.logger, + events: self.events, + silent: true, + exitCallback: self.processExited.bind(this, storageName) + }); + self.processes[storageName].send({ + action: constants.blockchain.init, options: { + storageConfig: self.storageConfig, + webServerConfig: self.webServerConfig + } + }); + + self.processes[storageName].on('result', constants.storage.initiated, (msg) => { + if (msg.error) { + self.processes[storageName].disconnect(); + delete self.processes[storageName]; + return callback(msg.error); + } + self.logger.info(__(`${storageName} process started`).cyan); + callback(); + }); + }); + } +} + +module.exports = StorageProcessesLauncher; diff --git a/lib/processes/storageProcesses/swarm.js b/lib/processes/storageProcesses/swarm.js new file mode 100644 index 00000000..49909d73 --- /dev/null +++ b/lib/processes/storageProcesses/swarm.js @@ -0,0 +1,75 @@ +const child_process = require('child_process'); +const ProcessWrapper = require('../../process/processWrapper'); +const constants = require('../../constants'); +const fs = require('../../core/fs'); + +let swarmProcess; + +class SwarmProcess extends ProcessWrapper { + constructor(options) { + super(); + this.storageConfig = options.storageConfig; + this.webServerConfig = options.webServerConfig; + } + + startSwarmDaemon() { + const self = this; + if (!this.storageConfig.account || !this.storageConfig.account.address || !this.storageConfig.account.password) { + return 'Account address and password are needed in the storage config to start the Swarm process'; + } + let corsDomain = 'http://localhost:8000'; + if (self.webServerConfig && self.webServerConfig && self.webServerConfig.host && self.webServerConfig.port) { + corsDomain = `http://${self.webServerConfig.host}:${self.webServerConfig.port}`; + } + + const args = [ + `--bzzaccount=${this.storageConfig.account.address}`, + `--password=${fs.dappPath(this.storageConfig.account.password)}`, + `--corsdomain=${corsDomain}` + ]; + this.child = child_process.spawn(this.storageConfig.swarmPath || 'swarm', args); + + this.child.on('error', (err) => { + err = err.toString(); + console.error('Swarm error: ', err); + }); + this.child.stdout.on('data', (data) => { + data = data.toString(); + console.log(`Swarm error: ${data}`); + }); + // Swarm logs appear in stderr somehow + this.child.stderr.on('data', (data) => { + data = data.toString(); + if (!self.readyCalled && data.indexOf('Swarm http proxy started') > -1) { + self.readyCalled = true; + self.send({result: constants.storage.initiated}); + } + console.log('Swarm: ' + data); + }); + this.child.on('exit', (code) => { + if (code) { + console.error('Swarm exited with error code ' + code); + } + }); + } + + kill() { + if (this.child) { + this.child.kill(); + } + } +} + +process.on('message', (msg) => { + if (msg === 'exit') { + return swarmProcess.kill(); + } + if (msg.action === constants.storage.init) { + swarmProcess = new SwarmProcess(msg.options); + const error = swarmProcess.startSwarmDaemon(); + + if (error) { + swarmProcess.send({result: constants.storage.initiated, error}); + } + } +}); diff --git a/package-lock.json b/package-lock.json index 9d48b9ee..7741187e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,7 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=" }, "abstract-leveldown": { "version": "2.6.3", @@ -87,7 +87,7 @@ "acorn": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" + "integrity": "sha1-9HPdR+AnegjijpvsWu6wR1HwuMk=" }, "acorn-dynamic-import": { "version": "2.0.2", @@ -434,26 +434,10 @@ } } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.5" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", "requires": { "sprintf-js": "1.0.3" } @@ -470,7 +454,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" }, "arr-union": { "version": "3.1.0", @@ -528,7 +512,7 @@ "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", "requires": { "bn.js": "4.11.8", "inherits": "2.0.3", @@ -651,7 +635,7 @@ "babel-generator": { "version": "6.26.1", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "integrity": "sha1-GERAjTuPDTWkBOp6wYDwh6YBvZA=", "requires": { "babel-messages": "6.23.0", "babel-runtime": "6.26.0", @@ -801,7 +785,7 @@ "babel-loader": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.4.tgz", - "integrity": "sha512-/hbyEvPzBJuGpk9o80R0ZyTej6heEOr59GoEUtn8qFKbnx4cJm9FWES6J/iv644sYgrtVw9JJQkjaLW/bqb5gw==", + "integrity": "sha1-40Y5OL1ObVXRwXTFSF1AahiO0BU=", "requires": { "find-cache-dir": "1.0.0", "loader-utils": "1.1.0", @@ -1367,7 +1351,7 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=" }, "backoff": { "version": "2.5.0", @@ -1385,7 +1369,7 @@ "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", "requires": { "cache-base": "1.0.1", "class-utils": "0.3.6", @@ -1444,7 +1428,7 @@ "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=" }, "binary-extensions": { "version": "1.11.0", @@ -1454,7 +1438,7 @@ "bindings": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", - "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==" + "integrity": "sha1-s0b27PapX1qBXFg5/HzbIlAvHtc=" }, "bip39": { "version": "2.5.0", @@ -1510,7 +1494,7 @@ "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=" }, "body-parser": { "version": "1.18.2", @@ -1540,7 +1524,7 @@ "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -1752,7 +1736,7 @@ "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", "requires": { "collection-visit": "1.0.0", "component-emitter": "1.2.1", @@ -1879,7 +1863,7 @@ "anymatch": "2.0.0", "async-each": "1.0.1", "braces": "2.3.2", - "fsevents": "1.2.3", + "fsevents": "1.2.4", "glob-parent": "3.1.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -1986,7 +1970,7 @@ "cids": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/cids/-/cids-0.5.3.tgz", - "integrity": "sha512-ujWbNP8SeLKg5KmGrxYZM4c+ttd+wwvegrdtgmbi2KNFUbQN4pqsGZaGQE3rhjayXTbKFq36bYDbKhsnD0eMsg==", + "integrity": "sha1-miW2l+t2+vgHr87DXEq5Nu370KQ=", "requires": { "multibase": "0.4.0", "multicodec": "0.2.6", @@ -1996,7 +1980,7 @@ "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", "requires": { "inherits": "2.0.3", "safe-buffer": "5.1.1" @@ -2011,7 +1995,7 @@ "clap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "integrity": "sha1-TzZ0WzIAhJJVf0ZBLWbVDLmbzlE=", "requires": { "chalk": "1.1.3" } @@ -2019,7 +2003,7 @@ "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", "requires": { "arr-union": "3.1.0", "define-property": "0.2.5", @@ -2185,7 +2169,7 @@ "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=", "requires": { "color-name": "1.1.3" } @@ -2264,11 +2248,6 @@ "date-now": "0.1.4" } }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -2401,7 +2380,7 @@ "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", "requires": { "browserify-cipher": "1.0.0", "browserify-sign": "4.0.4", @@ -2565,7 +2544,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -2686,12 +2665,6 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" }, - "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", - "optional": true - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -2717,7 +2690,7 @@ "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" @@ -2763,12 +2736,6 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "optional": true - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -2796,12 +2763,6 @@ "repeating": "2.0.1" } }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "optional": true - }, "detect-node": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", @@ -2942,7 +2903,7 @@ "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=", "requires": { "once": "1.4.0" } @@ -3074,7 +3035,7 @@ "escodegen": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "integrity": "sha1-264X75bI5L7bE1b0UE+kzC98t+I=", "requires": { "esprima": "3.1.3", "estraverse": "4.2.0", @@ -3091,7 +3052,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "optional": true } } @@ -3284,7 +3245,7 @@ "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", "requires": { "estraverse": "4.2.0" } @@ -3630,7 +3591,7 @@ "ethereumjs-testrpc": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/ethereumjs-testrpc/-/ethereumjs-testrpc-6.0.3.tgz", - "integrity": "sha512-lAxxsxDKK69Wuwqym2K49VpXtBvLEsXr1sryNG4AkvL5DomMdeCBbu3D87UEevKenLHBiT8GTjARwN6Yj039gA==", + "integrity": "sha1-eguHvzZw+S9gf5j6aniAHZdBsSQ=", "requires": { "webpack": "3.11.0" }, @@ -3838,7 +3799,7 @@ "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", "requires": { "md5.js": "1.3.4", "safe-buffer": "5.1.1" @@ -3948,7 +3909,7 @@ "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "requires": { "is-plain-object": "2.0.4" } @@ -4105,7 +4066,7 @@ "file-loader": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", - "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "integrity": "sha1-b+iGRJsPKpNuQ8q6rAzb+zaVBvg=", "requires": { "loader-utils": "1.1.0", "schema-utils": "0.4.5" @@ -4344,13 +4305,465 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", - "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "optional": true, "requires": { "nan": "2.9.2", - "node-pre-gyp": "0.9.1" + "node-pre-gyp": "0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.7", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "0.5.1", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "optional": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "optional": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true + } } }, "fstream": { @@ -4367,42 +4780,13 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "optional": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "optional": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, "generate-function": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", @@ -4454,7 +4838,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -4507,7 +4891,7 @@ "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=" }, "globby": { "version": "5.0.0", @@ -4834,7 +5218,7 @@ "grunt-mocha-test": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.13.3.tgz", - "integrity": "sha512-zQGEsi3d+ViPPi7/4jcj78afKKAKiAA5n61pknQYi25Ugik+aNOuRmiOkmb8mN2CeG8YxT+YdT1H1Q7B/eNkoQ==", + "integrity": "sha1-kChHK2Fb2m3eqnswpaFk6YBd4AU=", "dev": true, "requires": { "hooker": "0.2.3", @@ -4924,12 +5308,6 @@ "has-symbol-support-x": "1.4.2" } }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "optional": true - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -4995,7 +5373,7 @@ "hash.js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "integrity": "sha1-NA3tvmKQGHFRweodd3o0SJNd+EY=", "requires": { "inherits": "2.0.3", "minimalistic-assert": "1.0.0" @@ -5056,7 +5434,7 @@ "hosted-git-info": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==" + "integrity": "sha1-IyNbKasjDFdqqw1PE/wEawsDgiI=" }, "html-comment-regex": { "version": "1.1.1", @@ -5140,7 +5518,7 @@ "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", "requires": { "color-convert": "1.9.1" } @@ -5173,7 +5551,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" }, "supports-color": { "version": "5.3.0", @@ -5224,15 +5602,6 @@ "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", "dev": true }, - "ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "optional": true, - "requires": { - "minimatch": "3.0.4" - } - }, "ignorefs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/ignorefs/-/ignorefs-1.2.0.tgz", @@ -5290,12 +5659,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "optional": true - }, "inquirer": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", @@ -5378,7 +5741,7 @@ "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", "requires": { "loose-envify": "1.3.1" } @@ -5401,7 +5764,7 @@ "ipfs-api": { "version": "17.2.4", "resolved": "https://registry.npmjs.org/ipfs-api/-/ipfs-api-17.2.4.tgz", - "integrity": "sha512-GFNy3Cj7EkzCrdyaQpvctHmtwtghzIDPTtW6XTqj+vybSwk2swyEMKaMHimqi8c8N+5+x5wfLpeUyRUhcZ9lDA==", + "integrity": "sha1-gTCl+pjhWyr49qJ7cUQs66/ImyQ=", "requires": { "async": "2.6.0", "bs58": "4.0.1", @@ -5438,7 +5801,7 @@ "ipfs-block": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/ipfs-block/-/ipfs-block-0.6.1.tgz", - "integrity": "sha512-28dgGsb2YsYnFs+To4cVBX8e/lTCb8eWDzGhN5csj3a/sHMOYrHeK8+Ez0IV67CI3lqKGuG/ZD01Cmd6JUvKrQ==", + "integrity": "sha1-uTBT6eqV917SkHgX/79V2ZKgatE=", "requires": { "cids": "0.5.3" } @@ -5455,7 +5818,7 @@ "ipfs-unixfs": { "version": "0.1.14", "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-0.1.14.tgz", - "integrity": "sha512-s1tEnwKhdd17MmyC/EUMNVMDYzKhCiHDI11TF8tSBeWkEQp+0WUxkYuqvz0R5TSi2lNDJ/oVnEmwWhki2spUiQ==", + "integrity": "sha1-JWQ3/PZC2KtGtRhVguxPIekI7zc=", "requires": { "protons": "1.0.1" } @@ -5463,7 +5826,7 @@ "ipld-dag-pb": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.11.4.tgz", - "integrity": "sha512-A514Bt4z44bxhPQVzmBFMJsV3res92eBaDX0snzVsLLasBPNh4Z7He8N2mwSeAX9bJNywRBlJbHMQPwC45rqXw==", + "integrity": "sha1-sPrlaB+tVpcTLjJdbC/xe18Mtqg=", "requires": { "async": "2.6.0", "bs58": "4.0.1", @@ -5515,7 +5878,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" }, "is-builtin-module": { "version": "1.0.0", @@ -5636,7 +5999,7 @@ "is-ipfs": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-ipfs/-/is-ipfs-0.3.2.tgz", - "integrity": "sha512-82V1j4LMkYy7H4seQQzOWqo7FiW3I64/1/ryo3dhtWKfOvm7ZolLMRQQfGKs4OXWauh5rAkPnamVcRISHwhmpQ==", + "integrity": "sha1-xGULg442/QFR3liWsv8xn+iTYYI=", "requires": { "bs58": "4.0.1", "cids": "0.5.3", @@ -5665,7 +6028,7 @@ "is-odd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "integrity": "sha1-dkZiRnH9fqVYzNmieVGC8pWPGyQ=", "requires": { "is-number": "4.0.0" }, @@ -5673,7 +6036,7 @@ "is-number": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=" } } }, @@ -5709,7 +6072,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "requires": { "isobject": "3.0.1" }, @@ -5793,7 +6156,7 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=" }, "isarray": { "version": "1.0.0", @@ -6161,7 +6524,7 @@ "libp2p-crypto": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.12.1.tgz", - "integrity": "sha512-1/z8rxZ0DcQNreZhEsl7PnLr7DWOioSvYbKBLGkRwNRiNh1JJLgh0PdTySBb44wkrOGT+TxcGRd7iq3/X6Wxwg==", + "integrity": "sha1-SocNJpujFQ3+AU5PmuoeVQdgFcg=", "requires": { "asn1.js": "5.0.0", "async": "2.6.0", @@ -6181,7 +6544,7 @@ "asn1.js": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.0.0.tgz", - "integrity": "sha512-Y+FKviD0uyIWWo/xE0XkUl0x1allKFhzEVJ+//2Dgqpy+n+B77MlPNqvyk7Vx50M9XyVzjnRhDqJAEAsyivlbA==", + "integrity": "sha1-Kwq7x/pm3Aqt0GpGg8c2CMMrBpY=", "requires": { "bn.js": "4.11.8", "inherits": "2.0.3", @@ -6265,7 +6628,7 @@ "lockfile": "1.0.4", "node-fetch": "2.1.2", "semver": "5.5.0", - "tar": "4.4.2", + "tar": "4.4.4", "url-join": "4.0.0" }, "dependencies": { @@ -6310,9 +6673,9 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "tar": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.2.tgz", - "integrity": "sha512-BfkE9CciGGgDsATqkikUHrQrraBCO+ke/1f6SFAEMnxyyfN9lxC+nW1NFWMpqH865DhHIy9vQi682gk1X7friw==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.4.tgz", + "integrity": "sha512-mq9ixIYfNF9SK0IS/h2HKMu8Q2iaCuhDDsZhdEag/FHv8fOaYld4vN7ouMgcSSt5WKZzPs8atclTcJm36OTh4w==", "requires": { "chownr": "1.0.1", "fs-minipass": "1.2.5", @@ -6520,7 +6883,7 @@ "logplease": { "version": "1.2.14", "resolved": "https://registry.npmjs.org/logplease/-/logplease-1.2.14.tgz", - "integrity": "sha512-n6bf1Ce0zvcmuyOzDi2xxLix6F1D/Niz7Qa4K3BmkjyaXcovzEjwZKUYsV+0F2Uv4rlXm5cToIEB+ynqSRdwGw==" + "integrity": "sha1-5QndTEVcGu190QWhdpTapbmsV58=" }, "lolex": { "version": "2.3.2", @@ -6962,7 +7325,7 @@ "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", "requires": { "bn.js": "4.11.8", "brorand": "1.1.0" @@ -6971,7 +7334,7 @@ "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=" }, "mime-db": { "version": "1.33.0", @@ -6989,7 +7352,7 @@ "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=" }, "mimic-response": { "version": "1.0.0", @@ -7017,7 +7380,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "1.1.11" } @@ -7045,7 +7408,7 @@ "minizlib": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", - "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "integrity": "sha1-EeE2WM5GvDpwomeqxYNZ0eDCnOs=", "requires": { "minipass": "2.2.1" } @@ -7053,7 +7416,7 @@ "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", "requires": { "for-in": "1.0.2", "is-extendable": "1.0.1" @@ -7062,7 +7425,7 @@ "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "requires": { "is-plain-object": "2.0.4" } @@ -7185,7 +7548,7 @@ "multibase": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.4.0.tgz", - "integrity": "sha512-fnYvZJWDn3eSJ7EeWvS8zbOpRwuyPHpDggSnqGXkQMvYED5NdO9nyqnZboGvAT+r/60J8KZ09tW8YJHkS22sFw==", + "integrity": "sha1-G9tiyC3gEU+CKh2HUby+6RzS77o=", "requires": { "base-x": "3.0.4" } @@ -7193,7 +7556,7 @@ "multicodec": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.2.6.tgz", - "integrity": "sha512-VGyRUDkxdJzWnj9x3C49MzI3+TtKKDYNfIBOaWBCNuPk6CE5CwwkL15gJtsLDfLay0fL4xTh4Af3kBbJSxSppw==", + "integrity": "sha1-nS1lZfvAgVsTnfyQY3H8Od9N/ds=", "requires": { "varint": "5.0.0" } @@ -7201,7 +7564,7 @@ "multihashes": { "version": "0.4.13", "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.13.tgz", - "integrity": "sha512-HwJGEKPCpLlNlgGQA56CYh/Wsqa+c4JAq8+mheIgw7OK5T4QvNJqgp6TH8gZ4q4l1aiWeNat/H/MrFXmTuoFfQ==", + "integrity": "sha1-0QvXG9UdJKqJTipvFFcUa7e6wSU=", "requires": { "bs58": "4.0.1", "varint": "5.0.0" @@ -7210,7 +7573,7 @@ "multihashing-async": { "version": "0.4.8", "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.4.8.tgz", - "integrity": "sha512-LCc4lfxmTJOHKIjZjFNgvmfB6nXS/ErLInT9uwU8udFrRm2PH+aTPk3mfCREKmCiSHOlCWiv2O8rlnBx+OjlMw==", + "integrity": "sha1-QVcrJaj8aOsxi4ViQJ/dchpyfqE=", "requires": { "async": "2.6.0", "blakejs": "1.1.0", @@ -7258,7 +7621,7 @@ "nanomatch": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "integrity": "sha1-h59xUMstq3pHElkGbBBO7m4Pp8I=", "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", @@ -7315,17 +7678,6 @@ } } }, - "needle": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.1.tgz", - "integrity": "sha512-t/ZswCM9JTWjAdXS9VpvqhI2Ct2sL2MdY4fUXqGJaGBk13ge99ObqRksRTbBE56K+wxUXwwfZYOuZHifFW9q+Q==", - "optional": true, - "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.19", - "sax": "1.2.4" - } - }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -7416,76 +7768,10 @@ "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-1.3.0.tgz", "integrity": "sha512-/IHFGoMJWIAcFbrI3KYx6TUmHdBXRZXACAVbkHzYB39JZzoVqgme7wcMnhrOwCvrO8HfIipFTBhELJFMhiw1mg==" }, - "node-pre-gyp": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz", - "integrity": "sha1-8RwHUW3ZL4cZnbx+GDjqt81WyeA=", - "optional": true, - "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.1", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.7", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.2" - }, - "dependencies": { - "minipass": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.3.tgz", - "integrity": "sha512-/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw==", - "optional": true, - "requires": { - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "tar": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.2.tgz", - "integrity": "sha512-BfkE9CciGGgDsATqkikUHrQrraBCO+ke/1f6SFAEMnxyyfN9lxC+nW1NFWMpqH865DhHIy9vQi682gk1X7friw==", - "optional": true, - "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.3.3", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - } - }, - "yallist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", - "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" - } - } - }, "node-webcrypto-ossl": { "version": "1.0.35", "resolved": "https://registry.npmjs.org/node-webcrypto-ossl/-/node-webcrypto-ossl-1.0.35.tgz", "integrity": "sha512-KsdlCw0hTmSa4bos7BzEa7Ag9qsDgFAMi/X+Wq+OMpKjjEPZ+JQZKmuU2leiI4dXC6i8RpdGTRFRiw9bvxk8/w==", - "optional": true, "requires": { "mkdirp": "0.5.1", "nan": "2.9.2", @@ -7513,7 +7799,7 @@ "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", "requires": { "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", @@ -7545,22 +7831,6 @@ "sort-keys": "1.1.2" } }, - "npm-bundled": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", - "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", - "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", - "optional": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - } - }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -7569,18 +7839,6 @@ "path-key": "2.0.1" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", @@ -7673,7 +7931,7 @@ "object-inspect": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", - "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==" + "integrity": "sha1-N/+xDnGtrzdI0F9xO0yUUvQCy8Q=" }, "object-keys": { "version": "1.0.11", @@ -7837,7 +8095,7 @@ "orbit-db-cache": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/orbit-db-cache/-/orbit-db-cache-0.0.7.tgz", - "integrity": "sha512-bvIimrujda1di1p0R2I0MY3VmnSz2y8l7Bc4Qvp/jsJpf5jxTIvfC97pGpO6Fm3kUGGZDhKNjY/ZW3VfXoBRFw==", + "integrity": "sha1-VbxNHniZujWkuGFPPHVax9owkFo=", "requires": { "fs-pull-blob-store": "0.4.1", "idb-pull-blob-store": "0.5.1", @@ -7928,16 +8186,6 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, "p-cancelable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", @@ -7951,7 +8199,7 @@ "p-limit": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "integrity": "sha1-DpK2vty1nwIsE9DxlJ3ILRWQnxw=", "requires": { "p-try": "1.0.0" } @@ -8126,7 +8374,7 @@ "peer-info": { "version": "0.11.6", "resolved": "https://registry.npmjs.org/peer-info/-/peer-info-0.11.6.tgz", - "integrity": "sha512-xrVNiAF1IhVJNGEg5P2UQN+subaEkszT8YkC3zdy06MK0vTH3cMHB+HH+ZURkoSLssc3HbK58ecXeKpQ/4zq5w==", + "integrity": "sha1-BICwAw0t+P1PCYebJppxWyvSuhI=", "requires": { "lodash.uniqby": "4.7.0", "multiaddr": "3.0.2", @@ -8209,7 +8457,7 @@ "postcss": { "version": "5.2.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "requires": { "chalk": "1.1.3", "js-base64": "2.4.3", @@ -8393,7 +8641,7 @@ "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", "requires": { "color-convert": "1.9.1" } @@ -8426,7 +8674,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" }, "supports-color": { "version": "5.3.0", @@ -8450,7 +8698,7 @@ "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", "requires": { "color-convert": "1.9.1" } @@ -8483,7 +8731,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" }, "supports-color": { "version": "5.3.0", @@ -8507,7 +8755,7 @@ "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", "requires": { "color-convert": "1.9.1" } @@ -8540,7 +8788,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" }, "supports-color": { "version": "5.3.0", @@ -8564,7 +8812,7 @@ "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", "requires": { "color-convert": "1.9.1" } @@ -8597,7 +8845,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" }, "supports-color": { "version": "5.3.0", @@ -8734,7 +8982,7 @@ "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=" }, "process": { "version": "0.11.10", @@ -8744,7 +8992,7 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=" }, "progress": { "version": "2.0.0", @@ -8772,7 +9020,7 @@ "promisify-es6": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/promisify-es6/-/promisify-es6-1.0.3.tgz", - "integrity": "sha512-N9iVG+CGJsI4b4ZGazjwLnxErD2d9Pe4DPvvXSxYA9tFNu8ymXME4Qs5HIQ0LMJpNM7zj+m0NlNnNeqFpKzqnA==" + "integrity": "sha1-sBJmjE3zyWXOE9qsKzpNFyapY0Y=" }, "promptly": { "version": "2.2.0", @@ -8806,12 +9054,12 @@ "protocol-buffers-schema": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.3.2.tgz", - "integrity": "sha512-Xdayp8sB/mU+sUV4G7ws8xtYMGdQnxbeIfLjyO9TZZRJdztBGhlmbI5x1qcY4TG5hBkIKGnc28i7nXxaugu88w==" + "integrity": "sha1-AENPYItOjfVMWeBw7+78N/tLuFk=" }, "protons": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/protons/-/protons-1.0.1.tgz", - "integrity": "sha512-+0ZKnfVs+4c43tbAQ5j0Mck8wPcLnlxUYzKQoB4iDW4ocdXGnN4P+0dDbgX1FTpoY9+7P2Tn2scJyHHqj+S/lQ==", + "integrity": "sha1-HBBxRMB/wtHLi2y3ZFHmqTgjdnY=", "requires": { "protocol-buffers-schema": "3.3.2", "safe-buffer": "5.1.1", @@ -8928,7 +9176,7 @@ "pump": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "integrity": "sha1-Xf6DEcM7v2/BgmH580cCxHwIqVQ=", "requires": { "end-of-stream": "1.4.1", "once": "1.4.0" @@ -9029,7 +9277,7 @@ "randombytes": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "integrity": "sha1-0wLFIpSFiISKjTAMkytEwkIx2oA=", "requires": { "safe-buffer": "5.1.1" } @@ -9037,7 +9285,7 @@ "randomfill": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", "requires": { "randombytes": "2.0.6", "safe-buffer": "5.1.1" @@ -9064,26 +9312,6 @@ "unpipe": "1.0.0" } }, - "rc": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", - "optional": true, - "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "optional": true - } - } - }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -9186,12 +9414,12 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" }, "regenerator-transform": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", @@ -9201,7 +9429,7 @@ "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -9210,7 +9438,7 @@ "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", "requires": { "extend-shallow": "3.0.2", "safe-regex": "1.1.0" @@ -9363,7 +9591,7 @@ "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=" }, "right-align": { "version": "0.1.3", @@ -9376,7 +9604,7 @@ "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", "requires": { "glob": "7.1.2" } @@ -9486,7 +9714,7 @@ "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=" }, "scandirectory": { "version": "2.5.0", @@ -9501,7 +9729,7 @@ "schema-utils": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", - "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "integrity": "sha1-IYNvBgiqwXt4+ePiTa/xSlyhOj4=", "requires": { "ajv": "6.2.1", "ajv-keywords": "3.1.0" @@ -9535,7 +9763,7 @@ "secp256k1": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.5.0.tgz", - "integrity": "sha512-e5QIJl8W7Y4tT6LHffVcZAxJjvpgE5Owawv6/XCYPQljE9aP2NFFddQ8OYMKhdLshNu88FfL3qCN3/xYkXGRsA==", + "integrity": "sha1-Z307io4E4aX6OBoa5DfFQge3ONA=", "requires": { "bindings": "1.3.0", "bip66": "1.1.5", @@ -9573,12 +9801,12 @@ "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=" }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "integrity": "sha1-bsyh4PjBVtFBWXVZhI32RzCmu8E=", "requires": { "debug": "2.6.9", "depd": "1.1.2", @@ -9605,7 +9833,7 @@ "serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "integrity": "sha1-CV6Ecv1bRiN9tQzkhqQ/S4bGzsE=", "requires": { "encodeurl": "1.0.2", "escape-html": "1.0.3", @@ -9638,7 +9866,7 @@ "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", "requires": { "extend-shallow": "2.0.1", "is-extendable": "0.1.1", @@ -9797,7 +10025,7 @@ "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", "requires": { "base": "0.11.2", "debug": "2.6.9", @@ -9881,7 +10109,7 @@ "snapdragon-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", "requires": { "define-property": "1.0.0", "isobject": "3.0.1", @@ -9906,7 +10134,7 @@ "snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", "requires": { "kind-of": "3.2.2" } @@ -10108,7 +10336,7 @@ "source-list-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" + "integrity": "sha1-qqR0A/eyRakvvJfqCPJQ1gh+0IU=" }, "source-map": { "version": "0.5.7", @@ -10130,7 +10358,7 @@ "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", "requires": { "source-map": "0.5.7" } @@ -10143,7 +10371,7 @@ "spdx-correct": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=", "requires": { "spdx-expression-parse": "3.0.0", "spdx-license-ids": "3.0.0" @@ -10152,12 +10380,12 @@ "spdx-exceptions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==" + "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k=" }, "spdx-expression-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", "requires": { "spdx-exceptions": "2.1.0", "spdx-license-ids": "3.0.0" @@ -10166,12 +10394,12 @@ "spdx-license-ids": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==" + "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=" }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", "requires": { "extend-shallow": "3.0.2" } @@ -10179,7 +10407,7 @@ "split2": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "integrity": "sha1-GGsldbz4PoW30YRldWI47k7kJJM=", "requires": { "through2": "2.0.3" } @@ -10226,7 +10454,7 @@ "static-eval": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.0.tgz", - "integrity": "sha512-6flshd3F1Gwm+Ksxq463LtFd1liC77N/PX1FVVc3OzL3hAmo2fwHFbuArkcfi7s9rTNsLEhcRmXGFZhlgy40uw==", + "integrity": "sha1-DoIfiSaEfe97S1DNpdVcBKmxOGQ=", "requires": { "escodegen": "1.9.1" } @@ -10379,7 +10607,7 @@ "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" @@ -10474,12 +10702,13 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "style-loader": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.19.1.tgz", - "integrity": "sha512-IRE+ijgojrygQi3rsqT0U4dd+UcPCqcVvauZpCnQrGAlEe+FUIyrK93bUDScamesjP08JlQNsFJU+KmPedP5Og==", + "integrity": "sha1-WR/8gLzv4mi3fF2evAUF13Jhn4U=", "requires": { "loader-utils": "1.1.0", "schema-utils": "0.3.0" @@ -10686,7 +10915,7 @@ "tar": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-3.2.1.tgz", - "integrity": "sha512-ZSzds1E0IqutvMU8HxjMaU8eB7urw2fGwTq88ukDOVuUIh0656l7/P7LiVPxhO5kS4flcRJQk8USG+cghQbTUQ==", + "integrity": "sha1-mqjkHIjwnnbBZgdbxx+T1RZuYbE=", "requires": { "chownr": "1.0.1", "minipass": "2.2.1", @@ -10844,7 +11073,7 @@ "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", "requires": { "define-property": "2.0.2", "extend-shallow": "3.0.2", @@ -10964,7 +11193,7 @@ "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "integrity": "sha1-qX7nqf9CaRufeD/xvFES/j/KkIA=", "requires": { "is-typedarray": "1.0.0" } @@ -11204,7 +11433,7 @@ "url-loader": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz", - "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==", + "integrity": "sha1-oAenEJYg6dmI0UvOZ3od7Lmpk/c=", "requires": { "loader-utils": "1.1.0", "mime": "1.4.1", @@ -11253,7 +11482,7 @@ "use": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "integrity": "sha1-FHFr8D/f79AwQK71jYtLhfOnxUQ=", "requires": { "kind-of": "6.0.2" }, @@ -11303,7 +11532,7 @@ "validate-npm-package-license": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=", "requires": { "spdx-correct": "3.0.0", "spdx-expression-parse": "3.0.0" @@ -11342,7 +11571,7 @@ "vlq": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" + "integrity": "sha1-jz5DKM9jsVQMDWfhsneDhviXWyY=" }, "vm-browserify": { "version": "0.0.4", @@ -11803,7 +12032,6 @@ "version": "0.1.19", "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-0.1.19.tgz", "integrity": "sha512-RyaWaYYwFUeWVB1ny8Oj53UQJppNLyz+RWFv0IPP8W6l95kFS+jHS+4vH42o3VJaiom5EIogwmngY57Bwy5DDQ==", - "optional": true, "requires": { "tslib": "1.9.0" } @@ -11917,7 +12145,7 @@ "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", "requires": { "isexe": "2.0.0" } @@ -11927,28 +12155,6 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "optional": true, - "requires": { - "string-width": "1.0.2" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "optional": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, "window-size": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-1.1.0.tgz",