diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index dd08fe537..e888b3d46 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -31,9 +31,7 @@ * [Karma](./packages/karma/README.md) * [Mocha](./packages/mocha/README.md) * [Jest](./packages/jest/README.md) - * [babel-minify](./packages/babel-minify/README.md) * [banner](./packages/banner/README.md) - * [chunk](./packages/chunk/README.md) * [clean](./packages/clean/README.md) * [compile-loader](./packages/compile-loader/README.md) * [copy](./packages/copy/README.md) diff --git a/docs/packages/babel-minify/README.md b/docs/packages/babel-minify/README.md deleted file mode 100644 index ff0a1a086..000000000 --- a/docs/packages/babel-minify/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Neutrino Babel Minify Middleware - -`@neutrinojs/babel-minify` is Neutrino middleware for minifying source code using -[`BabelMinifyWebpackPlugin`](https://www.npmjs.com/package/babel-minify-webpack-plugin). This middleware is usually only -added during production builds. - -[![NPM version][npm-image]][npm-url] -[![NPM downloads][npm-downloads]][npm-url] -[![Join the Neutrino community on Spectrum][spectrum-image]][spectrum-url] - -## Requirements - -- Node.js v8+ -- Yarn v1.2.1+, or npm v5.4+ -- Neutrino v8 - -## Installation - -`@neutrinojs/babel-minify` can be installed via the Yarn or npm clients. - -#### Yarn - -```bash -❯ yarn add @neutrinojs/babel-minify -``` - -#### npm - -```bash -❯ npm install --save @neutrinojs/babel-minify -``` - -## Usage - -`@neutrinojs/babel-minify` can be consumed from the Neutrino API, middleware, or presets. Require this package -and plug it into Neutrino: - -```js -// Using function middleware format -const minify = require('@neutrinojs/babel-minify'); - -// Use with default options -neutrino.use(minify); - -// Usage showing overriding minification options -neutrino.use(minify, { - minify: {}, - plugin: {} -}); -``` - -```js -// Using object or array middleware format - -// Use with default options -module.exports = { - use: ['@neutrinojs/babel-minify'] -}; - -// Usage showing overriding minification options -module.exports = { - use: [ - ['@neutrinojs/babel-minify', { - minify: {}, - plugin: {} - }] - ] -}; -``` - -The `minify` and `plugin` properties map to the options defined by -[babel-minify-webpack-plugin](https://github.com/webpack-contrib/babel-minify-webpack-plugin#options). - -## Customization - -`@neutrinojs/babel-minify` creates some conventions to make overriding the configuration easier once you are ready to -make changes. - -### Plugins - -The following is a list of plugins and their identifiers which can be overridden: - -| Name | Description | Environments and Commands | -| --- | --- | --- | -| `babel-minify` | Minifies source code using `BabelMinifyWebpackPlugin`. | all | - -## Contributing - -This middleware is part of the [neutrino-dev](https://github.com/mozilla-neutrino/neutrino-dev) repository, a monorepo -containing all resources for developing Neutrino and its core presets and middleware. Follow the -[contributing guide](https://neutrino.js.org/contributing) for details. - -[npm-image]: https://img.shields.io/npm/v/@neutrinojs/babel-minify.svg -[npm-downloads]: https://img.shields.io/npm/dt/@neutrinojs/babel-minify.svg -[npm-url]: https://npmjs.org/package/@neutrinojs/babel-minify -[spectrum-image]: https://withspectrum.github.io/badge/badge.svg -[spectrum-url]: https://spectrum.chat/neutrino diff --git a/docs/packages/chunk/README.md b/docs/packages/chunk/README.md deleted file mode 100644 index 76afb1fbe..000000000 --- a/docs/packages/chunk/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# Neutrino Chunk Middleware - -`@neutrinojs/chunk` is Neutrino middleware for optimizing webpack bundles via `CommonsChunkPlugin`. - -[![NPM version][npm-image]][npm-url] -[![NPM downloads][npm-downloads]][npm-url] -[![Join the Neutrino community on Spectrum][spectrum-image]][spectrum-url] - -## Requirements - -- Node.js v8+ -- Yarn v1.2.1+, or npm v5.4+ -- Neutrino v8 - -## Installation - -`@neutrinojs/chunk` can be installed via the Yarn or npm clients. - -#### Yarn - -```bash -❯ yarn add @neutrinojs/chunk -``` - -#### npm - -```bash -❯ npm install --save @neutrinojs/chunk -``` - -## Usage - -`@neutrinojs/chunk` can be consumed from the Neutrino API, middleware, or presets. Require this package -and plug it into Neutrino: - -```js -// Using function middleware format -const chunk = require('@neutrinojs/chunk'); - -neutrino.use(chunk); -``` - -```js -// Using object or array middleware format - -module.exports = { - use: ['@neutrinojs/chunk'] -}; -``` - -## Customization - -`@neutrinojs/chunk` creates some conventions to make overriding the configuration easier once you are ready to -make changes. - -### Plugins - -The following is a list of plugins and their identifiers which can be overridden: - -| Name | Description | Environments and Commands | -| --- | --- | --- | -| `named-modules` | Enables named modules for improved debugging and console output. | all | -| `named-chunks` | Enables named chunks for improved debugging and console output. | all | -| `vendor-chunk` | Creates a separate file/chunk consisting of common modules shared between multiple entry points. | all | -| `runtime-chunk` | Creates a separate file/chunk consisting of the webpack manifest-specific code. | all | -| `name-all` | Names all remaining modules that do not get named via `named-modules`. | all | - -## Contributing - -This middleware is part of the [neutrino-dev](https://github.com/mozilla-neutrino/neutrino-dev) repository, a monorepo -containing all resources for developing Neutrino and its core presets and middleware. Follow the -[contributing guide](https://neutrino.js.org/contributing) for details. - -[npm-image]: https://img.shields.io/npm/v/@neutrinojs/chunk.svg -[npm-downloads]: https://img.shields.io/npm/dt/@neutrinojs/chunk.svg -[npm-url]: https://npmjs.org/package/@neutrinojs/chunk -[spectrum-image]: https://withspectrum.github.io/badge/badge.svg -[spectrum-url]: https://spectrum.chat/neutrino diff --git a/docs/packages/library/README.md b/docs/packages/library/README.md index 2d1882694..1e6380bac 100644 --- a/docs/packages/library/README.md +++ b/docs/packages/library/README.md @@ -456,8 +456,6 @@ _Note: Some plugins are only available in certain environments. To override them | --- | --- | --- | | `banner` | Injects source-map-support into the main entry points of your application if detected in `dependencies` or `devDependencies` of your package.json. | Only when `source-map-support` is installed | | `clean` | Clears the contents of `build` prior to creating a production bundle. | `build` command | -| `babel-minify` | Minifies source code using `BabelMinifyWebpackPlugin`. From `@neutrinojs/babel-minify`. | `NODE_ENV production` | -| `module-concat` | Concatenate the scope of all your modules into one closure and allow for your code to have a faster execution time in the browser. | `NODE_ENV production` | ### Override configuration diff --git a/docs/packages/node/README.md b/docs/packages/node/README.md index 2fcf3f02d..db78c4b0a 100644 --- a/docs/packages/node/README.md +++ b/docs/packages/node/README.md @@ -336,7 +336,6 @@ _Note: Some plugins are only available in certain environments. To override them | `start-server` | Start a Node.js for the first configured main entry point. | `start` command | | `hot` | Enables Hot Module Replacement. | `start` command | | `named-modules` | Enables named modules for improved debugging and console output. From `@neutrinojs/hot`. | `start` command | -| `module-concat` | Concatenate the scope of all your modules into one closure and allow for your code to have a faster execution time in the browser. | `NODE_ENV production` | ### Override configuration diff --git a/docs/packages/preact/README.md b/docs/packages/preact/README.md index f079eea30..3f114dbf9 100644 --- a/docs/packages/preact/README.md +++ b/docs/packages/preact/README.md @@ -22,7 +22,7 @@ - Pre-configured to support CSS Modules via `*.module.css` file extensions - Hot Module Replacement support including CSS - Tree-shaking to create smaller bundles - - Production-optimized bundles with Babel minification, easy chunking, and scope-hoisted modules for faster execution + - Production-optimized bundles with minification, easy chunking, and scope-hoisted modules for faster execution - Easily extensible to customize your project as needed ## Requirements @@ -254,10 +254,10 @@ array. You can also make these changes from the Neutrino API in custom middlewar #### Vendoring -By defining an entry point named `vendor` you can split out external dependencies into a chunk separate -from your application code. +External dependencies are automatically split into separate chunks from the application code, +by the new webpack [SplitChunksPlugin](https://webpack.js.org/plugins/split-chunks-plugin/). -_Example: Put Preact into a separate "vendor" chunk:_ +_Example: The splitChunks settings can be adjusted like so:_ ```js module.exports = { @@ -265,8 +265,13 @@ module.exports = { '@neutrinojs/preact', (neutrino) => { neutrino.config - .entry('vendor') - .add('preact'); + .optimization + .merge({ + splitChunks: { + // Decrease the minimum size before extra chunks are created, to 10KB + minSize: 10000 + } + }); } ] }; diff --git a/docs/packages/react-components/README.md b/docs/packages/react-components/README.md index bedbede4d..b76f0e8cb 100644 --- a/docs/packages/react-components/README.md +++ b/docs/packages/react-components/README.md @@ -23,7 +23,7 @@ other Neutrino middleware, so you can build, test, and publish multiple React co - Pre-configured to support CSS Modules via `*.module.css` file extensions - Hot Module Replacement support including CSS - Tree-shaking to create smaller bundles - - Production-optimized bundles with Babel minification, easy chunking, and scope-hoisted modules for faster execution + - Production-optimized bundles with minification, easy chunking, and scope-hoisted modules for faster execution - Easily extensible to customize your project as needed **Important! This preset does not include babel-polyfill for size reasons. If you need diff --git a/docs/packages/react/README.md b/docs/packages/react/README.md index 2263aa686..0204136d4 100644 --- a/docs/packages/react/README.md +++ b/docs/packages/react/README.md @@ -22,7 +22,7 @@ - Pre-configured to support CSS Modules via `*.module.css` file extensions - Hot Module Replacement support including CSS - Tree-shaking to create smaller bundles - - Production-optimized bundles with Babel minification, easy chunking, and scope-hoisted modules for faster execution + - Production-optimized bundles with minification, easy chunking, and scope-hoisted modules for faster execution - Easily extensible to customize your project as needed ## Requirements @@ -266,19 +266,25 @@ module.exports = { #### Vendoring -By defining an entry point named `vendor` you can split out external dependencies into a chunk separate -from your application code. +External dependencies are automatically split into separate chunks from the application code, +by the new webpack [SplitChunksPlugin](https://webpack.js.org/plugins/split-chunks-plugin/). -_Example: Put React and React DOM into a separate "vendor" chunk:_ +_Example: The splitChunks settings can be adjusted like so:_ ```js module.exports = { use: [ '@neutrinojs/react', - (neutrino) => neutrino.config - .entry('vendor') - .add('react') - .add('react-dom') + (neutrino) => { + neutrino.config + .optimization + .merge({ + splitChunks: { + // Decrease the minimum size before extra chunks are created, to 10KB + minSize: 10000 + } + }); + } ] }; ``` diff --git a/docs/packages/style-loader/README.md b/docs/packages/style-loader/README.md index 98075159f..8742a2b95 100644 --- a/docs/packages/style-loader/README.md +++ b/docs/packages/style-loader/README.md @@ -57,15 +57,15 @@ neutrino.use(styles, { ruleId: 'style', styleUseId: 'style', cssUseId: 'css', - hotUseId: 'hot', - hot: true, modules: true, modulesSuffix: '-modules', modulesTest: /\.module.css$/, extractId: 'extract', extract: { plugin: {}, - loader: {} + loader: { + filename: neutrino.options.command === 'build' ? '[name].[contenthash].css' : '[name].css' + } } }); ``` @@ -89,15 +89,15 @@ module.exports = { ruleId: 'style', styleUseId: 'style', cssUseId: 'css', - hotUseId: 'hot', - hot: true, modules: true, modulesSuffix: '-modules', modulesTest: /\.module.css$/, extractId: 'extract', extract: { plugin: {}, - loader: {} + loader: { + filename: neutrino.options.command === 'build' ? '[name].[contenthash].css' : '[name].css' + } } }] ] @@ -111,8 +111,6 @@ module.exports = { - `ruleId`: The ID of the webpack-chain rule used to identify the stylesheet loaders - `styleUseId`: The ID of the webpack-chain `use` used to identify the style-loader - `cssUseId`: The ID of the webpack-chain `use` used to identify the css-loader -- `hotUseId`: The ID of the webpack-chain `use` used to identify the css-hot-loader -- `hot`: Enable usage of CSS Hot Module Replacement. Set to `false` to disable. - `modules`: Enable usage of CSS modules via `*.module.css` files. Set to `false` to disable and skip defining these rules. - `modulesSuffix`: A suffix added to `ruleId`, `styleUseId`, `cssUseId`, `hotUseId`, and `extractId` to derive names for modules-related rules. For example, the default `-modules` suffix will generate a rule ID for the CSS modules rules of @@ -234,8 +232,8 @@ The following is a list of default rules and their identifiers which can be over | Name | Description | Environments and Commands | | --- | --- | --- | -| `style` | Allows importing CSS stylesheets from modules. Contains two loaders named `style` and `css` which use `style-loader` and `css-loader`, respectively. | all | -| `style-modules` | Allows importing CSS Modules styles from modules. Contains two loaders named `style-modules` and `css-modules` which use `style-loader` and `css-loader`, respectively. | all | +| `style` | Allows importing CSS stylesheets from modules. By default contains two loaders named `extract` and `css` which use `MiniCssExtractPlugin.loader` and `css-loader`, respectively. If `options.extract` is `false`, then the `extract` loader is replaced by `style`, which uses `style-loader`. | all | +| `style-modules` | Allows importing CSS Modules styles from modules. By default contains two loaders named `extract` and `css` which use `MiniCssExtractPlugin.loader` and `css-loader`, respectively. If `options.extract` is `false`, then the `extract` loader is replaced by `style`, which uses `style-loader`. | all | ### Plugins @@ -246,7 +244,6 @@ _Note: Some plugins may be only available in certain environments. To override t | Name | Description | Environments and Commands | | --- | --- | --- | | `extract` | Extracts CSS from JS bundle into a separate stylesheet file. | all | -| `extract-modules` | Extracts CSS from JS bundle into a separate stylesheet file. | all | ## Contributing diff --git a/docs/packages/vue/README.md b/docs/packages/vue/README.md index 6b09b7f49..43346dbf7 100644 --- a/docs/packages/vue/README.md +++ b/docs/packages/vue/README.md @@ -17,7 +17,7 @@ - Pre-configured to support CSS Modules via `*.module.css` file extensions - Hot Module Replacement support including CSS - Tree-shaking to create smaller bundles - - Production-optimized bundles with Babel minification, easy chunking, and scope-hoisted modules for faster execution + - Production-optimized bundles with minification, easy chunking, and scope-hoisted modules for faster execution - Easily extensible to customize your project as needed ## Requirements @@ -291,10 +291,10 @@ array. You can also make these changes from the Neutrino API in custom middlewar #### Vendoring -By defining an entry point named `vendor` you can split out external dependencies into a chunk separate -from your application code. +External dependencies are automatically split into separate chunks from the application code, +by the new webpack [SplitChunksPlugin](https://webpack.js.org/plugins/split-chunks-plugin/). -_Example: Put Vue into a separate "vendor" chunk:_ +_Example: The splitChunks settings can be adjusted like so:_ ```js module.exports = { @@ -302,8 +302,13 @@ module.exports = { '@neutrinojs/vue', (neutrino) => { neutrino.config - .entry('vendor') - .add('vue'); + .optimization + .merge({ + splitChunks: { + // Decrease the minimum size before extra chunks are created, to 10KB + minSize: 10000 + } + }); } ] }; diff --git a/docs/packages/web/README.md b/docs/packages/web/README.md index 598d0d94a..1bd4270d1 100644 --- a/docs/packages/web/README.md +++ b/docs/packages/web/README.md @@ -17,7 +17,7 @@ - Pre-configured to support CSS Modules via `*.module.css` file extensions - Hot Module Replacement support including CSS - Tree-shaking to create smaller bundles -- Production-optimized bundles with Babel minification, easy chunking, and scope-hoisted modules for faster execution +- Production-optimized bundles with minification, easy chunking, and scope-hoisted modules for faster execution - Easily extensible to customize your project as needed ## Requirements @@ -209,8 +209,9 @@ module.exports = { image: {}, minify: { - // Change options for @neutrinojs/babel-minify - babel: {}, + // Javascript minification occurs only in production by default. + // To change uglify-es options or switch to another minifier, see below. + source: process.env.NODE_ENV === 'production', // Change options for @neutrinojs/style-minify style: {} }, @@ -272,12 +273,9 @@ module.exports = { font: false, manifest: false, - // Example: Remove console and debugger from output + // Disable javascript minification entirely minify: { - babel: { - removeConsole: true, - removeDebugger: true, - } + source: false }, // Example: Use a .browserslistrc file with babel-env @@ -412,8 +410,8 @@ The following is a list of rules and their identifiers which can be overridden: | --- | --- | --- | | `compile` | Compiles JS files from the `src` directory using Babel. Contains a single loader named `babel`. From `@neutrinojs/compile-loader`. | all | | `html` | Allows importing HTML files from modules. Contains a single loader named `html`. From `@neutrinojs/html-loader`. | all | -| `style` | Allows importing CSS stylesheets from modules. Contains two loaders named `style` and `css` which use `style-loader` and `css-loader`, respectively. From `@neutrinojs/style-loader`. | all | -| `style-modules` | Allows importing CSS Modules styles from modules. Contains two loaders named `style-modules` and `css-modules` which use `style-loader` and `css-loader`, respectively. From `@neutrinojs/style-loader`. | all | +| `style` | Allows importing CSS stylesheets from modules. In production contains two loaders named `extract` and `css` which use `MiniCssExtractPlugin.loader` and `css-loader`, respectively. In development the `extract` loader is replaced by `style`, which uses `style-loader`. From `@neutrinojs/style-loader`. | all | +| `style-modules` | Allows importing CSS Modules styles from modules. In production contains two loaders named `extract` and `css` which use `MiniCssExtractPlugin.loader` and `css-loader`, respectively. In development the `extract` loader is replaced by `style`, which uses `style-loader`. From `@neutrinojs/style-loader`. | all | | `img`, `svg`, `ico` | Allows import image files from modules. Each contains a single loader named `url`. From `@neutrinojs/image-loader`. | all | | `woff`, `ttf` | Allows importing WOFF and TTF font files from modules. Each contains a single loader named `url`. From `@neutrinojs/font-loader`. | all | | `eot` | Allows importing EOT font files from modules. Contains a single loader named `file`. From `@neutrinojs/font-loader`. | all | @@ -429,18 +427,11 @@ _Note: Some plugins are only available in certain environments. To override them | --- | --- | --- | | `env` | Inject environment variables into source code at `process.env`, defaults to only inject `NODE_ENV`. From `@neutrinojs/env`. | all | | `extract` | Extracts CSS from JS bundle into a separate stylesheet file. From `@neutrinojs/style-loader`. | all | -| `extract-modules` | Extracts CSS from JS bundle into a separate stylesheet file. From `@neutrinojs/style-loader`. | all | +| `html-sibling-chunks` | Works around `html-webpack-plugin` not supporting `splitChunks` when using multiple entrypoints, via `html-webpack-include-sibling-chunks-plugin`. | all | | `html-{MAIN_NAME}` | Automatically generates HTML files for configured entry points. `{MAIN_NAME}` corresponds to the entry point of each page. By default, there is only a single `index` main, so this would generate a plugin named `html-index`. From `@neutrinojs/html-template` | all | -| `named-modules` | Enables named modules for improved debugging and console output. From `@neutrinojs/chunk` and `@neutrinojs/hot`. | `NODE_ENV production`, `start` command | -| `named-chunks` | Enables named chunks for improved debugging and console output. From `@neutrinojs/chunk`. | `NODE_ENV production` | -| `vendor-chunk` | Creates a separate file/chunk consisting of common modules shared between multiple entry points. From `@neutrinojs/chunk`. | `NODE_ENV production` | -| `runtime-chunk` | Creates a separate file/chunk consisting of the webpack manifest-specific code. From `@neutrinojs/chunk`. | `NODE_ENV production` | -| `name-all` | Names all remaining modules that do not get named via `named-modules`. From `@neutrinojs/chunk`. | `NODE_ENV production` | | `hot` | Enables Hot Module Replacement. From `@neutrinojs/hot`. | `start` command | | `clean` | Removes the `build` directory prior to building. From `@neutrinojs/clean`. | `build` command | -| `babel-minify` | Minifies source code using `BabelMinifyWebpackPlugin`. From `@neutrinojs/babel-minify`. | `NODE_ENV production` | | `optimize-css` | Minifies css using `OptimizeCssAssetsPlugin`. From `@neutrinojs/style-minify`. | `NODE_ENV production` | -| `module-concat` | Concatenate the scope of all your modules into one closure and allow for your code to have a faster execution time in the browser. | `NODE_ENV production` | | `manifest` | Create a manifest file, via webpack-manifest-plugin. | `build` command | ### Override configuration @@ -451,19 +442,63 @@ make these changes from the Neutrino API in custom middleware. #### Vendoring -By defining an entry point named `vendor` you can split out external dependencies into a chunk separate -from your application code. +External dependencies are automatically split into separate chunks from the application code, +by the new webpack [SplitChunksPlugin](https://webpack.js.org/plugins/split-chunks-plugin/). + +_Example: The splitChunks settings can be adjusted like so:_ + +```js +module.exports = { + use: [ + '@neutrinojs/web', + (neutrino) => { + neutrino.config + .optimization + .merge({ + splitChunks: { + // Decrease the minimum size before extra chunks are created, to 10KB + minSize: 10000 + } + }); + } + ] +}; +``` + +#### Source minification + +By default script sources are minified in production only, and using webpack's default of +[uglifyjs-webpack-plugin](https://github.com/webpack-contrib/uglifyjs-webpack-plugin) +(which internally uses `uglify-es`). To customise the options passed to `UglifyJsPlugin` +or even use a different minifier, override `optimization.minimizer`. -_Example: Put lodash into a separate "vendor" chunk:_ +Note: If switching to [babel-minify-webpack-plugin](https://github.com/webpack-contrib/babel-minify-webpack-plugin) +ensure that sourcemaps are disabled in production to avoid [this bug](https://github.com/webpack-contrib/babel-minify-webpack-plugin/issues/68). + +_Example: Use different options with `uglify-es`:_ ```js +const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); + module.exports = { use: [ '@neutrinojs/web', - neutrino => { + (neutrino) => { neutrino.config - .entry('vendor') - .add('lodash'); + .optimization + .minimizer([ + // Based on: + // https://github.com/webpack/webpack/blob/v4.6.0/lib/WebpackOptionsDefaulter.js#L277-L285 + new UglifyJsPlugin({ + cache: true, + parallel: true, + sourceMap: neutrino.config.devtool && /source-?map/.test(neutrino.config.devtool), + uglifyOptions: { + // Custom uglify-es options here. See: + // https://github.com/mishoo/UglifyJS2/tree/harmony#minify-options + } + }) + ]); } ] }; diff --git a/docs/webpack-chain.md b/docs/webpack-chain.md index 5bb572475..b2cc519ae 100644 --- a/docs/webpack-chain.md +++ b/docs/webpack-chain.md @@ -1,7 +1,7 @@ # webpack-chain: Neutrino configuration API Use a chaining API to generate and simplify the modification of -webpack 2 and 3 configurations. +webpack configurations. This documentation corresponds to v4 of webpack-chain, which Neutrino utilizes. @@ -302,6 +302,7 @@ neutrino.config .context(context) .externals(externals) .loader(loader) + .mode(mode) .parallelism(parallelism) .profile(profile) .recordsPath(recordsPath) @@ -528,6 +529,32 @@ neutrino.config.performance .assetFilter(assetFilter) ``` +#### Configuring optimizations: shorthand methods + +```js +neutrino.config.optimization : ChainedMap + +neutrino.config.optimization + .concatenateModules(concatenateModules) + .flagIncludedChunks(flagIncludedChunks) + .mergeDuplicateChunks(mergeDuplicateChunks) + .minimize(minimize) + .minimizer(minimizer) + .namedChunks(namedChunks) + .namedModules(namedModules) + .nodeEnv(nodeEnv) + .noEmitOnErrors(noEmitOnErrors) + .occurrenceOrder(occurrenceOrder) + .portableRecords(portableRecords) + .providedExports(providedExports) + .removeAvailableModules(removeAvailableModules) + .removeEmptyChunks(removeEmptyChunks) + .runtimeChunk(runtimeChunk) + .sideEffects(sideEffects) + .splitChunks(splitChunks) + .usedExports(usedExports) +``` + #### Config plugins ```js @@ -888,10 +915,12 @@ neutrino.config.merge({ amd, bail, cache, - devtool, context, + devtool, externals, loader, + mode, + parallelism, profile, recordsPath, recordsInputPath, @@ -943,6 +972,27 @@ neutrino.config.merge({ [key]: value }, + optimizations: { + concatenateModules, + flagIncludedChunks, + mergeDuplicateChunks, + minimize, + minimizer, + namedChunks, + namedModules, + nodeEnv, + noEmitOnErrors, + occurrenceOrder, + portableRecords, + providedExports, + removeAvailableModules, + removeEmptyChunks, + runtimeChunk, + sideEffects, + splitChunks, + usedExports, + }, + performance: { [key]: value, diff --git a/packages/babel-minify/.npmignore b/packages/babel-minify/.npmignore deleted file mode 100644 index 193378602..000000000 --- a/packages/babel-minify/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/test/ diff --git a/packages/babel-minify/README.md b/packages/babel-minify/README.md deleted file mode 100644 index ff0a1a086..000000000 --- a/packages/babel-minify/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Neutrino Babel Minify Middleware - -`@neutrinojs/babel-minify` is Neutrino middleware for minifying source code using -[`BabelMinifyWebpackPlugin`](https://www.npmjs.com/package/babel-minify-webpack-plugin). This middleware is usually only -added during production builds. - -[![NPM version][npm-image]][npm-url] -[![NPM downloads][npm-downloads]][npm-url] -[![Join the Neutrino community on Spectrum][spectrum-image]][spectrum-url] - -## Requirements - -- Node.js v8+ -- Yarn v1.2.1+, or npm v5.4+ -- Neutrino v8 - -## Installation - -`@neutrinojs/babel-minify` can be installed via the Yarn or npm clients. - -#### Yarn - -```bash -❯ yarn add @neutrinojs/babel-minify -``` - -#### npm - -```bash -❯ npm install --save @neutrinojs/babel-minify -``` - -## Usage - -`@neutrinojs/babel-minify` can be consumed from the Neutrino API, middleware, or presets. Require this package -and plug it into Neutrino: - -```js -// Using function middleware format -const minify = require('@neutrinojs/babel-minify'); - -// Use with default options -neutrino.use(minify); - -// Usage showing overriding minification options -neutrino.use(minify, { - minify: {}, - plugin: {} -}); -``` - -```js -// Using object or array middleware format - -// Use with default options -module.exports = { - use: ['@neutrinojs/babel-minify'] -}; - -// Usage showing overriding minification options -module.exports = { - use: [ - ['@neutrinojs/babel-minify', { - minify: {}, - plugin: {} - }] - ] -}; -``` - -The `minify` and `plugin` properties map to the options defined by -[babel-minify-webpack-plugin](https://github.com/webpack-contrib/babel-minify-webpack-plugin#options). - -## Customization - -`@neutrinojs/babel-minify` creates some conventions to make overriding the configuration easier once you are ready to -make changes. - -### Plugins - -The following is a list of plugins and their identifiers which can be overridden: - -| Name | Description | Environments and Commands | -| --- | --- | --- | -| `babel-minify` | Minifies source code using `BabelMinifyWebpackPlugin`. | all | - -## Contributing - -This middleware is part of the [neutrino-dev](https://github.com/mozilla-neutrino/neutrino-dev) repository, a monorepo -containing all resources for developing Neutrino and its core presets and middleware. Follow the -[contributing guide](https://neutrino.js.org/contributing) for details. - -[npm-image]: https://img.shields.io/npm/v/@neutrinojs/babel-minify.svg -[npm-downloads]: https://img.shields.io/npm/dt/@neutrinojs/babel-minify.svg -[npm-url]: https://npmjs.org/package/@neutrinojs/babel-minify -[spectrum-image]: https://withspectrum.github.io/badge/badge.svg -[spectrum-url]: https://spectrum.chat/neutrino diff --git a/packages/babel-minify/index.js b/packages/babel-minify/index.js deleted file mode 100644 index a2e701968..000000000 --- a/packages/babel-minify/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const BabelMinifyPlugin = require('@neutrinojs/babel-minify-webpack-plugin'); - -module.exports = ({ config }, options = {}) => config - .plugin('babel-minify') - .use(BabelMinifyPlugin, [options.minify, options.plugin]); diff --git a/packages/babel-minify/package.json b/packages/babel-minify/package.json deleted file mode 100644 index f5fad3c18..000000000 --- a/packages/babel-minify/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "@neutrinojs/babel-minify", - "version": "8.2.0", - "description": "Neutrino middleware for minifying source code", - "main": "index.js", - "keywords": [ - "neutrino", - "neutrino-middleware", - "minify", - "babel", - "uglify", - "babili", - "compress" - ], - "author": "Eli Perelman ", - "license": "MPL-2.0", - "repository": "https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/babel-minify", - "homepage": "https://neutrino.js.org", - "bugs": "https://github.com/mozilla-neutrino/neutrino-dev/issues", - "publishConfig": { - "access": "public" - }, - "engines": { - "node": ">=8", - "npm": ">=5.4.0", - "yarn": ">=1.2.1" - }, - "dependencies": { - "@neutrinojs/babel-minify-webpack-plugin": "^0.2.0" - }, - "devDependencies": { - "webpack": "^3.10.0" - }, - "peerDependencies": { - "neutrino": "^8.0.0" - } -} diff --git a/packages/babel-minify/test/middleware_test.js b/packages/babel-minify/test/middleware_test.js deleted file mode 100644 index 69f0f8e54..000000000 --- a/packages/babel-minify/test/middleware_test.js +++ /dev/null @@ -1,33 +0,0 @@ -import test from 'ava'; -import { Neutrino } from 'neutrino'; - -const mw = () => require('..'); -const options = { overrides: { test: /\.js$/ }, minify: { removeConsole: true } }; - -test('loads middleware', t => { - t.notThrows(mw); -}); - -test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); -}); - -test('uses with options', t => { - t.notThrows(() => Neutrino().use(mw(), options)); -}); - -test('instantiates', t => { - const api = Neutrino(); - - api.use(mw()); - - t.notThrows(() => api.config.toConfig()); -}); - -test('instantiates with options', t => { - const api = Neutrino(); - - api.use(mw(), options); - - t.notThrows(() => api.config.toConfig()); -}); diff --git a/packages/banner/package.json b/packages/banner/package.json index fef47062f..fedf85e58 100644 --- a/packages/banner/package.json +++ b/packages/banner/package.json @@ -16,9 +16,6 @@ "publishConfig": { "access": "public" }, - "resolutions": { - "webpack-sources": "1.0.1" - }, "engines": { "node": ">=8", "npm": ">=5.4.0", @@ -26,8 +23,7 @@ }, "dependencies": { "deepmerge": "^1.5.2", - "webpack": "^3.10.0", - "webpack-sources": "1.0.1" + "webpack": "^4.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/chunk/.npmignore b/packages/chunk/.npmignore deleted file mode 100644 index 193378602..000000000 --- a/packages/chunk/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/test/ diff --git a/packages/chunk/README.md b/packages/chunk/README.md deleted file mode 100644 index 76afb1fbe..000000000 --- a/packages/chunk/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# Neutrino Chunk Middleware - -`@neutrinojs/chunk` is Neutrino middleware for optimizing webpack bundles via `CommonsChunkPlugin`. - -[![NPM version][npm-image]][npm-url] -[![NPM downloads][npm-downloads]][npm-url] -[![Join the Neutrino community on Spectrum][spectrum-image]][spectrum-url] - -## Requirements - -- Node.js v8+ -- Yarn v1.2.1+, or npm v5.4+ -- Neutrino v8 - -## Installation - -`@neutrinojs/chunk` can be installed via the Yarn or npm clients. - -#### Yarn - -```bash -❯ yarn add @neutrinojs/chunk -``` - -#### npm - -```bash -❯ npm install --save @neutrinojs/chunk -``` - -## Usage - -`@neutrinojs/chunk` can be consumed from the Neutrino API, middleware, or presets. Require this package -and plug it into Neutrino: - -```js -// Using function middleware format -const chunk = require('@neutrinojs/chunk'); - -neutrino.use(chunk); -``` - -```js -// Using object or array middleware format - -module.exports = { - use: ['@neutrinojs/chunk'] -}; -``` - -## Customization - -`@neutrinojs/chunk` creates some conventions to make overriding the configuration easier once you are ready to -make changes. - -### Plugins - -The following is a list of plugins and their identifiers which can be overridden: - -| Name | Description | Environments and Commands | -| --- | --- | --- | -| `named-modules` | Enables named modules for improved debugging and console output. | all | -| `named-chunks` | Enables named chunks for improved debugging and console output. | all | -| `vendor-chunk` | Creates a separate file/chunk consisting of common modules shared between multiple entry points. | all | -| `runtime-chunk` | Creates a separate file/chunk consisting of the webpack manifest-specific code. | all | -| `name-all` | Names all remaining modules that do not get named via `named-modules`. | all | - -## Contributing - -This middleware is part of the [neutrino-dev](https://github.com/mozilla-neutrino/neutrino-dev) repository, a monorepo -containing all resources for developing Neutrino and its core presets and middleware. Follow the -[contributing guide](https://neutrino.js.org/contributing) for details. - -[npm-image]: https://img.shields.io/npm/v/@neutrinojs/chunk.svg -[npm-downloads]: https://img.shields.io/npm/dt/@neutrinojs/chunk.svg -[npm-url]: https://npmjs.org/package/@neutrinojs/chunk -[spectrum-image]: https://withspectrum.github.io/badge/badge.svg -[spectrum-url]: https://spectrum.chat/neutrino diff --git a/packages/chunk/index.js b/packages/chunk/index.js deleted file mode 100644 index 0b0206b56..000000000 --- a/packages/chunk/index.js +++ /dev/null @@ -1,33 +0,0 @@ -const { optimize, NamedChunksPlugin, NamedModulesPlugin } = require('webpack'); -const NameAllModulesPlugin = require('name-all-modules-plugin'); -const { createHash } = require('crypto'); -const { relative } = require('path'); - -const hash = value => createHash('md5').update(value).digest('hex'); - -module.exports = ({ config }) => config - .plugin('named-modules') - .use(NamedModulesPlugin) - .end() - .plugin('named-chunks') - .use(NamedChunksPlugin, [ - chunk => ( - chunk.name || - hash(chunk.modules.map(({ context, request }) => relative(context || '', request || '')).join('_')) - ) - ]) - .end() - // When other middleware uses this chunk middleware, the names in use by default here - // need to be kept in sync with the additional values used there. - // Currently "vendor" and "runtime" as defined below. - .plugin('vendor-chunk') - .use(optimize.CommonsChunkPlugin, [{ - name: 'vendor', - minChunks: Infinity - }]) - .end() - .plugin('runtime-chunk') - .use(optimize.CommonsChunkPlugin, [{ name: 'runtime' }]) - .end() - .plugin('name-all') - .use(NameAllModulesPlugin); diff --git a/packages/chunk/package.json b/packages/chunk/package.json deleted file mode 100644 index 2caf153f6..000000000 --- a/packages/chunk/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "@neutrinojs/chunk", - "version": "8.2.0", - "description": "Neutrino middleware for chunking bundle assets", - "main": "index.js", - "keywords": [ - "neutrino", - "neutrino-middleware", - "chunk" - ], - "author": "Eli Perelman ", - "license": "MPL-2.0", - "repository": "https://github.com/mozilla-neutrino/neutrino-dev/tree/master/packages/chunk", - "homepage": "https://neutrino.js.org", - "bugs": "https://github.com/mozilla-neutrino/neutrino-dev/issues", - "publishConfig": { - "access": "public" - }, - "resolutions": { - "webpack-sources": "1.0.1" - }, - "engines": { - "node": ">=8", - "npm": ">=5.4.0", - "yarn": ">=1.2.1" - }, - "dependencies": { - "name-all-modules-plugin": "^1.0.1", - "webpack": "^3.10.0", - "webpack-sources": "1.0.1" - }, - "peerDependencies": { - "neutrino": "^8.0.0" - } -} diff --git a/packages/chunk/test/middleware_test.js b/packages/chunk/test/middleware_test.js deleted file mode 100644 index c5245b30f..000000000 --- a/packages/chunk/test/middleware_test.js +++ /dev/null @@ -1,20 +0,0 @@ -import test from 'ava'; -import { Neutrino } from 'neutrino'; - -const mw = () => require('..'); - -test('loads middleware', t => { - t.notThrows(mw); -}); - -test('uses middleware', t => { - t.notThrows(() => Neutrino().use(mw())); -}); - -test('instantiates', t => { - const api = Neutrino(); - - api.use(mw()); - - t.notThrows(() => api.config.toConfig()); -}); diff --git a/packages/compile-loader/package.json b/packages/compile-loader/package.json index 840c23338..ed82638d2 100644 --- a/packages/compile-loader/package.json +++ b/packages/compile-loader/package.json @@ -17,9 +17,6 @@ "publishConfig": { "access": "public" }, - "resolutions": { - "webpack-sources": "1.0.1" - }, "engines": { "node": ">=8", "npm": ">=5.4.0", @@ -30,7 +27,7 @@ "babel-loader": "^7.1.2", "babel-merge": "^1.1.0", "deepmerge": "^1.5.2", - "webpack": "^3.10.0" + "webpack": "^4.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/dev-server/package.json b/packages/dev-server/package.json index 652ac7aff..5bb1616b3 100644 --- a/packages/dev-server/package.json +++ b/packages/dev-server/package.json @@ -20,9 +20,6 @@ "publishConfig": { "access": "public" }, - "resolutions": { - "webpack-sources": "1.0.1" - }, "engines": { "node": ">=8", "npm": ">=5.4.0", @@ -31,9 +28,8 @@ "dependencies": { "deepmerge": "^1.5.2", "opn": "^5.1.0", - "webpack": "^3.10.0", - "webpack-dev-server": "^2.9.7", - "webpack-sources": "1.0.1" + "webpack": "^4.6.0", + "webpack-dev-server": "^3.1.3" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/env/index.js b/packages/env/index.js index 78d344f6e..559769ff7 100644 --- a/packages/env/index.js +++ b/packages/env/index.js @@ -2,4 +2,4 @@ const { EnvironmentPlugin } = require('webpack'); module.exports = ({ config }, envs = []) => config .plugin('env') - .use(EnvironmentPlugin, ['NODE_ENV', ...envs]); + .use(EnvironmentPlugin, envs); diff --git a/packages/env/package.json b/packages/env/package.json index 09b3ad368..959c382eb 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -18,17 +18,13 @@ "publishConfig": { "access": "public" }, - "resolutions": { - "webpack-sources": "1.0.1" - }, "engines": { "node": ">=8", "npm": ">=5.4.0", "yarn": ">=1.2.1" }, "dependencies": { - "webpack": "^3.10.0", - "webpack-sources": "1.0.1" + "webpack": "^4.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/eslint/package.json b/packages/eslint/package.json index 4864a7a26..32e65b184 100644 --- a/packages/eslint/package.json +++ b/packages/eslint/package.json @@ -34,7 +34,7 @@ "ramda": "^0.25.0" }, "devDependencies": { - "webpack": "^3.10.0" + "webpack": "^4.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/font-loader/package.json b/packages/font-loader/package.json index c51e8bfec..9fbb96260 100644 --- a/packages/font-loader/package.json +++ b/packages/font-loader/package.json @@ -27,7 +27,7 @@ "url-loader": "^1.0.0" }, "devDependencies": { - "webpack": "^3.10.0" + "webpack": "^4.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/hot/package.json b/packages/hot/package.json index 61c1b2c3f..391b5b047 100644 --- a/packages/hot/package.json +++ b/packages/hot/package.json @@ -19,17 +19,13 @@ "publishConfig": { "access": "public" }, - "resolutions": { - "webpack-sources": "1.0.1" - }, "engines": { "node": ">=8", "npm": ">=5.4.0", "yarn": ">=1.2.1" }, "dependencies": { - "webpack": "^3.10.0", - "webpack-sources": "1.0.1" + "webpack": "^4.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/html-template/package.json b/packages/html-template/package.json index 2e5f8df4b..fb42a171a 100644 --- a/packages/html-template/package.json +++ b/packages/html-template/package.json @@ -17,9 +17,6 @@ "publishConfig": { "access": "public" }, - "resolutions": { - "webpack-sources": "1.0.1" - }, "engines": { "node": ">=8", "npm": ">=5.4.0", @@ -31,7 +28,7 @@ "html-webpack-template": "^6.1.0" }, "devDependencies": { - "webpack": "^3.10.0" + "webpack": "^4.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/image-minify/package.json b/packages/image-minify/package.json index 66f3d1007..33cfa4337 100644 --- a/packages/image-minify/package.json +++ b/packages/image-minify/package.json @@ -32,7 +32,7 @@ "imagemin-webpack": "^2.0.0" }, "devDependencies": { - "webpack": "^3.10.0" + "webpack": "^4.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/karma/index.js b/packages/karma/index.js index 0b74c8900..ee4832724 100644 --- a/packages/karma/index.js +++ b/packages/karma/index.js @@ -58,7 +58,17 @@ module.exports = (neutrino, opts = {}) => { { singleRun: !watch, autoWatch: watch, - webpack: omit(['plugins'], neutrino.config.toConfig()) + webpack: merge( + omit(['plugins'], neutrino.config.toConfig()), + // Work around `yarn test` hanging under webpack 4: + // https://github.com/webpack-contrib/karma-webpack/issues/322 + { + optimization: { + splitChunks: false, + runtimeChunk: false + } + } + ) }, files && files.length ? { files } : {} ]); diff --git a/packages/karma/package.json b/packages/karma/package.json index 69b39b2e3..e61a42a8c 100644 --- a/packages/karma/package.json +++ b/packages/karma/package.json @@ -16,9 +16,6 @@ "publishConfig": { "access": "public" }, - "resolutions": { - "webpack-sources": "1.0.1" - }, "engines": { "node": ">=8", "npm": ">=5.4.0", @@ -37,8 +34,7 @@ "mocha": "^5.0.0", "mocha-coverage-reporter": "^0.0.1", "ramda": "^0.25.0", - "webpack": "^3.10.0", - "webpack-sources": "1.0.1" + "webpack": "^4.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/library/README.md b/packages/library/README.md index e68d1932f..1ea60d65c 100644 --- a/packages/library/README.md +++ b/packages/library/README.md @@ -456,8 +456,6 @@ _Note: Some plugins are only available in certain environments. To override them | --- | --- | --- | | `banner` | Injects source-map-support into the main entry points of your application if detected in `dependencies` or `devDependencies` of your package.json. | Only when `source-map-support` is installed | | `clean` | Clears the contents of `build` prior to creating a production bundle. | `build` command | -| `babel-minify` | Minifies source code using `BabelMinifyWebpackPlugin`. From `@neutrinojs/babel-minify`. | `NODE_ENV production` | -| `module-concat` | Concatenate the scope of all your modules into one closure and allow for your code to have a faster execution time in the browser. | `NODE_ENV production` | ### Override configuration diff --git a/packages/library/index.js b/packages/library/index.js index e5781b32f..37fecd6cc 100644 --- a/packages/library/index.js +++ b/packages/library/index.js @@ -2,9 +2,7 @@ const banner = require('@neutrinojs/banner'); const compileLoader = require('@neutrinojs/compile-loader'); const clean = require('@neutrinojs/clean'); const loaderMerge = require('@neutrinojs/loader-merge'); -const babelMinify = require('@neutrinojs/babel-minify'); const merge = require('deepmerge'); -const { optimize } = require('webpack'); const nodeExternals = require('webpack-node-externals'); const { join } = require('path'); @@ -74,6 +72,7 @@ module.exports = (neutrino, opts = {}) => { .forEach(key => neutrino.config.entry(key).add(neutrino.options.mains[key])); neutrino.config + .mode(process.env.NODE_ENV === 'production' ? 'production' : 'development') .when(hasSourceMap, () => neutrino.use(banner)) .devtool('source-map') .target(options.target) @@ -146,12 +145,6 @@ module.exports = (neutrino, opts = {}) => { neutrino.use(loaderMerge('lint', 'eslint'), { envs: ['browser', 'commonjs'] }); } }) - .when(process.env.NODE_ENV === 'production', (config) => { - neutrino.use(babelMinify); - config - .plugin('module-concat') - .use(optimize.ModuleConcatenationPlugin); - }) .when(neutrino.options.command === 'build', (config) => { config.when(options.clean, () => neutrino.use(clean, options.clean)); }); diff --git a/packages/library/package.json b/packages/library/package.json index 1e09d2714..b1cb610d5 100644 --- a/packages/library/package.json +++ b/packages/library/package.json @@ -24,16 +24,12 @@ "publishConfig": { "access": "public" }, - "resolutions": { - "webpack-sources": "1.0.1" - }, "engines": { "node": ">=8", "npm": ">=5.4.0", "yarn": ">=1.2.1" }, "dependencies": { - "@neutrinojs/babel-minify": "^8.2.0", "@neutrinojs/banner": "^8.2.0", "@neutrinojs/clean": "^8.2.0", "@neutrinojs/compile-loader": "^8.2.0", @@ -41,9 +37,8 @@ "babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-preset-env": "^1.6.0", "deepmerge": "^1.5.2", - "webpack": "^3.10.0", + "webpack": "^4.6.0", "webpack-node-externals": "^1.6.0", - "webpack-sources": "1.0.1", "worker-loader": "^1.0.0" }, "peerDependencies": { diff --git a/packages/library/test/library_test.js b/packages/library/test/library_test.js index eb1f34c24..e99f6fdd7 100644 --- a/packages/library/test/library_test.js +++ b/packages/library/test/library_test.js @@ -2,6 +2,8 @@ import test from 'ava'; import { validate } from 'webpack'; import { Neutrino } from 'neutrino'; +const expectedExtensions = ['.js', '.jsx', '.vue', '.ts', '.tsx', '.mjs', '.json']; + test('loads preset', t => { t.notThrows(() => require('..')); }); @@ -15,26 +17,76 @@ test('uses preset', t => { test('throws when missing library name', t => { const api = Neutrino(); - t.throws(() => api.use(require('..'))); + const err = t.throws(() => api.use(require('..'))); + t.true(err.message.includes('You must specify a library name')); }); test('valid preset production', t => { - const api = Neutrino({ env: { NODE_ENV: 'production' } }); - + const api = Neutrino({ + command: 'build', + env: { NODE_ENV: 'production' } + }); api.use(require('..'), { name: 'alpha' }); + const config = api.config.toConfig(); - const errors = validate(api.config.toConfig()); + // Common + t.is(config.target, 'web'); + t.deepEqual(config.resolve.extensions, expectedExtensions); + t.is(config.optimization, undefined); + t.is(config.devServer, undefined); + + // NODE_ENV/command specific + t.is(config.mode, 'production'); + t.is(config.devtool, 'source-map'); + t.not(config.externals, undefined); + const errors = validate(config); t.is(errors.length, 0); }); test('valid preset development', t => { - const api = Neutrino({ 'env': { NODE_ENV: 'development' } }); + const api = Neutrino({ + command: 'start', + env: { NODE_ENV: 'development' } + }); + api.use(require('..'), { name: 'alpha' }); + const config = api.config.toConfig(); + + // Common + t.is(config.target, 'web'); + t.deepEqual(config.resolve.extensions, expectedExtensions); + t.is(config.optimization, undefined); + t.is(config.devServer, undefined); + // NODE_ENV/command specific + t.is(config.mode, 'development'); + t.is(config.devtool, 'source-map'); + t.not(config.externals, undefined); + + const errors = validate(config); + t.is(errors.length, 0); +}); + +test('valid preset test', t => { + const api = Neutrino({ + command: 'test', + env: { NODE_ENV: 'test' } + }); api.use(require('..'), { name: 'alpha' }); + const config = api.config.toConfig(); - const errors = validate(api.config.toConfig()); + // Common + t.is(config.target, 'web'); + t.deepEqual(config.resolve.extensions, expectedExtensions); + t.is(config.optimization, undefined); + t.is(config.devServer, undefined); + + // NODE_ENV/command specific + t.is(config.mode, 'development'); + t.is(config.devtool, 'source-map'); + t.is(config.externals, undefined); + const errors = validate(config); t.is(errors.length, 0); }); diff --git a/packages/neutrino/package.json b/packages/neutrino/package.json index a9cba805e..9bdcb9b3e 100644 --- a/packages/neutrino/package.json +++ b/packages/neutrino/package.json @@ -21,9 +21,6 @@ "scripts": { "test": "ava test" }, - "resolutions": { - "webpack-sources": "1.0.1" - }, "engines": { "node": ">=8", "npm": ">=5.4.0", @@ -39,10 +36,9 @@ "mitt": "^1.1.3", "ora": "^2.0.0", "ramda": "^0.25.0", - "webpack": "^3.10.0", - "webpack-chain": "^4.5.0", - "webpack-dev-server": "^2.9.7", - "webpack-sources": "1.0.1", + "webpack": "^4.6.0", + "webpack-chain": "^4.6.0", + "webpack-dev-server": "^3.1.3", "yargs": "^11.0.0" } } diff --git a/packages/neutrino/test/api_test.js b/packages/neutrino/test/api_test.js index 0c4ea4cbd..b949bb2b8 100644 --- a/packages/neutrino/test/api_test.js +++ b/packages/neutrino/test/api_test.js @@ -249,7 +249,7 @@ test('fails when trying to run() a non-registered command', async t => { await t.throws(Neutrino().run('non-registered').promise()); }); -test('throws when trying to validate config with no entry point', async t => { +test('throws when trying to validate config with non-existent entry point', async t => { const api = Neutrino(); api.register('build', build); @@ -257,5 +257,5 @@ test('throws when trying to validate config with no entry point', async t => { const [err] = await t.throws(result); - t.true(err.message.includes(`configuration misses the property 'entry'`)); + t.true(err.includes(`Entry module not found: Error: Can't resolve './src'`)); }); diff --git a/packages/node/README.md b/packages/node/README.md index a75d65685..898cf8438 100644 --- a/packages/node/README.md +++ b/packages/node/README.md @@ -336,7 +336,6 @@ _Note: Some plugins are only available in certain environments. To override them | `start-server` | Start a Node.js for the first configured main entry point. | `start` command | | `hot` | Enables Hot Module Replacement. | `start` command | | `named-modules` | Enables named modules for improved debugging and console output. From `@neutrinojs/hot`. | `start` command | -| `module-concat` | Concatenate the scope of all your modules into one closure and allow for your code to have a faster execution time in the browser. | `NODE_ENV production` | ### Override configuration diff --git a/packages/node/index.js b/packages/node/index.js index 7f7850b02..21483707a 100644 --- a/packages/node/index.js +++ b/packages/node/index.js @@ -4,7 +4,6 @@ const clean = require('@neutrinojs/clean'); const startServer = require('@neutrinojs/start-server'); const hot = require('@neutrinojs/hot'); const nodeExternals = require('webpack-node-externals'); -const { optimize } = require('webpack'); const { basename, join, parse, format } = require('path'); @@ -61,6 +60,7 @@ module.exports = (neutrino, opts = {}) => { .forEach(key => neutrino.config.entry(key).add(neutrino.options.mains[key])); neutrino.config + .mode(process.env.NODE_ENV === 'production' ? 'production' : 'development') .when(sourceMap, () => neutrino.use(banner)) .performance .hints(false) @@ -126,11 +126,6 @@ module.exports = (neutrino, opts = {}) => { config.devtool('inline-sourcemap'); config.output.devtoolModuleFilenameTemplate('[absolute-resource-path]'); }) - .when(neutrino.options.env.NODE_ENV === 'production', (config) => { - config - .plugin('module-concat') - .use(optimize.ModuleConcatenationPlugin); - }) .when(neutrino.options.command === 'build', (config) => { config.when(options.clean, () => neutrino.use(clean, options.clean)); }); diff --git a/packages/node/package.json b/packages/node/package.json index eebf0a8c9..685b1d6aa 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -17,9 +17,6 @@ "publishConfig": { "access": "public" }, - "resolutions": { - "webpack-sources": "1.0.1" - }, "engines": { "node": ">=8", "npm": ">=5.4.0", @@ -35,9 +32,8 @@ "babel-preset-env": "^1.6.0", "deepmerge": "^1.5.2", "ramda": "^0.25.0", - "webpack": "^3.10.0", - "webpack-node-externals": "^1.6.0", - "webpack-sources": "1.0.1" + "webpack": "^4.6.0", + "webpack-node-externals": "^1.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/node/test/node_test.js b/packages/node/test/node_test.js index e1e2d1b44..c4e30541d 100644 --- a/packages/node/test/node_test.js +++ b/packages/node/test/node_test.js @@ -2,6 +2,8 @@ import test from 'ava'; import { validate } from 'webpack'; import { Neutrino } from 'neutrino'; +const expectedExtensions = ['.js', '.jsx', '.vue', '.ts', '.tsx', '.mjs', '.json']; + test('loads preset', t => { t.notThrows(() => require('..')); }); @@ -20,21 +22,67 @@ test('uses preset with custom main', t => { }); test('valid preset production', t => { - const api = Neutrino({ env: { NODE_ENV: 'production' } }); - + const api = Neutrino({ + command: 'build', + env: { NODE_ENV: 'production' } + }); api.use(require('..')); + const config = api.config.toConfig(); + + // Common + t.is(config.target, 'node'); + t.deepEqual(config.resolve.extensions, expectedExtensions); + t.is(config.optimization, undefined); + t.is(config.devServer, undefined); - const errors = validate(api.config.toConfig()); + // NODE_ENV/command specific + t.is(config.mode, 'production'); + t.is(config.devtool, 'source-map'); + const errors = validate(config); t.is(errors.length, 0); }); test('valid preset development', t => { - const api = Neutrino({ 'env': { NODE_ENV: 'development' } }); + const api = Neutrino({ + command: 'start', + env: { NODE_ENV: 'development' } + }); + api.use(require('..')); + const config = api.config.toConfig(); + + // Common + t.is(config.target, 'node'); + t.deepEqual(config.resolve.extensions, expectedExtensions); + t.is(config.optimization, undefined); + t.is(config.devServer, undefined); + + // NODE_ENV/command specific + t.is(config.mode, 'development'); + t.is(config.devtool, 'inline-sourcemap'); + const errors = validate(config); + t.is(errors.length, 0); +}); + +test('valid preset test', t => { + const api = Neutrino({ + command: 'test', + env: { NODE_ENV: 'test' } + }); api.use(require('..')); + const config = api.config.toConfig(); + + // Common + t.is(config.target, 'node'); + t.deepEqual(config.resolve.extensions, expectedExtensions); + t.is(config.optimization, undefined); + t.is(config.devServer, undefined); - const errors = validate(api.config.toConfig()); + // NODE_ENV/command specific + t.is(config.mode, 'development'); + t.is(config.devtool, 'source-map'); + const errors = validate(config); t.is(errors.length, 0); }); diff --git a/packages/preact/README.md b/packages/preact/README.md index 61fcf69d2..4c8abfc53 100644 --- a/packages/preact/README.md +++ b/packages/preact/README.md @@ -22,7 +22,7 @@ - Pre-configured to support CSS Modules via `*.module.css` file extensions - Hot Module Replacement support including CSS - Tree-shaking to create smaller bundles - - Production-optimized bundles with Babel minification, easy chunking, and scope-hoisted modules for faster execution + - Production-optimized bundles with minification, easy chunking, and scope-hoisted modules for faster execution - Easily extensible to customize your project as needed ## Requirements @@ -254,10 +254,10 @@ array. You can also make these changes from the Neutrino API in custom middlewar #### Vendoring -By defining an entry point named `vendor` you can split out external dependencies into a chunk separate -from your application code. +External dependencies are automatically split into separate chunks from the application code, +by the new webpack [SplitChunksPlugin](https://webpack.js.org/plugins/split-chunks-plugin/). -_Example: Put Preact into a separate "vendor" chunk:_ +_Example: The splitChunks settings can be adjusted like so:_ ```js module.exports = { @@ -265,8 +265,13 @@ module.exports = { '@neutrinojs/preact', (neutrino) => { neutrino.config - .entry('vendor') - .add('preact'); + .optimization + .merge({ + splitChunks: { + // Decrease the minimum size before extra chunks are created, to 10KB + minSize: 10000 + } + }); } ] }; diff --git a/packages/react-components/README.md b/packages/react-components/README.md index c5f89f9b1..a80d25d6f 100644 --- a/packages/react-components/README.md +++ b/packages/react-components/README.md @@ -23,7 +23,7 @@ other Neutrino middleware, so you can build, test, and publish multiple React co - Pre-configured to support CSS Modules via `*.module.css` file extensions - Hot Module Replacement support including CSS - Tree-shaking to create smaller bundles - - Production-optimized bundles with Babel minification, easy chunking, and scope-hoisted modules for faster execution + - Production-optimized bundles with minification, easy chunking, and scope-hoisted modules for faster execution - Easily extensible to customize your project as needed **Important! This preset does not include babel-polyfill for size reasons. If you need diff --git a/packages/react-components/index.js b/packages/react-components/index.js index 7700fe0a1..5a9cf1767 100644 --- a/packages/react-components/index.js +++ b/packages/react-components/index.js @@ -55,6 +55,8 @@ module.exports = (neutrino, opts = {}) => { neutrino.use(react, options); + // Remove the html generation plugins added by the react preset + neutrino.config.plugins.delete('html-sibling-chunks'); Object .keys(neutrino.options.mains) .forEach(key => { @@ -68,6 +70,11 @@ module.exports = (neutrino, opts = {}) => { .performance .hints('error') .end() + // Disable the chunking behaviour inherited from the react preset + .optimization + .splitChunks(false) + .runtimeChunk(false) + .end() .output .filename('[name].js') .library('[name]') @@ -75,16 +82,4 @@ module.exports = (neutrino, opts = {}) => { .umdNamedDefine(true); } ); - - neutrino.config.when( - neutrino.config.plugins.has('runtime-chunk'), - (config) => { - config.plugins - .delete('runtime-chunk') - .delete('vendor-chunk') - .delete('named-modules') - .delete('named-chunks') - .delete('name-all'); - } - ); }; diff --git a/packages/react/README.md b/packages/react/README.md index 544a14441..e3f27679a 100644 --- a/packages/react/README.md +++ b/packages/react/README.md @@ -22,7 +22,7 @@ - Pre-configured to support CSS Modules via `*.module.css` file extensions - Hot Module Replacement support including CSS - Tree-shaking to create smaller bundles - - Production-optimized bundles with Babel minification, easy chunking, and scope-hoisted modules for faster execution + - Production-optimized bundles with minification, easy chunking, and scope-hoisted modules for faster execution - Easily extensible to customize your project as needed ## Requirements @@ -266,19 +266,25 @@ module.exports = { #### Vendoring -By defining an entry point named `vendor` you can split out external dependencies into a chunk separate -from your application code. +External dependencies are automatically split into separate chunks from the application code, +by the new webpack [SplitChunksPlugin](https://webpack.js.org/plugins/split-chunks-plugin/). -_Example: Put React and React DOM into a separate "vendor" chunk:_ +_Example: The splitChunks settings can be adjusted like so:_ ```js module.exports = { use: [ '@neutrinojs/react', - (neutrino) => neutrino.config - .entry('vendor') - .add('react') - .add('react-dom') + (neutrino) => { + neutrino.config + .optimization + .merge({ + splitChunks: { + // Decrease the minimum size before extra chunks are created, to 10KB + minSize: 10000 + } + }); + } ] }; ``` diff --git a/packages/style-loader/README.md b/packages/style-loader/README.md index dac738ec2..39a09da42 100644 --- a/packages/style-loader/README.md +++ b/packages/style-loader/README.md @@ -57,15 +57,15 @@ neutrino.use(styles, { ruleId: 'style', styleUseId: 'style', cssUseId: 'css', - hotUseId: 'hot', - hot: true, modules: true, modulesSuffix: '-modules', modulesTest: /\.module.css$/, extractId: 'extract', extract: { plugin: {}, - loader: {} + loader: { + filename: neutrino.options.command === 'build' ? '[name].[contenthash].css' : '[name].css' + } } }); ``` @@ -89,15 +89,15 @@ module.exports = { ruleId: 'style', styleUseId: 'style', cssUseId: 'css', - hotUseId: 'hot', - hot: true, modules: true, modulesSuffix: '-modules', modulesTest: /\.module.css$/, extractId: 'extract', extract: { plugin: {}, - loader: {} + loader: { + filename: neutrino.options.command === 'build' ? '[name].[contenthash].css' : '[name].css' + } } }] ] @@ -111,8 +111,6 @@ module.exports = { - `ruleId`: The ID of the webpack-chain rule used to identify the stylesheet loaders - `styleUseId`: The ID of the webpack-chain `use` used to identify the style-loader - `cssUseId`: The ID of the webpack-chain `use` used to identify the css-loader -- `hotUseId`: The ID of the webpack-chain `use` used to identify the css-hot-loader -- `hot`: Enable usage of CSS Hot Module Replacement. Set to `false` to disable. - `modules`: Enable usage of CSS modules via `*.module.css` files. Set to `false` to disable and skip defining these rules. - `modulesSuffix`: A suffix added to `ruleId`, `styleUseId`, `cssUseId`, `hotUseId`, and `extractId` to derive names for modules-related rules. For example, the default `-modules` suffix will generate a rule ID for the CSS modules rules of @@ -234,8 +232,8 @@ The following is a list of default rules and their identifiers which can be over | Name | Description | Environments and Commands | | --- | --- | --- | -| `style` | Allows importing CSS stylesheets from modules. Contains two loaders named `style` and `css` which use `style-loader` and `css-loader`, respectively. | all | -| `style-modules` | Allows importing CSS Modules styles from modules. Contains two loaders named `style-modules` and `css-modules` which use `style-loader` and `css-loader`, respectively. | all | +| `style` | Allows importing CSS stylesheets from modules. By default contains two loaders named `extract` and `css` which use `MiniCssExtractPlugin.loader` and `css-loader`, respectively. If `options.extract` is `false`, then the `extract` loader is replaced by `style`, which uses `style-loader`. | all | +| `style-modules` | Allows importing CSS Modules styles from modules. By default contains two loaders named `extract` and `css` which use `MiniCssExtractPlugin.loader` and `css-loader`, respectively. If `options.extract` is `false`, then the `extract` loader is replaced by `style`, which uses `style-loader`. | all | ### Plugins @@ -246,7 +244,6 @@ _Note: Some plugins may be only available in certain environments. To override t | Name | Description | Environments and Commands | | --- | --- | --- | | `extract` | Extracts CSS from JS bundle into a separate stylesheet file. | all | -| `extract-modules` | Extracts CSS from JS bundle into a separate stylesheet file. | all | ## Contributing diff --git a/packages/style-loader/index.js b/packages/style-loader/index.js index 482317678..808a25882 100644 --- a/packages/style-loader/index.js +++ b/packages/style-loader/index.js @@ -1,4 +1,4 @@ -const ExtractTextPlugin = require('extract-text-webpack-plugin'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const merge = require('deepmerge'); module.exports = (neutrino, opts = {}) => { @@ -13,8 +13,6 @@ module.exports = (neutrino, opts = {}) => { importLoaders: opts.loaders ? opts.loaders.length : 0 }, style: {}, - hot: true, - hotUseId: 'hot', modules, modulesTest, modulesSuffix: '-modules', @@ -22,10 +20,9 @@ module.exports = (neutrino, opts = {}) => { loaders: [], extractId: 'extract', extract: { + loader: {}, plugin: { - filename: neutrino.options.command === 'build' ? '[name].[contenthash].css' : '[name].css', - ignoreOrder: opts.modules !== false, - allChunks: true + filename: neutrino.options.command === 'build' ? '[name].[contenthash].css' : '[name].css' } } }, opts); @@ -40,7 +37,6 @@ module.exports = (neutrino, opts = {}) => { ruleId: `${options.ruleId}${options.modulesSuffix}`, styleUseId: `${options.styleUseId}${options.modulesSuffix}`, cssUseId: `${options.cssUseId}${options.modulesSuffix}`, - hotUseId: `${options.hotUseId}${options.modulesSuffix}`, extractId: `${options.extractId}${options.modulesSuffix}`, css: { modules: options.modules @@ -53,9 +49,9 @@ module.exports = (neutrino, opts = {}) => { const styleRule = neutrino.config.module.rule(options.ruleId); const loaders = [ { - loader: require.resolve('style-loader'), - options: options.style, - useId: options.styleUseId + loader: options.extract ? MiniCssExtractPlugin.loader : require.resolve('style-loader'), + options: options.extract ? options.extract.loader : options.style, + useId: options.extract ? options.extractId : options.styleUseId }, { loader: require.resolve('css-loader'), @@ -80,44 +76,11 @@ module.exports = (neutrino, opts = {}) => { .loader(loader.loader) .when(loader.options, use => use.options(loader.options)); }); - - if (options.extract) { - const styleEntries = styleRule.uses.entries(); - const useIds = Object.keys(styleEntries).filter(key => key !== options.styleUseId); - const extractLoader = Object.assign({ - use: useIds.map(key => ({ - loader: styleEntries[key].get('loader'), - options: styleEntries[key].get('options') - })), - fallback: { - loader: styleEntries[options.styleUseId].get('loader'), - options: styleEntries[options.styleUseId].get('options') - } - }, options.extract.loader || {}); - - styleRule - .uses - .clear() - .end() - .when(options.hot, (rule) => { - rule.use(options.hotUseId) - .loader(require.resolve('css-hot-loader')) - .when(options.hot !== true, use => use.options(options.hot)); - }); - - ExtractTextPlugin - .extract(extractLoader) - .forEach(({ loader, options }) => { - styleRule - .use(loader) - .loader(loader) - .options(options); - }); - - neutrino.config - .plugin(options.extractId) - .use(ExtractTextPlugin, [options.extract.plugin]); - } }); + if (options.extract) { + neutrino.config + .plugin(options.extractId) + .use(MiniCssExtractPlugin, [options.extract.plugin]); + } }; diff --git a/packages/style-loader/package.json b/packages/style-loader/package.json index fd968a41d..bbb3e169a 100644 --- a/packages/style-loader/package.json +++ b/packages/style-loader/package.json @@ -24,14 +24,13 @@ "yarn": ">=1.2.1" }, "dependencies": { - "css-hot-loader": "^1.3.4", "css-loader": "^0.28.7", "deepmerge": "^1.5.2", - "extract-text-webpack-plugin": "^3.0.2", + "mini-css-extract-plugin": "^0.4.0", "style-loader": "^0.21.0" }, "devDependencies": { - "webpack": "^3.10.0" + "webpack": "^4.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/style-minify/package.json b/packages/style-minify/package.json index 640760651..494707dba 100644 --- a/packages/style-minify/package.json +++ b/packages/style-minify/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "deepmerge": "^1.5.2", - "optimize-css-assets-webpack-plugin": "^3.2.0" + "optimize-css-assets-webpack-plugin": "^4.0.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/stylelint/package.json b/packages/stylelint/package.json index 51e97cb1f..41b0d37b6 100644 --- a/packages/stylelint/package.json +++ b/packages/stylelint/package.json @@ -29,7 +29,7 @@ "deepmerge": "^1.5.2", "stylelint": "^8.0.0", "stylelint-webpack-plugin": "^0.10.0", - "webpack": "^3.10.0" + "webpack": "^4.6.0" }, "peerDependencies": { "neutrino": "^8.0.0" diff --git a/packages/vue/README.md b/packages/vue/README.md index 76e82ec1d..5b0337013 100644 --- a/packages/vue/README.md +++ b/packages/vue/README.md @@ -17,7 +17,7 @@ - Pre-configured to support CSS Modules via `*.module.css` file extensions - Hot Module Replacement support including CSS - Tree-shaking to create smaller bundles - - Production-optimized bundles with Babel minification, easy chunking, and scope-hoisted modules for faster execution + - Production-optimized bundles with minification, easy chunking, and scope-hoisted modules for faster execution - Easily extensible to customize your project as needed ## Requirements @@ -291,10 +291,10 @@ array. You can also make these changes from the Neutrino API in custom middlewar #### Vendoring -By defining an entry point named `vendor` you can split out external dependencies into a chunk separate -from your application code. +External dependencies are automatically split into separate chunks from the application code, +by the new webpack [SplitChunksPlugin](https://webpack.js.org/plugins/split-chunks-plugin/). -_Example: Put Vue into a separate "vendor" chunk:_ +_Example: The splitChunks settings can be adjusted like so:_ ```js module.exports = { @@ -302,8 +302,13 @@ module.exports = { '@neutrinojs/vue', (neutrino) => { neutrino.config - .entry('vendor') - .add('vue'); + .optimization + .merge({ + splitChunks: { + // Decrease the minimum size before extra chunks are created, to 10KB + minSize: 10000 + } + }); } ] }; diff --git a/packages/web/README.md b/packages/web/README.md index fac15b829..1496068cb 100644 --- a/packages/web/README.md +++ b/packages/web/README.md @@ -17,7 +17,7 @@ - Pre-configured to support CSS Modules via `*.module.css` file extensions - Hot Module Replacement support including CSS - Tree-shaking to create smaller bundles -- Production-optimized bundles with Babel minification, easy chunking, and scope-hoisted modules for faster execution +- Production-optimized bundles with minification, easy chunking, and scope-hoisted modules for faster execution - Easily extensible to customize your project as needed ## Requirements @@ -209,8 +209,9 @@ module.exports = { image: {}, minify: { - // Change options for @neutrinojs/babel-minify - babel: {}, + // Javascript minification occurs only in production by default. + // To change uglify-es options or switch to another minifier, see below. + source: process.env.NODE_ENV === 'production', // Change options for @neutrinojs/style-minify style: {} }, @@ -272,12 +273,9 @@ module.exports = { font: false, manifest: false, - // Example: Remove console and debugger from output + // Disable javascript minification entirely minify: { - babel: { - removeConsole: true, - removeDebugger: true, - } + source: false }, // Example: Use a .browserslistrc file with babel-env @@ -412,8 +410,8 @@ The following is a list of rules and their identifiers which can be overridden: | --- | --- | --- | | `compile` | Compiles JS files from the `src` directory using Babel. Contains a single loader named `babel`. From `@neutrinojs/compile-loader`. | all | | `html` | Allows importing HTML files from modules. Contains a single loader named `html`. From `@neutrinojs/html-loader`. | all | -| `style` | Allows importing CSS stylesheets from modules. Contains two loaders named `style` and `css` which use `style-loader` and `css-loader`, respectively. From `@neutrinojs/style-loader`. | all | -| `style-modules` | Allows importing CSS Modules styles from modules. Contains two loaders named `style-modules` and `css-modules` which use `style-loader` and `css-loader`, respectively. From `@neutrinojs/style-loader`. | all | +| `style` | Allows importing CSS stylesheets from modules. In production contains two loaders named `extract` and `css` which use `MiniCssExtractPlugin.loader` and `css-loader`, respectively. In development the `extract` loader is replaced by `style`, which uses `style-loader`. From `@neutrinojs/style-loader`. | all | +| `style-modules` | Allows importing CSS Modules styles from modules. In production contains two loaders named `extract` and `css` which use `MiniCssExtractPlugin.loader` and `css-loader`, respectively. In development the `extract` loader is replaced by `style`, which uses `style-loader`. From `@neutrinojs/style-loader`. | all | | `img`, `svg`, `ico` | Allows import image files from modules. Each contains a single loader named `url`. From `@neutrinojs/image-loader`. | all | | `woff`, `ttf` | Allows importing WOFF and TTF font files from modules. Each contains a single loader named `url`. From `@neutrinojs/font-loader`. | all | | `eot` | Allows importing EOT font files from modules. Contains a single loader named `file`. From `@neutrinojs/font-loader`. | all | @@ -429,18 +427,11 @@ _Note: Some plugins are only available in certain environments. To override them | --- | --- | --- | | `env` | Inject environment variables into source code at `process.env`, defaults to only inject `NODE_ENV`. From `@neutrinojs/env`. | all | | `extract` | Extracts CSS from JS bundle into a separate stylesheet file. From `@neutrinojs/style-loader`. | all | -| `extract-modules` | Extracts CSS from JS bundle into a separate stylesheet file. From `@neutrinojs/style-loader`. | all | +| `html-sibling-chunks` | Works around `html-webpack-plugin` not supporting `splitChunks` when using multiple entrypoints, via `html-webpack-include-sibling-chunks-plugin`. | all | | `html-{MAIN_NAME}` | Automatically generates HTML files for configured entry points. `{MAIN_NAME}` corresponds to the entry point of each page. By default, there is only a single `index` main, so this would generate a plugin named `html-index`. From `@neutrinojs/html-template` | all | -| `named-modules` | Enables named modules for improved debugging and console output. From `@neutrinojs/chunk` and `@neutrinojs/hot`. | `NODE_ENV production`, `start` command | -| `named-chunks` | Enables named chunks for improved debugging and console output. From `@neutrinojs/chunk`. | `NODE_ENV production` | -| `vendor-chunk` | Creates a separate file/chunk consisting of common modules shared between multiple entry points. From `@neutrinojs/chunk`. | `NODE_ENV production` | -| `runtime-chunk` | Creates a separate file/chunk consisting of the webpack manifest-specific code. From `@neutrinojs/chunk`. | `NODE_ENV production` | -| `name-all` | Names all remaining modules that do not get named via `named-modules`. From `@neutrinojs/chunk`. | `NODE_ENV production` | | `hot` | Enables Hot Module Replacement. From `@neutrinojs/hot`. | `start` command | | `clean` | Removes the `build` directory prior to building. From `@neutrinojs/clean`. | `build` command | -| `babel-minify` | Minifies source code using `BabelMinifyWebpackPlugin`. From `@neutrinojs/babel-minify`. | `NODE_ENV production` | | `optimize-css` | Minifies css using `OptimizeCssAssetsPlugin`. From `@neutrinojs/style-minify`. | `NODE_ENV production` | -| `module-concat` | Concatenate the scope of all your modules into one closure and allow for your code to have a faster execution time in the browser. | `NODE_ENV production` | | `manifest` | Create a manifest file, via webpack-manifest-plugin. | `build` command | ### Override configuration @@ -451,19 +442,63 @@ make these changes from the Neutrino API in custom middleware. #### Vendoring -By defining an entry point named `vendor` you can split out external dependencies into a chunk separate -from your application code. +External dependencies are automatically split into separate chunks from the application code, +by the new webpack [SplitChunksPlugin](https://webpack.js.org/plugins/split-chunks-plugin/). + +_Example: The splitChunks settings can be adjusted like so:_ + +```js +module.exports = { + use: [ + '@neutrinojs/web', + (neutrino) => { + neutrino.config + .optimization + .merge({ + splitChunks: { + // Decrease the minimum size before extra chunks are created, to 10KB + minSize: 10000 + } + }); + } + ] +}; +``` + +#### Source minification + +By default script sources are minified in production only, and using webpack's default of +[uglifyjs-webpack-plugin](https://github.com/webpack-contrib/uglifyjs-webpack-plugin) +(which internally uses `uglify-es`). To customise the options passed to `UglifyJsPlugin` +or even use a different minifier, override `optimization.minimizer`. -_Example: Put lodash into a separate "vendor" chunk:_ +Note: If switching to [babel-minify-webpack-plugin](https://github.com/webpack-contrib/babel-minify-webpack-plugin) +ensure that sourcemaps are disabled in production to avoid [this bug](https://github.com/webpack-contrib/babel-minify-webpack-plugin/issues/68). + +_Example: Use different options with `uglify-es`:_ ```js +const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); + module.exports = { use: [ '@neutrinojs/web', - neutrino => { + (neutrino) => { neutrino.config - .entry('vendor') - .add('lodash'); + .optimization + .minimizer([ + // Based on: + // https://github.com/webpack/webpack/blob/v4.6.0/lib/WebpackOptionsDefaulter.js#L277-L285 + new UglifyJsPlugin({ + cache: true, + parallel: true, + sourceMap: neutrino.config.devtool && /source-?map/.test(neutrino.config.devtool), + uglifyOptions: { + // Custom uglify-es options here. See: + // https://github.com/mishoo/UglifyJS2/tree/harmony#minify-options + } + }) + ]); } ] }; diff --git a/packages/web/index.js b/packages/web/index.js index 2444552f3..81d291d4f 100644 --- a/packages/web/index.js +++ b/packages/web/index.js @@ -6,17 +6,15 @@ const compileLoader = require('@neutrinojs/compile-loader'); const env = require('@neutrinojs/env'); const hot = require('@neutrinojs/hot'); const htmlTemplate = require('@neutrinojs/html-template'); -const chunk = require('@neutrinojs/chunk'); const clean = require('@neutrinojs/clean'); -const babelMinify = require('@neutrinojs/babel-minify'); const styleMinify = require('@neutrinojs/style-minify'); const loaderMerge = require('@neutrinojs/loader-merge'); const devServer = require('@neutrinojs/dev-server'); const { join } = require('path'); const { resolve } = require('url'); const merge = require('deepmerge'); +const HtmlWebpackIncludeSiblingChunksPlugin = require('html-webpack-include-sibling-chunks-plugin'); const ManifestPlugin = require('webpack-manifest-plugin'); -const { optimize } = require('webpack'); const MODULES = join(__dirname, 'node_modules'); @@ -41,7 +39,7 @@ module.exports = (neutrino, opts = {}) => { paths: [neutrino.options.output] }, minify: { - babel: {}, + source: process.env.NODE_ENV === 'production', style: {} }, babel: {}, @@ -50,7 +48,11 @@ module.exports = (neutrino, opts = {}) => { image: {} }, opts); - if (options.minify.image) { + if ('babel' in options.minify) { + throw new Error('The minify.babel option has been removed. See the web preset docs for how to customise source minification.'); + } + + if ('image' in options.minify) { throw new Error('The minify.image option has been removed. To enable image minification use the @neutrinojs/image-minify preset.'); } @@ -82,7 +84,6 @@ module.exports = (neutrino, opts = {}) => { extract: options.style.extract === true ? {} : options.style.extract }), minify: options.minify && merge(options.minify, { - babel: options.minify.babel === true ? {} : options.minify.babel, style: options.minify.style === true ? {} : options.minify.style }), babel: compileLoader.merge({ @@ -100,7 +101,10 @@ module.exports = (neutrino, opts = {}) => { }, options.babel) }); - neutrino.use(env, options.env); + if (options.env.length) { + neutrino.use(env, options.env); + } + neutrino.use(htmlLoader); neutrino.use(compileLoader, { include: [ @@ -110,6 +114,13 @@ module.exports = (neutrino, opts = {}) => { babel: options.babel }); + neutrino.config + // This must be before html-webpack-plugin (but with variable main names it's a pain to use .before()). + // TODO: Remove this plugin once html-webpack-plugin fully supports webpack 4's splitChunks + // https://github.com/jantimon/html-webpack-plugin/issues/880 + .plugin('html-sibling-chunks') + .use(HtmlWebpackIncludeSiblingChunksPlugin); + Object .keys(neutrino.options.mains) .forEach(key => { @@ -120,14 +131,33 @@ module.exports = (neutrino, opts = {}) => { neutrino.use(htmlTemplate, merge({ pluginId: `html-${key}`, filename: `${key}.html`, - // When using the chunk middleware, the names in use by default there - // need to be kept in sync with the additional values used here - chunks: [key, 'vendor', 'runtime'] + // html-webpack-include-sibling-chunks-plugin dynamically updates this to + // include the runtime chunk and any chunks generated by splitChunks. + chunks: [key] }, options.html)); }); }); neutrino.config + .mode(process.env.NODE_ENV === 'production' ? 'production' : 'development') + .optimization + .minimize(options.minify.source) + .splitChunks({ + // By default SplitChunksPlugin only splits out the async chunks (to avoid the + // ever-changing file list breaking users who don't auto-generate their HTML): + // https://webpack.js.org/plugins/split-chunks-plugin/#optimization-splitchunks-chunks-all + // https://github.com/webpack/webpack/issues/7064 + chunks: 'all', + // By default the generated files use names that reference the chunk names, eg: + // `vendors~index~page2.b694ee990c08e6be6a33.js`. Setting to `false` causes them to + // use the chunk ID instead (eg `1.ceddedc0defa56bec89f.js`), which prevents cache- + // busting when a new page is added with the same shared vendor dependencies. + name: process.env.NODE_ENV !== 'production' + }) + // Create a separate chunk for the webpack runtime, so it can be cached separately + // from the more frequently-changing entrypoint chunks. + .runtimeChunk('single') + .end() .when(options.style, () => neutrino.use(styleLoader, options.style)) .when(options.font, () => neutrino.use(fontLoader, options.font)) .when(options.image, () => neutrino.use(imageLoader, options.image)) @@ -206,13 +236,8 @@ module.exports = (neutrino, opts = {}) => { }); }) .when(process.env.NODE_ENV === 'production', (config) => { - neutrino.use(chunk); - config - .when(options.minify.babel, () => neutrino.use(babelMinify, options.minify.babel)) - .when(options.minify.style, () => neutrino.use(styleMinify, options.minify.style)) - .plugin('module-concat') - .use(optimize.ModuleConcatenationPlugin); + .when(options.minify.style, () => neutrino.use(styleMinify, options.minify.style)); }) .when(neutrino.options.command === 'build', (config) => { config.when(options.clean, () => neutrino.use(clean, options.clean)); @@ -224,4 +249,13 @@ module.exports = (neutrino, opts = {}) => { config.output.filename('[name].[chunkhash].js'); }); + + neutrino.on('prerun', () => { + if (neutrino.config.entryPoints.has('vendor')) { + return Promise.reject( + new Error('Vendor chunks are now automatically generated. Remove the manual `vendor` entrypoint.') + ); + } + return Promise.resolve(); + }) }; diff --git a/packages/web/package.json b/packages/web/package.json index db6370c47..8650eef8f 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -17,17 +17,12 @@ "publishConfig": { "access": "public" }, - "resolutions": { - "webpack-sources": "1.0.1" - }, "engines": { "node": ">=8", "npm": ">=5.4.0", "yarn": ">=1.2.1" }, "dependencies": { - "@neutrinojs/babel-minify": "^8.2.0", - "@neutrinojs/chunk": "^8.2.0", "@neutrinojs/clean": "^8.2.0", "@neutrinojs/compile-loader": "^8.2.0", "@neutrinojs/dev-server": "^8.2.0", @@ -43,9 +38,9 @@ "babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-preset-env": "^1.6.0", "deepmerge": "^1.5.2", - "webpack": "^3.10.0", + "html-webpack-include-sibling-chunks-plugin": "^0.1.4", + "webpack": "^4.6.0", "webpack-manifest-plugin": "^2.0.0", - "webpack-sources": "1.0.1", "worker-loader": "^1.0.0" }, "peerDependencies": { diff --git a/packages/web/test/web_test.js b/packages/web/test/web_test.js index c3940a0dc..7cce5fda3 100644 --- a/packages/web/test/web_test.js +++ b/packages/web/test/web_test.js @@ -1,6 +1,8 @@ import test from 'ava'; import { validate } from 'webpack'; -import { Neutrino } from 'neutrino'; +import { Neutrino, build } from 'neutrino'; + +const expectedExtensions = ['.js', '.jsx', '.vue', '.ts', '.tsx', '.mjs', '.json']; test('loads preset', t => { t.notThrows(() => require('..')); @@ -11,28 +13,105 @@ test('uses preset', t => { }); test('valid preset production', t => { - const api = Neutrino({ env: { NODE_ENV: 'production' } }); - + const api = Neutrino({ + command: 'build', + env: { NODE_ENV: 'production' } + }); api.use(require('..')); + const config = api.config.toConfig(); + + // Common + t.is(config.target, 'web'); + t.deepEqual(config.resolve.extensions, expectedExtensions); + t.is(config.optimization.runtimeChunk, 'single'); + t.is(config.optimization.splitChunks.chunks, 'all'); - const errors = validate(api.config.toConfig()); + // NODE_ENV/command specific + t.is(config.mode, 'production'); + t.true(config.optimization.minimize); + t.false(config.optimization.splitChunks.name); + t.is(config.devtool, undefined); + t.is(config.devServer, undefined); + const errors = validate(config); t.is(errors.length, 0); }); test('valid preset development', t => { - const api = Neutrino({ 'env': { NODE_ENV: 'development' } }); + const api = Neutrino({ + command: 'start', + env: { NODE_ENV: 'development' } + }); + api.use(require('..')); + const config = api.config.toConfig(); + + // Common + t.is(config.target, 'web'); + t.deepEqual(config.resolve.extensions, expectedExtensions); + t.is(config.optimization.runtimeChunk, 'single'); + t.is(config.optimization.splitChunks.chunks, 'all'); + + // NODE_ENV/command specific + t.is(config.mode, 'development'); + t.false(config.optimization.minimize); + t.true(config.optimization.splitChunks.name); + t.is(config.devtool, 'cheap-module-eval-source-map'); + t.not(config.devServer, undefined); + t.is(config.devServer.host, '0.0.0.0'); + t.is(config.devServer.port, 5000); + t.is(config.devServer.public, 'localhost:5000'); + t.is(config.devServer.publicPath, '/'); + + const errors = validate(config); + t.is(errors.length, 0); +}); +test('valid preset test', t => { + const api = Neutrino({ + command: 'test', + env: { NODE_ENV: 'test' } + }); api.use(require('..')); + const config = api.config.toConfig(); - const errors = validate(api.config.toConfig()); + // Common + t.is(config.target, 'web'); + t.deepEqual(config.resolve.extensions, expectedExtensions); + t.is(config.optimization.runtimeChunk, 'single'); + t.is(config.optimization.splitChunks.chunks, 'all'); + // NODE_ENV/command specific + t.is(config.mode, 'development'); + t.false(config.optimization.minimize); + t.true(config.optimization.splitChunks.name); + t.is(config.devtool, undefined); + t.is(config.devServer, undefined); + + const errors = validate(config); t.is(errors.length, 0); }); +test('throws when minify.babel defined', async t => { + const api = Neutrino(); + + const err = t.throws(() => api.use(require('..'), { minify: { babel: false } })); + t.true(err.message.includes('The minify.babel option has been removed')); +}); + test('throws when minify.image defined', async t => { const api = Neutrino(); const err = t.throws(() => api.use(require('..'), { minify: { image: true } })); t.true(err.message.includes('The minify.image option has been removed')); }); + +test('throws when vendor entrypoint defined', async t => { + const api = Neutrino(); + api + .register('build', build) + .use(require('..')) + .config.entry('vendor').add('lodash'); + + const [err] = await t.throws(api.run('build').promise()); + t.true(err.message.includes('Remove the manual `vendor` entrypoint')); +}); diff --git a/yarn.lock b/yarn.lock index 2ddfeb458..9067c77df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -38,12 +38,18 @@ imurmurhash "^0.1.4" slide "^1.1.5" -"@babel/code-frame@7.0.0-beta.44", "@babel/code-frame@^7.0.0-beta.35": +"@babel/code-frame@7.0.0-beta.44": version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" dependencies: "@babel/highlight" "7.0.0-beta.44" +"@babel/code-frame@^7.0.0-beta.35": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz#e0d002100805daab1461c0fcb32a07e304f3a4f4" + dependencies: + "@babel/highlight" "7.0.0-beta.46" + "@babel/generator@7.0.0-beta.44": version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" @@ -82,6 +88,14 @@ esutils "^2.0.2" js-tokens "^3.0.0" +"@babel/highlight@7.0.0-beta.46": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.46.tgz#c553c51e65f572bdedd6eff66fc0bb563016645e" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + "@babel/template@7.0.0-beta.44": version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" @@ -129,15 +143,7 @@ pretty-ms "^0.2.1" text-table "^0.2.0" -"@neutrinojs/babel-minify-webpack-plugin@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@neutrinojs/babel-minify-webpack-plugin/-/babel-minify-webpack-plugin-0.2.0.tgz#be87d8e7049e216ed8cce07b9b7ff292293832d8" - dependencies: - babel-core "^6.24.1" - babel-preset-minify "^0.2.0" - webpack-sources "1.0.1" - -JSONStream@^1.0.3, JSONStream@^1.0.4, JSONStream@~1.3.1: +JSONStream@^1.0.4, JSONStream@~1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" dependencies: @@ -163,11 +169,11 @@ accepts@~1.3.4, accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" -acorn-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" +acorn-dynamic-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" dependencies: - acorn "^4.0.3" + acorn "^5.0.0" acorn-globals@^3.1.0: version "3.1.0" @@ -187,22 +193,15 @@ acorn-jsx@^3.0.0: dependencies: acorn "^3.0.4" -acorn-node@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.3.0.tgz#5f86d73346743810ef1269b901dbcbded020861b" - dependencies: - acorn "^5.4.1" - xtend "^4.0.1" - acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" -acorn@^4.0.3, acorn@^4.0.4: +acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" -acorn@^5.0.0, acorn@^5.2.1, acorn@^5.3.0, acorn@^5.4.1, acorn@^5.5.0: +acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0: version "5.5.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" @@ -252,7 +251,7 @@ ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.0.0, ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: +ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -320,14 +319,14 @@ 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@*, ansi-regex@^3.0.0, ansi-regex@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" -ansi-regex@^3.0.0, ansi-regex@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -458,10 +457,6 @@ array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -489,14 +484,6 @@ array-iterate@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.2.tgz#f66a57e84426f8097f4197fbb6c051b8e5cdf7d8" -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - array-slice@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" @@ -551,7 +538,7 @@ assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" -assert@^1.1.1, assert@^1.4.0: +assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" dependencies: @@ -577,12 +564,6 @@ astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" -astw@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917" - dependencies: - acorn "^4.0.3" - async-each-series@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-1.1.0.tgz#f42fd8155d38f21a5b8ea07c28e063ed1700b138" @@ -609,7 +590,7 @@ async@1.x, async@^1.4.0, async@^1.5.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@2.6.0, async@^2.0.0, async@^2.0.1, async@^2.1.2, async@^2.1.4, async@^2.4.1, async@^2.6.0: +async@2.6.0, async@^2.0.0, async@^2.0.1, async@^2.1.4, async@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: @@ -796,7 +777,7 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.0.0, babel-core@^6.17.0, babel-core@^6.24.1, babel-core@^6.26.0: +babel-core@^6.0.0, babel-core@^6.17.0, babel-core@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" dependencies: @@ -878,10 +859,6 @@ babel-helper-define-map@^6.24.1: babel-types "^6.26.0" lodash "^4.17.4" -babel-helper-evaluate-path@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.2.0.tgz#0bb2eb01996c0cef53c5e8405e999fe4a0244c08" - babel-helper-explode-assignable-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" @@ -890,10 +867,6 @@ babel-helper-explode-assignable-expression@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-helper-flip-expressions@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.2.0.tgz#160d2090a3d9f9c64a750905321a0bc218f884ec" - babel-helper-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" @@ -918,18 +891,6 @@ babel-helper-hoist-variables@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-helper-is-nodes-equiv@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684" - -babel-helper-is-void-0@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.2.0.tgz#6ed0ada8a9b1c5b6e88af6b47c1b3b5c080860eb" - -babel-helper-mark-eval-scopes@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.2.0.tgz#7648aaf2ec92aae9b09a20ad91e8df5e1fcc94b2" - babel-helper-optimise-call-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" @@ -955,10 +916,6 @@ babel-helper-remap-async-to-generator@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-helper-remove-or-void@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.2.0.tgz#8e46ad5b30560d57d7510b3fd93f332ee7c67386" - babel-helper-replace-supers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" @@ -970,10 +927,6 @@ babel-helper-replace-supers@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-helper-to-multiple-sequence-expressions@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.2.0.tgz#d1a419634c6cb301f27858c659167cfee0a9d318" - babel-helper-vue-jsx-merge-props@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" @@ -1068,71 +1021,6 @@ babel-plugin-jsx-v-model@^2.0.1: html-tags "^2.0.0" svg-tags "^1.0.0" -babel-plugin-minify-builtins@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.2.0.tgz#317f824b0907210b6348671bb040ca072e2e0c82" - dependencies: - babel-helper-evaluate-path "^0.2.0" - -babel-plugin-minify-constant-folding@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.2.0.tgz#8c70b528b2eb7c13e94d95c8789077d4cdbc3970" - dependencies: - babel-helper-evaluate-path "^0.2.0" - -babel-plugin-minify-dead-code-elimination@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.2.0.tgz#e8025ee10a1e5e4f202633a6928ce892c33747e3" - dependencies: - babel-helper-evaluate-path "^0.2.0" - babel-helper-mark-eval-scopes "^0.2.0" - babel-helper-remove-or-void "^0.2.0" - lodash.some "^4.6.0" - -babel-plugin-minify-flip-comparisons@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.2.0.tgz#0c9c8e93155c8f09dedad8118b634c259f709ef5" - dependencies: - babel-helper-is-void-0 "^0.2.0" - -babel-plugin-minify-guarded-expressions@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.2.0.tgz#8a8c950040fce3e258a12e6eb21eab94ad7235ab" - dependencies: - babel-helper-flip-expressions "^0.2.0" - -babel-plugin-minify-infinity@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.2.0.tgz#30960c615ddbc657c045bb00a1d8eb4af257cf03" - -babel-plugin-minify-mangle-names@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.2.0.tgz#719892297ff0106a6ec1a4b0fc062f1f8b6a8529" - dependencies: - babel-helper-mark-eval-scopes "^0.2.0" - -babel-plugin-minify-numeric-literals@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.2.0.tgz#5746e851700167a380c05e93f289a7070459a0d1" - -babel-plugin-minify-replace@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.2.0.tgz#3c1f06bc4e6d3e301eacb763edc1be611efc39b0" - -babel-plugin-minify-simplify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.2.0.tgz#21ceec4857100c5476d7cef121f351156e5c9bc0" - dependencies: - babel-helper-flip-expressions "^0.2.0" - babel-helper-is-nodes-equiv "^0.0.1" - babel-helper-to-multiple-sequence-expressions "^0.2.0" - -babel-plugin-minify-type-constructors@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.2.0.tgz#7f3b6458be0863cfd59e9985bed6d134aa7a2e17" - dependencies: - babel-helper-is-void-0 "^0.2.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" @@ -1365,22 +1253,6 @@ babel-plugin-transform-flow-strip-types@^6.22.0: babel-plugin-syntax-flow "^6.18.0" babel-runtime "^6.22.0" -babel-plugin-transform-inline-consecutive-adds@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.2.0.tgz#15dae78921057f4004f8eafd79e15ddc5f12f426" - -babel-plugin-transform-member-expression-literals@^6.8.5: - version "6.9.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.1.tgz#96be2e9968e7f5497333ae03284ecd5340405489" - -babel-plugin-transform-merge-sibling-variables@^6.8.6: - version "6.9.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.1.tgz#9071e443b21458ce6b0a8d3841ba5a174f5dc282" - -babel-plugin-transform-minify-booleans@^6.8.3: - version "6.9.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.1.tgz#52cba79c00fa509737064055efab22166e140c4d" - babel-plugin-transform-object-rest-spread@^6.23.0, babel-plugin-transform-object-rest-spread@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" @@ -1388,12 +1260,6 @@ babel-plugin-transform-object-rest-spread@^6.23.0, babel-plugin-transform-object babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.26.0" -babel-plugin-transform-property-literals@^6.8.5: - version "6.9.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.1.tgz#6970f93b17793abcde9cf25d2e8cd13e0088e5c9" - dependencies: - esutils "^2.0.2" - babel-plugin-transform-react-display-name@^6.23.0: version "6.25.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" @@ -1428,28 +1294,6 @@ babel-plugin-transform-regenerator@^6.22.0: dependencies: regenerator-transform "^0.10.0" -babel-plugin-transform-regexp-constructors@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.2.0.tgz#6aa5dd0acc515db4be929bbcec4ed4c946c534a3" - -babel-plugin-transform-remove-console@^6.8.5: - version "6.9.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.1.tgz#40fe95d98cae5811d8a0e1889812d78b12859651" - -babel-plugin-transform-remove-debugger@^6.8.5: - version "6.9.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.1.tgz#76552d2e9d6c43d9c676bbfc08f3c2a2cc14be14" - -babel-plugin-transform-remove-undefined@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.2.0.tgz#94f052062054c707e8d094acefe79416b63452b1" - dependencies: - babel-helper-evaluate-path "^0.2.0" - -babel-plugin-transform-simplify-comparison-operators@^6.8.5: - version "6.9.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.1.tgz#5b0d06980a17a780f5318b274c00be2fb1c7c4fe" - babel-plugin-transform-strict-mode@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" @@ -1457,10 +1301,6 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-undefined-to-void@^6.8.3: - version "6.9.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.1.tgz#d7df9c1dd0ec12e0ffe895ed1445f61f1bf5e221" - babel-plugin-transform-vue-jsx@^3.5.0: version "3.7.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.7.0.tgz#d40492e6692a36b594f7e9a1928f43e969740960" @@ -1523,34 +1363,6 @@ babel-preset-jest@^21.0.2, babel-preset-jest@^21.2.0: babel-plugin-jest-hoist "^21.2.0" babel-plugin-syntax-object-rest-spread "^6.13.0" -babel-preset-minify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.2.0.tgz#006566552d9b83834472273f306c0131062a0acc" - dependencies: - babel-plugin-minify-builtins "^0.2.0" - babel-plugin-minify-constant-folding "^0.2.0" - babel-plugin-minify-dead-code-elimination "^0.2.0" - babel-plugin-minify-flip-comparisons "^0.2.0" - babel-plugin-minify-guarded-expressions "^0.2.0" - babel-plugin-minify-infinity "^0.2.0" - babel-plugin-minify-mangle-names "^0.2.0" - babel-plugin-minify-numeric-literals "^0.2.0" - babel-plugin-minify-replace "^0.2.0" - babel-plugin-minify-simplify "^0.2.0" - babel-plugin-minify-type-constructors "^0.2.0" - babel-plugin-transform-inline-consecutive-adds "^0.2.0" - babel-plugin-transform-member-expression-literals "^6.8.5" - babel-plugin-transform-merge-sibling-variables "^6.8.6" - babel-plugin-transform-minify-booleans "^6.8.3" - babel-plugin-transform-property-literals "^6.8.5" - babel-plugin-transform-regexp-constructors "^0.2.0" - babel-plugin-transform-remove-console "^6.8.5" - babel-plugin-transform-remove-debugger "^6.8.5" - babel-plugin-transform-remove-undefined "^0.2.0" - babel-plugin-transform-simplify-comparison-operators "^6.8.5" - babel-plugin-transform-undefined-to-void "^6.8.3" - lodash.isplainobject "^4.0.6" - babel-preset-react@^6.24.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" @@ -1907,22 +1719,11 @@ brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" -browser-pack@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" - dependencies: - JSONStream "^1.0.3" - combine-source-map "~0.8.0" - defined "^1.0.0" - safe-buffer "^5.1.1" - through2 "^2.0.0" - umd "^3.0.0" - browser-process-hrtime@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" -browser-resolve@^1.11.0, browser-resolve@^1.11.2, browser-resolve@^1.7.0: +browser-resolve@^1.11.2: version "1.11.2" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" dependencies: @@ -1978,64 +1779,12 @@ browserify-sign@^4.0.0: inherits "^2.0.1" parse-asn1 "^5.0.0" -browserify-zlib@^0.2.0, browserify-zlib@~0.2.0: +browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" dependencies: pako "~1.0.5" -browserify@^14.5.0: - version "14.5.0" - resolved "https://registry.yarnpkg.com/browserify/-/browserify-14.5.0.tgz#0bbbce521acd6e4d1d54d8e9365008efb85a9cc5" - dependencies: - JSONStream "^1.0.3" - assert "^1.4.0" - browser-pack "^6.0.1" - browser-resolve "^1.11.0" - browserify-zlib "~0.2.0" - buffer "^5.0.2" - cached-path-relative "^1.0.0" - concat-stream "~1.5.1" - console-browserify "^1.1.0" - constants-browserify "~1.0.0" - crypto-browserify "^3.0.0" - defined "^1.0.0" - deps-sort "^2.0.0" - domain-browser "~1.1.0" - duplexer2 "~0.1.2" - events "~1.1.0" - glob "^7.1.0" - has "^1.0.0" - htmlescape "^1.1.0" - https-browserify "^1.0.0" - inherits "~2.0.1" - insert-module-globals "^7.0.0" - labeled-stream-splicer "^2.0.0" - module-deps "^4.0.8" - os-browserify "~0.3.0" - parents "^1.0.1" - path-browserify "~0.0.0" - process "~0.11.0" - punycode "^1.3.2" - querystring-es3 "~0.2.0" - read-only-stream "^2.0.0" - readable-stream "^2.0.2" - resolve "^1.1.4" - shasum "^1.0.0" - shell-quote "^1.6.1" - stream-browserify "^2.0.0" - stream-http "^2.0.0" - string_decoder "~1.0.0" - subarg "^1.0.0" - syntax-error "^1.1.1" - through2 "^2.0.0" - timers-browserify "^1.0.1" - tty-browserify "~0.0.0" - url "~0.11.0" - util "~0.10.1" - vm-browserify "~0.0.1" - xtend "^4.0.0" - browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" @@ -2113,13 +1862,6 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.1.0.tgz#c913e43678c7cb7c8bd16afbcddb6c5505e8f9fe" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - buildmail@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" @@ -2224,10 +1966,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -cached-path-relative@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7" - caching-transform@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" @@ -2301,10 +2039,6 @@ camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -2502,6 +2236,10 @@ chownr@^1.0.1, chownr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" +chrome-trace-event@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz#d395af2d31c87b90a716c831fe326f69768ec084" + ci-info@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" @@ -2635,8 +2373,8 @@ cliui@^3.2.0: wrap-ansi "^2.0.0" cliui@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" @@ -2808,15 +2546,6 @@ combine-lists@^1.0.0: dependencies: lodash "^4.5.0" -combine-source-map@^0.8.0, combine-source-map@~0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" - dependencies: - convert-source-map "~1.1.0" - inline-source-map "~0.6.0" - lodash.memoize "~3.0.3" - source-map "~0.5.3" - combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" @@ -2839,6 +2568,10 @@ commander@2.15.x, commander@^2.11.0, commander@^2.14.1, commander@^2.9.0, comman version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + commander@~2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" @@ -2898,7 +2631,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.4.10, concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0, concat-stream@^1.6.1: +concat-stream@^1.4.10, concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -2907,14 +2640,6 @@ concat-stream@^1.4.10, concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream readable-stream "^2.2.2" typedarray "^0.0.6" -concat-stream@~1.5.0, concat-stream@~1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" - dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" - concordance@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/concordance/-/concordance-3.0.0.tgz#b2286af54405fc995fc7345b0b106d8dd073cb29" @@ -2996,7 +2721,7 @@ constant-case@^2.0.0: snake-case "^2.1.0" upper-case "^1.1.1" -constants-browserify@^1.0.0, constants-browserify@~1.0.0: +constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -3170,10 +2895,6 @@ convert-source-map@^1.1.1, convert-source-map@^1.4.0, convert-source-map@^1.5.0, version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" -convert-source-map@~1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" - convert-to-spaces@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" @@ -3334,7 +3055,7 @@ cryptiles@3.x.x: dependencies: boom "5.x.x" -crypto-browserify@^3.0.0, crypto-browserify@^3.11.0: +crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" dependencies: @@ -3358,14 +3079,6 @@ 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-hot-loader@^1.3.4: - version "1.3.9" - resolved "https://registry.yarnpkg.com/css-hot-loader/-/css-hot-loader-1.3.9.tgz#ed22b41126920134a4a2246d7d32113e2425c754" - dependencies: - loader-utils "^1.1.0" - lodash "^4.17.5" - normalize-url "^1.9.1" - css-loader@^0.28.7: version "0.28.11" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7" @@ -3523,12 +3236,6 @@ cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - damerau-levenshtein@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" @@ -3606,7 +3313,7 @@ debug-log@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" -debug@2, debug@2.6.9, debug@^2.0.0, debug@^2.1.0, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9, debug@~2.6.4, debug@~2.6.6: +debug@2, debug@2.6.9, debug@^2.0.0, debug@^2.1.0, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9, debug@~2.6.4, debug@~2.6.6: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -3624,7 +3331,7 @@ debug@~2.2.0: dependencies: ms "0.7.1" -debuglog@^1.0.1: +debuglog@*, debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -3880,15 +3587,6 @@ depd@~1.1.1, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" -deps-sort@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" - dependencies: - JSONStream "^1.0.3" - shasum "^1.0.0" - subarg "^1.0.0" - through2 "^2.0.0" - des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" @@ -3922,13 +3620,6 @@ detect-node@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" -detective@^4.0.0: - version "4.7.1" - resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" - dependencies: - acorn "^5.2.1" - defined "^1.0.0" - dezalgo@^1.0.0, dezalgo@^1.0.1, dezalgo@^1.0.2, dezalgo@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" @@ -4023,10 +3714,6 @@ domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" -domain-browser@~1.1.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" - domelementtype@1, domelementtype@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" @@ -4137,7 +3824,7 @@ duplexer2@0.0.2: dependencies: readable-stream "~1.1.9" -duplexer2@^0.1.2, duplexer2@^0.1.4, duplexer2@~0.1.0, duplexer2@~0.1.2: +duplexer2@^0.1.4, duplexer2@~0.1.0: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" dependencies: @@ -4279,14 +3966,13 @@ engine.io@~3.1.0: optionalDependencies: uws "~9.14.0" -enhanced-resolve@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" +enhanced-resolve@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" dependencies: graceful-fs "^4.1.2" memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.7" + tapable "^1.0.0" ent@~2.2.0: version "2.2.0" @@ -4347,37 +4033,10 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" -es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.42" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.42.tgz#8c07dd33af04d5dcd1310b5cef13bea63a89ba8d" - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "1" - es6-error@^4.0.1, es6-error@^4.0.2: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" -es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - es6-promise@^4.0.3: version "4.2.4" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" @@ -4388,23 +4047,6 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-templates@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" @@ -4412,15 +4054,6 @@ es6-templates@^0.2.3: recast "~0.11.12" through "~2.3.6" -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -4451,15 +4084,6 @@ escodegen@1.x.x, escodegen@^1.6.1, escodegen@^1.9.0: optionalDependencies: source-map "~0.6.1" -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - eslint-config-airbnb-base@^12.0.1, eslint-config-airbnb-base@^12.1.0: version "12.1.0" resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.1.0.tgz#386441e54a12ccd957b0a92564a4bafebd747944" @@ -4511,10 +4135,10 @@ eslint-module-utils@^2.2.0: pkg-dir "^1.0.0" eslint-plugin-babel@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.0.0.tgz#57c082f89bfc67f535757a8a939617667c3c5c97" + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.1.0.tgz#9c76e476162041e50b6ba69aa4eae3bdd6a4e1c3" dependencies: - eslint-rule-composer "^0.1.1" + eslint-rule-composer "^0.3.0" eslint-plugin-import@^2.7.0, eslint-plugin-import@^2.8.0: version "2.11.0" @@ -4532,8 +4156,8 @@ eslint-plugin-import@^2.7.0, eslint-plugin-import@^2.8.0: resolve "^1.6.0" eslint-plugin-jest@^21.4.2: - version "21.15.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.15.0.tgz#645a3f560d3e61d99611b215adc80b4f31e6d896" + version "21.15.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.15.1.tgz#662a3f0888002878f0f388efd09c190a95c33d82" eslint-plugin-jsx-a11y@^6.0.2: version "6.0.3" @@ -4590,9 +4214,9 @@ eslint-restricted-globals@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" -eslint-rule-composer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.1.1.tgz#479dfd4e93d7f2777499a35ce9be76403c8e982a" +eslint-rule-composer@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" eslint-scope@^3.7.1, eslint-scope@~3.7.1: version "3.7.1" @@ -4710,18 +4334,11 @@ etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" +eventemitter3@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.0.1.tgz#4ce66c3fc5b5a6b9f2245e359e1938f1ab10f960" -events@^1.0.0, events@~1.1.0: +events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -4986,15 +4603,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-text-webpack-plugin@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7" - dependencies: - async "^2.4.1" - loader-utils "^1.1.0" - schema-utils "^0.3.0" - webpack-sources "^1.0.1" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -5284,6 +4892,12 @@ follow-redirects@1.0.0: dependencies: debug "^2.2.0" +follow-redirects@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.4.1.tgz#d8120f4518190f55aac65bb6fc7b85fcd666d6aa" + dependencies: + debug "^3.1.0" + for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -5415,6 +5029,12 @@ fs-extra@^5.0.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + fs-vacuum@~1.2.10, fs-vacuum@~1.2.9: version "1.2.10" resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" @@ -5437,13 +5057,13 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" fsevents@^1.0.0, fsevents@^1.1.1, fsevents@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + version "1.2.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.2.tgz#4f598f0f69b273188ef4a62ca4e9e08ace314bbf" dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.39" + nan "^2.9.2" + node-pre-gyp "^0.9.0" -fstream-ignore@^1.0.0, fstream-ignore@^1.0.5: +fstream-ignore@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" dependencies: @@ -5465,7 +5085,7 @@ fstream-npm@~1.2.1: fstream-ignore "^1.0.0" inherits "2" -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2, fstream@~1.0.10, fstream@~1.0.11: +fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10, fstream@~1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" dependencies: @@ -5775,7 +5395,7 @@ glob-stream@^5.3.2: to-absolute-glob "^0.1.1" unique-stream "^2.0.2" -glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: +glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -6160,7 +5780,7 @@ has-yarn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7" -has@^1.0.0, has@^1.0.1: +has@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" dependencies: @@ -6184,7 +5804,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.0" -hawk@3.1.3, hawk@~3.1.3: +hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" dependencies: @@ -6304,6 +5924,10 @@ html-tags@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" +html-webpack-include-sibling-chunks-plugin@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/html-webpack-include-sibling-chunks-plugin/-/html-webpack-include-sibling-chunks-plugin-0.1.4.tgz#2fd2bea03fcd6f4df24ceeefcbc0fa41679f9047" + html-webpack-plugin@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" @@ -6320,10 +5944,6 @@ html-webpack-template@^6.1.0: version "6.2.0" resolved "https://registry.yarnpkg.com/html-webpack-template/-/html-webpack-template-6.2.0.tgz#3c9f15f616f4500927909d34adfbccb20d37943c" -htmlescape@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" - htmlparser2@^3.9.1, htmlparser2@^3.9.2: version "3.9.2" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" @@ -6371,8 +5991,8 @@ http-errors@~1.6.2: statuses ">= 1.4.0 < 2" http-parser-js@>=0.4.0: - version "0.4.11" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.11.tgz#5b720849c650903c27e521633d94696ee95f3529" + version "0.4.12" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.12.tgz#b9cfbf4a2cf26f0fc34b10ca1489a27771e3474f" http-proxy-agent@1: version "1.0.0" @@ -6389,21 +6009,22 @@ http-proxy-agent@^2.0.0: agent-base "4" debug "3.1.0" -http-proxy-middleware@~0.17.4: - version "0.17.4" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" +http-proxy-middleware@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" dependencies: http-proxy "^1.16.2" - is-glob "^3.1.0" - lodash "^4.17.2" - micromatch "^2.3.11" + is-glob "^4.0.0" + lodash "^4.17.5" + micromatch "^3.1.9" http-proxy@^1.13.0, http-proxy@^1.16.2: - version "1.16.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" http-signature@~1.1.0: version "1.1.1" @@ -6492,7 +6113,7 @@ iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" -iconv-lite@^0.4.17, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.21" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.21.tgz#c47f8733d02171189ebc4a400f3218d348094798" dependencies: @@ -6520,6 +6141,12 @@ ignore-by-default@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + ignore@^3.3.3, ignore@^3.3.5, ignore@^3.3.6: version "3.3.7" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" @@ -6613,7 +6240,7 @@ import-local@^1.0.0: pkg-dir "^2.0.0" resolve-cwd "^2.0.0" -imurmurhash@^0.1.4: +imurmurhash@*, imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -6688,12 +6315,6 @@ init-package-json@~1.9.4: validate-npm-package-license "^3.0.1" validate-npm-package-name "^3.0.0" -inline-source-map@~0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" - dependencies: - source-map "~0.5.3" - inquirer@^1.0.2: version "1.2.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918" @@ -6732,20 +6353,6 @@ inquirer@^3.0.1, inquirer@^3.0.6, inquirer@^3.2.2, inquirer@^3.3.0: strip-ansi "^4.0.0" through "^2.3.6" -insert-module-globals@^7.0.0: - version "7.0.6" - resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.6.tgz#15a31d9d394e76d08838b9173016911d7fd4ea1b" - dependencies: - JSONStream "^1.0.3" - combine-source-map "^0.8.0" - concat-stream "^1.6.1" - is-buffer "^1.1.0" - lexical-scope "^1.2.0" - path-is-absolute "^1.0.1" - process "~0.11.0" - through2 "^2.0.0" - xtend "^4.0.0" - inspect-f@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/inspect-f/-/inspect-f-1.2.2.tgz#7572803dc59099850e51d5c94f3d7962df10e46d" @@ -6813,16 +6420,16 @@ is-accessor-descriptor@^1.0.0: kind-of "^6.0.0" is-alphabetical@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.1.tgz#c77079cc91d4efac775be1034bf2d243f95e6f08" + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.2.tgz#1fa6e49213cb7885b75d15862fb3f3d96c884f41" is-alphanumeric@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" is-alphanumerical@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz#dfb4aa4d1085e33bdb61c2dee9c80e9c6c19f53b" + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz#1138e9ae5040158dc6ff76b820acd6b7a181fd40" dependencies: is-alphabetical "^1.0.0" is-decimal "^1.0.0" @@ -6837,7 +6444,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.1.0, is-buffer@^1.1.4, is-buffer@^1.1.5: +is-buffer@^1.1.4, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -6884,8 +6491,8 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" is-decimal@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.1.tgz#f5fb6a94996ad9e8e3761fbfbd091f1fca8c4e82" + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.2.tgz#894662d6a8709d307f3a276ca4339c8fa5dff0ff" is-descriptor@^0.1.0: version "0.1.6" @@ -6986,8 +6593,8 @@ is-gzip@^1.0.0: resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" is-hexadecimal@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz#6e084bbc92061fbb0971ec58b6ce6d404e24da69" + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz#b6e710d7d07bb66b98cb8cece5c9b4921deeb835" is-installed-globally@^0.1.0: version "0.1.0" @@ -7215,8 +6822,8 @@ is-valid-glob@^0.3.0: resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" is-whitespace-character@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz#9ae0176f3282b65457a1992cdb084f8a5f833e3b" + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz#ede53b4c6f6fb3874533751ec9280d01928d03ed" is-windows@^1.0.2: version "1.0.2" @@ -7246,10 +6853,6 @@ isarray@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" -isarray@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7" - isbinaryfile@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" @@ -7795,8 +7398,8 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jsdom@^11.5.1: - version "11.8.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.8.0.tgz#a52e9a7d2b931284f62c80dad5f17d7390499d8b" + version "11.9.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.9.0.tgz#58ac6dfd248d560d736b0202d74eedad55590cd9" dependencies: abab "^1.0.4" acorn "^5.3.0" @@ -7861,10 +7464,6 @@ jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" -json-loader@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" - json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -7887,12 +7486,6 @@ json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stable-stringify@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" - dependencies: - jsonify "~0.0.0" - json-stringify-safe@5.0.x, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -7993,12 +7586,11 @@ karma-webpack@^3.0.0: webpack-dev-middleware "^2.0.6" karma@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.0.tgz#a02698dd7f0f05ff5eb66ab8f65582490b512e58" + version "2.0.2" + resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.2.tgz#4d2db9402850a66551fa784b0164fb0824ed8c4b" dependencies: bluebird "^3.3.0" body-parser "^1.16.1" - browserify "^14.5.0" chokidar "^1.4.1" colors "^1.1.0" combine-lists "^1.0.0" @@ -8023,7 +7615,7 @@ karma@^2.0.0: socket.io "2.0.4" source-map "^0.6.1" tmp "0.0.33" - useragent "^2.1.12" + useragent "2.2.1" killable@^1.0.0: version "1.0.0" @@ -8059,20 +7651,12 @@ known-css-properties@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.5.0.tgz#6ff66943ed4a5b55657ee095779a91f4536f8084" -labeled-stream-splicer@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz#9cffa32fd99e1612fd1d86a8db962416d5292926" - dependencies: - inherits "^2.0.1" - isarray "^2.0.4" - stream-splicer "^2.0.0" - -last-call-webpack-plugin@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-2.1.2.tgz#ad80c6e310998294d2ed2180a68e9589e4768c44" +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" dependencies: - lodash "^4.17.4" - webpack-sources "^1.0.1" + lodash "^4.17.5" + webpack-sources "^1.1.0" last-line-stream@^1.0.0: version "1.0.0" @@ -8115,8 +7699,8 @@ left-pad@^1.2.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" lerna@^2.5.1: - version "2.10.2" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-2.10.2.tgz#3a0d54d398360fecc5918207c6d7ab68a5443d9f" + version "2.11.0" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-2.11.0.tgz#89b5681e286d388dda5bbbdbbf6b84c8094eff65" dependencies: async "^1.5.0" chalk "^2.1.0" @@ -8169,12 +7753,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lexical-scope@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4" - dependencies: - astw "^2.0.0" - libbase64@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6" @@ -8339,6 +7917,10 @@ lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" +lodash._baseindexof@*: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c" + lodash._basetostring@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" @@ -8354,11 +7936,25 @@ lodash._basevalues@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" +lodash._bindcallback@*: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + +lodash._cacheindexof@*: + version "3.0.2" + resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92" + +lodash._createcache@*: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093" + dependencies: + lodash._getnative "^3.0.0" + lodash._createset@~4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" -lodash._getnative@^3.0.0: +lodash._getnative@*, lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" @@ -8448,10 +8044,6 @@ lodash.isequal@^4.0.0, lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" @@ -8468,10 +8060,6 @@ lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" -lodash.memoize@~3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" - lodash.merge@^4.4.0, lodash.merge@^4.6.0: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" @@ -8500,11 +8088,11 @@ lodash.reject@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" -lodash.restparam@^3.0.0: +lodash.restparam@*, lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" -lodash.some@^4.4.0, lodash.some@^4.6.0: +lodash.some@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" @@ -8563,8 +8151,8 @@ lodash@4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.11.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.1: - version "4.17.5" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" lodash@^3.8.0: version "3.10.1" @@ -8679,7 +8267,11 @@ lpad-align@^1.0.1: longest "^1.0.0" meow "^3.3.0" -lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@~4.1.1: +lru-cache@2.2.x: + version "2.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" + +lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@~4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" dependencies: @@ -8773,8 +8365,8 @@ markdown-escapes@^1.0.0: resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.2.tgz#e639cbde7b99c841c0bacc8a07982873b46d2122" markdown-table@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.1.tgz#4b3dd3a133d1518b8ef0dbc709bf2a1b4824bc8c" + version "1.1.2" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.2.tgz#c78db948fa879903a41bce522e3b96f801c63786" matcher@^1.0.0: version "1.1.0" @@ -8821,8 +8413,8 @@ mdast-util-compact@^1.0.0: unist-util-visit "^1.1.0" mdn-data@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.1.tgz#79586c90321787e5a2e51eb6823bb448949bc1ab" + version "1.1.2" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.2.tgz#ceaa6a831b4de494352af984d301e3a8f2cad6e5" media-typer@0.3.0: version "0.3.0" @@ -8935,7 +8527,7 @@ micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.1.4, micromatch@^3.1.8: +micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" dependencies: @@ -8974,7 +8566,7 @@ mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" -mime@^1.3.4, mime@^1.5.0: +mime@^1.3.4: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -8996,6 +8588,13 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" +mini-css-extract-plugin@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.0.tgz#ff3bf08bee96e618e177c16ca6131bfecef707f9" + dependencies: + loader-utils "^1.1.0" + webpack-sources "^1.1.0" + minimalistic-assert@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -9037,6 +8636,19 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" +minipass@^2.2.1, minipass@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.4.tgz#03c824d84551ec38a8d1bb5bc350a5a30a354a40" + dependencies: + safe-buffer "^5.1.1" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + dependencies: + minipass "^2.2.1" + mississippi@^1.2.0, mississippi@^1.3.0, mississippi@~1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.1.tgz#2a8bb465e86550ac8b36a7b6f45599171d78671e" @@ -9108,26 +8720,6 @@ modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" -module-deps@^4.0.8: - version "4.1.1" - resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd" - dependencies: - JSONStream "^1.0.3" - browser-resolve "^1.7.0" - cached-path-relative "^1.0.0" - concat-stream "~1.5.0" - defined "^1.0.0" - detective "^4.0.0" - duplexer2 "^0.1.2" - inherits "^2.0.1" - parents "^1.0.0" - readable-stream "^2.0.2" - resolve "^1.1.3" - stream-combiner2 "^1.1.1" - subarg "^1.0.0" - through2 "^2.0.0" - xtend "^4.0.0" - moment@^2.6.0: version "2.22.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad" @@ -9197,11 +8789,7 @@ mute-stream@0.0.7, mute-stream@~0.0.4: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -name-all-modules-plugin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/name-all-modules-plugin/-/name-all-modules-plugin-1.0.1.tgz#0abfb6ad835718b9fb4def0674e06657a954375c" - -nan@^2.3.0: +nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -9230,6 +8818,14 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +needle@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.0.tgz#f14efc69cee1024b72c8b21c7bdf94a731dc12fa" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -9242,10 +8838,6 @@ netmask@~1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" -next-tick@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - nice-try@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" @@ -9334,21 +8926,20 @@ node-notifier@^5.0.2: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@^0.6.39: - version "0.6.39" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" +node-pre-gyp@^0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz#f11c07516dd92f87199dbc7e1838eab7cd56c9e0" dependencies: detect-libc "^1.0.2" - hawk "3.1.3" mkdirp "^0.5.1" + needle "^2.2.0" nopt "^4.0.1" + npm-packlist "^1.1.6" npmlog "^4.0.2" rc "^1.1.7" - request "2.81.0" rimraf "^2.6.1" semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" + tar "^4" node-status-codes@^1.0.0: version "1.0.0" @@ -9467,7 +9058,7 @@ normalize-selector@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" -normalize-url@^1.4.0, normalize-url@^1.9.1: +normalize-url@^1.4.0: version "1.9.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" dependencies: @@ -9476,6 +9067,10 @@ normalize-url@^1.4.0, normalize-url@^1.9.1: query-string "^4.1.0" sort-keys "^1.0.0" +npm-bundled@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + npm-cache-filename@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" @@ -9532,6 +9127,13 @@ npm-package-arg@~4.1.0: hosted-git-info "^2.1.4" semver "4 || 5" +npm-packlist@^1.1.6: + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-path@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" @@ -9993,12 +9595,12 @@ optimist@0.6.1, optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optimize-css-assets-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-3.2.0.tgz#09a40c4cefde1dd0142444a873c56aa29eb18e6f" +optimize-css-assets-webpack-plugin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-4.0.0.tgz#d5f80041fb1391b358a1f35273c3b53de814e8fe" dependencies: cssnano "^3.4.0" - last-call-webpack-plugin "^2.1.2" + last-call-webpack-plugin "^3.0.0" option-chain@^1.0.0: version "1.0.0" @@ -10048,7 +9650,7 @@ original@>=0.0.5: dependencies: url-parse "1.0.x" -os-browserify@^0.3.0, os-browserify@~0.3.0: +os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -10060,12 +9662,6 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" @@ -10235,12 +9831,6 @@ param-case@2.1.x, param-case@^2.1.0: dependencies: no-case "^2.2.0" -parents@^1.0.0, parents@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" - dependencies: - path-platform "~0.11.15" - parse-asn1@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" @@ -10341,7 +9931,7 @@ pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" -path-browserify@0.0.0, path-browserify@~0.0.0: +path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" @@ -10381,10 +9971,6 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" -path-platform@~0.11.15: - version "0.11.15" - resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" - path-proxy@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e" @@ -10422,8 +10008,8 @@ path-type@^3.0.0: pify "^3.0.0" pbkdf2@^3.0.3: - version "3.0.14" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + version "3.0.16" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -10928,7 +10514,7 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -process@^0.11.10, process@~0.11.0: +process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -11051,7 +10637,7 @@ punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -punycode@1.4.1, punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1: +punycode@1.4.1, punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -11094,7 +10680,7 @@ query-string@^4.1.0: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -querystring-es3@^0.2.0, querystring-es3@~0.2.0: +querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -11106,9 +10692,9 @@ querystringify@0.0.x: version "0.0.4" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" -querystringify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" +querystringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" quick-lru@^1.0.0: version "1.1.0" @@ -11231,12 +10817,6 @@ read-installed@~4.0.3: optionalDependencies: graceful-fs "^4.1.2" -read-only-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" - dependencies: - readable-stream "^2.0.2" - "read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@~2.0.4, read-package-json@~2.0.9: version "2.0.13" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" @@ -11309,7 +10889,7 @@ read@1, read@~1.0.1, read@~1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@~2.3.2: +"readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@~2.3.2: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -11339,7 +10919,7 @@ readable-stream@1.1.x, "readable-stream@1.x >=1.1.9", readable-stream@~1.1.10, r isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@~2.0.0, readable-stream@~2.0.5: +readable-stream@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" dependencies: @@ -11362,7 +10942,7 @@ readable-stream@~2.1.5: string_decoder "~0.10.x" util-deprecate "~1.0.1" -readdir-scoped-modules@^1.0.0: +readdir-scoped-modules@*, readdir-scoped-modules@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" dependencies: @@ -11784,7 +11364,7 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" -requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0: +requires-port@1.0.x, requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -11818,7 +11398,7 @@ resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.6, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0: +resolve@^1.1.6, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0: version "1.7.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" dependencies: @@ -11852,7 +11432,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.0, rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.1: +rimraf@2, rimraf@^2.2.0, rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -11953,13 +11533,7 @@ sax@^1.2.1, sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" -schema-utils@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" - dependencies: - ajv "^5.0.0" - -schema-utils@^0.4.0, schema-utils@^0.4.3, schema-utils@^0.4.5: +schema-utils@^0.4.0, schema-utils@^0.4.3, schema-utils@^0.4.4, schema-utils@^0.4.5: version "0.4.5" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" dependencies: @@ -12118,7 +11692,7 @@ setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" -sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: +sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" dependencies: @@ -12132,13 +11706,6 @@ sha@~2.0.1: graceful-fs "^4.1.2" readable-stream "^2.0.2" -shasum@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" - dependencies: - json-stable-stringify "~0.0.0" - sha.js "~2.4.4" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -12149,15 +11716,6 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - shelljs@^0.7.0: version "0.7.8" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" @@ -12426,7 +11984,7 @@ source-map@0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -12608,8 +12166,8 @@ stat-mode@^0.2.0: resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" state-toggle@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.0.tgz#d20f9a616bb4f0c3b98b91922d25b640aa2bc425" + version "1.0.1" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.1.tgz#c3cb0974f40a6a0f8e905b96789eb41afa1cde3a" static-extend@^0.1.1: version "0.1.2" @@ -12634,7 +12192,7 @@ stealthy-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" -stream-browserify@^2.0.0, stream-browserify@^2.0.1: +stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" dependencies: @@ -12655,7 +12213,7 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" -stream-http@^2.0.0, stream-http@^2.7.2: +stream-http@^2.7.2: version "2.8.1" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.1.tgz#d0441be1a457a73a733a8a7b53570bebd9ef66a4" dependencies: @@ -12676,13 +12234,6 @@ stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" -stream-splicer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.2" - stream-to-observable@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.2.0.tgz#59d6ea393d87c2c0ddac10aa0d561bc6ba6f0e10" @@ -12742,12 +12293,6 @@ string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -string_decoder@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" - dependencies: - safe-buffer "~5.1.0" - stringify-entities@^1.0.1: version "1.3.1" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.1.tgz#b150ec2d72ac4c1b5f324b51fb6b28c9cdff058c" @@ -12936,12 +12481,6 @@ stylelint@^8.0.0: svg-tags "^1.0.0" table "^4.0.1" -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - dependencies: - minimist "^1.1.0" - sugarss@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.1.tgz#be826d9003e0f247735f92365dc3fd7f1bae9e44" @@ -12980,12 +12519,6 @@ supports-color@^3.1.0, supports-color@^3.1.2, supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^4.2.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - dependencies: - has-flag "^2.0.0" - supports-color@^5.0.0, supports-color@^5.1.0, supports-color@^5.3.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" @@ -13050,12 +12583,6 @@ symbol-tree@^3.2.1, symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" -syntax-error@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" - dependencies: - acorn-node "^1.2.0" - table@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" @@ -13078,10 +12605,6 @@ table@^4.0.1: slice-ansi "1.0.0" string-width "^2.1.1" -tapable@^0.2.7: - version "0.2.8" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" - tapable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" @@ -13095,19 +12618,6 @@ tar-fs@^1.15.3: pump "^1.0.0" tar-stream "^1.1.2" -tar-pack@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - tar-stream@^1.1.1, tar-stream@^1.1.2, tar-stream@^1.5.2, tar-stream@^1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55" @@ -13117,7 +12627,7 @@ tar-stream@^1.1.1, tar-stream@^1.1.2, tar-stream@^1.5.2, tar-stream@^1.5.4: readable-stream "^2.0.0" xtend "^4.0.0" -tar@^2.0.0, tar@^2.2.1, tar@~2.2.1: +tar@^2.0.0, tar@~2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" dependencies: @@ -13125,6 +12635,18 @@ tar@^2.0.0, tar@^2.2.1, tar@~2.2.1: fstream "^1.0.2" inherits "2" +tar@^4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.1.tgz#b25d5a8470c976fd7a9a8a350f42c59e9fa81749" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.2.4" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.1" + yallist "^3.0.2" + temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" @@ -13227,10 +12749,6 @@ time-stamp@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" -time-stamp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" - time-zone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" @@ -13243,12 +12761,6 @@ timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" -timers-browserify@^1.0.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" - dependencies: - process "~0.11.0" - timers-browserify@^2.0.4: version "2.0.10" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" @@ -13346,7 +12858,7 @@ tough-cookie@>=2.3.3, tough-cookie@^2.3.2, tough-cookie@^2.3.3, tough-cookie@~2. dependencies: punycode "^1.4.1" -tr46@^1.0.0: +tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" dependencies: @@ -13398,10 +12910,6 @@ tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" -tty-browserify@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" - tunnel-agent@^0.4.0, tunnel-agent@~0.4.1: version "0.4.3" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" @@ -13433,7 +12941,7 @@ type-is@~1.6.15, type-is@~1.6.16: media-typer "0.3.0" mime-types "~2.1.18" -typedarray@^0.0.6, typedarray@~0.0.5: +typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -13441,14 +12949,21 @@ ua-parser-js@^0.7.9: version "0.7.17" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" +uglify-es@^3.3.4: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + uglify-js@3.3.x: - version "3.3.21" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.21.tgz#851a34cbb31840ecb881968ed07dd3a61e7264a0" + version "3.3.22" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.22.tgz#e5f0e50ddd386b7e35b728b51600bf7a7ad0b0dc" dependencies: commander "~2.15.0" source-map "~0.6.1" -uglify-js@^2.6, uglify-js@^2.8.29: +uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" dependencies: @@ -13461,15 +12976,20 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" -uglifyjs-webpack-plugin@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" +uglifyjs-webpack-plugin@^1.2.4: + version "1.2.5" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz#2ef8387c8f1a903ec5e44fa36f9f3cbdcea67641" dependencies: - source-map "^0.5.6" - uglify-js "^2.8.29" - webpack-sources "^1.0.1" + cacache "^10.0.4" + find-cache-dir "^1.0.0" + schema-utils "^0.4.5" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" -uid-number@0.0.6, uid-number@^0.0.6: +uid-number@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -13485,10 +13005,6 @@ umask@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" -umd@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" - unbzip2-stream@^1.0.9: version "1.2.5" resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47" @@ -13700,6 +13216,10 @@ url-join@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" +url-join@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" + url-loader@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.0.1.tgz#61bc53f1f184d7343da2728a1289ef8722ea45ee" @@ -13722,11 +13242,11 @@ url-parse@1.0.x: requires-port "1.0.x" url-parse@^1.1.8: - version "1.3.0" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.3.0.tgz#04a06c420d22beb9804f7ada2d57ad13160a4258" + version "1.4.0" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.0.tgz#6bfdaad60098c7fe06f623e42b22de62de0d3d75" dependencies: - querystringify "~1.0.0" - requires-port "~1.0.0" + querystringify "^2.0.0" + requires-port "^1.0.0" url-regex@^3.0.0: version "3.2.0" @@ -13738,7 +13258,7 @@ url-to-options@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" -url@^0.11.0, url@~0.11.0: +url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" dependencies: @@ -13761,11 +13281,11 @@ user-home@2.0.0, user-home@^2.0.0: dependencies: os-homedir "^1.0.0" -useragent@^2.1.12: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" +useragent@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" dependencies: - lru-cache "4.1.x" + lru-cache "2.2.x" tmp "0.0.x" util-deprecate@~1.0.1: @@ -13783,7 +13303,7 @@ util.promisify@1.0.0, util.promisify@~1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -util@0.10.3, util@^0.10.3, util@~0.10.1: +util@0.10.3, util@^0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" dependencies: @@ -13821,7 +13341,7 @@ vali-date@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" -validate-npm-package-license@^3.0.1, validate-npm-package-license@~3.0.1: +validate-npm-package-license@*, validate-npm-package-license@^3.0.1, validate-npm-package-license@~3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" dependencies: @@ -13845,8 +13365,8 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" vendors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + version "1.0.2" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" verror@1.10.0: version "1.10.0" @@ -13949,7 +13469,7 @@ vinyl@^2.0.1: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -vm-browserify@0.0.4, vm-browserify@~0.0.1: +vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" dependencies: @@ -14035,7 +13555,7 @@ watch@~0.18.0: exec-sh "^0.2.0" minimist "^1.2.0" -watchpack@^1.4.0: +watchpack@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed" dependencies: @@ -14059,25 +13579,27 @@ webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" -webidl-conversions@^4.0.0, webidl-conversions@^4.0.1, webidl-conversions@^4.0.2: +webidl-conversions@^4.0.0, webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" -webpack-chain@^4.5.0: +webpack-chain@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-4.6.0.tgz#3ff51bd6241ed78a62691b8da7b9dec3fcc346a0" dependencies: deepmerge "^1.5.2" -webpack-dev-middleware@1.12.2: - version "1.12.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e" +webpack-dev-middleware@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.1.2.tgz#be4d0c36a4fa7d69d6904093418514caa9df3a40" dependencies: + loud-rejection "^1.6.0" memory-fs "~0.4.1" - mime "^1.5.0" + mime "^2.1.0" path-is-absolute "^1.0.0" range-parser "^1.0.3" - time-stamp "^2.0.0" + url-join "^4.0.0" + webpack-log "^1.0.1" webpack-dev-middleware@^2.0.6: version "2.0.6" @@ -14091,9 +13613,9 @@ webpack-dev-middleware@^2.0.6: url-join "^2.0.2" webpack-log "^1.0.1" -webpack-dev-server@^2.9.7: - version "2.11.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz#1f4f4c78bf1895378f376815910812daf79a216f" +webpack-dev-server@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.3.tgz#5cecfd8a9d60c4638284813f1cf9562f04e5c1c5" dependencies: ansi-html "0.0.7" array-includes "^3.0.3" @@ -14105,7 +13627,7 @@ webpack-dev-server@^2.9.7: del "^3.0.0" express "^4.16.2" html-entities "^1.2.0" - http-proxy-middleware "~0.17.4" + http-proxy-middleware "~0.18.0" import-local "^1.0.0" internal-ip "1.2.0" ip "^1.1.5" @@ -14120,10 +13642,11 @@ webpack-dev-server@^2.9.7: spdy "^3.4.1" strip-ansi "^3.0.0" supports-color "^5.1.0" - webpack-dev-middleware "1.12.2" - yargs "6.6.0" + webpack-dev-middleware "3.1.2" + webpack-log "^1.1.2" + yargs "11.0.0" -webpack-log@^1.0.1: +webpack-log@^1.0.1, webpack-log@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" dependencies: @@ -14133,8 +13656,8 @@ webpack-log@^1.0.1: uuid "^3.1.0" webpack-manifest-plugin@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.0.tgz#691a0209e12083c375f6f22732ebc0e660437529" + version "2.0.1" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.1.tgz#9ef26040eb2980bfcdd74a3ef88b6562c559469f" dependencies: fs-extra "^0.30.0" lodash ">=3.5 <5" @@ -14144,46 +13667,36 @@ webpack-node-externals@^1.6.0: version "1.7.2" resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz#6e1ee79ac67c070402ba700ef033a9b8d52ac4e3" -webpack-sources@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf" - dependencies: - source-list-map "^2.0.0" - source-map "~0.5.3" - -webpack-sources@^1.0.0, webpack-sources@^1.0.1: +webpack-sources@^1.0.0, webpack-sources@^1.0.1, webpack-sources@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" dependencies: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^3.10.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz#77da451b1d7b4b117adaf41a1a93b5742f24d894" +webpack@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.6.0.tgz#363eafa733710eb0ed28c512b2b9b9f5fb01e69b" dependencies: acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" + acorn-dynamic-import "^3.0.0" ajv "^6.1.0" ajv-keywords "^3.1.0" - async "^2.1.2" - enhanced-resolve "^3.4.0" - escope "^3.6.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" + chrome-trace-event "^0.1.1" + enhanced-resolve "^4.0.0" + eslint-scope "^3.7.1" loader-runner "^2.3.0" loader-utils "^1.1.0" memory-fs "~0.4.1" + micromatch "^3.1.8" mkdirp "~0.5.0" + neo-async "^2.5.0" node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^4.2.1" - tapable "^0.2.7" - uglifyjs-webpack-plugin "^0.4.6" - watchpack "^1.4.0" + schema-utils "^0.4.4" + tapable "^1.0.0" + uglifyjs-webpack-plugin "^1.2.4" + watchpack "^1.5.0" webpack-sources "^1.0.1" - yargs "^8.0.2" websocket-driver@>=0.5.1: version "0.7.0" @@ -14222,12 +13735,12 @@ whatwg-url@^4.3.0: webidl-conversions "^3.0.0" whatwg-url@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.0.tgz#08fdf2b9e872783a7a1f6216260a1d66cc722e08" + version "6.4.1" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.1.tgz#fdb94b440fd4ad836202c16e9737d511f012fd67" dependencies: lodash.sortby "^4.7.0" - tr46 "^1.0.0" - webidl-conversions "^4.0.1" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" when@^3.7.7: version "3.7.8" @@ -14237,10 +13750,6 @@ whet.extend@~0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -14285,7 +13794,7 @@ wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" -worker-farm@^1.3.1: +worker-farm@^1.3.1, worker-farm@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" dependencies: @@ -14437,11 +13946,9 @@ yallist@^2.0.0, yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" - dependencies: - camelcase "^3.0.0" +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" yargs-parser@^7.0.0: version "7.0.0" @@ -14461,9 +13968,9 @@ yargs-parser@^9.0.2: dependencies: camelcase "^4.1.0" -yargs@11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" +yargs@11.0.0, yargs@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" dependencies: cliui "^4.0.0" decamelize "^1.1.1" @@ -14478,27 +13985,9 @@ yargs@11.1.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" - -yargs@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" +yargs@11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" dependencies: cliui "^4.0.0" decamelize "^1.1.1"