From fc38592366943b6d8ab4e8c23a88e93968199f2a Mon Sep 17 00:00:00 2001 From: Eli Perelman Date: Mon, 7 May 2018 07:20:13 -0500 Subject: [PATCH 1/7] Morph Neutrino API and CLI into middleware injectors for external CLI tools Remove all CLIs, remove create project, expose command name from each config method Fix test references to API Simplify adapter pattern for overriding tool options More webpack peerDeps changes Remove irrelevant changes from patch Reset jest source files location, upgrade to latest webpack Fail lint if mode is production Add support for options.debug and options.inspect Throw if vendor entrypoint exists Re-work create-project to support external CLIs and test with verdaccio Fix bugs in beta verdaccio setup Remove localhost yarn.lock entries :/ Trying single-instance tests again in CI Removing unused environment variable detection in tests Add back karma and mocha middleware for eslint settings Experiment with using ramdisk for yarn cache Use updated yarn cache directory Update yarn.lock after rebase Remove adapter pattern, move output handlers to middleware, parse --mode from argv Fix output command for create-project mocha Removing rebase artifacts Use babel register from mocha output options Remove reference to old yarn cache script Add tests for exposing commands, add peer deps for karma Revert back to previous ava Use a proxy to expose output handlers as named methods on neutrino package Revert changes to eslintignore and create-project that were out of scope --- .eslintrc.js | 6 +- package.json | 8 +- packages/airbnb-base/eslintrc.js | 6 +- packages/airbnb-base/package.json | 2 +- packages/airbnb-base/test/airbnb_test.js | 33 +- packages/airbnb/eslintrc.js | 6 +- packages/airbnb/package.json | 2 +- packages/airbnb/test/airbnb_test.js | 33 +- packages/banner/package.json | 6 +- packages/banner/test/middleware_test.js | 10 +- packages/clean/package.json | 3 +- packages/clean/test/middleware_test.js | 10 +- packages/compile-loader/index.js | 25 +- packages/compile-loader/package.json | 3 +- .../compile-loader/test/middleware_test.js | 35 +- packages/copy/package.json | 3 +- packages/copy/test/middleware_test.js | 10 +- .../create-project/commands/init/index.js | 30 +- .../create-project/commands/init/matrix.js | 48 +- .../init/templates/airbnb-base/.eslintrc.js | 6 +- .../init/templates/airbnb/.eslintrc.js | 6 +- .../init/templates/jest/jest.config.js | 3 + .../init/templates/karma/karma.conf.js | 3 + .../init/templates/library/webpack.config.js | 3 + .../init/templates/mocha/mocha.config.js | 1 + .../init/templates/node/webpack.config.js | 3 + .../init/templates/preact/webpack.config.js | 3 + .../react-components/webpack.config.js | 3 + .../init/templates/react/webpack.config.js | 3 + .../init/templates/standardjs/.eslintrc.js | 6 +- .../init/templates/vue/webpack.config.js | 3 + .../init/templates/web/webpack.config.js | 3 + packages/create-project/package.json | 1 + packages/create-project/test/cli_test.js | 9 + packages/dev-server/index.js | 44 +- packages/dev-server/package.json | 8 +- packages/dev-server/test/middleware_test.js | 10 +- packages/env/package.json | 6 +- packages/env/test/middleware_test.js | 10 +- packages/eslint/eslintrc.js | 6 +- packages/eslint/index.js | 176 +- packages/eslint/package.json | 6 +- packages/eslint/test/middleware_test.js | 33 +- packages/font-loader/index.js | 4 +- packages/font-loader/package.json | 6 +- packages/font-loader/test/middleware_test.js | 10 +- packages/fork/README.md | 240 -- packages/fork/index.js | 45 - packages/fork/neutrino-child.js | 50 - packages/fork/package.json | 36 - packages/hot/package.json | 6 +- packages/hot/test/middleware_test.js | 6 +- packages/html-loader/package.json | 3 +- packages/html-loader/test/middleware_test.js | 10 +- packages/html-template/package.json | 6 +- .../html-template/test/middleware_test.js | 10 +- packages/image-loader/index.js | 4 +- packages/image-loader/package.json | 3 +- packages/image-loader/test/middleware_test.js | 10 +- packages/image-minify/index.js | 2 +- packages/image-minify/package.json | 6 +- packages/image-minify/test/middleware_test.js | 30 +- packages/jest/package.json | 10 +- packages/jest/src/index.js | 215 +- packages/jest/test/jest_test.js | 52 +- packages/karma/index.js | 133 +- packages/karma/package.json | 23 +- packages/karma/test/karma_test.js | 60 +- packages/library/index.js | 7 +- packages/library/package.json | 4 +- packages/library/test/library_test.js | 49 +- packages/loader-merge/test/middleware_test.js | 8 +- packages/mocha/package.json | 11 +- packages/mocha/src/index.js | 44 +- packages/mocha/src/mocha.js | 30 - packages/mocha/src/register.js | 4 - packages/mocha/test/mocha_test.js | 42 +- packages/neutrino/Neutrino.js | 216 ++ packages/neutrino/bin/base.js | 84 - packages/neutrino/bin/build.js | 44 - packages/neutrino/bin/execute.js | 43 - packages/neutrino/bin/inspect.js | 23 - packages/neutrino/bin/neutrino.js | 135 +- packages/neutrino/bin/start.js | 64 - packages/neutrino/bin/test.js | 15 - packages/neutrino/extensions.js | 24 + packages/neutrino/index.js | 44 + packages/neutrino/package.json | 18 +- packages/neutrino/src/api.js | 305 -- packages/neutrino/src/build.js | 10 - packages/neutrino/src/devServer.js | 11 - packages/neutrino/src/index.js | 15 - packages/neutrino/src/inspect.js | 9 - packages/neutrino/src/start.js | 6 - packages/neutrino/src/test.js | 5 - packages/neutrino/src/utils.js | 72 - packages/neutrino/src/watch.js | 10 - packages/neutrino/src/webpack.js | 74 - packages/neutrino/test/api_test.js | 130 +- packages/neutrino/test/package_test.js | 59 + packages/neutrino/test/require_test.js | 11 +- packages/neutrino/webpack.js | 9 + packages/node/index.js | 53 +- packages/node/package.json | 6 +- packages/node/test/node_test.js | 42 +- packages/preact/package.json | 4 +- packages/preact/test/preact_test.js | 10 +- packages/pwa/package.json | 3 +- packages/pwa/test/middleware_test.js | 10 +- packages/react-components/index.js | 9 +- packages/react-components/package.json | 3 +- .../react-components/test/components_test.js | 51 + .../test/src/components/Empty.jsx | 0 packages/react/index.js | 5 +- packages/react/package.json | 4 +- packages/react/test/react_test.js | 12 +- packages/standardjs/eslintrc.js | 6 +- packages/standardjs/package.json | 2 +- packages/standardjs/test/standardjs_test.js | 33 +- packages/start-server/package.json | 3 +- packages/start-server/test/middleware_test.js | 14 +- packages/style-loader/index.js | 4 +- packages/style-loader/package.json | 6 +- packages/style-loader/test/middleware_test.js | 10 +- packages/style-minify/package.json | 6 +- packages/style-minify/test/middleware_test.js | 10 +- packages/stylelint/index.js | 34 +- packages/stylelint/package.json | 9 +- packages/stylelint/test/middleware_test.js | 35 +- packages/vue/package.json | 4 +- packages/vue/test/vue_test.js | 10 +- packages/web/index.js | 28 +- packages/web/package.json | 4 +- packages/web/test/web_test.js | 58 +- yarn.lock | 2696 +++++------------ 135 files changed, 2176 insertions(+), 4257 deletions(-) create mode 100644 packages/create-project/commands/init/templates/jest/jest.config.js create mode 100644 packages/create-project/commands/init/templates/karma/karma.conf.js create mode 100644 packages/create-project/commands/init/templates/library/webpack.config.js create mode 100644 packages/create-project/commands/init/templates/mocha/mocha.config.js create mode 100644 packages/create-project/commands/init/templates/node/webpack.config.js create mode 100644 packages/create-project/commands/init/templates/preact/webpack.config.js create mode 100644 packages/create-project/commands/init/templates/react-components/webpack.config.js create mode 100644 packages/create-project/commands/init/templates/react/webpack.config.js create mode 100644 packages/create-project/commands/init/templates/vue/webpack.config.js create mode 100644 packages/create-project/commands/init/templates/web/webpack.config.js delete mode 100644 packages/fork/README.md delete mode 100644 packages/fork/index.js delete mode 100644 packages/fork/neutrino-child.js delete mode 100644 packages/fork/package.json delete mode 100644 packages/mocha/src/mocha.js delete mode 100644 packages/mocha/src/register.js create mode 100644 packages/neutrino/Neutrino.js delete mode 100644 packages/neutrino/bin/base.js delete mode 100644 packages/neutrino/bin/build.js delete mode 100644 packages/neutrino/bin/execute.js delete mode 100644 packages/neutrino/bin/inspect.js delete mode 100644 packages/neutrino/bin/start.js delete mode 100644 packages/neutrino/bin/test.js create mode 100644 packages/neutrino/extensions.js create mode 100644 packages/neutrino/index.js delete mode 100644 packages/neutrino/src/api.js delete mode 100644 packages/neutrino/src/build.js delete mode 100644 packages/neutrino/src/devServer.js delete mode 100644 packages/neutrino/src/index.js delete mode 100644 packages/neutrino/src/inspect.js delete mode 100644 packages/neutrino/src/start.js delete mode 100644 packages/neutrino/src/test.js delete mode 100644 packages/neutrino/src/utils.js delete mode 100644 packages/neutrino/src/watch.js delete mode 100644 packages/neutrino/src/webpack.js create mode 100644 packages/neutrino/test/package_test.js create mode 100644 packages/neutrino/webpack.js create mode 100644 packages/react-components/test/components_test.js create mode 100644 packages/react-components/test/src/components/Empty.jsx diff --git a/.eslintrc.js b/.eslintrc.js index ecd6b8406..3f4100a56 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,5 +1,3 @@ -const { Neutrino } = require('./packages/neutrino'); +const neutrino = require('./packages/neutrino'); -module.exports = Neutrino({ root: __dirname }) - .use('.neutrinorc.js') - .call('eslintrc'); +module.exports = neutrino(require('./.neutrinorc')).eslintrc(); diff --git a/package.json b/package.json index 684e0d286..d3f6f4bf1 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "scripts": { "changelog": "auto-changelog --remote upstream --commit-limit false", "link:all": "lerna exec yarn link", - "lint": "node packages/neutrino/bin/neutrino lint", + "lint": "eslint packages .neutrinorc.js", "precommit": "lint-staged", "release": "lerna publish --force-publish=*", "release:preview": "lerna publish --force-publish=* --skip-git --skip-npm", @@ -38,12 +38,16 @@ "eslint-config-prettier": "^2.9.0", "eslint-plugin-prettier": "^2.6.0", "husky": "^0.14.3", + "jest": "^22.4.3", "lerna": "^2.11.0", "lint-staged": "^7.0.5", "nyc": "^11.7.1", "prettier": "^1.12.1", + "stylelint": "^8.4.0", "verdaccio": "3.0.0-beta.10", - "verdaccio-memory": "^1.0.1" + "verdaccio-memory": "^1.0.1", + "webpack": "^4.8.3", + "webpack-dev-server": "^3.1.4" }, "lint-staged": { "*.js": [ diff --git a/packages/airbnb-base/eslintrc.js b/packages/airbnb-base/eslintrc.js index 97ad25a4c..b3f815a1a 100644 --- a/packages/airbnb-base/eslintrc.js +++ b/packages/airbnb-base/eslintrc.js @@ -1,5 +1,3 @@ -const { Neutrino } = require('../neutrino'); +const neutrino = require('../neutrino'); -module.exports = Neutrino({ cwd: __dirname }) - .use(require('.')) // eslint-disable-line global-require - .call('eslintrc'); +module.exports = neutrino(require('.')).eslintrc(); diff --git a/packages/airbnb-base/package.json b/packages/airbnb-base/package.json index 770a8c658..9d03c4681 100644 --- a/packages/airbnb-base/package.json +++ b/packages/airbnb-base/package.json @@ -24,11 +24,11 @@ }, "dependencies": { "@neutrinojs/eslint": "^8.2.0", - "eslint": "^4.19.1", "eslint-config-airbnb-base": "^12.1.0", "eslint-plugin-import": "^2.11.0" }, "peerDependencies": { + "eslint": "^4.0.0", "neutrino": "^8.0.0" } } diff --git a/packages/airbnb-base/test/airbnb_test.js b/packages/airbnb-base/test/airbnb_test.js index 1dc1a5994..3b8879d0c 100644 --- a/packages/airbnb-base/test/airbnb_test.js +++ b/packages/airbnb-base/test/airbnb_test.js @@ -1,5 +1,6 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; +import neutrino from '../../neutrino'; const mw = () => require('..'); const options = { eslint: { rules: { semi: false } } }; @@ -9,15 +10,15 @@ test('loads preset', t => { }); test('uses preset', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,21 +26,33 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); t.notThrows(() => api.config.toConfig()); }); -test('exposes lint command', t => { - const api = Neutrino(); +test('exposes eslintrc output handler', t => { + const api = new Neutrino(); api.use(mw()); - t.is(typeof api.commands.lint, 'function'); + const handler = api.outputHandlers.get('eslintrc'); + + t.is(typeof handler, 'function'); +}); + +test('exposes eslintrc config from output', t => { + const config = neutrino(mw()).output('eslintrc'); + + t.is(typeof config, 'object'); +}); + +test('exposes eslintrc method', t => { + t.is(typeof neutrino(mw()).eslintrc, 'function'); }); -test('exposes eslintrc config', t => { - t.is(typeof Neutrino().use(mw()).call('eslintrc'), 'object'); +test('exposes eslintrc config from method', t => { + t.is(typeof neutrino(mw()).eslintrc(), 'object'); }); diff --git a/packages/airbnb/eslintrc.js b/packages/airbnb/eslintrc.js index 97ad25a4c..b3f815a1a 100644 --- a/packages/airbnb/eslintrc.js +++ b/packages/airbnb/eslintrc.js @@ -1,5 +1,3 @@ -const { Neutrino } = require('../neutrino'); +const neutrino = require('../neutrino'); -module.exports = Neutrino({ cwd: __dirname }) - .use(require('.')) // eslint-disable-line global-require - .call('eslintrc'); +module.exports = neutrino(require('.')).eslintrc(); diff --git a/packages/airbnb/package.json b/packages/airbnb/package.json index 4c412256c..0b2ce0f5c 100644 --- a/packages/airbnb/package.json +++ b/packages/airbnb/package.json @@ -24,13 +24,13 @@ }, "dependencies": { "@neutrinojs/eslint": "^8.2.0", - "eslint": "^4.19.1", "eslint-config-airbnb": "^16.1.0", "eslint-plugin-import": "^2.11.0", "eslint-plugin-jsx-a11y": "^6.0.3", "eslint-plugin-react": "^7.7.0" }, "peerDependencies": { + "eslint": "^4.0.0", "neutrino": "^8.0.0" } } diff --git a/packages/airbnb/test/airbnb_test.js b/packages/airbnb/test/airbnb_test.js index 1dc1a5994..3b8879d0c 100644 --- a/packages/airbnb/test/airbnb_test.js +++ b/packages/airbnb/test/airbnb_test.js @@ -1,5 +1,6 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; +import neutrino from '../../neutrino'; const mw = () => require('..'); const options = { eslint: { rules: { semi: false } } }; @@ -9,15 +10,15 @@ test('loads preset', t => { }); test('uses preset', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,21 +26,33 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); t.notThrows(() => api.config.toConfig()); }); -test('exposes lint command', t => { - const api = Neutrino(); +test('exposes eslintrc output handler', t => { + const api = new Neutrino(); api.use(mw()); - t.is(typeof api.commands.lint, 'function'); + const handler = api.outputHandlers.get('eslintrc'); + + t.is(typeof handler, 'function'); +}); + +test('exposes eslintrc config from output', t => { + const config = neutrino(mw()).output('eslintrc'); + + t.is(typeof config, 'object'); +}); + +test('exposes eslintrc method', t => { + t.is(typeof neutrino(mw()).eslintrc, 'function'); }); -test('exposes eslintrc config', t => { - t.is(typeof Neutrino().use(mw()).call('eslintrc'), 'object'); +test('exposes eslintrc config from method', t => { + t.is(typeof neutrino(mw()).eslintrc(), 'object'); }); diff --git a/packages/banner/package.json b/packages/banner/package.json index 3c94578a8..9a3c905c7 100644 --- a/packages/banner/package.json +++ b/packages/banner/package.json @@ -21,10 +21,8 @@ "npm": ">=5.4.0", "yarn": ">=1.2.1" }, - "dependencies": { - "webpack": "^4.7.0" - }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/banner/test/middleware_test.js b/packages/banner/test/middleware_test.js index 203834978..28bc96666 100644 --- a/packages/banner/test/middleware_test.js +++ b/packages/banner/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { raw: false, entryOnly: false }; @@ -9,15 +9,15 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,7 +25,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/clean/package.json b/packages/clean/package.json index e7e126705..7fc20d9e0 100644 --- a/packages/clean/package.json +++ b/packages/clean/package.json @@ -25,6 +25,7 @@ "clean-webpack-plugin": "^0.1.19" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/clean/test/middleware_test.js b/packages/clean/test/middleware_test.js index ae19e93cb..a44faa4b4 100644 --- a/packages/clean/test/middleware_test.js +++ b/packages/clean/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { paths: ['sample'], root: __dirname }; @@ -9,15 +9,15 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,7 +25,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/compile-loader/index.js b/packages/compile-loader/index.js index 53bb0ad35..4f63e1faf 100644 --- a/packages/compile-loader/index.js +++ b/packages/compile-loader/index.js @@ -1,16 +1,25 @@ const babelMerge = require('babel-merge'); -module.exports = (neutrino, options = {}) => neutrino.config.module - .rule(options.ruleId || 'compile') +module.exports = (neutrino, options = {}) => { + neutrino.config.module + .rule(options.ruleId || 'compile') .test(options.test || neutrino.regexFromExtensions()) .when(options.include, rule => rule.include.merge(options.include)) .when(options.exclude, rule => rule.exclude.merge(options.exclude)) .use(options.useId || 'babel') - .loader(require.resolve('babel-loader')) - .options({ - cacheDirectory: true, - babelrc: false, - ...(options.babel || {}) - }); + .loader(require.resolve('babel-loader')) + .options({ + cacheDirectory: true, + babelrc: false, + ...(options.babel || {}) + }); + + neutrino.register('babel', (neutrino, override) => override( + neutrino.config.module + .rule('compile') + .use('babel') + .get('options') + )); +}; module.exports.merge = babelMerge; diff --git a/packages/compile-loader/package.json b/packages/compile-loader/package.json index d9ccee963..a306b8b87 100644 --- a/packages/compile-loader/package.json +++ b/packages/compile-loader/package.json @@ -25,8 +25,7 @@ "dependencies": { "@babel/core": "^7.0.0-beta.46", "babel-loader": "^8.0.0-beta.2", - "babel-merge": "^1.1.1", - "webpack": "^4.7.0" + "babel-merge": "^1.1.1" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/compile-loader/test/middleware_test.js b/packages/compile-loader/test/middleware_test.js index ab403bd1d..3b5334a0b 100644 --- a/packages/compile-loader/test/middleware_test.js +++ b/packages/compile-loader/test/middleware_test.js @@ -1,5 +1,6 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; +import neutrino from '../../neutrino'; const mw = () => require('..'); const options = { test: /\.js$/, babel: { cacheDirectory: false } }; @@ -9,19 +10,19 @@ test('loads middleware', t => { }); test('uses middleware', t => { - const api = Neutrino(); + const api = new Neutrino(); t.notThrows(() => api.use(mw())); }); test('uses with options', t => { - const api = Neutrino(); + const api = new Neutrino(); t.notThrows(() => api.use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -29,9 +30,33 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); t.notThrows(() => api.config.toConfig()); }); + +test('exposes babel output handler', t => { + const api = new Neutrino(); + + api.use(mw()); + + const handler = api.outputHandlers.get('babel'); + + t.is(typeof handler, 'function'); +}); + +test('exposes babel config from output', t => { + const config = neutrino(mw()).output('babel'); + + t.is(typeof config, 'object'); +}); + +test('exposes babel method', t => { + t.is(typeof neutrino(mw()).babel, 'function'); +}); + +test('exposes babel config from method', t => { + t.is(typeof neutrino(mw()).babel(), 'object'); +}); diff --git a/packages/copy/package.json b/packages/copy/package.json index 6d0226789..4e69b3e05 100644 --- a/packages/copy/package.json +++ b/packages/copy/package.json @@ -27,6 +27,7 @@ "deepmerge": "^1.5.2" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/copy/test/middleware_test.js b/packages/copy/test/middleware_test.js index 1a3d10764..b7de19d7c 100644 --- a/packages/copy/test/middleware_test.js +++ b/packages/copy/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { patterns: [{}], options: { ignore: /\.css$/ } }; @@ -9,15 +9,15 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,7 +25,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/create-project/commands/init/index.js b/packages/create-project/commands/init/index.js index 3f082f46b..bbca140d8 100644 --- a/packages/create-project/commands/init/index.js +++ b/packages/create-project/commands/init/index.js @@ -4,6 +4,7 @@ const chalk = require('chalk'); const stringify = require('javascript-stringify'); const merge = require('deepmerge'); const Generator = require('yeoman-generator'); +const { source } = require('neutrino/extensions'); const questions = require('./questions'); const { projects, packages, isYarn } = require('./utils'); @@ -41,7 +42,9 @@ module.exports = class Project extends Generator { use: [ this.data.linter, this._getProjectMiddleware(), - this.data.testRunner + this.data.testRunner && this.data.testRunner.startsWith('@') + ? this.data.testRunner + : null ].filter(Boolean) }; @@ -68,18 +71,31 @@ module.exports = class Project extends Generator { _initialPackageJson() { const installer = isYarn ? 'yarn' : 'npm'; - const scripts = { build: `${packages.NEUTRINO} build` }; + const scripts = { build: 'webpack --mode production' }; if (this.data.projectType !== 'library') { - scripts.start = `${packages.NEUTRINO} start`; + scripts.start = this.data.project === '@neutrinojs/node' + ? 'webpack --watch --mode development' + : 'webpack-serve --mode development'; } - if (this.data.linter) { - scripts.lint = `${packages.NEUTRINO} lint`; - } + const lint = `eslint --ext ${source.join(',')} src`; if (this.data.testRunner) { - scripts.test = `${packages.NEUTRINO} test`; + if (this.data.testRunner.includes('jest')) { + scripts.test = 'jest'; + } else if (this.data.testRunner.includes('karma')) { + scripts.test = 'karma start --single-run'; + } else if (this.data.testRunner.includes('mocha')) { + scripts.test = + 'mocha --require mocha.config.js --recursive'; + } + + if (this.data.linter) { + scripts.lint = `${lint} test`; + } + } else if (this.data.linter) { + scripts.lint = lint; } ensureDirSync(this.options.directory); diff --git a/packages/create-project/commands/init/matrix.js b/packages/create-project/commands/init/matrix.js index fc6efe10e..20d596897 100644 --- a/packages/create-project/commands/init/matrix.js +++ b/packages/create-project/commands/init/matrix.js @@ -15,62 +15,84 @@ const MOCHA = '@neutrinojs/mocha'; const AIRBNB = '@neutrinojs/airbnb'; const AIRBNB_BASE = '@neutrinojs/airbnb-base'; const STANDARDJS = '@neutrinojs/standardjs'; +const ESLINT = 'eslint'; +const WEBPACK = 'webpack'; +const WEBPACK_CLI = 'webpack-cli'; +const WEBPACK_SERVE = 'webpack-serve'; const projects = { [AIRBNB]: { type: LINTING, - devDependencies: [AIRBNB] + devDependencies: [AIRBNB, ESLINT] }, [AIRBNB_BASE]: { type: LINTING, - devDependencies: [AIRBNB_BASE] + devDependencies: [AIRBNB_BASE, ESLINT] }, [WEB_NODE_LIBRARY]: { type: PROJECT, - devDependencies: [WEB_NODE_LIBRARY, N] + devDependencies: [WEB_NODE_LIBRARY, N, WEBPACK, WEBPACK_CLI, WEBPACK_SERVE] }, [NODE]: { type: PROJECT, - devDependencies: [NODE, N] + devDependencies: [NODE, N, WEBPACK, WEBPACK_CLI] }, [PREACT]: { type: PROJECT, dependencies: ['preact', 'preact-compat'], - devDependencies: [PREACT, N] + devDependencies: [PREACT, N, WEBPACK, WEBPACK_CLI, WEBPACK_SERVE] }, [REACT]: { type: PROJECT, dependencies: ['prop-types', 'react', 'react-dom', 'react-hot-loader'], - devDependencies: [REACT, N] + devDependencies: [REACT, N, WEBPACK, WEBPACK_CLI, WEBPACK_SERVE] }, [REACT_COMPONENTS]: { type: PROJECT, - devDependencies: [REACT_COMPONENTS, N, 'prop-types', 'react', 'react-dom'] + devDependencies: [ + REACT_COMPONENTS, + N, + 'prop-types', + 'react', + 'react-dom', + WEBPACK, WEBPACK_CLI + ] }, [STANDARDJS]: { type: LINTING, - devDependencies: [STANDARDJS] + devDependencies: [STANDARDJS, ESLINT] }, [VUE]: { type: PROJECT, dependencies: ['vue'], - devDependencies: [VUE, N] + devDependencies: [VUE, N, WEBPACK, WEBPACK_CLI, WEBPACK_SERVE] }, [WEB]: { type: PROJECT, - devDependencies: [WEB, N] + devDependencies: [WEB, N, WEBPACK, WEBPACK_CLI, WEBPACK_SERVE] }, [JEST]: { type: TESTING, - devDependencies: [JEST] + devDependencies: [JEST, 'jest'] }, [KARMA]: { type: TESTING, - devDependencies: [KARMA] + devDependencies: [ + KARMA, + 'karma', + 'karma-cli', + 'karma-webpack', + 'karma-chrome-launcher', + 'karma-coverage', + 'karma-mocha', + 'karma-mocha-reporter', + 'mocha', + 'mocha-coverage-reporter' + ] }, [MOCHA]: { type: TESTING, - devDependencies: [MOCHA] + devDependencies: [MOCHA, 'mocha'] } }; diff --git a/packages/create-project/commands/init/templates/airbnb-base/.eslintrc.js b/packages/create-project/commands/init/templates/airbnb-base/.eslintrc.js index 4a6fd5f35..9b13482d8 100644 --- a/packages/create-project/commands/init/templates/airbnb-base/.eslintrc.js +++ b/packages/create-project/commands/init/templates/airbnb-base/.eslintrc.js @@ -1,5 +1,3 @@ -const { Neutrino } = require('neutrino'); +const neutrino = require('neutrino'); -module.exports = Neutrino({ root: __dirname }) - .use('.neutrinorc.js') - .call('eslintrc'); +module.exports = neutrino().eslintrc(); diff --git a/packages/create-project/commands/init/templates/airbnb/.eslintrc.js b/packages/create-project/commands/init/templates/airbnb/.eslintrc.js index 4a6fd5f35..9b13482d8 100644 --- a/packages/create-project/commands/init/templates/airbnb/.eslintrc.js +++ b/packages/create-project/commands/init/templates/airbnb/.eslintrc.js @@ -1,5 +1,3 @@ -const { Neutrino } = require('neutrino'); +const neutrino = require('neutrino'); -module.exports = Neutrino({ root: __dirname }) - .use('.neutrinorc.js') - .call('eslintrc'); +module.exports = neutrino().eslintrc(); diff --git a/packages/create-project/commands/init/templates/jest/jest.config.js b/packages/create-project/commands/init/templates/jest/jest.config.js new file mode 100644 index 000000000..9994b01e4 --- /dev/null +++ b/packages/create-project/commands/init/templates/jest/jest.config.js @@ -0,0 +1,3 @@ +const neutrino = require('neutrino'); + +module.exports = neutrino().jest(); diff --git a/packages/create-project/commands/init/templates/karma/karma.conf.js b/packages/create-project/commands/init/templates/karma/karma.conf.js new file mode 100644 index 000000000..437cf0c42 --- /dev/null +++ b/packages/create-project/commands/init/templates/karma/karma.conf.js @@ -0,0 +1,3 @@ +const neutrino = require('neutrino'); + +module.exports = neutrino().karma(); diff --git a/packages/create-project/commands/init/templates/library/webpack.config.js b/packages/create-project/commands/init/templates/library/webpack.config.js new file mode 100644 index 000000000..ece1f37a0 --- /dev/null +++ b/packages/create-project/commands/init/templates/library/webpack.config.js @@ -0,0 +1,3 @@ +const neutrino = require('neutrino'); + +module.exports = neutrino().webpack(); diff --git a/packages/create-project/commands/init/templates/mocha/mocha.config.js b/packages/create-project/commands/init/templates/mocha/mocha.config.js new file mode 100644 index 000000000..9a635f4ef --- /dev/null +++ b/packages/create-project/commands/init/templates/mocha/mocha.config.js @@ -0,0 +1 @@ +require('neutrino')().mocha(); diff --git a/packages/create-project/commands/init/templates/node/webpack.config.js b/packages/create-project/commands/init/templates/node/webpack.config.js new file mode 100644 index 000000000..ece1f37a0 --- /dev/null +++ b/packages/create-project/commands/init/templates/node/webpack.config.js @@ -0,0 +1,3 @@ +const neutrino = require('neutrino'); + +module.exports = neutrino().webpack(); diff --git a/packages/create-project/commands/init/templates/preact/webpack.config.js b/packages/create-project/commands/init/templates/preact/webpack.config.js new file mode 100644 index 000000000..ece1f37a0 --- /dev/null +++ b/packages/create-project/commands/init/templates/preact/webpack.config.js @@ -0,0 +1,3 @@ +const neutrino = require('neutrino'); + +module.exports = neutrino().webpack(); diff --git a/packages/create-project/commands/init/templates/react-components/webpack.config.js b/packages/create-project/commands/init/templates/react-components/webpack.config.js new file mode 100644 index 000000000..ece1f37a0 --- /dev/null +++ b/packages/create-project/commands/init/templates/react-components/webpack.config.js @@ -0,0 +1,3 @@ +const neutrino = require('neutrino'); + +module.exports = neutrino().webpack(); diff --git a/packages/create-project/commands/init/templates/react/webpack.config.js b/packages/create-project/commands/init/templates/react/webpack.config.js new file mode 100644 index 000000000..ece1f37a0 --- /dev/null +++ b/packages/create-project/commands/init/templates/react/webpack.config.js @@ -0,0 +1,3 @@ +const neutrino = require('neutrino'); + +module.exports = neutrino().webpack(); diff --git a/packages/create-project/commands/init/templates/standardjs/.eslintrc.js b/packages/create-project/commands/init/templates/standardjs/.eslintrc.js index 4a6fd5f35..9b13482d8 100644 --- a/packages/create-project/commands/init/templates/standardjs/.eslintrc.js +++ b/packages/create-project/commands/init/templates/standardjs/.eslintrc.js @@ -1,5 +1,3 @@ -const { Neutrino } = require('neutrino'); +const neutrino = require('neutrino'); -module.exports = Neutrino({ root: __dirname }) - .use('.neutrinorc.js') - .call('eslintrc'); +module.exports = neutrino().eslintrc(); diff --git a/packages/create-project/commands/init/templates/vue/webpack.config.js b/packages/create-project/commands/init/templates/vue/webpack.config.js new file mode 100644 index 000000000..ece1f37a0 --- /dev/null +++ b/packages/create-project/commands/init/templates/vue/webpack.config.js @@ -0,0 +1,3 @@ +const neutrino = require('neutrino'); + +module.exports = neutrino().webpack(); diff --git a/packages/create-project/commands/init/templates/web/webpack.config.js b/packages/create-project/commands/init/templates/web/webpack.config.js new file mode 100644 index 000000000..ece1f37a0 --- /dev/null +++ b/packages/create-project/commands/init/templates/web/webpack.config.js @@ -0,0 +1,3 @@ +const neutrino = require('neutrino'); + +module.exports = neutrino().webpack(); diff --git a/packages/create-project/package.json b/packages/create-project/package.json index 184bdf5a0..96aa9f20f 100644 --- a/packages/create-project/package.json +++ b/packages/create-project/package.json @@ -40,6 +40,7 @@ "deepmerge": "^1.5.2", "fs-extra": "^6.0.0", "javascript-stringify": "^1.6.0", + "neutrino": "^8.2.0", "yargs": "^11.0.0", "yeoman-environment": "^2.0.6", "yeoman-generator": "^2.0.5" diff --git a/packages/create-project/test/cli_test.js b/packages/create-project/test/cli_test.js index 97cdbdf1f..88cd41930 100644 --- a/packages/create-project/test/cli_test.js +++ b/packages/create-project/test/cli_test.js @@ -100,12 +100,21 @@ Object.keys(tests).forEach(projectName => { t.truthy(dir); assert.file(join(dir, 'package.json')); assert.file(join(dir, '.neutrinorc.js')); + assert.file(join(dir, 'webpack.config.js')); assert.file(join(dir, '.eslintrc.js')); await lintable(t, dir); await buildable(t, dir); if (tester) { + if (tester === packages.JEST) { + assert.file(join(dir, 'jest.config.js')); + } else if (tester === packages.KARMA) { + assert.file(join(dir, 'karma.conf.js')); + } else if (tester === packages.MOCHA) { + assert.file(join(dir, 'mocha.config.js')); + } + assert.file(join(dir, 'test/simple_test.js')); await testable(t, dir); } diff --git a/packages/dev-server/index.js b/packages/dev-server/index.js index 51482fc6a..4ed88dfe2 100644 --- a/packages/dev-server/index.js +++ b/packages/dev-server/index.js @@ -1,35 +1,30 @@ -const open = require('opn'); const merge = require('deepmerge'); const isLocal = host => host === 'localhost' || host === '127.0.0.1'; const getHost = publicHost => (isLocal(publicHost) ? 'localhost' : '0.0.0.0'); -const getPort = (neutrino, opts) => neutrino.options.port || opts.port || 5000; -const getPublic = (neutrino, options) => { - const port = getPort(neutrino, options); +const getPort = opts => opts.port || 5000; +const getPublic = options => { + const port = getPort(options); if (options.public) { const normalizedPath = options.public.split(':'); - return normalizedPath.length === 2 ? - options.public : - `${normalizedPath[0]}:${port}`; + return normalizedPath.length === 2 + ? options.public + : `${normalizedPath[0]}:${port}`; } - if (neutrino.options.host) { - return isLocal(neutrino.options.host) ? 'localhost' : neutrino.options.host; - } - - return !options.host || isLocal(options.host) ? - `localhost:${port}` : - `${options.host}:${port}`; + return !options.host || isLocal(options.host) + ? `localhost:${port}` + : `${options.host}:${port}`; }; module.exports = (neutrino, opts = {}) => { - const port = getPort(neutrino, opts); - const publicHost = getPublic(neutrino, opts); + const port = getPort(opts); + const publicHost = getPublic(opts); const host = getHost(publicHost); - const options = merge.all([ + neutrino.config.devServer.merge(merge.all([ { port, https: false, @@ -57,17 +52,6 @@ module.exports = (neutrino, opts = {}) => { } }, opts, - { host, public: publicHost }, - neutrino.options.port ? { port: neutrino.options.port } : {}, - neutrino.options.https ? { https: neutrino.options.https } : {} - ]); - const protocol = options.https ? 'https' : 'http'; - const url = `${protocol}://${publicHost}:${options.port}`; - - neutrino.config - .devServer - .merge(options) - .when(options.open, () => { - neutrino.on('start', () => open(url, { wait: false })); - }); + { host, public: publicHost } + ])); }; diff --git a/packages/dev-server/package.json b/packages/dev-server/package.json index 7f8567fe0..9f4a2ea33 100644 --- a/packages/dev-server/package.json +++ b/packages/dev-server/package.json @@ -26,12 +26,10 @@ "yarn": ">=1.2.1" }, "dependencies": { - "deepmerge": "^1.5.2", - "opn": "^5.3.0", - "webpack": "^4.7.0", - "webpack-dev-server": "^3.1.4" + "deepmerge": "^1.5.2" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/dev-server/test/middleware_test.js b/packages/dev-server/test/middleware_test.js index f888f42a4..55643f720 100644 --- a/packages/dev-server/test/middleware_test.js +++ b/packages/dev-server/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { host: '192.168.1.10', port: 3000, https: true }; @@ -9,15 +9,15 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,7 +25,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/env/package.json b/packages/env/package.json index e80eb14af..f9b8de12e 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -23,10 +23,8 @@ "npm": ">=5.4.0", "yarn": ">=1.2.1" }, - "dependencies": { - "webpack": "^4.7.0" - }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/env/test/middleware_test.js b/packages/env/test/middleware_test.js index 8dfdc2559..8f8add1ce 100644 --- a/packages/env/test/middleware_test.js +++ b/packages/env/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = ['ALPHA_BETA']; @@ -9,19 +9,19 @@ test('loads middleware', t => { }); test('uses middleware', t => { - const api = Neutrino(); + const api = new Neutrino(); t.notThrows(() => api.use(mw())); }); test('uses with options', t => { - const api = Neutrino(); + const api = new Neutrino(); t.notThrows(() => api.use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -29,7 +29,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/eslint/eslintrc.js b/packages/eslint/eslintrc.js index 97ad25a4c..b3f815a1a 100644 --- a/packages/eslint/eslintrc.js +++ b/packages/eslint/eslintrc.js @@ -1,5 +1,3 @@ -const { Neutrino } = require('../neutrino'); +const neutrino = require('../neutrino'); -module.exports = Neutrino({ cwd: __dirname }) - .use(require('.')) // eslint-disable-line global-require - .call('eslintrc'); +module.exports = neutrino(require('.')).eslintrc(); diff --git a/packages/eslint/index.js b/packages/eslint/index.js index b573abd75..ad89b41d8 100644 --- a/packages/eslint/index.js +++ b/packages/eslint/index.js @@ -1,46 +1,17 @@ -const Future = require('fluture'); const deepmerge = require('deepmerge'); const clone = require('lodash.clonedeep'); -const { - assoc, curry, evolve, keys, omit, pathOr, pipe, prop, reduce -} = require('ramda'); -const { basename, join } = require('path'); +const omit = require('lodash.omit'); +const { join } = require('path'); const MODULES = join(__dirname, 'node_modules'); -const getEslintOptions = config => config.module.rule('lint').use('eslint').get('options'); -const renameKeys = curry((definition, obj) => - reduce((acc, key) => assoc(definition[key] || key, obj[key], acc), {}, keys(obj))); -const reduceToTrueKeys = reduce((acc, key) => assoc(key, true, acc), {}); -const getEslintRcConfig = pipe( - getEslintOptions, - clone, - // We remove these keys since they are needed when running the lint command but - // not the eslintrc command. The lint command uses ESLint's CLIEngine, but the - // ESLint RC format does not match the CLIEngine format exactly. We must remove - // anything we add that does not comply with ESLint's schemas. - // https://github.com/eslint/eslint/blob/9d1df92628dd4dd1e70fbb19454008e146387435/conf/config-schema.js - // https://github.com/eslint/eslint/blob/9d1df92628dd4dd1e70fbb19454008e146387435/lib/config/config-validator.js#L167 - omit([ - 'failOnError', - 'emitWarning', - 'emitError', - 'cwd', - 'useEslintrc', - 'fix', - 'extensions', - 'formatter' - ]), - renameKeys({ envs: 'env', baseConfig: 'extends' }), - evolve({ - extends: prop('extends'), - globals: reduceToTrueKeys, - env: reduceToTrueKeys - }) -); const merge = (source, destination) => { - const sourceRules = pathOr({}, ['eslint', 'rules'], source); - const destinationRules = pathOr({}, ['eslint', 'rules'], destination); + const sourceRules = (source && source.eslint && source.eslint.rules) || {}; + const destinationRules = ( + destination && + destination.eslint && + destination.eslint.rules + ) || {}; const rules = deepmerge(sourceRules, destinationRules, { arrayMerge(source, destination) { return destination; @@ -52,12 +23,64 @@ const merge = (source, destination) => { return options; }; +const eslintrc = (neutrino, override) => { + const options = omit( + clone( + neutrino.config.module + .rule('lint') + .use('eslint') + .get('options') + ), + [ + 'failOnError', + 'emitWarning', + 'emitError', + 'cwd', + 'useEslintrc', + 'fix', + 'extensions', + 'formatter' + ] + ); + + if (options.envs) { + Object.assign(options, { + env: options.envs.reduce((env, key) => Object.assign( + env, + { [key]: true } + ), {}) + }); + Reflect.deleteProperty(options, 'envs'); + } + + if (options.baseConfig) { + Object.assign(options, { + extends: options.baseConfig.extends, + settings: deepmerge( + options.settings || {}, + options.baseConfig.settings || {} + ) + }); + Reflect.deleteProperty(options, 'baseConfig'); + } + + if (options.globals) { + Object.assign(options, { + globals: options.globals.reduce((globals, key) => Object.assign( + globals, + { [key]: true } + ), {}) + }); + } + + return override(options); +}; module.exports = (neutrino, opts = {}) => { const defaults = { include: !opts.include ? [neutrino.options.source] : undefined, eslint: { - failOnError: neutrino.options.command !== 'start', + failOnError: neutrino.config.get('mode') === 'production', cwd: neutrino.options.root, useEslintrc: false, root: true, @@ -84,18 +107,16 @@ module.exports = (neutrino, opts = {}) => { } }; const options = merge(defaults, opts); + const loaderOptions = typeof options.eslint.formatter === 'string' + ? deepmerge(options.eslint, { + // eslint-disable-next-line global-require + formatter: require(`eslint/lib/formatters/${options.eslint.formatter}`) + }) + : options.eslint; + neutrino.config.resolve.modules.add(MODULES); + neutrino.config.resolveLoader.modules.add(MODULES); neutrino.config - .resolve - .modules - .add(MODULES) - .end() - .end() - .resolveLoader - .modules - .add(MODULES) - .end() - .end() .module .rule('lint') .test(options.test || neutrino.regexFromExtensions()) @@ -104,64 +125,9 @@ module.exports = (neutrino, opts = {}) => { .when(options.exclude, rule => rule.exclude.merge(options.exclude)) .use('eslint') .loader(require.resolve('eslint-loader')) - .options(typeof options.eslint.formatter === 'string' - ? deepmerge(options.eslint, { - // eslint-disable-next-line global-require - formatter: require(`eslint/lib/formatters/${options.eslint.formatter}`) - }) - : options.eslint); + .options(loaderOptions); - neutrino.register( - 'eslintrc', - () => getEslintRcConfig(neutrino.config), - 'Return an object of accumulated ESLint configuration suitable for use by .eslintrc.js' - ); - - neutrino.register( - 'lint', - () => { - if (neutrino.options.debug) { - // Inspired by the ESLint CLI `--debug` implementation (but with less verbose output): - // https://github.com/eslint/eslint/blob/v4.19.0/bin/eslint.js#L21-L23 - // eslint-disable-next-line global-require - require('debug').enable('eslint:cli-engine'); - } - // Must be imported after configuring debug. - // eslint-disable-next-line global-require - const { CLIEngine } = require('eslint'); - - const { fix = false } = neutrino.options.args; - const ignorePattern = (options.exclude || []) - .map(exclude => join( - basename(neutrino.options.source), - basename(exclude), - '**/*' - )); - const eslintConfig = deepmerge(getEslintOptions(neutrino.config), { ignorePattern, fix }); - - return Future - .of(eslintConfig) - .map(options => new CLIEngine(options)) - .chain(cli => Future.both( - Future.of(cli.executeOnFiles(options.include)), - Future.of(cli.getFormatter(options.eslint.formatter)) - )) - .map(([report, formatter]) => { - if (fix) { - CLIEngine.outputFixes(report); - } - - return [report, formatter]; - }) - .chain(([report, formatter]) => { - const formatted = formatter(report.results); - const errors = CLIEngine.getErrorResults(report.results); - - return errors.length ? Future.reject(formatted) : Future.of(formatted); - }); - }, - 'Perform a one-time lint using ESLint. Apply available automatic fixes with --fix' - ); + neutrino.register('eslintrc', eslintrc); }; module.exports.merge = merge; diff --git a/packages/eslint/package.json b/packages/eslint/package.json index 0d255231b..39ba4f5f6 100644 --- a/packages/eslint/package.json +++ b/packages/eslint/package.json @@ -26,15 +26,13 @@ "babel-eslint": "^8.2.3", "debug": "^3.1.0", "deepmerge": "^1.5.2", - "eslint": "^4.19.1", "eslint-loader": "^2.0.0", "eslint-plugin-babel": "^5.1.0", - "fluture": "^8.0.2", "lodash.clonedeep": "^4.5.0", - "ramda": "^0.25.0", - "webpack": "^4.7.0" + "lodash.omit": "^4.5.0" }, "peerDependencies": { + "eslint": "^4.0.0", "neutrino": "^8.0.0" } } diff --git a/packages/eslint/test/middleware_test.js b/packages/eslint/test/middleware_test.js index 81b643a32..c5639ff6b 100644 --- a/packages/eslint/test/middleware_test.js +++ b/packages/eslint/test/middleware_test.js @@ -1,5 +1,6 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; +import neutrino from '../../neutrino'; const mw = () => require('..'); const options = { eslint: { rules: { semi: false } } }; @@ -9,15 +10,15 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,21 +26,33 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); t.notThrows(() => api.config.toConfig()); }); -test('exposes lint command', t => { - const api = Neutrino(); +test('exposes eslintrc output handler', t => { + const api = new Neutrino(); api.use(mw()); - t.is(typeof api.commands.lint, 'function'); + const handler = api.outputHandlers.get('eslintrc'); + + t.is(typeof handler, 'function'); +}); + +test('exposes eslintrc config from output', t => { + const config = neutrino(mw()).output('eslintrc'); + + t.is(typeof config, 'object'); +}); + +test('exposes eslintrc method', t => { + t.is(typeof neutrino(mw()).eslintrc, 'function'); }); -test('exposes eslintrc config', t => { - t.is(typeof Neutrino().use(mw()).call('eslintrc'), 'object'); +test('exposes eslintrc config from method', t => { + t.is(typeof neutrino(mw()).eslintrc(), 'object'); }); diff --git a/packages/font-loader/index.js b/packages/font-loader/index.js index 3f9f0e912..b765a2cc5 100644 --- a/packages/font-loader/index.js +++ b/packages/font-loader/index.js @@ -1,7 +1,7 @@ module.exports = (neutrino, options = {}) => { - const isBuild = neutrino.options.command === 'build'; + const isProduction = neutrino.config.get('mode') === 'production'; const defaultOptions = { - name: isBuild ? '[name].[hash].[ext]' : '[name].[ext]' + name: isProduction ? '[name].[hash].[ext]' : '[name].[ext]' }; neutrino.config.module diff --git a/packages/font-loader/package.json b/packages/font-loader/package.json index 5516b6fe0..f7ba7c80c 100644 --- a/packages/font-loader/package.json +++ b/packages/font-loader/package.json @@ -22,10 +22,10 @@ "yarn": ">=1.2.1" }, "dependencies": { - "file-loader": "^1.1.11", - "webpack": "^4.7.0" + "file-loader": "^1.1.11" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/font-loader/test/middleware_test.js b/packages/font-loader/test/middleware_test.js index 7936b7cd2..3225cc840 100644 --- a/packages/font-loader/test/middleware_test.js +++ b/packages/font-loader/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { name: '[name].[ext]' }; @@ -9,15 +9,15 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,7 +25,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/fork/README.md b/packages/fork/README.md deleted file mode 100644 index d186d4a03..000000000 --- a/packages/fork/README.md +++ /dev/null @@ -1,240 +0,0 @@ -# Neutrino Fork Middleware - -`@neutrinojs/fork` is Neutrino middleware for forking the usage of other middleware into separate processes. -You can combine this with other middleware to configure and build multiple project types from a single project. - -[![NPM version][npm-image]][npm-url] -[![NPM downloads][npm-downloads]][npm-url] - -## Requirements - -- Node.js v8.3+ -- Yarn v1.2.1+, or npm v5.4+ -- Neutrino v8 - -## Installation - -`@neutrinojs/fork` can be installed via the Yarn or npm clients. Inside your project, make sure you have -`neutrino` installed and any other Neutrino middleware are development dependencies. - -#### Yarn - -```bash -❯ yarn add --dev @neutrinojs/fork -``` - -#### npm - -```bash -❯ npm install --save-dev @neutrinojs/fork -``` - -## Details - -`@neutrinojs/fork` operates by defining which middleware you wish to split off into separate processes so they -can be run simultaneously. Some typical use cases: - -- Building a web app and a Node.js app from the same project -- Build multiple web apps or multiple Node.js apps from the same project -- Generate multiple targets when building libraries - -_This middleware must be used in conjunction with a `.neutrinorc.js` file to inform Neutrino of which -middleware should be split into another process. See the [customization docs](https://neutrino.js.org/customization/) -for details on setting up a `.neutrinorc.js` file in your project if you do not already have one._ - -_Important: The configuration options provided to the fork middleware needs to be serializable across -Node.js processes, which is includes Strings, Numbers, Arrays, Booleans, Objects, Arrays, and more. Using -functions or class instances may not be serializable across processes, such as is the case with some -webpack plugins. If you need to provide these to fork middleware configuration, see the section on serialization -workarounds below._ - -## Quickstart - -After installing Neutrino, your other build middleware, and the fork middleware, open your `.neutrinorc.js` file. -For this example, let's demonstrate building a React app and Node.js app from the same project using different source -directories: - -```js -module.exports = { - use: [ - ['@neutrinojs/fork', { - configs: { - react: '@neutrinojs/react', - node: { - options: { source: 'server' }, - use: ['@neutrinojs/node'] - } - } - }] - ] -}; -``` - -Let's examine this `.neutrinorc.js` file and see what is happening: - -```js -module.exports = { - // Tell Neutrino to use the following middleware defined - // in this array - use: [ - // Use the fork middleware to build configuration - // into separate processes. - ['@neutrinojs/fork', { - // Each process will be defined in "configs". - // The key in "configs" will be used to identify - // the forked process. For simplicity, we named - // these "react" and "node". Therefore, these 2 - // will spawn 2 separate processes, one for the - // "react" config, and one for the "node" config. - configs: { - // The key in "configs" maps to a middleware value. - - // The "react" config uses "@neutrinojs/react" as - // middleware using the string format. By default, - // the "react" app's source lives in src/, and builds - // to build/ - react: '@neutrinojs/react', - - // The "node" config uses the object middleware - // format to configure Neutrino to build this - // project from a different directory than the - // "react" app, using server/ instead of src/, and - // builds to server-build/ - node: { - options: { source: 'server', output: 'server-build' }, - use: ['@neutrinojs/node'] - } - } - }] - ] -}; -``` - -Upon starting or building your project, you will now see console messages labeled according to their config ID, -each running in their own process. Quitting Neutrino will cause all forked processes to exit. - -```bash -❯ yarn start -[react] ✔ Development server running on: http://localhost:5000 -[node] Listening on :3000 -[node] ✔ Build completed -[react] ✔ Build completed -``` - -## Paths - -Most middleware attempt to follow the standard [Neutrino project layout](https://neutrino.js.org/project-layout) -to output their compiled output, but building multiple projects at once is bound to cause clashes with -the directories each project uses. This could lead to: - -- One target cleaning the output of another target -- One target replacing a file from the output of another target - -This has the potential to lead to difficult bugs. As such, it is recommended to change the source and output directory -options to avoid this situation altogether, which the example above demonstrates. If you are certain you want from -and to the same directories, such as when building libraries, ensure you follow any project cleanup instructions -outlined by your middleware. - -## Serialization - -The configuration options provided to the fork middleware needs to be serializable across -Node.js processes, which is includes Strings, Numbers, Arrays, Booleans, Objects, Arrays, and more. Using -functions or class instances may not be serializable across processes, such as is the case with some -webpack plugins. - -For example, let's say you wanted to consume the `webpack-assets-plugin` in your fork middleware options: - -```js -// .neutrinorc.js -const AssetsPlugin = require('assets-webpack-plugin'); - -module.exports = { - use: [ - ['@neutrinojs/fork', { - configs: { - react: { - use: [ - '@neutrinojs/react', - (neutrino) => { - neutrino.config - .plugin('asset') - .use(AssetsPlugin, [/* ... */]); - } - ] - } - } - }] - ] -}; -``` - -This would not work as-is, since the middleware function consuming the `AssetsPlugin` would not be serializable as-is. -To work around this, you can move this middleware function to a separate file, and reference it in the middleware, -which would then get forked and used: - -```js -// .neutrinorc.js -module.exports = { - use: [ - ['@neutrinojs/fork', { - configs: { - react: { - use: [ - '@neutrinojs/react', - 'assets-middleware.js' - ] - } - } - }] - ] -}; -``` - -```js -// assets-middleware.js -const AssetsPlugin = require('assets-webpack-plugin'); - -module.exports = (neutrino) => { - neutrino.config - .plugin('asset') - .use(AssetsPlugin, [/* ... */]); -}; -``` - -## Events - -The fork middleware creates a new instance of the Neutrino API for every process spawned. -In order to make use of the Neutrino events that occur in these sub-processes from the parent, Neutrino maps -these events using a `{name}:{event}` convention: - -```js -module.exports = { - use: [ - ['@neutrinojs/fork', { - configs: { - react: '@neutrinojs/react', - node: { - options: { source: 'server' }, - use: ['@neutrinojs/node'] - } - } - }], - - // listen for certain events - (neutrino) => { - neutrino.on('react:build', () => { /* ... */ }); - neutrino.on('node:start', () => { /* ... */ }); - } - ] -}; -``` - -## Contributing - -This preset is part of the [neutrino-dev](https://github.com/mozilla-neutrino/neutrino-dev) repository, a monorepo -containing all resources for developing Neutrino and its core presets and middleware. Follow the -[contributing guide](https://neutrino.js.org/contributing) for details. - -[npm-image]: https://img.shields.io/npm/v/@neutrinojs/fork.svg -[npm-downloads]: https://img.shields.io/npm/dt/@neutrinojs/fork.svg -[npm-url]: https://npmjs.org/package/@neutrinojs/fork diff --git a/packages/fork/index.js b/packages/fork/index.js deleted file mode 100644 index b43fa1d1d..000000000 --- a/packages/fork/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const { gray } = require('chalk'); -const { fork } = require('child_process'); -const { join } = require('path'); -const { createInterface } = require('readline'); -const serialize = require('serialize-javascript'); - -module.exports = (neutrino, options = {}) => { - global.interactive = false; - - neutrino.on(`pre${neutrino.options.command}`, () => { - const registeredCommand = neutrino.commands[neutrino.options.command]; - - neutrino.register(neutrino.options.command, (config, neutrino) => { - if (Object.keys(config).length === 0) { - // The fork middleware was the only middleware used by Neutrino prior - // to running anything. We need to now prevent the default actions from - // doing anything else. - return Promise.resolve(); - } - - return registeredCommand(config, neutrino); - }); - - const children = Object - .keys(options.configs || {}) - .map((namespace) => { - const middleware = options.configs[namespace]; - const script = join(__dirname, './neutrino-child'); - const child = fork(script, [], { stdio: ['pipe', 'pipe', 'pipe', 'ipc'] }); - const stdout = createInterface({ input: child.stdout }); - const stderr = createInterface({ input: child.stderr }); - - stdout.on('line', message => console.log(gray(`[${namespace}]`), message)); - stderr.on('line', message => console.error(gray(`[${namespace}]`), message)); - child.on('message', ([type, args]) => neutrino.emit(`${namespace}:${type}`, ...args)); - child.send(serialize([middleware, neutrino.options.args])); - - return child; - }); - - process.on('exit', () => { - children.forEach(child => child.kill('SIGINT')); - }); - }); -}; diff --git a/packages/fork/neutrino-child.js b/packages/fork/neutrino-child.js deleted file mode 100644 index 2b3ddbb50..000000000 --- a/packages/fork/neutrino-child.js +++ /dev/null @@ -1,50 +0,0 @@ -const { - cond, equals, identity, is, objOf, of, pipe, T -} = require('ramda'); -const build = require('neutrino/bin/build'); -const execute = require('neutrino/bin/execute'); -const inspect = require('neutrino/bin/inspect'); -const start = require('neutrino/bin/start'); -const test = require('neutrino/bin/test'); - -const timeout = setTimeout(Function.prototype, 10000); -const normalizeMiddleware = cond([ - [is(Object), identity], - [T, pipe(of, objOf('use'))] -]); -const runnable = (command, middleware, args) => cond([ - [equals('build'), () => build(middleware, args)], - [equals('start'), () => start(middleware, args)], - [equals('test'), () => test(middleware, args)], - [equals('inspect'), () => inspect(middleware, args)], - [T, () => execute(middleware, args)] -])(command); - -process.on('message', (payload) => { - const [rawMiddleware, args] = eval(`(${payload})`); // eslint-disable-line no-eval - - process.on('unhandledRejection', (err) => { - if (!args.quiet) { - console.error(''); - console.error(err); - } - - process.exit(1); - }); - - clearTimeout(timeout); - - const middleware = normalizeMiddleware(rawMiddleware); - const command = args.inspect ? 'inspect' : args._[0]; - - // Merge CLI config options as last piece of middleware, e.g. options.config.devServer.port 4000 - if (args.options) { - middleware.use.push(({ config }) => config.merge(args.options.config)); - } - - const api = runnable(command, [middleware], args); - - api.on('*', (type, ...args) => { - process.send([type, args]); - }); -}); diff --git a/packages/fork/package.json b/packages/fork/package.json deleted file mode 100644 index 52f71819f..000000000 --- a/packages/fork/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "@neutrinojs/fork", - "version": "8.2.0", - "description": "Neutrino middleware for forking the usage of other middleware into separate processes", - "main": "index.js", - "keywords": [ - "neutrino", - "neutrino-middleware", - "fork", - "spawn", - "process", - "multiple", - "config" - ], - "author": "Eli Perelman ", - "license": "MPL-2.0", - "repository": "https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/fork", - "homepage": "https://neutrino.js.org", - "bugs": "https://github.com/mozilla-neutrino/neutrino-dev/issues", - "publishConfig": { - "access": "public" - }, - "engines": { - "node": ">=8.3", - "npm": ">=5.4.0", - "yarn": ">=1.2.1" - }, - "dependencies": { - "chalk": "^2.4.1", - "ramda": "^0.25.0", - "serialize-javascript": "^1.5.0" - }, - "peerDependencies": { - "neutrino": "^8.0.0" - } -} diff --git a/packages/hot/package.json b/packages/hot/package.json index 86e5bfa53..7dd3ec2da 100644 --- a/packages/hot/package.json +++ b/packages/hot/package.json @@ -24,10 +24,8 @@ "npm": ">=5.4.0", "yarn": ">=1.2.1" }, - "dependencies": { - "webpack": "^4.7.0" - }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/hot/test/middleware_test.js b/packages/hot/test/middleware_test.js index 6abacfcd0..a5fedd980 100644 --- a/packages/hot/test/middleware_test.js +++ b/packages/hot/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); @@ -8,13 +8,13 @@ test('loads middleware', t => { }); test('uses middleware', t => { - const api = Neutrino(); + const api = new Neutrino(); t.notThrows(() => api.use(mw())); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); diff --git a/packages/html-loader/package.json b/packages/html-loader/package.json index cd0e3eeca..eabe2b312 100644 --- a/packages/html-loader/package.json +++ b/packages/html-loader/package.json @@ -25,6 +25,7 @@ "html-loader": "^0.5.5" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/html-loader/test/middleware_test.js b/packages/html-loader/test/middleware_test.js index cd07c2f99..627aa53b2 100644 --- a/packages/html-loader/test/middleware_test.js +++ b/packages/html-loader/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { name: 'alpha.beta' }; @@ -9,15 +9,15 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,7 +25,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/html-template/package.json b/packages/html-template/package.json index 2b41f6171..6a79da6ea 100644 --- a/packages/html-template/package.json +++ b/packages/html-template/package.json @@ -25,10 +25,10 @@ "dependencies": { "deepmerge": "^1.5.2", "html-webpack-plugin": "^3.2.0", - "html-webpack-template": "^6.2.0", - "webpack": "^4.7.0" + "html-webpack-template": "^6.2.0" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/html-template/test/middleware_test.js b/packages/html-template/test/middleware_test.js index b014e2e2d..80f30b2ff 100644 --- a/packages/html-template/test/middleware_test.js +++ b/packages/html-template/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { title: 'Alpha Beta', appMountId: 'app' }; @@ -9,19 +9,19 @@ test('loads middleware', t => { }); test('uses middleware', t => { - const api = Neutrino(); + const api = new Neutrino(); t.notThrows(() => api.use(mw())); }); test('uses with options', t => { - const api = Neutrino(); + const api = new Neutrino(); t.notThrows(() => api.use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -29,7 +29,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/image-loader/index.js b/packages/image-loader/index.js index 8c4e2570f..918a6dd39 100644 --- a/packages/image-loader/index.js +++ b/packages/image-loader/index.js @@ -1,8 +1,8 @@ module.exports = (neutrino, options = {}) => { - const isBuild = neutrino.options.command === 'build'; + const isProduction = neutrino.config.get('mode') === 'production'; const defaultOptions = { limit: 8192, - name: isBuild ? '[name].[hash].[ext]' : '[name].[ext]' + name: isProduction ? '[name].[hash].[ext]' : '[name].[ext]' }; neutrino.config.module diff --git a/packages/image-loader/package.json b/packages/image-loader/package.json index 81adda05b..86e102524 100644 --- a/packages/image-loader/package.json +++ b/packages/image-loader/package.json @@ -26,6 +26,7 @@ "url-loader": "^1.0.1" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/image-loader/test/middleware_test.js b/packages/image-loader/test/middleware_test.js index 66dfef6a2..59ec7f05e 100644 --- a/packages/image-loader/test/middleware_test.js +++ b/packages/image-loader/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { limit: 1024, name: '[name].[ext]' }; @@ -9,15 +9,15 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,7 +25,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/image-minify/index.js b/packages/image-minify/index.js index ec805b04e..20173214d 100644 --- a/packages/image-minify/index.js +++ b/packages/image-minify/index.js @@ -10,7 +10,7 @@ const imageminLoader = require.resolve('imagemin-webpack/imagemin-loader'); module.exports = (neutrino, opts = {}) => { const options = merge({ - enabled: process.env.NODE_ENV === 'production', + enabled: neutrino.config.get('mode') === 'production', imagemin: { plugins: [ gifsicle(), diff --git a/packages/image-minify/package.json b/packages/image-minify/package.json index 3a73deefc..00c19d740 100644 --- a/packages/image-minify/package.json +++ b/packages/image-minify/package.json @@ -29,10 +29,10 @@ "imagemin-pngquant": "^5.1.0", "imagemin-svgo": "^6.0.0", "imagemin-webp": "^4.1.0", - "imagemin-webpack": "^2.0.0", - "webpack": "^4.7.0" + "imagemin-webpack": "^2.0.0" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/image-minify/test/middleware_test.js b/packages/image-minify/test/middleware_test.js index 759be4cb3..1d5027f7a 100644 --- a/packages/image-minify/test/middleware_test.js +++ b/packages/image-minify/test/middleware_test.js @@ -1,9 +1,7 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); -const prodEnv = { env: { NODE_ENV: 'production' } }; -const devEnv = { env: { NODE_ENV: 'development' } }; const options = { rules: ['image'] }; test('loads middleware', t => { @@ -11,15 +9,27 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino(prodEnv).use(mw())); + t.notThrows(() => { + const api = new Neutrino(); + + api.config.mode('production'); + api.use(mw()); + }); }); test('uses with options', t => { - t.notThrows(() => Neutrino(prodEnv).use(mw(), options)); + t.notThrows(() => { + const api = new Neutrino(); + + api.config.mode('production'); + api.use(mw(), options) + }); }); test('instantiates', t => { - const api = Neutrino(prodEnv); + const api = new Neutrino(); + + api.config.mode('production'); api.use(mw()); t.true(api.config.plugins.has('imagemin')); @@ -27,7 +37,9 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(prodEnv); + const api = new Neutrino(); + + api.config.mode('production'); api.use(mw(), options); t.true(api.config.plugins.has('imagemin')); @@ -35,7 +47,9 @@ test('instantiates with options', t => { }); test('disabled in development', t => { - const api = Neutrino(devEnv); + const api = new Neutrino(); + + api.config.mode('development'); api.use(mw(), options); t.false(api.config.plugins.has('imagemin')); diff --git a/packages/jest/package.json b/packages/jest/package.json index 99cf93dd2..4329800dd 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -22,18 +22,16 @@ "yarn": ">=1.2.1" }, "dependencies": { - "@babel/core": "^7.0.0-beta.46", + "@babel/core": "^7.0.0-beta.47", "@babel/plugin-transform-modules-commonjs": "^7.0.0-beta.46", + "@neutrinojs/compile-loader": "^8.2.0", "@neutrinojs/loader-merge": "^8.2.0", "babel-plugin-jest-hoist": "^22.4.3", - "deepmerge": "^1.5.2", - "eslint": "^4.19.1", "eslint-plugin-jest": "^21.15.1", - "jest-cli": "^22.4.3", - "ramda": "^0.25.0", - "yargs": "^11.0.0" + "lodash.omit": "^4.5.0" }, "peerDependencies": { + "jest": "^22.0.0", "neutrino": "^8.0.0" } } diff --git a/packages/jest/src/index.js b/packages/jest/src/index.js index 5bfe414f2..aa8bddfec 100644 --- a/packages/jest/src/index.js +++ b/packages/jest/src/index.js @@ -1,83 +1,12 @@ -const yargs = require('yargs'); -const jest = require('jest-cli'); -const jestOptions = require('jest-cli/build/cli/args').options; -const { omit } = require('ramda'); -const merge = require('deepmerge'); const loaderMerge = require('@neutrinojs/loader-merge'); -const { isAbsolute, basename, join, relative } = require('path'); -const { tmpdir } = require('os'); -const { writeFileSync } = require('fs'); +const { merge } = require('@neutrinojs/compile-loader'); +const omit = require('lodash.omit'); +const { basename, isAbsolute, join, relative } = require('path'); +const { media, style } = require('neutrino/extensions'); -const mediaExtensions = ['jpg', 'jpeg', 'png', 'gif', 'eot', 'otf', 'webp', 'svg', 'ttf', 'woff', 'woff2', 'mp4', 'webm', 'wav', 'mp3', 'm4a', 'aac', 'oga']; - -function getFinalPath(path) { - if (isAbsolute(path)) { - return path; - } - - return path.startsWith('.') ? - join('', path) : - join('', 'node_modules', path); -} - -function normalizeJestOptions(opts, neutrino, usingBabel) { - const mediaNames = `\\.(${mediaExtensions.join('|')})$`; - const styleNames = `\\.(${['css', 'less', 'sass', 'scss'].join('|')})$`; - - // neutrino.options.extensions should be used instead of neutrino.regexFromExtensions() - // because transformNames is used as a property name where a Regex object will cause issues. - // e.g., https://github.com/mozilla-neutrino/neutrino-dev/issues/638. - const transformNames = `\\.(${neutrino.options.extensions.join('|')})$`; - const aliases = neutrino.config.resolve.alias.entries() || {}; - const moduleNames = Object - .keys(aliases) - .reduce((mapper, key) => Object.assign(mapper, { - [`^${key}$`]: `${getFinalPath(aliases[key])}$1` - }), {}); - const moduleNameMapper = merge({ - [mediaNames]: require.resolve('./file-mock'), - [styleNames]: require.resolve('./style-mock') - }, moduleNames); - const moduleDirectories = [...new Set([ - join(__dirname, '../node_modules'), - ...(opts.moduleDirectories || []), - ...neutrino.config.resolve.modules.values() - ])]; - const moduleFileExtensions = [...new Set([ - ...(opts.moduleFileExtensions || []), - ...neutrino.config.resolve.extensions.values().map(e => e.replace('.', '')) - ])]; - - const { extensions, source, tests, root } = neutrino.options - const collectCoverageFrom = [join(relative(root, source), `**/*.{${extensions.join(',')}}`)] - - const testRegex = `${basename(tests)}/.*(_test|_spec|\\.test|\\.spec)\\.(${extensions.join('|')})$`; - - return merge.all([ - { - rootDir: root, - moduleDirectories, - moduleFileExtensions, - moduleNameMapper, - bail: true, - coveragePathIgnorePatterns: [neutrino.options.node_modules], - collectCoverageFrom, - testRegex, - transform: { [transformNames]: require.resolve('./transformer') }, - globals: { - BABEL_OPTIONS: usingBabel - ? omit(['cacheDirectory'], neutrino.config.module.rule('compile').use('babel').get('options')) - : {} - }, - verbose: neutrino.options.debug - }, - opts - ]); -} - -module.exports = (neutrino, opts = {}) => { - neutrino.config.when(neutrino.config.module.rules.has('lint'), () => neutrino - .use(loaderMerge('lint', 'eslint'), { +module.exports = neutrino => { + neutrino.config.when(neutrino.config.module.rules.has('lint'), () => { + neutrino.use(loaderMerge('lint', 'eslint'), { plugins: ['jest'], envs: ['jest/globals'], rules: { @@ -86,48 +15,104 @@ module.exports = (neutrino, opts = {}) => { 'jest/no-identical-title': 'error', 'jest/valid-expect': 'error' } - })); + }); + }); - neutrino.on('test', (args) => { + neutrino.register('jest', (neutrino, override) => { const usingBabel = neutrino.config.module.rules.has('compile'); - neutrino.config.when(usingBabel, () => { - neutrino.use(loaderMerge('compile', 'babel'), { - retainLines: true, - plugins: [ - // Once babel-preset-jest has better Babel 7 support we should switch back to it - // (or even use babel-jest, which will allow simplifying the transformer too): - // https://github.com/facebook/jest/issues/6126 - // For now this plugin is taken from here (we don't need object-rest-spread since node >=8.3): - // https://github.com/facebook/jest/blob/v22.4.2/packages/babel-preset-jest/index.js#L11-L12 - require.resolve('babel-plugin-jest-hoist'), - // Since the tests will be run by node which doesn't yet support ES2015 modules - require.resolve('@babel/plugin-transform-modules-commonjs') - ] - }); - }); + if (usingBabel) { + neutrino.config.module + .rule('compile') + .use('babel') + .tap(options => merge(options, { + plugins: [ + // Once babel-preset-jest has better Babel 7 support we should + // switch back to it (or even use babel-jest, which will allow + // simplifying the transformer too): + // https://github.com/facebook/jest/issues/6126 + // For now this plugin is taken from here (we don't need + // object-rest-spread since node >=8.3): + // https://github.com/facebook/jest/blob/v22.4.2/packages/babel-preset-jest/index.js#L11-L12 + require.resolve('babel-plugin-jest-hoist'), + // Since the tests will be run by node which doesn't yet support + // ES2015 modules + require.resolve('@babel/plugin-transform-modules-commonjs') + ] + })); + } - // We need to parse argv separately in order to identify files - // and jest-related options since root neutrino does not know about - // jest options and will provide wrong/incomplete `args.files` - const jestArgs = yargs - .command('test [files..]', 'Run tests', jestOptions) - .argv; - const configFile = join(tmpdir(), 'config.json'); - const options = normalizeJestOptions(opts, neutrino, usingBabel); - const cliOptions = { - ...jestArgs, - // Jest is looking for Array of files in `argv._`. Providing them - _: jestArgs.files, - config: configFile, - coverage: args.coverage, - watch: args.watch - }; + const babelOptions = usingBabel + ? merge( + omit( + neutrino.config.module.rule('compile').use('babel').get('options'), + ['cacheDirectory'] + ), + { + retainLines: true, + plugins: [ + require.resolve('@babel/plugin-transform-modules-commonjs') + ] + } + ) + : {}; + const getFinalPath = path => { + if (isAbsolute(path)) { + return path; + } - writeFileSync(configFile, `${JSON.stringify(options, null, 2)}\n`); + return path.startsWith('.') + ? join('', path) + : join('', 'node_modules', path); + }; + const extensionsToNames = extensions => `\\.(${extensions.join('|')})$`; + const { + extensions, + source, + tests, + root, + node_modules, // eslint-disable-line camelcase + debug + } = neutrino.options; + const aliases = neutrino.config.resolve.alias.entries() || {}; - return jest - .runCLI(cliOptions, options.roots || [options.rootDir]) - .then(({ results }) => results.success ? Promise.resolve() : Promise.reject()); + return override({ + rootDir: root, + moduleDirectories: neutrino.config.resolve.modules.values(), + moduleFileExtensions: neutrino.config.resolve.extensions + .values() + .map(extension => extension.replace('.', '')), + moduleNameMapper: + Object + .keys(aliases) + .reduce((mapper, key) => ({ + ...mapper, + [`^${key}$`]: `${getFinalPath(aliases[key])}$1` + }), { + [extensionsToNames(media)]: require.resolve('./file-mock'), + [extensionsToNames(style)]: require.resolve('./style-mock') + }), + bail: true, + // eslint-disable-next-line camelcase + coveragePathIgnorePatterns: [node_modules], + collectCoverageFrom: [join( + relative(root, source), + `**/*.{${extensions.join(',')}}` + )], + testRegex: `${basename(tests)}/.*(_test|_spec|\\.test|\\.spec)\\.(${ + extensions.join('|') + })$`, + verbose: debug, + transform: { + // neutrino.options.extensions should be used instead of + // neutrino.regexFromExtensions() because transformNames is used as a + // property name where a Regex object will cause issues. e.g.: + // https://github.com/mozilla-neutrino/neutrino-dev/issues/638. + [extensionsToNames(extensions)]: require.resolve('./transformer') + }, + globals: { + BABEL_OPTIONS: babelOptions + } + }); }); }; diff --git a/packages/jest/test/jest_test.js b/packages/jest/test/jest_test.js index 69e74701c..a0f9f683b 100644 --- a/packages/jest/test/jest_test.js +++ b/packages/jest/test/jest_test.js @@ -1,28 +1,60 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; +import neutrino from '../../neutrino'; const mw = () => require('..'); -test('loads preset', t => { +test('loads middleware', t => { t.notThrows(mw); }); -test('uses preset', t => { - const api = Neutrino(); +test('uses middleware', t => { + t.notThrows(() => { + const api = new Neutrino(); - t.notThrows(() => api.use(mw())); + api.config.mode('production'); + api.use(mw()); + }); }); -test('uses preset in test environment', t => { - const api = Neutrino({ env: { NODE_ENV: 'test' } }); +test('instantiates', t => { + const api = new Neutrino(); - t.notThrows(() => api.use(mw())); + api.config.mode('production'); + api.use(mw()); + + t.notThrows(() => api.config.toConfig()); }); -test('instantiates in test environment', t => { - const api = Neutrino({ env: { NODE_ENV: 'test' } }); +test('instantiates in development', t => { + const api = new Neutrino(); + api.config.mode('development'); api.use(mw()); t.notThrows(() => api.config.toConfig()); }); + +test('exposes jest output handler', t => { + const api = new Neutrino(); + + api.use(mw()); + + const handler = api.outputHandlers.get('jest'); + + t.is(typeof handler, 'function'); +}); + +test('exposes jest config from output', t => { + const config = neutrino(mw()).output('jest'); + + t.is(typeof config, 'object'); +}); + +test('exposes jest method', t => { + t.is(typeof neutrino(mw()).jest, 'function'); +}); + +test('exposes jest config from method', t => { + t.is(typeof neutrino(mw()).jest(), 'object'); +}); diff --git a/packages/karma/index.js b/packages/karma/index.js index ee4832724..e603555a0 100644 --- a/packages/karma/index.js +++ b/packages/karma/index.js @@ -1,80 +1,71 @@ -const { Server, constants: { LOG_DEBUG, LOG_INFO } } = require('karma'); +const { merge: babelMerge } = require('@neutrinojs/compile-loader'); +const loaderMerge = require('@neutrinojs/loader-merge'); const merge = require('deepmerge'); +const omit = require('lodash.omit'); const { join } = require('path'); -const { omit } = require('ramda'); -const loaderMerge = require('@neutrinojs/loader-merge'); -module.exports = (neutrino, opts = {}) => { - const tests = join(neutrino.options.tests, '**/*_test.js'); - const sources = join(neutrino.options.source, '**/*.js*'); - const defaults = { - plugins: [ - require.resolve('karma-webpack'), - require.resolve('karma-chrome-launcher'), - require.resolve('karma-coverage'), - require.resolve('karma-mocha'), - require.resolve('karma-mocha-reporter') - ], - basePath: neutrino.options.root, - logLevel: neutrino.options.debug ? LOG_DEBUG : LOG_INFO, - browsers: [process.env.CI ? 'ChromeCI' : 'ChromeHeadless'], - customLaunchers: { - ChromeCI: { - base: 'ChromeHeadless', - flags: ['--no-sandbox'] - } - }, - frameworks: ['mocha'], - files: [{ - pattern: tests, - watched: false, - included: true, - served: true - }], - preprocessors: { - [tests]: ['webpack'], - [sources]: ['webpack'] - }, - webpackMiddleware: { noInfo: true }, - reporters: ['mocha', 'coverage'], - coverageReporter: { - dir: '.coverage', - reporters: [ - { type: 'html', subdir: 'report-html' }, - { type: 'lcov', subdir: 'report-lcov' } - ] - } - }; - - if (neutrino.config.module.rules.has('compile')) { - neutrino.use(loaderMerge('compile', 'babel'), { - plugins: [require.resolve('babel-plugin-istanbul')] +module.exports = neutrino => { + if (neutrino.config.module.rules.has('lint')) { + neutrino.use(loaderMerge('lint', 'eslint'), { + envs: ['mocha'] }); } - neutrino.on('test', ({ files, watch }) => new Promise((resolve, reject) => { - const karmaOptions = merge.all([ - opts.override ? opts : merge(defaults, opts), - { - singleRun: !watch, - autoWatch: watch, - webpack: merge( - omit(['plugins'], neutrino.config.toConfig()), - // Work around `yarn test` hanging under webpack 4: - // https://github.com/webpack-contrib/karma-webpack/issues/322 - { - optimization: { - splitChunks: false, - runtimeChunk: false - } - } - ) - }, - files && files.length ? { files } : {} - ]); + neutrino.register('karma', (neutrino, override) => config => { + if (neutrino.config.module.rules.has('compile')) { + neutrino.config.module + .rule('compile') + .use('babel') + .tap(options => babelMerge(options, { + plugins: [require.resolve('babel-plugin-istanbul')] + })); + } + + const tests = join(neutrino.options.tests, '**/*_test.js'); + const sources = join(neutrino.options.source, '**/*.js*'); - const server = new Server(karmaOptions, exitCode => (exitCode !== 0 ? reject() : resolve())); + config.set({ + basePath: neutrino.options.root, + browsers: [process.env.CI ? 'ChromeCI' : 'ChromeHeadless'], + customLaunchers: { + ChromeCI: { + base: 'ChromeHeadless', + flags: ['--no-sandbox'] + } + }, + frameworks: ['mocha'], + files: [{ + pattern: tests, + watched: false, + included: true, + served: true + }], + preprocessors: { + [tests]: ['webpack'], + [sources]: ['webpack'] + }, + webpackMiddleware: { noInfo: true }, + webpack: merge( + omit(neutrino.config.toConfig(), ['plugins', 'entry']), + // Work around `yarn test` hanging under webpack 4: + // https://github.com/webpack-contrib/karma-webpack/issues/322 + { + optimization: { + splitChunks: false, + runtimeChunk: false + } + } + ), + reporters: ['mocha', 'coverage'], + coverageReporter: { + dir: '.coverage', + reporters: [ + { type: 'html', subdir: 'report-html' }, + { type: 'lcov', subdir: 'report-lcov' } + ] + } + }); - return server.start(); - })); + return override(config); + }); }; diff --git a/packages/karma/package.json b/packages/karma/package.json index ff7d22b40..b38589890 100644 --- a/packages/karma/package.json +++ b/packages/karma/package.json @@ -22,21 +22,22 @@ "yarn": ">=1.2.1" }, "dependencies": { + "@neutrinojs/compile-loader": "^8.2.0", "@neutrinojs/loader-merge": "^8.2.0", "babel-plugin-istanbul": "^4.1.6", "deepmerge": "^1.5.2", - "karma": "^2.0.2", - "karma-chrome-launcher": "^2.2.0", - "karma-coverage": "^1.1.2", - "karma-mocha": "^1.3.0", - "karma-mocha-reporter": "^2.2.5", - "karma-webpack": "^3.0.0", - "mocha": "^5.1.1", - "mocha-coverage-reporter": "^0.0.1", - "ramda": "^0.25.0", - "webpack": "^4.7.0" + "lodash.omit": "^4.5.0" }, "peerDependencies": { - "neutrino": "^8.0.0" + "karma": "^2.0.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-mocha": "^1.0.0", + "karma-mocha-reporter": "^2.0.0", + "karma-webpack": "^3.0.0", + "mocha": "^5.0.0", + "mocha-coverage-reporter": "*", + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/karma/test/karma_test.js b/packages/karma/test/karma_test.js index 885859131..de35a4e09 100644 --- a/packages/karma/test/karma_test.js +++ b/packages/karma/test/karma_test.js @@ -1,26 +1,68 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; +import neutrino from '../../neutrino'; const mw = () => require('..'); -test('loads preset', t => { +test('loads middleware', t => { t.notThrows(mw); }); -test('uses preset', t => { - t.notThrows(() => Neutrino().use(mw())); +test('uses middleware', t => { + t.notThrows(() => { + const api = new Neutrino(); + + api.config.mode('production'); + api.use(mw()); + }); }); -test('uses preset in test environment', t => { - const api = Neutrino({ env: { NODE_ENV: 'test' } }); +test('instantiates', t => { + const api = new Neutrino(); + + api.config.mode('production'); + api.use(mw()); - t.notThrows(() => api.use(mw())); + t.notThrows(() => api.config.toConfig()); }); -test('instantiates in test environment', t => { - const api = Neutrino({ env: { NODE_ENV: 'test' } }); +test('instantiates in development', t => { + const api = new Neutrino(); + api.config.mode('development'); api.use(mw()); t.notThrows(() => api.config.toConfig()); }); + +test('exposes karma output handler', t => { + const api = new Neutrino(); + + api.use(mw()); + + const handler = api.outputHandlers.get('karma'); + + t.is(typeof handler, 'function'); +}); + +test('exposes karma config from output', t => { + // Karma's config handler returns a function. + // Force evaluation by calling it. + const fakeKarma = new Map(); + const config = neutrino(mw()).output('karma')(fakeKarma); + + t.is(config, fakeKarma); +}); + +test('exposes karma method', t => { + t.is(typeof neutrino(mw()).karma, 'function'); +}); + +test('exposes karma config from method', t => { + // Karma's config handler returns a function. + // Force evaluation by calling it. + const fakeKarma = new Map(); + const config = neutrino(mw()).karma()(fakeKarma); + + t.is(config, fakeKarma); +}); diff --git a/packages/library/index.js b/packages/library/index.js index c8576e860..64fd71b52 100644 --- a/packages/library/index.js +++ b/packages/library/index.js @@ -69,10 +69,12 @@ module.exports = (neutrino, opts = {}) => { .keys(neutrino.options.mains) .forEach(key => neutrino.config.entry(key).add(neutrino.options.mains[key])); + const mode = neutrino.config.get('mode'); + neutrino.config - .mode(process.env.NODE_ENV === 'production' ? 'production' : 'development') .when(hasSourceMap, () => neutrino.use(banner)) .devtool('source-map') + .externals([nodeExternals()]) .target(options.target) .context(neutrino.options.root) .output @@ -135,7 +137,6 @@ module.exports = (neutrino, opts = {}) => { } }); }) - .when(process.env.NODE_ENV !== 'test', config => config.externals([nodeExternals()])) .when(neutrino.config.module.rules.has('lint'), () => { if (options.target === 'node') { neutrino.use(loaderMerge('lint', 'eslint'), { envs: ['commonjs'] }); @@ -143,7 +144,7 @@ module.exports = (neutrino, opts = {}) => { neutrino.use(loaderMerge('lint', 'eslint'), { envs: ['browser', 'commonjs'] }); } }) - .when(neutrino.options.command === 'build', (config) => { + .when(mode === 'production', (config) => { config.when(options.clean, () => neutrino.use(clean, options.clean)); }); }; diff --git a/packages/library/package.json b/packages/library/package.json index 24b1eb1a6..97e4b380f 100644 --- a/packages/library/package.json +++ b/packages/library/package.json @@ -38,11 +38,11 @@ "@neutrinojs/compile-loader": "^8.2.0", "@neutrinojs/loader-merge": "^8.2.0", "deepmerge": "^1.5.2", - "webpack": "^4.7.0", "webpack-node-externals": "^1.7.2", "worker-loader": "^1.1.1" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/library/test/library_test.js b/packages/library/test/library_test.js index e99f6fdd7..f7ed0375c 100644 --- a/packages/library/test/library_test.js +++ b/packages/library/test/library_test.js @@ -1,6 +1,6 @@ import test from 'ava'; import { validate } from 'webpack'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const expectedExtensions = ['.js', '.jsx', '.vue', '.ts', '.tsx', '.mjs', '.json']; @@ -9,23 +9,22 @@ test('loads preset', t => { }); test('uses preset', t => { - const api = Neutrino(); + const api = new Neutrino(); t.notThrows(() => api.use(require('..'), { name: 'alpha' })); }); test('throws when missing library name', t => { - const api = Neutrino(); + const api = new Neutrino(); const err = t.throws(() => api.use(require('..'))); t.true(err.message.includes('You must specify a library name')); }); test('valid preset production', t => { - const api = Neutrino({ - command: 'build', - env: { NODE_ENV: 'production' } - }); + const api = new Neutrino(); + + api.config.mode('production'); api.use(require('..'), { name: 'alpha' }); const config = api.config.toConfig(); @@ -45,33 +44,9 @@ test('valid preset production', t => { }); test('valid preset development', t => { - const api = Neutrino({ - command: 'start', - env: { NODE_ENV: 'development' } - }); - api.use(require('..'), { name: 'alpha' }); - const config = api.config.toConfig(); - - // Common - t.is(config.target, 'web'); - t.deepEqual(config.resolve.extensions, expectedExtensions); - t.is(config.optimization, undefined); - t.is(config.devServer, undefined); + const api = new Neutrino(); - // NODE_ENV/command specific - t.is(config.mode, 'development'); - t.is(config.devtool, 'source-map'); - t.not(config.externals, undefined); - - const errors = validate(config); - t.is(errors.length, 0); -}); - -test('valid preset test', t => { - const api = Neutrino({ - command: 'test', - env: { NODE_ENV: 'test' } - }); + api.config.mode('development'); api.use(require('..'), { name: 'alpha' }); const config = api.config.toConfig(); @@ -84,15 +59,16 @@ test('valid preset test', t => { // NODE_ENV/command specific t.is(config.mode, 'development'); t.is(config.devtool, 'source-map'); - t.is(config.externals, undefined); + t.not(config.externals, undefined); const errors = validate(config); t.is(errors.length, 0); }); test('valid preset Node.js target', t => { - const api = Neutrino({ 'env': { NODE_ENV: 'development' } }); + const api = new Neutrino(); + api.config.mode('development'); api.use(require('..'), { name: 'alpha', target: 'node' }); const errors = validate(api.config.toConfig()); @@ -101,8 +77,9 @@ test('valid preset Node.js target', t => { }); test('valid preset commonjs2 libraryTarget', t => { - const api = Neutrino({ 'env': { NODE_ENV: 'development' } }); + const api = new Neutrino(); + api.config.mode('development'); api.use(require('..'), { name: 'alpha', libraryTarget: 'commonjs2' }); const errors = validate(api.config.toConfig()); diff --git a/packages/loader-merge/test/middleware_test.js b/packages/loader-merge/test/middleware_test.js index 8615c1c0f..685f0cbdd 100644 --- a/packages/loader-merge/test/middleware_test.js +++ b/packages/loader-merge/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const options = { alpha: 'beta' }; @@ -8,7 +8,7 @@ test('loads middleware', t => { }); test('uses with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.config.module.rule('alpha').use('beta').options(options); @@ -16,7 +16,7 @@ test('uses with options', t => { }); test('throws without options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.config.module.rule('alpha').use('beta').options(options); @@ -24,7 +24,7 @@ test('throws without options', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.config.module.rule('alpha').use('beta').options(options); api.use(require('..')('alpha', 'beta'), options); diff --git a/packages/mocha/package.json b/packages/mocha/package.json index 337535956..7c27b8a20 100644 --- a/packages/mocha/package.json +++ b/packages/mocha/package.json @@ -20,13 +20,12 @@ "yarn": ">=1.2.1" }, "dependencies": { - "@babel/core": "^7.0.0-beta.46", - "@babel/plugin-transform-modules-commonjs": "^7.0.0-beta.46", - "@babel/register": "^7.0.0-beta.46", + "@babel/core": "^7.0.0-beta.47", + "@babel/plugin-transform-modules-commonjs": "^7.0.0-beta.47", + "@babel/register": "^7.0.0-beta.47", "@neutrinojs/loader-merge": "^8.2.0", - "change-case": "^3.0.2", - "mocha": "^5.1.1", - "ramda": "^0.25.0" + "babel-merge": "^1.1.1", + "lodash.omit": "^4.5.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/mocha/src/index.js b/packages/mocha/src/index.js index 1bd4305b8..3cc1e8e50 100644 --- a/packages/mocha/src/index.js +++ b/packages/mocha/src/index.js @@ -1,28 +1,32 @@ -const mocha = require('./mocha'); -const { omit } = require('ramda'); const loaderMerge = require('@neutrinojs/loader-merge'); +const merge = require('babel-merge'); +const omit = require('lodash.omit'); -module.exports = (neutrino, opts = {}) => { - neutrino.on('test', ({ files }) => { - const usingBabel = neutrino.config.module.rules.has('compile'); - const options = { - reporter: 'spec', - ui: 'tdd', - bail: true, - ...opts, - ...(files && files.length ? { recursive: true } : {}) - }; - - neutrino.config.when(usingBabel, () => { - neutrino.use(loaderMerge('compile', 'babel'), { - plugins: [require.resolve('@babel/plugin-transform-modules-commonjs')] - }); +module.exports = neutrino => { + if (neutrino.config.module.rules.has('lint')) { + neutrino.use(loaderMerge('lint', 'eslint'), { + envs: ['mocha'] }); + } - const babelOptions = usingBabel - ? omit(['cacheDirectory'], neutrino.config.module.rule('compile').use('babel').get('options')) + neutrino.register('mocha', (neutrino, override) => { + const baseOptions = neutrino.config.module.rules.has('compile') + ? neutrino.config.module.rule('compile').use('babel').get('options') : {}; + const options = omit( + merge( + baseOptions, + { + extensions: neutrino.options.extensions.map(ext => `.${ext}`), + plugins: [ + require.resolve('@babel/plugin-transform-modules-commonjs') + ] + } + ), + ['cacheDirectory'] + ); - return mocha(options, babelOptions, files); + // eslint-disable-next-line global-require + require('@babel/register')(override(options)); }); }; diff --git a/packages/mocha/src/mocha.js b/packages/mocha/src/mocha.js deleted file mode 100644 index af4ed85f1..000000000 --- a/packages/mocha/src/mocha.js +++ /dev/null @@ -1,30 +0,0 @@ -const { spawn } = require('child_process'); -const { paramCase } = require('change-case'); - -let proc; - -module.exports = (mochaOpts = {}, babelOpts = {}, files = []) => new Promise((resolve, reject) => { - if (proc) { - proc.kill(); - } - - process.env.NEUTRINO_BABEL_CONFIG = JSON.stringify(babelOpts); - - const argv = Object - .keys(mochaOpts) - .reduce((argv, key) => { - const value = mochaOpts[key]; - - return value === true ? - [...argv, `--${paramCase(key)}`] : - [...argv, `--${paramCase(key)}`, value]; - }, ['--require', require.resolve('./register')]); - - proc = spawn(process.execPath, [require.resolve('mocha/bin/mocha'), ...argv, ...files], { - cwd: process.cwd(), - env: process.env, - stdio: 'inherit' - }); - - proc.on('close', code => (code !== 0 ? reject() : resolve())); -}); diff --git a/packages/mocha/src/register.js b/packages/mocha/src/register.js deleted file mode 100644 index 056c9abf3..000000000 --- a/packages/mocha/src/register.js +++ /dev/null @@ -1,4 +0,0 @@ -// This registration runs in a separate process along with Mocha. -// This ensures that Mocha runs the test files with the same Babel -// configuration as the other webpack files -require('@babel/register')(JSON.parse(process.env.NEUTRINO_BABEL_CONFIG)); diff --git a/packages/mocha/test/mocha_test.js b/packages/mocha/test/mocha_test.js index 69e74701c..b7a7ea8bd 100644 --- a/packages/mocha/test/mocha_test.js +++ b/packages/mocha/test/mocha_test.js @@ -1,28 +1,50 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; +import neutrino from '../../neutrino'; const mw = () => require('..'); -test('loads preset', t => { +test('loads middleware', t => { t.notThrows(mw); }); -test('uses preset', t => { - const api = Neutrino(); +test('uses middleware', t => { + t.notThrows(() => { + const api = new Neutrino(); - t.notThrows(() => api.use(mw())); + api.config.mode('production'); + api.use(mw()); + }); }); -test('uses preset in test environment', t => { - const api = Neutrino({ env: { NODE_ENV: 'test' } }); +test('instantiates', t => { + const api = new Neutrino(); - t.notThrows(() => api.use(mw())); + api.config.mode('production'); + api.use(mw()); + + t.notThrows(() => api.config.toConfig()); }); -test('instantiates in test environment', t => { - const api = Neutrino({ env: { NODE_ENV: 'test' } }); +test('instantiates in development', t => { + const api = new Neutrino(); + api.config.mode('development'); api.use(mw()); t.notThrows(() => api.config.toConfig()); }); + +test('exposes mocha output handler', t => { + const api = new Neutrino(); + + api.use(mw()); + + const handler = api.outputHandlers.get('mocha'); + + t.is(typeof handler, 'function'); +}); + +test('exposes mocha method', t => { + t.is(typeof neutrino(mw()).mocha, 'function'); +}); diff --git a/packages/neutrino/Neutrino.js b/packages/neutrino/Neutrino.js new file mode 100644 index 000000000..df46b270a --- /dev/null +++ b/packages/neutrino/Neutrino.js @@ -0,0 +1,216 @@ +const clone = require('lodash.clonedeep'); +const Config = require('webpack-chain'); +const isPlainObject = require('is-plain-object'); +const merge = require('deepmerge'); +const { isAbsolute, join } = require('path'); +const { source } = require('./extensions'); + +const getRoot = ({ root }) => root; +const normalizePath = (base, path) => + (isAbsolute(path) ? path : join(base, path)); +const pathOptions = [ + ['root', '', () => process.cwd()], + ['source', 'src', getRoot], + ['output', 'build', getRoot], + ['tests', 'test', getRoot], + ['node_modules', 'node_modules', getRoot] +]; +const requireFromRoot = (moduleId, root) => { + const paths = [ + join(root, moduleId), + join(root, 'node_modules', moduleId), + moduleId + ]; + const path = paths.find(path => { + try { + require.resolve(path); + return true; + } catch (err) { + return path === paths[paths.length - 1]; + } + }); + + return require(path); // eslint-disable-line global-require +}; + +module.exports = class Neutrino { + constructor(options) { + this.options = this.getOptions(options); + this.config = new Config(); + this.outputHandlers = new Map(); + } + + getOptions(opts = {}) { + let moduleExtensions = new Set(source); + const options = clone(opts); + + if (!options.mains) { + Object.assign(options, { + mains: { + index: 'index' + } + }); + } + + pathOptions.forEach(([path, defaultValue, getNormalizeBase]) => { + let value = options[path] || defaultValue; + + Reflect.defineProperty(options, path, { + enumerable: true, + get() { + return normalizePath(getNormalizeBase(options), value); + }, + set(newValue) { + value = newValue || defaultValue; + } + }); + }); + + try { + // eslint-disable-next-line global-require + options.packageJson = require(join(options.root, 'package.json')); + } catch (err) { + options.packageJson = null; + } + + Object.defineProperty(options, 'extensions', { + enumerable: true, + get() { + return [...moduleExtensions]; + }, + set(extensions) { + moduleExtensions = new Set(extensions.map(ext => ext.replace('.', ''))); + } + }); + + this.bindMainsOnOptions(options); + + return options; + } + + mergeOptions(options, newOptions) { + const pathKeys = pathOptions.map(([path]) => path); + + Object + .keys(newOptions) + .forEach(key => { + if (key === 'mains') { + this.bindMainsOnOptions(newOptions, options); + Object.assign(options, { mains: newOptions.mains }); + return; + } + + const value = newOptions[key]; + + if (pathKeys.includes(key)) { + Object.assign(options, { [key]: value }); + return; + } + + // Only merge values if there is an existing value to merge with, + // and if the value types match, and if the value types are both + // objects or both arrays. Otherwise just replace the old value + // with the new value. + if ( + options[key] && + ( + Array.isArray(options[key]) && Array.isArray(value) || + isPlainObject(options[key]) && isPlainObject(value) + ) + ) { + Object.assign(options, { + [key]: merge(options[key], newOptions[key]) + }); + } else { + Object.assign(options, { [key]: newOptions[key] }); + } + }); + + return options; + } + + bindMainsOnOptions(options, optionsSource) { + Object + .keys(options.mains) + .forEach(key => { + let value = options.mains[key]; + + Reflect.defineProperty(options.mains, key, { + enumerable: true, + get() { + const source = optionsSource && + optionsSource.source || options.source; + + return normalizePath(source, value); + }, + set(newValue) { + value = newValue; + } + }); + }); + + this.mainsProxy = new Proxy(options.mains, { + defineProperty: (target, prop, { value }) => { + let currentValue = value; + + return Reflect.defineProperty(target, prop, { + enumerable: true, + get() { + const source = optionsSource && + optionsSource.source || options.source; + + return normalizePath(source, currentValue); + }, + set(newValue) { + currentValue = newValue; + } + }); + } + }); + } + + regexFromExtensions(extensions = this.options.extensions) { + const exts = extensions.map(ext => ext.replace('.', '\\.')); + + return new RegExp( + extensions.length === 1 ? + String.raw`\.${exts[0]}$` : + String.raw`\.(${exts.join('|')})$` + ); + } + + register(name, handler) { + this.outputHandlers.set(name, handler); + } + + use(middleware, options) { + if (typeof middleware === 'function') { + // If middleware is a function, invoke it with the provided options + middleware(this, options); + } else if (typeof middleware === 'string') { + // If middleware is a string, it's a module to require. + // Require it, then run the results back through .use() + // with the provided options + this.use(requireFromRoot(middleware, this.options.root), options); + } else if (Array.isArray(middleware)) { + // If middleware is an array, it's a pair of some other + // middleware type and options + this.use(...middleware); + } else if (isPlainObject(middleware)) { + // If middleware is an object, it could contain other middleware in + // its "use" property. Run every item in "use" prop back through .use(), + // plus set any options. + if (middleware.options) { + this.options = this.mergeOptions(this.options, middleware.options); + } + + if (middleware.use) { + if (Array.isArray(middleware.use)) { + middleware.use.map(usage => this.use(usage)); + } else { + this.use(middleware.use); + } + } + } + } +}; diff --git a/packages/neutrino/bin/base.js b/packages/neutrino/bin/base.js deleted file mode 100644 index 5e6dbf37a..000000000 --- a/packages/neutrino/bin/base.js +++ /dev/null @@ -1,84 +0,0 @@ -const merge = require('deepmerge'); -const yargs = require('yargs'); -const { Neutrino } = require('../src'); - -module.exports = ({ - cli, - middleware, - args, - NODE_ENV, - apiCommand = args._[0], - commandName = args._[0], - commandHandler, - errorsHandler, - successHandler -}) => { - const options = merge({ - args, - command: apiCommand, - debug: args.debug, - quiet: args.quiet, - env: { NODE_ENV } - }, args.options); - const api = Neutrino(options); - - middleware.forEach(middleware => api.use(middleware)); - - if (!apiCommand || args.help) { - Object - .keys(api.commands) - .forEach(command => { - switch (command) { - case 'start': - case 'test': - case 'build': { - return; - } - default: { - cli.command(command, api.commandDescriptions[command]); - } - } - }); - - yargs.showHelp(); - process.exit(1); - } - - api.register(commandName, commandHandler); - - api - .run(commandName) - .fork( - (errs) => { - const errors = Array.isArray(errs) ? errs : [errs]; - - if (errorsHandler) { - errorsHandler(errors); - } - - if (!args.quiet) { - errors.forEach((err) => { - if (!err) { - return; - } - - if (err.message && err.message.includes('No entry points found')) { - console.error([ - 'No entry points were found.', - 'Ensure that all intended middleware or presets are being used', - 'and at least one entry point is defined.', - 'You can inspect the final configuration with --inspect.' - ].join(' ')); - } else { - console.error(err); - } - }); - } - - process.exit(1); - }, - successHandler - ); - - return api; -}; diff --git a/packages/neutrino/bin/build.js b/packages/neutrino/bin/build.js deleted file mode 100644 index a6fd688a4..000000000 --- a/packages/neutrino/bin/build.js +++ /dev/null @@ -1,44 +0,0 @@ -const ora = require('ora'); -const { build } = require('../src'); -const base = require('./base'); - -module.exports = (middleware, args, cli) => { - const spinner = ora({ text: 'Building project' }); - - return base({ - cli, - middleware, - args, - NODE_ENV: 'production', - commandHandler: (config, neutrino) => { - if (!args.quiet) { - spinner.enabled = global.interactive; - spinner.start(); - } - - return build(config, neutrino); - }, - errorsHandler() { - if (!args.quiet) { - spinner.fail('Building project failed'); - } - }, - successHandler(stats) { - if (args.quiet) { - return; - } - - spinner.succeed('Building project completed'); - - if (stats) { - console.log(stats.toString({ - modules: false, - colors: true, - chunks: false, - children: false, - ...(stats.compilation.compiler.options.stats || {}) - })); - } - } - }); -}; diff --git a/packages/neutrino/bin/execute.js b/packages/neutrino/bin/execute.js deleted file mode 100644 index ada12afb9..000000000 --- a/packages/neutrino/bin/execute.js +++ /dev/null @@ -1,43 +0,0 @@ -const ora = require('ora'); -const base = require('./base'); - -module.exports = (middleware, args, cli) => { - const commandName = args._[0]; - const spinner = ora({ text: `Running ${commandName}` }); - - return base({ - cli, - middleware, - args, - NODE_ENV: 'production', - commandName: `${commandName}-cli`, - commandHandler(config, neutrino) { - if (!args.quiet) { - spinner.enabled = global.interactive; - spinner.start(); - } - - const command = neutrino.commands[commandName]; - - if (!command) { - throw new Error(`A command with the name "${commandName}" was not registered`); - } - - return command(config, neutrino); - }, - errorsHandler() { - if (!args.quiet) { - spinner.fail(`Running ${commandName} failed`); - } - }, - successHandler(output) { - if (!args.quiet) { - spinner.succeed(`Running ${commandName} completed`); - - if (output != null) { - console.log(output); - } - } - } - }); -}; diff --git a/packages/neutrino/bin/inspect.js b/packages/neutrino/bin/inspect.js deleted file mode 100644 index db43c365b..000000000 --- a/packages/neutrino/bin/inspect.js +++ /dev/null @@ -1,23 +0,0 @@ -const { defaultTo } = require('ramda'); -const { inspect } = require('../src'); -const base = require('./base'); - -const envs = { - build: 'production', - start: 'development', - test: 'test' -}; - -module.exports = (middleware, args, cli) => base({ - cli, - middleware, - args, - NODE_ENV: defaultTo('development', envs[args._[0]]), - commandHandler: inspect, - commandName: 'inspect', - successHandler(output) { - if (!args.quiet && output) { - console.log(output); - } - } -}); diff --git a/packages/neutrino/bin/neutrino.js b/packages/neutrino/bin/neutrino.js index 0f2176c96..42d8938f4 100755 --- a/packages/neutrino/bin/neutrino.js +++ b/packages/neutrino/bin/neutrino.js @@ -1,130 +1,9 @@ -#!/usr/bin/env node +#! /usr/bin/env node -// TODO: Remove this once babel-loader updates -// https://github.com/babel/babel-loader/pull/391 -process.noDeprecation = true; +console.error(` +The "neutrino" command has been removed starting with v9. +Please see the migration guide at https://neutrinojs.org/migration-guide +for details on upgrading your installation. +`); -const yargs = require('yargs'); -const { - cond, equals, map, omit, T -} = require('ramda'); -const build = require('./build'); -const inspect = require('./inspect'); -const start = require('./start'); -const test = require('./test'); -const execute = require('./execute'); -const { exists, req } = require('../src/utils'); - -const cwd = process.cwd(); -const cli = yargs - .usage('Usage: $0 [options]') - .help(false) - .option('help', { - description: 'Show help', - boolean: true, - default: false, - global: true - }) - .option('inspect', { - description: 'Output a string representation of the configuration used by webpack and exit', - boolean: true, - default: false, - global: true - }) - .option('use', { - description: 'A list of Neutrino middleware used to configure the build', - array: true, - default: [], - global: true - }) - .option('options', { - description: 'Set Neutrino options, config, and environment variables, e.g. --options.env.NODE_ENV production', - default: {}, - global: true - }) - .option('quiet', { - description: 'Disable console output of CLI commands', - boolean: true, - default: false, - global: true - }) - .option('debug', { - description: 'Run in debug mode', - boolean: true, - default: false, - global: true - }) - .option('require', { - description: 'Preload a module prior to loading Neutrino; can be used multiple times', - array: true, - default: [], - global: true - }) - .option('no-tty', { - description: 'Disable text terminal interactions', - boolean: true, - default: false, - global: true - }) - .command('start', 'Build a project in development mode') - .command('build', 'Compile the source directory to a bundled build') - .command('test [files..]', 'Run all suites from the test directory or provided files', { - coverage: { - description: 'Collect test coverage information and generate report', - boolean: true, - default: false - }, - watch: { - description: 'Watch source files for changes and re-run tests', - boolean: true, - default: false - } - }) - .wrap(null); -const args = cli.argv; -const command = args._[0]; -const rc = '.neutrinorc.js'; -const cmd = args.inspect ? 'inspect' : command; -const hasRc = exists(process.cwd(), rc); -const middleware = [...new Set(hasRc ? [rc] : args.use)]; - -if (!middleware.length) { - throw new Error('No middleware was found. Specify middleware with --use or create a .neutrinorc.js file.'); -} - -global.interactive = !args.noTty && (process.stderr && process.stderr.isTTY) && !process.env.CI; - -// Merge CLI config options as last piece of middleware, e.g. options.config.devServer.port 4000 -if (args.options) { - middleware.push({ - options: omit(['config'], args.options), - use: args.options.config && (({ config }) => { - config.merge(args.options.config) - }) - }); -} - -process.on('unhandledRejection', (err) => { - if (!args.quiet) { - console.error(''); - console.error(err); - } - - process.exit(1); -}); - -const promises = map((moduleId) => { - const module = req(moduleId, cwd); - - return typeof module === 'function' ? module() : module; -}, args.require); - -Promise - .all(promises) - .then(() => cond([ - [equals('build'), () => build(middleware, args, cli)], - [equals('start'), () => start(middleware, args, cli)], - [equals('test'), () => test(middleware, args, cli)], - [equals('inspect'), () => inspect(middleware, args, cli)], - [T, () => execute(middleware, args, cli)] - ])(cmd)); +process.exit(1); diff --git a/packages/neutrino/bin/start.js b/packages/neutrino/bin/start.js deleted file mode 100644 index 1cfc9362b..000000000 --- a/packages/neutrino/bin/start.js +++ /dev/null @@ -1,64 +0,0 @@ -const ora = require('ora'); -const { start } = require('../src'); -const base = require('./base'); - -module.exports = (middleware, args, cli) => { - const spinner = ora({ text: 'Building project' }); - - return base({ - cli, - middleware, - args, - NODE_ENV: 'development', - commandHandler(config, neutrino) { - if (!args.start) { - spinner.enabled = global.interactive; - spinner.start(); - } - - return start(config, neutrino); - }, - errorsHandler() { - spinner.fail('Building project failed'); - }, - successHandler(compiler) { - if (args.quiet || !compiler) { - return; - } - - if (!compiler.options.devServer) { - spinner.succeed('Build completed'); - - const building = ora({ - text: 'Performing initial build', - enabled: global.interactive - }); - - compiler.plugin('done', () => { - building.succeed('Build completed'); - }); - compiler.plugin('compile', () => { - building.text = 'Source changed, re-compiling'; - building.start(); - }); - } else { - const { devServer } = compiler.options; - const url = `${devServer.https ? 'https' : 'http'}://${devServer.public}`; - const building = ora({ - text: 'Waiting for initial build to finish', - enabled: global.interactive - }); - - spinner.succeed(`Development server running on: ${url}`); - building.start(); - compiler.plugin('done', () => { - building.succeed('Build completed'); - }); - compiler.plugin('compile', () => { - building.text = 'Source changed, re-compiling'; - building.start(); - }); - } - } - }); -}; diff --git a/packages/neutrino/bin/test.js b/packages/neutrino/bin/test.js deleted file mode 100644 index 8bf6dab42..000000000 --- a/packages/neutrino/bin/test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { test } = require('../src'); -const base = require('./base'); - -module.exports = (middleware, args, cli) => base({ - cli, - middleware, - args, - NODE_ENV: 'test', - commandHandler: test, - successHandler() { - // Some test runners do not cleanly exit after resolving their promise. - // Force exit once we get here. - process.exit(0); - } -}); diff --git a/packages/neutrino/extensions.js b/packages/neutrino/extensions.js new file mode 100644 index 000000000..6675c2fa2 --- /dev/null +++ b/packages/neutrino/extensions.js @@ -0,0 +1,24 @@ +module.exports = { + source: ['js', 'jsx', 'vue', 'ts', 'tsx', 'mjs'], + style: ['css', 'less', 'sass', 'scss'], + media: [ + 'jpg', + 'jpeg', + 'png', + 'gif', + 'eot', + 'otf', + 'webp', + 'svg', + 'ttf', + 'woff', + 'woff2', + 'mp4', + 'webm', + 'wav', + 'mp3', + 'm4a', + 'aac', + 'oga' + ] +}; diff --git a/packages/neutrino/index.js b/packages/neutrino/index.js new file mode 100644 index 000000000..d671ebc5e --- /dev/null +++ b/packages/neutrino/index.js @@ -0,0 +1,44 @@ +const stringify = require('javascript-stringify'); +const sort = require('deep-sort-object'); +const yargs = require('yargs'); +const Neutrino = require('./Neutrino'); +const webpack = require('./webpack'); + +const IDENTITY = a => a; + +module.exports = (middleware = { use: ['.neutrinorc.js'] }, options = {}) => { + const neutrino = new Neutrino(options); + const args = yargs.parse(process.argv); + + neutrino.config.mode(args.mode || 'production'); + neutrino.register('webpack', webpack); + + if (middleware) { + neutrino.use(middleware); + } + + const adapter = { + output(name, override = IDENTITY) { + if (name === 'inspect') { + console.log(stringify(sort(neutrino.config.toConfig()))); + process.exit(); + } + + const handler = neutrino.outputHandlers.get(name); + + if (!handler) { + throw new Error(`Unable to find an output handler named "${name}"`); + } + + return handler(neutrino, override); + } + }; + + return new Proxy(adapter, { + get(object, property) { + return property === 'output' + ? Reflect.get(object, property) + : Reflect.get(object, 'output').bind(object, property); + } + }); +}; diff --git a/packages/neutrino/package.json b/packages/neutrino/package.json index 843acebc4..3dd9b2975 100644 --- a/packages/neutrino/package.json +++ b/packages/neutrino/package.json @@ -2,16 +2,14 @@ "name": "neutrino", "version": "8.2.0", "description": "Create and build JS applications with managed configurations", - "main": "src/index.js", + "main": "index.js", "bin": { - "neutrino": "./bin/neutrino.js" + "neutrino": "bin/neutrino.js" }, "keywords": [ "neutrino", "webpack", - "babel", - "neutrino-cli", - "neutrino-api" + "babel" ], "author": "Eli Perelman ", "license": "MPL-2.0", @@ -29,16 +27,10 @@ "dependencies": { "deep-sort-object": "^1.0.2", "deepmerge": "^1.5.2", - "fluture": "^8.0.2", - "immutable": "^3.8.2", - "immutable-ext": "^1.1.5", + "is-plain-object": "^2.0.4", "javascript-stringify": "^1.6.0", - "mitt": "^1.1.3", - "ora": "^2.1.0", - "ramda": "^0.25.0", - "webpack": "^4.7.0", + "lodash.clonedeep": "^4.5.0", "webpack-chain": "^4.6.0", - "webpack-dev-server": "^3.1.4", "yargs": "^11.0.0" } } diff --git a/packages/neutrino/src/api.js b/packages/neutrino/src/api.js deleted file mode 100644 index e51496c38..000000000 --- a/packages/neutrino/src/api.js +++ /dev/null @@ -1,305 +0,0 @@ -const Config = require('webpack-chain'); -const merge = require('deepmerge'); -const Future = require('fluture'); -const mitt = require('mitt'); -const { join } = require('path'); -const { - defaultTo, is, map, omit, replace -} = require('ramda'); -const { normalizePath, toArray, req, pathOptions } = require('./utils'); - -class Api { - constructor(options) { - this.options = this.getOptions(options); - this.listeners = {}; - this.emitter = mitt(this.listeners); - this.commands = {}; - this.commandDescriptions = {}; - this.config = new Config(); - } - - // getOptions :: Object? -> IO Object - getOptions(opts = {}) { - let moduleExtensions = new Set(['js', 'jsx', 'vue', 'ts', 'tsx', 'mjs']); - const options = merge.all([ - { - env: { - NODE_ENV: 'development' - }, - debug: false, - quiet: false - }, - opts.mains ? { mains: opts.mains } : { mains: { index: 'index' } }, - omit(['mains'], opts) - ]); - - Object - .keys(options.env) - .forEach(env => process.env[env] = options.env[env]); - - pathOptions.forEach(([path, defaultValue, getNormalizeBase]) => { - let value = defaultTo(defaultValue, options[path]); - - Object.defineProperty(options, path, { - enumerable: true, - get() { - return normalizePath(getNormalizeBase(options), value); - }, - set(newValue) { - value = defaultTo(defaultValue, newValue); - } - }); - }); - - try { - options.packageJson = require(join(options.root, 'package.json')); // eslint-disable-line global-require - } catch (err) { - options.packageJson = null; - } - - Object.defineProperty(options, 'extensions', { - enumerable: true, - get() { - return [...moduleExtensions]; - }, - set(extensions) { - moduleExtensions = new Set(extensions.map(replace('.', ''))); - } - }); - - this.bindMainsOnOptions(options); - - return options; - } - - // mergeOptions :: (Object -> Object) -> Object - mergeOptions(options, newOptions) { - /* eslint-disable no-param-reassign */ - const paths = pathOptions.map(([path]) => path); - - Object - .keys(newOptions) - .forEach((key) => { - if (key === 'mains') { - this.bindMainsOnOptions(newOptions, options); - options.mains = newOptions.mains; - return; - } - - const value = newOptions[key]; - - if (paths.includes(key)) { - options[key] = value; - return; - } - - // Only merge values if there is an existing value to merge with, - // and if the value types match, and if the value types are both - // objects or both arrays. Otherwise just replace the old value - // with the new value. - if ( - options[key] && - ( - is(Object, options[key]) && is(Object, value) || - is(Array, options[key]) && is(Array, value) - ) - ) { - options[key] = merge(options[key], newOptions[key]); - } else { - options[key] = newOptions[key]; - } - }); - - /* eslint-enable no-param-reassign */ - return options; - } - - // bindMainsOnOptions :: (Object options -> Object? optionsSource) -> IO () - bindMainsOnOptions(options, optionsSource) { - Object - .keys(options.mains) - .forEach(key => { - let value = options.mains[key]; - - Object.defineProperty(options.mains, key, { - enumerable: true, - get() { - const source = optionsSource && optionsSource.source || options.source; - - return normalizePath(source, value); - }, - set(newValue) { - value = newValue; - } - }); - }); - - this.mainsProxy = new Proxy(options.mains, { - defineProperty: (target, prop, { value }) => { - let currentValue = value; - - return Reflect.defineProperty(target, prop, { - enumerable: true, - get() { - const source = optionsSource && optionsSource.source || options.source; - - return normalizePath(source, currentValue); - }, - set(newValue) { - currentValue = newValue; - } - }); - } - }); - } - - // regexFromExtensions :: Array extensions -> RegExp - regexFromExtensions(extensions = this.options.extensions) { - const exts = extensions.map(ext => ext.replace('.', '\\.')); - - return new RegExp( - extensions.length === 1 ? - String.raw`\.${exts[0]}$` : - String.raw`\.(${exts.join('|')})$` - ); - } - - // emit :: Any -> IO - emit(...args) { - return this.emitter.emit(...args); - } - - // emit :: Any -> IO - on(...args) { - return this.emitter.on(...args); - } - - // emit :: Any -> IO - off(...args) { - return this.emitter.off(...args); - } - - // emitForAll :: String eventName -> Any payload -> Promise - emitForAll(eventName, payload) { - return Promise.all([ - ...(this.listeners[eventName] || []).map(f => f(payload)), - ...(this.listeners['*'] || []).map(f => f(eventName, payload)) - ]); - } - - // register :: (String commandName -> Function handler -> String? description) -> Api - register(commandName, handler, description = '') { - this.commands[commandName] = handler; - this.commandDescriptions[commandName] = description; - return this; - } - - // require :: String moduleId -> Any - require(moduleId, root = this.options.root) { - return req(moduleId, root); - } - - // use :: Any middleware -> Object options -> IO Api - use(middleware, options) { - if (is(Function, middleware)) { - // If middleware is a function, invoke it with the provided options - middleware(this, options); - } else if (is(String, middleware)) { - // If middleware is a string, it's a module to require. Require it, then run the results back - // through .use() with the provided options - this.use(this.require(middleware, this.options.root), options); - } else if (is(Array, middleware)) { - // If middleware is an array, it's a pair of some other middleware type and options - this.use(...middleware); - } else if (is(Object, middleware)) { - // If middleware is an object, it could contain other middleware in its "use" property. - // Run every item in "use" prop back through .use(), plus set any options. - // The value of "env" will also be consumed as middleware, which will potentially load more middleware and - // options - if (middleware.options) { - this.options = this.mergeOptions(this.options, middleware.options); - } - - if (middleware.env) { - const envMiddleware = Object - .keys(middleware.env) - .map((key) => { - const envValue = this.options.env[key] || process.env[key]; - const env = middleware.env[key][envValue]; - - if (!env) { - return null; - } - - if (!is(Object, env) || !env.options) { - return env; - } - - this.options = this.mergeOptions(this.options, env.options); - - return omit(['options'], env); - }); - - if (Array.isArray(middleware.use)) { - map(use => this.use(use), middleware.use); - } else { - this.use(middleware.use); - } - - map(env => this.use(env), envMiddleware.filter(Boolean)); - } else if (middleware.use) { - if (Array.isArray(middleware.use)) { - map(use => this.use(use), middleware.use); - } else { - this.use(middleware.use); - } - } - } - - return this; - } - - // call :: String commandName -> IO Any - call(commandName) { - const command = this.commands[commandName]; - - if (!command) { - throw new Error(`A command with the name "${commandName}" was not registered`); - } - - return command(this.config.toConfig(), this); - } - - // run :: String commandName -> Future - run(commandName) { - const emitForAll = this.emitForAll.bind(this); - - return Future((reject, resolve) => (this.commands[commandName] ? - resolve() : - reject(new Error(`A command with the name "${commandName}" was not registered`)) - )) - // Trigger all pre-events for the current command - .chain(() => Future.encaseP2(emitForAll, `pre${commandName}`, this.options.args)) - // Trigger generic pre-event - .chain(() => Future.encaseP2(emitForAll, 'prerun', this.options.args)) - // Execute the command - .chain(() => { - const result = this.commands[commandName](this.config.toConfig(), this); - - return Future.isFuture(result) ? - result : - Future.tryP(() => Promise.resolve().then(() => result)); - }) - // Trigger all post-command events, resolving with the value of the command execution - .chain(value => Future - .encaseP2(emitForAll, commandName, this.options.args) - .chain(() => Future.of(value))) - // Trigger generic post-event, resolving with the value of the command execution - .chain(value => Future - .encaseP2(emitForAll, 'run', this.options.args) - .chain(() => Future.of(value))) - .mapRej(toArray); - } -} - -module.exports = options => new Api(options); diff --git a/packages/neutrino/src/build.js b/packages/neutrino/src/build.js deleted file mode 100644 index bfe8d335c..000000000 --- a/packages/neutrino/src/build.js +++ /dev/null @@ -1,10 +0,0 @@ -const Future = require('fluture'); -const { compile, validate } = require('./webpack'); - -// build :: Object config -> Future (Array Error) Function -const build = config => Future - .of(config) - .chain(validate) - .chain(compile); - -module.exports = build; diff --git a/packages/neutrino/src/devServer.js b/packages/neutrino/src/devServer.js deleted file mode 100644 index f25af12bd..000000000 --- a/packages/neutrino/src/devServer.js +++ /dev/null @@ -1,11 +0,0 @@ -const merge = require('deepmerge'); -const Future = require('fluture'); -const { serve, validate } = require('./webpack'); - -// devServer :: (Object config -> Object api) -> Future () Function -const devServer = (config, { options }) => Future - .of(merge({ devServer: { host: 'localhost', port: 5000, noInfo: !options.debug } }, config)) - .chain(validate) - .chain(serve); - -module.exports = devServer; diff --git a/packages/neutrino/src/index.js b/packages/neutrino/src/index.js deleted file mode 100644 index 22ac44c9c..000000000 --- a/packages/neutrino/src/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const Neutrino = require('./api'); -const build = require('./build'); -const start = require('./start'); -const test = require('./test'); -const inspect = require('./inspect'); - -module.exports = { - Neutrino, - build, - start, - test, - inspect(args) { - return args.customInspect ? this : inspect(args); - } -}; diff --git a/packages/neutrino/src/inspect.js b/packages/neutrino/src/inspect.js deleted file mode 100644 index b178b3848..000000000 --- a/packages/neutrino/src/inspect.js +++ /dev/null @@ -1,9 +0,0 @@ -const Future = require('fluture'); -const stringify = require('javascript-stringify'); -const sort = require('deep-sort-object'); -const { partialRight, pipe } = require('ramda'); - -// inspect :: Object config -> Future () String -const inspect = pipe(sort, partialRight(stringify, [null, 2]), Future.of); - -module.exports = inspect; diff --git a/packages/neutrino/src/start.js b/packages/neutrino/src/start.js deleted file mode 100644 index b2550ecd3..000000000 --- a/packages/neutrino/src/start.js +++ /dev/null @@ -1,6 +0,0 @@ -const { ifElse, propSatisfies } = require('ramda'); -const devServer = require('./devServer'); -const watch = require('./watch'); - -// start :: Object options -> Future (Array Error) Function -module.exports = ifElse(propSatisfies(Boolean, 'devServer'), devServer, watch); diff --git a/packages/neutrino/src/test.js b/packages/neutrino/src/test.js deleted file mode 100644 index 5a8c38a9e..000000000 --- a/packages/neutrino/src/test.js +++ /dev/null @@ -1,5 +0,0 @@ -const Future = require('fluture'); -const { identity } = require('ramda'); - -// test :: Object options -> Future () Function -module.exports = () => Future.of(identity); diff --git a/packages/neutrino/src/utils.js b/packages/neutrino/src/utils.js deleted file mode 100644 index 9207b5318..000000000 --- a/packages/neutrino/src/utils.js +++ /dev/null @@ -1,72 +0,0 @@ -const { - cond, curry, identity, of, prop, T -} = require('ramda'); -const { List } = require('immutable-ext'); -const { isAbsolute, join } = require('path'); - -// createPaths :: (String -> String) -> List String -const createPaths = curry((root, moduleId) => List.of( - join(root, moduleId), - join(root, 'node_modules', moduleId), - moduleId -)); - -// exists :: (String -> String) -> Boolean -const exists = (root, module) => { - try { - require.resolve(join(root, module)); - return true; - } catch (err) { - return false; - } -}; - -// normalize :: String base -> String path -> String -const normalizePath = curry((base, path) => (isAbsolute(path) ? path : join(base, path))); - -// toArray :: a -> Array -const toArray = cond([ - [Array.isArray, identity], - [T, of] -]); - -// req :: String moduleId -> a -const req = (moduleId, root) => { - const paths = createPaths(root, moduleId); - const path = paths.find((path) => { - try { - require.resolve(path); - return true; - } catch (err) { - return path === paths.last(); - } - }); - - return require(path); // eslint-disable-line -}; - -// getRoot :: Object -> String -const getRoot = prop('root'); - -// getSource :: Object -> String -const getSource = prop('source'); - -// [PATH_PROP_NAME, DEFAULT_VALUE, GET_NORMALIZE_BASE] -const pathOptions = [ - ['root', '', () => process.cwd()], - ['source', 'src', getRoot], - ['output', 'build', getRoot], - ['tests', 'test', getRoot], - ['node_modules', 'node_modules', getRoot] -]; - -module.exports = { - createPaths, - exists, - normalizePath, - toArray, - req, - getRoot, - getSource, - pathOptions -}; diff --git a/packages/neutrino/src/watch.js b/packages/neutrino/src/watch.js deleted file mode 100644 index 09dfdc940..000000000 --- a/packages/neutrino/src/watch.js +++ /dev/null @@ -1,10 +0,0 @@ -const Future = require('fluture'); -const { watcher, validate } = require('./webpack'); - -// watch :: Object config -> Future (Array Error) () -const watch = config => Future - .of(config) - .chain(validate) - .chain(watcher); - -module.exports = watch; diff --git a/packages/neutrino/src/webpack.js b/packages/neutrino/src/webpack.js deleted file mode 100644 index f75e85dfa..000000000 --- a/packages/neutrino/src/webpack.js +++ /dev/null @@ -1,74 +0,0 @@ -const Future = require('fluture'); -const { isEmpty, pathOr, pipe } = require('ramda'); -const webpack = require('webpack'); -const DevServer = require('webpack-dev-server'); -const { toArray } = require('./utils'); - -// errors :: (Error|Array Error err -> Object stats) -> Array Error -const getErrors = (err, stats) => (err ? toArray(err) : stats.toJson().errors); - -// compiler :: Object config -> Future Error Object -const compiler = pipe(Future.of, Future.ap(Future.of(webpack))); - -// compile :: Object config -> Future Error Object -const compile = pipe( - compiler, - Future.chain(compiler => Future((reject, resolve) => { - compiler.run((err, stats) => { - const errors = getErrors(err, stats); - - isEmpty(errors) ? resolve(stats) : reject(errors); - }); - })) -); - -// devServer :: Object config -> Future Error Object -const devServer = pipe( - compiler, - Future.map(compiler => Object.assign(new DevServer(compiler, compiler.options.devServer), { compiler })) -); - -// serve :: Object config -> Future Error Object -const serve = pipe( - devServer, - Future.chain(server => Future((reject, resolve) => { - const { compiler } = server; - const { host, port } = compiler.options.devServer; - - server.listen(port, host, () => resolve(compiler)); - })) -); - -// validator :: Object config -> Future Error Object -const validator = pipe(Future.of, Future.ap(Future.of(webpack.validate))); - -// validate :: Object config -> Future Error Object -const validate = config => validator(config) - .chain(errors => (isEmpty(errors) ? - Future.of(config) : - Future.reject([new webpack.WebpackOptionsValidationError(errors)]))); - -// watch :: Object config -> Future Error Object -const watcher = pipe( - compiler, - Future.chain(compiler => Future((reject, resolve) => { - const watchOptions = pathOr({}, ['options', 'watchOptions'], compiler); - - compiler.watch(watchOptions, (err, stats) => { - const errors = getErrors(err, stats); - - isEmpty(errors) ? resolve(compiler) : reject(errors); - }); - })) -); - -module.exports = { - getErrors, - compiler, - compile, - devServer, - serve, - validator, - validate, - watcher -}; diff --git a/packages/neutrino/test/api_test.js b/packages/neutrino/test/api_test.js index 4f9dc21ad..be70355fc 100644 --- a/packages/neutrino/test/api_test.js +++ b/packages/neutrino/test/api_test.js @@ -1,18 +1,18 @@ import test from 'ava'; -import { Neutrino, build } from '../src'; import { join } from 'path'; +import Neutrino from '../Neutrino'; test('initializes with no arguments', t => { - t.notThrows(() => Neutrino()); + t.notThrows(() => new Neutrino()); }); test('initializes with options', t => { - t.notThrows(() => Neutrino({ testing: true })); + t.notThrows(() => new Neutrino({ testing: true })); }); test('initialization stores options', t => { const options = { alpha: 'a', beta: 'b', gamma: 'c' }; - const api = Neutrino(options); + const api = new Neutrino(options); t.is(api.options.alpha, options.alpha); t.is(api.options.beta, options.beta); @@ -21,7 +21,7 @@ test('initialization stores options', t => { test('merges custom primitive option properties', t => { const options = { alpha: 'a', beta: {}, gamma: 4, delta: [] }; - const api = Neutrino(options); + const api = new Neutrino(options); api.options = api.mergeOptions(api.options, { alpha: 'd', beta: 3, gamma: /.*/, delta: true }); @@ -32,7 +32,7 @@ test('merges custom primitive option properties', t => { }); test('options.root', t => { - const api = Neutrino(); + const api = new Neutrino(); t.is(api.options.root, process.cwd()); api.options.root = './alpha'; @@ -42,7 +42,7 @@ test('options.root', t => { }); test('options.source', t => { - const api = Neutrino(); + const api = new Neutrino(); t.is(api.options.source, join(process.cwd(), 'src')); api.options.source = './alpha'; @@ -54,7 +54,7 @@ test('options.source', t => { }); test('options.output', t => { - const api = Neutrino(); + const api = new Neutrino(); t.is(api.options.output, join(process.cwd(), 'build')); api.options.output = './alpha'; @@ -66,7 +66,7 @@ test('options.output', t => { }); test('options.tests', t => { - const api = Neutrino(); + const api = new Neutrino(); t.is(api.options.tests, join(process.cwd(), 'test')); api.options.tests = './alpha'; @@ -78,7 +78,7 @@ test('options.tests', t => { }); test('options.node_modules', t => { - const api = Neutrino(); + const api = new Neutrino(); t.is(api.options.node_modules, join(process.cwd(), 'node_modules')); api.options.node_modules = './alpha'; @@ -90,7 +90,7 @@ test('options.node_modules', t => { }); test('options.mains', t => { - const api = Neutrino(); + const api = new Neutrino(); t.is(api.options.mains.index, join(process.cwd(), 'src/index')); api.options.mains.index = './alpha.js'; @@ -104,7 +104,7 @@ test('options.mains', t => { }); test('override options.mains', t => { - const api = Neutrino({ + const api = new Neutrino({ mains: { alpha: 'beta', gamma: 'delta' @@ -133,17 +133,17 @@ test('override options.mains', t => { }); test('creates an instance of webpack-chain', t => { - t.is(typeof Neutrino().config.toConfig, 'function'); + t.is(typeof new Neutrino().config.toConfig, 'function'); }); test('middleware receives API instance', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(n => t.is(n, api)); }); test('middleware receives no default options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use((api, options) => { t.is(options, undefined); @@ -151,7 +151,7 @@ test('middleware receives no default options', t => { }); test('middleware receives options parameter', t => { - const api = Neutrino(); + const api = new Neutrino(); const defaults = { alpha: 'a', beta: 'b', gamma: 'c' }; api.use((api, options) => { @@ -159,109 +159,27 @@ test('middleware receives options parameter', t => { }, defaults); }); -test('triggers promisified event handlers', t => { - const api = Neutrino(); - - api.on('test', () => t.pass('test event triggered')); - api.emitForAll('test'); -}); - -test('events handle promise resolution', async t => { - const api = Neutrino(); - - api.on('test', () => Promise.resolve('alpha')); - - const [value] = await api.emitForAll('test'); - - t.is(value, 'alpha'); -}); - -test('events handle promise rejection', async t => { - const api = Neutrino(); - - api.on('test', () => Promise.reject(new Error('beta'))); - - const err = await t.throws(api.emitForAll('test')); - - t.is(err.message, 'beta'); -}); - -test('events handle multiple promise resolutions', async t => { - const api = Neutrino(); - - api.on('test', () => Promise.resolve('alpha')); - api.on('test', () => Promise.resolve('beta')); - api.on('test', () => Promise.resolve('gamma')); - - const values = await api.emitForAll('test'); - - t.deepEqual(values, ['alpha', 'beta', 'gamma']); -}); - test('import middleware for use', async (t) => { - const api = Neutrino({ root: __dirname }); + const api = new Neutrino({ root: __dirname }); api.use(['fixtures/middleware']); t.notDeepEqual(api.config.toConfig(), {}); }); -test('command emits events around execution', async (t) => { - const api = Neutrino(); - const events = []; - - api.on('prebuild', () => events.push('alpha')); - api.on('build', () => events.push('beta')); - - await api.emitForAll('prebuild'); - await api.emitForAll('build'); - - t.deepEqual(events, ['alpha', 'beta']); -}); - -test('sets environment variables from options', t => { - Neutrino({ - env: { NODE_ENV: 'production', ALPHA: 'beta' } - }); - - t.is(process.env.NODE_ENV, 'production'); - t.is(process.env.ALPHA, 'beta'); -}); - test('creates a webpack config', t => { - const api = Neutrino(); + const api = new Neutrino(); - api.use(api => api.config.module - .rule('compile') - .test(api.regexFromExtensions(['js']))); + api.use(api => { + api.config.module + .rule('compile') + .test(api.regexFromExtensions(['js'])) + }); t.notDeepEqual(api.config.toConfig(), {}); }); -test('throws when trying to call() a non-registered command', t => { - const api = Neutrino(); - - const err = t.throws(() => api.call('non-registered')); - - t.true(err.message.includes('was not registered')); -}); - -test('fails when trying to run() a non-registered command', async t => { - await t.throws(Neutrino().run('non-registered').promise()); -}); - -test('throws when trying to validate config with non-existent entry point', async t => { - const api = Neutrino(); - - api.register('build', build); - const result = api.run('build').promise(); - - const [err] = await t.throws(result); - - t.true(err.includes(`Entry module not found: Error: Can't resolve './src'`)); -}); - test('regexFromExtensions', t => { - const api = Neutrino(); + const api = new Neutrino(); t.is(String(api.regexFromExtensions(['js'])), '/\\.js$/'); t.is(String(api.regexFromExtensions(['js', 'css'])), '/\\.(js|css)$/'); diff --git a/packages/neutrino/test/package_test.js b/packages/neutrino/test/package_test.js new file mode 100644 index 000000000..a0a40bb70 --- /dev/null +++ b/packages/neutrino/test/package_test.js @@ -0,0 +1,59 @@ +import test from 'ava'; +import Neutrino from '../Neutrino'; +import neutrino from '..'; + +test('throws when vendor entrypoint defined', t => { + const err = t.throws(() => { + const webpackConfig = neutrino(neutrino => { + neutrino.config.entry('vendor').add('lodash'); + }).output('webpack'); + + // webpackConfig is a function that is called by webpack, + // so we need to call it to force its evaluation + webpackConfig(); + }); + + t.true(err.message.includes('Remove the manual `vendor` entrypoint')); +}); + +test('throws when trying to use a non-registered output', t => { + const err = t.throws(() => + neutrino(Function.prototype).output('fake') + ); + + t.true(err.message.includes('Unable to find an output handler')); +}); + +test('throws when trying to use a non-registered proxied method', t => { + const err = t.throws(() => + neutrino(Function.prototype).fake() + ); + + t.true(err.message.includes('Unable to find an output handler')); +}); + +test('exposes webpack output handler', t => { + t.notThrows(() => + neutrino(Function.prototype).output('webpack') + ); +}); + +test('exposes webpack config from output', t => { + // The webpack handler returns a function to be used by webpack-cli + // and webpack-command. Force evaluation by calling this function. + const handler = neutrino(Function.prototype).output('webpack'); + + t.is(typeof handler(), 'object'); +}); + +test('exposes webpack method', t => { + t.is(typeof neutrino(Function.prototype).webpack, 'function'); +}); + +test('exposes webpack config from method', t => { + // The webpack handler returns a function to be used by webpack-cli + // and webpack-command. Force evaluation by calling this function. + const handler = neutrino(Function.prototype).webpack(); + + t.is(typeof handler(), 'object'); +}); diff --git a/packages/neutrino/test/require_test.js b/packages/neutrino/test/require_test.js index 04ab8c74b..9c6073d63 100644 --- a/packages/neutrino/test/require_test.js +++ b/packages/neutrino/test/require_test.js @@ -1,8 +1,7 @@ import { join } from 'path'; import test from 'ava'; -import { Neutrino } from '../src'; +import Neutrino from '../Neutrino'; -const cwd = process.cwd(); const testModulePath = join(__dirname, 'fixtures', 'test-module'); test.before(t => { @@ -10,17 +9,17 @@ test.before(t => { }); test('requires middleware relative to root', t => { - t.notThrows(() => Neutrino().use('middleware')); + t.notThrows(() => new Neutrino().use('middleware')); }); test('requires middleware from root/node_modules', t => { - t.notThrows(() => Neutrino().use('alpha')); + t.notThrows(() => new Neutrino().use('alpha')); }); test('forks with error middleware contains error', (t) => { - t.throws(() => Neutrino().use('errorMiddleware')); + t.throws(() => new Neutrino().use('errorMiddleware')); }); test('throws if middleware cannot be found', (t) => { - t.throws(() => Neutrino().use('nonExistent')); + t.throws(() => new Neutrino().use('nonExistent')); }); diff --git a/packages/neutrino/webpack.js b/packages/neutrino/webpack.js new file mode 100644 index 000000000..ebaf3f561 --- /dev/null +++ b/packages/neutrino/webpack.js @@ -0,0 +1,9 @@ +module.exports = (neutrino, override) => (...args) => { + if (neutrino.config.entryPoints.has('vendor')) { + throw new Error('Vendor chunks are now automatically generated. ' + + 'Remove the manual `vendor` entrypoint.' + ); + } + + return override(neutrino.config.toConfig(), ...args); +}; diff --git a/packages/node/index.js b/packages/node/index.js index e1c977977..0a67511b6 100644 --- a/packages/node/index.js +++ b/packages/node/index.js @@ -8,26 +8,23 @@ const { basename, join, parse, format } = require('path'); const merge = require('deepmerge'); -const { - omit, partialRight, pathOr, pipe -} = require('ramda'); +const omit = require('lodash.omit'); const MODULES = join(__dirname, 'node_modules'); -const getOutputForEntry = pipe( - parse, - omit(['base']), - partialRight(merge, [{ ext: '.js' }]), - format, - basename +const getOutputForEntry = entry => basename( + format( + merge( + omit(parse(entry), ['base']), + { ext: '.js ' } + ) + ) ); module.exports = (neutrino, opts = {}) => { const pkg = neutrino.options.packageJson; - const sourceMap = pathOr( - pathOr(false, ['dependencies', 'source-map-support'], pkg), - ['devDependencies', 'source-map-support'], - pkg - ); + const sourceMap = (pkg && pkg.dependencies && pkg.dependencies['source-map-support']) || + pkg && pkg.devDependencies && pkg.devDependencies['source-map-support'] || + false; const options = merge({ hot: true, targets: { @@ -59,8 +56,9 @@ module.exports = (neutrino, opts = {}) => { .keys(neutrino.options.mains) .forEach(key => neutrino.config.entry(key).add(neutrino.options.mains[key])); + const mode = neutrino.config.get('mode'); + neutrino.config - .mode(process.env.NODE_ENV === 'production' ? 'production' : 'development') .when(sourceMap, () => neutrino.use(banner)) .performance .hints(false) @@ -111,22 +109,27 @@ module.exports = (neutrino, opts = {}) => { } }); }) - .when(neutrino.options.command === 'start', (config) => { + .when(mode === 'development', (config) => { const mainKeys = Object.keys(neutrino.options.mains); neutrino.use(startServer, { name: getOutputForEntry(neutrino.options.mains[mainKeys[0]]) }); - config.when(options.hot, () => { - neutrino.use(hot); - mainKeys.forEach(key => neutrino.config.entry(key).add(`${require.resolve('webpack/hot/poll')}?1000`)); - }); - }) - .when(neutrino.options.env.NODE_ENV === 'development', (config) => { - config.devtool('inline-sourcemap'); - config.output.devtoolModuleFilenameTemplate('[absolute-resource-path]'); + config + .devtool('inline-sourcemap') + .output + .devtoolModuleFilenameTemplate('[absolute-resource-path]') + .end() + .when(options.hot, () => { + neutrino.use(hot); + mainKeys.forEach(key => { + neutrino.config + .entry(key) + .add(`${require.resolve('webpack/hot/poll')}?1000`); + }); + }); }) - .when(neutrino.options.command === 'build', (config) => { + .when(mode === 'production', (config) => { config.when(options.clean, () => neutrino.use(clean, options.clean)); }); }; diff --git a/packages/node/package.json b/packages/node/package.json index 781160fb8..7408d918e 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -32,11 +32,11 @@ "@neutrinojs/hot": "^8.2.0", "@neutrinojs/start-server": "^8.2.0", "deepmerge": "^1.5.2", - "ramda": "^0.25.0", - "webpack": "^4.7.0", + "lodash.omit": "^4.5.0", "webpack-node-externals": "^1.7.2" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/node/test/node_test.js b/packages/node/test/node_test.js index c4e30541d..eae219422 100644 --- a/packages/node/test/node_test.js +++ b/packages/node/test/node_test.js @@ -1,6 +1,6 @@ import test from 'ava'; import { validate } from 'webpack'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const expectedExtensions = ['.js', '.jsx', '.vue', '.ts', '.tsx', '.mjs', '.json']; @@ -9,23 +9,22 @@ test('loads preset', t => { }); test('uses preset', t => { - const api = Neutrino(); + const api = new Neutrino(); t.notThrows(() => api.use(require('..'))); }); test('uses preset with custom main', t => { - const api = Neutrino({ mains: { server: 'server' } }); + const api = new Neutrino({ mains: { server: 'server' } }); t.notThrows(() => api.use(require('..'))); t.true(api.config.entryPoints.has('server')); }); test('valid preset production', t => { - const api = Neutrino({ - command: 'build', - env: { NODE_ENV: 'production' } - }); + const api = new Neutrino(); + + api.config.mode('production'); api.use(require('..')); const config = api.config.toConfig(); @@ -44,32 +43,9 @@ test('valid preset production', t => { }); test('valid preset development', t => { - const api = Neutrino({ - command: 'start', - env: { NODE_ENV: 'development' } - }); - api.use(require('..')); - const config = api.config.toConfig(); - - // Common - t.is(config.target, 'node'); - t.deepEqual(config.resolve.extensions, expectedExtensions); - t.is(config.optimization, undefined); - t.is(config.devServer, undefined); + const api = new Neutrino(); - // NODE_ENV/command specific - t.is(config.mode, 'development'); - t.is(config.devtool, 'inline-sourcemap'); - - const errors = validate(config); - t.is(errors.length, 0); -}); - -test('valid preset test', t => { - const api = Neutrino({ - command: 'test', - env: { NODE_ENV: 'test' } - }); + api.config.mode('development'); api.use(require('..')); const config = api.config.toConfig(); @@ -81,7 +57,7 @@ test('valid preset test', t => { // NODE_ENV/command specific t.is(config.mode, 'development'); - t.is(config.devtool, 'source-map'); + t.is(config.devtool, 'inline-sourcemap'); const errors = validate(config); t.is(errors.length, 0); diff --git a/packages/preact/package.json b/packages/preact/package.json index 0de52e013..83e3c17cc 100644 --- a/packages/preact/package.json +++ b/packages/preact/package.json @@ -30,10 +30,10 @@ "@neutrinojs/compile-loader": "^8.2.0", "@neutrinojs/loader-merge": "^8.2.0", "@neutrinojs/web": "^8.2.0", - "eslint": "^4.19.1", "eslint-plugin-react": "^7.7.0" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/preact/test/preact_test.js b/packages/preact/test/preact_test.js index 698314fdb..48feebec5 100644 --- a/packages/preact/test/preact_test.js +++ b/packages/preact/test/preact_test.js @@ -1,18 +1,19 @@ import test from 'ava'; import { validate } from 'webpack'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; test('loads preset', t => { t.notThrows(() => require('..')); }); test('uses preset', t => { - t.notThrows(() => Neutrino().use(require('..'))); + t.notThrows(() => new Neutrino().use(require('..'))); }); test('valid preset production', t => { - const api = Neutrino({ env: { NODE_ENV: 'production' } }); + const api = new Neutrino(); + api.config.mode('production'); api.use(require('..')); const errors = validate(api.config.toConfig()); @@ -21,8 +22,9 @@ test('valid preset production', t => { }); test('valid preset development', t => { - const api = Neutrino({ 'env': { NODE_ENV: 'development' } }); + const api = new Neutrino(); + api.config.mode('development'); api.use(require('..')); const errors = validate(api.config.toConfig()); diff --git a/packages/pwa/package.json b/packages/pwa/package.json index b3f9da4f9..84f44558e 100644 --- a/packages/pwa/package.json +++ b/packages/pwa/package.json @@ -30,6 +30,7 @@ "offline-plugin": "^5.0.3" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/pwa/test/middleware_test.js b/packages/pwa/test/middleware_test.js index 59843f731..5d1316fd2 100644 --- a/packages/pwa/test/middleware_test.js +++ b/packages/pwa/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { responseStrategy: 'network-first', AppCache: {} }; @@ -9,19 +9,19 @@ test('loads middleware', t => { }); test('uses middleware', t => { - const api = Neutrino(); + const api = new Neutrino(); t.notThrows(() => api.use(mw())); }); test('uses with options', t => { - const api = Neutrino(); + const api = new Neutrino(); t.notThrows(() => api.use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -29,7 +29,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/react-components/index.js b/packages/react-components/index.js index 5a9cf1767..825a02535 100644 --- a/packages/react-components/index.js +++ b/packages/react-components/index.js @@ -8,11 +8,12 @@ const { readdirSync } = require('fs'); const MODULES = join(__dirname, 'node_modules'); module.exports = (neutrino, opts = {}) => { + const mode = neutrino.config.get('mode'); const options = merge({ - html: process.env.NODE_ENV === 'development' && { + html: mode === 'development' && { title: 'React Preview' }, - manifest: process.env.NODE_ENV === 'development', + manifest: mode === 'development', externals: opts.externals !== false && {}, style: { extract: { plugin: { filename: '[name].css' } } } }, opts); @@ -31,7 +32,7 @@ module.exports = (neutrino, opts = {}) => { }); neutrino.config.when( - process.env.NODE_ENV === 'development', + mode === 'development', () => { neutrino.use(react, options); }, @@ -49,7 +50,7 @@ module.exports = (neutrino, opts = {}) => { neutrino.options.mains[basename(component, extname(component))] = join(components, component); }); - const pkg = neutrino.options.packageJson; + const pkg = neutrino.options.packageJson || {}; const hasSourceMap = (pkg.dependencies && 'source-map-support' in pkg.dependencies) || (pkg.devDependencies && 'source-map-support' in pkg.devDependencies); diff --git a/packages/react-components/package.json b/packages/react-components/package.json index c16ce9682..b8dda1390 100644 --- a/packages/react-components/package.json +++ b/packages/react-components/package.json @@ -26,6 +26,7 @@ "webpack-node-externals": "^1.7.2" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/react-components/test/components_test.js b/packages/react-components/test/components_test.js new file mode 100644 index 000000000..e4ce214ec --- /dev/null +++ b/packages/react-components/test/components_test.js @@ -0,0 +1,51 @@ +import test from 'ava'; +import { validate } from 'webpack'; +import Neutrino from '../../neutrino/Neutrino'; + +test('loads preset', t => { + t.notThrows(() => require('..')); +}); + +test('uses preset', t => { + const api = new Neutrino({ root: __dirname }); + + t.notThrows(() => api.use(require('..'), { name: 'alpha' })); +}); + +test('valid preset production', t => { + const api = new Neutrino({ root: __dirname }); + + api.config.mode('production'); + api.use(require('..')); + const config = api.config.toConfig(); + + // Common + t.is(config.target, 'web'); + t.is(config.optimization.runtimeChunk, false); + t.is(config.optimization.splitChunks, false); + + // NODE_ENV/command specific + t.is(config.mode, 'production'); + t.true(config.optimization.minimize); + t.is(config.devtool, 'source-map'); + t.is(config.devServer, undefined); + + const errors = validate(config); + t.is(errors.length, 0); +}); + +test('valid preset development', t => { + const api = new Neutrino({ root: __dirname }); + + api.config.mode('development'); + api.use(require('..')); + const config = api.config.toConfig(); + + // Common + t.is(config.target, 'web'); + t.is(config.optimization.runtimeChunk, 'single'); + t.is(config.optimization.splitChunks.chunks, 'all'); + + const errors = validate(config); + t.is(errors.length, 0); +}); diff --git a/packages/react-components/test/src/components/Empty.jsx b/packages/react-components/test/src/components/Empty.jsx new file mode 100644 index 000000000..e69de29bb diff --git a/packages/react/index.js b/packages/react/index.js index 17bb8dabc..79e7c9b7a 100644 --- a/packages/react/index.js +++ b/packages/react/index.js @@ -7,6 +7,7 @@ const merge = require('deepmerge'); const MODULES = join(__dirname, 'node_modules'); module.exports = (neutrino, opts = {}) => { + const mode = neutrino.config.get('mode'); const options = merge({ hot: true, hotEntries: [require.resolve('react-hot-loader/patch')], @@ -17,7 +18,7 @@ module.exports = (neutrino, opts = {}) => { babel: compileLoader.merge({ plugins: [ ...( - process.env.NODE_ENV === 'development' && options.hot + mode === 'development' && options.hot ? [require.resolve('react-hot-loader/babel')] : [] ), @@ -30,7 +31,7 @@ module.exports = (neutrino, opts = {}) => { require.resolve('@babel/preset-react'), { // Enable development helpers both in development and testing. - development: process.env.NODE_ENV !== 'production', + development: mode !== 'production', // Use the native built-in instead of polyfilling. useBuiltIns: true } diff --git a/packages/react/package.json b/packages/react/package.json index b95e127d6..292e736c0 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -31,7 +31,6 @@ "@neutrinojs/loader-merge": "^8.2.0", "@neutrinojs/web": "^8.2.0", "deepmerge": "^1.5.2", - "eslint": "^4.19.1", "eslint-plugin-react": "^7.7.0", "react-hot-loader": "^3.1.3" }, @@ -40,6 +39,7 @@ "react-dom": "*" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/react/test/react_test.js b/packages/react/test/react_test.js index 3733245a2..48feebec5 100644 --- a/packages/react/test/react_test.js +++ b/packages/react/test/react_test.js @@ -1,18 +1,19 @@ import test from 'ava'; import { validate } from 'webpack'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; test('loads preset', t => { t.notThrows(() => require('..')); }); test('uses preset', t => { - t.notThrows(() => Neutrino().use(require('..'))); + t.notThrows(() => new Neutrino().use(require('..'))); }); test('valid preset production', t => { - const api = Neutrino({ env: { NODE_ENV: 'production' } }); - + const api = new Neutrino(); + + api.config.mode('production'); api.use(require('..')); const errors = validate(api.config.toConfig()); @@ -21,8 +22,9 @@ test('valid preset production', t => { }); test('valid preset development', t => { - const api = Neutrino({ 'env': { NODE_ENV: 'development' } }); + const api = new Neutrino(); + api.config.mode('development'); api.use(require('..')); const errors = validate(api.config.toConfig()); diff --git a/packages/standardjs/eslintrc.js b/packages/standardjs/eslintrc.js index 97ad25a4c..b3f815a1a 100644 --- a/packages/standardjs/eslintrc.js +++ b/packages/standardjs/eslintrc.js @@ -1,5 +1,3 @@ -const { Neutrino } = require('../neutrino'); +const neutrino = require('../neutrino'); -module.exports = Neutrino({ cwd: __dirname }) - .use(require('.')) // eslint-disable-line global-require - .call('eslintrc'); +module.exports = neutrino(require('.')).eslintrc(); diff --git a/packages/standardjs/package.json b/packages/standardjs/package.json index 32d2916f5..e3884db6a 100644 --- a/packages/standardjs/package.json +++ b/packages/standardjs/package.json @@ -25,7 +25,6 @@ }, "dependencies": { "@neutrinojs/eslint": "^8.2.0", - "eslint": "^4.19.1", "eslint-config-standard": "^11.0.0", "eslint-config-standard-jsx": "^5.0.0", "eslint-plugin-import": "^2.11.0", @@ -35,6 +34,7 @@ "eslint-plugin-standard": "^3.1.0" }, "peerDependencies": { + "eslint": "^4.0.0", "neutrino": "^8.0.0" } } diff --git a/packages/standardjs/test/standardjs_test.js b/packages/standardjs/test/standardjs_test.js index 1dc1a5994..3b8879d0c 100644 --- a/packages/standardjs/test/standardjs_test.js +++ b/packages/standardjs/test/standardjs_test.js @@ -1,5 +1,6 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; +import neutrino from '../../neutrino'; const mw = () => require('..'); const options = { eslint: { rules: { semi: false } } }; @@ -9,15 +10,15 @@ test('loads preset', t => { }); test('uses preset', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,21 +26,33 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); t.notThrows(() => api.config.toConfig()); }); -test('exposes lint command', t => { - const api = Neutrino(); +test('exposes eslintrc output handler', t => { + const api = new Neutrino(); api.use(mw()); - t.is(typeof api.commands.lint, 'function'); + const handler = api.outputHandlers.get('eslintrc'); + + t.is(typeof handler, 'function'); +}); + +test('exposes eslintrc config from output', t => { + const config = neutrino(mw()).output('eslintrc'); + + t.is(typeof config, 'object'); +}); + +test('exposes eslintrc method', t => { + t.is(typeof neutrino(mw()).eslintrc, 'function'); }); -test('exposes eslintrc config', t => { - t.is(typeof Neutrino().use(mw()).call('eslintrc'), 'object'); +test('exposes eslintrc config from method', t => { + t.is(typeof neutrino(mw()).eslintrc(), 'object'); }); diff --git a/packages/start-server/package.json b/packages/start-server/package.json index 0692e7f54..628a88fcc 100644 --- a/packages/start-server/package.json +++ b/packages/start-server/package.json @@ -26,6 +26,7 @@ "start-server-webpack-plugin": "^2.2.5" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/start-server/test/middleware_test.js b/packages/start-server/test/middleware_test.js index 49b3bcfc8..aba9f1441 100644 --- a/packages/start-server/test/middleware_test.js +++ b/packages/start-server/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { name: 'app.js' }; @@ -9,27 +9,27 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('uses middleware while debugging', t => { - const api = Neutrino({ debug: true }); + const api = new Neutrino({ debug: true }); t.notThrows(() => api.use(mw())); }); test('uses with options while debugging', t => { - const api = Neutrino({ debug: true }); + const api = new Neutrino({ debug: true }); t.notThrows(() => api.use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -37,7 +37,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/style-loader/index.js b/packages/style-loader/index.js index 85835c740..53676f7a3 100644 --- a/packages/style-loader/index.js +++ b/packages/style-loader/index.js @@ -22,7 +22,9 @@ module.exports = (neutrino, opts = {}) => { extract: { loader: {}, plugin: { - filename: neutrino.options.command === 'build' ? '[name].[contenthash].css' : '[name].css' + filename: neutrino.config.get('mode') === 'production' + ? '[name].[contenthash].css' + : '[name].css' } } }, opts); diff --git a/packages/style-loader/package.json b/packages/style-loader/package.json index ae040c24c..5fd895b0f 100644 --- a/packages/style-loader/package.json +++ b/packages/style-loader/package.json @@ -27,10 +27,10 @@ "css-loader": "^0.28.11", "deepmerge": "^1.5.2", "mini-css-extract-plugin": "^0.4.0", - "style-loader": "^0.21.0", - "webpack": "^4.7.0" + "style-loader": "^0.21.0" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/style-loader/test/middleware_test.js b/packages/style-loader/test/middleware_test.js index 343152e2d..049e0c9c5 100644 --- a/packages/style-loader/test/middleware_test.js +++ b/packages/style-loader/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { css: { modules: true }, style: { sourceMap: true } }; @@ -9,15 +9,15 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,7 +25,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/style-minify/package.json b/packages/style-minify/package.json index 3a78f8e1c..3e515727b 100644 --- a/packages/style-minify/package.json +++ b/packages/style-minify/package.json @@ -25,10 +25,10 @@ "yarn": ">=1.2.1" }, "dependencies": { - "optimize-css-assets-webpack-plugin": "^4.0.1", - "webpack": "^4.7.0" + "optimize-css-assets-webpack-plugin": "^4.0.1" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/style-minify/test/middleware_test.js b/packages/style-minify/test/middleware_test.js index 065a39e9c..c5af6b90c 100644 --- a/packages/style-minify/test/middleware_test.js +++ b/packages/style-minify/test/middleware_test.js @@ -1,5 +1,5 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const mw = () => require('..'); const options = { plugin: {}, pluginId: 'style-minify' }; @@ -9,15 +9,15 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,7 +25,7 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); diff --git a/packages/stylelint/index.js b/packages/stylelint/index.js index e851777a8..b703ec9a1 100644 --- a/packages/stylelint/index.js +++ b/packages/stylelint/index.js @@ -1,7 +1,5 @@ -const merge = require('deepmerge'); -const { join } = require('path'); const StylelintPlugin = require('stylelint-webpack-plugin'); -const { lint, formatters } = require('stylelint'); +const { formatters } = require('stylelint'); module.exports = (neutrino, opts = {}) => { const options = { @@ -13,31 +11,13 @@ module.exports = (neutrino, opts = {}) => { ...opts }; - const getStylelintRcConfig = config => config - .plugin(options.pluginId) - .get('args')[0].config || {}; - - neutrino.register( - 'stylelint', - () => { - const { fix = false } = neutrino.options.args; - const files = join(options.context, options.files); - - return lint(merge(options, { fix, files })) - .then(result => result.errored ? - Promise.reject(result.output) : - Promise.resolve(result.output)); - }, - 'Perform a one-time lint using stylelint. Apply available automatic fixes with --fix' - ); - - neutrino.register( - 'stylelintrc', - () => getStylelintRcConfig(neutrino.config), - 'Return an object of accumulated stylelint configuration suitable for use by .stylelintrc.js' - ); - neutrino.config .plugin(options.pluginId) .use(StylelintPlugin, [options]); + + neutrino.register('stylelintrc', (neutrino, override) => override( + neutrino.config + .plugin('stylelint') + .get('args')[0].config || {} + )); }; diff --git a/packages/stylelint/package.json b/packages/stylelint/package.json index b1e49a861..94b312e1f 100644 --- a/packages/stylelint/package.json +++ b/packages/stylelint/package.json @@ -26,12 +26,11 @@ "yarn": ">=1.2.1" }, "dependencies": { - "deepmerge": "^1.5.2", - "stylelint": "^8.4.0", - "stylelint-webpack-plugin": "^0.10.4", - "webpack": "^4.7.0" + "stylelint-webpack-plugin": "^0.10.4" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "stylelint": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/stylelint/test/middleware_test.js b/packages/stylelint/test/middleware_test.js index 0ab81a19f..e04517dcc 100644 --- a/packages/stylelint/test/middleware_test.js +++ b/packages/stylelint/test/middleware_test.js @@ -1,5 +1,6 @@ import test from 'ava'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; +import neutrino from '../../neutrino'; const mw = () => require('..'); const options = { stylelint: { rules: { 'rule-empty-line-before': true } } }; @@ -9,15 +10,15 @@ test('loads middleware', t => { }); test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); + t.notThrows(() => new Neutrino().use(mw())); }); test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); + t.notThrows(() => new Neutrino().use(mw(), options)); }); test('instantiates', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw()); @@ -25,13 +26,33 @@ test('instantiates', t => { }); test('instantiates with options', t => { - const api = Neutrino(); + const api = new Neutrino(); api.use(mw(), options); t.notThrows(() => api.config.toConfig()); }); -test('exposes stylelintrc config', t => { - t.is(typeof Neutrino().use(mw(), options).call('stylelintrc'), 'object'); +test('exposes stylelintrc output handler', t => { + const api = new Neutrino(); + + api.use(mw()); + + const handler = api.outputHandlers.get('stylelintrc'); + + t.is(typeof handler, 'function'); +}); + +test('exposes stylelintrc config from output', t => { + const config = neutrino(mw()).output('stylelintrc'); + + t.is(typeof config, 'object'); +}); + +test('exposes stylelintrc method', t => { + t.is(typeof neutrino(mw()).stylelintrc, 'function'); +}); + +test('exposes stylelintrc config from method', t => { + t.is(typeof neutrino(mw()).stylelintrc(), 'object'); }); diff --git a/packages/vue/package.json b/packages/vue/package.json index 181fb2435..9e5415fdc 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -25,7 +25,6 @@ "@neutrinojs/web": "^8.2.0", "css-loader": "^0.28.11", "deepmerge": "^1.5.2", - "eslint": "^4.19.1", "eslint-plugin-react": "^7.7.0", "eslint-plugin-vue": "^4.5.0", "stylelint-processor-html": "^1.0.0", @@ -33,6 +32,7 @@ "vue-template-compiler": "^2.5.16" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/vue/test/vue_test.js b/packages/vue/test/vue_test.js index 698314fdb..48feebec5 100644 --- a/packages/vue/test/vue_test.js +++ b/packages/vue/test/vue_test.js @@ -1,18 +1,19 @@ import test from 'ava'; import { validate } from 'webpack'; -import { Neutrino } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; test('loads preset', t => { t.notThrows(() => require('..')); }); test('uses preset', t => { - t.notThrows(() => Neutrino().use(require('..'))); + t.notThrows(() => new Neutrino().use(require('..'))); }); test('valid preset production', t => { - const api = Neutrino({ env: { NODE_ENV: 'production' } }); + const api = new Neutrino(); + api.config.mode('production'); api.use(require('..')); const errors = validate(api.config.toConfig()); @@ -21,8 +22,9 @@ test('valid preset production', t => { }); test('valid preset development', t => { - const api = Neutrino({ 'env': { NODE_ENV: 'development' } }); + const api = new Neutrino(); + api.config.mode('development'); api.use(require('..')); const errors = validate(api.config.toConfig()); diff --git a/packages/web/index.js b/packages/web/index.js index 497d3791b..103129955 100644 --- a/packages/web/index.js +++ b/packages/web/index.js @@ -19,6 +19,7 @@ const ManifestPlugin = require('webpack-manifest-plugin'); const MODULES = join(__dirname, 'node_modules'); module.exports = (neutrino, opts = {}) => { + const mode = neutrino.config.get('mode'); const publicPath = opts.publicPath || './'; const options = merge({ publicPath, @@ -32,14 +33,14 @@ module.exports = (neutrino, opts = {}) => { }, style: { hot: opts.hot !== false, - extract: process.env.NODE_ENV === 'production' + extract: mode === 'production' }, manifest: opts.html === false ? {} : false, clean: opts.clean !== false && { paths: [neutrino.options.output] }, minify: { - source: process.env.NODE_ENV === 'production', + source: mode === 'production', style: {} }, babel: {}, @@ -139,7 +140,6 @@ module.exports = (neutrino, opts = {}) => { }); neutrino.config - .mode(process.env.NODE_ENV === 'production' ? 'production' : 'development') .optimization .minimize(options.minify.source) .splitChunks({ @@ -152,7 +152,7 @@ module.exports = (neutrino, opts = {}) => { // `vendors~index~page2.b694ee990c08e6be6a33.js`. Setting to `false` causes them to // use the chunk ID instead (eg `1.ceddedc0defa56bec89f.js`), which prevents cache- // busting when a new page is added with the same shared vendor dependencies. - name: process.env.NODE_ENV !== 'production' + name: mode !== 'production' }) // Create a separate chunk for the webpack runtime, so it can be cached separately // from the more frequently-changing entrypoint chunks. @@ -214,9 +214,9 @@ module.exports = (neutrino, opts = {}) => { envs: ['browser', 'commonjs'] }); }) - .when(process.env.NODE_ENV === 'development', config => config.devtool('cheap-module-eval-source-map')) - .when(neutrino.options.command === 'start', (config) => { + .when(mode === 'development', config => { neutrino.use(devServer, options.devServer); + config.devtool('cheap-module-eval-source-map'); config.when(options.hot, () => { neutrino.use(hot); config.when(options.hotEntries, (config) => { @@ -238,11 +238,8 @@ module.exports = (neutrino, opts = {}) => { }); }); }) - .when(process.env.NODE_ENV === 'production', (config) => { - config - .when(options.minify.style, () => neutrino.use(styleMinify, options.minify.style)); - }) - .when(neutrino.options.command === 'build', (config) => { + .when(mode === 'production', (config) => { + config.when(options.minify.style, () => neutrino.use(styleMinify, options.minify.style)); config.when(options.clean, () => neutrino.use(clean, options.clean)); if (options.manifest) { @@ -252,13 +249,4 @@ module.exports = (neutrino, opts = {}) => { config.output.filename('[name].[chunkhash].js'); }); - - neutrino.on('prerun', () => { - if (neutrino.config.entryPoints.has('vendor')) { - return Promise.reject( - new Error('Vendor chunks are now automatically generated. Remove the manual `vendor` entrypoint.') - ); - } - return Promise.resolve(); - }) }; diff --git a/packages/web/package.json b/packages/web/package.json index 4b32319e6..8684b6e6f 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -40,11 +40,11 @@ "@neutrinojs/style-minify": "^8.2.0", "deepmerge": "^1.5.2", "html-webpack-include-sibling-chunks-plugin": "^0.1.4", - "webpack": "^4.7.0", "webpack-manifest-plugin": "^2.0.2", "worker-loader": "^1.1.1" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/web/test/web_test.js b/packages/web/test/web_test.js index 7cce5fda3..c8596485a 100644 --- a/packages/web/test/web_test.js +++ b/packages/web/test/web_test.js @@ -1,6 +1,6 @@ import test from 'ava'; import { validate } from 'webpack'; -import { Neutrino, build } from 'neutrino'; +import Neutrino from '../../neutrino/Neutrino'; const expectedExtensions = ['.js', '.jsx', '.vue', '.ts', '.tsx', '.mjs', '.json']; @@ -9,14 +9,13 @@ test('loads preset', t => { }); test('uses preset', t => { - t.notThrows(() => Neutrino().use(require('..'))); + t.notThrows(() => new Neutrino().use(require('..'))); }); test('valid preset production', t => { - const api = Neutrino({ - command: 'build', - env: { NODE_ENV: 'production' } - }); + const api = new Neutrino(); + + api.config.mode('production'); api.use(require('..')); const config = api.config.toConfig(); @@ -38,10 +37,9 @@ test('valid preset production', t => { }); test('valid preset development', t => { - const api = Neutrino({ - command: 'start', - env: { NODE_ENV: 'development' } - }); + const api = new Neutrino(); + + api.config.mode('development'); api.use(require('..')); const config = api.config.toConfig(); @@ -66,52 +64,16 @@ test('valid preset development', t => { t.is(errors.length, 0); }); -test('valid preset test', t => { - const api = Neutrino({ - command: 'test', - env: { NODE_ENV: 'test' } - }); - api.use(require('..')); - const config = api.config.toConfig(); - - // Common - t.is(config.target, 'web'); - t.deepEqual(config.resolve.extensions, expectedExtensions); - t.is(config.optimization.runtimeChunk, 'single'); - t.is(config.optimization.splitChunks.chunks, 'all'); - - // NODE_ENV/command specific - t.is(config.mode, 'development'); - t.false(config.optimization.minimize); - t.true(config.optimization.splitChunks.name); - t.is(config.devtool, undefined); - t.is(config.devServer, undefined); - - const errors = validate(config); - t.is(errors.length, 0); -}); - test('throws when minify.babel defined', async t => { - const api = Neutrino(); + const api = new Neutrino(); const err = t.throws(() => api.use(require('..'), { minify: { babel: false } })); t.true(err.message.includes('The minify.babel option has been removed')); }); test('throws when minify.image defined', async t => { - const api = Neutrino(); + const api = new Neutrino(); const err = t.throws(() => api.use(require('..'), { minify: { image: true } })); t.true(err.message.includes('The minify.image option has been removed')); }); - -test('throws when vendor entrypoint defined', async t => { - const api = Neutrino(); - api - .register('build', build) - .use(require('..')) - .config.entry('vendor').add('lodash'); - - const [err] = await t.throws(api.run('build').promise()); - t.true(err.message.includes('Remove the manual `vendor` entrypoint')); -}); diff --git a/yarn.lock b/yarn.lock index 91384604c..b2256adde 100644 --- a/yarn.lock +++ b/yarn.lock @@ -44,27 +44,27 @@ dependencies: "@babel/highlight" "7.0.0-beta.44" -"@babel/code-frame@7.0.0-beta.46", "@babel/code-frame@^7.0.0-beta.35": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz#e0d002100805daab1461c0fcb32a07e304f3a4f4" - dependencies: - "@babel/highlight" "7.0.0-beta.46" - -"@babel/core@^7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-beta.46.tgz#dbe2189bcdef9a2c84becb1ec624878d31a95689" - dependencies: - "@babel/code-frame" "7.0.0-beta.46" - "@babel/generator" "7.0.0-beta.46" - "@babel/helpers" "7.0.0-beta.46" - "@babel/template" "7.0.0-beta.46" - "@babel/traverse" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" - babylon "7.0.0-beta.46" +"@babel/code-frame@7.0.0-beta.47", "@babel/code-frame@^7.0.0-beta.35": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz#d18c2f4c4ba8d093a2bcfab5616593bfe2441a27" + dependencies: + "@babel/highlight" "7.0.0-beta.47" + +"@babel/core@^7.0.0-beta.46", "@babel/core@^7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-beta.47.tgz#b9c164fb9a1e1083f067c236a9da1d7a7d759271" + dependencies: + "@babel/code-frame" "7.0.0-beta.47" + "@babel/generator" "7.0.0-beta.47" + "@babel/helpers" "7.0.0-beta.47" + "@babel/template" "7.0.0-beta.47" + "@babel/traverse" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" + babylon "7.0.0-beta.47" convert-source-map "^1.1.0" debug "^3.1.0" json5 "^0.5.0" - lodash "^4.2.0" + lodash "^4.17.5" micromatch "^2.3.11" resolve "^1.3.2" semver "^5.4.1" @@ -80,58 +80,58 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/generator@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.46.tgz#6f57159bcc28bf8c3ed6b549789355cebfa3faa7" +"@babel/generator@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.47.tgz#1835709f377cc4d2a4affee6d9258a10bbf3b9d1" dependencies: - "@babel/types" "7.0.0-beta.46" + "@babel/types" "7.0.0-beta.47" jsesc "^2.5.1" - lodash "^4.2.0" + lodash "^4.17.5" source-map "^0.5.0" trim-right "^1.0.1" -"@babel/helper-annotate-as-pure@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.46.tgz#4cd76d5c93409ea01d31be66395a3b98a372792e" +"@babel/helper-annotate-as-pure@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.47.tgz#354fb596055d9db369211bf075f0d5e93904d6f6" dependencies: - "@babel/types" "7.0.0-beta.46" + "@babel/types" "7.0.0-beta.47" -"@babel/helper-builder-binary-assignment-operator-visitor@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.46.tgz#b6c8de48693b66bf90239e99856be4c2257e43ba" +"@babel/helper-builder-binary-assignment-operator-visitor@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.47.tgz#d5917c29ee3d68abc2c72f604bc043f6e056e907" dependencies: - "@babel/helper-explode-assignable-expression" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" + "@babel/helper-explode-assignable-expression" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" -"@babel/helper-builder-react-jsx@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-beta.46.tgz#d399c1892f48bbe68ce6ccca14b127b00cbc656f" +"@babel/helper-builder-react-jsx@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-beta.47.tgz#e39bbce315743044c0d64b31f82f20600f761729" dependencies: - "@babel/types" "7.0.0-beta.46" + "@babel/types" "7.0.0-beta.47" esutils "^2.0.0" -"@babel/helper-call-delegate@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.46.tgz#a9e8b46cece47726308f015ce979293ef3d36ab7" +"@babel/helper-call-delegate@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.47.tgz#96b7804397075f722a4030d3876f51ec19d8829b" dependencies: - "@babel/helper-hoist-variables" "7.0.0-beta.46" - "@babel/traverse" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" + "@babel/helper-hoist-variables" "7.0.0-beta.47" + "@babel/traverse" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" -"@babel/helper-define-map@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.46.tgz#994219751ef48bf1ec32604b43935f2b24d617fa" +"@babel/helper-define-map@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.47.tgz#43a9def87c5166dc29630d51b3da9cc4320c131c" dependencies: - "@babel/helper-function-name" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" - lodash "^4.2.0" + "@babel/helper-function-name" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" + lodash "^4.17.5" -"@babel/helper-explode-assignable-expression@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.46.tgz#6a34a7533761b97ce4f7bf6fc586dcfb204ffa11" +"@babel/helper-explode-assignable-expression@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.47.tgz#56b688e282a698f4d1cf135453a11ae8af870a19" dependencies: - "@babel/traverse" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" + "@babel/traverse" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" "@babel/helper-function-name@7.0.0-beta.44": version "7.0.0-beta.44" @@ -141,13 +141,13 @@ "@babel/template" "7.0.0-beta.44" "@babel/types" "7.0.0-beta.44" -"@babel/helper-function-name@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.46.tgz#d0c4eed2e220e180f91b02e008dcc4594afe1d39" +"@babel/helper-function-name@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.47.tgz#8057d63e951e85c57c02cdfe55ad7608d73ffb7d" dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.46" - "@babel/template" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" + "@babel/helper-get-function-arity" "7.0.0-beta.47" + "@babel/template" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" "@babel/helper-get-function-arity@7.0.0-beta.44": version "7.0.0-beta.44" @@ -155,84 +155,84 @@ dependencies: "@babel/types" "7.0.0-beta.44" -"@babel/helper-get-function-arity@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.46.tgz#7161bfe449b4183dbe25d1fe5579338b7429e5f2" +"@babel/helper-get-function-arity@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.47.tgz#2de04f97c14b094b55899d3fa83144a16d207510" dependencies: - "@babel/types" "7.0.0-beta.46" + "@babel/types" "7.0.0-beta.47" -"@babel/helper-hoist-variables@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.46.tgz#2d656215bea3f044ff1ee391fc51d55fce46ddf5" +"@babel/helper-hoist-variables@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.47.tgz#ce295d1d723fe22b2820eaec748ed701aa5ae3d0" dependencies: - "@babel/types" "7.0.0-beta.46" + "@babel/types" "7.0.0-beta.47" -"@babel/helper-member-expression-to-functions@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.46.tgz#736344c1d68fb2c4b75cbe62370eb610c0578427" +"@babel/helper-member-expression-to-functions@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.47.tgz#35bfcf1d16dce481ef3dec66d5a1ae6a7d80bb45" dependencies: - "@babel/types" "7.0.0-beta.46" + "@babel/types" "7.0.0-beta.47" -"@babel/helper-module-imports@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.46.tgz#8bd2e1fcfae883d28149a350e31ce606aa24eda6" +"@babel/helper-module-imports@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.47.tgz#5af072029ffcfbece6ffbaf5d9984c75580f3f04" dependencies: - "@babel/types" "7.0.0-beta.46" - lodash "^4.2.0" + "@babel/types" "7.0.0-beta.47" + lodash "^4.17.5" -"@babel/helper-module-transforms@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.46.tgz#90ad981f3a0020d9a8e526296555a5dd7e87cf5e" +"@babel/helper-module-transforms@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.47.tgz#7eff91fc96873bd7b8d816698f1a69bbc01f3c38" dependencies: - "@babel/helper-module-imports" "7.0.0-beta.46" - "@babel/helper-simple-access" "7.0.0-beta.46" - "@babel/helper-split-export-declaration" "7.0.0-beta.46" - "@babel/template" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" - lodash "^4.2.0" + "@babel/helper-module-imports" "7.0.0-beta.47" + "@babel/helper-simple-access" "7.0.0-beta.47" + "@babel/helper-split-export-declaration" "7.0.0-beta.47" + "@babel/template" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" + lodash "^4.17.5" -"@babel/helper-optimise-call-expression@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.46.tgz#50f060b4e4af01c73b40986fa593ae7958422e89" +"@babel/helper-optimise-call-expression@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.47.tgz#085d864d0613c5813c1b7c71b61bea36f195929e" dependencies: - "@babel/types" "7.0.0-beta.46" + "@babel/types" "7.0.0-beta.47" -"@babel/helper-plugin-utils@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.46.tgz#f630adbd9d645d0ba2e43f4955b4ad61f44ccdf4" +"@babel/helper-plugin-utils@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.47.tgz#4f564117ec39f96cf60fafcde35c9ddce0e008fd" -"@babel/helper-regex@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0-beta.46.tgz#df3675cec700e062d823225c52830e012f32308f" +"@babel/helper-regex@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0-beta.47.tgz#b8e3b53132c4edbb04804242c02ffe4d60316971" dependencies: - lodash "^4.2.0" + lodash "^4.17.5" -"@babel/helper-remap-async-to-generator@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.46.tgz#275d455dbced4c807543f001302a40303a3f0914" +"@babel/helper-remap-async-to-generator@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.47.tgz#444dc362f61470bd61a745ebb364431d9ca186c2" dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.46" - "@babel/helper-wrap-function" "7.0.0-beta.46" - "@babel/template" "7.0.0-beta.46" - "@babel/traverse" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" + "@babel/helper-annotate-as-pure" "7.0.0-beta.47" + "@babel/helper-wrap-function" "7.0.0-beta.47" + "@babel/template" "7.0.0-beta.47" + "@babel/traverse" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" -"@babel/helper-replace-supers@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.46.tgz#921c0f25d875026a8fb12feda1b72323595ea156" +"@babel/helper-replace-supers@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.47.tgz#310b206a302868a792b659455ceba27db686cbb7" dependencies: - "@babel/helper-member-expression-to-functions" "7.0.0-beta.46" - "@babel/helper-optimise-call-expression" "7.0.0-beta.46" - "@babel/traverse" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" + "@babel/helper-member-expression-to-functions" "7.0.0-beta.47" + "@babel/helper-optimise-call-expression" "7.0.0-beta.47" + "@babel/traverse" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" -"@babel/helper-simple-access@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.46.tgz#8eb0edf978c85915d11b6a7aa8591434e158170d" +"@babel/helper-simple-access@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.47.tgz#234d754acbda9251a10db697ef50181eab125042" dependencies: - "@babel/template" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" - lodash "^4.2.0" + "@babel/template" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" + lodash "^4.17.5" "@babel/helper-split-export-declaration@7.0.0-beta.44": version "7.0.0-beta.44" @@ -240,28 +240,28 @@ dependencies: "@babel/types" "7.0.0-beta.44" -"@babel/helper-split-export-declaration@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.46.tgz#6903893c72bb2a3d54ed20b5ff2aa8a28e8d2ea1" +"@babel/helper-split-export-declaration@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.47.tgz#e11277855472d8d83baf22f2d0186c4a2059b09a" dependencies: - "@babel/types" "7.0.0-beta.46" + "@babel/types" "7.0.0-beta.47" -"@babel/helper-wrap-function@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.46.tgz#d0fb836516d8a38ab80df1b434e4b76015be9035" +"@babel/helper-wrap-function@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.47.tgz#6528b44a3ccb4f3aeeb79add0a88192f7eb81161" dependencies: - "@babel/helper-function-name" "7.0.0-beta.46" - "@babel/template" "7.0.0-beta.46" - "@babel/traverse" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" + "@babel/helper-function-name" "7.0.0-beta.47" + "@babel/template" "7.0.0-beta.47" + "@babel/traverse" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" -"@babel/helpers@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-beta.46.tgz#b5f988dfd77f4f713792cf7818b687050736ee52" +"@babel/helpers@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-beta.47.tgz#f9b42ed2e4d5f75ec0fb2e792c173e451e8d40fd" dependencies: - "@babel/template" "7.0.0-beta.46" - "@babel/traverse" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" + "@babel/template" "7.0.0-beta.47" + "@babel/traverse" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" "@babel/highlight@7.0.0-beta.44": version "7.0.0-beta.44" @@ -271,368 +271,368 @@ esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/highlight@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.46.tgz#c553c51e65f572bdedd6eff66fc0bb563016645e" +"@babel/highlight@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.47.tgz#8fbc83fb2a21f0bd2b95cdbeb238cf9689cad494" dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/plugin-proposal-async-generator-functions@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.46.tgz#395330d1d5d7fb76c33b7bd99750adeafc37c68c" +"@babel/plugin-proposal-async-generator-functions@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.47.tgz#571142284708c5ad4ec904d9aa705461a010be53" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/helper-remap-async-to-generator" "7.0.0-beta.46" - "@babel/plugin-syntax-async-generators" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-remap-async-to-generator" "7.0.0-beta.47" + "@babel/plugin-syntax-async-generators" "7.0.0-beta.47" "@babel/plugin-proposal-class-properties@^7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.46.tgz#1c505f8df3a312beb41c88d74209d5b6d537fa3d" + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.47.tgz#08c1a1dfc92d0f5c37b39096c6fb883e1ca4b0f5" dependencies: - "@babel/helper-function-name" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/helper-replace-supers" "7.0.0-beta.46" - "@babel/plugin-syntax-class-properties" "7.0.0-beta.46" + "@babel/helper-function-name" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-replace-supers" "7.0.0-beta.47" + "@babel/plugin-syntax-class-properties" "7.0.0-beta.47" -"@babel/plugin-proposal-object-rest-spread@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.46.tgz#fb3979488a52c1246cdced4a438ace0f47ac985b" +"@babel/plugin-proposal-object-rest-spread@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.47.tgz#e1529fddc88e948868ee1d0edaa27ebd9502322d" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.47" -"@babel/plugin-proposal-optional-catch-binding@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.46.tgz#fda50deaab3272500a8a1c7088d7d55148f54048" +"@babel/plugin-proposal-optional-catch-binding@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.47.tgz#8c6453919537517ea773bb8f3fceda4250795efa" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.47" -"@babel/plugin-proposal-unicode-property-regex@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.46.tgz#b422a602094d7feeea4a7b81e7e32d1687337123" +"@babel/plugin-proposal-unicode-property-regex@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.47.tgz#34d7e4811bdc4f512400bb29d01051842528c8d5" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/helper-regex" "7.0.0-beta.46" - regexpu-core "^4.1.3" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-regex" "7.0.0-beta.47" + regexpu-core "^4.1.4" -"@babel/plugin-syntax-async-generators@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.46.tgz#b35149e02748922d8e39506b0ac001a27bf449ed" +"@babel/plugin-syntax-async-generators@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.47.tgz#8ab94852bf348badc866af85bd852221f0961256" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-syntax-class-properties@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.46.tgz#dad4df6c31b65ba359fec3b02fb8413896e75efc" +"@babel/plugin-syntax-class-properties@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.47.tgz#de52bed12fd472c848e1562f57dd4a202fe27f11" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" "@babel/plugin-syntax-dynamic-import@^7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.46.tgz#651459c419d5ec0609a518370a417b8b47c52583" + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.47.tgz#ee964915014a687701ee8e15c289e31a7c899e60" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-syntax-jsx@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.46.tgz#ed2e8a43716e7904ae33dca71d5f2b436f0f25e8" +"@babel/plugin-syntax-jsx@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.47.tgz#f3849d94288695d724bd205b4f6c3c99e4ec24a4" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-syntax-object-rest-spread@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.46.tgz#03d46637f549757b2d6877b6449901698059d7d8" +"@babel/plugin-syntax-object-rest-spread@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.47.tgz#21da514d94c138b2261ca09f0dec9abadce16185" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-syntax-optional-catch-binding@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.46.tgz#701ba500cc154dd87c4d16a41fa858e9ffc6db89" +"@babel/plugin-syntax-optional-catch-binding@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.47.tgz#0b1c52b066aa36893c41450773a5adb904cd4024" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-arrow-functions@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.46.tgz#130e79b1d4508767c47e5febb809f8dca80c05f5" +"@babel/plugin-transform-arrow-functions@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.47.tgz#d6eecda4c652b909e3088f0983ebaf8ec292984b" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-async-to-generator@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.46.tgz#29fd5967f5056ca80f3a97db4d2ffa38a0dc2dce" +"@babel/plugin-transform-async-to-generator@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.47.tgz#5723816ea1e91fa313a84e6ee9cc12ff31d46610" dependencies: - "@babel/helper-module-imports" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/helper-remap-async-to-generator" "7.0.0-beta.46" + "@babel/helper-module-imports" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-remap-async-to-generator" "7.0.0-beta.47" -"@babel/plugin-transform-block-scoped-functions@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.46.tgz#0925a549931f61b45880618b0b42da4790b7c0b3" +"@babel/plugin-transform-block-scoped-functions@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.47.tgz#e422278e06c797b43c45f459d83c7af9d6237002" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-block-scoping@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.46.tgz#da42dd17fbed675c72233988dbad9ace5ab9e4a7" +"@babel/plugin-transform-block-scoping@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.47.tgz#b737cc58a81bea57efd5bda0baef9a43a25859ad" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - lodash "^4.2.0" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + lodash "^4.17.5" -"@babel/plugin-transform-classes@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.46.tgz#00c856feda2ee756c4cc6ef8c97d17d070acebf7" - dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.46" - "@babel/helper-define-map" "7.0.0-beta.46" - "@babel/helper-function-name" "7.0.0-beta.46" - "@babel/helper-optimise-call-expression" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/helper-replace-supers" "7.0.0-beta.46" - "@babel/helper-split-export-declaration" "7.0.0-beta.46" +"@babel/plugin-transform-classes@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.47.tgz#7aff9cbe7b26fd94d7a9f97fa90135ef20c93fb6" + dependencies: + "@babel/helper-annotate-as-pure" "7.0.0-beta.47" + "@babel/helper-define-map" "7.0.0-beta.47" + "@babel/helper-function-name" "7.0.0-beta.47" + "@babel/helper-optimise-call-expression" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-replace-supers" "7.0.0-beta.47" + "@babel/helper-split-export-declaration" "7.0.0-beta.47" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.46.tgz#ca1ece27615f7324345713fb6a93dd288788e891" +"@babel/plugin-transform-computed-properties@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.47.tgz#56ef2a021769a2b65e90a3e12fd10b791da9f3e0" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-destructuring@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.46.tgz#6e6a097da31063f545f7818afe48ef09165ce5ff" +"@babel/plugin-transform-destructuring@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.47.tgz#452b607775fd1c4d10621997837189efc0a6d428" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-dotall-regex@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.46.tgz#e5bbd78c1a94455e6d5dd1c77f32357b84355e06" +"@babel/plugin-transform-dotall-regex@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.47.tgz#d8da9b706d4bfc68dec9d565661f83e6e8036636" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/helper-regex" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-regex" "7.0.0-beta.47" regexpu-core "^4.1.3" -"@babel/plugin-transform-duplicate-keys@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.46.tgz#7e94e42099b099742617838237b0d6e1a9b2690f" +"@babel/plugin-transform-duplicate-keys@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.47.tgz#4aabeda051ca3007e33a207db08f1a0cf9bd253b" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-exponentiation-operator@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.46.tgz#95ae2e03456e417d2f5eace6d05a8fccb7af1bcc" +"@babel/plugin-transform-exponentiation-operator@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.47.tgz#930e1abf5db9f4db5b63dbf97f3581ad0be1e907" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-builder-binary-assignment-operator-visitor" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-for-of@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.46.tgz#ce643487384c96d1bd1f57a112b2ccba6c34da5c" +"@babel/plugin-transform-for-of@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.47.tgz#527d5dc24e4a4ad0fc1d0a3990d29968cb984e76" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-function-name@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.46.tgz#2479f5188de9ab1f99396bce83b3b9d39bc13bdb" +"@babel/plugin-transform-function-name@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.47.tgz#fb443c81cc77f3206a863b730b35c8c553ce5041" dependencies: - "@babel/helper-function-name" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-function-name" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-literals@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.46.tgz#84f5bcfe914b9fd4385c0ddf469f9ed403ee68bd" +"@babel/plugin-transform-literals@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.47.tgz#448fad196f062163684a38f10f14e83315892e9c" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-modules-amd@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.46.tgz#01aeb4887c7df7059cefe4a206eefdf190c79f48" +"@babel/plugin-transform-modules-amd@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.47.tgz#84564419b11c1be6b9fcd4c7b3a6737f2335aac4" dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-module-transforms" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-modules-commonjs@7.0.0-beta.46", "@babel/plugin-transform-modules-commonjs@^7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.46.tgz#9dcb42e1282b281c1a2075f98b4a850533acfd9c" +"@babel/plugin-transform-modules-commonjs@7.0.0-beta.47", "@babel/plugin-transform-modules-commonjs@^7.0.0-beta.46", "@babel/plugin-transform-modules-commonjs@^7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.47.tgz#dfe5c6d867aa9614e55f7616736073edb3aab887" dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/helper-simple-access" "7.0.0-beta.46" + "@babel/helper-module-transforms" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-simple-access" "7.0.0-beta.47" -"@babel/plugin-transform-modules-systemjs@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.46.tgz#313e13e8edccaae6c645e3798a043521cf73df04" +"@babel/plugin-transform-modules-systemjs@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.47.tgz#8514dbcdfca3345abd690059e7e8544e16ecbf05" dependencies: - "@babel/helper-hoist-variables" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-hoist-variables" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-modules-umd@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.46.tgz#ad0ef488a123f479825c1ffe75c5bba9954a449c" +"@babel/plugin-transform-modules-umd@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.47.tgz#6dcfb9661fdd131b20b721044746a7a309882918" dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-module-transforms" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-new-target@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.46.tgz#e3219c15a2175a29afa33b9b2f4c18dc1ae3c8cc" +"@babel/plugin-transform-new-target@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.47.tgz#4b5cb7ce30d7bffa105a1f43ed07d6ae206a4155" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-object-super@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.46.tgz#b5376fe93f5e154b765468f1a58a717717f95827" +"@babel/plugin-transform-object-super@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.47.tgz#ca8e5f326c5011c879f3a6ed749e58bd10fff05d" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/helper-replace-supers" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-replace-supers" "7.0.0-beta.47" -"@babel/plugin-transform-parameters@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.46.tgz#33bbd2e3bd499d99016034dcaf8c6b72c2a69ec3" +"@babel/plugin-transform-parameters@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.47.tgz#46a4236040a6552a5f165fb3ddd60368954b0ddd" dependencies: - "@babel/helper-call-delegate" "7.0.0-beta.46" - "@babel/helper-get-function-arity" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-call-delegate" "7.0.0-beta.47" + "@babel/helper-get-function-arity" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-react-display-name@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0-beta.46.tgz#2ad4a6c63ff67cb90f3199ff41061bcd7b6f5e7c" +"@babel/plugin-transform-react-display-name@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0-beta.47.tgz#7a45c1703b8b33f252148ecf1b50dd54809de952" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-react-jsx-self@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0-beta.46.tgz#0c3d89727f5fadc87294ca58463b392466b5906e" +"@babel/plugin-transform-react-jsx-self@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0-beta.47.tgz#64125e6045f1e50bfa6acedc7986c7cfc981014b" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/plugin-syntax-jsx" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/plugin-syntax-jsx" "7.0.0-beta.47" -"@babel/plugin-transform-react-jsx-source@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0-beta.46.tgz#5777f7bbfb6a13417896c5294d64aa5fc593f586" +"@babel/plugin-transform-react-jsx-source@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0-beta.47.tgz#da8c01704b896409eae168a15045216e72d278dc" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/plugin-syntax-jsx" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/plugin-syntax-jsx" "7.0.0-beta.47" -"@babel/plugin-transform-react-jsx@7.0.0-beta.46", "@babel/plugin-transform-react-jsx@^7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-beta.46.tgz#9aa0c491ced30a0d1a8414da2d45462c66912d1e" +"@babel/plugin-transform-react-jsx@7.0.0-beta.47", "@babel/plugin-transform-react-jsx@^7.0.0-beta.46": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-beta.47.tgz#98c99a69be748d966c0aea08b5ca942ba3fc9ed1" dependencies: - "@babel/helper-builder-react-jsx" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/plugin-syntax-jsx" "7.0.0-beta.46" + "@babel/helper-builder-react-jsx" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/plugin-syntax-jsx" "7.0.0-beta.47" -"@babel/plugin-transform-regenerator@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.46.tgz#875ceb5b37ec0e898c23b60af760715d9d462b4f" +"@babel/plugin-transform-regenerator@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.47.tgz#86500e1c404055fb98fc82b73b09bd053cacb516" dependencies: regenerator-transform "^0.12.3" -"@babel/plugin-transform-shorthand-properties@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.46.tgz#aa21512b0fef7b916fc5cbc87df717465c25515c" +"@babel/plugin-transform-shorthand-properties@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.47.tgz#00be44c4fad8fe2c00ed18ea15ea3c88dd519dbb" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-spread@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.46.tgz#48eabb219f1e0c16e9b0a6166072ae9d4c7cd397" +"@babel/plugin-transform-spread@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.47.tgz#3feadb02292ed1e9b75090d651b9df88a7ab5c50" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-sticky-regex@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.46.tgz#c96c41f31272ec1cdc47dd91a22c6d75c4db70d2" +"@babel/plugin-transform-sticky-regex@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.47.tgz#c0aa347d76b5dc87d3b37ac016ada3f950605131" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/helper-regex" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-regex" "7.0.0-beta.47" -"@babel/plugin-transform-template-literals@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.46.tgz#e8bcc798dece29807893e8ee27ccf3176f658c62" +"@babel/plugin-transform-template-literals@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.47.tgz#5f7b5badf64c4c5da79026aeab03001e62a6ee5f" dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-annotate-as-pure" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-typeof-symbol@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.46.tgz#643529184cbb07199237c94537c89ea9a721fa0a" +"@babel/plugin-transform-typeof-symbol@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.47.tgz#03c612ec09213eb386a81d5fa67c234ee4b2034c" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" -"@babel/plugin-transform-unicode-regex@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.46.tgz#10e6edcc8eb0db71ff2f0e3fc87ed88337d24fb9" +"@babel/plugin-transform-unicode-regex@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.47.tgz#efed0b2f1dfbf28283502234a95b4be88f7fdcb6" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/helper-regex" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-regex" "7.0.0-beta.47" regexpu-core "^4.1.3" "@babel/preset-env@^7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0-beta.46.tgz#ae1b731ef71c2bb50c47e0cda4b6359ea2c61f09" - dependencies: - "@babel/helper-module-imports" "7.0.0-beta.46" - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/plugin-proposal-async-generator-functions" "7.0.0-beta.46" - "@babel/plugin-proposal-object-rest-spread" "7.0.0-beta.46" - "@babel/plugin-proposal-optional-catch-binding" "7.0.0-beta.46" - "@babel/plugin-proposal-unicode-property-regex" "7.0.0-beta.46" - "@babel/plugin-syntax-async-generators" "7.0.0-beta.46" - "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.46" - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.46" - "@babel/plugin-transform-arrow-functions" "7.0.0-beta.46" - "@babel/plugin-transform-async-to-generator" "7.0.0-beta.46" - "@babel/plugin-transform-block-scoped-functions" "7.0.0-beta.46" - "@babel/plugin-transform-block-scoping" "7.0.0-beta.46" - "@babel/plugin-transform-classes" "7.0.0-beta.46" - "@babel/plugin-transform-computed-properties" "7.0.0-beta.46" - "@babel/plugin-transform-destructuring" "7.0.0-beta.46" - "@babel/plugin-transform-dotall-regex" "7.0.0-beta.46" - "@babel/plugin-transform-duplicate-keys" "7.0.0-beta.46" - "@babel/plugin-transform-exponentiation-operator" "7.0.0-beta.46" - "@babel/plugin-transform-for-of" "7.0.0-beta.46" - "@babel/plugin-transform-function-name" "7.0.0-beta.46" - "@babel/plugin-transform-literals" "7.0.0-beta.46" - "@babel/plugin-transform-modules-amd" "7.0.0-beta.46" - "@babel/plugin-transform-modules-commonjs" "7.0.0-beta.46" - "@babel/plugin-transform-modules-systemjs" "7.0.0-beta.46" - "@babel/plugin-transform-modules-umd" "7.0.0-beta.46" - "@babel/plugin-transform-new-target" "7.0.0-beta.46" - "@babel/plugin-transform-object-super" "7.0.0-beta.46" - "@babel/plugin-transform-parameters" "7.0.0-beta.46" - "@babel/plugin-transform-regenerator" "7.0.0-beta.46" - "@babel/plugin-transform-shorthand-properties" "7.0.0-beta.46" - "@babel/plugin-transform-spread" "7.0.0-beta.46" - "@babel/plugin-transform-sticky-regex" "7.0.0-beta.46" - "@babel/plugin-transform-template-literals" "7.0.0-beta.46" - "@babel/plugin-transform-typeof-symbol" "7.0.0-beta.46" - "@babel/plugin-transform-unicode-regex" "7.0.0-beta.46" + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0-beta.47.tgz#a3dab3b5fac4de56e3510bdbcb528f1cbdedbe2d" + dependencies: + "@babel/helper-module-imports" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/plugin-proposal-async-generator-functions" "7.0.0-beta.47" + "@babel/plugin-proposal-object-rest-spread" "7.0.0-beta.47" + "@babel/plugin-proposal-optional-catch-binding" "7.0.0-beta.47" + "@babel/plugin-proposal-unicode-property-regex" "7.0.0-beta.47" + "@babel/plugin-syntax-async-generators" "7.0.0-beta.47" + "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.47" + "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.47" + "@babel/plugin-transform-arrow-functions" "7.0.0-beta.47" + "@babel/plugin-transform-async-to-generator" "7.0.0-beta.47" + "@babel/plugin-transform-block-scoped-functions" "7.0.0-beta.47" + "@babel/plugin-transform-block-scoping" "7.0.0-beta.47" + "@babel/plugin-transform-classes" "7.0.0-beta.47" + "@babel/plugin-transform-computed-properties" "7.0.0-beta.47" + "@babel/plugin-transform-destructuring" "7.0.0-beta.47" + "@babel/plugin-transform-dotall-regex" "7.0.0-beta.47" + "@babel/plugin-transform-duplicate-keys" "7.0.0-beta.47" + "@babel/plugin-transform-exponentiation-operator" "7.0.0-beta.47" + "@babel/plugin-transform-for-of" "7.0.0-beta.47" + "@babel/plugin-transform-function-name" "7.0.0-beta.47" + "@babel/plugin-transform-literals" "7.0.0-beta.47" + "@babel/plugin-transform-modules-amd" "7.0.0-beta.47" + "@babel/plugin-transform-modules-commonjs" "7.0.0-beta.47" + "@babel/plugin-transform-modules-systemjs" "7.0.0-beta.47" + "@babel/plugin-transform-modules-umd" "7.0.0-beta.47" + "@babel/plugin-transform-new-target" "7.0.0-beta.47" + "@babel/plugin-transform-object-super" "7.0.0-beta.47" + "@babel/plugin-transform-parameters" "7.0.0-beta.47" + "@babel/plugin-transform-regenerator" "7.0.0-beta.47" + "@babel/plugin-transform-shorthand-properties" "7.0.0-beta.47" + "@babel/plugin-transform-spread" "7.0.0-beta.47" + "@babel/plugin-transform-sticky-regex" "7.0.0-beta.47" + "@babel/plugin-transform-template-literals" "7.0.0-beta.47" + "@babel/plugin-transform-typeof-symbol" "7.0.0-beta.47" + "@babel/plugin-transform-unicode-regex" "7.0.0-beta.47" browserslist "^3.0.0" invariant "^2.2.2" semver "^5.3.0" "@babel/preset-react@^7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0-beta.46.tgz#f2c7f05ce0c9f1bf25516f1acaf00ca0dfc1bfa5" + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0-beta.47.tgz#888bd3b7e1caffa89cdd639687227c51bd0a2e99" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.46" - "@babel/plugin-syntax-jsx" "7.0.0-beta.46" - "@babel/plugin-transform-react-display-name" "7.0.0-beta.46" - "@babel/plugin-transform-react-jsx" "7.0.0-beta.46" - "@babel/plugin-transform-react-jsx-self" "7.0.0-beta.46" - "@babel/plugin-transform-react-jsx-source" "7.0.0-beta.46" + "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/plugin-syntax-jsx" "7.0.0-beta.47" + "@babel/plugin-transform-react-display-name" "7.0.0-beta.47" + "@babel/plugin-transform-react-jsx" "7.0.0-beta.47" + "@babel/plugin-transform-react-jsx-self" "7.0.0-beta.47" + "@babel/plugin-transform-react-jsx-source" "7.0.0-beta.47" -"@babel/register@^7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0-beta.46.tgz#695629b28902b832be02b418c96e17e6b099e9d5" +"@babel/register@^7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0-beta.47.tgz#ac53bc357ca59979db0e306aa5d3121aa612a7a2" dependencies: core-js "^2.5.3" find-cache-dir "^1.0.0" home-or-tmp "^3.0.0" - lodash "^4.2.0" + lodash "^4.17.5" mkdirp "^0.5.1" pirates "^3.0.1" source-map-support "^0.4.2" @@ -646,14 +646,14 @@ babylon "7.0.0-beta.44" lodash "^4.2.0" -"@babel/template@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.46.tgz#8b23982411d5b5dbfa479437bfe414adb1411bb9" +"@babel/template@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.47.tgz#0473970a7c0bee7a1a18c1ca999d3ba5e5bad83d" dependencies: - "@babel/code-frame" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" - babylon "7.0.0-beta.46" - lodash "^4.2.0" + "@babel/code-frame" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" + babylon "7.0.0-beta.47" + lodash "^4.17.5" "@babel/traverse@7.0.0-beta.44": version "7.0.0-beta.44" @@ -670,20 +670,20 @@ invariant "^2.2.0" lodash "^4.2.0" -"@babel/traverse@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.46.tgz#29a0c0395b3642f0297e6f8e475bde89f9343755" +"@babel/traverse@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.47.tgz#0e57fdbb9ff3a909188b6ebf1e529c641e6c82a4" dependencies: - "@babel/code-frame" "7.0.0-beta.46" - "@babel/generator" "7.0.0-beta.46" - "@babel/helper-function-name" "7.0.0-beta.46" - "@babel/helper-split-export-declaration" "7.0.0-beta.46" - "@babel/types" "7.0.0-beta.46" - babylon "7.0.0-beta.46" + "@babel/code-frame" "7.0.0-beta.47" + "@babel/generator" "7.0.0-beta.47" + "@babel/helper-function-name" "7.0.0-beta.47" + "@babel/helper-split-export-declaration" "7.0.0-beta.47" + "@babel/types" "7.0.0-beta.47" + babylon "7.0.0-beta.47" debug "^3.1.0" globals "^11.1.0" invariant "^2.2.0" - lodash "^4.2.0" + lodash "^4.17.5" "@babel/types@7.0.0-beta.44": version "7.0.0-beta.44" @@ -693,12 +693,12 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@babel/types@7.0.0-beta.46": - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.46.tgz#eb84399a699af9fcb244440cce78e1acbeb40e0c" +"@babel/types@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.47.tgz#e6fcc1a691459002c2671d558a586706dddaeef8" dependencies: esutils "^2.0.2" - lodash "^4.2.0" + lodash "^4.17.5" to-fast-properties "^2.0.0" "@concordance/react@^1.0.0": @@ -723,6 +723,16 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@nodelib/fs.stat@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.0.2.tgz#d056b68999769728a1cff8d643bc59eb6f0be436" + +"@sinonjs/formatio@^2.0.0": + version "2.0.0" + resolved "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz#84db7e9eb5531df18a8c5e0bfb6e449e55e654b2" + dependencies: + samsam "1.3.0" + "@verdaccio/file-locking@0.0.7", "@verdaccio/file-locking@^0.0.7": version "0.0.7" resolved "https://registry.yarnpkg.com/@verdaccio/file-locking/-/file-locking-0.0.7.tgz#5fd1b2bd391e54fa32d079002b5f7ba90844e344" @@ -745,116 +755,120 @@ version "1.0.0" resolved "https://registry.yarnpkg.com/@verdaccio/streams/-/streams-1.0.0.tgz#d5d24c6747208728b9fd16b908e3932c3fb1f864" -"@webassemblyjs/ast@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.2.tgz#ab715aa1fec9dd23c025204dba39690c119418ea" +"@webassemblyjs/ast@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.3.tgz#3b3f6fced944d8660273347533e6d4d315b5934a" dependencies: - "@webassemblyjs/helper-wasm-bytecode" "1.4.2" - "@webassemblyjs/wast-parser" "1.4.2" + "@webassemblyjs/helper-wasm-bytecode" "1.4.3" + "@webassemblyjs/wast-parser" "1.4.3" debug "^3.1.0" - webassemblyjs "1.4.2" + webassemblyjs "1.4.3" -"@webassemblyjs/floating-point-hex-parser@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.2.tgz#9296fb64caa37bf98c8064aa329680e3e2bfacc7" +"@webassemblyjs/floating-point-hex-parser@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz#f5aee4c376a717c74264d7bacada981e7e44faad" -"@webassemblyjs/helper-buffer@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.2.tgz#3cacecd5a6bfcb67932ed8219f81f92d8b2dafbb" +"@webassemblyjs/helper-buffer@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz#0434b55958519bf503697d3824857b1dea80b729" + dependencies: + debug "^3.1.0" -"@webassemblyjs/helper-code-frame@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.2.tgz#20526637c3849f12b08f8661248477eef9642329" +"@webassemblyjs/helper-code-frame@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz#f1349ca3e01a8e29ee2098c770773ef97af43641" dependencies: - "@webassemblyjs/wast-printer" "1.4.2" + "@webassemblyjs/wast-printer" "1.4.3" -"@webassemblyjs/helper-fsm@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.2.tgz#e41050282994b5be077b95b65b66ecd5a92c5e88" +"@webassemblyjs/helper-fsm@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz#65a921db48fb43e868f17b27497870bdcae22b79" -"@webassemblyjs/helper-wasm-bytecode@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.2.tgz#b48c289c7921056aa12d71e78a17070ffe90c49c" +"@webassemblyjs/helper-wasm-bytecode@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz#0e5b4b5418e33f8a26e940b7809862828c3721a5" -"@webassemblyjs/helper-wasm-section@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.2.tgz#520e02c0cc3e5e9b5f44f58abc04ba5eda6e5476" +"@webassemblyjs/helper-wasm-section@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz#9ceedd53a3f152c3412e072887ade668d0b1acbf" dependencies: - "@webassemblyjs/ast" "1.4.2" - "@webassemblyjs/helper-buffer" "1.4.2" - "@webassemblyjs/helper-wasm-bytecode" "1.4.2" - "@webassemblyjs/wasm-gen" "1.4.2" + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/helper-buffer" "1.4.3" + "@webassemblyjs/helper-wasm-bytecode" "1.4.3" + "@webassemblyjs/wasm-gen" "1.4.3" + debug "^3.1.0" -"@webassemblyjs/leb128@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.2.tgz#d13f368abdcefc54428f55a265a993de610f8893" +"@webassemblyjs/leb128@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.3.tgz#5a5e5949dbb5adfe3ae95664d0439927ac557fb8" dependencies: leb "^0.3.0" -"@webassemblyjs/validation@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.2.tgz#55cf5b219e25900c85773fc35beb9d12ae0ede53" +"@webassemblyjs/validation@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.3.tgz#9e66c9b3079d7bbcf2070c1bf52a54af2a09aac9" dependencies: - "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/ast" "1.4.3" -"@webassemblyjs/wasm-edit@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.2.tgz#bde9a581065f63f257ed511d7d9cf04f8cd04524" - dependencies: - "@webassemblyjs/ast" "1.4.2" - "@webassemblyjs/helper-buffer" "1.4.2" - "@webassemblyjs/helper-wasm-bytecode" "1.4.2" - "@webassemblyjs/helper-wasm-section" "1.4.2" - "@webassemblyjs/wasm-gen" "1.4.2" - "@webassemblyjs/wasm-opt" "1.4.2" - "@webassemblyjs/wasm-parser" "1.4.2" - "@webassemblyjs/wast-printer" "1.4.2" +"@webassemblyjs/wasm-edit@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz#87febd565e0ffb5ae25f6495bb3958d17aa0a779" + dependencies: + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/helper-buffer" "1.4.3" + "@webassemblyjs/helper-wasm-bytecode" "1.4.3" + "@webassemblyjs/helper-wasm-section" "1.4.3" + "@webassemblyjs/wasm-gen" "1.4.3" + "@webassemblyjs/wasm-opt" "1.4.3" + "@webassemblyjs/wasm-parser" "1.4.3" + "@webassemblyjs/wast-printer" "1.4.3" debug "^3.1.0" -"@webassemblyjs/wasm-gen@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.2.tgz#0899297f9426073736df799287845a73c597cf90" +"@webassemblyjs/wasm-gen@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz#8553164d0154a6be8f74d653d7ab355f73240aa4" dependencies: - "@webassemblyjs/ast" "1.4.2" - "@webassemblyjs/helper-wasm-bytecode" "1.4.2" - "@webassemblyjs/leb128" "1.4.2" + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/helper-wasm-bytecode" "1.4.3" + "@webassemblyjs/leb128" "1.4.3" -"@webassemblyjs/wasm-opt@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.2.tgz#c44ad48e109aec197e3bf69875c54537d76ba2e9" +"@webassemblyjs/wasm-opt@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz#26c7a23bfb136aa405b1d3410e63408ec60894b8" dependencies: - "@webassemblyjs/ast" "1.4.2" - "@webassemblyjs/helper-buffer" "1.4.2" - "@webassemblyjs/wasm-gen" "1.4.2" - "@webassemblyjs/wasm-parser" "1.4.2" + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/helper-buffer" "1.4.3" + "@webassemblyjs/wasm-gen" "1.4.3" + "@webassemblyjs/wasm-parser" "1.4.3" + debug "^3.1.0" -"@webassemblyjs/wasm-parser@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.2.tgz#3bf7e10cfe336db0ecdea0a5d7ed8a63b7a7754a" +"@webassemblyjs/wasm-parser@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz#7ddd3e408f8542647ed612019cfb780830993698" dependencies: - "@webassemblyjs/ast" "1.4.2" - "@webassemblyjs/helper-wasm-bytecode" "1.4.2" - "@webassemblyjs/leb128" "1.4.2" - "@webassemblyjs/wasm-parser" "1.4.2" - webassemblyjs "1.4.2" + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/helper-wasm-bytecode" "1.4.3" + "@webassemblyjs/leb128" "1.4.3" + "@webassemblyjs/wasm-parser" "1.4.3" + webassemblyjs "1.4.3" -"@webassemblyjs/wast-parser@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.2.tgz#6499c38cf8895a81394f7e40d4681a85aaa84498" +"@webassemblyjs/wast-parser@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz#3250402e2c5ed53dbe2233c9de1fe1f9f0d51745" dependencies: - "@webassemblyjs/ast" "1.4.2" - "@webassemblyjs/floating-point-hex-parser" "1.4.2" - "@webassemblyjs/helper-code-frame" "1.4.2" - "@webassemblyjs/helper-fsm" "1.4.2" + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/floating-point-hex-parser" "1.4.3" + "@webassemblyjs/helper-code-frame" "1.4.3" + "@webassemblyjs/helper-fsm" "1.4.3" long "^3.2.0" - webassemblyjs "1.4.2" + webassemblyjs "1.4.3" -"@webassemblyjs/wast-printer@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.2.tgz#ee70a828f0d9730b55b9a5c3ed694094ba68ba57" +"@webassemblyjs/wast-printer@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz#3d59aa8d0252d6814a3ef4e6d2a34c9ded3904e0" dependencies: - "@webassemblyjs/ast" "1.4.2" - "@webassemblyjs/wast-parser" "1.4.2" + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/wast-parser" "1.4.3" long "^3.2.0" JSONStream@1.3.2, JSONStream@^1.0.4: @@ -872,10 +886,6 @@ abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - accepts@~1.3.4, accepts@~1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" @@ -913,20 +923,6 @@ add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" -addressparser@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - -agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.0.tgz#9838b5c3392b962bad031e6a4c5e1024abec45ce" - dependencies: - es6-promisify "^5.0.0" - ajv-keywords@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" @@ -969,16 +965,6 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -amqplib@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.2.tgz#d2d7313c7ffaa4d10bcf1e6252de4591b6cc7b63" - dependencies: - bitsyntax "~0.0.4" - bluebird "^3.4.6" - buffer-more-ints "0.0.2" - readable-stream "1.x >=1.1.9" - safe-buffer "^5.0.1" - ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -1152,10 +1138,6 @@ array-iterate@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.2.tgz#f66a57e84426f8097f4197fbb6c051b8e5cdf7d8" -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -1174,10 +1156,6 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -1202,10 +1180,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" @@ -1224,10 +1198,6 @@ ast-types@0.9.6: version "0.9.6" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" -ast-types@0.x.x: - version "0.11.3" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" - astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -1248,16 +1218,16 @@ async-throttle@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/async-throttle/-/async-throttle-1.1.0.tgz#229e7f3fa7a2a797e86f360e6309a08224d4fa7a" -async@1.x, async@^1.4.0, async@^1.5.0, async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@2.6.0, async@^2.0.0, async@^2.1.4, async@^2.6.0, async@~2.6.0: +async@2.6.0, async@^2.1.4, async@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: lodash "^4.14.0" +async@^1.4.0, async@^1.5.0, async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1401,24 +1371,14 @@ ava@^0.25.0: unique-temp-dir "^1.0.0" update-notifier "^2.3.0" -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" -aws4@^1.2.1, aws4@^1.6.0: +aws4@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" -axios@^0.15.3: - version "0.15.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" - dependencies: - follow-redirects "1.0.0" - axobject-query@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0" @@ -1736,7 +1696,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.0.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -1780,18 +1740,14 @@ babylon@7.0.0-beta.44: version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" -babylon@7.0.0-beta.46: - version "7.0.0-beta.46" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.46.tgz#b6ddaba81bbb130313932757ff9c195d527088b6" +babylon@7.0.0-beta.47: + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80" babylon@^6.1.0, babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - bail@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.3.tgz#63cfb9ddbac829b02a3128cd53224be78e6c21a3" @@ -1804,10 +1760,6 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - base64-js@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" @@ -1816,10 +1768,6 @@ base64-js@^1.0.2: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -1850,12 +1798,6 @@ beeper@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - dependencies: - callsite "1.0.0" - big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -1922,12 +1864,6 @@ binaryextensions@2: version "2.1.1" resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" -bitsyntax@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/bitsyntax/-/bitsyntax-0.0.4.tgz#eb10cc6f82b8c490e3e85698f07e83d46e0cba82" - dependencies: - buffer-more-ints "0.0.2" - bl@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" @@ -1935,17 +1871,7 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" -bl@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" - dependencies: - readable-stream "~2.0.5" - -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" - -bluebird@^3.0.0, bluebird@^3.1.1, bluebird@^3.3.0, bluebird@^3.4.6, bluebird@^3.5.1: +bluebird@^3.0.0, bluebird@^3.1.1, bluebird@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" @@ -1953,7 +1879,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" -body-parser@1.18.2, body-parser@^1.16.1: +body-parser@1.18.2: version "1.18.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" dependencies: @@ -1983,12 +1909,6 @@ boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - boom@4.x.x: version "4.3.1" resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" @@ -2020,12 +1940,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^0.1.2: - version "0.1.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" - dependencies: - expand-range "^0.1.0" - braces@^1.8.2: version "1.8.5" resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" @@ -2063,10 +1977,6 @@ browser-resolve@^1.11.2: dependencies: resolve "1.1.7" -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -2185,10 +2095,6 @@ buffer-indexof@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" -buffer-more-ints@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-0.0.2.tgz#26b3885d10fa13db7fc01aae3aab870199e0124c" - buffer-to-vinyl@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz#00f15faee3ab7a1dda2cde6d9121bffdd07b2262" @@ -2218,18 +2124,6 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buildmail@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" - dependencies: - addressparser "1.0.1" - libbase64 "0.1.0" - libmime "3.0.0" - libqp "1.1.0" - nodemailer-fetch "1.6.0" - nodemailer-shared "1.1.0" - punycode "1.4.1" - builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -2318,10 +2212,6 @@ caller-path@^0.1.0: dependencies: callsites "^0.2.0" -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" @@ -2330,7 +2220,7 @@ callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" -camel-case@3.0.x, camel-case@^3.0.0: +camel-case@3.0.x: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" dependencies: @@ -2374,12 +2264,12 @@ caniuse-api@^1.5.2: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000839" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000839.tgz#55a86e402c74ae17149707bea3ea399522233497" + version "1.0.30000840" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000840.tgz#68d5a0f0694c92180b0d82e720d70f8e61366604" caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30000835: - version "1.0.30000839" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000839.tgz#41fcc036cf1cb77a0e0be041210f77f1ced44a7b" + version "1.0.30000840" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000840.tgz#344513f8f843536cf99694964c09811277eee395" capture-exit@^1.2.0: version "1.2.0" @@ -2391,10 +2281,6 @@ capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -2454,29 +2340,6 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -change-case@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" - dependencies: - camel-case "^3.0.0" - constant-case "^2.0.0" - dot-case "^2.1.0" - header-case "^1.0.0" - is-lower-case "^1.1.0" - is-upper-case "^1.1.0" - lower-case "^1.1.1" - lower-case-first "^1.0.0" - no-case "^2.3.2" - param-case "^2.1.0" - pascal-case "^2.0.0" - path-case "^2.1.0" - sentence-case "^2.1.0" - snake-case "^2.1.0" - swap-case "^1.1.0" - title-case "^2.1.0" - upper-case "^1.1.1" - upper-case-first "^1.1.0" - character-entities-html4@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.2.tgz#c44fdde3ce66b52e8d321d6c1bf46101f0150610" @@ -2497,7 +2360,7 @@ chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" -chokidar@^1.4.1, chokidar@^1.4.2: +chokidar@^1.4.2: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: @@ -2553,10 +2416,6 @@ circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" -circular-json@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.4.tgz#ff1ad2f2e392eeb8a5172d4d985fa846ed8ad656" - clap@^1.0.9: version "1.2.3" resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" @@ -2612,7 +2471,7 @@ cli-spinners@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" -cli-spinners@^1.0.0, cli-spinners@^1.1.0: +cli-spinners@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" @@ -2797,10 +2656,6 @@ colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" -colors@^1.1.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" - colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -2812,13 +2667,7 @@ columnify@^1.5.4: strip-ansi "^3.0.0" wcwidth "^1.0.0" -combine-lists@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" - dependencies: - lodash "^4.5.0" - -combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: +combined-stream@1.0.6, combined-stream@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" dependencies: @@ -2832,10 +2681,6 @@ command-join@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/command-join/-/command-join-2.0.0.tgz#52e8b984f4872d952ff1bdc8b98397d27c7144cf" -commander@2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" - commander@2.15.0: version "2.15.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322" @@ -2870,21 +2715,13 @@ compare-func@^1.3.1: dot-prop "^3.0.0" compare-versions@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.1.0.tgz#43310256a5c555aaed4193c04d8f154cf9c6efd5" - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + version "3.2.1" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.2.1.tgz#a49eb7689d4caaf0b6db5220173fd279614000f7" -component-emitter@1.2.1, component-emitter@^1.2.1: +component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - compressible@~2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9" @@ -2932,13 +2769,6 @@ concordance@^3.0.0: semver "^5.3.0" well-known-symbols "^1.0.0" -concurrify@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/concurrify/-/concurrify-1.0.3.tgz#591f4675271b5ee5b90ef209eadda37b782e735b" - dependencies: - sanctuary-type-classes "^8.0.0" - sanctuary-type-identifiers "^2.0.0" - config-chain@^1.1.11: version "1.1.11" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" @@ -2961,15 +2791,6 @@ connect-history-api-fallback@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" -connect@^3.6.0: - version "3.6.6" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" - dependencies: - debug "2.6.9" - finalhandler "1.1.0" - parseurl "~1.3.2" - utils-merge "1.0.1" - console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" @@ -2990,13 +2811,6 @@ consolidate@^0.14.0: dependencies: bluebird "^3.1.1" -constant-case@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" - dependencies: - snake-case "^2.1.0" - upper-case "^1.1.1" - constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -3225,7 +3039,7 @@ core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" -core-js@^2.0.0, core-js@^2.2.0, core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3: +core-js@^2.0.0, core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3: version "2.5.6" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.6.tgz#0fe6d45bf3cac3ac364a9d72de7576f4eb221b9d" @@ -3329,12 +3143,6 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - cryptiles@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" @@ -3506,10 +3314,6 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - cwebp-bin@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cwebp-bin/-/cwebp-bin-4.0.0.tgz#ee2b7f6333d3426fb52bb405fa6f2ec8b62894f4" @@ -3548,10 +3352,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-uri-to-buffer@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" - data-urls@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.0.tgz#24802de4e81c298ea8a9388bb0d8e461c774684f" @@ -3564,10 +3364,6 @@ date-fns@1.29.0, date-fns@^1.27.2: version "1.29.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" -date-format@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" - date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" @@ -3582,13 +3378,6 @@ date-time@^2.1.0: dependencies: time-zone "^1.0.0" -dateformat@^1.0.6: - version "1.0.12" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" - dependencies: - get-stdin "^4.0.1" - meow "^3.3.0" - dateformat@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" @@ -3605,13 +3394,13 @@ debug-log@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" -debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9, debug@~2.6.4, debug@~2.6.6: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@3.1.0, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@~3.1.0: +debug@^3.0.0, debug@^3.0.1, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: @@ -3818,14 +3607,6 @@ defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" -degenerator@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" - dependencies: - ast-types "0.x.x" - escodegen "1.x.x" - esprima "3.x.x" - del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -3857,10 +3638,6 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -denque@^1.1.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/denque/-/denque-1.2.3.tgz#98c50c8dd8cdfae318cc5859cc8ee3da0f9b0cc2" - depd@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" @@ -3906,11 +3683,7 @@ detect-node@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - -diff@3.5.0, diff@^3.1.0, diff@^3.2.0, diff@^3.3.1: +diff@^3.1.0, diff@^3.2.0, diff@^3.3.1: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -3965,15 +3738,6 @@ dom-converter@~0.1: dependencies: utila "~0.3" -dom-serialize@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - dom-serializer@0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" @@ -4035,12 +3799,6 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" -dot-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" - dependencies: - no-case "^2.2.0" - dot-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" @@ -4053,10 +3811,6 @@ dot-prop@^4.1.0, dot-prop@^4.1.1: dependencies: is-obj "^1.0.0" -double-ended-queue@^2.1.0-0: - version "2.1.0-0" - resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" - download@^4.0.0, download@^4.1.2: version "4.4.3" resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac" @@ -4160,8 +3914,8 @@ ejs@^2.3.4, ejs@^2.5.9: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.45: - version "1.3.45" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz#458ac1b1c5c760ce8811a16d2bfbd97ec30bafb8" + version "1.3.46" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.46.tgz#00e85e22275415a887505e4ab49737194f18b9b0" elegant-spinner@^1.0.1: version "1.0.1" @@ -4194,7 +3948,7 @@ empower-core@^0.6.1: call-signature "0.0.2" core-js "^2.0.0" -encodeurl@~1.0.1, encodeurl@~1.0.2: +encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -4210,45 +3964,6 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -engine.io-client@~3.1.0: - version "3.1.6" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.6.tgz#5bdeb130f8b94a50ac5cbeb72583e7a4a063ddfd" - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary2 "~1.0.2" - -engine.io@~3.1.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845" - dependencies: - accepts "~1.3.4" - base64id "1.0.0" - cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~3.3.1" - optionalDependencies: - uws "~9.14.0" - enhanced-resolve@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" @@ -4257,10 +3972,6 @@ enhanced-resolve@^4.0.0: memory-fs "^0.4.0" tapable "^1.0.0" -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -4332,16 +4043,6 @@ es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" -es6-promise@^4.0.3: - version "4.2.4" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - dependencies: - es6-promise "^4.0.3" - es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" @@ -4360,22 +4061,11 @@ escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, 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.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -escodegen@1.x.x, escodegen@^1.9.0: +escodegen@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" dependencies: @@ -4494,8 +4184,8 @@ eslint-plugin-promise@^3.7.0: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.7.0.tgz#f4bde5c2c77cdd69557a8f69a24d1ad3cfc9e67e" eslint-plugin-react@^7.7.0: - version "7.8.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.8.1.tgz#6bfb5288227645eb7ca3ba8810b87024e0d6c993" + version "7.8.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.8.2.tgz#e95c9c47fece55d2303d1a67c9d01b930b88a51d" dependencies: doctrine "^2.0.2" has "^1.0.1" @@ -4590,11 +4280,11 @@ espree@^3.5.2, espree@^3.5.4: acorn "^5.5.0" acorn-jsx "^3.0.0" -esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: +esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@3.x.x, esprima@^3.1.3, esprima@~3.1.0: +esprima@^3.1.3, esprima@~3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -4620,10 +4310,6 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -4748,14 +4434,6 @@ exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" -expand-braces@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" - dependencies: - array-slice "^0.2.3" - array-unique "^0.2.1" - braces "^0.1.2" - expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -4774,13 +4452,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" - dependencies: - is-number "^0.1.1" - repeat-string "^0.2.2" - expand-range@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" @@ -4859,11 +4530,11 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: +extend@^3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" -external-editor@^2.0.4: +external-editor@^2.0.4, external-editor@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" dependencies: @@ -4919,10 +4590,11 @@ fast-diff@^1.1.1: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" fast-glob@^2.0.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.1.tgz#686c2345be88f3741e174add0be6f2e5b6078889" + version "2.2.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.2.tgz#71723338ac9b4e0e2fff1d6748a2a13d5ed352bf" dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.0.1" glob-parent "^3.1.0" is-glob "^4.0.0" merge2 "^1.2.1" @@ -5019,10 +4691,6 @@ file-type@^6.1.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" -file-uri-to-path@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -5077,18 +4745,6 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -finalhandler@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - finalhandler@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" @@ -5173,26 +4829,10 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" -fluture@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/fluture/-/fluture-8.0.2.tgz#015f8b36b994188fb33d3bfa0da327b520a5e047" - dependencies: - concurrify "^1.0.0" - denque "^1.1.1" - inspect-f "^1.2.0" - sanctuary-type-classes "^8.0.0" - sanctuary-type-identifiers "^2.0.0" - fn-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" -follow-redirects@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" - dependencies: - debug "^2.2.0" - follow-redirects@^1.0.0: version "1.4.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.4.1.tgz#d8120f4518190f55aac65bb6fc7b85fcd666d6aa" @@ -5224,15 +4864,7 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -form-data@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.11" - -form-data@~2.3.0, form-data@~2.3.1: +form-data@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" dependencies: @@ -5240,12 +4872,6 @@ form-data@~2.3.0, form-data@~2.3.1: combined-stream "1.0.6" mime-types "^2.1.12" -formatio@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" - dependencies: - samsam "1.x" - forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -5267,12 +4893,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-access@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" - dependencies: - null-check "^1.0.0" - fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -5331,18 +4951,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" fsevents@^1.0.0, fsevents@^1.1.2, fsevents@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.3.tgz#08292982e7059f6674c93d8b829c1e8604979ac0" + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" dependencies: nan "^2.9.2" - node-pre-gyp "^0.9.0" - -ftp@~0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" + node-pre-gyp "^0.10.0" function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: version "1.1.1" @@ -5369,16 +4982,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" @@ -5432,17 +5035,6 @@ get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" -get-uri@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.1.tgz#dbdcacacd8c608a38316869368117697a1631c59" - dependencies: - data-uri-to-buffer "1" - debug "2" - extend "3" - file-uri-to-path "1" - ftp "~0.3.10" - readable-stream "2" - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -5541,18 +5133,7 @@ glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" -glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^5.0.15, glob@^5.0.3: +glob@^5.0.3: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" dependencies: @@ -5572,7 +5153,18 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" dependencies: @@ -5625,7 +5217,7 @@ globby@^7.0.0, globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -globby@^8.0.0: +globby@^8.0.0, globby@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" dependencies: @@ -5722,10 +5314,6 @@ grouped-queue@^0.3.3: dependencies: lodash "^4.17.2" -growl@1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" - growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -5740,8 +5328,8 @@ gulp-decompress@^1.2.0: readable-stream "^2.0.2" gulp-rename@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" + version "1.2.3" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.3.tgz#37b75298e9d3e6c0fe9ac4eac13ce3be5434646b" gulp-sourcemaps@1.6.0: version "1.6.0" @@ -5786,7 +5374,7 @@ handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" -handlebars@4.0.11, handlebars@^4.0.1, handlebars@^4.0.11, handlebars@^4.0.2, handlebars@^4.0.3: +handlebars@4.0.11, handlebars@^4.0.11, handlebars@^4.0.2, handlebars@^4.0.3: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" dependencies: @@ -5800,15 +5388,6 @@ har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -5822,20 +5401,10 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-binary2@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" - dependencies: - isarray "2.0.1" - has-color@~0.1.0: version "0.1.7" resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -5927,15 +5496,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.0" -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - hawk@~6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" @@ -5945,24 +5505,10 @@ hawk@~6.0.2: hoek "4.x.x" sntp "2.x.x" -he@1.1.1, he@1.1.x, he@^1.1.0: +he@1.1.x, he@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" -header-case@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d" - dependencies: - no-case "^2.2.0" - upper-case "^1.1.3" - -hipchat-notifier@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e" - dependencies: - lodash "^4.0.0" - request "^2.0.0" - hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -5971,10 +5517,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - hoek@4.x.x: version "4.2.1" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" @@ -6109,13 +5651,6 @@ http-parser-js@>=0.4.0: version "0.4.12" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.12.tgz#b9cfbf4a2cf26f0fc34b10ca1489a27771e3474f" -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - dependencies: - agent-base "4" - debug "3.1.0" - http-proxy-middleware@~0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" @@ -6125,7 +5660,7 @@ http-proxy-middleware@~0.18.0: lodash "^4.17.5" micromatch "^3.1.9" -http-proxy@^1.13.0, http-proxy@^1.16.2: +http-proxy@^1.16.2: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" dependencies: @@ -6133,14 +5668,6 @@ http-proxy@^1.13.0, http-proxy@^1.16.2: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -6149,28 +5676,10 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -httpntlm@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/httpntlm/-/httpntlm-1.6.1.tgz#ad01527143a2e8773cfae6a96f58656bb52a34b2" - dependencies: - httpreq ">=0.4.22" - underscore "~1.7.0" - -httpreq@>=0.4.22: - version "0.4.24" - resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f" - https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" -https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" - hullabaloo-config-manager@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz#1d9117813129ad035fd9e8477eaf066911269fe3" @@ -6198,15 +5707,11 @@ husky@^0.14.3: normalize-path "^1.0.0" strip-indent "^2.0.0" -iconv-lite@0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" - iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" -iconv-lite@0.4.23, iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" dependencies: @@ -6307,14 +5812,6 @@ imagemin@^5.3.1: pify "^2.3.0" replace-ext "^1.0.0" -immutable-ext@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/immutable-ext/-/immutable-ext-1.1.5.tgz#3cdf27a067527c85817bf161a0dad1361ed579cb" - -immutable@^3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -6355,14 +5852,6 @@ indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" -inflection@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" - -inflection@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.3.8.tgz#cbd160da9f75b14c3cc63578d4f396784bf3014e" - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -6382,7 +5871,7 @@ ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" -inquirer@^3.0.1, inquirer@^3.0.6, inquirer@^3.2.2, inquirer@^3.3.0: +inquirer@^3.0.6, inquirer@^3.2.2: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" dependencies: @@ -6401,9 +5890,23 @@ inquirer@^3.0.1, inquirer@^3.0.6, inquirer@^3.2.2, inquirer@^3.3.0: strip-ansi "^4.0.0" through "^2.3.6" -inspect-f@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/inspect-f/-/inspect-f-1.2.2.tgz#7572803dc59099850e51d5c94f3d7962df10e46d" +inquirer@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" internal-ip@1.2.0: version "1.2.0" @@ -6429,7 +5932,7 @@ 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.0, ip@^1.1.2, ip@^1.1.4, ip@^1.1.5: +ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -6651,26 +6154,6 @@ is-jpg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-1.0.1.tgz#296d57fdd99ce010434a7283e346ab9a1035e975" -is-lower-case@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" - dependencies: - lower-case "^1.1.0" - -is-my-ip-valid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" - -is-my-json-valid@^2.12.4: - version "2.17.2" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - is-my-ip-valid "^1.0.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - is-natural-number@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7" @@ -6683,10 +6166,6 @@ is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" -is-number@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" - is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -6775,10 +6254,6 @@ is-promise@~1, is-promise@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5" -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -6847,12 +6322,6 @@ is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" -is-upper-case@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" - dependencies: - upper-case "^1.1.0" - is-url@^1.2.0, is-url@^1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" @@ -6893,11 +6362,7 @@ 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@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - -isbinaryfile@^3.0.0, isbinaryfile@^3.0.2: +isbinaryfile@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" @@ -7021,25 +6486,6 @@ istanbul-reports@^1.4.0: dependencies: handlebars "^4.0.3" -istanbul@^0.4.0: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - istextorbinary@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" @@ -7315,6 +6761,13 @@ jest-worker@^22.4.3: dependencies: merge-stream "^1.0.1" +jest@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.3.tgz#2261f4b117dc46d9a4a1a673d2150958dee92f16" + dependencies: + import-local "^1.0.0" + jest-cli "^22.4.3" + js-base64@^2.1.9: version "2.4.3" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" @@ -7327,7 +6780,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@3.11.0, js-yaml@3.x, js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@3.11.0, js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" dependencies: @@ -7417,7 +6870,7 @@ json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-safe@5.0.x, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -7449,10 +6902,6 @@ jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - jsonwebtoken@8.2.1: version "8.2.1" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz#333ee39aa8f238f32fa41693e7a2fb7e42f82b31" @@ -7483,6 +6932,10 @@ jsx-ast-utils@^2.0.0, jsx-ast-utils@^2.0.1: dependencies: array-includes "^3.0.3" +just-extend@^1.1.27: + version "1.1.27" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.27.tgz#ec6e79410ff914e472652abfa0e603c03d60e905" + jwa@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.6.tgz#87240e76c9808dbde18783cf2264ef4929ee50e6" @@ -7498,80 +6951,6 @@ jws@^3.1.4: jwa "^1.1.5" safe-buffer "^5.0.1" -karma-chrome-launcher@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" - dependencies: - fs-access "^1.0.0" - which "^1.2.1" - -karma-coverage@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.2.tgz#cc09dceb589a83101aca5fe70c287645ef387689" - dependencies: - dateformat "^1.0.6" - istanbul "^0.4.0" - lodash "^4.17.0" - minimatch "^3.0.0" - source-map "^0.5.1" - -karma-mocha-reporter@^2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz#15120095e8ed819186e47a0b012f3cd741895560" - dependencies: - chalk "^2.1.0" - log-symbols "^2.1.0" - strip-ansi "^4.0.0" - -karma-mocha@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf" - dependencies: - minimist "1.2.0" - -karma-webpack@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-3.0.0.tgz#bf009c5b73c667c11c015717e9e520f581317c44" - dependencies: - async "^2.0.0" - babel-runtime "^6.0.0" - loader-utils "^1.0.0" - lodash "^4.0.0" - source-map "^0.5.6" - webpack-dev-middleware "^2.0.6" - -karma@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.2.tgz#4d2db9402850a66551fa784b0164fb0824ed8c4b" - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^1.4.1" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.4" - log4js "^2.3.9" - mime "^1.3.4" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.0.4" - source-map "^0.6.1" - tmp "0.0.33" - useragent "2.2.1" - keygrip@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.0.2.tgz#ad3297c557069dea8bcfe7a4fa491b75c5ddeb91" @@ -7712,22 +7091,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libbase64@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6" - -libmime@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/libmime/-/libmime-3.0.0.tgz#51a1a9e7448ecbd32cda54421675bb21bc093da6" - dependencies: - iconv-lite "0.4.15" - libbase64 "0.1.0" - libqp "1.1.0" - -libqp@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" - lint-staged@^7.0.5: version "7.1.0" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.1.0.tgz#1514a5b71b8d9492ca0c3d2a44769cbcbc8bcc79" @@ -7941,6 +7304,10 @@ lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" @@ -7993,6 +7360,10 @@ lodash.merge@^4.6.0: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" +lodash.omit@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" + lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -8043,7 +7414,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@4.17.10, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.1: +lodash@4.17.10, "lodash@>=3.5 <5", lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -8066,25 +7437,6 @@ log-update@^1.0.2: ansi-escapes "^1.0.0" cli-cursor "^1.0.2" -log4js@^2.3.9: - version "2.6.0" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.6.0.tgz#1eaa4b3a7acfd71ecd3a82309c69a367bb49960f" - dependencies: - circular-json "^0.5.4" - date-format "^1.2.0" - debug "^3.1.0" - semver "^5.5.0" - streamroller "0.7.0" - optionalDependencies: - amqplib "^0.5.2" - axios "^0.15.3" - hipchat-notifier "^1.1.0" - loggly "^1.1.0" - mailgun-js "^0.18.0" - nodemailer "^2.5.0" - redis "^2.7.1" - slack-node "~0.2.0" - logalot@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" @@ -8092,14 +7444,6 @@ logalot@^2.0.0: figures "^1.3.5" squeak "^1.0.0" -loggly@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/loggly/-/loggly-1.1.1.tgz#0a0fc1d3fa3a5ec44fdc7b897beba2a4695cebee" - dependencies: - json-stringify-safe "5.0.x" - request "2.75.x" - timespan "2.3.x" - loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" @@ -8111,9 +7455,9 @@ loglevelnext@^1.0.1: es6-symbol "^3.1.1" object.assign "^4.1.0" -lolex@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" +lolex@^2.2.0, lolex@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.5.0.tgz#69d6a667607738564daf108f63240ae8cbd28fb4" long@^3.2.0: version "3.2.0" @@ -8140,13 +7484,7 @@ loud-rejection@^1.0.0, loud-rejection@^1.2.0, loud-rejection@^1.6.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lower-case-first@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" - dependencies: - lower-case "^1.1.2" - -lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: +lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" @@ -8163,11 +7501,7 @@ lpad-align@^1.0.1: longest "^1.0.0" meow "^3.3.0" -lru-cache@2.2.x: - version "2.2.4" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" - -lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2: +lru-cache@^4.0.1, lru-cache@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" dependencies: @@ -8182,27 +7516,6 @@ macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" -mailcomposer@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4" - dependencies: - buildmail "4.0.1" - libmime "3.0.0" - -mailgun-js@^0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.18.0.tgz#81fed0c66a411d3ff6c4354861ad21387afcfaaa" - dependencies: - async "~2.6.0" - debug "~3.1.0" - form-data "~2.3.0" - inflection "~1.12.0" - is-stream "^1.1.0" - path-proxy "~1.0.0" - promisify-call "^2.0.2" - proxy-agent "~3.0.0" - tsscmp "~1.0.0" - make-dir@^1.0.0, make-dir@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -8442,7 +7755,7 @@ miller-rabin@^4.0.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18: version "2.1.18" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" dependencies: @@ -8456,10 +7769,6 @@ mime@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.2.0.tgz#161e541965551d3b549fa1114391e3a3d55b923b" -mime@^1.3.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - mime@^2.0.3, mime@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" @@ -8514,14 +7823,14 @@ minimist@1.1.x: version "1.1.3" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" -minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - minimist@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -8554,10 +7863,6 @@ mississippi@^2.0.0: stream-each "^1.1.0" through2 "^2.0.0" -mitt@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.1.3.tgz#528c506238a05dce11cd914a741ea2cc332da9b8" - mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" @@ -8571,26 +7876,6 @@ mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@ dependencies: minimist "0.0.8" -mocha-coverage-reporter@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/mocha-coverage-reporter/-/mocha-coverage-reporter-0.0.1.tgz#1f996a3cd6ea89bc53eca4807fd1c91da54c9e09" - -mocha@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.1.1.tgz#b774c75609dac05eb48f4d9ba1d827b97fde8a7b" - dependencies: - browser-stdout "1.3.1" - commander "2.11.0" - debug "3.1.0" - diff "3.5.0" - escape-string-regexp "1.0.5" - glob "7.1.2" - growl "1.10.3" - he "1.1.1" - minimatch "3.0.4" - mkdirp "0.5.1" - supports-color "4.4.0" - modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -8685,10 +7970,6 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -native-promise-only@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -8713,10 +7994,6 @@ neo-async@^2.5.0: version "2.5.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" -netmask@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" - next-tick@1: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -8725,7 +8002,17 @@ nice-try@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" -no-case@^2.2.0, no-case@^2.3.2: +nise@^1.2.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/nise/-/nise-1.3.3.tgz#c17a850066a8a1dfeb37f921da02441afc4a82ba" + dependencies: + "@sinonjs/formatio" "^2.0.0" + just-extend "^1.1.27" + lolex "^2.3.2" + path-to-regexp "^1.7.0" + text-encoding "^0.6.4" + +no-case@^2.2.0: version "2.3.2" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" dependencies: @@ -8787,9 +8074,9 @@ node-notifier@^5.2.1: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@^0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz#f11c07516dd92f87199dbc7e1838eab7cd56c9e0" +node-pre-gyp@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -8806,10 +8093,6 @@ 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.7: - version "1.4.8" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" - nodeify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/nodeify/-/nodeify-1.0.1.tgz#64ab69a7bdbaf03ce107b4f0335c87c0b9e91b1d" @@ -8817,61 +8100,6 @@ nodeify@^1.0.0: is-promise "~1.0.0" promise "~1.3.0" -nodemailer-direct-transport@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz#e96fafb90358560947e569017d97e60738a50a86" - dependencies: - nodemailer-shared "1.1.0" - smtp-connection "2.12.0" - -nodemailer-fetch@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4" - -nodemailer-shared@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0" - dependencies: - nodemailer-fetch "1.6.0" - -nodemailer-smtp-pool@2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz#2eb94d6cf85780b1b4725ce853b9cbd5e8da8c72" - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-smtp-transport@2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz#03d71c76314f14ac7dbc7bf033a6a6d16d67fb77" - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-wellknown@0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz#586db8101db30cb4438eb546737a41aad0cf13d5" - -nodemailer@^2.5.0: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-2.7.2.tgz#f242e649aeeae39b6c7ed740ef7b061c404d30f9" - dependencies: - libmime "3.0.0" - mailcomposer "4.0.1" - nodemailer-direct-transport "3.3.2" - nodemailer-shared "1.1.0" - nodemailer-smtp-pool "2.8.2" - nodemailer-smtp-transport "2.7.2" - socks "1.1.9" - -nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -8968,10 +8196,6 @@ nth-check@^1.0.1, nth-check@~1.0.1: dependencies: boolbase "~1.0.0" -null-check@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" - num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" @@ -9016,7 +8240,7 @@ nyc@^11.7.1: yargs "11.1.0" yargs-parser "^8.0.0" -oauth-sign@~0.8.1, oauth-sign@~0.8.2: +oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -9032,10 +8256,6 @@ object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1 version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -9133,7 +8353,7 @@ on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -9149,7 +8369,7 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -opn@^5.1.0, opn@^5.3.0: +opn@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" dependencies: @@ -9193,17 +8413,6 @@ ora@^0.2.3: cli-spinners "^0.1.2" object-assign "^4.0.1" -ora@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-2.1.0.tgz#6caf2830eb924941861ec53a173799e008b51e5b" - dependencies: - chalk "^2.3.1" - cli-cursor "^2.1.0" - cli-spinners "^1.1.0" - log-symbols "^2.2.0" - strip-ansi "^4.0.0" - wcwidth "^1.0.1" - ordered-read-streams@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" @@ -9212,10 +8421,10 @@ ordered-read-streams@^0.3.0: readable-stream "^2.0.1" original@>=0.0.5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + version "1.0.1" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.1.tgz#b0a53ff42ba997a8c9cd1fb5daaeb42b9d693190" dependencies: - url-parse "1.0.x" + url-parse "~1.4.0" os-browserify@^0.3.0: version "0.3.0" @@ -9302,29 +8511,6 @@ p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" -pac-proxy-agent@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz#90d9f6730ab0f4d2607dcdcd4d3d641aa26c3896" - dependencies: - agent-base "^4.2.0" - debug "^3.1.0" - get-uri "^2.0.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - pac-resolver "^3.0.0" - raw-body "^2.2.0" - socks-proxy-agent "^3.0.0" - -pac-resolver@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" - dependencies: - co "^4.6.0" - degenerator "^1.0.4" - ip "^1.1.5" - netmask "^1.0.6" - thunkify "^2.1.2" - package-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" @@ -9361,7 +8547,7 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -param-case@2.1.x, param-case@^2.1.0: +param-case@2.1.x: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" dependencies: @@ -9436,29 +8622,10 @@ parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - dependencies: - better-assert "~1.0.0" - parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" -pascal-case@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e" - dependencies: - camel-case "^3.0.0" - upper-case-first "^1.1.0" - pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -9467,12 +8634,6 @@ path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" -path-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" - dependencies: - no-case "^2.2.0" - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -9503,12 +8664,6 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" -path-proxy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e" - dependencies: - inflection "~1.3.0" - path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -10037,10 +9192,6 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -10069,12 +9220,6 @@ promise@~1.3.0: dependencies: is-promise "~1" -promisify-call@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/promisify-call/-/promisify-call-2.0.4.tgz#d48c2d45652ccccd52801ddecbd533a6d4bd5fba" - dependencies: - with-callback "^1.0.2" - prop-types@^15.5.4, prop-types@^15.6.0: version "15.6.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" @@ -10094,23 +9239,6 @@ proxy-addr@~2.0.3: forwarded "~0.1.2" ipaddr.js "1.6.0" -proxy-agent@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-3.0.0.tgz#f6768e202889b2285d39906d3a94768416f8f713" - dependencies: - agent-base "^4.2.0" - debug "^3.1.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - lru-cache "^4.1.2" - pac-proxy-agent "^2.0.1" - proxy-from-env "^1.0.0" - socks-proxy-agent "^3.0.0" - -proxy-from-env@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -10148,7 +9276,7 @@ punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -punycode@1.4.1, punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -10160,18 +9288,10 @@ q@^1.1.2, q@^1.4.1, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" -qjobs@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" -qs@~6.2.0: - version "6.2.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" - qs@~6.5.1: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -10191,10 +9311,6 @@ querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" -querystringify@0.0.x: - version "0.0.4" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" - querystringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" @@ -10228,7 +9344,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: +range-parser@^1.0.3, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" @@ -10241,15 +9357,6 @@ raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" -raw-body@^2.2.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.1.7: version "1.2.7" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.7.tgz#8a10ca30d588d00464360372b890d06dacd02297" @@ -10362,7 +9469,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -10383,7 +9490,7 @@ readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0": isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@1.1.x, "readable-stream@1.x >=1.1.9", readable-stream@~1.1.9: +readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" dependencies: @@ -10392,17 +9499,6 @@ readable-stream@1.1.x, "readable-stream@1.x >=1.1.9", readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -10456,22 +9552,6 @@ redent@^2.0.0: indent-string "^3.0.0" strip-indent "^2.0.0" -redis-commands@^1.2.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2" - -redis-parser@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" - -redis@^2.7.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" - dependencies: - double-ended-queue "^2.1.0-0" - redis-commands "^1.2.0" - redis-parser "^2.6.0" - reduce-css-calc@^1.2.6: version "1.3.0" resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" @@ -10486,15 +9566,15 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^0.4.2" -regenerate-unicode-properties@^5.1.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-5.1.3.tgz#54f5891543468f36f2274b67c6bc4c033c27b308" +regenerate-unicode-properties@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-6.0.0.tgz#0fc26f9d5142289df4e177dec58f303d2d097c16" dependencies: regenerate "^1.3.3" -regenerate@^1.2.1, regenerate@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" +regenerate@^1.2.1, regenerate@^1.3.3, regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" regenerator-runtime@^0.10.5: version "0.10.5" @@ -10543,14 +9623,14 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.1.3.tgz#fb81616dbbc2a917a7419b33f8379144f51eb8d0" +regexpu-core@^4.1.3, regexpu-core@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.1.5.tgz#57fdfe1148f8a7a069086228515130cf1820ddd0" dependencies: - regenerate "^1.3.3" - regenerate-unicode-properties "^5.1.1" - regjsgen "^0.3.0" - regjsparser "^0.2.1" + regenerate "^1.4.0" + regenerate-unicode-properties "^6.0.0" + regjsgen "^0.4.0" + regjsparser "^0.3.0" unicode-match-property-ecmascript "^1.0.3" unicode-match-property-value-ecmascript "^1.0.1" @@ -10571,9 +9651,9 @@ regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" -regjsgen@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.3.0.tgz#0ee4a3e9276430cda25f1e789ea6c15b87b0cb43" +regjsgen@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" regjsparser@^0.1.4: version "0.1.5" @@ -10581,9 +9661,9 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -regjsparser@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.2.1.tgz#c3787553faf04e775c302102ef346d995000ec1c" +regjsparser@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" dependencies: jsesc "~0.5.0" @@ -10662,10 +9742,6 @@ repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" -repeat-string@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" - repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -10698,35 +9774,36 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" -request@2.75.x: - version "2.75.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" +request@2.85.0: + version "2.85.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - bl "~1.1.2" - caseless "~0.11.0" + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" combined-stream "~1.0.5" - extend "~3.0.0" + extend "~3.0.1" forever-agent "~0.6.1" - form-data "~2.0.0" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - node-uuid "~1.4.7" - oauth-sign "~0.8.1" - qs "~6.2.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - -request@2.85.0, request@^2.0.0, request@^2.74.0, request@^2.83.0: - version "2.85.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + stringstream "~0.0.5" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + +request@^2.83.0: + version "2.86.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.86.0.tgz#2b9497f449b0a32654c081a5cf426bbfb5bf5b69" dependencies: aws-sign2 "~0.7.0" aws4 "^1.6.0" @@ -10746,20 +9823,10 @@ request@2.85.0, request@^2.0.0, request@^2.74.0, request@^2.83.0: performance-now "^2.1.0" qs "~6.5.1" safe-buffer "^5.1.1" - stringstream "~0.0.5" tough-cookie "~2.3.3" tunnel-agent "^0.6.0" uuid "^3.1.0" -requestretry@^1.2.2: - version "1.13.0" - resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-1.13.0.tgz#213ec1006eeb750e8b8ce54176283d15a8d55d94" - dependencies: - extend "^3.0.0" - lodash "^4.15.0" - request "^2.74.0" - when "^3.7.7" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -10787,7 +9854,7 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" -requires-port@1.0.x, requires-port@^1.0.0: +requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -10817,7 +9884,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.7, resolve@1.1.x: +resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -10851,7 +9918,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -10896,7 +9963,7 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" -rxjs@^5.4.2: +rxjs@^5.4.2, rxjs@^5.5.2: version "5.5.10" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.10.tgz#fde02d7a614f6c8683d0d1957827f492e09db045" dependencies: @@ -10924,24 +9991,10 @@ safe-regex@^1.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" -samsam@1.x, samsam@^1.1.3: +samsam@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.3.0.tgz#8d1d9350e25622da30de3e44ba692b5221ab7c50" -sanctuary-type-classes@^8.0.0: - version "8.2.1" - resolved "https://registry.yarnpkg.com/sanctuary-type-classes/-/sanctuary-type-classes-8.2.1.tgz#49b6b76d3720336fa2a6c058b7c29296e60713f5" - dependencies: - sanctuary-type-identifiers "1.0.x" - -sanctuary-type-identifiers@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sanctuary-type-identifiers/-/sanctuary-type-identifiers-1.0.0.tgz#e8f359f006cb5e624cfb8464603fc114608bde9f" - -sanctuary-type-identifiers@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/sanctuary-type-identifiers/-/sanctuary-type-identifiers-2.0.1.tgz#fc524cf6dd92cebfcbb0dd9509eff193159a20ed" - sane@^2.0.0: version "2.5.2" resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" @@ -11034,18 +10087,11 @@ send@0.16.2: range-parser "~1.2.0" statuses "~1.4.0" -sentence-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4" - dependencies: - no-case "^2.2.0" - upper-case-first "^1.1.2" - serialize-error@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" -serialize-javascript@^1.4.0, serialize-javascript@^1.5.0: +serialize-javascript@^1.4.0: version "1.5.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" @@ -11141,24 +10187,17 @@ signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -sinon@^2.3.6: - version "2.4.1" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.4.1.tgz#021fd64b54cb77d9d2fb0d43cdedfae7629c3a36" +sinon@^5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-5.0.7.tgz#3bded6a73613ccc9e512e20246ced69a27c27dab" dependencies: + "@sinonjs/formatio" "^2.0.0" diff "^3.1.0" - formatio "1.2.0" - lolex "^1.6.0" - native-promise-only "^0.8.1" - path-to-regexp "^1.7.0" - samsam "^1.1.3" - text-encoding "0.6.4" - type-detect "^4.0.0" - -slack-node@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30" - dependencies: - requestretry "^1.2.2" + lodash.get "^4.4.2" + lolex "^2.2.0" + nise "^1.2.0" + supports-color "^5.1.0" + type-detect "^4.0.5" slash@^1.0.0: version "1.0.0" @@ -11178,23 +10217,6 @@ slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" -smart-buffer@^1.0.13, smart-buffer@^1.0.4: - version "1.1.15" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" - -smtp-connection@2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.12.0.tgz#d76ef9127cb23c2259edb1e8349c2e8d5e2d74c1" - dependencies: - httpntlm "1.6.1" - nodemailer-shared "1.1.0" - -snake-case@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" - dependencies: - no-case "^2.2.0" - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -11222,59 +10244,12 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - sntp@2.x.x: version "2.1.0" resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" dependencies: hoek "4.x.x" -socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" - -socket.io-client@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~2.6.4" - engine.io-client "~3.1.0" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.1.1" - to-array "0.1.4" - -socket.io-parser@~3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - has-binary2 "~1.0.2" - isarray "2.0.1" - -socket.io@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" - dependencies: - debug "~2.6.6" - engine.io "~3.1.0" - socket.io-adapter "~1.1.0" - socket.io-client "2.0.4" - socket.io-parser "~3.1.1" - sockjs-client@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" @@ -11293,27 +10268,6 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" -socks-proxy-agent@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" - dependencies: - agent-base "^4.1.0" - socks "^1.1.10" - -socks@1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.9.tgz#628d7e4d04912435445ac0b6e459376cb3e6d691" - dependencies: - ip "^1.1.2" - smart-buffer "^1.0.4" - -socks@^1.1.10: - version "1.1.10" - resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" - dependencies: - ip "^1.1.4" - smart-buffer "^1.0.13" - sort-keys-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" @@ -11353,8 +10307,8 @@ source-map-support@^0.4.15, source-map-support@^0.4.2: source-map "^0.5.6" source-map-support@^0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.5.tgz#0d4af9e00493e855402e8ec36ebed2d266fceb90" + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -11367,7 +10321,7 @@ source-map@0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -11381,12 +10335,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - sourcemapped-stacktrace@^1.1.6: version "1.1.8" resolved "https://registry.yarnpkg.com/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.8.tgz#6b7a3f1a6fb15f6d40e701e23ce404553480d688" @@ -11394,8 +10342,8 @@ sourcemapped-stacktrace@^1.1.6: source-map "0.5.6" sparkles@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" spawn-wrap@^1.4.2: version "1.4.2" @@ -11546,10 +10494,6 @@ static-extend@^0.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" -statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - statuses@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" @@ -11599,15 +10543,6 @@ stream-to-observable@^0.2.0: dependencies: any-observable "^0.2.0" -streamroller@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" - dependencies: - date-format "^1.2.0" - debug "^3.1.0" - mkdirp "^0.5.1" - readable-stream "^2.3.0" - strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -11669,7 +10604,7 @@ stringify-object@^3.2.2: is-obj "^1.0.1" is-regexp "^1.0.0" -stringstream@~0.0.4, stringstream@~0.0.5: +stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -11862,17 +10797,11 @@ supertap@^1.0.0: serialize-error "^2.1.0" strip-ansi "^4.0.0" -supports-color@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" - dependencies: - has-flag "^2.0.0" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.0, supports-color@^3.1.2, supports-color@^3.2.3: +supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: @@ -11919,13 +10848,6 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" -swap-case@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" - dependencies: - lower-case "^1.1.1" - upper-case "^1.1.1" - symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" @@ -11969,14 +10891,14 @@ tapable@^1.0.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" tar-stream@^1.1.1, tar-stream@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.0.tgz#a50efaa7b17760b82c27b3cae4a301a8254a5715" + version "1.6.1" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395" dependencies: bl "^1.0.0" buffer-alloc "^1.1.0" end-of-stream "^1.0.0" fs-constants "^1.0.0" - readable-stream "^2.0.0" + readable-stream "^2.3.0" to-buffer "^1.1.0" xtend "^4.0.0" @@ -12037,7 +10959,7 @@ test-exclude@^4.2.0, test-exclude@^4.2.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" -text-encoding@0.6.4: +text-encoding@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" @@ -12082,10 +11004,6 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -thunkify@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" - thunky@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" @@ -12112,18 +11030,7 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -timespan@2.3.x: - version "2.3.0" - resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929" - -title-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" - dependencies: - no-case "^2.2.0" - upper-case "^1.0.3" - -tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: +tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" dependencies: @@ -12139,10 +11046,6 @@ to-absolute-glob@^0.1.1: dependencies: extend-shallow "^2.0.1" -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -12185,7 +11088,7 @@ toposort@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" -tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" dependencies: @@ -12231,15 +11134,11 @@ trough@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.2.tgz#7f1663ec55c480139e2de5e486c6aef6cc24a535" -tsscmp@~1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97" - tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" -tunnel-agent@^0.4.0, tunnel-agent@~0.4.1: +tunnel-agent@^0.4.0: version "0.4.3" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" @@ -12259,7 +11158,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@^4.0.0: +type-detect@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -12286,8 +11185,8 @@ uglify-es@^3.3.4: source-map "~0.6.1" uglify-js@3.3.x: - version "3.3.24" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.24.tgz#abeae7690c602ebd006f4567387a0c0c333bdc0d" + version "3.3.25" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.25.tgz#3266ccb87c5bea229f69041a0296010d6477d539" dependencies: commander "~2.15.0" source-map "~0.6.1" @@ -12322,10 +11221,6 @@ uid2@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - unbzip2-stream@^1.0.9: version "1.2.5" resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47" @@ -12333,10 +11228,6 @@ unbzip2-stream@^1.0.9: buffer "^3.0.1" through "^2.3.6" -underscore@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" - unherit@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.1.tgz#132748da3e88eab767e08fabfbb89c5e9d28628c" @@ -12516,13 +11407,7 @@ update-notifier@^2.3.0: semver-diff "^2.0.0" xdg-basedir "^3.0.0" -upper-case-first@^1.1.0, upper-case-first@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" - dependencies: - upper-case "^1.1.1" - -upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: +upper-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" @@ -12536,10 +11421,6 @@ urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" -url-join@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" - url-join@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" @@ -12558,14 +11439,7 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -url-parse@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" - dependencies: - querystringify "0.0.x" - requires-port "1.0.x" - -url-parse@^1.1.8: +url-parse@^1.1.8, url-parse@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.0.tgz#6bfdaad60098c7fe06f623e42b22de62de0d3d75" dependencies: @@ -12595,13 +11469,6 @@ use@^3.1.0: dependencies: kind-of "^6.0.2" -useragent@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" - dependencies: - lru-cache "2.2.x" - tmp "0.0.x" - util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -12639,10 +11506,6 @@ uuid@^3.0.1, uuid@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" -uws@~9.14.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" - vali-date@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" @@ -12822,10 +11685,6 @@ vm-browserify@0.0.4: dependencies: indexof "0.0.1" -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - vue-eslint-parser@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1" @@ -12916,20 +11775,20 @@ wbuf@^1.1.0, wbuf@^1.7.2: dependencies: minimalistic-assert "^1.0.0" -wcwidth@^1.0.0, wcwidth@^1.0.1: +wcwidth@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" dependencies: defaults "^1.0.3" -webassemblyjs@1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.2.tgz#3b07b506917c97153d83441d8a88ffa2d25cc07d" +webassemblyjs@1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.3.tgz#0591893efb8fbde74498251cbe4b2d83df9239cb" dependencies: - "@webassemblyjs/ast" "1.4.2" - "@webassemblyjs/validation" "1.4.2" - "@webassemblyjs/wasm-parser" "1.4.2" - "@webassemblyjs/wast-parser" "1.4.2" + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/validation" "1.4.3" + "@webassemblyjs/wasm-parser" "1.4.3" + "@webassemblyjs/wast-parser" "1.4.3" long "^3.2.0" webidl-conversions@^4.0.2: @@ -12937,10 +11796,11 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" webpack-chain@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-4.6.0.tgz#3ff51bd6241ed78a62691b8da7b9dec3fcc346a0" + version "4.7.0" + resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-4.7.0.tgz#cc5e5b8d0acc4d0200166f156c6102feebc272ba" dependencies: deepmerge "^1.5.2" + javascript-stringify "^1.6.0" webpack-dev-middleware@3.1.3: version "3.1.3" @@ -12954,18 +11814,6 @@ webpack-dev-middleware@3.1.3: url-join "^4.0.0" webpack-log "^1.0.1" -webpack-dev-middleware@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-2.0.6.tgz#a51692801e8310844ef3e3790e1eacfe52326fd4" - dependencies: - loud-rejection "^1.6.0" - memory-fs "~0.4.1" - mime "^2.1.0" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - url-join "^2.0.2" - webpack-log "^1.0.1" - webpack-dev-server@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz#9a08d13c4addd1e3b6d8ace116e86715094ad5b4" @@ -13027,13 +11875,13 @@ webpack-sources@^1.0.0, webpack-sources@^1.0.1, webpack-sources@^1.1.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.7.0: - version "4.8.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.8.2.tgz#41aa00fd32a8f253a2f12a2da11c8ad4d52fde1c" +webpack@^4.8.3: + version "4.8.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.8.3.tgz#957c8e80000f9e5cc03d775e78b472d8954f4eeb" dependencies: - "@webassemblyjs/ast" "1.4.2" - "@webassemblyjs/wasm-edit" "1.4.2" - "@webassemblyjs/wasm-parser" "1.4.2" + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/wasm-edit" "1.4.3" + "@webassemblyjs/wasm-parser" "1.4.3" acorn "^5.0.0" acorn-dynamic-import "^3.0.0" ajv "^6.1.0" @@ -13091,10 +11939,6 @@ whatwg-url@^6.4.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -when@^3.7.7: - version "3.7.8" - resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" - whet.extend@~0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" @@ -13103,7 +11947,7 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.1.1, which@^1.2.1, which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0: +which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: @@ -13125,22 +11969,18 @@ window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" -with-callback@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/with-callback/-/with-callback-1.0.2.tgz#a09629b9a920028d721404fb435bdcff5c91bc21" - 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" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + worker-farm@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" @@ -13218,14 +12058,6 @@ ws@^4.0.0: async-limiter "~1.0.0" safe-buffer "~5.1.0" -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - x-is-string@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" @@ -13238,14 +12070,6 @@ xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -13369,29 +12193,27 @@ yauzl@^2.2.1, yauzl@^2.4.2: buffer-crc32 "~0.2.3" fd-slicer "~1.0.1" -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - yeoman-assert@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yeoman-assert/-/yeoman-assert-3.1.1.tgz#9f6fa0ecba7dd007c40f579668cb5dda18c79343" yeoman-environment@^2.0.0, yeoman-environment@^2.0.5, yeoman-environment@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.0.6.tgz#ae1b21d826b363f3d637f88a7fc9ea7414cb5377" + version "2.1.1" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.1.1.tgz#10a045f7fc4397873764882eae055a33e56ee1c5" dependencies: chalk "^2.1.0" + cross-spawn "^6.0.5" debug "^3.1.0" diff "^3.3.1" escape-string-regexp "^1.0.2" - globby "^6.1.0" + globby "^8.0.1" grouped-queue "^0.3.3" - inquirer "^3.3.0" + inquirer "^5.2.0" is-scoped "^1.0.0" - lodash "^4.17.4" + lodash "^4.17.10" log-symbols "^2.1.0" mem-fs "^1.1.0" + strip-ansi "^4.0.0" text-table "^0.2.0" untildify "^3.0.2" @@ -13426,14 +12248,14 @@ yeoman-generator@^2.0.5: yeoman-environment "^2.0.5" yeoman-test@^1.7.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/yeoman-test/-/yeoman-test-1.7.1.tgz#c4a5bed67646e32c528ba29c2a67ae2527e78a4a" + version "1.7.2" + resolved "https://registry.yarnpkg.com/yeoman-test/-/yeoman-test-1.7.2.tgz#16e09918b61c5f4b9e9414c6819fa72da4a3d61a" dependencies: - inquirer "^3.0.1" + inquirer "^5.2.0" lodash "^4.3.0" mkdirp "^0.5.1" pinkie-promise "^2.0.1" rimraf "^2.4.4" - sinon "^2.3.6" + sinon "^5.0.7" yeoman-environment "^2.0.0" yeoman-generator "^2.0.5" From ae11719a5d47daf76ea7cbe47d26b6d5ae8829c8 Mon Sep 17 00:00:00 2001 From: Eli Perelman Date: Fri, 18 May 2018 20:30:25 -0500 Subject: [PATCH 2/7] Add back karma plugins to preset --- .../create-project/commands/init/matrix.js | 8 +- packages/karma/index.js | 7 + packages/karma/package.json | 15 +- yarn.lock | 177 +++++++++++++++--- 4 files changed, 169 insertions(+), 38 deletions(-) diff --git a/packages/create-project/commands/init/matrix.js b/packages/create-project/commands/init/matrix.js index 20d596897..6e0026f66 100644 --- a/packages/create-project/commands/init/matrix.js +++ b/packages/create-project/commands/init/matrix.js @@ -81,13 +81,7 @@ const projects = { KARMA, 'karma', 'karma-cli', - 'karma-webpack', - 'karma-chrome-launcher', - 'karma-coverage', - 'karma-mocha', - 'karma-mocha-reporter', - 'mocha', - 'mocha-coverage-reporter' + 'mocha' ] }, [MOCHA]: { diff --git a/packages/karma/index.js b/packages/karma/index.js index e603555a0..a9354d7d8 100644 --- a/packages/karma/index.js +++ b/packages/karma/index.js @@ -40,6 +40,13 @@ module.exports = neutrino => { included: true, served: true }], + plugins: [ + require.resolve('karma-webpack'), + require.resolve('karma-chrome-launcher'), + require.resolve('karma-coverage'), + require.resolve('karma-mocha'), + require.resolve('karma-mocha-reporter') + ], preprocessors: { [tests]: ['webpack'], [sources]: ['webpack'] diff --git a/packages/karma/package.json b/packages/karma/package.json index b38589890..19c0e1e1d 100644 --- a/packages/karma/package.json +++ b/packages/karma/package.json @@ -26,17 +26,18 @@ "@neutrinojs/loader-merge": "^8.2.0", "babel-plugin-istanbul": "^4.1.6", "deepmerge": "^1.5.2", - "lodash.omit": "^4.5.0" + "karma-chrome-launcher": "^2.2.0", + "karma-coverage": "^1.1.2", + "karma-mocha": "^1.3.0", + "karma-mocha-reporter": "^2.2.5", + "karma-webpack": "^3.0.0", + "lodash.omit": "^4.5.0", + "mocha-coverage-reporter": "^0.0.1" }, "peerDependencies": { "karma": "^2.0.0", - "karma-chrome-launcher": "^2.0.0", - "karma-coverage": "^1.0.0", - "karma-mocha": "^1.0.0", - "karma-mocha-reporter": "^2.0.0", - "karma-webpack": "^3.0.0", + "karma-cli": "^1.0.0", "mocha": "^5.0.0", - "mocha-coverage-reporter": "*", "neutrino": "^8.0.0", "webpack": "^4.0.0" } diff --git a/yarn.lock b/yarn.lock index b2256adde..1256e9fb1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -886,6 +886,10 @@ abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + accepts@~1.3.4, accepts@~1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" @@ -1218,16 +1222,16 @@ async-throttle@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/async-throttle/-/async-throttle-1.1.0.tgz#229e7f3fa7a2a797e86f360e6309a08224d4fa7a" -async@2.6.0, async@^2.1.4, async@^2.6.0: +async@1.x, async@^1.4.0, async@^1.5.0, async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@2.6.0, async@^2.0.0, async@^2.1.4, async@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: lodash "^4.14.0" -async@^1.4.0, async@^1.5.0, async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1696,7 +1700,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.0.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -3378,6 +3382,13 @@ date-time@^2.1.0: dependencies: time-zone "^1.0.0" +dateformat@^1.0.6: + version "1.0.12" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + dependencies: + get-stdin "^4.0.1" + meow "^3.3.0" + dateformat@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" @@ -4065,6 +4076,17 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^ version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + escodegen@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" @@ -4280,7 +4302,7 @@ espree@^3.5.2, espree@^3.5.4: acorn "^5.5.0" acorn-jsx "^3.0.0" -esprima@^2.6.0: +esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" @@ -4310,6 +4332,10 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -4893,6 +4919,12 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fs-access@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + dependencies: + null-check "^1.0.0" + fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -5133,7 +5165,7 @@ glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" -glob@^5.0.3: +glob@^5.0.15, glob@^5.0.3: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" dependencies: @@ -5374,7 +5406,7 @@ handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" -handlebars@4.0.11, handlebars@^4.0.11, handlebars@^4.0.2, handlebars@^4.0.3: +handlebars@4.0.11, handlebars@^4.0.1, handlebars@^4.0.11, handlebars@^4.0.2, handlebars@^4.0.3: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" dependencies: @@ -6486,6 +6518,25 @@ istanbul-reports@^1.4.0: dependencies: handlebars "^4.0.3" +istanbul@^0.4.0: + version "0.4.5" + resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + istextorbinary@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" @@ -6780,7 +6831,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@3.11.0, js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@3.11.0, js-yaml@3.x, js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" dependencies: @@ -6951,6 +7002,48 @@ jws@^3.1.4: jwa "^1.1.5" safe-buffer "^5.0.1" +karma-chrome-launcher@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + dependencies: + fs-access "^1.0.0" + which "^1.2.1" + +karma-coverage@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.2.tgz#cc09dceb589a83101aca5fe70c287645ef387689" + dependencies: + dateformat "^1.0.6" + istanbul "^0.4.0" + lodash "^4.17.0" + minimatch "^3.0.0" + source-map "^0.5.1" + +karma-mocha-reporter@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz#15120095e8ed819186e47a0b012f3cd741895560" + dependencies: + chalk "^2.1.0" + log-symbols "^2.1.0" + strip-ansi "^4.0.0" + +karma-mocha@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf" + dependencies: + minimist "1.2.0" + +karma-webpack@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-3.0.0.tgz#bf009c5b73c667c11c015717e9e520f581317c44" + dependencies: + async "^2.0.0" + babel-runtime "^6.0.0" + loader-utils "^1.0.0" + lodash "^4.0.0" + source-map "^0.5.6" + webpack-dev-middleware "^2.0.6" + keygrip@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.0.2.tgz#ad3297c557069dea8bcfe7a4fa491b75c5ddeb91" @@ -7414,7 +7507,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@4.17.10, "lodash@>=3.5 <5", lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1: +lodash@4.17.10, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -7823,14 +7916,14 @@ minimist@1.1.x: version "1.1.3" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" +minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + minimist@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -7876,6 +7969,10 @@ mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@ dependencies: minimist "0.0.8" +mocha-coverage-reporter@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/mocha-coverage-reporter/-/mocha-coverage-reporter-0.0.1.tgz#1f996a3cd6ea89bc53eca4807fd1c91da54c9e09" + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -8100,6 +8197,12 @@ nodeify@^1.0.0: is-promise "~1.0.0" promise "~1.3.0" +nopt@3.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -8196,6 +8299,10 @@ nth-check@^1.0.1, nth-check@~1.0.1: dependencies: boolbase "~1.0.0" +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" @@ -8353,7 +8460,7 @@ on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -9884,7 +9991,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.7: +resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -10321,7 +10428,7 @@ source-map@0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -10335,6 +10442,12 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + sourcemapped-stacktrace@^1.1.6: version "1.1.8" resolved "https://registry.yarnpkg.com/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.8.tgz#6b7a3f1a6fb15f6d40e701e23ce404553480d688" @@ -10801,7 +10914,7 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.2, supports-color@^3.2.3: +supports-color@^3.1.0, supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: @@ -11421,6 +11534,10 @@ urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" +url-join@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" + url-join@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" @@ -11814,6 +11931,18 @@ webpack-dev-middleware@3.1.3: url-join "^4.0.0" webpack-log "^1.0.1" +webpack-dev-middleware@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-2.0.6.tgz#a51692801e8310844ef3e3790e1eacfe52326fd4" + dependencies: + loud-rejection "^1.6.0" + memory-fs "~0.4.1" + mime "^2.1.0" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + url-join "^2.0.2" + webpack-log "^1.0.1" + webpack-dev-server@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz#9a08d13c4addd1e3b6d8ace116e86715094ad5b4" @@ -11947,7 +12076,7 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0: +which@^1.1.1, which@^1.2.1, which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: @@ -11973,14 +12102,14 @@ 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" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - worker-farm@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" From 05326078189834f3ffd154e1c19ec7c516c6ce1f Mon Sep 17 00:00:00 2001 From: Eli Perelman Date: Fri, 18 May 2018 22:34:57 -0500 Subject: [PATCH 3/7] Address review comments --- packages/airbnb-base/package.json | 3 ++- packages/airbnb/package.json | 3 ++- packages/compile-loader/package.json | 3 ++- packages/create-project/commands/init/index.js | 14 ++++++++------ .../create-project/commands/init/matrix.js | 18 ++++++++++++------ packages/eslint/index.js | 6 ++++++ packages/eslint/package.json | 3 ++- packages/jest/package.json | 2 +- packages/mocha/package.json | 5 +++-- packages/neutrino/Neutrino.js | 5 ++++- packages/neutrino/bin/neutrino.js | 2 +- packages/neutrino/extensions.js | 5 +++++ packages/neutrino/index.js | 7 ++++++- yarn.lock | 2 +- 14 files changed, 55 insertions(+), 23 deletions(-) diff --git a/packages/airbnb-base/package.json b/packages/airbnb-base/package.json index 9d03c4681..39484b3cf 100644 --- a/packages/airbnb-base/package.json +++ b/packages/airbnb-base/package.json @@ -29,6 +29,7 @@ }, "peerDependencies": { "eslint": "^4.0.0", - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/airbnb/package.json b/packages/airbnb/package.json index 0b2ce0f5c..79a51a345 100644 --- a/packages/airbnb/package.json +++ b/packages/airbnb/package.json @@ -31,6 +31,7 @@ }, "peerDependencies": { "eslint": "^4.0.0", - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/compile-loader/package.json b/packages/compile-loader/package.json index a306b8b87..63ef24430 100644 --- a/packages/compile-loader/package.json +++ b/packages/compile-loader/package.json @@ -28,6 +28,7 @@ "babel-merge": "^1.1.1" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/create-project/commands/init/index.js b/packages/create-project/commands/init/index.js index bbca140d8..77319f85c 100644 --- a/packages/create-project/commands/init/index.js +++ b/packages/create-project/commands/init/index.js @@ -4,7 +4,6 @@ const chalk = require('chalk'); const stringify = require('javascript-stringify'); const merge = require('deepmerge'); const Generator = require('yeoman-generator'); -const { source } = require('neutrino/extensions'); const questions = require('./questions'); const { projects, packages, isYarn } = require('./utils'); @@ -42,9 +41,7 @@ module.exports = class Project extends Generator { use: [ this.data.linter, this._getProjectMiddleware(), - this.data.testRunner && this.data.testRunner.startsWith('@') - ? this.data.testRunner - : null + this.data.testRunner ].filter(Boolean) }; @@ -76,10 +73,15 @@ module.exports = class Project extends Generator { if (this.data.projectType !== 'library') { scripts.start = this.data.project === '@neutrinojs/node' ? 'webpack --watch --mode development' - : 'webpack-serve --mode development'; + : 'webpack-dev-server --mode development'; } - const lint = `eslint --ext ${source.join(',')} src`; + // The list of extensions here needs to be kept in sync with the + // extension list defined by neutrino/extensions.source. Modifying a value + // here should have an accompanying change there as well. We can't pull + // in neutrino here as that would potentially give us conflicting versions + // in node_modules. + const lint = `eslint --ext js,jsx,vue,ts,tsx,mjs src`; if (this.data.testRunner) { if (this.data.testRunner.includes('jest')) { diff --git a/packages/create-project/commands/init/matrix.js b/packages/create-project/commands/init/matrix.js index 6e0026f66..5c325b7e6 100644 --- a/packages/create-project/commands/init/matrix.js +++ b/packages/create-project/commands/init/matrix.js @@ -18,7 +18,7 @@ const STANDARDJS = '@neutrinojs/standardjs'; const ESLINT = 'eslint'; const WEBPACK = 'webpack'; const WEBPACK_CLI = 'webpack-cli'; -const WEBPACK_SERVE = 'webpack-serve'; +const WEBPACK_DEV_SERVER = 'webpack-dev-server'; const projects = { [AIRBNB]: { @@ -31,7 +31,13 @@ const projects = { }, [WEB_NODE_LIBRARY]: { type: PROJECT, - devDependencies: [WEB_NODE_LIBRARY, N, WEBPACK, WEBPACK_CLI, WEBPACK_SERVE] + devDependencies: [ + WEB_NODE_LIBRARY, + N, + WEBPACK, + WEBPACK_CLI, + WEBPACK_DEV_SERVER + ] }, [NODE]: { type: PROJECT, @@ -40,12 +46,12 @@ const projects = { [PREACT]: { type: PROJECT, dependencies: ['preact', 'preact-compat'], - devDependencies: [PREACT, N, WEBPACK, WEBPACK_CLI, WEBPACK_SERVE] + devDependencies: [PREACT, N, WEBPACK, WEBPACK_CLI, WEBPACK_DEV_SERVER] }, [REACT]: { type: PROJECT, dependencies: ['prop-types', 'react', 'react-dom', 'react-hot-loader'], - devDependencies: [REACT, N, WEBPACK, WEBPACK_CLI, WEBPACK_SERVE] + devDependencies: [REACT, N, WEBPACK, WEBPACK_CLI, WEBPACK_DEV_SERVER] }, [REACT_COMPONENTS]: { type: PROJECT, @@ -65,11 +71,11 @@ const projects = { [VUE]: { type: PROJECT, dependencies: ['vue'], - devDependencies: [VUE, N, WEBPACK, WEBPACK_CLI, WEBPACK_SERVE] + devDependencies: [VUE, N, WEBPACK, WEBPACK_CLI, WEBPACK_DEV_SERVER] }, [WEB]: { type: PROJECT, - devDependencies: [WEB, N, WEBPACK, WEBPACK_CLI, WEBPACK_SERVE] + devDependencies: [WEB, N, WEBPACK, WEBPACK_CLI, WEBPACK_DEV_SERVER] }, [JEST]: { type: TESTING, diff --git a/packages/eslint/index.js b/packages/eslint/index.js index ad89b41d8..c20180cbb 100644 --- a/packages/eslint/index.js +++ b/packages/eslint/index.js @@ -31,6 +31,12 @@ const eslintrc = (neutrino, override) => { .use('eslint') .get('options') ), + // We remove these keys since they are needed when running the lint command + // but not the eslintrc command. The lint command uses ESLint's CLIEngine, + // but the ESLint RC format does not match the CLIEngine format exactly. We + // must remove anything we add that does not comply with ESLint's schemas. + // https://github.com/eslint/eslint/blob/9d1df92628dd4dd1e70fbb19454008e146387435/conf/config-schema.js + // https://github.com/eslint/eslint/blob/9d1df92628dd4dd1e70fbb19454008e146387435/lib/config/config-validator.js#L167 [ 'failOnError', 'emitWarning', diff --git a/packages/eslint/package.json b/packages/eslint/package.json index 39ba4f5f6..0ad5ba6f8 100644 --- a/packages/eslint/package.json +++ b/packages/eslint/package.json @@ -33,6 +33,7 @@ }, "peerDependencies": { "eslint": "^4.0.0", - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "webpack": "^4.0.0" } } diff --git a/packages/jest/package.json b/packages/jest/package.json index 4329800dd..1bda6440a 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -22,7 +22,7 @@ "yarn": ">=1.2.1" }, "dependencies": { - "@babel/core": "^7.0.0-beta.47", + "@babel/core": "^7.0.0-beta.46", "@babel/plugin-transform-modules-commonjs": "^7.0.0-beta.46", "@neutrinojs/compile-loader": "^8.2.0", "@neutrinojs/loader-merge": "^8.2.0", diff --git a/packages/mocha/package.json b/packages/mocha/package.json index 7c27b8a20..f4603e4b1 100644 --- a/packages/mocha/package.json +++ b/packages/mocha/package.json @@ -20,7 +20,7 @@ "yarn": ">=1.2.1" }, "dependencies": { - "@babel/core": "^7.0.0-beta.47", + "@babel/core": "^7.0.0-beta.46", "@babel/plugin-transform-modules-commonjs": "^7.0.0-beta.47", "@babel/register": "^7.0.0-beta.47", "@neutrinojs/loader-merge": "^8.2.0", @@ -28,6 +28,7 @@ "lodash.omit": "^4.5.0" }, "peerDependencies": { - "neutrino": "^8.0.0" + "neutrino": "^8.0.0", + "mocha": "^5.0.0" } } diff --git a/packages/neutrino/Neutrino.js b/packages/neutrino/Neutrino.js index df46b270a..c1120c3e2 100644 --- a/packages/neutrino/Neutrino.js +++ b/packages/neutrino/Neutrino.js @@ -42,7 +42,10 @@ module.exports = class Neutrino { getOptions(opts = {}) { let moduleExtensions = new Set(source); - const options = clone(opts); + const options = { + debug: false, + ...clone(opts) + }; if (!options.mains) { Object.assign(options, { diff --git a/packages/neutrino/bin/neutrino.js b/packages/neutrino/bin/neutrino.js index 42d8938f4..2cf299f4f 100755 --- a/packages/neutrino/bin/neutrino.js +++ b/packages/neutrino/bin/neutrino.js @@ -1,4 +1,4 @@ -#! /usr/bin/env node +#!/usr/bin/env node console.error(` The "neutrino" command has been removed starting with v9. diff --git a/packages/neutrino/extensions.js b/packages/neutrino/extensions.js index 6675c2fa2..073e05fc3 100644 --- a/packages/neutrino/extensions.js +++ b/packages/neutrino/extensions.js @@ -1,4 +1,9 @@ module.exports = { + // The list of source extensions here needs to be kept in sync with the + // extension list consumed create-project's lint script definition. + // Modifying a value here should have an accompanying change there as well. + // We can't pull in neutrino there as that would potentially give us + // conflicting versions in node_modules. source: ['js', 'jsx', 'vue', 'ts', 'tsx', 'mjs'], style: ['css', 'less', 'sass', 'scss'], media: [ diff --git a/packages/neutrino/index.js b/packages/neutrino/index.js index d671ebc5e..dd1498fd7 100644 --- a/packages/neutrino/index.js +++ b/packages/neutrino/index.js @@ -9,8 +9,13 @@ const IDENTITY = a => a; module.exports = (middleware = { use: ['.neutrinorc.js'] }, options = {}) => { const neutrino = new Neutrino(options); const args = yargs.parse(process.argv); + const mode = args.mode || 'production'; - neutrino.config.mode(args.mode || 'production'); + if (!process.env.NODE_ENV) { + process.env.NODE_ENV = mode; + } + + neutrino.config.mode(mode); neutrino.register('webpack', webpack); if (middleware) { diff --git a/yarn.lock b/yarn.lock index 1256e9fb1..5167bcbe0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -50,7 +50,7 @@ dependencies: "@babel/highlight" "7.0.0-beta.47" -"@babel/core@^7.0.0-beta.46", "@babel/core@^7.0.0-beta.47": +"@babel/core@^7.0.0-beta.46": version "7.0.0-beta.47" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-beta.47.tgz#b9c164fb9a1e1083f067c236a9da1d7a7d759271" dependencies: From 78eca7dc278265db72a03af03de5bdb94fe3e810 Mon Sep 17 00:00:00 2001 From: Eli Perelman Date: Sat, 19 May 2018 12:02:14 -0500 Subject: [PATCH 4/7] Remove unused dep --- packages/create-project/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/create-project/package.json b/packages/create-project/package.json index 96aa9f20f..184bdf5a0 100644 --- a/packages/create-project/package.json +++ b/packages/create-project/package.json @@ -40,7 +40,6 @@ "deepmerge": "^1.5.2", "fs-extra": "^6.0.0", "javascript-stringify": "^1.6.0", - "neutrino": "^8.2.0", "yargs": "^11.0.0", "yeoman-environment": "^2.0.6", "yeoman-generator": "^2.0.5" From f82fdddce9b9ceab33899f981af5ea8c54f5df92 Mon Sep 17 00:00:00 2001 From: Eli Perelman Date: Sat, 19 May 2018 13:04:35 -0500 Subject: [PATCH 5/7] Remove unncessary WDS entries, add --inspect flag --- package.json | 2 +- packages/neutrino/bin/neutrino.js | 13 ++++++++++++- packages/neutrino/index.js | 2 +- packages/web/index.js | 6 ------ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index d3f6f4bf1..7051cfe50 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "validate:eslintrc:airbnb-base": "eslint --no-eslintrc --print-config . -c ./packages/airbnb-base/eslintrc.js > /dev/null", "validate:eslintrc:standardjs": "eslint --no-eslintrc --print-config . -c ./packages/standardjs/eslintrc.js > /dev/null", "validate:eslintrc": "yarn validate:eslintrc:eslint && yarn validate:eslintrc:airbnb-base && yarn validate:eslintrc:airbnb && yarn validate:eslintrc:standardjs && yarn validate:eslintrc:root", - "version": "test -v SKIP_CHANGELOG || yarn changelog --package && git add CHANGELOG.md" + "version": "[[ -n \"SKIP_CHANGELOG\" ]] || yarn changelog --package && git add CHANGELOG.md" }, "devDependencies": { "auto-changelog": "^1.4.6", diff --git a/packages/neutrino/bin/neutrino.js b/packages/neutrino/bin/neutrino.js index 2cf299f4f..c3d91aeb2 100755 --- a/packages/neutrino/bin/neutrino.js +++ b/packages/neutrino/bin/neutrino.js @@ -1,9 +1,20 @@ #!/usr/bin/env node +const yargs = require('yargs'); + +const args = yargs.parse(process.argv); + +if (args.inspect) { + // eslint-disable-next-line global-require + require('../')().inspect(); +} + console.error(` -The "neutrino" command has been removed starting with v9. +The "neutrino" command has been removed for building starting with v9. Please see the migration guide at https://neutrinojs.org/migration-guide for details on upgrading your installation. + +You may still inspect the generated webpack configuration with --inspect. `); process.exit(1); diff --git a/packages/neutrino/index.js b/packages/neutrino/index.js index dd1498fd7..15eda224c 100644 --- a/packages/neutrino/index.js +++ b/packages/neutrino/index.js @@ -25,7 +25,7 @@ module.exports = (middleware = { use: ['.neutrinorc.js'] }, options = {}) => { const adapter = { output(name, override = IDENTITY) { if (name === 'inspect') { - console.log(stringify(sort(neutrino.config.toConfig()))); + console.log(stringify(sort(neutrino.config.toConfig()), null, 2)); process.exit(); } diff --git a/packages/web/index.js b/packages/web/index.js index 103129955..12aad469d 100644 --- a/packages/web/index.js +++ b/packages/web/index.js @@ -220,9 +220,6 @@ module.exports = (neutrino, opts = {}) => { config.when(options.hot, () => { neutrino.use(hot); config.when(options.hotEntries, (config) => { - const protocol = config.devServer.get('https') ? 'https' : 'http'; - const url = `${protocol}://${config.devServer.get('public')}`; - Object .keys(neutrino.options.mains) .forEach(key => { @@ -230,9 +227,6 @@ module.exports = (neutrino, opts = {}) => { .entry(key) .batch(entry => { options.hotEntries.forEach(hotEntry => entry.prepend(hotEntry)); - entry - .prepend(require.resolve('webpack/hot/dev-server')) - .prepend(`${require.resolve('webpack-dev-server/client')}?${url}`); }); }); }); From 05591d154ce9529c1e1ed729bae0453e16fc24eb Mon Sep 17 00:00:00 2001 From: Eli Perelman Date: Mon, 21 May 2018 07:20:04 -0500 Subject: [PATCH 6/7] Fix usage of HMR with Node.js preset, update copy of neutrino bin, fix publish env var --- package.json | 2 +- packages/create-project/commands/init/index.js | 2 +- packages/neutrino/bin/neutrino.js | 4 ++-- packages/node/index.js | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 7051cfe50..49e6f14ba 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "validate:eslintrc:airbnb-base": "eslint --no-eslintrc --print-config . -c ./packages/airbnb-base/eslintrc.js > /dev/null", "validate:eslintrc:standardjs": "eslint --no-eslintrc --print-config . -c ./packages/standardjs/eslintrc.js > /dev/null", "validate:eslintrc": "yarn validate:eslintrc:eslint && yarn validate:eslintrc:airbnb-base && yarn validate:eslintrc:airbnb && yarn validate:eslintrc:standardjs && yarn validate:eslintrc:root", - "version": "[[ -n \"SKIP_CHANGELOG\" ]] || yarn changelog --package && git add CHANGELOG.md" + "version": "[[ -z \"$SKIP_CHANGELOG\" ]] || yarn changelog --package && git add CHANGELOG.md" }, "devDependencies": { "auto-changelog": "^1.4.6", diff --git a/packages/create-project/commands/init/index.js b/packages/create-project/commands/init/index.js index 77319f85c..b63186be4 100644 --- a/packages/create-project/commands/init/index.js +++ b/packages/create-project/commands/init/index.js @@ -81,7 +81,7 @@ module.exports = class Project extends Generator { // here should have an accompanying change there as well. We can't pull // in neutrino here as that would potentially give us conflicting versions // in node_modules. - const lint = `eslint --ext js,jsx,vue,ts,tsx,mjs src`; + const lint = 'eslint --ext js,jsx,vue,ts,tsx,mjs src'; if (this.data.testRunner) { if (this.data.testRunner.includes('jest')) { diff --git a/packages/neutrino/bin/neutrino.js b/packages/neutrino/bin/neutrino.js index c3d91aeb2..2b917ef50 100755 --- a/packages/neutrino/bin/neutrino.js +++ b/packages/neutrino/bin/neutrino.js @@ -10,11 +10,11 @@ if (args.inspect) { } console.error(` -The "neutrino" command has been removed for building starting with v9. +The "neutrino start/build/lint" commands have been removed starting with v9. Please see the migration guide at https://neutrinojs.org/migration-guide for details on upgrading your installation. -You may still inspect the generated webpack configuration with --inspect. +You may still inspect the generated webpack configuration with "neutrino --inspect". `); process.exit(1); diff --git a/packages/node/index.js b/packages/node/index.js index 0a67511b6..e6e1f898b 100644 --- a/packages/node/index.js +++ b/packages/node/index.js @@ -15,7 +15,7 @@ const getOutputForEntry = entry => basename( format( merge( omit(parse(entry), ['base']), - { ext: '.js ' } + { ext: '.js' } ) ) ); From 1ab5f4e9120471b09d60c0135ab1fb382b56a00d Mon Sep 17 00:00:00 2001 From: Eli Perelman Date: Mon, 21 May 2018 15:52:16 -0500 Subject: [PATCH 7/7] The delightful adventures of yarn workspaces and monorepo dev dependencies --- package.json | 3 + yarn.lock | 1441 ++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 1213 insertions(+), 231 deletions(-) diff --git a/package.json b/package.json index 49e6f14ba..cb48ceaf0 100644 --- a/package.json +++ b/package.json @@ -39,8 +39,11 @@ "eslint-plugin-prettier": "^2.6.0", "husky": "^0.14.3", "jest": "^22.4.3", + "karma": "^2.0.2", + "karma-cli": "^1.0.1", "lerna": "^2.11.0", "lint-staged": "^7.0.5", + "mocha": "^5.2.0", "nyc": "^11.7.1", "prettier": "^1.12.1", "stylelint": "^8.4.0", diff --git a/yarn.lock b/yarn.lock index 5167bcbe0..5b8fc7c32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -727,9 +727,15 @@ version "1.0.2" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.0.2.tgz#d056b68999769728a1cff8d643bc59eb6f0be436" +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + dependencies: + any-observable "^0.3.0" + "@sinonjs/formatio@^2.0.0": version "2.0.0" - resolved "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz#84db7e9eb5531df18a8c5e0bfb6e449e55e654b2" + resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-2.0.0.tgz#84db7e9eb5531df18a8c5e0bfb6e449e55e654b2" dependencies: samsam "1.3.0" @@ -927,6 +933,20 @@ add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" +addressparser@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + +agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.0.tgz#9838b5c3392b962bad031e6a4c5e1024abec45ce" + dependencies: + es6-promisify "^5.0.0" + ajv-keywords@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" @@ -969,6 +989,16 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +amqplib@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.2.tgz#d2d7313c7ffaa4d10bcf1e6252de4591b6cc7b63" + dependencies: + bitsyntax "~0.0.4" + bluebird "^3.4.6" + buffer-more-ints "0.0.2" + readable-stream "1.x >=1.1.9" + safe-buffer "^5.0.1" + ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -1019,9 +1049,9 @@ ansi-wrap@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" -any-observable@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" anymatch@^1.3.0: version "1.3.2" @@ -1142,6 +1172,10 @@ array-iterate@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.2.tgz#f66a57e84426f8097f4197fbb6c051b8e5cdf7d8" +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -1160,6 +1194,10 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -1184,6 +1222,10 @@ assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" @@ -1202,6 +1244,10 @@ ast-types@0.9.6: version "0.9.6" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" +ast-types@0.x.x: + version "0.11.4" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.4.tgz#76f930930e9571851ba282a9a0f6923f29f6be2f" + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -1226,12 +1272,18 @@ async@1.x, async@^1.4.0, async@^1.5.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@2.6.0, async@^2.0.0, async@^2.1.4, async@^2.6.0: +async@2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: lodash "^4.14.0" +async@^2.0.0, async@^2.1.4, async@^2.6.0, async@~2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + dependencies: + lodash "^4.17.10" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1245,13 +1297,14 @@ auto-bind@^1.1.0: resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.2.0.tgz#8b7e318aad53d43ba8a8ecaf0066d85d5f798cd6" auto-changelog@^1.4.6: - version "1.4.6" - resolved "https://registry.yarnpkg.com/auto-changelog/-/auto-changelog-1.4.6.tgz#65d3c761c57dde7964e9ee550b27e45ca9772e56" + version "1.6.0" + resolved "https://registry.yarnpkg.com/auto-changelog/-/auto-changelog-1.6.0.tgz#a4f208c5a1d670515aecf927336901c67d3709a1" dependencies: babel-polyfill "^6.26.0" commander "^2.9.0" fs-extra "^5.0.0" handlebars "^4.0.11" + lodash.uniqby "^4.7.0" parse-github-url "^1.0.1" semver "^5.1.0" @@ -1375,14 +1428,24 @@ ava@^0.25.0: unique-temp-dir "^1.0.0" update-notifier "^2.3.0" +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" -aws4@^1.6.0: +aws4@^1.2.1, aws4@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" +axios@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" + dependencies: + follow-redirects "1.0.0" + axobject-query@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0" @@ -1519,20 +1582,21 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.3.tgz#4b7a0b6041691bbd422ab49b3b73654a49a6627a" +babel-jest@^22.4.4: + version "22.4.4" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.4.tgz#977259240420e227444ebe49e226a61e49ea659d" dependencies: babel-plugin-istanbul "^4.1.5" - babel-preset-jest "^22.4.3" + babel-preset-jest "^22.4.4" babel-loader@^8.0.0-beta.2: - version "8.0.0-beta.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.0-beta.2.tgz#4d5b67c964dc8c9cba866fd13d6b90df3acf8723" + version "8.0.0-beta.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.0-beta.3.tgz#49efeea6e8058d5af860a18a6de88b8c1450645b" dependencies: find-cache-dir "^1.0.0" loader-utils "^1.0.2" mkdirp "^0.5.1" + util.promisify "^1.0.0" babel-merge@^1.1.1: version "1.1.1" @@ -1574,9 +1638,9 @@ babel-plugin-istanbul@^4.1.5, babel-plugin-istanbul@^4.1.6: istanbul-lib-instrument "^1.10.1" test-exclude "^4.2.1" -babel-plugin-jest-hoist@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.3.tgz#7d8bcccadc2667f96a0dcc6afe1891875ee6c14a" +babel-plugin-jest-hoist@^22.4.3, babel-plugin-jest-hoist@^22.4.4: + version "22.4.4" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz#b9851906eab34c7bf6f8c895a2b08bea1a844c0b" babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" @@ -1681,11 +1745,11 @@ babel-polyfill@^6.26.0: core-js "^2.5.0" regenerator-runtime "^0.10.5" -babel-preset-jest@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.3.tgz#e92eef9813b7026ab4ca675799f37419b5a44156" +babel-preset-jest@^22.4.4: + version "22.4.4" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz#ec9fbd8bcd7dfd24b8b5320e0e688013235b7c39" dependencies: - babel-plugin-jest-hoist "^22.4.3" + babel-plugin-jest-hoist "^22.4.4" babel-plugin-syntax-object-rest-spread "^6.13.0" babel-register@^6.26.0: @@ -1752,6 +1816,10 @@ babylon@^6.1.0, babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + bail@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.3.tgz#63cfb9ddbac829b02a3128cd53224be78e6c21a3" @@ -1764,6 +1832,10 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + base64-js@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" @@ -1772,6 +1844,10 @@ base64-js@^1.0.2: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -1802,6 +1878,12 @@ beeper@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + dependencies: + callsite "1.0.0" + big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -1868,6 +1950,12 @@ binaryextensions@2: version "2.1.1" resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" +bitsyntax@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/bitsyntax/-/bitsyntax-0.0.4.tgz#eb10cc6f82b8c490e3e85698f07e83d46e0cba82" + dependencies: + buffer-more-ints "0.0.2" + bl@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" @@ -1875,7 +1963,17 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" -bluebird@^3.0.0, bluebird@^3.1.1, bluebird@^3.5.1: +bl@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" + dependencies: + readable-stream "~2.0.5" + +blob@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + +bluebird@^3.0.0, bluebird@^3.1.1, bluebird@^3.3.0, bluebird@^3.4.6, bluebird@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" @@ -1898,6 +1996,21 @@ body-parser@1.18.2: raw-body "2.3.2" type-is "~1.6.15" +body-parser@^1.16.1: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" @@ -1913,6 +2026,12 @@ boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + boom@4.x.x: version "4.3.1" resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" @@ -1944,6 +2063,12 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + dependencies: + expand-range "^0.1.0" + braces@^1.8.2: version "1.8.5" resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" @@ -1981,6 +2106,10 @@ browser-resolve@^1.11.2: dependencies: resolve "1.1.7" +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -2048,11 +2177,11 @@ browserslist@^2.11.3: electron-to-chromium "^1.3.30" browserslist@^3.0.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.7.tgz#aa488634d320b55e88bab0256184dbbcca1e6de9" + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" dependencies: - caniuse-lite "^1.0.30000835" - electron-to-chromium "^1.3.45" + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" bser@^2.0.0: version "2.0.0" @@ -2099,6 +2228,10 @@ buffer-indexof@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" +buffer-more-ints@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-0.0.2.tgz#26b3885d10fa13db7fc01aae3aab870199e0124c" + buffer-to-vinyl@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz#00f15faee3ab7a1dda2cde6d9121bffdd07b2262" @@ -2128,6 +2261,18 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buildmail@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" + dependencies: + addressparser "1.0.1" + libbase64 "0.1.0" + libmime "3.0.0" + libqp "1.1.0" + nodemailer-fetch "1.6.0" + nodemailer-shared "1.1.0" + punycode "1.4.1" + builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -2216,6 +2361,10 @@ caller-path@^0.1.0: dependencies: callsites "^0.2.0" +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" @@ -2268,12 +2417,12 @@ caniuse-api@^1.5.2: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000840" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000840.tgz#68d5a0f0694c92180b0d82e720d70f8e61366604" + version "1.0.30000844" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000844.tgz#bca5798cda2b6931d68100c2d69e55fb338cbb41" -caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30000835: - version "1.0.30000840" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000840.tgz#344513f8f843536cf99694964c09811277eee395" +caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30000844: + version "1.0.30000844" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000844.tgz#de7c84cde0582143cf4f5abdf1b98e5a0539ad4a" capture-exit@^1.2.0: version "1.2.0" @@ -2285,6 +2434,10 @@ capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -2364,7 +2517,7 @@ chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" -chokidar@^1.4.2: +chokidar@^1.4.1, chokidar@^1.4.2: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: @@ -2420,6 +2573,10 @@ circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" +circular-json@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.4.tgz#ff1ad2f2e392eeb8a5172d4d985fa846ed8ad656" + clap@^1.0.9: version "1.2.3" resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" @@ -2660,6 +2817,10 @@ colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" +colors@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.0.tgz#5f20c9fef6945cb1134260aab33bfbdc8295e04e" + colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -2671,7 +2832,13 @@ columnify@^1.5.4: strip-ansi "^3.0.0" wcwidth "^1.0.0" -combined-stream@1.0.6, combined-stream@~1.0.5: +combine-lists@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + dependencies: + lodash "^4.5.0" + +combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" dependencies: @@ -2689,7 +2856,7 @@ commander@2.15.0: version "2.15.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322" -commander@2.15.x, commander@^2.11.0, commander@^2.14.1, commander@^2.9.0, commander@~2.15.0: +commander@2.15.1, commander@2.15.x, commander@^2.11.0, commander@^2.14.1, commander@^2.9.0, commander@~2.15.0: version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" @@ -2722,10 +2889,18 @@ compare-versions@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.2.1.tgz#a49eb7689d4caaf0b6db5220173fd279614000f7" -component-emitter@^1.2.1: +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + +component-emitter@1.2.1, component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + compressible@~2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9" @@ -2795,6 +2970,15 @@ connect-history-api-fallback@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" +connect@^3.6.0: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + dependencies: + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" + console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" @@ -3043,7 +3227,7 @@ core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" -core-js@^2.0.0, core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3: +core-js@^2.0.0, core-js@^2.2.0, core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3: version "2.5.6" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.6.tgz#0fe6d45bf3cac3ac364a9d72de7576f4eb221b9d" @@ -3079,14 +3263,13 @@ cosmiconfig@^3.1.0: parse-json "^3.0.0" require-from-string "^2.0.1" -cosmiconfig@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" +cosmiconfig@^5.0.2: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.4.tgz#fe4c1fccf8947ab30911760eace33784749eb51e" dependencies: is-directory "^0.3.1" js-yaml "^3.9.0" parse-json "^4.0.0" - require-from-string "^2.0.1" create-ecdh@^4.0.0: version "4.0.3" @@ -3147,6 +3330,12 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + cryptiles@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" @@ -3318,6 +3507,10 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + cwebp-bin@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cwebp-bin/-/cwebp-bin-4.0.0.tgz#ee2b7f6333d3426fb52bb405fa6f2ec8b62894f4" @@ -3356,6 +3549,10 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" + data-urls@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.0.tgz#24802de4e81c298ea8a9388bb0d8e461c774684f" @@ -3368,6 +3565,10 @@ date-fns@1.29.0, date-fns@^1.27.2: version "1.29.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" +date-format@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" + date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" @@ -3405,13 +3606,13 @@ debug-log@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: +debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9, debug@~2.6.4, debug@~2.6.6: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.0.1, debug@^3.1.0: +debug@3.1.0, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: @@ -3618,6 +3819,14 @@ defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" +degenerator@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" + dependencies: + ast-types "0.x.x" + escodegen "1.x.x" + esprima "3.x.x" + del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -3694,7 +3903,11 @@ detect-node@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" -diff@^3.1.0, diff@^3.2.0, diff@^3.3.1: +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + +diff@3.5.0, diff@^3.1.0, diff@^3.2.0, diff@^3.3.1: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -3749,6 +3962,15 @@ dom-converter@~0.1: dependencies: utila "~0.3" +dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + dom-serializer@0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" @@ -3822,6 +4044,10 @@ dot-prop@^4.1.0, dot-prop@^4.1.1: dependencies: is-obj "^1.0.0" +double-ended-queue@^2.1.0-0: + version "2.1.0-0" + resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" + download@^4.0.0, download@^4.1.2: version "4.4.3" resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac" @@ -3924,9 +4150,9 @@ ejs@^2.3.4, ejs@^2.5.9: version "2.6.1" resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.45: - version "1.3.46" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.46.tgz#00e85e22275415a887505e4ab49737194f18b9b0" +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.47: + version "1.3.47" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.47.tgz#764e887ca9104d01a0ac8eabee7dfc0e2ce14104" elegant-spinner@^1.0.1: version "1.0.1" @@ -3959,7 +4185,7 @@ empower-core@^0.6.1: call-signature "0.0.2" core-js "^2.0.0" -encodeurl@~1.0.2: +encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -3975,6 +4201,45 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +engine.io-client@~3.1.0: + version "3.1.6" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.6.tgz#5bdeb130f8b94a50ac5cbeb72583e7a4a063ddfd" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary2 "~1.0.2" + +engine.io@~3.1.0: + version "3.1.5" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845" + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + optionalDependencies: + uws "~9.14.0" + enhanced-resolve@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" @@ -3983,6 +4248,10 @@ enhanced-resolve@^4.0.0: memory-fs "^0.4.0" tapable "^1.0.0" +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -4054,6 +4323,16 @@ es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" +es6-promise@^4.0.3: + version "4.2.4" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + dependencies: + es6-promise "^4.0.3" + es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" @@ -4072,7 +4351,7 @@ escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, 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" @@ -4087,7 +4366,7 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -escodegen@^1.9.0: +escodegen@1.x.x, escodegen@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" dependencies: @@ -4155,8 +4434,8 @@ eslint-plugin-babel@^5.1.0: eslint-rule-composer "^0.3.0" eslint-plugin-import@^2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.11.0.tgz#15aeea37a67499d848e8e981806d4627b5503816" + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.12.0.tgz#dad31781292d6664b25317fd049d2e2b2f02205d" dependencies: contains-path "^0.1.0" debug "^2.6.8" @@ -4306,7 +4585,7 @@ esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@^3.1.3, esprima@~3.1.0: +esprima@3.x.x, esprima@^3.1.3, esprima@~3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -4460,6 +4739,14 @@ exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" +expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -4478,13 +4765,20 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + expand-range@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" dependencies: fill-range "^2.1.0" -expect@^22.4.3: +expect@^22.4.0: version "22.4.3" resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.3.tgz#d5a29d0a0e1fb2153557caef2674d4547e914674" dependencies: @@ -4556,7 +4850,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.1: +extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -4717,6 +5011,10 @@ file-type@^6.1.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" +file-uri-to-path@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -4771,6 +5069,18 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + finalhandler@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" @@ -4859,9 +5169,15 @@ fn-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" +follow-redirects@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" + dependencies: + debug "^2.2.0" + follow-redirects@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.4.1.tgz#d8120f4518190f55aac65bb6fc7b85fcd666d6aa" + version "1.5.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77" dependencies: debug "^3.1.0" @@ -4890,7 +5206,15 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -form-data@~2.3.1: +form-data@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.11" + +form-data@~2.3.0, form-data@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" dependencies: @@ -4989,6 +5313,13 @@ fsevents@^1.0.0, fsevents@^1.1.2, fsevents@^1.2.3: nan "^2.9.2" node-pre-gyp "^0.10.0" +ftp@~0.3.10: + version "0.3.10" + resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + dependencies: + readable-stream "1.1.x" + xregexp "2.0.0" + function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -5014,6 +5345,16 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" @@ -5067,6 +5408,17 @@ get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +get-uri@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.2.tgz#5c795e71326f6ca1286f2fc82575cd2bab2af578" + dependencies: + data-uri-to-buffer "1" + debug "2" + extend "3" + file-uri-to-path "1" + ftp "~0.3.10" + readable-stream "2" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -5165,6 +5517,17 @@ glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" +glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^5.0.15, glob@^5.0.3: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" @@ -5185,17 +5548,6 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -5346,6 +5698,10 @@ grouped-queue@^0.3.3: dependencies: lodash "^4.17.2" +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -5420,6 +5776,15 @@ har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -5433,10 +5798,20 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + dependencies: + isarray "2.0.1" + has-color@~0.1.0: version "0.1.7" resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -5528,6 +5903,15 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.0" +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + hawk@~6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" @@ -5537,10 +5921,17 @@ hawk@~6.0.2: hoek "4.x.x" sntp "2.x.x" -he@1.1.x, he@^1.1.0: +he@1.1.1, he@1.1.x, he@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" +hipchat-notifier@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e" + dependencies: + lodash "^4.0.0" + request "^2.0.0" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -5549,6 +5940,10 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + hoek@4.x.x: version "4.2.1" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" @@ -5602,8 +5997,8 @@ html-loader@^0.5.5: object-assign "^4.1.1" html-minifier@^3.2.3, html-minifier@^3.5.8: - version "3.5.15" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.15.tgz#f869848d4543cbfd84f26d5514a2a87cbf9a05e0" + version "3.5.16" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.16.tgz#39f5aabaf78bdfc057fe67334226efd7f3851175" dependencies: camel-case "3.0.x" clean-css "4.1.x" @@ -5670,7 +6065,7 @@ http-errors@1.6.2: setprototypeof "1.0.3" statuses ">= 1.3.1 < 2" -http-errors@1.6.3, http-errors@~1.6.2: +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" dependencies: @@ -5680,8 +6075,15 @@ http-errors@1.6.3, http-errors@~1.6.2: statuses ">= 1.4.0 < 2" http-parser-js@>=0.4.0: - version "0.4.12" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.12.tgz#b9cfbf4a2cf26f0fc34b10ca1489a27771e3474f" + version "0.4.13" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" + +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + dependencies: + agent-base "4" + debug "3.1.0" http-proxy-middleware@~0.18.0: version "0.18.0" @@ -5692,7 +6094,7 @@ http-proxy-middleware@~0.18.0: lodash "^4.17.5" micromatch "^3.1.9" -http-proxy@^1.16.2: +http-proxy@^1.13.0, http-proxy@^1.16.2: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" dependencies: @@ -5700,6 +6102,14 @@ http-proxy@^1.16.2: follow-redirects "^1.0.0" requires-port "^1.0.0" +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -5708,10 +6118,28 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +httpntlm@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/httpntlm/-/httpntlm-1.6.1.tgz#ad01527143a2e8773cfae6a96f58656bb52a34b2" + dependencies: + httpreq ">=0.4.22" + underscore "~1.7.0" + +httpreq@>=0.4.22: + version "0.4.24" + resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f" + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" +https-proxy-agent@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + hullabaloo-config-manager@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz#1d9117813129ad035fd9e8477eaf066911269fe3" @@ -5739,11 +6167,15 @@ husky@^0.14.3: normalize-path "^1.0.0" strip-indent "^2.0.0" +iconv-lite@0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" + iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" -iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.23, iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" dependencies: @@ -5884,6 +6316,14 @@ indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" +inflection@~1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" + +inflection@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.3.8.tgz#cbd160da9f75b14c3cc63578d4f396784bf3014e" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -5964,7 +6404,7 @@ 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.0, ip@^1.1.5: +ip@^1.1.0, ip@^1.1.2, ip@^1.1.4, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -6186,6 +6626,20 @@ is-jpg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-1.0.1.tgz#296d57fdd99ce010434a7283e346ab9a1035e975" +is-my-ip-valid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" + +is-my-json-valid@^2.12.4: + version "2.17.2" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + is-my-ip-valid "^1.0.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + is-natural-number@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7" @@ -6198,6 +6652,10 @@ is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -6228,7 +6686,7 @@ is-observable@^0.2.0: dependencies: symbol-observable "^0.2.2" -is-observable@^1.0.0: +is-observable@^1.0.0, is-observable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" dependencies: @@ -6286,6 +6744,10 @@ is-promise@~1, is-promise@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5" +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -6394,7 +6856,11 @@ 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.2: +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + +isbinaryfile@^3.0.0, isbinaryfile@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" @@ -6556,15 +7022,15 @@ javascript-stringify@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" -jest-changed-files@^22.4.3: +jest-changed-files@^22.2.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.4.3.tgz#8882181e022c38bd46a2e4d18d44d19d90a90fb2" dependencies: throat "^4.0.0" -jest-cli@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.3.tgz#bf16c4a5fb7edc3fa5b9bb7819e34139e88a72c7" +jest-cli@^22.4.4: + version "22.4.4" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.4.tgz#68cd2a2aae983adb1e6638248ca21082fd6d9e90" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -6577,20 +7043,20 @@ jest-cli@^22.4.3: istanbul-lib-coverage "^1.1.1" istanbul-lib-instrument "^1.8.0" istanbul-lib-source-maps "^1.2.1" - jest-changed-files "^22.4.3" - jest-config "^22.4.3" - jest-environment-jsdom "^22.4.3" - jest-get-type "^22.4.3" - jest-haste-map "^22.4.3" - jest-message-util "^22.4.3" - jest-regex-util "^22.4.3" - jest-resolve-dependencies "^22.4.3" - jest-runner "^22.4.3" - jest-runtime "^22.4.3" - jest-snapshot "^22.4.3" - jest-util "^22.4.3" - jest-validate "^22.4.3" - jest-worker "^22.4.3" + jest-changed-files "^22.2.0" + jest-config "^22.4.4" + jest-environment-jsdom "^22.4.1" + jest-get-type "^22.1.0" + jest-haste-map "^22.4.2" + jest-message-util "^22.4.0" + jest-regex-util "^22.1.0" + jest-resolve-dependencies "^22.1.0" + jest-runner "^22.4.4" + jest-runtime "^22.4.4" + jest-snapshot "^22.4.0" + jest-util "^22.4.1" + jest-validate "^22.4.4" + jest-worker "^22.2.2" micromatch "^2.3.11" node-notifier "^5.2.1" realpath-native "^1.0.0" @@ -6601,23 +7067,23 @@ jest-cli@^22.4.3: which "^1.2.12" yargs "^10.0.3" -jest-config@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.3.tgz#0e9d57db267839ea31309119b41dc2fa31b76403" +jest-config@^22.4.4: + version "22.4.4" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.4.tgz#72a521188720597169cd8b4ff86934ef5752d86a" dependencies: chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^22.4.3" - jest-environment-node "^22.4.3" - jest-get-type "^22.4.3" - jest-jasmine2 "^22.4.3" - jest-regex-util "^22.4.3" - jest-resolve "^22.4.3" - jest-util "^22.4.3" - jest-validate "^22.4.3" - pretty-format "^22.4.3" - -jest-diff@^22.4.3: + jest-environment-jsdom "^22.4.1" + jest-environment-node "^22.4.1" + jest-get-type "^22.1.0" + jest-jasmine2 "^22.4.4" + jest-regex-util "^22.1.0" + jest-resolve "^22.4.2" + jest-util "^22.4.1" + jest-validate "^22.4.4" + pretty-format "^22.4.0" + +jest-diff@^22.4.0, jest-diff@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.3.tgz#e18cc3feff0aeef159d02310f2686d4065378030" dependencies: @@ -6630,13 +7096,13 @@ jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" -jest-docblock@^22.4.3: +jest-docblock@^22.4.0, jest-docblock@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.3.tgz#50886f132b42b280c903c592373bb6e93bb68b19" dependencies: detect-newline "^2.1.0" -jest-environment-jsdom@^22.4.3: +jest-environment-jsdom@^22.4.1: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz#d67daa4155e33516aecdd35afd82d4abf0fa8a1e" dependencies: @@ -6644,18 +7110,18 @@ jest-environment-jsdom@^22.4.3: jest-util "^22.4.3" jsdom "^11.5.1" -jest-environment-node@^22.4.3: +jest-environment-node@^22.4.1: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.3.tgz#54c4eaa374c83dd52a9da8759be14ebe1d0b9129" dependencies: jest-mock "^22.4.3" jest-util "^22.4.3" -jest-get-type@^22.4.3: +jest-get-type@^22.1.0, jest-get-type@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" -jest-haste-map@^22.4.3: +jest-haste-map@^22.4.2: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.3.tgz#25842fa2ba350200767ac27f658d58b9d5c2e20b" dependencies: @@ -6667,29 +7133,29 @@ jest-haste-map@^22.4.3: micromatch "^2.3.11" sane "^2.0.0" -jest-jasmine2@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz#4daf64cd14c793da9db34a7c7b8dcfe52a745965" +jest-jasmine2@^22.4.4: + version "22.4.4" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.4.tgz#c55f92c961a141f693f869f5f081a79a10d24e23" dependencies: chalk "^2.0.1" co "^4.6.0" - expect "^22.4.3" + expect "^22.4.0" graceful-fs "^4.1.11" is-generator-fn "^1.0.0" - jest-diff "^22.4.3" - jest-matcher-utils "^22.4.3" - jest-message-util "^22.4.3" - jest-snapshot "^22.4.3" - jest-util "^22.4.3" + jest-diff "^22.4.0" + jest-matcher-utils "^22.4.0" + jest-message-util "^22.4.0" + jest-snapshot "^22.4.0" + jest-util "^22.4.1" source-map-support "^0.5.0" -jest-leak-detector@^22.4.3: +jest-leak-detector@^22.4.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz#2b7b263103afae8c52b6b91241a2de40117e5b35" dependencies: pretty-format "^22.4.3" -jest-matcher-utils@^22.4.3: +jest-matcher-utils@^22.4.0, jest-matcher-utils@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff" dependencies: @@ -6697,7 +7163,7 @@ jest-matcher-utils@^22.4.3: jest-get-type "^22.4.3" pretty-format "^22.4.3" -jest-message-util@^22.4.3: +jest-message-util@^22.4.0, jest-message-util@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7" dependencies: @@ -6711,56 +7177,56 @@ jest-mock@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" -jest-regex-util@^22.4.3: +jest-regex-util@^22.1.0, jest-regex-util@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" -jest-resolve-dependencies@^22.4.3: +jest-resolve-dependencies@^22.1.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz#e2256a5a846732dc3969cb72f3c9ad7725a8195e" dependencies: jest-regex-util "^22.4.3" -jest-resolve@^22.4.3: +jest-resolve@^22.4.2: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.3.tgz#0ce9d438c8438229aa9b916968ec6b05c1abb4ea" dependencies: browser-resolve "^1.11.2" chalk "^2.0.1" -jest-runner@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.3.tgz#298ddd6a22b992c64401b4667702b325e50610c3" +jest-runner@^22.4.4: + version "22.4.4" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.4.tgz#dfca7b7553e0fa617e7b1291aeb7ce83e540a907" dependencies: exit "^0.1.2" - jest-config "^22.4.3" - jest-docblock "^22.4.3" - jest-haste-map "^22.4.3" - jest-jasmine2 "^22.4.3" - jest-leak-detector "^22.4.3" - jest-message-util "^22.4.3" - jest-runtime "^22.4.3" - jest-util "^22.4.3" - jest-worker "^22.4.3" + jest-config "^22.4.4" + jest-docblock "^22.4.0" + jest-haste-map "^22.4.2" + jest-jasmine2 "^22.4.4" + jest-leak-detector "^22.4.0" + jest-message-util "^22.4.0" + jest-runtime "^22.4.4" + jest-util "^22.4.1" + jest-worker "^22.2.2" throat "^4.0.0" -jest-runtime@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.3.tgz#b69926c34b851b920f666c93e86ba2912087e3d0" +jest-runtime@^22.4.4: + version "22.4.4" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.4.tgz#9ba7792fc75582a5be0f79af6f8fe8adea314048" dependencies: babel-core "^6.0.0" - babel-jest "^22.4.3" + babel-jest "^22.4.4" babel-plugin-istanbul "^4.1.5" chalk "^2.0.1" convert-source-map "^1.4.0" exit "^0.1.2" graceful-fs "^4.1.11" - jest-config "^22.4.3" - jest-haste-map "^22.4.3" - jest-regex-util "^22.4.3" - jest-resolve "^22.4.3" - jest-util "^22.4.3" - jest-validate "^22.4.3" + jest-config "^22.4.4" + jest-haste-map "^22.4.2" + jest-regex-util "^22.1.0" + jest-resolve "^22.4.2" + jest-util "^22.4.1" + jest-validate "^22.4.4" json-stable-stringify "^1.0.1" micromatch "^2.3.11" realpath-native "^1.0.0" @@ -6773,7 +7239,7 @@ jest-serializer@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.3.tgz#a679b81a7f111e4766235f4f0c46d230ee0f7436" -jest-snapshot@^22.4.3: +jest-snapshot@^22.4.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.3.tgz#b5c9b42846ffb9faccb76b841315ba67887362d2" dependencies: @@ -6784,7 +7250,7 @@ jest-snapshot@^22.4.3: natural-compare "^1.4.0" pretty-format "^22.4.3" -jest-util@^22.4.3: +jest-util@^22.4.1, jest-util@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.3.tgz#c70fec8eec487c37b10b0809dc064a7ecf6aafac" dependencies: @@ -6796,32 +7262,32 @@ jest-util@^22.4.3: mkdirp "^0.5.1" source-map "^0.6.0" -jest-validate@^22.4.0, jest-validate@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.3.tgz#0780954a5a7daaeec8d3c10834b9280865976b30" +jest-validate@^22.4.0, jest-validate@^22.4.4: + version "22.4.4" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.4.tgz#1dd0b616ef46c995de61810d85f57119dbbcec4d" dependencies: chalk "^2.0.1" - jest-config "^22.4.3" - jest-get-type "^22.4.3" + jest-config "^22.4.4" + jest-get-type "^22.1.0" leven "^2.1.0" - pretty-format "^22.4.3" + pretty-format "^22.4.0" -jest-worker@^22.4.3: +jest-worker@^22.2.2, jest-worker@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.4.3.tgz#5c421417cba1c0abf64bf56bd5fb7968d79dd40b" dependencies: merge-stream "^1.0.1" jest@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.3.tgz#2261f4b117dc46d9a4a1a673d2150958dee92f16" + version "22.4.4" + resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.4.tgz#ffb36c9654b339a13e10b3d4b338eb3e9d49f6eb" dependencies: import-local "^1.0.0" - jest-cli "^22.4.3" + jest-cli "^22.4.4" js-base64@^2.1.9: - version "2.4.3" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" + version "2.4.5" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.5.tgz#e293cd3c7c82f070d700fc7a1ca0a2e69f101f92" js-string-escape@1.0.1, js-string-escape@^1.0.1: version "1.0.1" @@ -6921,7 +7387,7 @@ json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: +json-stringify-safe@5.0.x, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -6953,6 +7419,10 @@ jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + jsonwebtoken@8.2.1: version "8.2.1" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz#333ee39aa8f238f32fa41693e7a2fb7e42f82b31" @@ -7009,6 +7479,12 @@ karma-chrome-launcher@^2.2.0: fs-access "^1.0.0" which "^1.2.1" +karma-cli@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960" + dependencies: + resolve "^1.1.6" + karma-coverage@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.2.tgz#cc09dceb589a83101aca5fe70c287645ef387689" @@ -7044,6 +7520,38 @@ karma-webpack@^3.0.0: source-map "^0.5.6" webpack-dev-middleware "^2.0.6" +karma@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.2.tgz#4d2db9402850a66551fa784b0164fb0824ed8c4b" + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^1.4.1" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^4.17.4" + log4js "^2.3.9" + mime "^1.3.4" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "2.0.4" + source-map "^0.6.1" + tmp "0.0.33" + useragent "2.2.1" + keygrip@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.0.2.tgz#ad3297c557069dea8bcfe7a4fa491b75c5ddeb91" @@ -7184,14 +7692,30 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libbase64@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6" + +libmime@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/libmime/-/libmime-3.0.0.tgz#51a1a9e7448ecbd32cda54421675bb21bc093da6" + dependencies: + iconv-lite "0.4.15" + libbase64 "0.1.0" + libqp "1.1.0" + +libqp@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" + lint-staged@^7.0.5: - version "7.1.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.1.0.tgz#1514a5b71b8d9492ca0c3d2a44769cbcbc8bcc79" + version "7.1.2" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.1.2.tgz#140b13519a0f9c1f227f4a8b7e1321852aeea860" dependencies: app-root-path "^2.0.1" chalk "^2.3.1" commander "^2.14.1" - cosmiconfig "^4.0.0" + cosmiconfig "^5.0.2" debug "^3.1.0" dedent "^0.7.0" execa "^0.9.0" @@ -7199,7 +7723,7 @@ lint-staged@^7.0.5: is-glob "^4.0.0" is-windows "^1.0.2" jest-validate "^22.4.0" - listr "^0.13.0" + listr "^0.14.1" lodash "^4.17.5" log-symbols "^2.2.0" micromatch "^3.1.8" @@ -7238,15 +7762,15 @@ listr-verbose-renderer@^0.4.0: date-fns "^1.27.2" figures "^1.7.0" -listr@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.13.0.tgz#20bb0ba30bae660ee84cc0503df4be3d5623887d" +listr@^0.14.1: + version "0.14.1" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.1.tgz#8a7afa4a7135cee4c921d128e0b7dfc6e522d43d" dependencies: - chalk "^1.1.3" + "@samverschueren/stream-to-observable" "^0.3.0" cli-truncate "^0.2.1" figures "^1.7.0" indent-string "^2.1.0" - is-observable "^0.2.0" + is-observable "^1.1.0" is-promise "^2.1.0" is-stream "^1.1.0" listr-silent-renderer "^1.1.1" @@ -7256,8 +7780,7 @@ listr@^0.13.0: log-update "^1.0.2" ora "^0.2.3" p-map "^1.1.1" - rxjs "^5.4.2" - stream-to-observable "^0.2.0" + rxjs "^6.1.0" strip-ansi "^3.0.1" load-json-file@^1.0.0: @@ -7507,7 +8030,11 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@4.17.10, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1: +lodash.uniqby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" + +lodash@4.17.10, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -7530,6 +8057,25 @@ log-update@^1.0.2: ansi-escapes "^1.0.0" cli-cursor "^1.0.2" +log4js@^2.3.9: + version "2.7.0" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.7.0.tgz#adbf21cc70927644e3cc86669a0225acbc230971" + dependencies: + circular-json "^0.5.4" + date-format "^1.2.0" + debug "^3.1.0" + semver "^5.5.0" + streamroller "0.7.0" + optionalDependencies: + amqplib "^0.5.2" + axios "^0.15.3" + hipchat-notifier "^1.1.0" + loggly "^1.1.0" + mailgun-js "^0.18.0" + nodemailer "^2.5.0" + redis "^2.7.1" + slack-node "~0.2.0" + logalot@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" @@ -7537,6 +8083,14 @@ logalot@^2.0.0: figures "^1.3.5" squeak "^1.0.0" +loggly@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/loggly/-/loggly-1.1.1.tgz#0a0fc1d3fa3a5ec44fdc7b897beba2a4695cebee" + dependencies: + json-stringify-safe "5.0.x" + request "2.75.x" + timespan "2.3.x" + loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" @@ -7549,8 +8103,8 @@ loglevelnext@^1.0.1: object.assign "^4.1.0" lolex@^2.2.0, lolex@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.5.0.tgz#69d6a667607738564daf108f63240ae8cbd28fb4" + version "2.6.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.6.0.tgz#cf9166f3c9dece3cdeb5d6b01fce50f14a1203e3" long@^3.2.0: version "3.2.0" @@ -7594,7 +8148,11 @@ lpad-align@^1.0.1: longest "^1.0.0" meow "^3.3.0" -lru-cache@^4.0.1, lru-cache@^4.1.1: +lru-cache@2.2.x: + version "2.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" + +lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" dependencies: @@ -7609,6 +8167,27 @@ macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" +mailcomposer@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4" + dependencies: + buildmail "4.0.1" + libmime "3.0.0" + +mailgun-js@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.18.0.tgz#81fed0c66a411d3ff6c4354861ad21387afcfaaa" + dependencies: + async "~2.6.0" + debug "~3.1.0" + form-data "~2.3.0" + inflection "~1.12.0" + is-stream "^1.1.0" + path-proxy "~1.0.0" + promisify-call "^2.0.2" + proxy-agent "~3.0.0" + tsscmp "~1.0.0" + make-dir@^1.0.0, make-dir@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -7700,8 +8279,8 @@ mdast-util-compact@^1.0.0: unist-util-visit "^1.1.0" mdn-data@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.2.tgz#ceaa6a831b4de494352af984d301e3a8f2cad6e5" + version "1.1.3" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.3.tgz#d0929cdf73db32b0afd6d3ab8ef3da2b29b6f76b" media-typer@0.3.0: version "0.3.0" @@ -7848,7 +8427,7 @@ miller-rabin@^4.0.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18: +mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: version "2.1.18" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" dependencies: @@ -7862,6 +8441,10 @@ mime@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.2.0.tgz#161e541965551d3b549fa1114391e3a3d55b923b" +mime@^1.3.4: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + mime@^2.0.3, mime@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" @@ -7929,8 +8512,8 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" minipass@^2.2.1, minipass@^2.2.4: - version "2.3.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.0.tgz#2e11b1c46df7fe7f1afbe9a490280add21ffe384" + version "2.3.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.1.tgz#4e872b959131a672837ab3cb554962bc84b1537d" dependencies: safe-buffer "^5.1.1" yallist "^3.0.0" @@ -7973,6 +8556,22 @@ mocha-coverage-reporter@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/mocha-coverage-reporter/-/mocha-coverage-reporter-0.0.1.tgz#1f996a3cd6ea89bc53eca4807fd1c91da54c9e09" +mocha@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + dependencies: + browser-stdout "1.3.1" + commander "2.15.1" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.5" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "5.4.0" + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -8091,6 +8690,10 @@ neo-async@^2.5.0: version "2.5.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" +netmask@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" + next-tick@1: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -8190,6 +8793,10 @@ 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.7: + version "1.4.8" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" + nodeify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/nodeify/-/nodeify-1.0.1.tgz#64ab69a7bdbaf03ce107b4f0335c87c0b9e91b1d" @@ -8197,6 +8804,55 @@ nodeify@^1.0.0: is-promise "~1.0.0" promise "~1.3.0" +nodemailer-direct-transport@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz#e96fafb90358560947e569017d97e60738a50a86" + dependencies: + nodemailer-shared "1.1.0" + smtp-connection "2.12.0" + +nodemailer-fetch@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4" + +nodemailer-shared@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0" + dependencies: + nodemailer-fetch "1.6.0" + +nodemailer-smtp-pool@2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz#2eb94d6cf85780b1b4725ce853b9cbd5e8da8c72" + dependencies: + nodemailer-shared "1.1.0" + nodemailer-wellknown "0.1.10" + smtp-connection "2.12.0" + +nodemailer-smtp-transport@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz#03d71c76314f14ac7dbc7bf033a6a6d16d67fb77" + dependencies: + nodemailer-shared "1.1.0" + nodemailer-wellknown "0.1.10" + smtp-connection "2.12.0" + +nodemailer-wellknown@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz#586db8101db30cb4438eb546737a41aad0cf13d5" + +nodemailer@^2.5.0: + version "2.7.2" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-2.7.2.tgz#f242e649aeeae39b6c7ed740ef7b061c404d30f9" + dependencies: + libmime "3.0.0" + mailcomposer "4.0.1" + nodemailer-direct-transport "3.3.2" + nodemailer-shared "1.1.0" + nodemailer-smtp-pool "2.8.2" + nodemailer-smtp-transport "2.7.2" + socks "1.1.9" + nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -8316,8 +8972,8 @@ nwmatcher@^1.4.3: resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" nyc@^11.7.1: - version "11.7.3" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.7.3.tgz#164f4cfad84dee6d8f353824231d9dd683aa14ea" + version "11.8.0" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.8.0.tgz#1e8453b0644f8fea4d829b1a6636663157cd3b00" dependencies: archy "^1.0.0" arrify "^1.0.1" @@ -8347,7 +9003,7 @@ nyc@^11.7.1: yargs "11.1.0" yargs-parser "^8.0.0" -oauth-sign@~0.8.2: +oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -8363,6 +9019,10 @@ object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1 version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -8618,6 +9278,29 @@ p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" +pac-proxy-agent@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz#90d9f6730ab0f4d2607dcdcd4d3d641aa26c3896" + dependencies: + agent-base "^4.2.0" + debug "^3.1.0" + get-uri "^2.0.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + pac-resolver "^3.0.0" + raw-body "^2.2.0" + socks-proxy-agent "^3.0.0" + +pac-resolver@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" + dependencies: + co "^4.6.0" + degenerator "^1.0.4" + ip "^1.1.5" + netmask "^1.0.6" + thunkify "^2.1.2" + package-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" @@ -8729,6 +9412,18 @@ parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + dependencies: + better-assert "~1.0.0" + parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -8771,6 +9466,12 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +path-proxy@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e" + dependencies: + inflection "~1.3.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -9271,7 +9972,7 @@ pretty-error@^2.0.2: renderkid "^2.0.1" utila "~0.4" -pretty-format@^22.4.3: +pretty-format@^22.4.0, pretty-format@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f" dependencies: @@ -9299,6 +10000,10 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -9327,6 +10032,12 @@ promise@~1.3.0: dependencies: is-promise "~1" +promisify-call@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/promisify-call/-/promisify-call-2.0.4.tgz#d48c2d45652ccccd52801ddecbd533a6d4bd5fba" + dependencies: + with-callback "^1.0.2" + prop-types@^15.5.4, prop-types@^15.6.0: version "15.6.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" @@ -9346,6 +10057,23 @@ proxy-addr@~2.0.3: forwarded "~0.1.2" ipaddr.js "1.6.0" +proxy-agent@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-3.0.0.tgz#f6768e202889b2285d39906d3a94768416f8f713" + dependencies: + agent-base "^4.2.0" + debug "^3.1.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + lru-cache "^4.1.2" + pac-proxy-agent "^2.0.1" + proxy-from-env "^1.0.0" + socks-proxy-agent "^3.0.0" + +proxy-from-env@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -9372,8 +10100,8 @@ pump@^2.0.0, pump@^2.0.1: once "^1.3.1" pumpify@^1.3.3: - version "1.5.0" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.0.tgz#30c905a26c88fa0074927af07256672b474b1c15" + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" dependencies: duplexify "^3.6.0" inherits "^2.0.3" @@ -9383,7 +10111,7 @@ punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -punycode@^1.2.4, punycode@^1.4.1: +punycode@1.4.1, punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -9395,14 +10123,22 @@ q@^1.1.2, q@^1.4.1, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" +qjobs@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" -qs@~6.5.1: +qs@6.5.2, qs@~6.5.1: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" +qs@~6.2.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" + query-string@^4.1.0: version "4.3.4" resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" @@ -9451,7 +10187,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.0.3, range-parser@~1.2.0: +range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" @@ -9464,6 +10200,15 @@ raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" +raw-body@2.3.3, raw-body@^2.2.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.1.7: version "1.2.7" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.7.tgz#8a10ca30d588d00464360372b890d06dacd02297" @@ -9576,7 +10321,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6: +"readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -9597,7 +10342,7 @@ readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0": isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@~1.1.9: +readable-stream@1.1.x, "readable-stream@1.x >=1.1.9", readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" dependencies: @@ -9606,6 +10351,17 @@ readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -9659,6 +10415,22 @@ redent@^2.0.0: indent-string "^3.0.0" strip-indent "^2.0.0" +redis-commands@^1.2.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2" + +redis-parser@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" + +redis@^2.7.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" + dependencies: + double-ended-queue "^2.1.0-0" + redis-commands "^1.2.0" + redis-parser "^2.6.0" + reduce-css-calc@^1.2.6: version "1.3.0" resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" @@ -9849,6 +10621,10 @@ repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" +repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -9881,6 +10657,32 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" +request@2.75.x: + 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" + bl "~1.1.2" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.0.0" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.7" + oauth-sign "~0.8.1" + qs "~6.2.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + request@2.85.0: version "2.85.0" resolved "https://registry.yarnpkg.com/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" @@ -9908,9 +10710,9 @@ request@2.85.0: tunnel-agent "^0.6.0" uuid "^3.1.0" -request@^2.83.0: - version "2.86.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.86.0.tgz#2b9497f449b0a32654c081a5cf426bbfb5bf5b69" +request@^2.0.0, request@^2.74.0, request@^2.83.0: + version "2.87.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" dependencies: aws-sign2 "~0.7.0" aws4 "^1.6.0" @@ -9920,7 +10722,6 @@ request@^2.83.0: forever-agent "~0.6.1" form-data "~2.3.1" har-validator "~5.0.3" - hawk "~6.0.2" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -9934,6 +10735,15 @@ request@^2.83.0: tunnel-agent "^0.6.0" uuid "^3.1.0" +requestretry@^1.2.2: + version "1.13.0" + resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-1.13.0.tgz#213ec1006eeb750e8b8ce54176283d15a8d55d94" + dependencies: + extend "^3.0.0" + lodash "^4.15.0" + request "^2.74.0" + when "^3.7.7" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -10025,7 +10835,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -10070,12 +10880,18 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" -rxjs@^5.4.2, rxjs@^5.5.2: +rxjs@^5.5.2: version "5.5.10" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.10.tgz#fde02d7a614f6c8683d0d1957827f492e09db045" dependencies: symbol-observable "1.0.1" +rxjs@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.1.0.tgz#833447de4e4f6427b9cec3e5eb9f56415cd28315" + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -10306,6 +11122,12 @@ sinon@^5.0.7: supports-color "^5.1.0" type-detect "^4.0.5" +slack-node@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30" + dependencies: + requestretry "^1.2.2" + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -10324,6 +11146,17 @@ slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" +smart-buffer@^1.0.13, smart-buffer@^1.0.4: + version "1.1.15" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" + +smtp-connection@2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.12.0.tgz#d76ef9127cb23c2259edb1e8349c2e8d5e2d74c1" + dependencies: + httpntlm "1.6.1" + nodemailer-shared "1.1.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -10351,12 +11184,59 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + sntp@2.x.x: version "2.1.0" resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" dependencies: hoek "4.x.x" +socket.io-adapter@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + +socket.io-client@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~2.6.4" + engine.io-client "~3.1.0" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.1.1" + to-array "0.1.4" + +socket.io-parser@~3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + has-binary2 "~1.0.2" + isarray "2.0.1" + +socket.io@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" + dependencies: + debug "~2.6.6" + engine.io "~3.1.0" + socket.io-adapter "~1.1.0" + socket.io-client "2.0.4" + socket.io-parser "~3.1.1" + sockjs-client@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" @@ -10375,6 +11255,27 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" +socks-proxy-agent@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" + dependencies: + agent-base "^4.1.0" + socks "^1.1.10" + +socks@1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.9.tgz#628d7e4d04912435445ac0b6e459376cb3e6d691" + dependencies: + ip "^1.1.2" + smart-buffer "^1.0.4" + +socks@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" + dependencies: + ip "^1.1.4" + smart-buffer "^1.0.13" + sort-keys-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" @@ -10607,6 +11508,10 @@ static-extend@^0.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + statuses@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" @@ -10650,11 +11555,14 @@ stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" -stream-to-observable@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.2.0.tgz#59d6ea393d87c2c0ddac10aa0d561bc6ba6f0e10" +streamroller@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" dependencies: - any-observable "^0.2.0" + date-format "^1.2.0" + debug "^3.1.0" + mkdirp "^0.5.1" + readable-stream "^2.3.0" strict-uri-encode@^1.0.0: version "1.1.0" @@ -10717,9 +11625,9 @@ stringify-object@^3.2.2: is-obj "^1.0.1" is-regexp "^1.0.0" -stringstream@~0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" +stringstream@~0.0.4, stringstream@~0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" @@ -10836,8 +11744,8 @@ stylelint-processor-html@^1.0.0: htmlparser2 "^3.9.1" stylelint-webpack-plugin@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/stylelint-webpack-plugin/-/stylelint-webpack-plugin-0.10.4.tgz#08d52666bcdc1e9808ebcdabfde555b15a839a34" + version "0.10.5" + resolved "https://registry.yarnpkg.com/stylelint-webpack-plugin/-/stylelint-webpack-plugin-0.10.5.tgz#0b6e0d373ff5e03baa8197ebe0f2625981bd266b" dependencies: arrify "^1.0.1" micromatch "^3.1.8" @@ -10910,6 +11818,12 @@ supertap@^1.0.0: serialize-error "^2.1.0" strip-ansi "^4.0.0" +supports-color@5.4.0, supports-color@^5.0.0, supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + dependencies: + has-flag "^3.0.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -10920,12 +11834,6 @@ supports-color@^3.1.0, supports-color@^3.1.2, supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^5.0.0, supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - dependencies: - has-flag "^3.0.0" - svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" @@ -11117,6 +12025,10 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +thunkify@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" + thunky@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" @@ -11143,7 +12055,11 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -tmp@^0.0.33: +timespan@2.3.x: + version "2.3.0" + resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929" + +tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" dependencies: @@ -11159,6 +12075,10 @@ to-absolute-glob@^0.1.1: dependencies: extend-shallow "^2.0.1" +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -11201,7 +12121,7 @@ toposort@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" -tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" dependencies: @@ -11247,11 +12167,19 @@ trough@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.2.tgz#7f1663ec55c480139e2de5e486c6aef6cc24a535" +tslib@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.1.tgz#a5d1f0532a49221c87755cfcc89ca37197242ba7" + +tsscmp@~1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" -tunnel-agent@^0.4.0: +tunnel-agent@^0.4.0, tunnel-agent@~0.4.1: version "0.4.3" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" @@ -11298,8 +12226,8 @@ uglify-es@^3.3.4: source-map "~0.6.1" uglify-js@3.3.x: - version "3.3.25" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.25.tgz#3266ccb87c5bea229f69041a0296010d6477d539" + version "3.3.26" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.26.tgz#858b74e5e7262e876c834b907a5fa57d4fa0d525" dependencies: commander "~2.15.0" source-map "~0.6.1" @@ -11334,6 +12262,10 @@ uid2@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + unbzip2-stream@^1.0.9: version "1.2.5" resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47" @@ -11341,6 +12273,10 @@ unbzip2-stream@^1.0.9: buffer "^3.0.1" through "^2.3.6" +underscore@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" + unherit@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.1.tgz#132748da3e88eab767e08fabfbb89c5e9d28628c" @@ -11490,8 +12426,8 @@ unset-value@^1.0.0: isobject "^3.0.0" untildify@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.2.tgz#7f1f302055b3fea0f3e81dc78eb36766cb65e3f1" + version "3.0.3" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" unzip-response@^1.0.2: version "1.0.2" @@ -11502,8 +12438,8 @@ unzip-response@^2.0.1: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" upath@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.5.tgz#02cab9ecebe95bbec6d5fc2566325725ab6d1a73" + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" update-notifier@^2.3.0: version "2.5.0" @@ -11586,6 +12522,13 @@ use@^3.1.0: dependencies: kind-of "^6.0.2" +useragent@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" + dependencies: + lru-cache "2.2.x" + tmp "0.0.x" + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -11623,6 +12566,10 @@ uuid@^3.0.1, uuid@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" +uws@~9.14.0: + version "9.14.0" + resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" + vali-date@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" @@ -11802,6 +12749,10 @@ vm-browserify@0.0.4: dependencies: indexof "0.0.1" +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + vue-eslint-parser@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1" @@ -11913,8 +12864,8 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" webpack-chain@^4.6.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-4.7.0.tgz#cc5e5b8d0acc4d0200166f156c6102feebc272ba" + version "4.8.0" + resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-4.8.0.tgz#06fc3dbb9f2707d4c9e899fc6250fbcf2afe6fd1" dependencies: deepmerge "^1.5.2" javascript-stringify "^1.6.0" @@ -12068,6 +13019,10 @@ whatwg-url@^6.4.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" +when@^3.7.7: + version "3.7.8" + resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" + whet.extend@~0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" @@ -12098,6 +13053,10 @@ window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" +with-callback@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/with-callback/-/with-callback-1.0.2.tgz#a09629b9a920028d721404fb435bdcff5c91bc21" + wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" @@ -12187,6 +13146,14 @@ ws@^4.0.0: async-limiter "~1.0.0" safe-buffer "~5.1.0" +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + x-is-string@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" @@ -12199,6 +13166,14 @@ xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + +xregexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -12322,6 +13297,10 @@ yauzl@^2.2.1, yauzl@^2.4.2: buffer-crc32 "~0.2.3" fd-slicer "~1.0.1" +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + yeoman-assert@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yeoman-assert/-/yeoman-assert-3.1.1.tgz#9f6fa0ecba7dd007c40f579668cb5dda18c79343"