diff --git a/lib/cmds/blockchain/blockchain.js b/lib/cmds/blockchain/blockchain.js index 0fe6a4905..17a35a28a 100644 --- a/lib/cmds/blockchain/blockchain.js +++ b/lib/cmds/blockchain/blockchain.js @@ -120,6 +120,7 @@ Blockchain.prototype.run = function() { return; } args = _.compact(args); + console.log(`RUNNING GETH COMMAND: ${cmd} ${JSON.stringify(args)}`); self.child = child_process.spawn(cmd, args, {cwd: process.cwd()}); self.child.on('error', (err) => { diff --git a/lib/core/config.js b/lib/core/config.js index e3c0c65c5..3ee972933 100644 --- a/lib/core/config.js +++ b/lib/core/config.js @@ -78,17 +78,29 @@ Config.prototype._updateBlockchainCors = function(){ let blockchainConfig = this.blockchainConfig; let storageConfig = this.storageConfig; let webServerConfig = this.webServerConfig; - let cors = ''; + let corsParts = []; if(webServerConfig && webServerConfig.enabled) { let webServerPort = webServerConfig.port ? `:${webServerConfig.port}` : ''; - if(webServerConfig.host) cors = `http://${webServerConfig.host}${webServerPort}`; + if(webServerConfig.host) corsParts.push(`http://${webServerConfig.host}${webServerPort}`); } if(storageConfig && storageConfig.enabled) { - let storagePort = storageConfig.port ? `:${storageConfig.port}` : ''; - if(storageConfig.host) cors += `${cors.length ? ',' : ''}${storageConfig.protocol || 'http'}://${storageConfig.host}${storagePort}`; + // if getUrl is specified in the config, that needs to be included in cors + // instead of the concatenated protocol://host:port + if(storageConfig.upload.getUrl) { + // remove /ipfs or /bzz: from getUrl if it's there + let getUrlParts = storageConfig.upload.getUrl.split('/'); + getUrlParts = getUrlParts.slice(0, 3); + corsParts.push(getUrlParts.join('/')); + } + // use our modified getUrl or in case it wasn't specified, use a built url + else{ + let port = storageConfig.upload.port ? `:${storageConfig.upload.port}` : ''; + corsParts.push(`${storageConfig.upload.protocol || 'http'}://${storageConfig.upload.host}${port}`); + } } + let cors = corsParts.join(','); if(blockchainConfig.rpcCorsDomain === 'auto' && cors.length) blockchainConfig.rpcCorsDomain = cors; if(blockchainConfig.wsOrigins === 'auto' && cors.length) blockchainConfig.wsOrigins = cors; }; diff --git a/lib/i18n/locales/en.json b/lib/i18n/locales/en.json index b6c00fc12..30f2d009e 100644 --- a/lib/i18n/locales/en.json +++ b/lib/i18n/locales/en.json @@ -124,7 +124,6 @@ "Blockchain node is ready": "Blockchain node is ready", "terminating due to error": "terminating due to error", "Unable to start the blockchain process. Is Geth installed?": "Unable to start the blockchain process. Is Geth installed?", - "Cannot upload: {{platform}} node is not running on {{protocol}}://{{host}}:{{port}}.": "Cannot upload: {{platform}} node is not running on {{protocol}}://{{host}}:{{port}}.", "Error while downloading the file": "Error while downloading the file", "Error while loading the content of ": "Error while loading the content of ", "no contracts found": "no contracts found", @@ -136,27 +135,23 @@ "deploying to swarm!": "deploying to swarm!", "adding %s to swarm": "adding %s to swarm", "successfully uploaded to swarm": "successfully uploaded to swarm", - "Cannot upload: {{platform}} node is not running on {{protocol}}://{{host}}{{port}}.": "Cannot upload: {{platform}} node is not running on {{protocol}}://{{host}}{{port}}.", - "Installing packages...": "Installing packages...", - "Next steps:": "Next steps:", - "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" - "Cannot upload: {{platform}} node is not running on {{protocol}}://{{host}}{{port}}.": "Cannot upload: {{platform}} node is not running on {{protocol}}://{{host}}{{port}}." - "This is known to cause issues with some applications, please consider reducing your DApp path's length to 66 characters or less.": "This is known to cause issues with some applications, please consider reducing your DApp path's length to 66 characters or less." - "no contracts found": "no contracts found", - "DApp path length is too long: \"": "DApp path length is too long: \"", - "This is known to cause issues with some applications, please consider reducing your DApp path's length to 66 characters or less.": "This is known to cause issues with some applications, please consider reducing your DApp path's length to 66 characters or less.", - "DApp path length is too long: ": "DApp path length is too long: ", - "WARNING! DApp path length is too long: ": "WARNING! DApp path length is too long: ", - "This is known to cause issues with starting geth, please consider reducing your DApp path's length to 66 characters or less.": "This is known to cause issues with starting geth, please consider reducing your DApp path's length to 66 characters or less.", "Installing packages...": "Installing packages...", "Next steps:": "Next steps:", "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", + "Cannot upload: {{platform}} node is not running on {{protocol}}://{{host}}{{port}}.": "Cannot upload: {{platform}} node is not running on {{protocol}}://{{host}}{{port}}.", + "DApp path length is too long: ": "DApp path length is too long: ", + "WARNING! DApp path length is too long: ": "WARNING! DApp path length is too long: ", + "This is known to cause issues with starting geth, please consider reducing your DApp path's length to 66 characters or less.": "This is known to cause issues with starting geth, please consider reducing your DApp path's length to 66 characters or less.", "%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", - "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" + "Starting swarm process": "Starting swarm process", + "swarm process started": "swarm process started", + "Storage process for swarm ended before the end of this process. Code: 12": "Storage process for swarm ended before the end of this process. Code: 12", + "Storage process for swarm ended before the end of this process. Code: 1": "Storage process for swarm ended before the end of this process. Code: 1", + "Storage process for ipfs ended before the end of this process. Code: 12": "Storage process for ipfs ended before the end of this process. Code: 12", + "Blockchain process ended before the end of this process. Code: %s": "Blockchain process ended before the end of this process. Code: %s", + "Cannot start {{platform}} node on {{protocol}}://{{host}}{{port}}.": "Cannot start {{platform}} node on {{protocol}}://{{host}}{{port}}." } \ No newline at end of file diff --git a/lib/index.js b/lib/index.js index 3daa6ac13..7c157544c 100644 --- a/lib/index.js +++ b/lib/index.js @@ -92,7 +92,8 @@ class Embark { logger: engine.logger, events: engine.events, storageConfig: engine.config.storageConfig, - webServerConfig: engine.config.webServerConfig + webServerConfig: engine.config.webServerConfig, + blockchainConfig: engine.config.blockchainConfig }); return storageProcessesLauncher.launchProcess(platform.toLowerCase(), (err) => { if (err) { @@ -159,7 +160,7 @@ class Embark { engine.startService("web3"); engine.startService("pipeline"); engine.startService("deployment"); - engine.startService('storage'); + engine.startService("storage"); engine.startService("codeGenerator"); engine.startService("namingSystem"); @@ -363,15 +364,17 @@ class Embark { engine.startService("web3"); engine.startService("pipeline"); engine.startService("deployment"); - engine.startService('storage'); + engine.startService("storage"); engine.startService("codeGenerator"); engine.startMonitor(); callback(); }, function checkStorageService(callback){ + let config = engine.config.storageConfig.upload; + let port = config.port ? ':' + config.port : ''; + const errorObj = {message: __('Cannot upload: {{platform}} node is not running on {{protocol}}://{{host}}{{port}}.', {platform: platform, protocol: config.protocol || 'http', host: config.host, port: port})}; - 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})}; - + // start the upload storage node self._checkStorageEndpoint(engine, platform, function (err) { if (!err) { return callback(); @@ -391,6 +394,38 @@ class Embark { }); }); }, + function checkDappConnectionStorageService(callback){ + // start any dappConnection storage nodes + engine.config.storageConfig.dappConnection.forEach(dappConn => { + if(!dappConn.provider || dappConn.provider === platform) return; // don't start the process we've just started above + + let port = dappConn.port ? ':' + dappConn.port : ''; + const errorObj = {message: __('Cannot start {{platform}} node on {{protocol}}://{{host}}{{port}}.', {platform: dappConn.provider, protocol: dappConn.protocol || 'http', host: dappConn.host, port: port})}; + + self._checkStorageEndpoint(engine, dappConn.provider, function (err) { + console.log(`ERROR RETURNED FROM CHECK FOR ${dappConn.provider}: ${err}`); + if (!err) { + return callback(); + } + self._startStorageNode(engine, dappConn.provider, (err) => { + console.log('STARTING PROCESS FOR ' + dappConn.provider); + if (err) { + console.log('ERROR STARTING node ' + err); + engine.logger.error(err); + return callback(errorObj); + } + // Check endpoint again to see if really did start + self._checkStorageEndpoint(engine, dappConn.provider, (err) => { + if (err) { + console.log('ERROR STARTING node 2 ' + err); + return callback(errorObj); + } + callback(); + }); + }); + }); + }); + }, function setupStoragePlugin(callback){ let pluginList = engine.plugins.listPlugins(); if (pluginList.length > 0) { diff --git a/lib/modules/ipfs/index.js b/lib/modules/ipfs/index.js index 78bf04e04..8aba8fbab 100644 --- a/lib/modules/ipfs/index.js +++ b/lib/modules/ipfs/index.js @@ -37,7 +37,7 @@ class IPFS { if (!storageConfig.enabled) { return; } - if (storageConfig.upload.provider !== 'ipfs' || storageConfig.available_providers.indexOf("ipfs") < 0) { + if (_.findWhere(this.storageConfig.dappConnection, {'provider': 'ipfs'}) === undefined && (storageConfig.upload.provider !== 'ipfs' || storageConfig.available_providers.indexOf("ipfs") < 0)) { return; } @@ -110,16 +110,6 @@ class IPFS { this.embark.addCodeToEmbarkJS(code); } - // addSetProvider() { - // let code = "\nEmbarkJS.Storage.setProviders('ipfs'," + JSON.stringify(this.storageConfig.dappConnection) + ");"; - - // let shouldInit = (storageConfig) => { - // return (this.storageConfig.dappConnection !== undefined && this.storageConfig.dappConnection.some((dappConn) => dappConn.provider === 'ipfs') && storageConfig.enabled === true); - // }; - - // this.embark.addProviderInit('storage', code, shouldInit); - // } - addObjectToConsole() { let ipfs = IpfsApi(this.host, this.port); RunCode.doEval("", {ipfs: ipfs}); diff --git a/lib/modules/ipfs/upload.js b/lib/modules/ipfs/upload.js index 273b2f452..8837ffde5 100644 --- a/lib/modules/ipfs/upload.js +++ b/lib/modules/ipfs/upload.js @@ -44,7 +44,7 @@ class IPFS { }, function printUrls(dir_hash, callback) { console.log(("=== " + __("DApp available at") + " http://localhost:8080/ipfs/" + dir_hash + "/").green); - console.log(("=== " + __("DApp available at") + " http://gateway.ipfs.io/ipfs/" + dir_hash + "/").green); + console.log(("=== " + __("DApp available at") + " http://ipfs.infura.io/ipfs/" + dir_hash + "/").green); callback(); } diff --git a/lib/modules/storage/index.js b/lib/modules/storage/index.js index 1c878cb3e..fd938b883 100644 --- a/lib/modules/storage/index.js +++ b/lib/modules/storage/index.js @@ -27,8 +27,11 @@ class Storage { else { let storageProviderCls = require(`../${providerStr}/index.js`); storageProvider = new storageProviderCls(embark, options); /*eslint no-new: "off"*/ - } + // register the service check so we can use it to check if the process is running before spawning it + if(typeof storageProvider.setServiceCheck == 'function') storageProvider.setServiceCheck(); + } + // add __embarkSwarm and __embarkIPFS objects to EmbarkJS if(typeof storageProvider.addProviderToEmbarkJS == 'function') storageProvider.addProviderToEmbarkJS(); }); diff --git a/lib/modules/swarm/embarkjs.js b/lib/modules/swarm/embarkjs.js index 7f5dc4a5e..553cdb6fb 100644 --- a/lib/modules/swarm/embarkjs.js +++ b/lib/modules/swarm/embarkjs.js @@ -100,6 +100,6 @@ __embarkSwarm.uploadFile = function (inputSelector) { }; __embarkSwarm.getUrl = function (hash) { - return `${this._config.getUrl || this._connectUrl + '/bzzr:/'}${hash}`; + return `${this._config.getUrl || this._connectUrl + '/bzz:/'}${hash}`; }; diff --git a/lib/modules/swarm/index.js b/lib/modules/swarm/index.js index b40d61c83..7e1bfd9a3 100644 --- a/lib/modules/swarm/index.js +++ b/lib/modules/swarm/index.js @@ -2,6 +2,7 @@ const UploadSwarm = require('./upload.js'); const utils = require('../../utils/utils.js'); const fs = require('../../core/fs.js'); const Web3Bzz = require('web3-bzz'); +const _ = require('underscore'); class Swarm { @@ -19,7 +20,7 @@ class Swarm { else port = ''; let protocol = options.protocol || options.storageConfig.upload.protocol || 'http'; this.providerUrl = `${protocol}://${host}${port}`; - this.getUrl = options.storageConfig.upload.getUrl || this.providerUrl + '/bzzr:/'; + this.getUrl = options.storageConfig.upload.getUrl || this.providerUrl + '/bzz:/'; this.bzz = new Web3Bzz(this.providerUrl); } @@ -45,7 +46,7 @@ class Swarm { if (!storageConfig.enabled) { return; } - if (storageConfig.upload.provider !== 'swarm' || storageConfig.available_providers.indexOf("swarm") < 0) { + if (_.findWhere(this.storageConfig.dappConnection, {'provider': 'swarm'}) === undefined && (storageConfig.upload.provider !== 'swarm' || storageConfig.available_providers.indexOf("swarm") < 0)) { return; } @@ -80,7 +81,7 @@ class Swarm { return; } - if (this.storageConfig.available_providers.indexOf('swarm') < 0 || this.storageConfig.enabled !== true) { + if (this.storageConfig.available_providers.indexOf('swarm') < 0 || _.findWhere(this.storageConfig.dappConnection, {'provider': 'swarm'}) === undefined || this.storageConfig.enabled !== true) { return; } diff --git a/lib/modules/swarm/upload.js b/lib/modules/swarm/upload.js index 607e361d3..c43b7c307 100644 --- a/lib/modules/swarm/upload.js +++ b/lib/modules/swarm/upload.js @@ -34,7 +34,7 @@ class Swarm { return callback('No directory hash was returned'); } console.log(("=== " + __("DApp available at") + ` ${self.getUrl}${dir_hash}/`).green); - console.log(("=== " + __("DApp available at") + ` http://swarm-gateways.net/bzzr:/${dir_hash}`).green); + console.log(("=== " + __("DApp available at") + ` http://swarm-gateways.net/bzz:/${dir_hash}`).green); callback(); } diff --git a/lib/processes/storageProcesses/ipfs.js b/lib/processes/storageProcesses/ipfs.js index 226c78644..933505020 100644 --- a/lib/processes/storageProcesses/ipfs.js +++ b/lib/processes/storageProcesses/ipfs.js @@ -8,6 +8,8 @@ class IPFSProcess extends ProcessWrapper { constructor(_options) { super(); + this.cors = _options.cors; + this.checkIPFSVersion(); this.startIPFSDaemon(); } @@ -31,6 +33,8 @@ class IPFSProcess extends ProcessWrapper { startIPFSDaemon() { const self = this; + + // spawn the daemon (muhaha) this.child = child_process.spawn('ipfs', ['daemon']); this.child.on('error', (err) => { @@ -45,7 +49,41 @@ class IPFSProcess extends ProcessWrapper { data = data.toString(); if (!self.readyCalled && data.indexOf('Daemon is ready') > -1) { self.readyCalled = true; - self.send({result: constants.storage.initiated}); + + // update IPFS cors before spawning a daemon (muhaha) + console.log(`RUNNING IPFS CORS UPDATE COMMAND: ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\\"${self.cors.join('\\", \\"')}\\"]"`); + child_process.exec(`ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\\"${self.cors.join('\\", \\"')}\\"]"`, {silent: true}, (err, stdout, _stderr) => { + if(err){ + err = err.toString(); + console.error('IPFS CORS update error: ', err); + } + if(_stderr){ + _stderr = _stderr.toString(); + console.error(`IPFS CORS update error: ${_stderr}`); + } + child_process.exec('ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials "[\\"true\\"]"', {silent: true}, (err, stdout, _stderr) => { + if(err){ + err = err.toString(); + console.error('IPFS CORS update error: ', err); + } + if(_stderr){ + _stderr = _stderr.toString(); + console.error(`IPFS CORS update error: ${_stderr}`); + } + child_process.exec('ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods "[\\"PUT\\", \\"POST\\", \\"GET\\"]"', {silent: true}, (err, stdout, _stderr) => { + if(err){ + err = err.toString(); + console.error('IPFS CORS update error: ', err); + } + if(_stderr){ + _stderr = _stderr.toString(); + console.error(`IPFS CORS update error: ${_stderr}`); + } + + self.send({result: constants.storage.initiated}); + }); + }); + }); } console.log('IPFS: ' + data); }); @@ -54,6 +92,8 @@ class IPFSProcess extends ProcessWrapper { console.error('IPFS exited with error code ' + code); } }); + + } kill() { diff --git a/lib/processes/storageProcesses/storageProcessesLauncher.js b/lib/processes/storageProcesses/storageProcessesLauncher.js index 49a1ddf41..15e7db096 100644 --- a/lib/processes/storageProcesses/storageProcessesLauncher.js +++ b/lib/processes/storageProcesses/storageProcessesLauncher.js @@ -9,8 +9,11 @@ class StorageProcessesLauncher { this.events = options.events; this.storageConfig = options.storageConfig; this.webServerConfig = options.webServerConfig; + this.blockchainConfig = options.blockchainConfig; this.processes = {}; + this.cors = this.buildCors(); + this.events.on('exit', () => { Object.keys(this.processes).forEach(processName => { this.processes[processName].send('exit'); @@ -18,6 +21,54 @@ class StorageProcessesLauncher { }); } + buildCors() + { + let corsParts = []; + // add our webserver CORS + if(this.webServerConfig.enabled){ + if (this.webServerConfig && this.webServerConfig.host) { + let port = this.webServerConfig.port ? `:${this.webServerConfig.port}` : ''; + corsParts.push(`${this.webServerConfig.protocol || 'http'}://${this.webServerConfig.host}${port}`); + } + else corsParts.push('http://localhost:8000'); + } + + // add all dapp connection storage + if(this.storageConfig.enabled) { + this.storageConfig.dappConnection.forEach(dappConn => { + if(dappConn.getUrl || dappConn.host){ + + // if getUrl is specified in the config, that needs to be included in cors + // instead of the concatenated protocol://host:port + if(dappConn.getUrl) { + // remove /ipfs or /bzz: from getUrl if it's there + let getUrlParts = dappConn.getUrl.split('/'); + getUrlParts = getUrlParts.slice(0, 3); + corsParts.push(getUrlParts.join('/')); + } + // use our modified getUrl or in case it wasn't specified, use a built url + else{ + let port = dappConn.port ? `:${dappConn.port}` : ''; + corsParts.push(`${dappConn.protocol || 'http'}://${dappConn.host}${port}`); + } + } + }); + } + + if(this.blockchainConfig.enabled) { + // add our rpc endpoints to CORS + if(this.blockchainConfig.rpcHost && this.blockchainConfig.rpcPort){ + corsParts.push(`http://${this.blockchainConfig.rpcHost}:${this.blockchainConfig.rpcPort}`); + } + + // add our ws endpoints to CORS + if(this.blockchainConfig.wsRPC && this.blockchainConfig.wsHost && this.blockchainConfig.wsPort){ + corsParts.push(`ws://${this.blockchainConfig.wsHost}:${this.blockchainConfig.wsPort}`); + } + } + return corsParts; + } + processExited(storageName, code) { this.logger.error(__(`Storage process for ${storageName} ended before the end of this process. Code: ${code}`)); } @@ -37,13 +88,13 @@ class StorageProcessesLauncher { modulePath: filePath, logger: self.logger, events: self.events, - silent: true, + silent: self.logger.logLevel !== 'trace', exitCallback: self.processExited.bind(this, storageName) }); self.processes[storageName].send({ action: constants.blockchain.init, options: { storageConfig: self.storageConfig, - webServerConfig: self.webServerConfig + cors: self.cors } }); diff --git a/lib/processes/storageProcesses/swarm.js b/lib/processes/storageProcesses/swarm.js index 49909d735..20258df01 100644 --- a/lib/processes/storageProcesses/swarm.js +++ b/lib/processes/storageProcesses/swarm.js @@ -9,7 +9,7 @@ class SwarmProcess extends ProcessWrapper { constructor(options) { super(); this.storageConfig = options.storageConfig; - this.webServerConfig = options.webServerConfig; + this.cors = options.cors; } startSwarmDaemon() { @@ -17,16 +17,13 @@ class SwarmProcess extends ProcessWrapper { 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}` + `--corsdomain=${self.cors.join(',')}` ]; + console.log('SWARM ARGS: ' + JSON.stringify(args)); this.child = child_process.spawn(this.storageConfig.swarmPath || 'swarm', args); this.child.on('error', (err) => { diff --git a/package-lock.json b/package-lock.json index c1eddb9bd..ea50fac60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -434,6 +434,22 @@ } } }, + "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", @@ -1863,7 +1879,7 @@ "anymatch": "2.0.0", "async-each": "1.0.1", "braces": "2.3.2", - "fsevents": "1.2.4", + "fsevents": "1.2.3", "glob-parent": "3.1.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -2248,6 +2264,11 @@ "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", @@ -2665,6 +2686,12 @@ "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", @@ -2736,6 +2763,12 @@ "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", @@ -2763,6 +2796,12 @@ "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", @@ -3594,7 +3633,6 @@ "integrity": "sha1-eguHvzZw+S9gf5j6aniAHZdBsSQ=", "requires": { "webpack": "3.11.0" -<<<<<<< develop }, "dependencies": { "has-flag": { @@ -3639,8 +3677,6 @@ "yargs": "8.0.2" } } -======= ->>>>>>> Storage config improvements start. Adjusted the config and have started to support those improvements through the codebase. } }, "ethereumjs-tx": { @@ -4308,465 +4344,13 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", + "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", "optional": true, "requires": { "nan": "2.9.2", - "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 - } + "node-pre-gyp": "0.9.1" } }, "fstream": { @@ -4790,6 +4374,35 @@ "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", @@ -5311,6 +4924,12 @@ "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", @@ -5605,6 +5224,15 @@ "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", @@ -5662,6 +5290,12 @@ "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", @@ -6670,14 +6304,11 @@ "yallist": "3.0.2" } }, -<<<<<<< develop "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==" }, -======= ->>>>>>> Storage config improvements start. Adjusted the config and have started to support those improvements through the codebase. "tar": { "version": "4.4.4", "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.4.tgz", @@ -7684,6 +7315,17 @@ } } }, + "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", @@ -7774,10 +7416,76 @@ "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", @@ -7837,6 +7545,22 @@ "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", @@ -7845,6 +7569,18 @@ "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", @@ -8192,6 +7928,16 @@ "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", @@ -9323,6 +9069,26 @@ "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", @@ -10713,8 +10479,7 @@ "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=", - "dev": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "style-loader": { "version": "0.19.1", @@ -12043,6 +11808,7 @@ "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" } @@ -12053,11 +11819,7 @@ "webpack": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.11.0.tgz", -<<<<<<< develop - "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", -======= "integrity": "sha1-d9pFGx17SxF62vQaGpO1dC8k2JQ=", ->>>>>>> Storage config improvements start. Adjusted the config and have started to support those improvements through the codebase. "requires": { "acorn": "5.5.3", "acorn-dynamic-import": "2.0.2", @@ -12170,6 +11932,28 @@ "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",