diff --git a/.eslintrc.yml b/.eslintrc.yml index 2b47343e2..b0d68de7d 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -7,20 +7,26 @@ settings: import/core-modules: ## don't lint for these missing packages in package.json - electron ## 'electron' is only needed as devDependency / global installation + rules: + # "off" or 0 - turn the rule off + # "warn" or 1 - turn the rule on as a warning (doesn’t affect exit code) + # "error" or 2 - turn the rule on as an error (exit code is 1 when triggered) indent: - - 2 ## error + - error - 4 ## number of spaces - no-console: 0 ## allowed for chrome dev-console + no-console: off ## allowed for chrome dev-console + padded-blocks: off + arrow-body-style: off + prefer-arrow-callback: off + no-underscore-dangle: off + comma-dangle: + - error + - only-multiline -globals: - i18n: true # don't warn about missing 'i18n' declaration - Helpers: true # don't warn about missing 'Helpers' declaration +globals: # don't warn about missing declarations + i18n: true mist: true - describe: true - it: true - expect: true - chai: true beforeEach: true LocalStore: true web3: true diff --git a/interface/.eslintrc.yml b/interface/.eslintrc.yml index ae2cf0055..f30336e29 100644 --- a/interface/.eslintrc.yml +++ b/interface/.eslintrc.yml @@ -11,7 +11,7 @@ rules: - allow: ['_id', '_escape', '__'] globals: - Blaze: true - EthAccounts: true - _: true - mist: true + Helpers: true + Blaze: true + EthAccounts: true + mist: true diff --git a/interface/client/mistAPIBackend.js b/interface/client/mistAPIBackend.js index d7018862d..d40f76b7d 100644 --- a/interface/client/mistAPIBackend.js +++ b/interface/client/mistAPIBackend.js @@ -38,9 +38,7 @@ mistAPIBackend = function (event) { // console.trace('mistAPIBackend event', event); if (event.channel === 'setWebviewId') { - Tabs.update(template.data._id, { $set: { - webviewId: webview.getId(), - } }); + Tabs.update(template.data._id, { $set: { webviewId: webview.getWebContents().id }}); } // Send TEST DATA diff --git a/interface/client/templates/popupWindows/sendTransactionConfirmation.js b/interface/client/templates/popupWindows/sendTransactionConfirmation.js index 9647652c5..c0c9e5c48 100644 --- a/interface/client/templates/popupWindows/sendTransactionConfirmation.js +++ b/interface/client/templates/popupWindows/sendTransactionConfirmation.js @@ -184,7 +184,11 @@ Template['popupWindows_sendTransactionConfirmation'].onCreated(function(){ }); Template['popupWindows_sendTransactionConfirmation'].onRendered(function(){ - this.$('input[type="password"]').focus(); + var template = this; + + Meteor.setTimeout(function(){ + template.$('input[type="password"]').focus(); + }, 200); }); Template['popupWindows_sendTransactionConfirmation'].helpers({ diff --git a/interface/client/templates/webviewEvents.js b/interface/client/templates/webviewEvents.js index 279b73248..26e10bfc8 100644 --- a/interface/client/templates/webviewEvents.js +++ b/interface/client/templates/webviewEvents.js @@ -7,6 +7,11 @@ webviewChangeUrl = function(tabId, e){ console.log(e.type, tabId, url); + if(e.type === 'did-navigate') { + // destroy socket when navigating away + ipc.send('ipcProvider-destroy', this.getWebContents().id); + } + // make sure to not store error pages in history if(!url || url.indexOf('mist/errorPages/') !== -1) return; diff --git a/main.js b/main.js index 68f23bf9e..e2fdf782e 100644 --- a/main.js +++ b/main.js @@ -10,7 +10,7 @@ const timesync = require('os-timesync'); const dbSync = require('./modules/dbSync.js'); const i18n = require('./modules/i18n.js'); const logger = require('./modules/utils/logger'); -const Sockets = require('./modules/sockets'); +const Sockets = require('./modules/socketManager'); const Windows = require('./modules/windows'); const ClientBinaryManager = require('./modules/clientBinaryManager'); const UpdateChecker = require('./modules/updateChecker'); @@ -150,6 +150,8 @@ app.on('before-quit', (event) => { let mainWindow; let splashWindow; +let onReady; +let startMainWindow; // This method will be called when Electron has done everything // initialization and ready for creating browser windows. @@ -173,7 +175,7 @@ Only do this if you have secured your HTTP connection or you know what you are d }); -let onReady = () => { +onReady = () => { // setup DB sync to backend dbSync.backendSyncInit(); @@ -202,7 +204,8 @@ let onReady = () => { width: 1024 + 208, height: 720, webPreferences: { - nodeIntegration: true, // necessary for webviews; require will be removed through preloader + nodeIntegration: true, /* necessary for webviews; + require will be removed through preloader */ preload: `${__dirname}/modules/preloader/mistUI.js`, 'overlay-fullscreen-video': true, 'overlay-scrollbars': true, @@ -278,7 +281,7 @@ let onReady = () => { }); ethereumNode.on('nodeLog', (data) => { - Windows.broadcast('uiAction_nodeLogText', data.replace(/^.*[0-9]\]/, '')); + Windows.broadcast('uiAction_nodeLogText', data.replace(/^.*[0-9]]/, '')); }); // state change @@ -331,95 +334,99 @@ let onReady = () => { throw new Error('Cant start client due to legacy non-Fork setting.'); } }) - .then(() => { - return ClientBinaryManager.init(); - }) - .then(() => { - return ethereumNode.init(); - }) - .then(function sanityCheck() { - if (!ethereumNode.isIpcConnected) { - throw new Error('Either the node didn\'t start or IPC socket failed to connect.'); - } + .then(() => { + return ClientBinaryManager.init(); + }) + .then(() => { + return ethereumNode.init(); + }) + .then(function sanityCheck() { + if (!ethereumNode.isIpcConnected) { + throw new Error('Either the node didn\'t start or IPC socket failed to connect.'); + } - /* At this point Geth is running and the socket is connected. */ - log.info('Connected via IPC to node.'); + /* At this point Geth is running and the socket is connected. */ + log.info('Connected via IPC to node.'); - // update menu, to show node switching possibilities - appMenu(); - }) - .then(function getAccounts() { - return ethereumNode.send('eth_accounts', []); - }) - .then(function onboarding(resultData) { - if (ethereumNode.isGeth && resultData.result && resultData.result.length === 0) { - log.info('No accounts setup yet, lets do onboarding first.'); - - return new Q((resolve, reject) => { - const onboardingWindow = Windows.createPopup('onboardingScreen', { - primary: true, - electronOptions: { - width: 576, - height: 442, - }, - }); - - onboardingWindow.on('closed', () => { - app.quit(); - }); - - // change network types (mainnet, testnet) - ipcMain.on('onBoarding_changeNet', (e, testnet) => { - const newType = ethereumNode.type; - const newNetwork = testnet ? 'test' : 'main'; - - log.debug('Onboarding change network', newNetwork); - - ethereumNode.restart(newType, newNetwork) - .then(function nodeRestarted() { - appMenu(); - }) - .catch((err) => { - log.error('Error restarting node', err); - - reject(err); - }); - }); - - // launch app - ipcMain.on('onBoarding_launchApp', (e) => { - // prevent that it closes the app - onboardingWindow.removeAllListeners('closed'); - onboardingWindow.close(); - - ipcMain.removeAllListeners('onBoarding_changeNet'); - ipcMain.removeAllListeners('onBoarding_launchApp'); - - resolve(); - }); - - if (splashWindow) { - splashWindow.hide(); - } + // update menu, to show node switching possibilities + appMenu(); + }) + .then(function getAccounts() { + return ethereumNode.send('eth_accounts', []); + }) + .then(function onboarding(resultData) { + if (ethereumNode.isGeth && resultData.result && resultData.result.length === 0) { + log.info('No accounts setup yet, lets do onboarding first.'); + + return new Q((resolve, reject) => { + const onboardingWindow = Windows.createPopup('onboardingScreen', { + primary: true, + electronOptions: { + width: 576, + height: 442, + }, }); - } - }) - .then(function doSync() { - // we're going to do the sync - so show splash - if (splashWindow) { - splashWindow.show(); - } - - if (!Settings.inAutoTestMode) { - return syncResultPromise; - } - }) - .then(function allDone() { - startMainWindow(); - }) - .catch((err) => { - log.error('Error starting up node and/or syncing', err); - }); /* socket connected to geth */ + + onboardingWindow.on('closed', () => { + app.quit(); + }); + + // change network types (mainnet, testnet) + ipcMain.on('onBoarding_changeNet', (e, testnet) => { + const newType = ethereumNode.type; + const newNetwork = testnet ? 'test' : 'main'; + + log.debug('Onboarding change network', newNetwork); + + ethereumNode.restart(newType, newNetwork) + .then(function nodeRestarted() { + appMenu(); + }) + .catch((err) => { + log.error('Error restarting node', err); + + reject(err); + }); + }); + + // launch app + ipcMain.on('onBoarding_launchApp', () => { + // prevent that it closes the app + onboardingWindow.removeAllListeners('closed'); + onboardingWindow.close(); + + ipcMain.removeAllListeners('onBoarding_changeNet'); + ipcMain.removeAllListeners('onBoarding_launchApp'); + + resolve(); + }); + + if (splashWindow) { + splashWindow.hide(); + } + }); + } + + return Q.cancel(); + }) + .then(function doSync() { + // we're going to do the sync - so show splash + if (splashWindow) { + splashWindow.show(); + } + + if (Settings.inAutoTestMode) { + return Q.cancel(); + } + + return syncResultPromise; + }) + .then(function allDone() { + startMainWindow(); + }) + .catch((err) => { + log.error('Error starting up node and/or syncing', err); + }); /* socket connected to geth */ }; /* kick start */ if (splashWindow) { @@ -435,7 +442,7 @@ Start the main window and all its processes @method startMainWindow */ -let startMainWindow = () => { +startMainWindow = () => { log.info(`Loading Interface at ${global.interfaceAppUrl}`); mainWindow.on('ready', () => { diff --git a/modules/ethereumNode.js b/modules/ethereumNode.js index 752f40a82..d6771f136 100644 --- a/modules/ethereumNode.js +++ b/modules/ethereumNode.js @@ -8,7 +8,7 @@ const Settings = require('./settings'); const log = require('./utils/logger').create('EthereumNode'); const logRotate = require('log-rotate'); const EventEmitter = require('events').EventEmitter; -const Sockets = require('./sockets'); +const Sockets = require('./socketManager'); const ClientBinaryManager = require('./clientBinaryManager'); const DEFAULT_NODE_TYPE = 'geth'; diff --git a/modules/ipc/dechunker.js b/modules/ipc/dechunker.js index b9e663d73..a77e54866 100644 --- a/modules/ipc/dechunker.js +++ b/modules/ipc/dechunker.js @@ -6,51 +6,64 @@ The dechunker module gets IPC buffers and tries to decode them. const _ = require('underscore'); -let lastChunk = null; -let lastChunkTimeout = null; /** The dechunker module gets IPC buffers and tries to decode them. @method dechunker */ -module.exports = function (data, callback) { - data = data.toString(); +module.exports = class Dechunker { + constructor() { + this.lastChunk = null; + this.lastChunkTimeout = null; + } - // DE-CHUNKER - const dechunkedData = data - .replace(/\}[\n\r]?\{/g, '}|--|{') // }{ - .replace(/\}\][\n\r]?\[\{/g, '}]|--|[{') // }][{ - .replace(/\}[\n\r]?\[\{/g, '}|--|[{') // }[{ - .replace(/\}\][\n\r]?\{/g, '}]|--|{') // }]{ - .split('|--|'); + dechunk(data, callback) { + data = data.toString(); + // DE-CHUNKER + const dechunkedData = data + .replace(/\][\n\r]?/g, ']') // ] + .replace(/\}[\n\r]?/g, '}') // } + .replace(/\}[\n\r]?\{/g, '}|--|{') // }{ + .replace(/\}\][\n\r]?\[\{/g, '}]|--|[{') // }][{ + .replace(/\}[\n\r]?\[\{/g, '}|--|[{') // }[{ + .replace(/\}\][\n\r]?\{/g, '}]|--|{') // }]{ + .split('|--|'); - _.each(dechunkedData, (data) => { - // prepend the last chunk - if (lastChunk) - { data = lastChunk + data; } - let result = data; + // if it couldn't be split, return error + if (!_.isArray(dechunkedData)) { + return callback(`Couldn't split data: ${data}`); + } - try { - result = JSON.parse(result); - } catch (e) { - lastChunk = data; + return _.each(dechunkedData, (data) => { + // prepend the last chunk + if (this.lastChunk) + { data = this.lastChunk + data; } - // start timeout to cancel all requests - clearTimeout(lastChunkTimeout); - lastChunkTimeout = setTimeout(() => { - callback(`Couldn't decode data: ${data}`); - }, 1000 * 15); + let result = data; - return; - } + try { + result = JSON.parse(result); + } catch (e) { + this.lastChunk = data; + + // start timeout to cancel all requests + clearTimeout(this.lastChunkTimeout); + this.lastChunkTimeout = setTimeout(() => { + callback(`Couldn't decode data: ${data}`); + }, 1000 * 15); + + return; + } - // cancel timeout and set chunk to null - clearTimeout(lastChunkTimeout); - lastChunk = null; + // cancel timeout and set chunk to null + clearTimeout(this.lastChunkTimeout); + this.lastChunkTimeout = null; + this.lastChunk = null; - callback(null, result); - }); + callback(null, result); + }); + } }; diff --git a/modules/ipc/ipcProviderBackend.js b/modules/ipc/ipcProviderBackend.js index 6e1e88748..8ce1b4040 100644 --- a/modules/ipc/ipcProviderBackend.js +++ b/modules/ipc/ipcProviderBackend.js @@ -13,7 +13,7 @@ const fs = require('fs'); const path = require('path'); const log = require('../utils/logger').create('ipcProviderBackend'); -const Sockets = require('../sockets'); +const Sockets = require('../socketManager'); const Settings = require('../settings'); const ethereumNode = require('../ethereumNode'); const Windows = require('../windows'); @@ -70,7 +70,7 @@ class IpcProviderBackend { */ _getOrCreateConnection(event) { const owner = event.sender; - const ownerId = owner.getId(); + const ownerId = owner.id; let socket; @@ -79,7 +79,7 @@ class IpcProviderBackend { if (this._connections[ownerId]) { socket = this._connections[ownerId].socket; } else { - log.debug(`Get/create socket connection, id=${ownerId}`); + log.debug(`Create new socket connection, id=${ownerId}`); socket = Sockets.get(ownerId, Settings.rpcMode); } @@ -99,11 +99,13 @@ class IpcProviderBackend { log.debug(`Destroy socket connection due to event: ${ev}, id=${ownerId}`); socket.destroy().finally(() => { - delete this._connections[ownerId]; if(!owner.isDestroyed()) owner.send(`ipcProvider-${ev}`, JSON.stringify(data)); }); + + delete this._connections[ownerId]; + Sockets.remove(ownerId); }); }); @@ -182,19 +184,17 @@ class IpcProviderBackend { * Handle IPC call to destroy a connection. */ _destroyConnection(event) { - const ownerId = event.sender.getId(); + const ownerId = event.sender.id; - return Q.try(() => { - if (this._connections[ownerId]) { - log.debug('Destroy socket connection', ownerId); + if (this._connections[ownerId]) { + log.debug('Destroy socket connection', ownerId); - this._connections[ownerId].owner.send('ipcProvider-setWritable', false); + this._connections[ownerId].owner.send('ipcProvider-setWritable', false); - return this._connections[ownerId].socket.destroy().finally(() => { - delete this._connections[ownerId]; - }); - } - }); + this._connections[ownerId].socket.destroy(); + delete this._connections[ownerId]; + Sockets.remove(ownerId); + } } @@ -237,7 +237,7 @@ class IpcProviderBackend { * @param {String} payload request payload. */ _sendRequest(isSync, event, payload) { - const ownerId = event.sender.getId(); + const ownerId = event.sender.id; log.trace('sendRequest', isSync ? 'sync' : 'async', ownerId, payload); diff --git a/modules/ipc/methods/eth_sendTransaction.js b/modules/ipc/methods/eth_sendTransaction.js index 6220cba25..fc90f073f 100644 --- a/modules/ipc/methods/eth_sendTransaction.js +++ b/modules/ipc/methods/eth_sendTransaction.js @@ -69,7 +69,7 @@ module.exports = class extends BaseProcessor { }); ipc.once('backendAction_unlockedAccountAndSentTransaction', (ev, err, result) => { - if (Windows.getById(ev.sender.getId()) === modalWindow + if (Windows.getById(ev.sender.id) === modalWindow && !modalWindow.isClosed) { if (err || !result) { diff --git a/modules/ipcCommunicator.js b/modules/ipcCommunicator.js index 6cf248e08..a833daea5 100644 --- a/modules/ipcCommunicator.js +++ b/modules/ipcCommunicator.js @@ -41,7 +41,7 @@ ipc.on('backendAction_openExternalUrl', (e, url) => { }); ipc.on('backendAction_closePopupWindow', (e) => { - const windowId = e.sender.getId(); + const windowId = e.sender.id; const senderWindow = Windows.getById(windowId); if (senderWindow) { @@ -49,7 +49,7 @@ ipc.on('backendAction_closePopupWindow', (e) => { } }); ipc.on('backendAction_setWindowSize', (e, width, height) => { - const windowId = e.sender.getId(); + const windowId = e.sender.id; const senderWindow = Windows.getById(windowId); if (senderWindow) { @@ -59,7 +59,7 @@ ipc.on('backendAction_setWindowSize', (e, width, height) => { }); ipc.on('backendAction_windowCallback', (e, value1, value2, value3) => { - const windowId = e.sender.getId(); + const windowId = e.sender.id; const senderWindow = Windows.getById(windowId); if(senderWindow.callback) { @@ -68,7 +68,7 @@ ipc.on('backendAction_windowCallback', (e, value1, value2, value3) => { }); ipc.on('backendAction_windowMessageToOwner', (e, error, value) => { - const windowId = e.sender.getId(); + const windowId = e.sender.id; const senderWindow = Windows.getById(windowId); if (senderWindow.ownerId) { @@ -163,7 +163,7 @@ ipc.on('backendAction_importPresaleFile', (e, path, pw) => { const createAccountPopup = (e) => { Windows.createPopup('requestAccount', { - ownerId: e.sender.getId(), + ownerId: e.sender.id, electronOptions: { width: 400, height: 230, @@ -180,7 +180,7 @@ ipc.on('mistAPI_requestAccount', (e) => { createAccountPopup(e); } else { // Mist Windows.createPopup('connectAccount', { - ownerId: e.sender.getId(), + ownerId: e.sender.id, electronOptions: { width: 460, height: 497, diff --git a/modules/preloader/.eslintrc.yml b/modules/preloader/.eslintrc.yml new file mode 100644 index 000000000..35f46c4d3 --- /dev/null +++ b/modules/preloader/.eslintrc.yml @@ -0,0 +1,2 @@ +globals: + Helpers: true diff --git a/modules/sockets.js b/modules/socketManager.js similarity index 58% rename from modules/sockets.js rename to modules/socketManager.js index 562d6d5de..b2f60de3b 100644 --- a/modules/sockets.js +++ b/modules/socketManager.js @@ -1,9 +1,6 @@ const _ = global._; const Q = require('bluebird'); -const EventEmitter = require('events').EventEmitter; const log = require('./utils/logger').create('Sockets'); -const net = require('net'); -const dechunker = require('./ipc/dechunker.js'); const Web3IpcSocket = require('./sockets/web3Ipc'); const Web3HttpSocket = require('./sockets/web3Http'); @@ -17,6 +14,27 @@ class SocketManager { this._sockets = {}; } + /** + * Get socket with given id, creating it if it does not exist. + * + * @return {Socket} + */ + create(id, type) { + log.debug(`Create socket, id=${id}, type=${type}`); + + switch (type) { + case 'ipc': + this._sockets[id] = new Web3IpcSocket(this, id); + break; + case 'http': + this._sockets[id] = new Web3HttpSocket(this, id); + break; + default: + throw new Error(`Unrecognized socket type: ${type}`); + } + + return this._sockets[id]; + } /** * Get socket with given id, creating it if it does not exist. @@ -25,18 +43,7 @@ class SocketManager { */ get(id, type) { if (!this._sockets[id]) { - log.debug(`Create socket, id=${id}, type=${type}`); - - switch (type) { - case 'ipc': - this._sockets[id] = new Web3IpcSocket(this, id); - break; - case 'http': - this._sockets[id] = new Web3HttpSocket(this, id); - break; - default: - throw new Error(`Unrecognized socket type: ${type}`); - } + this.create(id, type); } return this._sockets[id]; @@ -49,7 +56,8 @@ class SocketManager { destroyAll() { log.info('Destroy all sockets'); - return Q.all(_.map(this._sockets, (s) => { + return Q.all(_.map(this._sockets, (s, id) => { + this.remove(id); return s.destroy(); })); } @@ -59,7 +67,7 @@ class SocketManager { * * Usually called by `Socket` instances when they're destroyed. */ - _remove(id) { + remove(id) { log.debug(`Remove socket, id=${id}`); delete this._sockets[id]; diff --git a/modules/sockets/base.js b/modules/sockets/base.js index 7375c1309..72d02b49a 100644 --- a/modules/sockets/base.js +++ b/modules/sockets/base.js @@ -120,7 +120,7 @@ class Socket extends EventEmitter { this._socket.removeAllListeners(); const timer = setTimeout(() => { - log.warn('Disconnection timed out, continuing anyway...'); + log.warn('Disconnection timed out, closing socket anyway...'); this._state = STATE.DISCONNECTION_TIMEOUT; @@ -144,9 +144,9 @@ class Socket extends EventEmitter { this._socket.destroy(); }) - .finally(() => { - this._disconnectPromise = null; - }); + .finally(() => { + this._disconnectPromise = null; + }); } return this._disconnectPromise; @@ -158,6 +158,7 @@ class Socket extends EventEmitter { * @return {Promise} */ destroy() { + this.removeAllListeners(); return this.disconnect(); } diff --git a/modules/sockets/web3Base.js b/modules/sockets/web3Base.js index a4393f818..cfa6b6086 100644 --- a/modules/sockets/web3Base.js +++ b/modules/sockets/web3Base.js @@ -1,6 +1,6 @@ const _ = global._; const Q = require('bluebird'); -const dechunker = require('../ipc/dechunker.js'); +const Dechunker = require('../ipc/dechunker.js'); const SocketBase = require('./base'); const Socket = SocketBase.Socket; @@ -10,6 +10,8 @@ module.exports = class Web3Socket extends Socket { constructor(socketMgr, id) { super(socketMgr, id); + this.dechunker = new Dechunker(); + this._sendRequests = {}; this.on('data', _.bind(this._handleSocketResponse, this)); @@ -97,7 +99,7 @@ module.exports = class Web3Socket extends Socket { * Handle responses from Geth. */ _handleSocketResponse(data) { - dechunker(data, (err, result) => { + this.dechunker.dechunk(data, (err, result) => { this._log.trace('Dechunked response', result); try { diff --git a/modules/windows.js b/modules/windows.js index b9cbfc234..aa032c124 100644 --- a/modules/windows.js +++ b/modules/windows.js @@ -197,7 +197,7 @@ class Windows { // when a window gets initalized it will send us its id ipc.on('backendAction_setWindowId', (event) => { - const id = event.sender.getId(); + const id = event.sender.id; log.debug('Set window id', id); diff --git a/package.json b/package.json index 6db03bb53..7469eedf8 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "numeral": "^1.5.3", "os-timesync": "^1.0.6", "semver": "^5.1.0", - "solc": "^0.4.4", + "solc": "^0.4.5", "typescript": "^1.7.3", "underscore": "^1.8.3", "underscore-deep-extend": "^1.1.5", diff --git a/tests/.eslintrc.yml b/tests/.eslintrc.yml new file mode 100644 index 000000000..49047f6f2 --- /dev/null +++ b/tests/.eslintrc.yml @@ -0,0 +1,5 @@ +globals: # don't warn about missing declarations + describe: true + it: true + expect: true + chai: true diff --git a/yarn.lock b/yarn.lock index 4c1956d67..7481c6162 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,5 +1,7 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 + + "7zip-bin-linux@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/7zip-bin-linux/-/7zip-bin-linux-1.0.3.tgz#66724d7bb7526381574393888f62566ed537151c" @@ -98,31 +100,31 @@ archiver-utils@^1.0.0, archiver-utils@^1.3.0: normalize-path "^2.0.0" readable-stream "^2.0.0" -archiver@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.2.0.tgz#fb5c6af5443b3fa6a426344753bad2a7b444aadd" +archiver@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.0.0.tgz#de1d61082e947755b599bb3bc27130a4c859fc83" dependencies: - archiver-utils "^1.3.0" - async "^2.0.0" + archiver-utils "^1.0.0" + async "^1.5.0" buffer-crc32 "^0.2.1" glob "^7.0.0" lodash "^4.8.0" readable-stream "^2.0.0" tar-stream "^1.5.0" - zip-stream "^1.1.0" + zip-stream "^1.0.0" -archiver@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.0.0.tgz#de1d61082e947755b599bb3bc27130a4c859fc83" +archiver@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.2.0.tgz#fb5c6af5443b3fa6a426344753bad2a7b444aadd" dependencies: - archiver-utils "^1.0.0" - async "^1.5.0" + archiver-utils "^1.3.0" + async "^2.0.0" buffer-crc32 "^0.2.1" glob "^7.0.0" lodash "^4.8.0" readable-stream "^2.0.0" tar-stream "^1.5.0" - zip-stream "^1.0.0" + zip-stream "^1.1.0" archy@^1.0.0: version "1.0.0" @@ -200,11 +202,11 @@ assertion-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" -async@^1.2.1, async@^1.4.0, async@^1.5.0, async@1.x: +async@1.x, async@^1.2.1, async@^1.4.0, async@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.0.0, async@^2.0.1, async@>=0.1.0: +async@>=0.1.0, async@^2.0.0, async@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/async/-/async-2.0.1.tgz#b709cc0280a9c36f09f4536be823c838a9049e25" dependencies: @@ -561,6 +563,14 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" +commander@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" + +commander@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" + commander@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" @@ -573,14 +583,6 @@ commander@~2.8.1: dependencies: graceful-readlink ">= 1.0.0" -commander@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" - -commander@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" - compare-version@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" @@ -598,17 +600,17 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.4.6, concat-stream@^1.4.7: - version "1.5.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" +concat-stream@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" dependencies: inherits "~2.0.1" readable-stream "~2.0.0" typedarray "~0.0.5" -concat-stream@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" +concat-stream@^1.4.6, concat-stream@^1.4.7: + version "1.5.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" dependencies: inherits "~2.0.1" readable-stream "~2.0.0" @@ -742,21 +744,21 @@ dateformat@^1.0.11, dateformat@^1.0.7-1.2.3: get-stdin "^4.0.1" meow "^3.3.0" -debug@^2.1.1, debug@^2.1.3, debug@^2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" - dependencies: - ms "0.7.2" +debug@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" -debug@^2.2.0, debug@2.2.0: +debug@2.2.0, debug@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" dependencies: ms "0.7.1" -debug@0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" +debug@^2.1.1, debug@^2.1.3, debug@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" debuglog@^1.0.1: version "1.0.1" @@ -902,16 +904,16 @@ diff@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" -doctrine@^1.2.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" +doctrine@1.3.x: + version "1.3.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.3.0.tgz#13e75682b55518424276f7c173783456ef913d26" dependencies: esutils "^2.0.2" isarray "^1.0.0" -doctrine@1.3.x: - version "1.3.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.3.0.tgz#13e75682b55518424276f7c173783456ef913d26" +doctrine@^1.2.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" dependencies: esutils "^2.0.2" isarray "^1.0.0" @@ -930,18 +932,18 @@ drbg.js@^1.0.1: create-hash "^1.1.2" create-hmac "^1.1.4" -duplexer2@^0.1.4, duplexer2@~0.1.0: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - dependencies: - readable-stream "^2.0.2" - duplexer2@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" dependencies: readable-stream "~1.1.9" +duplexer2@^0.1.4, duplexer2@~0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -1081,6 +1083,12 @@ elliptic@^6.2.3: hash.js "^1.0.0" inherits "^2.0.1" +end-of-stream@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" + dependencies: + once "~1.3.0" + end-of-stream@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.1.0.tgz#e9353258baa9108965efc41cb0ef8ade2f3cfb07" @@ -1093,12 +1101,6 @@ end-of-stream@~0.1.5: dependencies: once "~1.3.0" -end-of-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" - dependencies: - once "~1.3.0" - error-ex@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" @@ -1145,7 +1147,7 @@ es6-set@^0.1.4, es6-set@~0.1.3: es6-symbol "3" event-emitter "~0.3.4" -es6-symbol@~3.1, es6-symbol@~3.1.0, es6-symbol@3: +es6-symbol@3, es6-symbol@~3.1, es6-symbol@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" dependencies: @@ -1161,14 +1163,14 @@ es6-weak-map@^2.0.1: es6-iterator "2" es6-symbol "3" -escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - escape-string-regexp@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" +escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + escodegen@1.7.x: version "1.7.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.7.1.tgz#30ecfcf66ca98dc67cd2fd162abeb6eafa8ce6fc" @@ -1268,6 +1270,10 @@ espree@^3.3.1: acorn "^4.0.1" acorn-jsx "^3.0.0" +esprima@2.5.x: + version "2.5.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.5.0.tgz#f387a46fd344c1b1a39baf8c20bfb43b6d0058cc" + esprima@^1.2.2: version "1.2.5" resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" @@ -1276,10 +1282,6 @@ esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@2.5.x: - version "2.5.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.5.0.tgz#f387a46fd344c1b1a39baf8c20bfb43b6d0058cc" - esrecurse@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" @@ -1704,16 +1706,20 @@ glob-watcher@^0.0.6: dependencies: gaze "^0.5.1" -glob@^4.3.1: - version "4.5.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + +glob@3.2.11: + version "3.2.11" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" dependencies: - inflight "^1.0.4" inherits "2" - minimatch "^2.0.1" - once "^1.3.0" + minimatch "0.3" -glob@^5.0.3, glob@5.x: +glob@5.x, glob@^5.0.3: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" dependencies: @@ -1723,6 +1729,15 @@ glob@^5.0.3, glob@5.x: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^4.3.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + glob@^6.0.0: version "6.0.4" resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" @@ -1752,19 +1767,6 @@ glob@~3.1.21: inherits "1" minimatch "~0.2.11" -glob@3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" - dependencies: - inherits "2" - minimatch "0.3" - -glob2base@^0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" - dependencies: - find-index "^0.1.1" - global-modules@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" @@ -1861,11 +1863,11 @@ graceful-fs@^3.0.0, graceful-fs@~3.0.2: dependencies: natives "^1.1.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.10: +graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -graceful-fs@^4.1.0, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@^4.1.0, graceful-fs@^4.1.2: version "4.1.9" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.9.tgz#baacba37d19d11f9d146d3578bc99958c3787e29" @@ -2087,14 +2089,14 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - inherits@1: version "1.0.2" resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" +inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + ini@^1.3.4, ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" @@ -2350,14 +2352,14 @@ is-zip@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325" -isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + isbinaryfile@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.1.tgz#6e99573675372e841a0520c036b41513d783e79e" @@ -2420,7 +2422,7 @@ js-tokens@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" -js-yaml@^3.5.1, js-yaml@^3.7.0, js-yaml@3.x: +js-yaml@3.x, js-yaml@^3.5.1, js-yaml@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" dependencies: @@ -2843,6 +2845,10 @@ lowercase-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + lru-cache@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" @@ -2850,10 +2856,6 @@ lru-cache@^4.0.1: pseudomap "^1.0.1" yallist "^2.0.0" -lru-cache@2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - macaddress@^0.2.7: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" @@ -2930,18 +2932,25 @@ mime@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" -minimatch@^2.0.1, minimatch@2.x: - version "2.0.10" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" +minimatch@0.3: + version "0.3.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" dependencies: - brace-expansion "^1.0.0" + lru-cache "2" + sigmund "~1.0.0" -minimatch@^3.0.2, minimatch@^3.0.3, "minimatch@2 || 3": +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" dependencies: brace-expansion "^1.0.0" +minimatch@2.x, minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + minimatch@~0.2.11: version "0.2.14" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" @@ -2949,12 +2958,9 @@ minimatch@~0.2.11: lru-cache "2" sigmund "~1.0.0" -minimatch@0.3: - version "0.3.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" - dependencies: - lru-cache "2" - sigmund "~1.0.0" +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" minimist@^0.2.0: version "0.2.0" @@ -2968,10 +2974,6 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - minimongo-standalone@0.0.9: version "0.0.9" resolved "https://registry.yarnpkg.com/minimongo-standalone/-/minimongo-standalone-0.0.9.tgz#1c67a498ba83c479995c5fac60dcc5538f8c29b0" @@ -2979,16 +2981,16 @@ minimongo-standalone@0.0.9: async ">=0.1.0" underscore ">=1.0.0" -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@0.5, mkdirp@0.5.1, mkdirp@0.5.x: +mkdirp@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" + +mkdirp@0.5, mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" -mkdirp@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" - mkdirp@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" @@ -3149,7 +3151,7 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -once@^1.3.0, once@1.x: +once@1.x, once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -3439,14 +3441,14 @@ pullstream@~0.4.0: setimmediate ">= 1.0.2 < 2" slice-stream ">= 1.0.0 < 2" -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + q@~1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" @@ -3520,6 +3522,15 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.0, readable-stream@~1.0.17, readable-stream@~1.0.2, readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5: version "2.1.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" @@ -3532,15 +3543,6 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~0.10.x" util-deprecate "~1.0.1" -"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.0, readable-stream@~1.0.17, readable-stream@~1.0.2, readable-stream@~1.0.31: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -3632,9 +3634,9 @@ replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" -request@^2.45.0, request@^2.65.0: - version "2.75.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" +request@2.74.0: + version "2.74.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab" dependencies: aws-sign2 "~0.6.0" aws4 "^1.2.1" @@ -3643,7 +3645,7 @@ request@^2.45.0, request@^2.65.0: combined-stream "~1.0.5" extend "~3.0.0" forever-agent "~0.6.1" - form-data "~2.0.0" + form-data "~1.0.0-rc4" har-validator "~2.0.6" hawk "~3.1.3" http-signature "~1.1.0" @@ -3658,9 +3660,9 @@ request@^2.45.0, request@^2.65.0: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" -request@2.74.0: - version "2.74.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab" +request@^2.45.0, request@^2.65.0: + version "2.75.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" dependencies: aws-sign2 "~0.6.0" aws4 "^1.2.1" @@ -3669,7 +3671,7 @@ request@2.74.0: combined-stream "~1.0.5" extend "~3.0.0" forever-agent "~0.6.1" - form-data "~1.0.0-rc4" + form-data "~2.0.0" har-validator "~2.0.6" hawk "~3.1.3" http-signature "~1.1.0" @@ -3718,7 +3720,7 @@ resolve-url@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" -resolve@^1.1.6, resolve@^1.1.7, resolve@1.1.x: +resolve@1.1.x, resolve@^1.1.6, resolve@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -3739,7 +3741,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@^2.2.8, rimraf@2: +rimraf@2, rimraf@^2.2.8: version "2.5.4" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" dependencies: @@ -3811,14 +3813,14 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + semver@^4.1.0, semver@~4.3.3: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" -semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, "semver@2 || 3 || 4 || 5": - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - sequencify@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" @@ -3893,9 +3895,9 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -solc@^0.4.4: - version "0.4.5" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.5.tgz#921c4be798d1c22e2b77508db2adc00943ae1ecf" +solc@^0.4.5: + version "0.4.6" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.6.tgz#afa929a1ceafc0252cfbb4217c8e2b1dab139db7" dependencies: fs-extra "^0.30.0" memorystream "^0.3.1" @@ -4026,10 +4028,6 @@ stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -4049,6 +4047,10 @@ string.prototype.codepointat@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.0.tgz#6b26e9bd3afcaa7be3b4269b526de1b82000ac78" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -4123,6 +4125,10 @@ sumchecker@^1.2.0: debug "^2.2.0" es6-promise "^3.2.1" +supports-color@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" + supports-color@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" @@ -4137,10 +4143,6 @@ supports-color@^3.1.0, supports-color@^3.1.2: dependencies: has-flag "^1.0.0" -supports-color@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" - sync-request@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-3.0.1.tgz#caa1235aaf889ba501076a1834c436830a82fb73" @@ -4188,10 +4190,6 @@ throttleit@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" -through@^2.3.6, through@~2.3.4, through@2: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - through2-filter@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" @@ -4227,6 +4225,10 @@ through2@~0.2.3: readable-stream "~1.1.9" xtend "~2.1.1" +through@2, through@^2.3.6, through@~2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + tildify@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" @@ -4241,18 +4243,18 @@ timed-out@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.0.0.tgz#ff88de96030ce960eabd42487db61d3add229273" -tmp@^0.0.29, tmp@0.0.29: - version "0.0.29" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" - dependencies: - os-tmpdir "~1.0.1" - tmp@0.0.28: version "0.0.28" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120" dependencies: os-tmpdir "~1.0.1" +tmp@0.0.29, tmp@^0.0.29: + version "0.0.29" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" + dependencies: + os-tmpdir "~1.0.1" + to-absolute-glob@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" @@ -4301,14 +4303,14 @@ type-check@~0.3.1, type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" - type-detect@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" +type-detect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" + typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -4338,7 +4340,7 @@ underscore-deep-extend@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/underscore-deep-extend/-/underscore-deep-extend-1.1.5.tgz#962ba1f8b3bb2e2afd182ed86f2e5275543c52bd" -underscore@^1.8.3, underscore@>=1.0.0: +underscore@>=1.0.0, underscore@^1.8.3: version "1.8.3" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" @@ -4585,13 +4587,17 @@ widest-line@^1.0.0: dependencies: string-width "^1.0.1" +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" wordwrap@^1.0.0, wordwrap@~1.0.0: version "1.0.0" @@ -4601,10 +4607,6 @@ wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - wrap-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.0.0.tgz#7d30f8f873f9a5bbc3a64dabc8d177e071ae426f" @@ -4647,7 +4649,7 @@ xmlhttprequest@*: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" -xtend@^4.0.0, "xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -4729,7 +4731,7 @@ yargs@~3.10.0: decamelize "^1.0.0" window-size "0.1.0" -yauzl@^2.2.1, yauzl@2.4.1: +yauzl@2.4.1, yauzl@^2.2.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" dependencies: @@ -4743,4 +4745,3 @@ zip-stream@^1.0.0, zip-stream@^1.1.0: compress-commons "^1.1.0" lodash "^4.8.0" readable-stream "^2.0.0" -