diff --git a/package.json b/package.json index 352526e..cb0a924 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "author": "Eli Perelman ", "license": "MPL-2.0", "scripts": { + "bootstrap": "autolink bootstrap", "postinstall": "autolink bootstrap", "clean-all": "autolink clean", "link-all": "autolink link", diff --git a/packages/neutrino-preset-base/package.json b/packages/neutrino-preset-base/package.json index 07f1915..526098e 100644 --- a/packages/neutrino-preset-base/package.json +++ b/packages/neutrino-preset-base/package.json @@ -11,23 +11,24 @@ "license": "MPL-2.0", "repository": "mozilla-neutrino/neutrino-dev", "dependencies": { - "babel-core": "6.17.0", - "babel-eslint": "7.0.0", - "babel-loader": "6.2.5", - "babel-preset-es2015": "6.16.0", - "clean-webpack-plugin": "0.1.13", + "babel-core": "^6.22.1", + "babel-eslint": "^7.1.1", + "babel-loader": "^6.2.10", + "babel-preset-env": "^1.1.8", + "clean-webpack-plugin": "^0.1.15", "copy-webpack-plugin": "4.0.1", - "deepmerge": "1.2.0", - "eslint": "3.8.1", - "eslint-loader": "1.6.0", - "eslint-plugin-babel": "3.3.0", - "eslint-plugin-import": "2.0.1", - "eslint-plugin-mocha": "4.7.0", + "deepmerge": "^1.3.2", + "eslint": "^3.14.1", + "eslint-loader": "^1.6.1", + "eslint-plugin-babel": "^4.0.1", + "eslint-plugin-import": "^2.2.0", + "eslint-plugin-mocha": "^4.8.0", "exports-loader": "0.6.3", - "imports-loader": "0.6.5", - "progress-bar-webpack-plugin": "1.9.0", - "webpack": "2.2.0", - "webpack-merge": "2.4.0" + "imports-loader": "^0.7.0", + "progress-bar-webpack-plugin": "^1.9.3", + "webpack": "^2.2.1", + "webpack-chain": "^1.0.0", + "webpack-merge": "^2.6.1" }, "peerDependencies": { "neutrino": "^4.0.0" diff --git a/packages/neutrino-preset-base/src/eslint.js b/packages/neutrino-preset-base/src/eslint.js index 9733d62..3b34e5c 100644 --- a/packages/neutrino-preset-base/src/eslint.js +++ b/packages/neutrino-preset-base/src/eslint.js @@ -3,10 +3,10 @@ const eslint = { useEslintrc: false, root: true, plugins: ['babel', 'mocha'], - extends: ['eslint:recommended'], - env: { - es6: true + baseConfig: { + extends: ['eslint:recommended'] }, + envs: ['es6'], parser: 'babel-eslint', parserOptions: { ecmaVersion: 2017, @@ -18,9 +18,7 @@ const eslint = { } }, settings: {}, - globals: { - process: true - }, + globals: ['process'], rules: { // enforces getter/setter pairs in objects 'accessor-pairs': 'off', @@ -386,8 +384,9 @@ const eslint = { requireReturnForObjectLiteral: false, }], - // handled by babel rules - 'arrow-parens': 'off', + // require parens in arrow function arguments + // http://eslint.org/docs/rules/arrow-parens + 'arrow-parens': ['error', 'as-needed'], // require space before/after arrow function's arrow // http://eslint.org/docs/rules/arrow-spacing @@ -398,7 +397,7 @@ const eslint = { // enforce the spacing around the * in generator functions // http://eslint.org/docs/rules/generator-star-spacing - 'generator-star-spacing': 'off', + 'generator-star-spacing': ['error', { before: false, after: true }], // disallow modifying variables of class declarations // http://eslint.org/docs/rules/no-class-assign @@ -452,8 +451,9 @@ const eslint = { // require let or const instead of var 'no-var': 'error', - // handled by babel rules - 'object-shorthand': 'off', + // require method and property shorthand syntax for object literals + // http://eslint.org/docs/rules/object-shorthand + 'object-shorthand': ['error', 'always'], // suggest using arrow functions as callbacks 'prefer-arrow-callback': ['error', { @@ -520,8 +520,8 @@ const eslint = { // babel inserts `'use strict';` for us strict: ['error', 'never'], - // handled by babel rules - 'array-bracket-spacing': 'off', + // enforce spacing inside array brackets + 'array-bracket-spacing': ['error', 'never'], // enforce spacing inside single-line blocks // http://eslint.org/docs/rules/block-spacing @@ -884,33 +884,14 @@ const eslint = { // disallow use of variables before they are defined 'no-use-before-define': 'error', - // enforce the spacing around the * in generator functions - // http://eslint.org/docs/rules/generator-star-spacing - 'babel/generator-star-spacing': ['error', { before: false, after: true }], - // require a capital letter for constructors 'babel/new-cap': ['error', { newIsCap: true }], - // enforce spacing inside array brackets - 'babel/array-bracket-spacing': ['error', 'never'], - // require padding inside curly braces 'babel/object-curly-spacing': ['error', 'always'], - // require method and property shorthand syntax for object literals - // http://eslint.org/docs/rules/object-shorthand - 'babel/object-shorthand': ['error', 'always'], - - // require parens in arrow function arguments - // http://eslint.org/docs/rules/arrow-parens - 'babel/arrow-parens': ['error', 'as-needed'], - // guard against awaiting async functions inside of a loop - 'babel/no-await-in-loop': 'error', - - // forbid trailing commas for function parameter lists. Behaves like, and takes the same options - // as comma-dangle - 'babel/func-params-comma-dangle': 'error' + 'babel/no-await-in-loop': 'error' } }; diff --git a/packages/neutrino-preset-base/src/index.js b/packages/neutrino-preset-base/src/index.js index 2de2dac..6b02b6a 100644 --- a/packages/neutrino-preset-base/src/index.js +++ b/packages/neutrino-preset-base/src/index.js @@ -1,10 +1,12 @@ 'use strict'; +const Config = require('webpack-chain'); const CleanPlugin = require('clean-webpack-plugin'); const CopyPlugin = require('copy-webpack-plugin'); const path = require('path'); const ProgressBarPlugin = require('progress-bar-webpack-plugin'); const webpack = require('webpack'); +const lint = require('./eslint'); const CWD = process.cwd(); const BUILD = path.join(CWD, 'build'); @@ -13,77 +15,81 @@ const BASE_MODULES = path.join(__dirname, '../node_modules'); const SRC = path.join(CWD, 'src'); const TEST = path.join(CWD, 'test'); -const config = { - context: CWD, - entry: { - index: [path.join(SRC, 'index.js')] - }, - output: { - path: BUILD, - filename: '[name].bundle.js', - chunkFilename: '[id].[chunkhash].js' - }, - plugins: [], - resolve: { - modules: [PROJECT_MODULES, BASE_MODULES], - extensions: ['.js', '.json'] - }, - resolveLoader: { - modules: [PROJECT_MODULES, BASE_MODULES] - }, - module: { - rules: [ - { - test: /\.js$/, - include: [SRC], - enforce: 'pre', - use: require.resolve('eslint-loader') - }, - { - test: /\.js$/, - include: [SRC, TEST], - use: { - loader: require.resolve('babel-loader'), - options: { - presets: [ - [require.resolve('babel-preset-es2015'), { modules: false }] - ], - plugins: [], - env: { - test: { - plugins: [ - // FIXME: This currently breaks the coverage - //[require.resolve('babel-plugin-istanbul'), { exclude: ['test/**/*'] }] - ] - } - } +const config = new Config(); + +config + .context(CWD) + .entry('index') + .add(path.join(SRC, 'index.js')) + .end() + .output + .path(path.join(process.cwd(), 'build')) + .filename('[name].bundle.js') + .chunkFilename('[id].[chunkhash].js') + .end() + .resolve + .modules + .add(PROJECT_MODULES) + .add(BASE_MODULES) + .end() + .extensions + .add('.js') + .add('json') + .end() + .end() + .resolveLoader + .modules + .add(PROJECT_MODULES) + .add(BASE_MODULES); + +config + .module + .rule('lint') + .test(/\.js$/) + .pre() + .include(SRC) + .loader('eslint', require.resolve('eslint-loader'), Object.assign({ + failOnError: process.env.NODE_ENV !== 'development', + emitWarning: process.env.NODE_ENV !== 'development', + emitError: process.env.NODE_ENV !== 'development' + }, lint)); + +config + .module + .rule('compile') + .test(/\.js$/) + .include(SRC, TEST) + .loader('babel', require.resolve('babel-loader'), { + presets: [ + [require.resolve('babel-preset-env'), { modules: false, targets: {} }] + ], + plugins: [], + env: { + test: { + plugins: [ + // FIXME: This currently breaks the coverage + //[require.resolve('babel-plugin-istanbul'), { exclude: ['test/**/*'] }] + ] } } - } - ] - } -}; - -const eslint = { configFile: path.join(__dirname, 'eslint.js'), emitError: true, failOnError: true }; + }); if (process.env.NODE_ENV === 'development') { - config.devtool = 'eval'; - eslint.failOnError = false; - eslint.emitWarning = false; - eslint.emitError = false; + config.devtool('eval'); } else { - // Copy all files except JS files, since they will be Babel-compiled to the output directory. - // This only needs to be done in production since in development assets should be served from the - // webpack-development-server via the source directory. - config.plugins.push( - new CopyPlugin([{ context: SRC, from: `**/*` }], { ignore: ['*.js*'] }), - new ProgressBarPlugin(), - new CleanPlugin([BUILD], { root: CWD }) - ); + config.output.filename('[name].[chunkhash].bundle.js'); - config.output.filename = '[name].[chunkhash].bundle.js'; -} + config + .plugin('copy') + .use(CopyPlugin, [{ context: SRC, from: `**/*` }], { ignore: ['*.js*'] }); + + config + .plugin('progress') + .use(ProgressBarPlugin); -config.plugins.push(new webpack.LoaderOptionsPlugin({ options: { eslint }})); + config + .plugin('clean') + .use(CleanPlugin, [BUILD], { root: CWD }); +} module.exports = config; diff --git a/packages/neutrino-preset-base/yarn.lock b/packages/neutrino-preset-base/yarn.lock index 642e275..ffdaa23 100644 --- a/packages/neutrino-preset-base/yarn.lock +++ b/packages/neutrino-preset-base/yarn.lock @@ -177,33 +177,7 @@ babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@6.17.0: - version "6.17.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.17.0.tgz#6c4576447df479e241e58c807e4bc7da4db7f425" - dependencies: - babel-code-frame "^6.16.0" - babel-generator "^6.17.0" - babel-helpers "^6.16.0" - babel-messages "^6.8.0" - babel-register "^6.16.0" - babel-runtime "^6.9.1" - babel-template "^6.16.0" - babel-traverse "^6.16.0" - babel-types "^6.16.0" - babylon "^6.11.0" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.4.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-exists "^1.0.0" - path-is-absolute "^1.0.0" - private "^0.1.6" - shebang-regex "^1.0.0" - slash "^1.0.0" - source-map "^0.5.0" - -babel-core@^6.22.0: +babel-core@^6.22.0, babel-core@^6.22.1: version "6.22.1" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.22.1.tgz#9c5fd658ba1772d28d721f6d25d968fc7ae21648" dependencies: @@ -227,16 +201,17 @@ babel-core@^6.22.0: slash "^1.0.0" source-map "^0.5.0" -babel-eslint@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.0.0.tgz#54e51b4033f54ac81326ecea4c646a779935196d" +babel-eslint@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.1.1.tgz#8a6a884f085aa7060af69cfc77341c2f99370fb2" dependencies: + babel-code-frame "^6.16.0" babel-traverse "^6.15.0" babel-types "^6.15.0" - babylon "^6.11.2" + babylon "^6.13.0" lodash.pickby "^4.6.0" -babel-generator@^6.17.0, babel-generator@^6.22.0: +babel-generator@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.22.0.tgz#d642bf4961911a8adc7c692b0c9297f325cda805" dependencies: @@ -248,6 +223,14 @@ babel-generator@^6.17.0, babel-generator@^6.22.0: lodash "^4.2.0" source-map "^0.5.0" +babel-helper-builder-binary-assignment-operator-visitor@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.22.0.tgz#29df56be144d81bdeac08262bfa41d2c5e91cdcd" + dependencies: + babel-helper-explode-assignable-expression "^6.22.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" + babel-helper-call-delegate@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef" @@ -266,6 +249,14 @@ babel-helper-define-map@^6.22.0: babel-types "^6.22.0" lodash "^4.2.0" +babel-helper-explode-assignable-expression@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.22.0.tgz#c97bf76eed3e0bae4048121f2b9dae1a4e7d0478" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" + babel-helper-function-name@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.22.0.tgz#51f1bdc4bb89b15f57a9b249f33d742816dcbefc" @@ -305,6 +296,16 @@ babel-helper-regex@^6.22.0: babel-types "^6.22.0" lodash "^4.2.0" +babel-helper-remap-async-to-generator@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.22.0.tgz#2186ae73278ed03b8b15ced089609da981053383" + dependencies: + babel-helper-function-name "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" + babel-helper-replace-supers@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.22.0.tgz#1fcee2270657548908c34db16bcc345f9850cf42" @@ -316,22 +317,23 @@ babel-helper-replace-supers@^6.22.0: babel-traverse "^6.22.0" babel-types "^6.22.0" -babel-helpers@^6.16.0, babel-helpers@^6.22.0: +babel-helpers@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.22.0.tgz#d275f55f2252b8101bff07bc0c556deda657392c" dependencies: babel-runtime "^6.22.0" babel-template "^6.22.0" -babel-loader@6.2.5: - version "6.2.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.2.5.tgz#576d548520689a5e6b70c65b85d76af1ffedd005" +babel-loader@^6.2.10: + version "6.2.10" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.2.10.tgz#adefc2b242320cd5d15e65b31cea0e8b1b02d4b0" dependencies: + find-cache-dir "^0.1.1" loader-utils "^0.2.11" mkdirp "^0.5.1" object-assign "^4.0.1" -babel-messages@^6.22.0, babel-messages@^6.8.0: +babel-messages@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.22.0.tgz#36066a214f1217e4ed4164867669ecb39e3ea575" dependencies: @@ -343,6 +345,26 @@ babel-plugin-check-es2015-constants@^6.3.13: dependencies: babel-runtime "^6.22.0" +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-trailing-function-commas@^6.13.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-to-generator@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.22.0.tgz#194b6938ec195ad36efc4c33a971acf00d8cd35e" + dependencies: + babel-helper-remap-async-to-generator "^6.22.0" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + babel-plugin-transform-es2015-arrow-functions@^6.3.13: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" @@ -355,7 +377,7 @@ babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoping@^6.14.0: +babel-plugin-transform-es2015-block-scoping@^6.6.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.22.0.tgz#00d6e3a0bebdcfe7536b9d653b44a9141e63e47e" dependencies: @@ -365,7 +387,7 @@ babel-plugin-transform-es2015-block-scoping@^6.14.0: babel-types "^6.22.0" lodash "^4.2.0" -babel-plugin-transform-es2015-classes@^6.14.0: +babel-plugin-transform-es2015-classes@^6.6.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.22.0.tgz#54d44998fd823d9dca15292324161c331c1b6f14" dependencies: @@ -386,7 +408,7 @@ babel-plugin-transform-es2015-computed-properties@^6.3.13: babel-runtime "^6.22.0" babel-template "^6.22.0" -babel-plugin-transform-es2015-destructuring@^6.16.0: +babel-plugin-transform-es2015-destructuring@^6.6.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.22.0.tgz#8e0af2f885a0b2cf999d47c4c1dd23ce88cfa4c6" dependencies: @@ -405,7 +427,7 @@ babel-plugin-transform-es2015-for-of@^6.6.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-function-name@^6.9.0: +babel-plugin-transform-es2015-function-name@^6.3.13: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz#f5fcc8b09093f9a23c76ac3d9e392c3ec4b77104" dependencies: @@ -427,7 +449,7 @@ babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015 babel-runtime "^6.22.0" babel-template "^6.22.0" -babel-plugin-transform-es2015-modules-commonjs@^6.16.0, babel-plugin-transform-es2015-modules-commonjs@^6.22.0: +babel-plugin-transform-es2015-modules-commonjs@^6.22.0, babel-plugin-transform-es2015-modules-commonjs@^6.6.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.22.0.tgz#6ca04e22b8e214fb50169730657e7a07dc941145" dependencies: @@ -436,7 +458,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.16.0, babel-plugin-transform-e babel-template "^6.22.0" babel-types "^6.22.0" -babel-plugin-transform-es2015-modules-systemjs@^6.14.0: +babel-plugin-transform-es2015-modules-systemjs@^6.12.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.22.0.tgz#810cd0cd025a08383b84236b92c6e31f88e644ad" dependencies: @@ -459,7 +481,7 @@ babel-plugin-transform-es2015-object-super@^6.3.13: babel-helper-replace-supers "^6.22.0" babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.16.0: +babel-plugin-transform-es2015-parameters@^6.6.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.22.0.tgz#57076069232019094f27da8c68bb7162fe208dbb" dependencies: @@ -511,7 +533,15 @@ babel-plugin-transform-es2015-unicode-regex@^6.3.13: babel-runtime "^6.22.0" regexpu-core "^2.0.0" -babel-plugin-transform-regenerator@^6.16.0: +babel-plugin-transform-exponentiation-operator@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.22.0.tgz#d57c8335281918e54ef053118ce6eb108468084d" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.22.0" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.6.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz#65740593a319c44522157538d690b84094617ea6" dependencies: @@ -524,36 +554,40 @@ babel-plugin-transform-strict-mode@^6.22.0: babel-runtime "^6.22.0" babel-types "^6.22.0" -babel-preset-es2015@6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.16.0.tgz#59acecd1efbebaf48f89404840f2fe78c4d2ad5c" +babel-preset-env@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.1.8.tgz#c46734c6233c3f87d177513773db3cf3c1758aaa" dependencies: babel-plugin-check-es2015-constants "^6.3.13" + babel-plugin-syntax-trailing-function-commas "^6.13.0" + babel-plugin-transform-async-to-generator "^6.8.0" babel-plugin-transform-es2015-arrow-functions "^6.3.13" babel-plugin-transform-es2015-block-scoped-functions "^6.3.13" - babel-plugin-transform-es2015-block-scoping "^6.14.0" - babel-plugin-transform-es2015-classes "^6.14.0" + babel-plugin-transform-es2015-block-scoping "^6.6.0" + babel-plugin-transform-es2015-classes "^6.6.0" babel-plugin-transform-es2015-computed-properties "^6.3.13" - babel-plugin-transform-es2015-destructuring "^6.16.0" + babel-plugin-transform-es2015-destructuring "^6.6.0" babel-plugin-transform-es2015-duplicate-keys "^6.6.0" babel-plugin-transform-es2015-for-of "^6.6.0" - babel-plugin-transform-es2015-function-name "^6.9.0" + babel-plugin-transform-es2015-function-name "^6.3.13" babel-plugin-transform-es2015-literals "^6.3.13" babel-plugin-transform-es2015-modules-amd "^6.8.0" - babel-plugin-transform-es2015-modules-commonjs "^6.16.0" - babel-plugin-transform-es2015-modules-systemjs "^6.14.0" + babel-plugin-transform-es2015-modules-commonjs "^6.6.0" + babel-plugin-transform-es2015-modules-systemjs "^6.12.0" babel-plugin-transform-es2015-modules-umd "^6.12.0" babel-plugin-transform-es2015-object-super "^6.3.13" - babel-plugin-transform-es2015-parameters "^6.16.0" + babel-plugin-transform-es2015-parameters "^6.6.0" babel-plugin-transform-es2015-shorthand-properties "^6.3.13" babel-plugin-transform-es2015-spread "^6.3.13" babel-plugin-transform-es2015-sticky-regex "^6.3.13" babel-plugin-transform-es2015-template-literals "^6.6.0" babel-plugin-transform-es2015-typeof-symbol "^6.6.0" babel-plugin-transform-es2015-unicode-regex "^6.3.13" - babel-plugin-transform-regenerator "^6.16.0" + babel-plugin-transform-exponentiation-operator "^6.8.0" + babel-plugin-transform-regenerator "^6.6.0" + browserslist "^1.4.0" -babel-register@^6.16.0, babel-register@^6.22.0: +babel-register@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.22.0.tgz#a61dd83975f9ca4a9e7d6eff3059494cd5ea4c63" dependencies: @@ -565,14 +599,14 @@ babel-register@^6.16.0, babel-register@^6.22.0: mkdirp "^0.5.1" source-map-support "^0.4.2" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.9.1: +babel-runtime@^6.18.0, babel-runtime@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611" dependencies: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-template@^6.16.0, babel-template@^6.22.0: +babel-template@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.22.0.tgz#403d110905a4626b317a2a1fcb8f3b73204b2edb" dependencies: @@ -582,7 +616,7 @@ babel-template@^6.16.0, babel-template@^6.22.0: babylon "^6.11.0" lodash "^4.2.0" -babel-traverse@^6.15.0, babel-traverse@^6.16.0, babel-traverse@^6.22.0, babel-traverse@^6.22.1: +babel-traverse@^6.15.0, babel-traverse@^6.22.0, babel-traverse@^6.22.1: version "6.22.1" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.22.1.tgz#3b95cd6b7427d6f1f757704908f2fc9748a5f59f" dependencies: @@ -596,7 +630,7 @@ babel-traverse@^6.15.0, babel-traverse@^6.16.0, babel-traverse@^6.22.0, babel-tr invariant "^2.2.0" lodash "^4.2.0" -babel-types@^6.15.0, babel-types@^6.16.0, babel-types@^6.19.0, babel-types@^6.22.0: +babel-types@^6.15.0, babel-types@^6.19.0, babel-types@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.22.0.tgz#2a447e8d0ea25d2512409e4175479fd78cc8b1db" dependencies: @@ -605,7 +639,7 @@ babel-types@^6.15.0, babel-types@^6.16.0, babel-types@^6.19.0, babel-types@^6.22 lodash "^4.2.0" to-fast-properties "^1.0.1" -babylon@^6.11.0, babylon@^6.11.2, babylon@^6.15.0: +babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0: version "6.15.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e" @@ -721,6 +755,13 @@ browserify-zlib@^0.1.4: dependencies: pako "~0.2.0" +browserslist@^1.4.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.1.tgz#cc9bd193979a2a4b09fdb3df6003fefe48ccefe1" + dependencies: + caniuse-db "^1.0.30000617" + electron-to-chromium "^1.2.1" + buffer-shims@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" @@ -763,6 +804,10 @@ camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" +caniuse-db@^1.0.30000617: + version "1.0.30000619" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000619.tgz#bffaa8150637c3182d3914a9718369b079299529" + caseless@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" @@ -809,9 +854,9 @@ circular-json@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" -clean-webpack-plugin@0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-0.1.13.tgz#c2bae9bc4dd44348123ad98e19fa55e7a9b07600" +clean-webpack-plugin@^0.1.15: + version "0.1.15" + resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-0.1.15.tgz#facc04e0c8dba99bf451ae865ad0361f51af1df1" dependencies: rimraf "~2.5.1" @@ -1004,9 +1049,9 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -deepmerge@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.2.0.tgz#c36bf76bc1995b85d83e5b0362c97511562bfea8" +deepmerge@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.3.2.tgz#1663691629d4dbfe364fa12a2a4f0aa86aa3a050" define-properties@^1.1.2: version "1.1.2" @@ -1056,9 +1101,9 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -doctrine@1.3.x, doctrine@^1.2.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.3.0.tgz#13e75682b55518424276f7c173783456ef913d26" +doctrine@1.5.0, doctrine@^1.2.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" dependencies: esutils "^2.0.2" isarray "^1.0.0" @@ -1073,6 +1118,10 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +electron-to-chromium@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.2.1.tgz#63ac7579a1c5bedb296c8607621f2efc9a54b968" + elliptic@^6.0.0: version "6.3.2" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.2.tgz#e4c81e0829cf0a65ab70e998b8232723b5c1bc48" @@ -1180,62 +1229,64 @@ eslint-import-resolver-node@^0.2.0: object-assign "^4.0.1" resolve "^1.1.6" -eslint-loader@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.6.0.tgz#38f9a1e6c602a4f1f3f3516289726e5d26e6e165" +eslint-loader@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.6.1.tgz#96c47c812772eeb077e3a81681818e671a2cabf5" dependencies: find-cache-dir "^0.1.1" loader-utils "^0.2.7" object-assign "^4.0.1" + object-hash "^1.1.4" -eslint-module-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-1.0.0.tgz#c4a57fd3a53efd8426cc2d5550aadab9bbd05fd0" +eslint-module-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.0.0.tgz#a6f8c21d901358759cdc35dbac1982ae1ee58bce" dependencies: debug "2.2.0" pkg-dir "^1.0.0" -eslint-plugin-babel@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-3.3.0.tgz#2f494aedcf6f4aa4e75b9155980837bc1fbde193" +eslint-plugin-babel@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.0.1.tgz#77de74dabd67a6bef3b16bf258f5804e971e7349" -eslint-plugin-import@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.0.1.tgz#dcfe96357d476b3f822570d42c29bec66f5d9c5c" +eslint-plugin-import@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e" dependencies: builtin-modules "^1.1.1" contains-path "^0.1.0" debug "^2.2.0" - doctrine "1.3.x" + doctrine "1.5.0" eslint-import-resolver-node "^0.2.0" - eslint-module-utils "^1.0.0" + eslint-module-utils "^2.0.0" has "^1.0.1" lodash.cond "^4.3.0" minimatch "^3.0.3" pkg-up "^1.0.0" -eslint-plugin-mocha@4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-4.7.0.tgz#69262362f4ec69ae5849908824f325b8d465e7f3" +eslint-plugin-mocha@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-4.8.0.tgz#7627b35a61e5a720412da96eab06f0e03a1dcdb6" dependencies: ramda "^0.22.1" -eslint@3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.8.1.tgz#7d02db44cd5aaf4fa7aa489e1f083baa454342ba" +eslint@^3.14.1: + version "3.15.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.15.0.tgz#bdcc6a6c5ffe08160e7b93c066695362a91e30f2" dependencies: + babel-code-frame "^6.16.0" chalk "^1.1.3" concat-stream "^1.4.6" debug "^2.1.1" doctrine "^1.2.2" escope "^3.6.0" - espree "^3.3.1" + espree "^3.4.0" estraverse "^4.2.0" esutils "^2.0.2" file-entry-cache "^2.0.0" glob "^7.0.3" - globals "^9.2.0" - ignore "^3.1.5" + globals "^9.14.0" + ignore "^3.2.0" imurmurhash "^0.1.4" inquirer "^0.12.0" is-my-json-valid "^2.10.0" @@ -1251,14 +1302,14 @@ eslint@3.8.1: pluralize "^1.2.1" progress "^1.1.8" require-uncached "^1.0.2" - shelljs "^0.6.0" + shelljs "^0.7.5" strip-bom "^3.0.0" - strip-json-comments "~1.0.1" + strip-json-comments "~2.0.1" table "^3.7.8" text-table "~0.2.0" user-home "^2.0.0" -espree@^3.3.1: +espree@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.0.tgz#41656fa5628e042878025ef467e78f125cb86e1d" dependencies: @@ -1523,7 +1574,7 @@ glob@^6.0.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.0.5: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: @@ -1534,7 +1585,7 @@ glob@^7.0.3, glob@^7.0.5: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^9.0.0, globals@^9.2.0: +globals@^9.0.0, globals@^9.14.0: version "9.14.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" @@ -1632,16 +1683,16 @@ ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" -ignore@^3.1.5: +ignore@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.2.tgz#1c51e1ef53bab6ddc15db4d9ac4ec139eceb3410" -imports-loader@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.6.5.tgz#ae74653031d59e37b3c2fb2544ac61aeae3530a6" +imports-loader@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.7.0.tgz#468c04de8075941cfab28146c755c24cc1f36ccd" dependencies: - loader-utils "0.2.x" - source-map "0.1.x" + loader-utils "^0.2.16" + source-map "^0.5.6" imurmurhash@^0.1.4: version "0.1.4" @@ -1890,10 +1941,6 @@ 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" -json5@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.4.0.tgz#054352e4c4c80c86c0923877d449de176a732c8d" - json5@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -1959,7 +2006,7 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -loader-runner@^2.2.0: +loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" @@ -2168,6 +2215,10 @@ object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-hash@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.1.5.tgz#bdd844e030d0861b692ca175c6cab6868ec233d7" + object-keys@^1.0.10, object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" @@ -2265,10 +2316,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-exists@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-1.0.0.tgz#d5a8998eb71ef37a74c34eb0d9eba6e878eea081" - path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -2347,9 +2394,9 @@ process@^0.11.0: version "0.11.9" resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" -progress-bar-webpack-plugin@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-1.9.0.tgz#efe9055ae03ed1a6a9864c104120ebfe5b7de341" +progress-bar-webpack-plugin@^1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-1.9.3.tgz#81fb8bd8e38da6edaf9a20beed79bd978dd63c2a" dependencies: chalk "^1.1.1" object.assign "^4.0.1" @@ -2473,6 +2520,12 @@ readline2@^1.0.1: is-fullwidth-code-point "^1.0.0" mute-stream "0.0.5" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" @@ -2631,13 +2684,13 @@ sha.js@^2.3.6: dependencies: inherits "^2.0.1" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -shelljs@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8" +shelljs@^0.7.5: + version "0.7.6" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.6.tgz#379cccfb56b91c8601e4793356eb5382924de9ad" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" signal-exit@^3.0.0: version "3.0.2" @@ -2673,7 +2726,7 @@ source-map@0.1.x: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" @@ -2766,10 +2819,14 @@ strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" -strip-json-comments@~1.0.1, strip-json-comments@~1.0.4: +strip-json-comments@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + supports-color@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" @@ -2945,9 +3002,13 @@ watchpack@^1.2.0: chokidar "^1.4.3" graceful-fs "^4.1.2" -webpack-merge@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-2.4.0.tgz#4c518d471632c29ae22e83687c2f42a9cd5f35ea" +webpack-chain@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-1.0.0.tgz#42da40d66e98200ccca3fa274f7fc111b1e1c2c1" + +webpack-merge@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c" dependencies: lodash "^4.17.4" @@ -2958,9 +3019,9 @@ webpack-sources@^0.1.4: source-list-map "~0.1.7" source-map "~0.5.3" -webpack@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.0.tgz#09246336b5581c9002353f75bcadb598a648f977" +webpack@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475" dependencies: acorn "^4.0.4" acorn-dynamic-import "^2.0.0" @@ -2970,7 +3031,7 @@ webpack@2.2.0: enhanced-resolve "^3.0.0" interpret "^1.0.0" json-loader "^0.5.4" - loader-runner "^2.2.0" + loader-runner "^2.3.0" loader-utils "^0.2.16" memory-fs "~0.4.1" mkdirp "~0.5.0" diff --git a/packages/neutrino-preset-node/package.json b/packages/neutrino-preset-node/package.json index 43ba70a..31525c5 100644 --- a/packages/neutrino-preset-node/package.json +++ b/packages/neutrino-preset-node/package.json @@ -11,12 +11,11 @@ "license": "MPL-2.0", "repository": "mozilla-neutrino/neutrino-dev", "dependencies": { - "babel-plugin-transform-async-to-generator": "6.16.0", - "babel-plugin-transform-runtime": "6.15.0", - "babel-runtime": "6.11.6", + "babel-runtime": "^6.22.0", + "deepmerge": "^1.3.2", "source-map-support": "^0.4.6", - "webpack": "2.2.0", - "webpack-merge": "2.4.0", + "webpack": "^2.2.1", + "webpack-merge": "^2.6.1", "webpack-node-externals": "1.5.4" }, "linkDependencies": { diff --git a/packages/neutrino-preset-node/src/eslint.js b/packages/neutrino-preset-node/src/eslint.js deleted file mode 100644 index be88109..0000000 --- a/packages/neutrino-preset-node/src/eslint.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -module.exports = { - extends: [require.resolve('neutrino-preset-base/src/eslint')], - env: { - node: true - }, - rules: { - // enforce return after a callback - 'callback-return': 'off', - - // require all requires be top-level - // http://eslint.org/docs/rules/global-require - 'global-require': 'error', - - // enforces error handling in callbacks (node environment) - 'handle-callback-err': 'off', - - // Allow console in Node.js - 'no-console': 'off', - - // disallow mixing regular variable and require declarations - 'no-mixed-requires': ['off', false], - - // disallow use of new operator with the require function - 'no-new-require': 'error', - - // disallow string concatenation with __dirname and __filename - // http://eslint.org/docs/rules/no-path-concat - 'no-path-concat': 'error', - - // disallow use of process.env - 'no-process-env': 'off', - - // disallow process.exit() - 'no-process-exit': 'off', - - // restrict usage of specified node modules - 'no-restricted-modules': 'off', - - // disallow use of synchronous methods (off by default) - 'no-sync': 'off' - } -}; diff --git a/packages/neutrino-preset-node/src/index.js b/packages/neutrino-preset-node/src/index.js index 828f876..c4bc9ba 100644 --- a/packages/neutrino-preset-node/src/index.js +++ b/packages/neutrino-preset-node/src/index.js @@ -1,64 +1,105 @@ 'use strict'; -const merge = require('webpack-merge').smart; -const preset = require('neutrino-preset-base'); +const config = require('neutrino-preset-base'); const nodeExternals = require('webpack-node-externals'); const path = require('path'); const webpack = require('webpack'); +const merge = require('deepmerge'); const MODULES = path.join(__dirname, '../node_modules'); -const config = merge(preset, { - target: 'node', - output: { - filename: '[name].js', - libraryTarget: 'commonjs2' - }, - resolve: { - modules: [MODULES] - }, - resolveLoader: { - modules: [MODULES] - }, - devtool: 'source-map', - node: { - __filename: false, - __dirname: false - }, - plugins: [ - new webpack.LoaderOptionsPlugin({ - options: { - eslint: { configFile: path.join(__dirname, 'eslint.js') }, - emitError: true, - failOnError: true, - mocha: { - reporter: 'spec', - ui: 'tdd', - bail: true - } - } - }), - new webpack.BannerPlugin({ - banner: 'require("source-map-support").install();', - raw: true, - entryOnly: true - }) - ], - externals: [nodeExternals()], - performance: { - hints: false - } +config + .target('node') + .devtool('source-map') + .externals([nodeExternals()]) + .node + .set('__filename', false) + .set('__dirname', false) + .end() + .output + .filename('[name].js') + .libraryTarget('commonjs2'); + +config.resolve.modules.add(MODULES); +config.resolveLoader.modules.add(MODULES); + +config + .plugin('options') + .use(webpack.LoaderOptionsPlugin, { + emitError: true, + failOnError: true, + mocha: { + reporter: 'spec', + ui: 'tdd', + bail: true + } + }); + +config + .plugin('banner') + .use(webpack.BannerPlugin, { + banner: `require('source-map-support').install();`, + raw: true, + entryOnly: true + }); + +config.options.set('performance', { + hints: false }); -const babelLoader = config.module.rules.find(r => r.use && r.use.loader && r.use.loader.includes('babel')); +config.module + .rule('compile') + .loader('babel', ({ options }) => { + options.presets[0][1].targets.node = 6.9; + + return { options }; + }); + +config.module + .rule('lint') + .loader('eslint', ({ options }) => { + return { + options: merge(options, { + envs: ['node'], + rules: { + // enforce return after a callback + 'callback-return': 'off', + + // require all requires be top-level + // http://eslint.org/docs/rules/global-require + 'global-require': 'error', + + // enforces error handling in callbacks (node environment) + 'handle-callback-err': 'off', -if (!babelLoader.use.options.plugins) { - babelLoader.use.options.plugins = []; -} + // Allow console in Node.js + 'no-console': 'off', + + // disallow mixing regular variable and require declarations + 'no-mixed-requires': ['off', false], + + // disallow use of new operator with the require function + 'no-new-require': 'error', + + // disallow string concatenation with __dirname and __filename + // http://eslint.org/docs/rules/no-path-concat + 'no-path-concat': 'error', + + // disallow use of process.env + 'no-process-env': 'off', + + // disallow process.exit() + 'no-process-exit': 'off', + + // restrict usage of specified node modules + 'no-restricted-modules': 'off', + + // disallow use of synchronous methods (off by default) + 'no-sync': 'off' + } + }) + }; + }); -babelLoader.use.options.plugins.push( - require.resolve('babel-plugin-transform-runtime'), - require.resolve('babel-plugin-transform-async-to-generator') -); module.exports = config; diff --git a/packages/neutrino-preset-node/yarn.lock b/packages/neutrino-preset-node/yarn.lock index 92a8220..311ed12 100644 --- a/packages/neutrino-preset-node/yarn.lock +++ b/packages/neutrino-preset-node/yarn.lock @@ -131,72 +131,6 @@ aws4@^1.2.1: version "1.5.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" -babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -babel-helper-function-name@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.22.0.tgz#51f1bdc4bb89b15f57a9b249f33d742816dcbefc" - dependencies: - babel-helper-get-function-arity "^6.22.0" - babel-runtime "^6.22.0" - babel-template "^6.22.0" - babel-traverse "^6.22.0" - babel-types "^6.22.0" - -babel-helper-get-function-arity@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-helper-remap-async-to-generator@^6.16.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.22.0.tgz#2186ae73278ed03b8b15ced089609da981053383" - dependencies: - babel-helper-function-name "^6.22.0" - babel-runtime "^6.22.0" - babel-template "^6.22.0" - babel-traverse "^6.22.0" - babel-types "^6.22.0" - -babel-messages@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.22.0.tgz#36066a214f1217e4ed4164867669ecb39e3ea575" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-transform-async-to-generator@6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.16.0.tgz#19ec36cb1486b59f9f468adfa42ce13908ca2999" - dependencies: - babel-helper-remap-async-to-generator "^6.16.0" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.0.0" - -babel-plugin-transform-runtime@6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz#3d75b4d949ad81af157570273846fb59aeb0d57c" - dependencies: - babel-runtime "^6.9.0" - -babel-runtime@6.11.6, babel-runtime@^6.0.0, babel-runtime@^6.9.0: - version "6.11.6" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.11.6.tgz#6db707fef2d49c49bfa3cb64efdb436b518b8222" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.9.5" - babel-runtime@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611" @@ -204,43 +138,6 @@ babel-runtime@^6.22.0: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-template@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.22.0.tgz#403d110905a4626b317a2a1fcb8f3b73204b2edb" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.22.0" - babel-types "^6.22.0" - babylon "^6.11.0" - lodash "^4.2.0" - -babel-traverse@^6.22.0: - version "6.22.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.22.1.tgz#3b95cd6b7427d6f1f757704908f2fc9748a5f59f" - dependencies: - babel-code-frame "^6.22.0" - babel-messages "^6.22.0" - babel-runtime "^6.22.0" - babel-types "^6.22.0" - babylon "^6.15.0" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-types@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.22.0.tgz#2a447e8d0ea25d2512409e4175479fd78cc8b1db" - dependencies: - babel-runtime "^6.22.0" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babylon@^6.11.0, babylon@^6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e" - balanced-match@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" @@ -392,7 +289,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@^1.1.0, chalk@^1.1.1: +chalk@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -539,12 +436,6 @@ date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" -debug@^2.2.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" - dependencies: - ms "0.7.2" - debug@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" @@ -559,6 +450,10 @@ deep-extend@~0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" +deepmerge@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.3.2.tgz#1663691629d4dbfe364fa12a2a4f0aa86aa3a050" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -630,10 +525,6 @@ escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -799,10 +690,6 @@ glob@^7.0.5: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^9.0.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" - graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -900,12 +787,6 @@ interpret@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" -invariant@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -1015,10 +896,6 @@ jodid25519@^1.0.0: dependencies: jsbn "~0.1.0" -js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" - jsbn@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" @@ -1087,7 +964,7 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -loader-runner@^2.2.0: +loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" @@ -1100,7 +977,7 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" -lodash@^4.14.0, lodash@^4.17.4, lodash@^4.2.0: +lodash@^4.14.0, lodash@^4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -1108,12 +985,6 @@ longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" -loose-envify@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -1184,10 +1055,6 @@ ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - nan@^2.3.0: version "2.5.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2" @@ -1486,10 +1353,6 @@ regenerator-runtime@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb" -regenerator-runtime@^0.9.5: - version "0.9.6" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" - regex-cache@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -1727,10 +1590,6 @@ to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" -to-fast-properties@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" - tough-cookie@~2.3.0: version "2.3.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" @@ -1814,9 +1673,9 @@ watchpack@^1.2.0: chokidar "^1.4.3" graceful-fs "^4.1.2" -webpack-merge@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-2.4.0.tgz#4c518d471632c29ae22e83687c2f42a9cd5f35ea" +webpack-merge@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c" dependencies: lodash "^4.17.4" @@ -1831,9 +1690,9 @@ webpack-sources@^0.1.4: source-list-map "~0.1.7" source-map "~0.5.3" -webpack@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.0.tgz#09246336b5581c9002353f75bcadb598a648f977" +webpack@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475" dependencies: acorn "^4.0.4" acorn-dynamic-import "^2.0.0" @@ -1843,7 +1702,7 @@ webpack@2.2.0: enhanced-resolve "^3.0.0" interpret "^1.0.0" json-loader "^0.5.4" - loader-runner "^2.2.0" + loader-runner "^2.3.0" loader-utils "^0.2.16" memory-fs "~0.4.1" mkdirp "~0.5.0" diff --git a/packages/neutrino-preset-react/package.json b/packages/neutrino-preset-react/package.json index 8276952..4702310 100644 --- a/packages/neutrino-preset-react/package.json +++ b/packages/neutrino-preset-react/package.json @@ -11,13 +11,13 @@ "license": "MPL-2.0", "repository": "mozilla-neutrino/neutrino-dev", "dependencies": { - "babel-preset-react": "6.16.0", - "babel-preset-stage-0": "6.16.0", - "deepmerge": "1.2.0", - "eslint-plugin-react": "6.4.1", + "babel-preset-react": "^6.22.0", + "babel-preset-stage-0": "^6.22.0", + "deepmerge": "^1.3.2", + "eslint-plugin-react": "^6.9.0", "react-hot-loader": "3.0.0-beta.6", - "webpack": "2.2.0", - "webpack-merge": "2.4.0" + "webpack": "^2.2.1", + "webpack-merge": "^2.6.1" }, "linkDependencies": { "neutrino-preset-web": "4.0.0" diff --git a/packages/neutrino-preset-react/src/eslint.js b/packages/neutrino-preset-react/src/eslint.js deleted file mode 100644 index 90387e1..0000000 --- a/packages/neutrino-preset-react/src/eslint.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -module.exports = { - plugins: ['react'], - extends: [ - require.resolve('neutrino-preset-web/src/eslint'), - 'plugin:react/recommended' - ], - settings: { - pragma: 'React', - version: '15.0' - }, - parserOptions: { - ecmaFeatures: { - experimentalObjectRestSpread: true, - jsx: true - } - }, - rules: { - 'react/prop-types': ['off'], - - // specify whether double or single quotes should be used in JSX attributes - // http://eslint.org/docs/rules/jsx-quotes - 'jsx-quotes': ['error', 'prefer-double'] - } -}; diff --git a/packages/neutrino-preset-react/src/index.js b/packages/neutrino-preset-react/src/index.js index 6d0119c..8928089 100644 --- a/packages/neutrino-preset-react/src/index.js +++ b/packages/neutrino-preset-react/src/index.js @@ -1,47 +1,75 @@ 'use strict'; -const preset = require('neutrino-preset-web'); +const config = require('neutrino-preset-web'); const merge = require('deepmerge'); -const webpackMerge = require('webpack-merge').smart; const path = require('path'); const webpack = require('webpack'); -const MODULES = path.join(__dirname, 'node_modules'); -const eslintLoader = preset.module.rules.find(r => r.use && r.use.includes('eslint')); -const babelLoader = preset.module.rules.find(r => r.use && r.use.loader && r.use.loader.includes('babel')); - -eslintLoader.test = /\.jsx?$/; -babelLoader.test = /\.jsx?$/; -babelLoader.use.options.presets.push(require.resolve('babel-preset-stage-0')); -babelLoader.use.options.presets.push(require.resolve('babel-preset-react')); - -const config = webpackMerge(preset, { - plugins: [ - new webpack.LoaderOptionsPlugin({ - options: { - eslint: { - configFile: path.join(__dirname, 'eslint.js') +const MODULES = path.join(__dirname, '../node_modules'); + +// modify lint rule and loader +config.module + .rule('lint') + .test(/\.jsx?$/) + .loader('eslint', ({ options }) => { + return { + options: merge(options, { + plugins: ['react'], + baseConfig: { + extends: ['plugin:react/recommended'] + }, + parserOptions: { + ecmaFeatures: { + experimentalObjectRestSpread: true + } + }, + rules: { + 'react/prop-types': ['off'], + 'jsx-quotes': ['error', 'prefer-double'] } - } - }) - ], - resolve: { - modules: [MODULES], - extensions: ['.jsx'] - }, - resolveLoader: { - modules: [MODULES] - }, - externals: { + }) + }; + }); + +// modify babel rule and loader +config.module + .rule('compile') + .test(/\.jsx?$/) + .loader('babel', ({ options }) => { + if (process.env.NODE_ENV === 'development') { + options.plugins.push(require.resolve('react-hot-loader/babel')); + } + + return { + options: merge(options, { + presets: [ + require.resolve('babel-preset-stage-0'), + require.resolve('babel-preset-react') + ] + }) + }; + }); + +config.resolve + .modules + .add(MODULES) + .end() + .extensions + .add('.jsx'); + +config.resolveLoader.modules.add(MODULES); + +config + .externals({ 'react/addons': true, 'react/lib/ExecutionEnvironment': true, 'react/lib/ReactContext': 'window' - } -}); + }); if (process.env.NODE_ENV === 'development') { - config.entry.index.unshift(require.resolve('react-hot-loader/patch')); - babelLoader.use.options.plugins.push(require.resolve('react-hot-loader/babel')); + config + .entry('index') + .add(require.resolve('react-hot-loader/patch')); } module.exports = config; diff --git a/packages/neutrino-preset-react/yarn.lock b/packages/neutrino-preset-react/yarn.lock index 6082352..f1eb81f 100644 --- a/packages/neutrino-preset-react/yarn.lock +++ b/packages/neutrino-preset-react/yarn.lock @@ -79,6 +79,13 @@ array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" +array.prototype.find@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.3.tgz#08c3ec33e32ec4bab362a2958e686ae92f59271d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -317,7 +324,7 @@ babel-plugin-transform-decorators@^6.22.0: babel-template "^6.22.0" babel-types "^6.22.0" -babel-plugin-transform-do-expressions@^6.3.13: +babel-plugin-transform-do-expressions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb" dependencies: @@ -339,14 +346,14 @@ babel-plugin-transform-export-extensions@^6.22.0: babel-plugin-syntax-export-extensions "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-flow-strip-types@^6.3.13: +babel-plugin-transform-flow-strip-types@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" dependencies: babel-plugin-syntax-flow "^6.18.0" babel-runtime "^6.22.0" -babel-plugin-transform-function-bind@^6.3.13: +babel-plugin-transform-function-bind@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" dependencies: @@ -360,27 +367,27 @@ babel-plugin-transform-object-rest-spread@^6.22.0: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-react-display-name@^6.3.13: +babel-plugin-transform-react-display-name@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.22.0.tgz#077197520fa8562b8d3da4c3c4b0b1bdd7853f26" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-react-jsx-self@^6.11.0: +babel-plugin-transform-react-jsx-self@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" dependencies: babel-plugin-syntax-jsx "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-react-jsx-source@^6.3.13: +babel-plugin-transform-react-jsx-source@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" dependencies: babel-plugin-syntax-jsx "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-react-jsx@^6.3.13: +babel-plugin-transform-react-jsx@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.22.0.tgz#48556b7dd4c3fe97d1c943bcd54fc3f2561c1817" dependencies: @@ -388,27 +395,27 @@ babel-plugin-transform-react-jsx@^6.3.13: babel-plugin-syntax-jsx "^6.8.0" babel-runtime "^6.22.0" -babel-preset-react@6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.16.0.tgz#aa117d60de0928607e343c4828906e4661824316" +babel-preset-react@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.22.0.tgz#7bc97e2d73eec4b980fb6b4e4e0884e81ccdc165" dependencies: babel-plugin-syntax-flow "^6.3.13" babel-plugin-syntax-jsx "^6.3.13" - babel-plugin-transform-flow-strip-types "^6.3.13" - babel-plugin-transform-react-display-name "^6.3.13" - babel-plugin-transform-react-jsx "^6.3.13" - babel-plugin-transform-react-jsx-self "^6.11.0" - babel-plugin-transform-react-jsx-source "^6.3.13" + babel-plugin-transform-flow-strip-types "^6.22.0" + babel-plugin-transform-react-display-name "^6.22.0" + babel-plugin-transform-react-jsx "^6.22.0" + babel-plugin-transform-react-jsx-self "^6.22.0" + babel-plugin-transform-react-jsx-source "^6.22.0" -babel-preset-stage-0@6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.16.0.tgz#f5a263c420532fd57491f1a7315b3036e428f823" +babel-preset-stage-0@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.22.0.tgz#707eeb5b415da769eff9c42f4547f644f9296ef9" dependencies: - babel-plugin-transform-do-expressions "^6.3.13" - babel-plugin-transform-function-bind "^6.3.13" - babel-preset-stage-1 "^6.16.0" + babel-plugin-transform-do-expressions "^6.22.0" + babel-plugin-transform-function-bind "^6.22.0" + babel-preset-stage-1 "^6.22.0" -babel-preset-stage-1@^6.16.0: +babel-preset-stage-1@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.22.0.tgz#7da05bffea6ad5a10aef93e320cfc6dd465dbc1a" dependencies: @@ -797,9 +804,16 @@ deep-extend@~0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" -deepmerge@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.2.0.tgz#c36bf76bc1995b85d83e5b0362c97511562bfea8" +deepmerge@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.3.2.tgz#1663691629d4dbfe364fa12a2a4f0aa86aa3a050" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" delayed-stream@~1.0.0: version "1.0.0" @@ -885,16 +899,34 @@ error-stack-parser@^1.3.6: dependencies: stackframe "^0.3.1" +es-abstract@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.0" + is-callable "^1.1.3" + is-regex "^1.0.3" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -eslint-plugin-react@6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.4.1.tgz#7d1aade747db15892f71eee1fea4addf97bcfa2b" +eslint-plugin-react@^6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.9.0.tgz#54c2e9906b76f9d10142030bdc34e9d6840a0bb2" dependencies: + array.prototype.find "^2.0.1" doctrine "^1.2.2" - jsx-ast-utils "^1.3.1" + jsx-ast-utils "^1.3.4" esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" @@ -967,6 +999,10 @@ for-own@^0.1.4: dependencies: for-in "^0.1.5" +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -1007,6 +1043,10 @@ fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: mkdirp ">=0.5 0" rimraf "2" +function-bind@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" + gauge@~2.7.1: version "2.7.2" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774" @@ -1203,6 +1243,14 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + is-dotfile@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" @@ -1260,6 +1308,14 @@ is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" +is-regex@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.3.tgz#0d55182bddf9f2fde278220aec3a75642c908637" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -1334,7 +1390,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.3.6" -jsx-ast-utils@^1.3.1: +jsx-ast-utils@^1.3.4: version "1.4.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.0.tgz#5afe38868f56bc8cc7aeaef0100ba8c75bd12591" dependencies: @@ -1366,7 +1422,7 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -loader-runner@^2.2.0: +loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" @@ -1559,6 +1615,10 @@ object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -2131,9 +2191,9 @@ watchpack@^1.2.0: chokidar "^1.4.3" graceful-fs "^4.1.2" -webpack-merge@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-2.4.0.tgz#4c518d471632c29ae22e83687c2f42a9cd5f35ea" +webpack-merge@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c" dependencies: lodash "^4.17.4" @@ -2144,9 +2204,9 @@ webpack-sources@^0.1.4: source-list-map "~0.1.7" source-map "~0.5.3" -webpack@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.0.tgz#09246336b5581c9002353f75bcadb598a648f977" +webpack@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475" dependencies: acorn "^4.0.4" acorn-dynamic-import "^2.0.0" @@ -2156,7 +2216,7 @@ webpack@2.2.0: enhanced-resolve "^3.0.0" interpret "^1.0.0" json-loader "^0.5.4" - loader-runner "^2.2.0" + loader-runner "^2.3.0" loader-utils "^0.2.16" memory-fs "~0.4.1" mkdirp "~0.5.0" diff --git a/packages/neutrino-preset-web/package.json b/packages/neutrino-preset-web/package.json index 955c307..330d46d 100644 --- a/packages/neutrino-preset-web/package.json +++ b/packages/neutrino-preset-web/package.json @@ -11,26 +11,26 @@ "license": "MPL-2.0", "repository": "mozilla-neutrino/neutrino-dev", "dependencies": { - "babel-polyfill": "6.16.0", - "css-loader": "0.25.0", - "deepmerge": "1.2.0", - "eslint-plugin-mocha": "4.7.0", + "babel-polyfill": "^6.22.0", + "css-loader": "^0.26.1", + "deepmerge": "^1.3.2", + "eslint-plugin-mocha": "^4.8.0", "exists-file": "3.0.0", - "file-loader": "0.9.0", - "html-webpack-plugin": "2.26.0", - "karma": "1.3.0", + "file-loader": "^0.10.0", + "html-webpack-plugin": "^2.28.0", + "karma": "^1.4.1", "karma-chrome-launcher": "2.0.0", "karma-coverage": "1.1.1", - "karma-mocha": "1.2.0", - "karma-mocha-reporter": "2.1.0", - "karma-webpack": "2.0.1", - "mocha": "3.1.2", + "karma-mocha": "^1.3.0", + "karma-mocha-reporter": "^2.2.2", + "karma-webpack": "^2.0.2", + "mocha": "^3.2.0", "mocha-coverage-reporter": "0.0.1", "style-loader": "0.13.1", "url-loader": "0.5.7", - "webpack": "2.2.0", - "webpack-dev-server": "2.2.0", - "webpack-merge": "2.4.0", + "webpack": "^2.2.1", + "webpack-dev-server": "^2.3.0", + "webpack-merge": "^2.6.1", "worker-loader": "0.7.1" }, "linkDependencies": { diff --git a/packages/neutrino-preset-web/src/eslint.js b/packages/neutrino-preset-web/src/eslint.js deleted file mode 100644 index 6e89a79..0000000 --- a/packages/neutrino-preset-web/src/eslint.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -module.exports = { - extends: [require.resolve('neutrino-preset-base/src/eslint')], - globals: { - Buffer: true - }, - env: { - browser: true, - commonjs: true - } -}; diff --git a/packages/neutrino-preset-web/src/index.js b/packages/neutrino-preset-web/src/index.js index 90b7c35..eec3500 100644 --- a/packages/neutrino-preset-web/src/index.js +++ b/packages/neutrino-preset-web/src/index.js @@ -4,9 +4,8 @@ const exists = require('exists-file'); const webpack = require('webpack'); const HtmlPlugin = require('html-webpack-plugin'); const merge = require('deepmerge'); -const preset = require('neutrino-preset-base'); +const config = require('neutrino-preset-base'); const path = require('path'); -const webpackMerge = require('webpack-merge').smart; const CWD = process.cwd(); const SRC = path.join(CWD, 'src'); @@ -18,10 +17,6 @@ const CSS_LOADER = require.resolve('css-loader'); const STYLE_LOADER = require.resolve('style-loader'); const URL_LOADER = require.resolve('url-loader'); const MODULES = path.join(__dirname, '../node_modules'); -const USER_CONFIG = require(path.join(CWD, 'package.json')); -const VENDOR_LIBS = Object.keys(USER_CONFIG.dependencies); - -preset.entry.index.unshift(require.resolve('babel-polyfill')); /** * Find best fit template. @@ -38,117 +33,116 @@ function findTemplate() { return PROJECT_TEMPLATE; } -const config = webpackMerge(preset, { - target: 'web', - node: { - console: false, - global: true, - process: true, - Buffer: true, - __filename: 'mock', - __dirname: 'mock', - setImmediate: true, - fs: 'empty', - tls: 'empty' - }, - entry: { - vendor: VENDOR_LIBS - }, - output: { - publicPath: './' - }, - plugins: [ - new webpack.EnvironmentPlugin(['NODE_ENV']), - new HtmlPlugin({ - template: findTemplate(), - inject: 'body', - xhtml: true - }), - new webpack.LoaderOptionsPlugin({ - options: { - eslint: { - configFile: path.join(__dirname, 'eslint.js') - } - } - }) - ], - resolve: { - modules: [MODULES] - }, - resolveLoader: { - modules: [MODULES] - }, - module: { - rules: [ - { - test: /\.html$/, - use: { - loader: FILE_LOADER, - options: { - name: '[name].[ext]' - } - } - }, - { - test: /\.css$/, - loaders: [STYLE_LOADER, CSS_LOADER] - }, - { - test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, - use: { - loader: URL_LOADER, - options: { - limit: 10000, - mimetype: 'application/font-woff' - } - } - }, - { - test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, - use: { - loader: URL_LOADER, - options: { - limit: '10000', - mimetype: 'application/octet-stream' - } - } - }, - { - test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, - use: FILE_LOADER - }, - { - test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, - use: { - loader: URL_LOADER, - options: { - limit: '10000', - mimetype: 'application/svg+xml' - } - } - }, - { - test: /\.(png|jpg)$/, - use: { - loader: URL_LOADER, - options: { - limit: 8192 - } - } - }, - { - test: /\.ico(\?v=\d+\.\d+\.\d+)?$/, - use: URL_LOADER - } - ] - } -}); +config.target('web'); +config.output.publicPath('./'); +config.resolve.modules.add(MODULES); +config.resolveLoader.modules.add(MODULES); + +config.node + .set('console', false) + .set('global', true) + .set('process', true) + .set('Buffer', true) + .set('__filename', 'mock') + .set('__dirname', 'mock') + .set('setImmediate', true) + .set('fs', 'empty') + .set('tls', 'empty'); + +config.module + .rule('html') + .test(/\.html$/) + .loader('file', FILE_LOADER, { + name: '[name].[ext]' + }); + +config.module + .rule('css') + .test(/\.css$/) + .loader('style', STYLE_LOADER) + .loader('css', CSS_LOADER); + +config.module + .rule('woff') + .test(/\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/) + .loader('url', URL_LOADER, { + limit: '10000', + mimetype: 'application/font-woff' + }); + +config.module + .rule('ttf') + .test(/\.ttf(\?v=\d+\.\d+\.\d+)?$/) + .loader('url', URL_LOADER, { + limit: '10000', + mimetype: 'application/octet-stream' + }); + +config.module + .rule('eot') + .test(/\.eot(\?v=\d+\.\d+\.\d+)?$/) + .loader('file', FILE_LOADER); + +config.module + .rule('svg') + .test(/\.svg(\?v=\d+\.\d+\.\d+)?$/) + .loader('url', URL_LOADER, { + limit: '10000', + mimetype: 'application/svg+xml' + }); + +config.module + .rule('img') + .test(/\.(png|jpg)$/) + .loader('url', URL_LOADER, { + limit: 8192 + }); + +config.module + .rule('ico') + .test(/\.ico(\?v=\d+\.\d+\.\d+)?$/) + .loader('url', URL_LOADER); + +// modify the babel loader +config.module + .rule('compile') + .loader('babel', ({ options }) => { + options.presets[0][1].targets.browsers = ['last 2 versions']; + + return { options }; + }); + +// modify the lint loader +config.module + .rule('lint') + .loader('eslint', ({ options }) => { + return { + options: merge(options, { + globals: ['Buffer'], + envs: ['browser', 'commonjs'] + }) + }; + }); + +config + .plugin('env') + .use(webpack.EnvironmentPlugin, ['NODE_ENV']); + +config + .plugin('html') + .use(HtmlPlugin, { + template: findTemplate(), + inject: 'body', + xhtml: true + }); if (process.env.NODE_ENV !== 'test') { - config.plugins.push(new webpack.optimize.CommonsChunkPlugin({ - names: ['vendor', 'manifest'], - minChunks: Infinity - })); + config + .plugin('chunk') + .use(webpack.optimize.CommonsChunkPlugin, { + names: ['vendor', 'manifest'], + minChunks: Infinity + }); } if (process.env.NODE_ENV === 'development') { @@ -156,68 +150,82 @@ if (process.env.NODE_ENV === 'development') { const host = process.env.HOST || 'localhost'; const port = parseInt(process.env.PORT) || 5000; - config.devServer = { - host, - port, - hot: true, - https: protocol === 'https', - contentBase: SRC, - // Enable history API fallback so HTML5 History API based - // routing works. This is a good default that will come - // in handy in more complicated setups. - historyApiFallback: true, - stats: { - colors: true, - chunks: false, - version: false, + config + .devServer + .host(host) + .port(port) + .https(protocol === 'https') + .contentBase(SRC) + .historyApiFallback(true) + .stats({ assets: false, - modules: false, children: false, - source: false - } - }; + chunks: false, + colors: true, + errors: true, + errorDetails: true, + hash: false, + modules: false, + publicPath: false, + timings: false, + version: false, + warnings: true + }); - config.entry.index.push(`webpack-dev-server/client?${protocol}://${host}:${port}/`); - config.entry.index.push(`webpack/hot/dev-server`); - config.plugins.push(new webpack.HotModuleReplacementPlugin()); + config + .entry('index') + .add(`webpack-dev-server/client?${protocol}://${host}:${port}/`) + .add('webpack/hot/dev-server'); + + config + .plugin('hot') + .use(webpack.HotModuleReplacementPlugin); } else if (process.env.NODE_ENV === 'production') { - config.plugins.push( - new webpack.optimize.UglifyJsPlugin({ sourceMap: false, compress: { warnings: false }}), - new webpack.LoaderOptionsPlugin({ minimize: true }) - ); + config + .plugin('minify') + .use(webpack.optimize.UglifyJsPlugin, { + sourceMap: false, + compress: { warnings: false } + }); + + config + .plugin('minimize') + .use(webpack.LoaderOptionsPlugin, { minimize: true }); } else if (process.env.NODE_ENV === 'test') { - config.karma = { - plugins: [ - require.resolve('karma-webpack'), - require.resolve('karma-chrome-launcher'), - require.resolve('karma-coverage'), - require.resolve('karma-mocha'), - require.resolve('karma-mocha-reporter') - ], - basePath: process.cwd(), - browsers: [process.env.CI ? 'ChromeCI' : 'Chrome'], - customLaunchers: { - ChromeCI: { - base: 'Chrome', - flags: ['--no-sandbox'] + config + .options + .set('karma', { + plugins: [ + require.resolve('karma-webpack'), + require.resolve('karma-chrome-launcher'), + require.resolve('karma-coverage'), + require.resolve('karma-mocha'), + require.resolve('karma-mocha-reporter') + ], + basePath: process.cwd(), + browsers: [process.env.CI ? 'ChromeCI' : 'Chrome'], + customLaunchers: { + ChromeCI: { + base: 'Chrome', + flags: ['--no-sandbox'] + } + }, + frameworks: ['mocha'], + files: ['test/**/*_test.js'], + preprocessors: { + 'test/**/*_test.js': ['webpack'], + 'src/**/*.js': ['webpack'] + }, + webpackMiddleware: { noInfo: true }, + reporters: ['mocha', 'coverage'], + coverageReporter: { + dir: '.coverage', + reporters: [ + { type: 'html', subdir: 'report-html' }, + { type: 'lcov', subdir: 'report-lcov' } + ] } - }, - frameworks: ['mocha'], - files: ['test/**/*_test.js'], - preprocessors: { - 'test/**/*_test.js': ['webpack'], - 'src/**/*.js': ['webpack'] - }, - webpackMiddleware: { noInfo: true }, - reporters: ['mocha', 'coverage'], - coverageReporter: { - dir: '.coverage', - reporters: [ - { type: 'html', subdir: 'report-html' }, - { type: 'lcov', subdir: 'report-lcov' } - ] - } - }; + }); } module.exports = config; diff --git a/packages/neutrino-preset-web/yarn.lock b/packages/neutrino-preset-web/yarn.lock index 3a6bf21..c4f49c3 100644 --- a/packages/neutrino-preset-web/yarn.lock +++ b/packages/neutrino-preset-web/yarn.lock @@ -6,14 +6,7 @@ abbrev@1, abbrev@1.0.x: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" -accepts@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.1.4.tgz#d71c96f7d41d0feda2c38cd14e8a27c04158df4a" - dependencies: - mime-types "~2.0.4" - negotiator "0.4.9" - -accepts@~1.3.3: +accepts@1.3.3, accepts@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" dependencies: @@ -30,9 +23,9 @@ acorn@^4.0.3, acorn@^4.0.4: version "4.0.8" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.8.tgz#f41e52020ce78118a3c68ed0e9215eb8fc68b5b1" -after@0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627" +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" ajv-keywords@^1.1.1: version "1.5.1" @@ -61,6 +54,10 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -206,15 +203,15 @@ babel-code-frame@^6.11.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-polyfill@6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.16.0.tgz#2d45021df87e26a374b6d4d1a9c65964d17f2422" +babel-polyfill@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.22.0.tgz#1ac99ebdcc6ba4db1e2618c387b2084a82154a3b" dependencies: - babel-runtime "^6.9.1" + babel-runtime "^6.22.0" core-js "^2.4.0" - regenerator-runtime "^0.9.5" + regenerator-runtime "^0.10.0" -babel-runtime@^6.9.1: +babel-runtime@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611" dependencies: @@ -229,17 +226,17 @@ balanced-match@^0.4.1, balanced-match@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" -base64-arraybuffer@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz#474df4a9f2da24e05df3158c3b1db3c3cd46a154" +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@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" -base64id@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f" +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" batch@0.5.3: version "0.5.3" @@ -251,10 +248,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -benchmark@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-1.0.0.tgz#2f1e2fa4c359f11122aa183082218e957e390c73" - better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" @@ -530,8 +523,8 @@ clap@^1.0.9: chalk "^1.1.3" clean-css@4.0.x: - version "4.0.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.3.tgz#9da7b59301d940c345757f175e6dfa6872c7de8e" + version "4.0.4" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.4.tgz#629896cc364f3c3d00b9908ee60dd18e4c6c6462" dependencies: source-map "0.5.x" @@ -635,9 +628,9 @@ component-emitter@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" -component-emitter@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.0.tgz#ccd113a86388d06482d03de3fc7df98526ba8efe" +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" @@ -763,15 +756,15 @@ css-color-names@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" -css-loader@0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.25.0.tgz#c3febc8ce28f4c83576b6b13707f47f90c390223" +css-loader@^0.26.1: + version "0.26.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.26.1.tgz#2ba7f20131b93597496b3e9bb500785a49cd29ea" dependencies: babel-code-frame "^6.11.0" - css-selector-tokenizer "^0.6.0" + css-selector-tokenizer "^0.7.0" cssnano ">=2.6.1 <4" loader-utils "~0.2.2" - lodash.camelcase "^3.0.1" + lodash.camelcase "^4.3.0" object-assign "^4.0.1" postcss "^5.0.6" postcss-modules-extract-imports "^1.0.0" @@ -797,6 +790,14 @@ css-selector-tokenizer@^0.6.0: fastparse "^1.1.1" regexpu-core "^1.0.0" +css-selector-tokenizer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + css-what@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" @@ -876,16 +877,18 @@ dateformat@^1.0.6: get-stdin "^4.0.1" meow "^3.3.0" -debug@0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" - debug@2.2.0, debug@^2.2.0, debug@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" dependencies: ms "0.7.1" +debug@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + debug@2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" @@ -904,9 +907,9 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -deepmerge@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.2.0.tgz#c36bf76bc1995b85d83e5b0362c97511562bfea8" +deepmerge@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.3.2.tgz#1663691629d4dbfe364fa12a2a4f0aa86aa3a050" defined@^1.0.0: version "1.0.0" @@ -1035,43 +1038,44 @@ encodeurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" -engine.io-client@1.6.9: - version "1.6.9" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.6.9.tgz#1d6ad48048a5083c95096943b29d36efdb212401" +engine.io-client@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766" dependencies: - component-emitter "1.1.2" + component-emitter "1.2.1" component-inherit "0.0.3" - debug "2.2.0" - engine.io-parser "1.2.4" + debug "2.3.3" + engine.io-parser "1.3.2" has-cors "1.1.0" indexof "0.0.1" - parsejson "0.0.1" - parseqs "0.0.2" - parseuri "0.0.4" - ws "1.0.1" - xmlhttprequest-ssl "1.5.1" + parsejson "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + ws "1.1.1" + xmlhttprequest-ssl "1.5.3" yeast "0.1.2" -engine.io-parser@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.2.4.tgz#e0897b0bf14e792d4cd2a5950553919c56948c42" +engine.io-parser@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" dependencies: - after "0.8.1" + after "0.8.2" arraybuffer.slice "0.0.6" - base64-arraybuffer "0.1.2" + base64-arraybuffer "0.1.5" blob "0.0.4" - has-binary "0.1.6" - utf8 "2.1.0" + has-binary "0.1.7" + wtf-8 "1.0.0" -engine.io@1.6.10: - version "1.6.10" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.6.10.tgz#f87d84e1bd21d1a2ec7f8deef0c62054acdfb27a" +engine.io@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e" dependencies: - accepts "1.1.4" - base64id "0.1.0" - debug "2.2.0" - engine.io-parser "1.2.4" - ws "1.0.1" + accepts "1.3.3" + base64id "1.0.0" + cookie "0.3.1" + debug "2.3.3" + engine.io-parser "1.3.2" + ws "1.1.1" enhanced-resolve@^3.0.0: version "3.1.0" @@ -1121,9 +1125,9 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -eslint-plugin-mocha@4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-4.7.0.tgz#69262362f4ec69ae5849908824f325b8d465e7f3" +eslint-plugin-mocha@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-4.8.0.tgz#7627b35a61e5a720412da96eab06f0e03a1dcdb6" dependencies: ramda "^0.22.1" @@ -1261,9 +1265,9 @@ faye-websocket@~0.11.0: dependencies: websocket-driver ">=0.5.1" -file-loader@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.9.0.tgz#1d2daddd424ce6d1b07cfe3f79731bed3617ab42" +file-loader@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.10.0.tgz#bbe6db7474ac92c7f54fdc197cf547e98b6b8e12" dependencies: loader-utils "~0.2.5" @@ -1452,7 +1456,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.0.5: +glob@^7.0.5, glob@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: @@ -1504,12 +1508,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-binary@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.6.tgz#25326f39cfa4f616ad8787894e3af2cfbc7b6e10" - dependencies: - isarray "0.0.1" - has-binary@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" @@ -1574,6 +1572,10 @@ html-comment-regex@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" +html-entities@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2" + html-minifier@^3.2.3: version "3.3.0" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.3.0.tgz#a9b5b8eda501362d4c5699db02a8dc72013d1fab" @@ -1587,9 +1589,9 @@ html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "2.7.x" -html-webpack-plugin@2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.26.0.tgz#ba97c8a66f912b85df80d2aeea65966c8bd9249e" +html-webpack-plugin@^2.28.0: + version "2.28.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009" dependencies: bluebird "^3.4.7" html-minifier "^3.2.3" @@ -1915,10 +1917,6 @@ 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" -json3@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.2.6.tgz#f6efc93c06a04de9aec53053df2559bb19e2038b" - json3@3.3.2, json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" @@ -1960,19 +1958,21 @@ karma-coverage@1.1.1: minimatch "^3.0.0" source-map "^0.5.1" -karma-mocha-reporter@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.1.0.tgz#8a4bee4894c3a88ec669e640fee052253e03e01b" +karma-mocha-reporter@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.2.tgz#876de9a287244e54a608591732a98e66611f6abe" dependencies: chalk "1.1.3" -karma-mocha@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.2.0.tgz#bca6be2a66805b847417e8d2873fd0b5b27ee7cd" +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@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-2.0.1.tgz#271ac955685b9bd99365ef010ffc5655eac28ef6" +karma-webpack@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864" dependencies: async "~0.9.0" loader-utils "^0.2.5" @@ -1980,9 +1980,9 @@ karma-webpack@2.0.1: source-map "^0.1.41" webpack-dev-middleware "^1.0.11" -karma@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-1.3.0.tgz#b2b94e8f499fadd0069d54f9aef4a4d48ec5cc1f" +karma@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e" dependencies: bluebird "^3.3.0" body-parser "^1.12.4" @@ -1994,7 +1994,7 @@ karma@1.3.0: di "^0.0.1" dom-serialize "^2.2.0" expand-braces "^0.1.1" - glob "^7.0.3" + glob "^7.1.1" graceful-fs "^4.1.2" http-proxy "^1.13.0" isbinaryfile "^3.0.0" @@ -2006,10 +2006,11 @@ karma@1.3.0: qjobs "^1.1.4" range-parser "^1.2.0" rimraf "^2.3.3" - socket.io "1.4.7" + safe-buffer "^5.0.1" + socket.io "1.7.2" source-map "^0.5.3" tmp "0.0.28" - useragent "^2.1.9" + useragent "^2.1.10" kind-of@^3.0.2: version "3.1.0" @@ -2044,7 +2045,7 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -loader-runner@^2.2.0: +loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" @@ -2072,13 +2073,6 @@ lodash._basecreate@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" -lodash._createcompounder@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz#5dd2cb55372d6e70e0e2392fb2304d6631091075" - dependencies: - lodash.deburr "^3.0.0" - lodash.words "^3.0.0" - lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" @@ -2087,15 +2081,9 @@ lodash._isiterateecall@^3.0.0: version "3.0.9" resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" -lodash._root@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - -lodash.camelcase@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz#932c8b87f8a4377897c67197533282f97aeac298" - dependencies: - lodash._createcompounder "^3.0.0" +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" lodash.create@3.1.1: version "3.1.1" @@ -2105,12 +2093,6 @@ lodash.create@3.1.1: lodash._basecreate "^3.0.0" lodash._isiterateecall "^3.0.0" -lodash.deburr@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-3.2.0.tgz#6da8f54334a366a7cf4c4c76ef8d80aa1b365ed5" - dependencies: - lodash._root "^3.0.0" - lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -2135,12 +2117,6 @@ lodash.uniq@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash.words@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.words/-/lodash.words-3.2.0.tgz#4e2a8649bc08745b17c695b1a3ce8fee596623b3" - dependencies: - lodash._root "^3.0.0" - lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -2250,22 +2226,12 @@ miller-rabin@^4.0.0: version "1.26.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" -mime-db@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz#3d0c63180f458eb10d325aaa37d7c58ae312e9d7" - mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7: version "2.1.14" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" dependencies: mime-db "~1.26.0" -mime-types@~2.0.4: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz#310e159db23e077f8bb22b748dabfa4957140aa6" - dependencies: - mime-db "~1.12.0" - mime@1.2.x: version "1.2.11" resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" @@ -2284,18 +2250,14 @@ minimalistic-assert@^1.0.0: dependencies: brace-expansion "^1.0.0" -minimist@0.0.8: +minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.3, minimist@^1.2.0: +minimist@1.2.0, 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" - mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -2306,9 +2268,9 @@ 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@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.1.2.tgz#51f93b432bf7e1b175ffc22883ccd0be32dba6b5" +mocha@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.2.0.tgz#7dc4f45e5088075171a68896814e6ae9eb7a85e3" dependencies: browser-stdout "1.3.0" commander "2.9.0" @@ -2340,10 +2302,6 @@ ncname@1.0.x: dependencies: xml-char-classes "^1.0.0" -negotiator@0.4.9: - version "0.4.9" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.4.9.tgz#92e46b6db53c7e421ed64a2bc94f08be7630df3f" - negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -2459,6 +2417,10 @@ oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2584,21 +2546,21 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parsejson@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.1.tgz#9b10c6c0d825ab589e685153826de0a3ba278bcc" +parsejson@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" dependencies: better-assert "~1.0.0" -parseqs@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.2.tgz#9dfe70b2cddac388bde4f35b1f240fa58adbe6c7" +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.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.4.tgz#806582a39887e1ea18dd5e2fe0e01902268e9350" +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" @@ -2677,8 +2639,8 @@ postcss-colormin@^2.1.8: postcss-value-parser "^3.2.3" postcss-convert-values@^2.3.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.0.tgz#08c6d06130fe58a91a21ff50829e1aad6a3a1acc" + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" dependencies: postcss "^5.0.11" postcss-value-parser "^3.1.2" @@ -3115,10 +3077,6 @@ regenerator-runtime@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb" -regenerator-runtime@^0.9.5: - version "0.9.6" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" - regex-cache@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -3233,6 +3191,10 @@ ripemd160@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" +safe-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + sax@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" @@ -3320,59 +3282,49 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -socket.io-adapter@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.4.0.tgz#fb9f82ab1aa65290bf72c3657955b930a991a24f" +socket.io-adapter@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" dependencies: - debug "2.2.0" - socket.io-parser "2.2.2" + debug "2.3.3" + socket.io-parser "2.3.1" -socket.io-client@1.4.6: - version "1.4.6" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.4.6.tgz#49b0ba537efd15b8297c84016e642e1c7c752c3d" +socket.io-client@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644" dependencies: backo2 "1.0.2" component-bind "1.0.0" - component-emitter "1.2.0" - debug "2.2.0" - engine.io-client "1.6.9" + component-emitter "1.2.1" + debug "2.3.3" + engine.io-client "1.8.2" has-binary "0.1.7" indexof "0.0.1" object-component "0.0.3" - parseuri "0.0.4" - socket.io-parser "2.2.6" + parseuri "0.0.5" + socket.io-parser "2.3.1" to-array "0.1.4" -socket.io-parser@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.2.tgz#3d7af6b64497e956b7d9fe775f999716027f9417" - dependencies: - benchmark "1.0.0" - component-emitter "1.1.2" - debug "0.7.4" - isarray "0.0.1" - json3 "3.2.6" - -socket.io-parser@2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.6.tgz#38dfd61df50dcf8ab1d9e2091322bf902ba28b99" +socket.io-parser@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" dependencies: - benchmark "1.0.0" component-emitter "1.1.2" debug "2.2.0" isarray "0.0.1" json3 "3.3.2" -socket.io@1.4.7: - version "1.4.7" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.4.7.tgz#92b7f7cb88c5797d4daee279fe8075dbe6d3fa1c" +socket.io@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71" dependencies: - debug "2.2.0" - engine.io "1.6.10" + debug "2.3.3" + engine.io "1.8.2" has-binary "0.1.7" - socket.io-adapter "0.4.0" - socket.io-client "1.4.6" - socket.io-parser "2.2.6" + object-assign "4.1.0" + socket.io-adapter "0.5.0" + socket.io-client "1.7.2" + socket.io-parser "2.3.1" sockjs-client@1.1.1: version "1.1.1" @@ -3733,16 +3685,12 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -useragent@^2.1.9: +useragent@^2.1.10: version "2.1.11" resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.11.tgz#6a026e6a6c619b46ca7a0b2fdef6c1ac3da8ca29" dependencies: lru-cache "2.2.x" -utf8@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.0.tgz#0cfec5c8052d44a23e3aaa908104e8075f95dfd5" - util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -3827,14 +3775,16 @@ webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0: path-is-absolute "^1.0.0" range-parser "^1.0.3" -webpack-dev-server@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.2.0.tgz#364967eccaf8ff1d7e1681b7a8cc24fab4ced8a6" +webpack-dev-server@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101" dependencies: + ansi-html "0.0.7" chokidar "^1.6.0" compression "^1.5.2" connect-history-api-fallback "^1.3.0" express "^4.13.3" + html-entities "^1.2.0" http-proxy-middleware "~0.17.1" opn "4.0.2" portfinder "^1.0.9" @@ -3847,9 +3797,9 @@ webpack-dev-server@2.2.0: webpack-dev-middleware "^1.9.0" yargs "^6.0.0" -webpack-merge@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-2.4.0.tgz#4c518d471632c29ae22e83687c2f42a9cd5f35ea" +webpack-merge@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c" dependencies: lodash "^4.17.4" @@ -3860,9 +3810,9 @@ webpack-sources@^0.1.4: source-list-map "~0.1.7" source-map "~0.5.3" -webpack@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.0.tgz#09246336b5581c9002353f75bcadb598a648f977" +webpack@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475" dependencies: acorn "^4.0.4" acorn-dynamic-import "^2.0.0" @@ -3872,7 +3822,7 @@ webpack@2.2.0: enhanced-resolve "^3.0.0" interpret "^1.0.0" json-loader "^0.5.4" - loader-runner "^2.2.0" + loader-runner "^2.3.0" loader-utils "^0.2.16" memory-fs "~0.4.1" mkdirp "~0.5.0" @@ -3948,20 +3898,24 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -ws@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.0.1.tgz#7d0b2a2e58cddd819039c29c9de65045e1b310e9" +ws@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018" dependencies: options ">=0.0.5" ultron "1.0.x" +wtf-8@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + xml-char-classes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" -xmlhttprequest-ssl@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz#3b7741fea4a86675976e908d296d4445961faa67" +xmlhttprequest-ssl@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" xtend@^4.0.0: version "4.0.1" diff --git a/packages/neutrino/package.json b/packages/neutrino/package.json index 6026ca1..9409a8c 100644 --- a/packages/neutrino/package.json +++ b/packages/neutrino/package.json @@ -42,14 +42,15 @@ "repository": "mozilla-neutrino/neutrino-dev", "dependencies": { "babel-register": "6.22.0", - "change-case": "3.0.0", - "karma": "1.3.0", - "mocha": "3.1.2", - "resolve": "1.1.7", + "change-case": "^3.0.1", + "karma": "^1.4.1", + "mocha": "^3.2.0", + "resolve": "^1.2.0", "vorpal": "1.4.1", - "webpack": "2.2.0", - "webpack-dev-server": "2.2.0", - "webpack-hot-middleware": "2.15.0", - "yeoman-environment": "1.6.5" + "webpack": "^2.2.1", + "webpack-dev-server": "^2.3.0", + "webpack-hot-middleware": "^2.16.1", + "webpack-merge": "^2.6.1", + "yeoman-environment": "^1.6.6" } } diff --git a/packages/neutrino/src/get-preset.js b/packages/neutrino/src/get-preset.js index 18a6f6d..2873828 100644 --- a/packages/neutrino/src/get-preset.js +++ b/packages/neutrino/src/get-preset.js @@ -1,13 +1,13 @@ 'use strict'; const path = require('path'); +const merge = require('webpack-merge').smart; -module.exports = (preset) => { - const cwd = process.cwd(); +const cwd = process.cwd(); +const pkg = require(path.join(cwd, 'package.json')); +module.exports = (preset) => { if (!preset) { - const pkg = require(path.join(cwd, 'package.json')); - if (!pkg.config || !pkg.config.preset) { throw new Error(`This command requires a preset. Specify one using -p, --preset, or in your package.json as \`config.preset\`.`); @@ -26,7 +26,13 @@ module.exports = (preset) => { // try requiring it as relative to the project for (let i = 0; i < modules.length; i++) { try { - return require(modules[i]); + const module = require(modules[i]); + const core = 'toConfig' in module ? module.toConfig() : module; + const config = pkg.config && pkg.config.neutrino ? + merge(core, pkg.config.neutrino) : + core; + + return config; } catch (err) { if (!/Cannot find module/.test(err.message)) { throw err; diff --git a/packages/neutrino/yarn.lock b/packages/neutrino/yarn.lock index e3a5bbf..76a161e 100644 --- a/packages/neutrino/yarn.lock +++ b/packages/neutrino/yarn.lock @@ -6,14 +6,7 @@ abbrev@1: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" -accepts@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.1.4.tgz#d71c96f7d41d0feda2c38cd14e8a27c04158df4a" - dependencies: - mime-types "~2.0.4" - negotiator "0.4.9" - -accepts@~1.3.3: +accepts@1.3.3, accepts@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" dependencies: @@ -30,9 +23,9 @@ acorn@^4.0.3, acorn@^4.0.4: version "4.0.8" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.8.tgz#f41e52020ce78118a3c68ed0e9215eb8fc68b5b1" -after@0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627" +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" ajv-keywords@^1.1.1: version "1.5.1" @@ -61,6 +54,10 @@ ansi-html@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.6.tgz#bda8e33dd2ee1c20f54c08eb405713cbfc0ed80e" +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -304,17 +301,17 @@ balanced-match@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" -base64-arraybuffer@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz#474df4a9f2da24e05df3158c3b1db3c3cd46a154" +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@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" -base64id@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f" +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" batch@0.5.3: version "0.5.3" @@ -326,10 +323,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -benchmark@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-1.0.0.tgz#2f1e2fa4c359f11122aa183082218e957e390c73" - better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" @@ -535,9 +528,9 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" -change-case@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.0.tgz#6c9c8e35f8790870a82b6b0745be8c3cbef9b081" +change-case@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.1.tgz#ee5f5ad0415ad1ad9e8072cf49cd4cfa7660a554" dependencies: camel-case "^3.0.0" constant-case "^2.0.0" @@ -655,9 +648,9 @@ component-emitter@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" -component-emitter@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.0.tgz#ccd113a86388d06482d03de3fc7df98526ba8efe" +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" @@ -812,16 +805,18 @@ date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" -debug@0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" - debug@2.2.0, debug@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" dependencies: ms "0.7.1" +debug@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + debug@2.6.0, debug@^2.0.0, debug@^2.1.1, debug@^2.2.0: version "2.6.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" @@ -931,43 +926,44 @@ encodeurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" -engine.io-client@1.6.9: - version "1.6.9" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.6.9.tgz#1d6ad48048a5083c95096943b29d36efdb212401" +engine.io-client@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766" dependencies: - component-emitter "1.1.2" + component-emitter "1.2.1" component-inherit "0.0.3" - debug "2.2.0" - engine.io-parser "1.2.4" + debug "2.3.3" + engine.io-parser "1.3.2" has-cors "1.1.0" indexof "0.0.1" - parsejson "0.0.1" - parseqs "0.0.2" - parseuri "0.0.4" - ws "1.0.1" - xmlhttprequest-ssl "1.5.1" + parsejson "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + ws "1.1.1" + xmlhttprequest-ssl "1.5.3" yeast "0.1.2" -engine.io-parser@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.2.4.tgz#e0897b0bf14e792d4cd2a5950553919c56948c42" +engine.io-parser@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" dependencies: - after "0.8.1" + after "0.8.2" arraybuffer.slice "0.0.6" - base64-arraybuffer "0.1.2" + base64-arraybuffer "0.1.5" blob "0.0.4" - has-binary "0.1.6" - utf8 "2.1.0" + has-binary "0.1.7" + wtf-8 "1.0.0" -engine.io@1.6.10: - version "1.6.10" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.6.10.tgz#f87d84e1bd21d1a2ec7f8deef0c62054acdfb27a" +engine.io@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e" dependencies: - accepts "1.1.4" - base64id "0.1.0" - debug "2.2.0" - engine.io-parser "1.2.4" - ws "1.0.1" + accepts "1.3.3" + base64id "1.0.0" + cookie "0.3.1" + debug "2.3.3" + engine.io-parser "1.3.2" + ws "1.1.1" enhanced-resolve@^3.0.0: version "3.1.0" @@ -1285,7 +1281,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@7.0.5, glob@^7.0.3, glob@^7.0.5: +glob@7.0.5: version "7.0.5" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.5.tgz#b4202a69099bbb4d292a7c1b95b6682b67ebdc95" dependencies: @@ -1306,6 +1302,17 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.0.5, glob@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + globals@^9.0.0: version "9.14.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" @@ -1358,12 +1365,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-binary@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.6.tgz#25326f39cfa4f616ad8787894e3af2cfbc7b6e10" - dependencies: - isarray "0.0.1" - has-binary@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" @@ -1736,10 +1737,6 @@ 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" -json3@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.2.6.tgz#f6efc93c06a04de9aec53053df2559bb19e2038b" - json3@3.3.2, json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" @@ -1764,9 +1761,9 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.3.6" -karma@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-1.3.0.tgz#b2b94e8f499fadd0069d54f9aef4a4d48ec5cc1f" +karma@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e" dependencies: bluebird "^3.3.0" body-parser "^1.12.4" @@ -1778,7 +1775,7 @@ karma@1.3.0: di "^0.0.1" dom-serialize "^2.2.0" expand-braces "^0.1.1" - glob "^7.0.3" + glob "^7.1.1" graceful-fs "^4.1.2" http-proxy "^1.13.0" isbinaryfile "^3.0.0" @@ -1790,10 +1787,11 @@ karma@1.3.0: qjobs "^1.1.4" range-parser "^1.2.0" rimraf "^2.3.3" - socket.io "1.4.7" + safe-buffer "^5.0.1" + socket.io "1.7.2" source-map "^0.5.3" tmp "0.0.28" - useragent "^2.1.9" + useragent "^2.1.10" kind-of@^3.0.2: version "3.1.0" @@ -1821,7 +1819,7 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -loader-runner@^2.2.0: +loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" @@ -1885,7 +1883,7 @@ lodash@^3.10.1, lodash@^3.3.1, lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0: +lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -1989,22 +1987,12 @@ miller-rabin@^4.0.0: version "1.26.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" -mime-db@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz#3d0c63180f458eb10d325aaa37d7c58ae312e9d7" - mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7: version "2.1.14" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" dependencies: mime-db "~1.26.0" -mime-types@~2.0.4: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz#310e159db23e077f8bb22b748dabfa4957140aa6" - dependencies: - mime-db "~1.12.0" - mime@1.3.4, mime@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" @@ -2033,9 +2021,9 @@ mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdi dependencies: minimist "0.0.8" -mocha@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.1.2.tgz#51f93b432bf7e1b175ffc22883ccd0be32dba6b5" +mocha@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.2.0.tgz#7dc4f45e5088075171a68896814e6ae9eb7a85e3" dependencies: browser-stdout "1.3.0" commander "2.9.0" @@ -2073,10 +2061,6 @@ native-promise-only@^0.8.0-a: version "0.8.1" resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" -negotiator@0.4.9: - version "0.4.9" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.4.9.tgz#92e46b6db53c7e421ed64a2bc94f08be7630df3f" - negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -2165,6 +2149,10 @@ oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2291,21 +2279,21 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parsejson@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.1.tgz#9b10c6c0d825ab589e685153826de0a3ba278bcc" +parsejson@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" dependencies: better-assert "~1.0.0" -parseqs@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.2.tgz#9dfe70b2cddac388bde4f35b1f240fa58adbe6c7" +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.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.4.tgz#806582a39887e1ea18dd5e2fe0e01902268e9350" +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" @@ -2620,9 +2608,9 @@ requires-port@1.0.x, requires-port@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +resolve@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" restore-cursor@^1.0.1: version "1.0.1" @@ -2667,6 +2655,10 @@ rx@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" +safe-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -2767,59 +2759,49 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -socket.io-adapter@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.4.0.tgz#fb9f82ab1aa65290bf72c3657955b930a991a24f" +socket.io-adapter@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" dependencies: - debug "2.2.0" - socket.io-parser "2.2.2" + debug "2.3.3" + socket.io-parser "2.3.1" -socket.io-client@1.4.6: - version "1.4.6" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.4.6.tgz#49b0ba537efd15b8297c84016e642e1c7c752c3d" +socket.io-client@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644" dependencies: backo2 "1.0.2" component-bind "1.0.0" - component-emitter "1.2.0" - debug "2.2.0" - engine.io-client "1.6.9" + component-emitter "1.2.1" + debug "2.3.3" + engine.io-client "1.8.2" has-binary "0.1.7" indexof "0.0.1" object-component "0.0.3" - parseuri "0.0.4" - socket.io-parser "2.2.6" + parseuri "0.0.5" + socket.io-parser "2.3.1" to-array "0.1.4" -socket.io-parser@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.2.tgz#3d7af6b64497e956b7d9fe775f999716027f9417" - dependencies: - benchmark "1.0.0" - component-emitter "1.1.2" - debug "0.7.4" - isarray "0.0.1" - json3 "3.2.6" - -socket.io-parser@2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.6.tgz#38dfd61df50dcf8ab1d9e2091322bf902ba28b99" +socket.io-parser@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" dependencies: - benchmark "1.0.0" component-emitter "1.1.2" debug "2.2.0" isarray "0.0.1" json3 "3.3.2" -socket.io@1.4.7: - version "1.4.7" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.4.7.tgz#92b7f7cb88c5797d4daee279fe8075dbe6d3fa1c" +socket.io@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71" dependencies: - debug "2.2.0" - engine.io "1.6.10" + debug "2.3.3" + engine.io "1.8.2" has-binary "0.1.7" - socket.io-adapter "0.4.0" - socket.io-client "1.4.6" - socket.io-parser "2.2.6" + object-assign "4.1.0" + socket.io-adapter "0.5.0" + socket.io-client "1.7.2" + socket.io-parser "2.3.1" sockjs-client@1.1.1: version "1.1.1" @@ -3164,16 +3146,12 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -useragent@^2.1.9: +useragent@^2.1.10: version "2.1.11" resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.11.tgz#6a026e6a6c619b46ca7a0b2fdef6c1ac3da8ca29" dependencies: lru-cache "2.2.x" -utf8@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.0.tgz#0cfec5c8052d44a23e3aaa908104e8075f95dfd5" - util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -3277,14 +3255,16 @@ webpack-dev-middleware@^1.9.0: path-is-absolute "^1.0.0" range-parser "^1.0.3" -webpack-dev-server@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.2.0.tgz#364967eccaf8ff1d7e1681b7a8cc24fab4ced8a6" +webpack-dev-server@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101" dependencies: + ansi-html "0.0.7" chokidar "^1.6.0" compression "^1.5.2" connect-history-api-fallback "^1.3.0" express "^4.13.3" + html-entities "^1.2.0" http-proxy-middleware "~0.17.1" opn "4.0.2" portfinder "^1.0.9" @@ -3297,15 +3277,21 @@ webpack-dev-server@2.2.0: webpack-dev-middleware "^1.9.0" yargs "^6.0.0" -webpack-hot-middleware@2.15.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.15.0.tgz#71995af7c0025f109df482f86f1e10379526d026" +webpack-hot-middleware@^2.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.16.1.tgz#ae209bcab2b9b672f1b0fdcf6c5c2a680ff118e1" dependencies: ansi-html "0.0.6" html-entities "^1.2.0" querystring "^0.2.0" strip-ansi "^3.0.0" +webpack-merge@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c" + dependencies: + lodash "^4.17.4" + webpack-sources@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd" @@ -3313,9 +3299,9 @@ webpack-sources@^0.1.4: source-list-map "~0.1.7" source-map "~0.5.3" -webpack@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.0.tgz#09246336b5581c9002353f75bcadb598a648f977" +webpack@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475" dependencies: acorn "^4.0.4" acorn-dynamic-import "^2.0.0" @@ -3325,7 +3311,7 @@ webpack@2.2.0: enhanced-resolve "^3.0.0" interpret "^1.0.0" json-loader "^0.5.4" - loader-runner "^2.2.0" + loader-runner "^2.3.0" loader-utils "^0.2.16" memory-fs "~0.4.1" mkdirp "~0.5.0" @@ -3381,16 +3367,20 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -ws@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.0.1.tgz#7d0b2a2e58cddd819039c29c9de65045e1b310e9" +ws@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018" dependencies: options ">=0.0.5" ultron "1.0.x" -xmlhttprequest-ssl@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz#3b7741fea4a86675976e908d296d4445961faa67" +wtf-8@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + +xmlhttprequest-ssl@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" @@ -3437,9 +3427,9 @@ yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" -yeoman-environment@1.6.5: - version "1.6.5" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-1.6.5.tgz#0db07ab315adecb6e5e3b55ad9ab2063b71a08e1" +yeoman-environment@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-1.6.6.tgz#cd85fa67d156060e440d7807d7ef7cf0d2d1d671" dependencies: chalk "^1.0.0" debug "^2.0.0"