diff --git a/docs/README.md b/docs/README.md index bca063d699..e0fe7f28f8 100644 --- a/docs/README.md +++ b/docs/README.md @@ -59,7 +59,7 @@ ### Development -Run `npm start` to see your app at `localhost:3000` +Run `npm start` to see your app at `localhost:3000` and on your local network via BrowserSync, with hot reloading. ### Building & Deploying @@ -119,7 +119,7 @@ get a performance check right in your terminal! #### Browser testing -`npm run start:tunnel` makes your locally-running app globally available on the web +`npm run start:tunnel` makes your app available as with `npm start`, as well as on the web via a temporary URL: great for testing on different devices, client demos, etc! #### Unit testing diff --git a/docs/general/commands.md b/docs/general/commands.md index 67eb9d6517..a1763469b3 100644 --- a/docs/general/commands.md +++ b/docs/general/commands.md @@ -19,7 +19,13 @@ history irreversibly by accident. npm run start ``` -Starts the development server running on `http://localhost:3000` +Starts the development server and makes your application accessible with +[BrowserSync](https://www.browsersync.io/) at `localhost:3001` and on a local IP address (check your startup logs). + +This means that your changes will keep in sync on all your local devices, +even when you update the code or you scroll the page on one of them! + +Make sure to check the BrowserSync dashboard at `localhost:3002`. ## Cleaning @@ -53,9 +59,7 @@ generate container`) npm start ``` -Starts the development server and makes your application accessible at -`localhost:3000`. Tunnels that server with `ngrok`, which means the website -accessible anywhere! Changes in the application code will be hot-reloaded. +Starts the development server and makes your hot-reloadable application accessible everywhere with BrowserSync. ### Production @@ -141,8 +145,8 @@ Watches changes to your application and reruns tests whenever a file changes. ```Shell npm run start:tunnel ``` -Starts the development server and tunnels it with `ngrok`, making the website -available on the entire world. Useful for testing on different devices in different locations! +Starts the development server as usual for development, with an extra tunnels to make the website +available to the entire world. Useful for testing on different devices in different locations! ### Performance testing diff --git a/docs/testing/remote-testing.md b/docs/testing/remote-testing.md index d24406afad..360f7a02ce 100644 --- a/docs/testing/remote-testing.md +++ b/docs/testing/remote-testing.md @@ -4,9 +4,8 @@ npm run start:tunnel ``` -This command will start a server and tunnel it with `ngrok`. You'll get a URL -that looks a bit like this: `http://abcdef.ngrok.com` +Starts the development server similarly to `npm start`, with an extra address XXX.localtunnel.me where XXX is +your app name configured in `package.json`. -This URL will show the version of your application that's in the `build` folder, -and it's accessible from the entire world! This is great for testing on different -devices and from different locations! +This means your app is accessible from the entire world! +This is great for testing on different devices and from different locations. \ No newline at end of file diff --git a/internals/config.js b/internals/config.js index 32b6781c73..21a0a51cfa 100644 --- a/internals/config.js +++ b/internals/config.js @@ -21,11 +21,11 @@ const ReactBoilerplate = { * by listing them here. */ exclude: [ + 'browser-sync', 'chalk', 'compression', 'cross-env', 'express', - 'ip', 'minimist', 'sanitize.css', ], diff --git a/internals/scripts/browserSync.js b/internals/scripts/browserSync.js new file mode 100644 index 0000000000..242d1252ca --- /dev/null +++ b/internals/scripts/browserSync.js @@ -0,0 +1,35 @@ +const browserSync = require('browser-sync'); +const path = require('path'); +const pkg = require(path.resolve(process.cwd(), 'package.json')); + +const logger = require('../../server/logger'); + +module.exports = function startBrowserSync(port, middleware, cb) { + const bsConfig = { + proxy: { + target: `localhost:${port}`, + middleware, + }, + port: parseInt(port, 10) + 1, + ui: { + port: parseInt(port, 10) + 2, + }, + // no need to watch '*.js' here, webpack will take care of it for us, + // including full page reloads if HMR won't work + files: [ + 'build/*.css', + ], + }; + if (process.env.ENABLE_TUNNEL) { + bsConfig.tunnel = pkg.name.replace(/\W/g,''); + } + const bs = browserSync.create(); + + bs.init(bsConfig, (err, bs) => { + if (err) return cb(err); + logger.browserSyncStarted(); + + // return the BrowserSync URLs, in case someone cares + cb(null, bs.getOption("urls")); + }); +}; diff --git a/package.json b/package.json index d0bb9441de..38a105465e 100644 --- a/package.json +++ b/package.json @@ -194,11 +194,11 @@ "dllPlugin": { "path": "node_modules/react-boilerplate-dlls", "exclude": [ + "browser-sync", "chalk", "compression", "cross-env", "express", - "ip", "minimist", "sanitize.css" ], @@ -210,6 +210,7 @@ }, "dependencies": { "babel-polyfill": "6.16.0", + "browser-sync": "2.16.0", "chalk": "1.1.3", "cross-env": "3.1.3", "compression": "1.6.2", @@ -218,7 +219,6 @@ "immutable": "3.8.1", "intl": "1.2.5", "invariant": "2.2.1", - "ip": "1.1.3", "lodash": "4.16.4", "minimist": "1.2.0", "react": "15.3.2", diff --git a/server/index.js b/server/index.js index f37711526b..e24f160871 100644 --- a/server/index.js +++ b/server/index.js @@ -2,11 +2,10 @@ const express = require('express'); const logger = require('./logger'); +const browserSync = require('../internals/scripts/browserSync'); const argv = require('minimist')(process.argv.slice(2)); const setup = require('./middlewares/frontendMiddleware'); -const isDev = process.env.NODE_ENV !== 'production'; -const ngrok = (isDev && process.env.ENABLE_TUNNEL) || argv.tunnel ? require('ngrok') : false; const resolve = require('path').resolve; const app = express(); @@ -14,7 +13,7 @@ const app = express(); // app.use('/api', myApi); // In production we need to pass these values in instead of relying on webpack -setup(app, { +const middleware = setup(app, { outputPath: resolve(process.cwd(), 'build'), publicPath: '/', }); @@ -28,16 +27,15 @@ app.listen(port, (err) => { return logger.error(err.message); } - // Connect to ngrok in dev mode - if (ngrok) { - ngrok.connect(port, (innerErr, url) => { + // Configure browserSync in dev mode + if (process.env.NODE_ENV !== 'production') { + browserSync(port, middleware, (innerErr) => { if (innerErr) { return logger.error(innerErr); } - - logger.appStarted(port, url); + logger.appStarted(); }); } else { - logger.appStarted(port); + logger.appStarted(); } }); diff --git a/server/logger.js b/server/logger.js index 0fe2ec4fb1..1bce390f19 100644 --- a/server/logger.js +++ b/server/logger.js @@ -1,9 +1,6 @@ /* eslint-disable no-console */ const chalk = require('chalk'); -const ip = require('ip'); - -const divider = chalk.gray('\n-----------------------------------'); /** * Logger middleware, you can customize it to make messages more personal @@ -16,21 +13,13 @@ const logger = { }, // Called when express.js app starts on given port w/o errors - appStarted: (port, tunnelStarted) => { + appStarted: () => { console.log(`Server started ${chalk.green('✓')}`); + }, - // If the tunnel started, log that and the URL it's available at - if (tunnelStarted) { - console.log(`Tunnel initialised ${chalk.green('✓')}`); - } - - console.log(` -${chalk.bold('Access URLs:')}${divider} -Localhost: ${chalk.magenta(`http://localhost:${port}`)} - LAN: ${chalk.magenta(`http://${ip.address()}:${port}`) + -(tunnelStarted ? `\n Proxy: ${chalk.magenta(tunnelStarted)}` : '')}${divider} -${chalk.blue(`Press ${chalk.italic('CTRL-C')} to stop`)} - `); + // Called when BrowserSync starts w/o errors + browserSyncStarted: () => { + console.log(`BrowserSync started ${chalk.green('✓')}`); }, }; diff --git a/server/middlewares/frontendMiddleware.js b/server/middlewares/frontendMiddleware.js index 9331e12508..cb4746928b 100644 --- a/server/middlewares/frontendMiddleware.js +++ b/server/middlewares/frontendMiddleware.js @@ -18,7 +18,9 @@ const addDevMiddlewares = (app, webpackConfig) => { }); app.use(middleware); - app.use(webpackHotMiddleware(compiler)); + + const hotMiddleware = webpackHotMiddleware(compiler); + app.use(hotMiddleware); // Since webpackDevMiddleware uses memory-fs internally to store build // artifacts, we use it instead @@ -40,6 +42,8 @@ const addDevMiddlewares = (app, webpackConfig) => { } }); }); + + return [middleware, hotMiddleware]; }; // Production middlewares @@ -54,6 +58,8 @@ const addProdMiddlewares = (app, options) => { app.use(publicPath, express.static(outputPath)); app.get('*', (req, res) => res.sendFile(path.resolve(outputPath, 'index.html'))); + + return []; }; /** @@ -63,11 +69,8 @@ module.exports = (app, options) => { const isProd = process.env.NODE_ENV === 'production'; if (isProd) { - addProdMiddlewares(app, options); - } else { - const webpackConfig = require('../../internals/webpack/webpack.dev.babel'); - addDevMiddlewares(app, webpackConfig); + return addProdMiddlewares(app, options); } - - return app; + const webpackConfig = require('../../internals/webpack/webpack.dev.babel'); + return addDevMiddlewares(app, webpackConfig); }; diff --git a/yarn.lock b/yarn.lock index 782f2d78b5..8cf475e5a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -229,6 +229,10 @@ async-each-series@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-1.1.0.tgz#f42fd8155d38f21a5b8ea07c28e063ed1700b138" +async-each-series@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -255,6 +259,10 @@ async@~1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/async/-/async-1.4.2.tgz#6c9edcb11ced4f0dd2f2d40db0d49a109c088aab" +async@0.1.15: + version "0.1.15" + resolved "https://registry.yarnpkg.com/async/-/async-0.1.15.tgz#2180eaca2cf2a6ca5280d41c0585bec9b3e49bd3" + async@2.0.0-rc.4: version "2.0.0-rc.4" resolved "https://registry.yarnpkg.com/async/-/async-2.0.0-rc.4.tgz#9b7f60724c17962a973f787419e0ebc5571dbad8" @@ -1125,6 +1133,10 @@ base64url@~1.0.4: concat-stream "~1.4.7" meow "~2.0.0" +batch@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" + bcrypt-pbkdf@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" @@ -1303,6 +1315,54 @@ browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" +browser-sync-client@^2.3.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.4.3.tgz#e965033e0c83e5f06caacb516755b694836cea4f" + dependencies: + etag "^1.7.0" + fresh "^0.3.0" + +browser-sync-ui@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-0.6.1.tgz#d8b98ea3b755632287350a37ee2eaaacabea28d2" + dependencies: + async-each-series "0.1.1" + connect-history-api-fallback "^1.1.0" + immutable "^3.7.6" + server-destroy "1.0.1" + stream-throttle "^0.1.3" + weinre "^2.0.0-pre-I0Z7U9OV" + +browser-sync@2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.16.0.tgz#973e129a5e02cbfdf4cb6bf8bf90b10d8abd34e5" + dependencies: + browser-sync-client "^2.3.3" + browser-sync-ui "0.6.1" + bs-recipes "1.2.3" + chokidar "1.6.0" + connect "3.4.1" + dev-ip "^1.0.1" + easy-extender "2.3.2" + eazy-logger "3.0.2" + emitter-steward "^1.0.0" + fs-extra "0.30.0" + http-proxy "1.14.0" + immutable "3.8.1" + localtunnel "1.8.1" + micromatch "2.3.11" + opn "4.0.2" + portscanner "^1.0.0" + qs "6.2.1" + resp-modifier "6.0.2" + rx "4.1.0" + serve-index "1.8.0" + serve-static "1.11.1" + server-destroy "1.0.1" + socket.io "1.4.8" + ua-parser-js "0.7.10" + yargs "5.0.0" + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" @@ -1360,6 +1420,10 @@ browserslist@^1.0.0, browserslist@^1.0.1, browserslist@^1.1.1, browserslist@^1.1 dependencies: caniuse-db "^1.0.30000539" +bs-recipes@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.2.3.tgz#0e4d17bb1cff92ef6c36608b8487d9a07571ac54" + buffer-crc32@~0.2.3: version "0.2.5" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.5.tgz#db003ac2671e62ebd6ece78ea2c2e1b405736e91" @@ -1451,7 +1515,7 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@^1.0.1, camelcase@^1.0.2: +camelcase@^1.0.1, camelcase@^1.0.2, camelcase@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" @@ -1619,7 +1683,7 @@ cheerio@0.22.0: lodash.reject "^4.4.0" lodash.some "^4.4.0" -chokidar@^1.0.0, chokidar@^1.4.1, chokidar@^1.4.3: +chokidar@^1.0.0, chokidar@^1.4.1, chokidar@^1.4.3, chokidar@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.0.tgz#90c32ad4802901d7713de532dc284e96a63ad058" dependencies: @@ -1841,7 +1905,7 @@ combined-stream@^1.0.5, combined-stream@~1.0.1, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" -commander@^2.8.1, commander@^2.9.0, commander@2.9.0, commander@2.9.x: +commander@^2.2.0, commander@^2.8.1, commander@^2.9.0, commander@2.9.0, commander@2.9.x: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" dependencies: @@ -1920,6 +1984,10 @@ configstore@^2.0.0: write-file-atomic "^1.1.2" xdg-basedir "^2.0.0" +connect-history-api-fallback@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" + connect@^3.3.5: version "3.5.0" resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" @@ -1929,6 +1997,23 @@ connect@^3.3.5: parseurl "~1.3.1" utils-merge "1.0.0" +connect@1.x: + version "1.9.2" + resolved "https://registry.yarnpkg.com/connect/-/connect-1.9.2.tgz#42880a22e9438ae59a8add74e437f58ae8e52807" + dependencies: + formidable "1.0.x" + mime ">= 0.0.1" + qs ">= 0.4.0" + +connect@3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.4.1.tgz#a21361d3f4099ef761cda6dc4a973bb1ebb0a34d" + dependencies: + debug "~2.2.0" + finalhandler "0.4.1" + parseurl "~1.3.1" + utils-merge "1.0.0" + console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" @@ -2470,6 +2555,10 @@ detect-newline@2.X: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" +dev-ip@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" + di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" @@ -2660,6 +2749,18 @@ each-async@^1.0.0, each-async@^1.1.1: onetime "^1.0.0" set-immediate-shim "^1.0.0" +easy-extender@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.2.tgz#3d3248febe2b159607316d8f9cf491c16648221d" + dependencies: + lodash "^3.10.1" + +eazy-logger@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" + dependencies: + tfunk "^3.0.1" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -2697,6 +2798,10 @@ elliptic@^6.0.0: hash.js "^1.0.0" inherits "^2.0.1" +emitter-steward@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/emitter-steward/-/emitter-steward-1.0.0.tgz#f3411ade9758a7565df848b2da0cbbd1b46cbd64" + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -2723,6 +2828,23 @@ end-of-stream@1.0.0: dependencies: once "~1.3.0" +engine.io-client@1.6.11: + version "1.6.11" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.6.11.tgz#7d250d8fa1c218119ecde51390458a57d5171376" + dependencies: + component-emitter "1.1.2" + component-inherit "0.0.3" + debug "2.2.0" + engine.io-parser "1.2.4" + has-cors "1.1.0" + indexof "0.0.1" + parsejson "0.0.1" + parseqs "0.0.2" + parseuri "0.0.4" + ws "1.0.1" + xmlhttprequest-ssl "1.5.1" + yeast "0.1.2" + engine.io-client@1.6.9: version "1.6.9" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.6.9.tgz#1d6ad48048a5083c95096943b29d36efdb212401" @@ -2761,6 +2883,16 @@ engine.io@1.6.10: engine.io-parser "1.2.4" ws "1.0.1" +engine.io@1.6.11: + version "1.6.11" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.6.11.tgz#2533a97a65876c40ffcf95397b7ef9b495c423fe" + dependencies: + accepts "1.1.4" + base64id "0.1.0" + debug "2.2.0" + engine.io-parser "1.2.4" + ws "1.1.0" + enhanced-resolve@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-2.3.0.tgz#a115c32504b6302e85a76269d7a57ccdd962e359" @@ -3078,7 +3210,7 @@ esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -etag@~1.7.0: +etag@^1.7.0, etag@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" @@ -3219,6 +3351,15 @@ exports-loader@0.6.3: loader-utils "0.2.x" source-map "0.1.x" +express@2.5.x: + version "2.5.11" + resolved "https://registry.yarnpkg.com/express/-/express-2.5.11.tgz#4ce8ea1f3635e69e49f0ebb497b6a4b0a51ce6f0" + dependencies: + connect "1.x" + mime "1.2.4" + mkdirp "0.3.0" + qs "0.4.x" + express@4.14.0: version "4.14.0" resolved "https://registry.yarnpkg.com/express/-/express-4.14.0.tgz#c1ee3f42cdc891fb3dc650a8922d51ec847d0d66" @@ -3373,6 +3514,15 @@ filled-array@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" +finalhandler@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.4.1.tgz#85a17c6c59a94717d262d61230d4b0ebe3d4a14d" + dependencies: + debug "~2.2.0" + escape-html "~1.0.3" + on-finished "~2.3.0" + unpipe "~1.0.0" + finalhandler@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7" @@ -3489,11 +3639,15 @@ formatio@1.1.1: dependencies: samsam "~1.1" +formidable@1.0.x: + version "1.0.17" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.0.17.tgz#ef5491490f9433b705faa77249c99029ae348559" + forwarded@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" -fresh@0.3.0: +fresh@^0.3.0, fresh@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" @@ -3507,6 +3661,16 @@ fs-exists-sync@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" +fs-extra@0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + fs-readdir-recursive@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz#315b4fb8c1ca5b8c47defef319d073dad3568059" @@ -3792,7 +3956,7 @@ got@^5.0.0: unzip-response "^1.0.0" url-parse-lax "^1.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4, graceful-fs@4.X: +graceful-fs@^4.0.0, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@4.X: version "4.1.9" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.9.tgz#baacba37d19d11f9d146d3578bc99958c3787e29" @@ -3897,7 +4061,7 @@ har-validator@^1.6.1: commander "^2.8.1" is-my-json-valid "^2.12.0" -har-validator@~2.0.6: +har-validator@~2.0.2, har-validator@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" dependencies: @@ -4121,6 +4285,13 @@ http-proxy@^1.13.0: eventemitter3 "1.x.x" requires-port "1.x.x" +http-proxy@1.14.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.14.0.tgz#be32ab34dd5229e87840f4c27cb335ee195b2a83" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + http-signature@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-0.11.0.tgz#1796cf67a001ad5cd6849dca0991485f09089fe6" @@ -4366,10 +4537,6 @@ ip-regex@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" -ip@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.3.tgz#12b16294a38925486d618a1103506e4eb4f8b296" - ipaddr.js@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.1.1.tgz#c791d95f52b29c1247d5df80ada39b8a73647230" @@ -4878,6 +5045,12 @@ json5@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.0.tgz#9b20715b026cbe3778fd769edccd822d8332a5b2" +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + jsonfilter@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/jsonfilter/-/jsonfilter-1.1.2.tgz#21ef7cedc75193813c75932e96a98be205ba5a11" @@ -5045,6 +5218,12 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.0.2" +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + known-css-properties@^0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.0.5.tgz#33de5b8279010a72db917d33119e4c27c078490a" @@ -5111,6 +5290,10 @@ liftoff@^2.2.0: rechoir "^0.6.2" resolve "^1.1.7" +limiter@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.0.tgz#6e2bd12ca3fcdaa11f224e2e53c896df3f08d913" + lint-staged@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-3.1.0.tgz#4bb3da3b98135b0a076606c5e4f129af034bfe48" @@ -5192,6 +5375,15 @@ loader-utils@^0.2.11, loader-utils@^0.2.15, loader-utils@^0.2.3, loader-utils@^0 json5 "^0.5.0" object-assign "^4.0.1" +localtunnel@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.8.1.tgz#d51b2bb7a7066afb05b57fc9db844015098f2e17" + dependencies: + debug "2.2.0" + openurl "1.1.0" + request "2.65.0" + yargs "3.29.0" + lock@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/lock/-/lock-0.1.3.tgz#f66c1caa0c41956e1426608039ed59b71bdf1854" @@ -5264,7 +5456,7 @@ lodash._topath@^3.0.0: dependencies: lodash.isarray "^3.0.0" -lodash.assign@^4.0.3, lodash.assign@^4.0.6: +lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.1.0, lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -5457,7 +5649,7 @@ lodash.words@^3.0.0: dependencies: lodash._root "^3.0.0" -lodash@^3.3.1, lodash@^3.8.0: +lodash@^3.10.1, lodash@^3.3.1, lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -5626,7 +5818,7 @@ methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: +micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7, micromatch@2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -5671,10 +5863,14 @@ mime-types@~2.0.4: dependencies: mime-db "~1.12.0" -mime@^1.2.11, mime@^1.3.4, mime@1.3.4: +mime@^1.2.11, mime@^1.3.4, "mime@>= 0.0.1", mime@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" +mime@1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.4.tgz#11b5fdaf29c2509255176b80ad520294f5de92b7" + mime@1.2.x: version "1.2.11" resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" @@ -5713,6 +5909,10 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.0, mkdirp@~0.5.1, mk 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" + mkpath@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz#7554a6f8d871834cc97b5462b122c4c124d6de91" @@ -5852,11 +6052,11 @@ node-status-codes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" -node-uuid@^1.4.3, node-uuid@~1.4.0, node-uuid@~1.4.7: +node-uuid@^1.4.3, node-uuid@~1.4.0, node-uuid@~1.4.3, node-uuid@~1.4.7: version "1.4.7" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" -nopt@^3.0.1, nopt@~3.0.1, nopt@3.x: +nopt@^3.0.1, nopt@~3.0.1, nopt@3.0.x, nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: @@ -5995,6 +6195,10 @@ object-keys@^1.0.10, object-keys@^1.0.8, object-keys@^1.0.9: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" +object-path@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" + object.assign@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" @@ -6072,6 +6276,17 @@ onetime@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" +openurl@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.0.tgz#e2f2189d999c04823201f083f0f1a7cd8903187a" + +opn@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -6418,6 +6633,12 @@ pngquant-bin@^3.0.0: bin-wrapper "^3.0.0" logalot "^2.0.0" +portscanner@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-1.0.0.tgz#3b5cfe393828b5160abc600e6270ebc2f1590558" + dependencies: + async "0.1.15" + postcss-apply@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/postcss-apply/-/postcss-apply-0.3.0.tgz#a2f37c5bdfa881e4c15f4f245ec0cd96dd2e70d5" @@ -7002,18 +7223,30 @@ qjobs@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" +"qs@>= 0.4.0": + version "6.3.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" + qs@~4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607" +qs@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-5.2.1.tgz#801fee030e0b9450d6385adc48a4cc55b44aedfc" + qs@~6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.1.0.tgz#ec1d1626b24278d99f0fdf4549e524e24eceeb26" -qs@~6.2.0: +qs@~6.2.0, qs@6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" +qs@0.4.x: + version "0.4.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-0.4.2.tgz#3cac4c861e371a8c9c4770ac23cda8de639b8e5f" + qs@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b" @@ -7510,6 +7743,30 @@ request@~2.72.0: tough-cookie "~2.2.0" tunnel-agent "~0.4.1" +request@2.65.0: + version "2.65.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.65.0.tgz#cc1a3bc72b96254734fc34296da322f9486ddeba" + dependencies: + aws-sign2 "~0.6.0" + bl "~1.0.0" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~1.0.0-rc3" + har-validator "~2.0.2" + hawk "~3.1.0" + http-signature "~0.11.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.3" + oauth-sign "~0.8.0" + qs "~5.2.0" + stringstream "~0.0.4" + tough-cookie "~2.2.0" + tunnel-agent "~0.4.1" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -7560,6 +7817,13 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +resp-modifier@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" + dependencies: + debug "^2.2.0" + minimatch "^3.0.2" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -7601,6 +7865,10 @@ rx-lite@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" +rx@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + rxjs@^5.0.0-beta.11: version "5.0.0-rc.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.0.0-rc.1.tgz#9e02b7044da81a2d5e138908d22af77e22d96973" @@ -7691,7 +7959,19 @@ sentence-case@^2.1.0: no-case "^2.2.0" upper-case-first "^1.1.2" -serve-static@~1.11.1: +serve-index@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" + dependencies: + accepts "~1.3.3" + batch "0.5.3" + debug "~2.2.0" + escape-html "~1.0.3" + http-errors "~1.5.0" + mime-types "~2.1.11" + parseurl "~1.3.1" + +serve-static@~1.11.1, serve-static@1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805" dependencies: @@ -7700,6 +7980,10 @@ serve-static@~1.11.1: parseurl "~1.3.1" send "0.14.1" +server-destroy@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -7807,6 +8091,22 @@ socket.io-client@1.4.6: socket.io-parser "2.2.6" to-array "0.1.4" +socket.io-client@1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.4.8.tgz#481b241e73df140ea1a4fb03486a85ad097f5558" + dependencies: + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "1.2.0" + debug "2.2.0" + engine.io-client "1.6.11" + has-binary "0.1.7" + indexof "0.0.1" + object-component "0.0.3" + parseuri "0.0.4" + socket.io-parser "2.2.6" + to-array "0.1.4" + socket.io-parser@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.2.tgz#3d7af6b64497e956b7d9fe775f999716027f9417" @@ -7838,6 +8138,17 @@ socket.io@1.4.7: socket.io-client "1.4.6" socket.io-parser "2.2.6" +socket.io@1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.4.8.tgz#e576f330cd0bed64e55b3fd26df991141884867b" + dependencies: + debug "2.2.0" + engine.io "1.6.11" + has-binary "0.1.7" + socket.io-adapter "0.4.0" + socket.io-client "1.4.8" + socket.io-parser "2.2.6" + sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -8005,6 +8316,13 @@ stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" +stream-throttle@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" + dependencies: + commander "^2.2.0" + limiter "^1.0.5" + stream-to-observable@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe" @@ -8025,7 +8343,7 @@ string-template@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96" -string-width@^1.0.1: +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" dependencies: @@ -8311,6 +8629,13 @@ text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +tfunk@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.0.2.tgz#327ebc6176af2680c6cd0d6d22297c79d7f96efd" + dependencies: + chalk "^1.1.1" + object-path "^0.9.0" + through@^2.3.6, "through@>=2.2.7 <3", through@~2.3.4, through@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -8469,7 +8794,7 @@ typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -ua-parser-js@^0.7.9: +ua-parser-js@^0.7.9, ua-parser-js@0.7.10: version "0.7.10" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.10.tgz#917559ddcce07cbc09ece7d80495e4c268f4ef9f" @@ -8515,6 +8840,10 @@ unc-path-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" +underscore@1.7.x: + version "1.7.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -8812,6 +9141,14 @@ webpack@2.1.0-beta.22: webpack-sources "^0.1.0" yargs "^4.7.1" +weinre@^2.0.0-pre-I0Z7U9OV: + version "2.0.0-pre-I0Z7U9OV" + resolved "https://registry.yarnpkg.com/weinre/-/weinre-2.0.0-pre-I0Z7U9OV.tgz#fef8aa223921f7b40bbbbd4c3ed4302f6fd0a813" + dependencies: + express "2.5.x" + nopt "3.0.x" + underscore "1.7.x" + whatwg-fetch@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz#0e3684c6cb9995b43efc9df03e4c365d95fd9cc0" @@ -8852,7 +9189,7 @@ widest-line@^1.0.0: dependencies: string-width "^1.0.1" -window-size@^0.1.4: +window-size@^0.1.2, window-size@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" @@ -8917,6 +9254,13 @@ ws@1.0.1: options ">=0.0.5" ultron "1.0.x" +ws@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.0.tgz#c1d6fd1515d3ceff1f0ae2759bf5fd77030aad1d" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + xdg-basedir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" @@ -8954,6 +9298,13 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" +yargs-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-3.2.0.tgz#5081355d19d9d0c8c5d81ada908cb4e6d186664f" + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.1.0" + yargs@^1.2.6: version "1.3.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.3.3.tgz#054de8b61f22eefdb7207059eaef9d6b83fb931a" @@ -8998,6 +9349,36 @@ yargs@~3.10.0: decamelize "^1.0.0" window-size "0.1.0" +yargs@3.29.0: + version "3.29.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.29.0.tgz#1aab9660eae79d8b8f675bcaeeab6ee34c2cf69c" + dependencies: + camelcase "^1.2.1" + cliui "^3.0.3" + decamelize "^1.0.0" + os-locale "^1.4.0" + window-size "^0.1.2" + y18n "^3.2.0" + +yargs@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-5.0.0.tgz#3355144977d05757dbb86d6e38ec056123b3a66e" + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + lodash.assign "^4.2.0" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^3.2.0" + yauzl@^2.2.1: version "2.6.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.6.0.tgz#40894d4587bb125500d05df45471cd5e114a76f9"