diff --git a/.eslintrc.js b/.eslintrc.js index 477b21dbaef..639c80155a3 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -61,7 +61,7 @@ module.exports = { browser: true }, globals: { - Promise: false, + Promise: false }, parserOptions: { ecmaVersion: 5 @@ -71,6 +71,9 @@ module.exports = { files: ["test/**/*.js"], env: { "jest/globals": true + }, + globals: { + nsObj: false } } ] diff --git a/README.md b/README.md index 3a3c583cf2b..5c009e538c7 100644 --- a/README.md +++ b/README.md @@ -92,16 +92,19 @@ within webpack itself use this plugin interface. This makes webpack very |Name|Status|Install Size|Description| |:--:|:----:|:----------:|:----------| -|[extract-text-webpack-plugin][extract]|![extract-npm]|![extract-size]|Extracts Text (CSS) from your bundles into a separate file (app.bundle.css)| +|[mini-css-extract-plugin][mini-css]|![mini-css-npm]|![mini-css-size]|Extracts CSS into separate files. It creates a CSS file per JS file which contains CSS.| |[compression-webpack-plugin][compression]|![compression-npm]|![compression-size]|Prepares compressed versions of assets to serve them with Content-Encoding| |[i18n-webpack-plugin][i18n]|![i18n-npm]|![i18n-size]|Adds i18n support to your bundles| |[html-webpack-plugin][html-plugin]|![html-plugin-npm]|![html-plugin-size]| Simplifies creation of HTML files (`index.html`) to serve your bundles| - +|[extract-text-webpack-plugin][extract]|![extract-npm]|![extract-size]|Extract text from a bundle, or bundles, into a separate file| [common-npm]: https://img.shields.io/npm/v/webpack.svg [extract]: https://github.com/webpack/extract-text-webpack-plugin [extract-npm]: https://img.shields.io/npm/v/extract-text-webpack-plugin.svg [extract-size]: https://packagephobia.now.sh/badge?p=extract-text-webpack-plugin +[mini-css]: https://github.com/webpack-contrib/mini-css-extract-plugin +[mini-css-npm]: https://img.shields.io/npm/v/mini-css-extract-plugin.svg +[mini-css-size]: https://packagephobia.now.sh/badge?p=mini-css-extract-plugin [component]: https://github.com/webpack/component-webpack-plugin [component-npm]: https://img.shields.io/npm/v/component-webpack-plugin.svg [component-size]: https://packagephobia.now.sh/badge?p=component-webpack-plugin diff --git a/_SETUP.md b/_SETUP.md index ebd501013be..ce57ab77540 100644 --- a/_SETUP.md +++ b/_SETUP.md @@ -27,7 +27,7 @@ yarn link webpack yarn test ``` -### To run only intergration tests use +### To run only integration tests use ```bash yarn test:integration diff --git a/declarations.d.ts b/declarations.d.ts index 81a0b7c0f29..bd50da6c9b9 100644 --- a/declarations.d.ts +++ b/declarations.d.ts @@ -7,7 +7,6 @@ declare namespace NodeJS { } } - declare module "neo-async" { export interface Dictionary { [key: string]: T; diff --git a/examples/many-pages/README.md b/examples/many-pages/README.md index 00d976fbc20..84ef71ada33 100644 --- a/examples/many-pages/README.md +++ b/examples/many-pages/README.md @@ -1,6 +1,6 @@ # Info -This example illustrates webpack's algorthim for automatic deduplication using `optimization.splitChunks`. +This example illustrates webpack's algorithm for automatic deduplication using `optimization.splitChunks`. This example application contains 7 pages, each of them importing 1-3 modules from the `node_modules` folder (vendor libs) and 0-3 modules from the `stuff` folder (application modules). In reallity an application is probably more complex, but the same mechanisms apply. @@ -41,7 +41,7 @@ module.exports = { chunks: "all", maxInitialRequests: 20, // for HTTP2 maxAsyncRequests: 20, // for HTTP2 - minSize: 40 // for example only: choosen to match 2 modules + minSize: 40 // for example only: chosen to match 2 modules // omit minSize in real use case to use the default of 30kb } } diff --git a/examples/many-pages/template.md b/examples/many-pages/template.md index 7bbc7b0dd44..b4633cf6dfb 100644 --- a/examples/many-pages/template.md +++ b/examples/many-pages/template.md @@ -1,6 +1,6 @@ # Info -This example illustrates webpack's algorthim for automatic deduplication using `optimization.splitChunks`. +This example illustrates webpack's algorithm for automatic deduplication using `optimization.splitChunks`. This example application contains 7 pages, each of them importing 1-3 modules from the `node_modules` folder (vendor libs) and 0-3 modules from the `stuff` folder (application modules). In reallity an application is probably more complex, but the same mechanisms apply. diff --git a/examples/many-pages/webpack.config.js b/examples/many-pages/webpack.config.js index f47598f6309..b5ce749f624 100644 --- a/examples/many-pages/webpack.config.js +++ b/examples/many-pages/webpack.config.js @@ -14,7 +14,7 @@ module.exports = { chunks: "all", maxInitialRequests: 20, // for HTTP2 maxAsyncRequests: 20, // for HTTP2 - minSize: 40 // for example only: choosen to match 2 modules + minSize: 40 // for example only: chosen to match 2 modules // omit minSize in real use case to use the default of 30kb } } diff --git a/hot/dev-server.js b/hot/dev-server.js index a4cb0f50d24..682a47f8423 100644 --- a/hot/dev-server.js +++ b/hot/dev-server.js @@ -40,10 +40,10 @@ if (module.hot) { "warning", "[HMR] Cannot apply update. Need to do a full reload!" ); - log("warning", "[HMR] " + err.stack || err.message); + log("warning", "[HMR] " + (err.stack || err.message)); window.location.reload(); } else { - log("warning", "[HMR] Update failed: " + err.stack || err.message); + log("warning", "[HMR] Update failed: " + (err.stack || err.message)); } }); }; diff --git a/hot/only-dev-server.js b/hot/only-dev-server.js index cf452dc6e33..043f2430b54 100644 --- a/hot/only-dev-server.js +++ b/hot/only-dev-server.js @@ -72,11 +72,11 @@ if (module.hot) { "warning", "[HMR] Cannot check for update. Need to do a full reload!" ); - log("warning", "[HMR] " + err.stack || err.message); + log("warning", "[HMR] " + (err.stack || err.message)); } else { log( "warning", - "[HMR] Update check failed: " + err.stack || err.message + "[HMR] Update check failed: " + (err.stack || err.message) ); } }); diff --git a/hot/poll.js b/hot/poll.js index f615accef7a..8193db01f5c 100644 --- a/hot/poll.js +++ b/hot/poll.js @@ -23,10 +23,13 @@ if (module.hot) { var status = module.hot.status(); if (["abort", "fail"].indexOf(status) >= 0) { log("warning", "[HMR] Cannot apply update."); - log("warning", "[HMR] " + err.stack || err.message); + log("warning", "[HMR] " + (err.stack || err.message)); log("warning", "[HMR] You need to restart the application!"); } else { - log("warning", "[HMR] Update failed: " + err.stack || err.message); + log( + "warning", + "[HMR] Update failed: " + (err.stack || err.message) + ); } }); } diff --git a/hot/signal.js b/hot/signal.js index d3ce50e8cc5..24c4f5cb337 100644 --- a/hot/signal.js +++ b/hot/signal.js @@ -37,10 +37,10 @@ if (module.hot) { var status = module.hot.status(); if (["abort", "fail"].indexOf(status) >= 0) { log("warning", "[HMR] Cannot apply update."); - log("warning", "[HMR] " + err.stack || err.message); + log("warning", "[HMR] " + (err.stack || err.message)); log("warning", "[HMR] You need to restart the application!"); } else { - log("warning", "[HMR] Update failed: " + err.stack || err.message); + log("warning", "[HMR] Update failed: " + (err.stack || err.message)); } }); }; diff --git a/lib/AutomaticPrefetchPlugin.js b/lib/AutomaticPrefetchPlugin.js index ccb7d856b4a..2d0db16ecdb 100644 --- a/lib/AutomaticPrefetchPlugin.js +++ b/lib/AutomaticPrefetchPlugin.js @@ -8,7 +8,7 @@ const asyncLib = require("neo-async"); const PrefetchDependency = require("./dependencies/PrefetchDependency"); const NormalModule = require("./NormalModule"); -/** @typedef {import("./Compiler.js")} Compiler */ +/** @typedef {import("./Compiler")} Compiler */ class AutomaticPrefetchPlugin { /** diff --git a/lib/Chunk.js b/lib/Chunk.js index 46cd61d456c..b0eec5d5188 100644 --- a/lib/Chunk.js +++ b/lib/Chunk.js @@ -13,9 +13,9 @@ const ERR_CHUNK_ENTRY = "Chunk.entry was removed. Use hasRuntime()"; const ERR_CHUNK_INITIAL = "Chunk.initial was removed. Use canBeInitial/isOnlyInitial()"; -/** @typedef {import("./Module.js")} Module */ +/** @typedef {import("./Module")} Module */ /** @typedef {import("./ChunkGroup")} ChunkGroup */ -/** @typedef {import("./ModuleReason.js")} ModuleReason */ +/** @typedef {import("./ModuleReason")} ModuleReason */ /** @typedef {import("webpack-sources").Source} Source */ /** @typedef {import("./util/createHash").Hash} Hash */ @@ -121,6 +121,8 @@ class Chunk { this.entryModule = undefined; /** @private @type {SortableSet} */ this._modules = new SortableSet(undefined, sortByIdentifier); + /** @type {string?} */ + this.filenameTemplate = undefined; /** @private */ this._groups = new SortableSet(undefined, sortChunkGroupById); @@ -626,7 +628,7 @@ class Chunk { list.sort((a, b) => { const cmp = b.order - a.order; if (cmp !== 0) return cmp; - // TOOD webpack 5 remove this check of compareTo + // TODO webpack 5 remove this check of compareTo if (a.group.compareTo) { return a.group.compareTo(b.group); } diff --git a/lib/ChunkGroup.js b/lib/ChunkGroup.js index 19e8f3c67ee..d2b49501df8 100644 --- a/lib/ChunkGroup.js +++ b/lib/ChunkGroup.js @@ -442,7 +442,7 @@ class ChunkGroup { list.sort((a, b) => { const cmp = b.order - a.order; if (cmp !== 0) return cmp; - // TOOD webpack 5 remove this check of compareTo + // TODO webpack 5 remove this check of compareTo if (a.group.compareTo) { return a.group.compareTo(b.group); } diff --git a/lib/CommentCompilationWarning.js b/lib/CommentCompilationWarning.js index 1f8e233f3aa..79f0a2af5d5 100644 --- a/lib/CommentCompilationWarning.js +++ b/lib/CommentCompilationWarning.js @@ -6,9 +6,9 @@ const WebpackError = require("./WebpackError"); -/** @typedef {import("./Module.js")} Module */ +/** @typedef {import("./Module")} Module */ -/** @typedef {import("./Dependency.js").DependencyLocation} DependencyLocation */ +/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */ class CommentCompilationWarning extends WebpackError { /** diff --git a/lib/CompatibilityPlugin.js b/lib/CompatibilityPlugin.js index 5d2680245bb..7edea8336b8 100644 --- a/lib/CompatibilityPlugin.js +++ b/lib/CompatibilityPlugin.js @@ -8,7 +8,7 @@ const ConstDependency = require("./dependencies/ConstDependency"); const NullFactory = require("./NullFactory"); -/** @typedef {import("./Compiler.js")} Compiler */ +/** @typedef {import("./Compiler")} Compiler */ class CompatibilityPlugin { /** diff --git a/lib/Compilation.js b/lib/Compilation.js index c1be909f17a..ec97accdd90 100644 --- a/lib/Compilation.js +++ b/lib/Compilation.js @@ -26,7 +26,6 @@ const ChunkTemplate = require("./ChunkTemplate"); const HotUpdateChunkTemplate = require("./HotUpdateChunkTemplate"); const ModuleTemplate = require("./ModuleTemplate"); const RuntimeTemplate = require("./RuntimeTemplate"); -const Dependency = require("./Dependency"); const ChunkRenderError = require("./ChunkRenderError"); const AsyncDependencyToInitialChunkError = require("./AsyncDependencyToInitialChunkError"); const Stats = require("./Stats"); @@ -36,6 +35,7 @@ const Queue = require("./util/Queue"); const SortableSet = require("./util/SortableSet"); const GraphHelpers = require("./GraphHelpers"); const ModuleDependency = require("./dependencies/ModuleDependency"); +const compareLocations = require("./compareLocations"); /** @typedef {import("./Module")} Module */ /** @typedef {import("./Compiler")} Compiler */ @@ -642,7 +642,7 @@ class Compilation extends Tapable { war.dependencies = dependencies; this.warnings.push(war); } - module.dependencies.sort(Dependency.compare); + module.dependencies.sort((a, b) => compareLocations(a.loc, b.loc)); if (error) { this.hooks.failedModule.call(module, error); return callback(error); @@ -1292,6 +1292,9 @@ class Compilation extends Tapable { * @returns {void} */ sortModules(modules) { + // TODO webpack 5: this should only be enabled when `moduleIds: "natural"` + // TODO move it into a plugin (NaturalModuleIdsPlugin) and use this in WebpackOptionsApply + // TODO remove this method modules.sort(byIndexOrIdentifier); } @@ -1453,7 +1456,7 @@ class Compilation extends Tapable { * @returns {DependencyReference} a reference for the dependency */ getDependencyReference(module, dependency) { - // TODO remove dep.getReference existance check in webpack 5 + // TODO remove dep.getReference existence check in webpack 5 if (typeof dependency.getReference !== "function") return null; const ref = dependency.getReference(); if (!ref) return null; @@ -2113,7 +2116,7 @@ class Compilation extends Tapable { /** * Used to sort errors and warnings in compilation. this.warnings, and - * this.errors contribute to the compilation hash and therefore shoudl be + * this.errors contribute to the compilation hash and therefore should be * updated whenever other references (having a chunk id) are sorted. This preserves the hash * integrity * diff --git a/lib/ContextModule.js b/lib/ContextModule.js index 175187a6973..c2e4b81a3f8 100644 --- a/lib/ContextModule.js +++ b/lib/ContextModule.js @@ -3,20 +3,37 @@ Author Tobias Koppers @sokra */ "use strict"; -const path = require("path"); const util = require("util"); const { OriginalSource, RawSource } = require("webpack-sources"); const Module = require("./Module"); const AsyncDependenciesBlock = require("./AsyncDependenciesBlock"); const Template = require("./Template"); +const contextify = require("./util/identifier").contextify; /** @typedef {import("./dependencies/ContextElementDependency")} ContextElementDependency */ +/** + * @callback ResolveDependenciesCallback + * @param {Error=} err + * @param {ContextElementDependency[]} dependencies + */ + +/** + * @callback ResolveDependencies + * @param {TODO} fs + * @param {TODO} options + * @param {ResolveDependenciesCallback} callback + */ + class ContextModule extends Module { // type ContextMode = "sync" | "eager" | "weak" | "async-weak" | "lazy" | "lazy-once" // type ContextOptions = { resource: string, recursive: boolean, regExp: RegExp, addon?: string, mode?: ContextMode, chunkName?: string, include?: RegExp, exclude?: RegExp, groupOptions?: Object } // resolveDependencies: (fs: FS, options: ContextOptions, (err: Error?, dependencies: Dependency[]) => void) => void // options: ContextOptions + /** + * @param {ResolveDependencies} resolveDependencies function to get dependencies in this context + * @param {TODO} options options object + */ constructor(resolveDependencies, options) { let resource; let resourceQuery; @@ -63,18 +80,6 @@ class ContextModule extends Module { return regexString.substring(1, regexString.length - 1); } - contextify(context, request) { - return request - .split("!") - .map(subrequest => { - let rp = path.relative(context, subrequest); - if (path.sep === "\\") rp = rp.replace(/\\/g, "/"); - if (rp.indexOf("../") !== 0) rp = "./" + rp; - return rp; - }) - .join("!"); - } - _createIdentifier() { let identifier = this.context; if (this.options.resourceQuery) { @@ -155,7 +160,7 @@ class ContextModule extends Module { } libIdent(options) { - let identifier = this.contextify(options.context, this.context); + let identifier = contextify(options.context, this.context); if (this.options.mode) { identifier += ` ${this.options.mode}`; } @@ -163,7 +168,7 @@ class ContextModule extends Module { identifier += " recursive"; } if (this.options.addon) { - identifier += ` ${this.contextify(options.context, this.options.addon)}`; + identifier += ` ${contextify(options.context, this.options.addon)}`; } if (this.options.regExp) { identifier += ` ${this.prettyRegExp(this.options.regExp + "")}`; @@ -206,7 +211,9 @@ class ContextModule extends Module { // enhance dependencies with meta info for (const dep of dependencies) { - dep.loc = dep.userRequest; + dep.loc = { + name: dep.userRequest + }; dep.request = this.options.addon + dep.request; } diff --git a/lib/DelegatedModuleFactoryPlugin.js b/lib/DelegatedModuleFactoryPlugin.js index 26db0066f75..a0a05a43878 100644 --- a/lib/DelegatedModuleFactoryPlugin.js +++ b/lib/DelegatedModuleFactoryPlugin.js @@ -15,7 +15,13 @@ class DelegatedModuleFactoryPlugin { constructor(options) { this.options = options; options.type = options.type || "require"; - options.extensions = options.extensions || ["", ".js"]; + options.extensions = options.extensions || [ + "", + ".wasm", + ".mjs", + ".js", + ".json" + ]; } apply(normalModuleFactory) { diff --git a/lib/Dependency.js b/lib/Dependency.js index c439d639a11..6d27b1ed6d2 100644 --- a/lib/Dependency.js +++ b/lib/Dependency.js @@ -4,6 +4,7 @@ */ "use strict"; +const util = require("util"); const compareLocations = require("./compareLocations"); const DependencyReference = require("./dependencies/DependencyReference"); @@ -17,19 +18,19 @@ const DependencyReference = require("./dependencies/DependencyReference"); */ /** @typedef {Object} SourcePosition - * @property {number} column * @property {number} line + * @property {number=} column */ /** @typedef {Object} RealDependencyLocation * @property {SourcePosition} start - * @property {SourcePosition} end + * @property {SourcePosition=} end * @property {number=} index */ /** @typedef {Object} SynteticDependencyLocation * @property {string} name - * @property {number} index + * @property {number=} index */ /** @typedef {SynteticDependencyLocation|RealDependencyLocation} DependencyLocation */ @@ -78,6 +79,11 @@ class Dependency { this.module = null; } } -Dependency.compare = (a, b) => compareLocations(a.loc, b.loc); + +// TODO remove in webpack 5 +Dependency.compare = util.deprecate( + (a, b) => compareLocations(a.loc, b.loc), + "Dependency.compare is deprecated and will be removed in the next major version" +); module.exports = Dependency; diff --git a/lib/Entrypoint.js b/lib/Entrypoint.js index 892855e1607..c67ff44ed7c 100644 --- a/lib/Entrypoint.js +++ b/lib/Entrypoint.js @@ -6,7 +6,7 @@ const ChunkGroup = require("./ChunkGroup"); -/** @typedef {import("./Chunk.js")} Chunk */ +/** @typedef {import("./Chunk")} Chunk */ /** * Entrypoint serves as an encapsulation primitive for chunks that are diff --git a/lib/EnvironmentPlugin.js b/lib/EnvironmentPlugin.js index 388ce817372..40353611130 100644 --- a/lib/EnvironmentPlugin.js +++ b/lib/EnvironmentPlugin.js @@ -5,6 +5,9 @@ "use strict"; +/** @typedef {import("./Compiler")} Compiler */ + +const WebpackError = require("./WebpackError"); const DefinePlugin = require("./DefinePlugin"); const needsEnvVarFix = @@ -25,6 +28,10 @@ class EnvironmentPlugin { } } + /** + * @param {Compiler} compiler webpack compiler instance + * @returns {void} + */ apply(compiler) { const definitions = this.keys.reduce((defs, key) => { // TODO remove once the fix has made its way into Node 8. @@ -41,7 +48,7 @@ class EnvironmentPlugin { if (value === undefined) { compiler.hooks.thisCompilation.tap("EnvironmentPlugin", compilation => { - const error = new Error( + const error = new WebpackError( `EnvironmentPlugin - ${key} environment variable is undefined.\n\n` + "You can pass an object with default values to suppress this warning.\n" + "See https://webpack.js.org/plugins/environment-plugin for example." diff --git a/lib/Generator.js b/lib/Generator.js index 441f22872de..5c93506d426 100644 --- a/lib/Generator.js +++ b/lib/Generator.js @@ -25,7 +25,7 @@ class Generator { * @returns {Source} generated code */ generate(module, dependencyTemplates, runtimeTemplate, type) { - throw new Error("Generator.generate: must be overriden"); + throw new Error("Generator.generate: must be overridden"); } } diff --git a/lib/HotModuleReplacementPlugin.js b/lib/HotModuleReplacementPlugin.js index 4b0edac7241..a6ca6986e05 100644 --- a/lib/HotModuleReplacementPlugin.js +++ b/lib/HotModuleReplacementPlugin.js @@ -35,6 +35,118 @@ module.exports = class HotModuleReplacementPlugin { return callback(); } ); + + const addParserPlugins = (parser, parserOptions) => { + parser.hooks.expression + .for("__webpack_hash__") + .tap( + "HotModuleReplacementPlugin", + ParserHelpers.toConstantDependencyWithWebpackRequire( + parser, + "__webpack_require__.h()" + ) + ); + parser.hooks.evaluateTypeof + .for("__webpack_hash__") + .tap( + "HotModuleReplacementPlugin", + ParserHelpers.evaluateToString("string") + ); + parser.hooks.evaluateIdentifier.for("module.hot").tap( + { + name: "HotModuleReplacementPlugin", + before: "NodeStuffPlugin" + }, + expr => { + return ParserHelpers.evaluateToIdentifier( + "module.hot", + !!parser.state.compilation.hotUpdateChunkTemplate + )(expr); + } + ); + // TODO webpack 5: refactor this, no custom hooks + if (!parser.hooks.hotAcceptCallback) { + parser.hooks.hotAcceptCallback = new SyncBailHook([ + "expression", + "requests" + ]); + } + if (!parser.hooks.hotAcceptWithoutCallback) { + parser.hooks.hotAcceptWithoutCallback = new SyncBailHook([ + "expression", + "requests" + ]); + } + parser.hooks.call + .for("module.hot.accept") + .tap("HotModuleReplacementPlugin", expr => { + if (!parser.state.compilation.hotUpdateChunkTemplate) { + return false; + } + if (expr.arguments.length >= 1) { + const arg = parser.evaluateExpression(expr.arguments[0]); + let params = []; + let requests = []; + if (arg.isString()) { + params = [arg]; + } else if (arg.isArray()) { + params = arg.items.filter(param => param.isString()); + } + if (params.length > 0) { + params.forEach((param, idx) => { + const request = param.string; + const dep = new ModuleHotAcceptDependency(request, param.range); + dep.optional = true; + dep.loc = Object.create(expr.loc); + dep.loc.index = idx; + parser.state.module.addDependency(dep); + requests.push(request); + }); + if (expr.arguments.length > 1) { + parser.hooks.hotAcceptCallback.call( + expr.arguments[1], + requests + ); + parser.walkExpression(expr.arguments[1]); // other args are ignored + return true; + } else { + parser.hooks.hotAcceptWithoutCallback.call(expr, requests); + return true; + } + } + } + }); + parser.hooks.call + .for("module.hot.decline") + .tap("HotModuleReplacementPlugin", expr => { + if (!parser.state.compilation.hotUpdateChunkTemplate) { + return false; + } + if (expr.arguments.length === 1) { + const arg = parser.evaluateExpression(expr.arguments[0]); + let params = []; + if (arg.isString()) { + params = [arg]; + } else if (arg.isArray()) { + params = arg.items.filter(param => param.isString()); + } + params.forEach((param, idx) => { + const dep = new ModuleHotDeclineDependency( + param.string, + param.range + ); + dep.optional = true; + dep.loc = Object.create(expr.loc); + dep.loc.index = idx; + parser.state.module.addDependency(dep); + }); + } + }); + parser.hooks.expression + .for("module.hot") + .tap("HotModuleReplacementPlugin", ParserHelpers.skipTraversal); + }; + compiler.hooks.compilation.tap( "HotModuleReplacementPlugin", (compilation, { normalModuleFactory }) => { @@ -275,127 +387,13 @@ module.exports = class HotModuleReplacementPlugin { } ); - const handler = (parser, parserOptions) => { - parser.hooks.expression - .for("__webpack_hash__") - .tap( - "HotModuleReplacementPlugin", - ParserHelpers.toConstantDependencyWithWebpackRequire( - parser, - "__webpack_require__.h()" - ) - ); - parser.hooks.evaluateTypeof - .for("__webpack_hash__") - .tap( - "HotModuleReplacementPlugin", - ParserHelpers.evaluateToString("string") - ); - parser.hooks.evaluateIdentifier.for("module.hot").tap( - { - name: "HotModuleReplacementPlugin", - before: "NodeStuffPlugin" - }, - expr => { - return ParserHelpers.evaluateToIdentifier( - "module.hot", - !!parser.state.compilation.hotUpdateChunkTemplate - )(expr); - } - ); - // TODO webpack 5: refactor this, no custom hooks - if (!parser.hooks.hotAcceptCallback) { - parser.hooks.hotAcceptCallback = new SyncBailHook([ - "expression", - "requests" - ]); - } - if (!parser.hooks.hotAcceptWithoutCallback) { - parser.hooks.hotAcceptWithoutCallback = new SyncBailHook([ - "expression", - "requests" - ]); - } - parser.hooks.call - .for("module.hot.accept") - .tap("HotModuleReplacementPlugin", expr => { - if (!parser.state.compilation.hotUpdateChunkTemplate) { - return false; - } - if (expr.arguments.length >= 1) { - const arg = parser.evaluateExpression(expr.arguments[0]); - let params = []; - let requests = []; - if (arg.isString()) { - params = [arg]; - } else if (arg.isArray()) { - params = arg.items.filter(param => param.isString()); - } - if (params.length > 0) { - params.forEach((param, idx) => { - const request = param.string; - const dep = new ModuleHotAcceptDependency( - request, - param.range - ); - dep.optional = true; - dep.loc = Object.create(expr.loc); - dep.loc.index = idx; - parser.state.module.addDependency(dep); - requests.push(request); - }); - if (expr.arguments.length > 1) { - parser.hooks.hotAcceptCallback.call( - expr.arguments[1], - requests - ); - parser.walkExpression(expr.arguments[1]); // other args are ignored - return true; - } else { - parser.hooks.hotAcceptWithoutCallback.call(expr, requests); - return true; - } - } - } - }); - parser.hooks.call - .for("module.hot.decline") - .tap("HotModuleReplacementPlugin", expr => { - if (!parser.state.compilation.hotUpdateChunkTemplate) { - return false; - } - if (expr.arguments.length === 1) { - const arg = parser.evaluateExpression(expr.arguments[0]); - let params = []; - if (arg.isString()) { - params = [arg]; - } else if (arg.isArray()) { - params = arg.items.filter(param => param.isString()); - } - params.forEach((param, idx) => { - const dep = new ModuleHotDeclineDependency( - param.string, - param.range - ); - dep.optional = true; - dep.loc = Object.create(expr.loc); - dep.loc.index = idx; - parser.state.module.addDependency(dep); - }); - } - }); - parser.hooks.expression - .for("module.hot") - .tap("HotModuleReplacementPlugin", ParserHelpers.skipTraversal); - }; - // TODO add HMR support for javascript/esm normalModuleFactory.hooks.parser .for("javascript/auto") - .tap("HotModuleReplacementPlugin", handler); + .tap("HotModuleReplacementPlugin", addParserPlugins); normalModuleFactory.hooks.parser .for("javascript/dynamic") - .tap("HotModuleReplacementPlugin", handler); + .tap("HotModuleReplacementPlugin", addParserPlugins); compilation.hooks.normalModuleLoader.tap( "HotModuleReplacementPlugin", @@ -409,5 +407,5 @@ module.exports = class HotModuleReplacementPlugin { }; const hotInitCode = Template.getFunctionContent( - require("./HotModuleReplacement.runtime.js") + require("./HotModuleReplacement.runtime") ); diff --git a/lib/IgnorePlugin.js b/lib/IgnorePlugin.js index fc280e88018..b2c84b12204 100644 --- a/lib/IgnorePlugin.js +++ b/lib/IgnorePlugin.js @@ -4,7 +4,7 @@ */ "use strict"; -/** @typedef {import("./Compiler.js")} Compiler */ +/** @typedef {import("./Compiler")} Compiler */ class IgnorePlugin { /** diff --git a/lib/Module.js b/lib/Module.js index 54997b54cb4..b0a533a85a4 100644 --- a/lib/Module.js +++ b/lib/Module.js @@ -384,6 +384,8 @@ Module.prototype.build = null; Module.prototype.source = null; Module.prototype.size = null; Module.prototype.nameForCondition = null; +/** @type {null | function(Chunk): boolean} */ +Module.prototype.chunkCondition = null; Module.prototype.updateCacheModule = null; module.exports = Module; diff --git a/lib/NormalModule.js b/lib/NormalModule.js index d22b2eac9b0..9c5dff5925d 100644 --- a/lib/NormalModule.js +++ b/lib/NormalModule.js @@ -4,7 +4,6 @@ */ "use strict"; -const path = require("path"); const NativeModule = require("module"); const { @@ -23,6 +22,7 @@ const ModuleBuildError = require("./ModuleBuildError"); const ModuleError = require("./ModuleError"); const ModuleWarning = require("./ModuleWarning"); const createHash = require("./util/createHash"); +const contextify = require("./util/identifier").contextify; const asString = buf => { if (Buffer.isBuffer(buf)) { @@ -38,28 +38,6 @@ const asBuffer = str => { return str; }; -const contextify = (context, request) => { - return request - .split("!") - .map(r => { - const splitPath = r.split("?"); - if (/^[a-zA-Z]:\\/.test(splitPath[0])) { - splitPath[0] = path.win32.relative(context, splitPath[0]); - if (!/^[a-zA-Z]:\\/.test(splitPath[0])) { - splitPath[0] = splitPath[0].replace(/\\/g, "/"); - } - } - if (/^\//.test(splitPath[0])) { - splitPath[0] = path.posix.relative(context, splitPath[0]); - } - if (!/^(\.\.\/|\/|[a-zA-Z]:\\)/.test(splitPath[0])) { - splitPath[0] = "./" + splitPath[0]; - } - return splitPath.join("?"); - }) - .join("!"); -}; - class NonErrorEmittedError extends WebpackError { constructor(error) { super(); diff --git a/lib/SingleEntryPlugin.js b/lib/SingleEntryPlugin.js index e049abc2ac8..4a1703b1f85 100644 --- a/lib/SingleEntryPlugin.js +++ b/lib/SingleEntryPlugin.js @@ -48,9 +48,14 @@ class SingleEntryPlugin { ); } + /** + * @param {string} entry entry request + * @param {string} name entry name + * @returns {SingleEntryDependency} the dependency + */ static createDependency(entry, name) { const dep = new SingleEntryDependency(entry); - dep.loc = name; + dep.loc = { name }; return dep; } } diff --git a/lib/Stats.js b/lib/Stats.js index b6db2396c15..ecb373f00cb 100644 --- a/lib/Stats.js +++ b/lib/Stats.js @@ -15,6 +15,12 @@ const optionsOrFallback = (...args) => { return optionValues.find(optionValue => typeof optionValue !== "undefined"); }; +const compareId = (a, b) => { + if (a < b) return -1; + if (a > b) return 1; + return 0; +}; + class Stats { constructor(compilation) { this.compilation = compilation; @@ -543,7 +549,7 @@ class Stats { } return obj; }) - .sort((a, b) => a.moduleId - b.moduleId); + .sort(compareId); } if (showUsedExports) { if (module.used === true) { @@ -614,9 +620,9 @@ class Stats { names: chunk.name ? [chunk.name] : [], files: chunk.files.slice(), hash: chunk.renderedHash, - siblings: Array.from(siblings).sort(), - parents: Array.from(parents).sort(), - children: Array.from(children).sort(), + siblings: Array.from(siblings).sort(compareId), + parents: Array.from(parents).sort(compareId), + children: Array.from(children).sort(compareId), childrenByOrder: childIdByOrder }; if (showChunkModules) { diff --git a/lib/UseStrictPlugin.js b/lib/UseStrictPlugin.js index 175c6028350..425be2e31c7 100644 --- a/lib/UseStrictPlugin.js +++ b/lib/UseStrictPlugin.js @@ -6,7 +6,7 @@ const ConstDependency = require("./dependencies/ConstDependency"); -/** @typedef {import("./Compiler.js")} Compiler */ +/** @typedef {import("./Compiler")} Compiler */ class UseStrictPlugin { /** diff --git a/lib/WebpackOptionsApply.js b/lib/WebpackOptionsApply.js index f22ca8c3074..2456a7bd7e0 100644 --- a/lib/WebpackOptionsApply.js +++ b/lib/WebpackOptionsApply.js @@ -46,7 +46,9 @@ const RemoveParentModulesPlugin = require("./optimize/RemoveParentModulesPlugin" const RemoveEmptyChunksPlugin = require("./optimize/RemoveEmptyChunksPlugin"); const MergeDuplicateChunksPlugin = require("./optimize/MergeDuplicateChunksPlugin"); const FlagIncludedChunksPlugin = require("./optimize/FlagIncludedChunksPlugin"); -const OccurrenceOrderPlugin = require("./optimize/OccurrenceOrderPlugin"); +const OccurrenceChunkOrderPlugin = require("./optimize/OccurrenceChunkOrderPlugin"); +const OccurrenceModuleOrderPlugin = require("./optimize/OccurrenceModuleOrderPlugin"); +const NaturalChunkOrderPlugin = require("./optimize/NaturalChunkOrderPlugin"); const SideEffectsFlagPlugin = require("./optimize/SideEffectsFlagPlugin"); const FlagDependencyUsagePlugin = require("./FlagDependencyUsagePlugin"); const FlagDependencyExportsPlugin = require("./FlagDependencyExportsPlugin"); @@ -171,9 +173,13 @@ class WebpackOptionsApply extends OptionsApply { break; case "electron-renderer": JsonpTemplatePlugin = require("./web/JsonpTemplatePlugin"); + FetchCompileWasmTemplatePlugin = require("./web/FetchCompileWasmTemplatePlugin"); NodeTargetPlugin = require("./node/NodeTargetPlugin"); ExternalsPlugin = require("./ExternalsPlugin"); new JsonpTemplatePlugin().apply(compiler); + new FetchCompileWasmTemplatePlugin({ + mangleImports: options.optimization.mangleWasmImports + }).apply(compiler); new FunctionModulePlugin().apply(compiler); new NodeTargetPlugin().apply(compiler); new ExternalsPlugin("commonjs", [ @@ -325,9 +331,6 @@ class WebpackOptionsApply extends OptionsApply { if (options.optimization.flagIncludedChunks) { new FlagIncludedChunksPlugin().apply(compiler); } - if (options.optimization.occurrenceOrder) { - new OccurrenceOrderPlugin(true).apply(compiler); - } if (options.optimization.sideEffects) { new SideEffectsFlagPlugin().apply(compiler); } @@ -352,14 +355,93 @@ class WebpackOptionsApply extends OptionsApply { if (options.optimization.checkWasmTypes) { new WasmFinalizeExportsPlugin().apply(compiler); } - if (options.optimization.namedModules) { - new NamedModulesPlugin().apply(compiler); + let moduleIds = options.optimization.moduleIds; + if (moduleIds === undefined) { + // TODO webpack 5 remove all these options + if (options.optimization.occurrenceOrder) { + moduleIds = "size"; + } + if (options.optimization.namedModules) { + moduleIds = "named"; + } + if (options.optimization.hashedModuleIds) { + moduleIds = "hashed"; + } + if (moduleIds === undefined) { + moduleIds = "natural"; + } } - if (options.optimization.hashedModuleIds) { - new HashedModuleIdsPlugin().apply(compiler); + if (moduleIds) { + switch (moduleIds) { + case "natural": + // TODO webpack 5: see hint in Compilation.sortModules + break; + case "named": + new NamedModulesPlugin().apply(compiler); + break; + case "hashed": + new HashedModuleIdsPlugin().apply(compiler); + break; + case "size": + new OccurrenceModuleOrderPlugin({ + prioritiseInitial: true + }).apply(compiler); + break; + case "total-size": + new OccurrenceModuleOrderPlugin({ + prioritiseInitial: false + }).apply(compiler); + break; + default: + throw new Error( + `webpack bug: moduleIds: ${moduleIds} is not implemented` + ); + } + } + let chunkIds = options.optimization.chunkIds; + if (chunkIds === undefined) { + // TODO webpack 5 remove all these options + if (options.optimization.occurrenceOrder) { + // This looks weird but it's for backward-compat + // This bug already existed before adding this feature + chunkIds = "total-size"; + } + if (options.optimization.namedChunks) { + chunkIds = "named"; + } + if (chunkIds === undefined) { + chunkIds = "natural"; + } } - if (options.optimization.namedChunks) { - new NamedChunksPlugin().apply(compiler); + if (chunkIds) { + switch (chunkIds) { + case "natural": + new NaturalChunkOrderPlugin().apply(compiler); + break; + case "named": + // TODO webapck 5: for backward-compat this need to have OccurrenceChunkOrderPlugin too + // The NamedChunksPlugin doesn't give every chunk a name + // This should be fixed, and the OccurrenceChunkOrderPlugin should be removed here. + new OccurrenceChunkOrderPlugin({ + prioritiseInitial: false + }).apply(compiler); + new NamedChunksPlugin().apply(compiler); + break; + case "size": + new OccurrenceChunkOrderPlugin({ + prioritiseInitial: true + }).apply(compiler); + break; + case "total-size": + new OccurrenceChunkOrderPlugin({ + prioritiseInitial: false + }).apply(compiler); + break; + default: + throw new Error( + `webpack bug: chunkIds: ${chunkIds} is not implemented` + ); + } } if (options.optimization.nodeEnv) { new DefinePlugin({ diff --git a/lib/WebpackOptionsDefaulter.js b/lib/WebpackOptionsDefaulter.js index f0d3f8922e0..9b60bb3fe77 100644 --- a/lib/WebpackOptionsDefaulter.js +++ b/lib/WebpackOptionsDefaulter.js @@ -17,6 +17,16 @@ const isWebLikeTarget = options => { return options.target === "web" || options.target === "webworker"; }; +const getDevtoolNamespace = library => { + // if options.output.library is a string + if (Array.isArray(library)) { + return library.join("."); + } else if (typeof library === "object") { + return getDevtoolNamespace(library.root); + } + return library || ""; +}; + class WebpackOptionsDefaulter extends OptionsDefaulter { constructor() { super(); @@ -136,12 +146,7 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { } }); this.set("output.devtoolNamespace", "make", options => { - if (Array.isArray(options.output.library)) { - return options.output.library.join("."); - } else if (typeof options.output.library === "object") { - return options.output.library.root || ""; - } - return options.output.library || ""; + return getDevtoolNamespace(options.output.library); }); this.set("output.libraryTarget", "var"); this.set("output.path", path.join(process.cwd(), "dist")); @@ -201,6 +206,9 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { this.set("optimization.flagIncludedChunks", "make", options => isProductionLikeMode(options) ); + // TODO webpack 5 add `moduleIds: "named"` default for development + // TODO webpack 5 add `moduleIds: "size"` default for production + // TODO webpack 5 remove optimization.occurrenceOrder this.set("optimization.occurrenceOrder", "make", options => isProductionLikeMode(options) ); @@ -215,6 +223,9 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { isProductionLikeMode(options) ); this.set("optimization.splitChunks", {}); + this.set("optimization.splitChunks.hidePathInfo", "make", options => { + return isProductionLikeMode(options); + }); this.set("optimization.splitChunks.chunks", "async"); this.set("optimization.splitChunks.minSize", "make", options => { return isProductionLikeMode(options) ? 30000 : 10000; @@ -230,11 +241,13 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { this.set("optimization.splitChunks.name", true); this.set("optimization.splitChunks.cacheGroups", {}); this.set("optimization.splitChunks.cacheGroups.default", { + automaticNamePrefix: "", reuseExistingChunk: true, minChunks: 2, priority: -20 }); this.set("optimization.splitChunks.cacheGroups.vendors", { + automaticNamePrefix: "vendors", test: /[\\/]node_modules[\\/]/, priority: -10 }); @@ -258,12 +271,16 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { isProductionLikeMode(options) ); this.set("optimization.mangleWasmImports", false); + // TODO webpack 5 remove optimization.namedModules this.set( "optimization.namedModules", "make", options => options.mode === "development" ); this.set("optimization.hashedModuleIds", false); + // TODO webpack 5 add `chunkIds: "named"` default for development + // TODO webpack 5 add `chunkIds: "size"` default for production + // TODO webpack 5 remove optimization.namedChunks this.set( "optimization.namedChunks", "make", diff --git a/lib/debug/ProfilingPlugin.js b/lib/debug/ProfilingPlugin.js index 1cb96271035..ea65b35905d 100644 --- a/lib/debug/ProfilingPlugin.js +++ b/lib/debug/ProfilingPlugin.js @@ -137,7 +137,7 @@ const createTrace = outputPath => { callback(); }); // Tear down the readable trace stream. - trace.destroy(); + trace.push(null); } }; }; diff --git a/lib/dependencies/HarmonyExportImportedSpecifierDependency.js b/lib/dependencies/HarmonyExportImportedSpecifierDependency.js index 360c785b113..1965d0dbb8d 100644 --- a/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +++ b/lib/dependencies/HarmonyExportImportedSpecifierDependency.js @@ -244,7 +244,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency { return new DependencyReference( mode.module, Array.from(mode.map.values()), - false + false, + this.sourceOrder ); case "dynamic-reexport": diff --git a/lib/dependencies/LoaderPlugin.js b/lib/dependencies/LoaderPlugin.js index a3ab3f14104..c781d063605 100644 --- a/lib/dependencies/LoaderPlugin.js +++ b/lib/dependencies/LoaderPlugin.js @@ -7,6 +7,16 @@ const LoaderDependency = require("./LoaderDependency"); const NormalModule = require("../NormalModule"); +/** @typedef {import("../Module")} Module */ + +/** + * @callback LoadModuleCallback + * @param {Error=} err error object + * @param {string=} source source code + * @param {object=} map source map + * @param {Module=} module loaded module if successful + */ + class LoaderPlugin { apply(compiler) { compiler.hooks.compilation.tap( @@ -23,9 +33,16 @@ class LoaderPlugin { compilation.hooks.normalModuleLoader.tap( "LoaderPlugin", (loaderContext, module) => { + /** + * @param {string} request the request string to load the module from + * @param {LoadModuleCallback} callback callback returning the loaded module or error + * @returns {void} + */ loaderContext.loadModule = (request, callback) => { const dep = new LoaderDependency(request); - dep.loc = request; + dep.loc = { + name: request + }; const factory = compilation.dependencyFactories.get( dep.constructor ); diff --git a/lib/dependencies/SystemPlugin.js b/lib/dependencies/SystemPlugin.js index 69f3e8dc017..c85778861b8 100644 --- a/lib/dependencies/SystemPlugin.js +++ b/lib/dependencies/SystemPlugin.js @@ -72,7 +72,7 @@ class SystemPlugin { parser.hooks.expression.for("System").tap("SystemPlugin", () => { const systemPolyfillRequire = ParserHelpers.requireFileAsExpression( parser.state.module.context, - require.resolve("../../buildin/system.js") + require.resolve("../../buildin/system") ); return ParserHelpers.addParsedVariableToModule( parser, diff --git a/lib/formatLocation.js b/lib/formatLocation.js index 8bd574d0102..f608cd496dc 100644 --- a/lib/formatLocation.js +++ b/lib/formatLocation.js @@ -5,57 +5,71 @@ "use strict"; +/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */ +/** @typedef {import("./Dependency").SourcePosition} SourcePosition */ + +// TODO webpack 5: pos must be SourcePosition +/** + * @param {SourcePosition|DependencyLocation|string} pos position + * @returns {string} formatted position + */ const formatPosition = pos => { if (pos === null) return ""; - const typeOfPos = typeof pos; - switch (typeOfPos) { - case "string": - return pos; - case "number": - return `${pos}`; - case "object": - if (typeof pos.line === "number" && typeof pos.column === "number") { - return `${pos.line}:${pos.column}`; - } else if (typeof pos.line === "number") { - return `${pos.line}:?`; - } else if (typeof pos.index === "number") { - return `+${pos.index}`; - } else { - return ""; - } - default: + // TODO webpack 5: Simplify this + if (typeof pos === "string") return pos; + if (typeof pos === "number") return `${pos}`; + if (typeof pos === "object") { + if ("line" in pos && "column" in pos) { + return `${pos.line}:${pos.column}`; + } else if ("line" in pos) { + return `${pos.line}:?`; + } else if ("index" in pos) { + // TODO webpack 5 remove this case + return `+${pos.index}`; + } else { return ""; + } } + return ""; }; +// TODO webpack 5: loc must be DependencyLocation +/** + * @param {DependencyLocation|SourcePosition|string} loc location + * @returns {string} formatted location + */ const formatLocation = loc => { if (loc === null) return ""; - const typeOfLoc = typeof loc; - switch (typeOfLoc) { - case "string": - return loc; - case "number": - return `${loc}`; - case "object": - if (loc.start && loc.end) { - if ( - typeof loc.start.line === "number" && - typeof loc.end.line === "number" && - typeof loc.end.column === "number" && - loc.start.line === loc.end.line - ) { - return `${formatPosition(loc.start)}-${loc.end.column}`; - } else { - return `${formatPosition(loc.start)}-${formatPosition(loc.end)}`; - } - } - if (loc.start) { - return formatPosition(loc.start); + // TODO webpack 5: Simplify this + if (typeof loc === "string") return loc; + if (typeof loc === "number") return `${loc}`; + if (typeof loc === "object") { + if ("start" in loc && loc.start && "end" in loc && loc.end) { + if ( + typeof loc.start === "object" && + typeof loc.start.line === "number" && + typeof loc.end === "object" && + typeof loc.end.line === "number" && + typeof loc.end.column === "number" && + loc.start.line === loc.end.line + ) { + return `${formatPosition(loc.start)}-${loc.end.column}`; + } else { + return `${formatPosition(loc.start)}-${formatPosition(loc.end)}`; } - return formatPosition(loc); - default: - return ""; + } + if ("start" in loc && loc.start) { + return formatPosition(loc.start); + } + if ("name" in loc && "index" in loc) { + return `${loc.name}[${loc.index}]`; + } + if ("name" in loc) { + return loc.name; + } + return formatPosition(loc); } + return ""; }; module.exports = formatLocation; diff --git a/lib/node/NodeMainTemplatePlugin.js b/lib/node/NodeMainTemplatePlugin.js index c32ae38da56..a7b88867254 100644 --- a/lib/node/NodeMainTemplatePlugin.js +++ b/lib/node/NodeMainTemplatePlugin.js @@ -305,8 +305,8 @@ module.exports = class NodeMainTemplatePlugin { ); return Template.getFunctionContent( asyncChunkLoading - ? require("./NodeMainTemplateAsync.runtime.js") - : require("./NodeMainTemplate.runtime.js") + ? require("./NodeMainTemplateAsync.runtime") + : require("./NodeMainTemplate.runtime") ) .replace(/\$require\$/g, mainTemplate.requireFn) .replace(/\$hotMainFilename\$/g, currentHotUpdateMainFilename) diff --git a/lib/node/NodeSourcePlugin.js b/lib/node/NodeSourcePlugin.js index 31825bb5c87..d5505f6f5be 100644 --- a/lib/node/NodeSourcePlugin.js +++ b/lib/node/NodeSourcePlugin.js @@ -71,7 +71,7 @@ module.exports = class NodeSourcePlugin { .tap("NodeSourcePlugin", () => { const retrieveGlobalModule = ParserHelpers.requireFileAsExpression( parser.state.module.context, - require.resolve("../../buildin/global.js") + require.resolve("../../buildin/global") ); return ParserHelpers.addParsedVariableToModule( parser, diff --git a/lib/optimize/NaturalChunkOrderPlugin.js b/lib/optimize/NaturalChunkOrderPlugin.js new file mode 100644 index 00000000000..00f8010d8b8 --- /dev/null +++ b/lib/optimize/NaturalChunkOrderPlugin.js @@ -0,0 +1,41 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +/** @typedef {import("../Compiler")} Compiler */ + +class NaturalChunkOrderPlugin { + /** + * @param {Compiler} compiler webpack compiler + * @returns {void} + */ + apply(compiler) { + compiler.hooks.compilation.tap("NaturalChunkOrderPlugin", compilation => { + compilation.hooks.optimizeChunkOrder.tap( + "NaturalChunkOrderPlugin", + chunks => { + chunks.sort((chunkA, chunkB) => { + const a = chunkA.modulesIterable[Symbol.iterator](); + const b = chunkB.modulesIterable[Symbol.iterator](); + // eslint-disable-next-line no-constant-condition + while (true) { + const aItem = a.next(); + const bItem = b.next(); + if (aItem.done && bItem.done) return 0; + if (aItem.done) return -1; + if (bItem.done) return 1; + const aModuleId = aItem.value.id; + const bModuleId = bItem.value.id; + if (aModuleId < bModuleId) return -1; + if (aModuleId > bModuleId) return 1; + } + }); + } + ); + }); + } +} + +module.exports = NaturalChunkOrderPlugin; diff --git a/lib/optimize/OccurrenceChunkOrderPlugin.js b/lib/optimize/OccurrenceChunkOrderPlugin.js new file mode 100644 index 00000000000..4730654fe67 --- /dev/null +++ b/lib/optimize/OccurrenceChunkOrderPlugin.js @@ -0,0 +1,61 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const validateOptions = require("schema-utils"); +const schema = require("../../schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json"); + +class OccurrenceOrderChunkIdsPlugin { + constructor(options = {}) { + validateOptions(schema, options, "Occurrence Order Chunk Ids Plugin"); + this.options = options; + } + + apply(compiler) { + const prioritiseInitial = this.options.prioritiseInitial; + compiler.hooks.compilation.tap( + "OccurrenceOrderChunkIdsPlugin", + compilation => { + compilation.hooks.optimizeChunkOrder.tap( + "OccurrenceOrderChunkIdsPlugin", + chunks => { + const occursInInitialChunksMap = new Map(); + const originalOrder = new Map(); + + let i = 0; + for (const c of chunks) { + let occurs = 0; + for (const chunkGroup of c.groupsIterable) { + for (const parent of chunkGroup.parentsIterable) { + if (parent.isInitial()) occurs++; + } + } + occursInInitialChunksMap.set(c, occurs); + originalOrder.set(c, i++); + } + + chunks.sort((a, b) => { + if (prioritiseInitial) { + const aEntryOccurs = occursInInitialChunksMap.get(a); + const bEntryOccurs = occursInInitialChunksMap.get(b); + if (aEntryOccurs > bEntryOccurs) return -1; + if (aEntryOccurs < bEntryOccurs) return 1; + } + const aOccurs = a.getNumberOfGroups(); + const bOccurs = b.getNumberOfGroups(); + if (aOccurs > bOccurs) return -1; + if (aOccurs < bOccurs) return 1; + const orgA = originalOrder.get(a); + const orgB = originalOrder.get(b); + return orgA - orgB; + }); + } + ); + } + ); + } +} + +module.exports = OccurrenceOrderChunkIdsPlugin; diff --git a/lib/optimize/OccurrenceModuleOrderPlugin.js b/lib/optimize/OccurrenceModuleOrderPlugin.js new file mode 100644 index 00000000000..25561aea7e9 --- /dev/null +++ b/lib/optimize/OccurrenceModuleOrderPlugin.js @@ -0,0 +1,103 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const validateOptions = require("schema-utils"); +const schema = require("../../schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json"); + +class OccurrenceOrderModuleIdsPlugin { + constructor(options = {}) { + validateOptions(schema, options, "Occurrence Order Module Ids Plugin"); + this.options = options; + } + + apply(compiler) { + const prioritiseInitial = this.options.prioritiseInitial; + compiler.hooks.compilation.tap( + "OccurrenceOrderModuleIdsPlugin", + compilation => { + compilation.hooks.optimizeModuleOrder.tap( + "OccurrenceOrderModuleIdsPlugin", + modules => { + const occursInInitialChunksMap = new Map(); + const occursInAllChunksMap = new Map(); + + const initialChunkChunkMap = new Map(); + const entryCountMap = new Map(); + for (const m of modules) { + let initial = 0; + let entry = 0; + for (const c of m.chunksIterable) { + if (c.canBeInitial()) initial++; + if (c.entryModule === m) entry++; + } + initialChunkChunkMap.set(m, initial); + entryCountMap.set(m, entry); + } + + const countOccursInEntry = (sum, r) => { + if (!r.module) { + return sum; + } + return sum + initialChunkChunkMap.get(r.module); + }; + const countOccurs = (sum, r) => { + if (!r.module) { + return sum; + } + let factor = 1; + if (typeof r.dependency.getNumberOfIdOccurrences === "function") { + factor = r.dependency.getNumberOfIdOccurrences(); + } + if (factor === 0) { + return sum; + } + return sum + factor * r.module.getNumberOfChunks(); + }; + + if (prioritiseInitial) { + for (const m of modules) { + const result = + m.reasons.reduce(countOccursInEntry, 0) + + initialChunkChunkMap.get(m) + + entryCountMap.get(m); + occursInInitialChunksMap.set(m, result); + } + } + + const originalOrder = new Map(); + let i = 0; + for (const m of modules) { + const result = + m.reasons.reduce(countOccurs, 0) + + m.getNumberOfChunks() + + entryCountMap.get(m); + occursInAllChunksMap.set(m, result); + originalOrder.set(m, i++); + } + + modules.sort((a, b) => { + if (prioritiseInitial) { + const aEntryOccurs = occursInInitialChunksMap.get(a); + const bEntryOccurs = occursInInitialChunksMap.get(b); + if (aEntryOccurs > bEntryOccurs) return -1; + if (aEntryOccurs < bEntryOccurs) return 1; + } + const aOccurs = occursInAllChunksMap.get(a); + const bOccurs = occursInAllChunksMap.get(b); + if (aOccurs > bOccurs) return -1; + if (aOccurs < bOccurs) return 1; + const orgA = originalOrder.get(a); + const orgB = originalOrder.get(b); + return orgA - orgB; + }); + } + ); + } + ); + } +} + +module.exports = OccurrenceOrderModuleIdsPlugin; diff --git a/lib/optimize/OccurrenceOrderPlugin.js b/lib/optimize/OccurrenceOrderPlugin.js index 8e23f951473..c73ec8e5750 100644 --- a/lib/optimize/OccurrenceOrderPlugin.js +++ b/lib/optimize/OccurrenceOrderPlugin.js @@ -4,6 +4,8 @@ */ "use strict"; +// TODO webpack 5 remove this plugin +// It has been splitted into separate plugins for modules and chunks class OccurrenceOrderPlugin { constructor(preferEntry) { if (preferEntry !== undefined && typeof preferEntry !== "boolean") { @@ -89,7 +91,7 @@ class OccurrenceOrderPlugin { if (aOccurs < bOccurs) return 1; const orgA = originalOrder.get(a); const orgB = originalOrder.get(b); - return orgB - orgA; + return orgA - orgB; }); } ); @@ -122,7 +124,7 @@ class OccurrenceOrderPlugin { if (aOccurs < bOccurs) return 1; const orgA = originalOrder.get(a); const orgB = originalOrder.get(b); - return orgB - orgA; + return orgA - orgB; }); } ); diff --git a/lib/optimize/SplitChunksPlugin.js b/lib/optimize/SplitChunksPlugin.js index c49c5b1761e..a9bce221baa 100644 --- a/lib/optimize/SplitChunksPlugin.js +++ b/lib/optimize/SplitChunksPlugin.js @@ -8,9 +8,16 @@ const crypto = require("crypto"); const SortableSet = require("../util/SortableSet"); const GraphHelpers = require("../GraphHelpers"); const { isSubset } = require("../util/SetHelpers"); +const deterministicGrouping = require("../util/deterministicGrouping"); +const contextify = require("../util/identifier").contextify; +/** @typedef {import("../Compiler")} Compiler */ /** @typedef {import("../Chunk")} Chunk */ /** @typedef {import("../Module")} Module */ +/** @typedef {import("../util/deterministicGrouping").Options} DeterministicGroupingOptionsForModule */ +/** @typedef {import("../util/deterministicGrouping").GroupedItems} DeterministicGroupingGroupedItemsForModule */ + +const deterministicGroupingForModules = /** @type {function(DeterministicGroupingOptionsForModule): DeterministicGroupingGroupedItemsForModule[]} */ (deterministicGrouping); const hashFilename = name => { return crypto @@ -104,25 +111,29 @@ module.exports = class SplitChunksPlugin { options.chunks || "all" ), minSize: options.minSize || 0, + maxSize: options.maxSize || 0, minChunks: options.minChunks || 1, maxAsyncRequests: options.maxAsyncRequests || 1, maxInitialRequests: options.maxInitialRequests || 1, - getName: - SplitChunksPlugin.normalizeName({ - name: options.name, - automaticNameDelimiter: options.automaticNameDelimiter - }) || (() => {}), + hidePathInfo: options.hidePathInfo || false, filename: options.filename || undefined, getCacheGroups: SplitChunksPlugin.normalizeCacheGroups({ cacheGroups: options.cacheGroups, + name: options.name, automaticNameDelimiter: options.automaticNameDelimiter - }) + }), + automaticNameDelimiter: options.automaticNameDelimiter, + fallbackCacheGroup: SplitChunksPlugin.normalizeFallbackCacheGroup( + options.fallbackCacheGroup || {}, + options + ) }; } - static normalizeName({ name, automaticNameDelimiter }) { + static normalizeName({ name, automaticNameDelimiter, automaticNamePrefix }) { if (name === true) { - const cache = new Map(); + /** @type {WeakMap>} */ + const cache = new WeakMap(); const fn = (module, chunks, cacheGroup) => { let cacheEntry = cache.get(chunks); if (cacheEntry === undefined) { @@ -137,10 +148,12 @@ module.exports = class SplitChunksPlugin { return; } names.sort(); - let name = - (cacheGroup && cacheGroup !== "default" - ? cacheGroup + automaticNameDelimiter - : "") + names.join(automaticNameDelimiter); + const prefix = + typeof automaticNamePrefix === "string" + ? automaticNamePrefix + : cacheGroup; + const namePrefix = prefix ? prefix + automaticNameDelimiter : ""; + let name = namePrefix + names.join(automaticNameDelimiter); // Filenames and paths can't be too long otherwise an // ENAMETOOLONG error is raised. If the generated name if too // long, it is truncated and a hash is appended. The limit has @@ -177,7 +190,27 @@ module.exports = class SplitChunksPlugin { if (typeof chunks === "function") return chunks; } - static normalizeCacheGroups({ cacheGroups, automaticNameDelimiter }) { + static normalizeFallbackCacheGroup( + { + minSize = undefined, + maxSize = undefined, + automaticNameDelimiter = undefined + }, + { + minSize: defaultMinSize = undefined, + maxSize: defaultMaxSize = undefined, + automaticNameDelimiter: defaultAutomaticNameDelimiter = undefined + } + ) { + return { + minSize: typeof minSize === "number" ? minSize : defaultMinSize || 0, + maxSize: typeof maxSize === "number" ? maxSize : defaultMaxSize || 0, + automaticNameDelimiter: + automaticNameDelimiter || defaultAutomaticNameDelimiter || "~" + }; + } + + static normalizeCacheGroups({ cacheGroups, name, automaticNameDelimiter }) { if (typeof cacheGroups === "function") { // TODO webpack 5 remove this if (cacheGroups.length !== 1) { @@ -216,15 +249,21 @@ module.exports = class SplitChunksPlugin { results.push({ key: key, priority: option.priority, - getName: SplitChunksPlugin.normalizeName({ - name: option.name, - automaticNameDelimiter - }), + getName: + SplitChunksPlugin.normalizeName({ + name: option.name || name, + automaticNameDelimiter: + typeof option.automaticNameDelimiter === "string" + ? option.automaticNameDelimiter + : automaticNameDelimiter, + automaticNamePrefix: option.automaticNamePrefix + }) || (() => {}), chunksFilter: SplitChunksPlugin.normalizeChunksFilter( option.chunks ), enforce: option.enforce, minSize: option.minSize, + maxSize: option.maxSize, minChunks: option.minChunks, maxAsyncRequests: option.maxAsyncRequests, maxInitialRequests: option.maxInitialRequests, @@ -278,6 +317,10 @@ module.exports = class SplitChunksPlugin { return false; } + /** + * @param {Compiler} compiler webpack compiler + * @returns {void} + */ apply(compiler) { compiler.hooks.thisCompilation.tap("SplitChunksPlugin", compilation => { let alreadyOptimized = false; @@ -447,6 +490,12 @@ module.exports = class SplitChunksPlugin { chunksKeys: new Set() }) ); + } else { + if (info.cacheGroup !== cacheGroup) { + if (info.cacheGroup.priority < cacheGroup.priority) { + info.cacheGroup = cacheGroup; + } + } } info.modules.add(module); info.size += module.size(); @@ -486,6 +535,12 @@ module.exports = class SplitChunksPlugin { : cacheGroupSource.enforce ? 0 : this.options.minSize, + maxSize: + cacheGroupSource.maxSize !== undefined + ? cacheGroupSource.maxSize + : cacheGroupSource.enforce + ? 0 + : this.options.maxSize, minChunks: cacheGroupSource.minChunks !== undefined ? cacheGroupSource.minChunks @@ -512,6 +567,10 @@ module.exports = class SplitChunksPlugin { cacheGroupSource.filename !== undefined ? cacheGroupSource.filename : this.options.filename, + automaticNameDelimiter: + cacheGroupSource.automaticNameDelimiter !== undefined + ? cacheGroupSource.automaticNameDelimiter + : this.options.automaticNameDelimiter, reuseExistingChunk: cacheGroupSource.reuseExistingChunk }; // For all combination of chunk selection @@ -537,6 +596,9 @@ module.exports = class SplitChunksPlugin { } } + /** @type {Map} */ + const maxSizeQueueMap = new Map(); + while (chunksInfoMap.size > 0) { // Find best matching entry let bestEntryKey; @@ -563,6 +625,7 @@ module.exports = class SplitChunksPlugin { let chunkName = item.name; // Variable for the new chunk (lazy created) + /** @type {Chunk} */ let newChunk; // When no chunk name, check if we can reuse a chunk instead of creating a new one let isReused = false; @@ -591,7 +654,7 @@ module.exports = class SplitChunksPlugin { isReused = true; } } - // Check if maxRequests condition can be fullfilled + // Check if maxRequests condition can be fulfilled const usedChunks = Array.from(item.chunks).filter(chunk => { // skip if we address ourself @@ -689,6 +752,22 @@ module.exports = class SplitChunksPlugin { } } } + + if (item.cacheGroup.maxSize > 0) { + const oldMaxSizeSettings = maxSizeQueueMap.get(newChunk); + maxSizeQueueMap.set(newChunk, { + minSize: Math.max( + oldMaxSizeSettings ? oldMaxSizeSettings.minSize : 0, + item.cacheGroup.minSize + ), + maxSize: Math.min( + oldMaxSizeSettings ? oldMaxSizeSettings.maxSize : Infinity, + item.cacheGroup.maxSize + ), + automaticNameDelimiter: item.cacheGroup.automaticNameDelimiter + }); + } + // remove all modules from other entries and update size for (const [key, info] of chunksInfoMap) { if (isOverlap(info.chunks, item.chunks)) { @@ -709,6 +788,77 @@ module.exports = class SplitChunksPlugin { } } } + + // Make sure that maxSize is fulfilled + for (const chunk of compilation.chunks.slice()) { + const { minSize, maxSize, automaticNameDelimiter } = + maxSizeQueueMap.get(chunk) || this.options.fallbackCacheGroup; + if (!maxSize) continue; + const results = deterministicGroupingForModules({ + maxSize, + minSize, + items: chunk.modulesIterable, + getKey(module) { + const ident = contextify( + compilation.options.context, + module.identifier() + ); + const name = module.nameForCondition + ? contextify( + compilation.options.context, + module.nameForCondition() + ) + : ident.replace(/^.*!|\?[^?!]*$/g, ""); + const fullKey = + name + automaticNameDelimiter + hashFilename(ident); + return fullKey.replace(/[\\/?]/g, "_"); + }, + getSize(module) { + return module.size(); + } + }); + results.sort((a, b) => { + if (a.key < b.key) return -1; + if (a.key > b.key) return 1; + return 0; + }); + for (let i = 0; i < results.length; i++) { + const group = results[i]; + const key = this.options.hidePathInfo + ? hashFilename(group.key) + : group.key; + let name = chunk.name + ? chunk.name + automaticNameDelimiter + key + : null; + if (name && name.length > 100) { + name = + name.slice(0, 100) + + automaticNameDelimiter + + hashFilename(name); + } + let newPart; + if (i !== results.length - 1) { + newPart = compilation.addChunk(name); + chunk.split(newPart); + newPart.chunkReason = chunk.chunkReason; + // Add all modules to the new chunk + for (const module of group.items) { + if (typeof module.chunkCondition === "function") { + if (!module.chunkCondition(newPart)) continue; + } + // Add module to new chunk + GraphHelpers.connectChunkAndModule(newPart, module); + // Remove module from used chunks + chunk.removeModule(module); + module.rewriteChunkInReasons(chunk, [newPart]); + } + } else { + // change the chunk to be a part + newPart = chunk; + chunk.name = name; + } + } + } } ); }); diff --git a/lib/util/cachedMerge.js b/lib/util/cachedMerge.js index ff7b4426a62..124f647a3f4 100644 --- a/lib/util/cachedMerge.js +++ b/lib/util/cachedMerge.js @@ -7,7 +7,7 @@ const mergeCache = new WeakMap(); /** - * Merges two given objects and caches the result to avoid computation if same objects passed as arguements again. + * Merges two given objects and caches the result to avoid computation if same objects passed as arguments again. * @example * // performs Object.assign(first, second), stores the result in WeakMap and returns result * cachedMerge({a: 1}, {a: 2}) diff --git a/lib/util/deterministicGrouping.js b/lib/util/deterministicGrouping.js new file mode 100644 index 00000000000..7c47b823d1a --- /dev/null +++ b/lib/util/deterministicGrouping.js @@ -0,0 +1,251 @@ +"use strict"; + +// Simulations show these probabilities for a single change +// 93.1% that one group is invalidated +// 4.8% that two groups are invalidated +// 1.1% that 3 groups are invalidated +// 0.1% that 4 or more groups are invalidated +// +// And these for removing/adding 10 lexically adjacent files +// 64.5% that one group is invalidated +// 24.8% that two groups are invalidated +// 7.8% that 3 groups are invalidated +// 2.7% that 4 or more groups are invalidated +// +// And these for removing/adding 3 random files +// 0% that one group is invalidated +// 3.7% that two groups are invalidated +// 80.8% that 3 groups are invalidated +// 12.3% that 4 groups are invalidated +// 3.2% that 5 or more groups are invalidated + +/** + * + * @param {string} a key + * @param {string} b key + * @returns {number} the similarity as number + */ +const similarity = (a, b) => { + const l = Math.min(a.length, b.length); + let dist = 0; + for (let i = 0; i < l; i++) { + const ca = a.charCodeAt(i); + const cb = b.charCodeAt(i); + dist += Math.max(0, 10 - Math.abs(ca - cb)); + } + return dist; +}; + +/** + * @param {string} a key + * @param {string} b key + * @returns {string} the common part and a single char for the difference + */ +const getName = (a, b) => { + const l = Math.min(a.length, b.length); + let r = ""; + for (let i = 0; i < l; i++) { + const ca = a.charAt(i); + const cb = b.charAt(i); + r += ca; + if (ca === cb) { + continue; + } + return r; + } + return a; +}; + +/** + * @template T + */ +class Node { + /** + * @param {T} item item + * @param {string} key key + * @param {number} size size + */ + constructor(item, key, size) { + this.item = item; + this.key = key; + this.size = size; + } +} + +/** + * @template T + */ +class Group { + /** + * @param {Node[]} nodes nodes + * @param {number[]} similarities similarities between the nodes (length = nodes.length - 1) + */ + constructor(nodes, similarities) { + this.nodes = nodes; + this.similarities = similarities; + this.size = nodes.reduce((size, node) => size + node.size, 0); + /** @type {string} */ + this.key = undefined; + } +} + +/** + * @template T + * @typedef {Object} GroupedItems + * @property {string} key + * @property {T[]} items + * @property {number} size + */ + +/** + * @template T + * @typedef {Object} Options + * @property {number} maxSize maximum size of a group + * @property {number} minSize minimum size of a group (preferred over maximum size) + * @property {Iterable} items a list of items + * @property {function(T): number} getSize function to get size of an item + * @property {function(T): string} getKey function to get the key of an item + */ + +/** + * @template T + * @param {Options} options options object + * @returns {GroupedItems[]} grouped items + */ +module.exports = ({ maxSize, minSize, items, getSize, getKey }) => { + /** @type {Group[]} */ + const result = []; + + const nodes = Array.from( + items, + item => new Node(item, getKey(item), getSize(item)) + ); + + /** @type {Node[]} */ + const initialNodes = []; + + // return nodes bigger than maxSize directly as group + for (const node of nodes) { + if (node.size >= maxSize) { + result.push(new Group([node], [])); + } else { + initialNodes.push(node); + } + } + + if (initialNodes.length > 0) { + // lexically ordering of keys + initialNodes.sort((a, b) => { + if (a.key < b.key) return -1; + if (a.key > b.key) return 1; + return 0; + }); + + // calculate similarities between lexically adjacent nodes + /** @type {number[]} */ + const similarities = []; + for (let i = 1; i < initialNodes.length; i++) { + const a = initialNodes[i - 1]; + const b = initialNodes[i]; + similarities.push(similarity(a.key, b.key)); + } + + const queue = [new Group(initialNodes, similarities)]; + + while (queue.length) { + const group = queue.pop(); + // only groups bigger than maxSize need to be splitted + if (group.size < maxSize) { + result.push(group); + continue; + } + + // find unsplittable area from left and right + // going minSize from left and right + let left = 0; + let leftSize = 0; + while (leftSize < minSize) { + leftSize += group.nodes[left].size; + left++; + } + let right = group.nodes.length - 1; + let rightSize = 0; + while (rightSize < minSize) { + rightSize += group.nodes[right].size; + right--; + } + + if (left - 1 > right) { + // can't split group while holding minSize + // because minSize is preferred of maxSize we return + // the group here even while it's too big + // To avoid this make sure maxSize > minSize * 3 + result.push(group); + continue; + } + if (left <= right) { + // when there is a area between left and right + // we look for best split point + // we split at the minimum similarity + // here key space is separated the most + let best = left - 1; + let bestSimilarity = group.similarities[best]; + for (let i = left; i <= right; i++) { + const similarity = group.similarities[i]; + if (similarity < bestSimilarity) { + best = i; + bestSimilarity = similarity; + } + } + left = best + 1; + right = best; + } + + // create two new groups for left and right area + // and queue them up + const rightNodes = [group.nodes[right + 1]]; + /** @type {number[]} */ + const rightSimilaries = []; + for (let i = right + 2; i < group.nodes.length; i++) { + rightSimilaries.push(group.similarities[i - 1]); + rightNodes.push(group.nodes[i]); + } + queue.push(new Group(rightNodes, rightSimilaries)); + + const leftNodes = [group.nodes[0]]; + /** @type {number[]} */ + const leftSimilaries = []; + for (let i = 1; i < left; i++) { + leftSimilaries.push(group.similarities[i - 1]); + leftNodes.push(group.nodes[i]); + } + queue.push(new Group(leftNodes, leftSimilaries)); + } + } + + // lexically ordering + result.sort((a, b) => { + if (a.nodes[0].key < b.nodes[0].key) return -1; + if (a.nodes[0].key > b.nodes[0].key) return 1; + return 0; + }); + + // give every group a name + for (let i = 0; i < result.length; i++) { + const group = result[i]; + const first = group.nodes[0]; + const last = group.nodes[group.nodes.length - 1]; + let name = getName(first.key, last.key); + group.key = name; + } + + // return the results + return result.map(group => { + /** @type {GroupedItems} */ + return { + key: group.key, + items: group.nodes.map(node => node.item), + size: group.size + }; + }); +}; diff --git a/lib/util/identifier.js b/lib/util/identifier.js index 9176facd0fd..ade63590821 100644 --- a/lib/util/identifier.js +++ b/lib/util/identifier.js @@ -74,3 +74,30 @@ exports.makePathsRelative = (context, identifier, cache) => { return relativePath; } }; + +/** + * @param {string} context absolute context path + * @param {string} request any request string may containing absolute paths, query string, etc. + * @returns {string} a new request string avoiding absolute paths when possible + */ +exports.contextify = (context, request) => { + return request + .split("!") + .map(r => { + const splitPath = r.split("?", 2); + if (/^[a-zA-Z]:\\/.test(splitPath[0])) { + splitPath[0] = path.win32.relative(context, splitPath[0]); + if (!/^[a-zA-Z]:\\/.test(splitPath[0])) { + splitPath[0] = splitPath[0].replace(/\\/g, "/"); + } + } + if (/^\//.test(splitPath[0])) { + splitPath[0] = path.posix.relative(context, splitPath[0]); + } + if (!/^(\.\.\/|\/|[a-zA-Z]:\\)/.test(splitPath[0])) { + splitPath[0] = "./" + splitPath[0]; + } + return splitPath.join("?"); + }) + .join("!"); +}; diff --git a/lib/wasm/WasmFinalizeExportsPlugin.js b/lib/wasm/WasmFinalizeExportsPlugin.js index 09584222bb3..d665a5b81c2 100644 --- a/lib/wasm/WasmFinalizeExportsPlugin.js +++ b/lib/wasm/WasmFinalizeExportsPlugin.js @@ -4,7 +4,7 @@ */ "use strict"; -const UnsupportedWebAssemblyFeatureError = require("../wasm/UnsupportedWebAssemblyFeatureError"); +const UnsupportedWebAssemblyFeatureError = require("./UnsupportedWebAssemblyFeatureError"); class WasmFinalizeExportsPlugin { apply(compiler) { diff --git a/lib/web/JsonpMainTemplatePlugin.js b/lib/web/JsonpMainTemplatePlugin.js index 018d2147b09..45a6eb42569 100644 --- a/lib/web/JsonpMainTemplatePlugin.js +++ b/lib/web/JsonpMainTemplatePlugin.js @@ -556,7 +556,7 @@ class JsonpMainTemplatePlugin { } ); const runtimeSource = Template.getFunctionContent( - require("./JsonpMainTemplate.runtime.js") + require("./JsonpMainTemplate.runtime") ) .replace(/\/\/\$semicolon/g, ";") .replace(/\$require\$/g, mainTemplate.requireFn) diff --git a/lib/webpack.js b/lib/webpack.js index f5a8af68f95..ff9fe62c1ab 100644 --- a/lib/webpack.js +++ b/lib/webpack.js @@ -137,6 +137,10 @@ exportPlugins((exports.optimize = {}), { ModuleConcatenationPlugin: () => require("./optimize/ModuleConcatenationPlugin"), OccurrenceOrderPlugin: () => require("./optimize/OccurrenceOrderPlugin"), + OccurrenceModuleOrderPlugin: () => + require("./optimize/OccurrenceModuleOrderPlugin"), + OccurrenceChunkOrderPlugin: () => + require("./optimize/OccurrenceChunkOrderPlugin"), RuntimeChunkPlugin: () => require("./optimize/RuntimeChunkPlugin"), SideEffectsFlagPlugin: () => require("./optimize/SideEffectsFlagPlugin"), SplitChunksPlugin: () => require("./optimize/SplitChunksPlugin") diff --git a/lib/webworker/WebWorkerMainTemplatePlugin.js b/lib/webworker/WebWorkerMainTemplatePlugin.js index 02d3d5d4265..a668f5d433f 100644 --- a/lib/webworker/WebWorkerMainTemplatePlugin.js +++ b/lib/webworker/WebWorkerMainTemplatePlugin.js @@ -172,7 +172,7 @@ class WebWorkerMainTemplatePlugin { )}];\n` + `${globalObject}[${JSON.stringify(hotUpdateFunction)}] = ` + Template.getFunctionContent( - require("./WebWorkerMainTemplate.runtime.js") + require("./WebWorkerMainTemplate.runtime") ) .replace(/\/\/\$semicolon/g, ";") .replace(/\$require\$/g, mainTemplate.requireFn) diff --git a/package.json b/package.json index 4c898737430..580cb6711cd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "webpack", - "version": "4.14.0", + "version": "4.16.0", "author": "Tobias Koppers @sokra", "description": "Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.", "license": "MIT", @@ -16,7 +16,7 @@ "ajv-keywords": "^3.1.0", "chrome-trace-event": "^1.0.0", "enhanced-resolve": "^4.1.0", - "eslint-scope": "^3.7.1", + "eslint-scope": "^4.0.0", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.3.0", "loader-utils": "^1.1.0", @@ -56,7 +56,7 @@ "istanbul": "^0.4.5", "jade": "^1.11.0", "jade-loader": "~0.8.0", - "jest": "^23.0.1", + "jest": "^23.3.0", "jest-silent-reporter": "^0.0.5", "json-loader": "^0.5.7", "less": "^2.5.1", @@ -73,7 +73,7 @@ "script-loader": "~0.7.0", "simple-git": "^1.65.0", "style-loader": "^0.19.1", - "typescript": "^3.0.0-dev.20180622", + "typescript": "^3.0.0-rc", "url-loader": "^0.6.2", "val-loader": "^1.0.2", "vm-browserify": "~0.0.0", @@ -82,6 +82,14 @@ "worker-loader": "^1.1.1", "xxhashjs": "^0.2.1" }, + "resolutions": { + "**/jest-message-util/micromatch": "^2.3.11", + "**/jest-cli/micromatch": "^2.3.11", + "**/jest-runtime/micromatch": "^2.3.11", + "**/jest-haste-map/micromatch": "^2.3.11", + "**/jest-haste-map/sane/micromatch": "^2.3.11", + "**/jest-config/babel-jest/babel-plugin-istanbul/test-exclude/micromatch": "^2.3.11" + }, "engines": { "node": ">=6.11.5" }, @@ -109,11 +117,11 @@ "test:integration": "node --max-old-space-size=4096 --trace-deprecation node_modules/jest-cli/bin/jest --testMatch \"/test/*.test.js\"", "test:basic": "node --max-old-space-size=4096 --trace-deprecation node_modules/jest-cli/bin/jest --testMatch \"/test/{TestCasesNormal,StatsTestCases,ConfigTestCases}.test.js\"", "test:unit": "node --max-old-space-size=4096 --trace-deprecation node_modules/jest-cli/bin/jest --testMatch \"/test/*.unittest.js\"", - "travis:integration": "yarn cover:init && yarn cover:integration \"test/((?!TestCases)|TestCasesD)\" --ci $JEST && mv coverage/coverage-final.json coverage/coverage-final-1.json && yarn cover:integration \"test/TestCases(?!D)\" --ci $JEST && mv coverage/coverage-final.json coverage/coverage-final-2.json", + "travis:integration": "yarn cover:init && yarn cover:integration \"test/(?!TestCases)\" --ci $JEST && mv coverage/coverage-final.json coverage/coverage-final-1.json && yarn cover:integration \"test/TestCasesD\" --ci $JEST && mv coverage/coverage-final.json coverage/coverage-final-2.json && yarn cover:integration \"test/TestCases(?!D)\" --ci $JEST && mv coverage/coverage-final.json coverage/coverage-final-3.json", "travis:basic": "yarn test:basic --ci $JEST", "travis:lint-unit": "yarn lint && yarn cover:init && yarn cover:unit --ci $JEST", "travis:benchmark": "yarn benchmark --ci", - "appveyor:integration": "yarn cover:init && yarn cover:integration \"test/((?!TestCases)|TestCasesD)\" --ci %JEST% && move coverage\\coverage-final.json coverage\\coverage-final-1.json && yarn cover:integration \"test/TestCases(?!D)\" --ci %JEST% && move coverage\\coverage-final.json coverage\\coverage-final-2.json", + "appveyor:integration": "yarn cover:init && yarn cover:integration \"test/(?!TestCases)\" --ci %JEST% && move coverage\\coverage-final.json coverage\\coverage-final-1.json&& yarn cover:integration \"test/TestCasesD\" --ci %JEST% && move coverage\\coverage-final.json coverage\\coverage-final-2.json && yarn cover:integration \"test/TestCases(?!D)\" --ci %JEST% && move coverage\\coverage-final.json coverage\\coverage-final-3.json", "appveyor:unit": "yarn cover:init && yarn cover:unit --ci %JEST%", "appveyor:benchmark": "yarn benchmark --ci", "build:examples": "cd examples && node buildAll.js", @@ -179,7 +187,8 @@ "coveragePathIgnorePatterns": [ "\\.runtime\\.js$", "/test/", - "/schemas/" + "/schemas/", + "/node_modules/" ], "testEnvironment": "node", "coverageReporters": [ diff --git a/schemas/WebpackOptions.json b/schemas/WebpackOptions.json index 2fe65fb16b3..bc2c3ff5879 100644 --- a/schemas/WebpackOptions.json +++ b/schemas/WebpackOptions.json @@ -410,11 +410,7 @@ }, "hashDigest": { "description": "Digest type used for the hash", - "enum": [ - "latin1", - "hex", - "base64" - ] + "type": "string" }, "hashDigestLength": { "description": "Number of chars which are used for the hash", @@ -1351,7 +1347,12 @@ ] }, "minSize": { - "description": "Minimal size for the created chunk", + "description": "Minimal size for the created chunks", + "type": "number", + "minimum": 0 + }, + "maxSize": { + "description": "Maximal size hint for the created chunks", "type": "number", "minimum": 0 }, @@ -1394,6 +1395,32 @@ "type": "string", "minLength": 1 }, + "hidePathInfo": { + "description": "Prevents exposing path info when creating names for parts splitted by maxSize", + "type": "boolean" + }, + "fallbackCacheGroup": { + "description": "Options for modules not selected by any other cache group", + "type": "object", + "additionalProperties": false, + "properties": { + "minSize": { + "description": "Minimal size for the created chunk", + "type": "number", + "minimum": 0 + }, + "maxSize": { + "description": "Maximal size hint for the created chunks", + "type": "number", + "minimum": 0 + }, + "automaticNameDelimiter": { + "description": "Sets the name delimiter for created chunks", + "type": "string", + "minLength": 1 + } + } + }, "cacheGroups": { "description": "Assign modules to a cache group (modules from different cache groups are tried to keep in separate chunks)", "type": "object", @@ -1460,6 +1487,11 @@ "type": "number", "minimum": 0 }, + "maxSize": { + "description": "Maximal size hint for the created chunks", + "type": "number", + "minimum": 0 + }, "minChunks": { "description": "Minimum number of times a module has to be duplicated until it's considered for splitting", "type": "number", @@ -1493,6 +1525,15 @@ } ] }, + "automaticNameDelimiter": { + "description": "Sets the name delimiter for created chunks", + "type": "string", + "minLength": 1 + }, + "automaticNamePrefix": { + "description": "Sets the name prefix for created chunks", + "type": "string" + }, "filename": { "description": "Sets the template for the filename for created chunks (Only works for initial chunks)", "type": "string", @@ -1550,16 +1591,37 @@ "description": "Reduce size of WASM by changing imports to shorter strings.", "type": "boolean" }, + "moduleIds": { + "description": "Define the algorithm to choose module ids (natural: numeric ids in order of usage, named: readable ids for better debugging, hashed: short hashes as ids for better long term caching, size: numeric ids focused on minimal initial download size, total-size: numeric ids focused on minimal total download size, false: no algorithm used, as custom one can be provided via plugin)", + "enum": [ + "natural", + "named", + "hashed", + "size", + "total-size", + false + ] + }, + "chunkIds": { + "description": "Define the algorithm to choose chunk ids (named: readable ids for better debugging, size: numeric ids focused on minimal initial download size, total-size: numeric ids focused on minimal total download size, false: no algorithm used, as custom one can be provided via plugin)", + "enum": [ + "natural", + "named", + "size", + "total-size", + false + ] + }, "namedModules": { - "description": "Use readable module identifiers for better debugging", + "description": "Use readable module identifiers for better debugging (deprecated, used moduleIds: named instead)", "type": "boolean" }, "hashedModuleIds": { - "description": "Use hashed module id instead module identifiers for better long term caching", + "description": "Use hashed module id instead module identifiers for better long term caching (deprecated, used moduleIds: hashed instead)", "type": "boolean" }, "namedChunks": { - "description": "Use readable chunk identifiers for better debugging", + "description": "Use readable chunk identifiers for better debugging (deprecated, used chunkIds: named instead)", "type": "boolean" }, "portableRecords": { diff --git a/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json b/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json new file mode 100644 index 00000000000..f1e85ac5d6a --- /dev/null +++ b/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json @@ -0,0 +1,10 @@ +{ + "additionalProperties": false, + "type": "object", + "properties": { + "prioritiseInitial": { + "description": "Prioritise initial size over total size", + "type": "boolean" + } + } +} diff --git a/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json b/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json new file mode 100644 index 00000000000..f1e85ac5d6a --- /dev/null +++ b/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json @@ -0,0 +1,10 @@ +{ + "additionalProperties": false, + "type": "object", + "properties": { + "prioritiseInitial": { + "description": "Prioritise initial size over total size", + "type": "boolean" + } + } +} diff --git a/test/Compiler.test.js b/test/Compiler.test.js index 0ce5d3ffabb..8f7d3a7c637 100644 --- a/test/Compiler.test.js +++ b/test/Compiler.test.js @@ -85,7 +85,7 @@ describe("Compiler", () => { expect(Object.keys(files)).toEqual(["/main.js"]); const bundle = files["/main.js"]; expect(bundle).toMatch("function __webpack_require__("); - expect(bundle).toMatch("__webpack_require__(/*! ./a */ 0);"); + expect(bundle).toMatch(/__webpack_require__\(\/\*! \.\/a \*\/ \d\);/); expect(bundle).toMatch("./c.js"); expect(bundle).toMatch("./a.js"); expect(bundle).toMatch("This is a"); @@ -145,9 +145,9 @@ describe("Compiler", () => { it("should compile a file with multiple chunks", done => { compile("./chunks", {}, (stats, files) => { expect(stats.chunks).toHaveLength(2); - expect(Object.keys(files)).toEqual(["/0.js", "/main.js"]); + expect(Object.keys(files)).toEqual(["/main.js", "/1.js"]); const bundle = files["/main.js"]; - const chunk = files["/0.js"]; + const chunk = files["/1.js"]; expect(bundle).toMatch("function __webpack_require__("); expect(bundle).toMatch("__webpack_require__(/*! ./b */"); expect(chunk).not.toMatch("__webpack_require__(/* ./b */"); diff --git a/test/ConfigTestCases.test.js b/test/ConfigTestCases.test.js index 4923509f2dd..7776de34c39 100644 --- a/test/ConfigTestCases.test.js +++ b/test/ConfigTestCases.test.js @@ -17,7 +17,7 @@ describe("ConfigTestCases", () => { const casesPath = path.join(__dirname, "configCases"); let categories = fs.readdirSync(casesPath); - jest.setTimeout(10000); + jest.setTimeout(20000); categories = categories.map(cat => { return { @@ -211,6 +211,7 @@ describe("ConfigTestCases", () => { ) { fn = vm.runInNewContext( "(function(require, module, exports, __dirname, __filename, it, beforeEach, afterEach, expect, jest, window) {" + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + content + "\n})", globalContext, @@ -220,6 +221,7 @@ describe("ConfigTestCases", () => { fn = vm.runInThisContext( "(function(require, module, exports, __dirname, __filename, it, beforeEach, afterEach, expect, jest) {" + "global.expect = expect; " + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + content + "\n})", p diff --git a/test/HotModuleReplacementPlugin.test.js b/test/HotModuleReplacementPlugin.test.js index c86df04ed75..09a0578d12b 100644 --- a/test/HotModuleReplacementPlugin.test.js +++ b/test/HotModuleReplacementPlugin.test.js @@ -50,10 +50,11 @@ describe("HotModuleReplacementPlugin", () => { output: { path: path.join(__dirname, "js", "HotModuleReplacementPlugin") }, - plugins: [ - new webpack.HotModuleReplacementPlugin(), - new webpack.optimize.OccurrenceOrderPlugin() - ] + plugins: [new webpack.HotModuleReplacementPlugin()], + optimization: { + moduleIds: "size", + chunkIds: "size" + } }); fs.writeFileSync(entryFile, "1", "utf-8"); compiler.run((err, stats) => { diff --git a/test/HotTestCases.test.js b/test/HotTestCases.test.js index 66001829d80..6c64a6e03a0 100644 --- a/test/HotTestCases.test.js +++ b/test/HotTestCases.test.js @@ -151,6 +151,7 @@ describe("HotTestCases", () => { const fn = vm.runInThisContext( "(function(require, module, exports, __dirname, __filename, it, expect, NEXT, STATS) {" + "global.expect = expect;" + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + fs.readFileSync(p, "utf-8") + "\n})", p diff --git a/test/StatsTestCases.test.js b/test/StatsTestCases.test.js index 0bc804ecdf6..f0ca3ae0e6e 100644 --- a/test/StatsTestCases.test.js +++ b/test/StatsTestCases.test.js @@ -75,7 +75,6 @@ describe("StatsTestCases", () => { ]) ); }; - new webpack.optimize.OccurrenceOrderPlugin().apply(c); }); c.run((err, stats) => { if (err) return done(err); diff --git a/test/TestCases.template.js b/test/TestCases.template.js index 89e63c7cadb..39ff2bdf5a9 100644 --- a/test/TestCases.template.js +++ b/test/TestCases.template.js @@ -216,6 +216,7 @@ const describeCases = config => { const fn = vm.runInThisContext( "(function(require, module, exports, __dirname, it, expect) {" + "global.expect = expect;" + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + fs.readFileSync(p, "utf-8") + "\n})", p diff --git a/test/WatchTestCases.test.js b/test/WatchTestCases.test.js index a1d957aacbc..b425f099a8a 100644 --- a/test/WatchTestCases.test.js +++ b/test/WatchTestCases.test.js @@ -245,6 +245,7 @@ describe("WatchTestCases", () => { ) { fn = vm.runInNewContext( "(function(require, module, exports, __dirname, __filename, it, WATCH_STEP, STATS_JSON, STATE, expect, window) {" + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + content + "\n})", globalContext, @@ -254,6 +255,7 @@ describe("WatchTestCases", () => { fn = vm.runInThisContext( "(function(require, module, exports, __dirname, __filename, it, WATCH_STEP, STATS_JSON, STATE, expect) {" + "global.expect = expect;" + + 'function nsObj(m) { Object.defineProperty(m, Symbol.toStringTag, { value: "Module" }); return m; }' + content + "\n})", p diff --git a/test/__snapshots__/ConfigTestCases.test.js.snap b/test/__snapshots__/ConfigTestCases.test.js.snap index 0dab29d9c95..bf334e16f45 100644 --- a/test/__snapshots__/ConfigTestCases.test.js.snap +++ b/test/__snapshots__/ConfigTestCases.test.js.snap @@ -4,10 +4,10 @@ exports[`ConfigTestCases records issue-2991 exported tests should write relative "{ \\"modules\\": { \\"byIdentifier\\": { - \\"external \\\\\\"path\\\\\\"\\": 0, - \\"external \\\\\\"fs\\\\\\"\\": 1, - \\"ignored pkgs/somepackage/foo\\": 2, - \\"test.js\\": 3 + \\"test.js\\": 0, + \\"ignored pkgs/somepackage/foo\\": 1, + \\"external \\\\\\"fs\\\\\\"\\": 2, + \\"external \\\\\\"path\\\\\\"\\": 3 }, \\"usedIds\\": { \\"0\\": 0, @@ -32,12 +32,12 @@ exports[`ConfigTestCases records issue-7339 exported tests should write relative "{ \\"modules\\": { \\"byIdentifier\\": { - \\"dependencies/foo.js\\": 0, - \\"dependencies/bar.js\\": 1, - \\"external \\\\\\"path\\\\\\"\\": 2, - \\"external \\\\\\"fs\\\\\\"\\": 3, - \\"dependencies sync /^\\\\\\\\.\\\\\\\\/.*$/\\": 4, - \\"test.js\\": 5 + \\"dependencies/bar.js\\": 0, + \\"dependencies/foo.js\\": 1, + \\"test.js\\": 2, + \\"dependencies sync /^\\\\\\\\.\\\\\\\\/.*$/\\": 3, + \\"external \\\\\\"fs\\\\\\"\\": 4, + \\"external \\\\\\"path\\\\\\"\\": 5 }, \\"usedIds\\": { \\"0\\": 0, diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index 3808b4ea6a8..5a4e72f6998 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -57,89 +57,89 @@ Child content-change: `; exports[`StatsTestCases should print correct stats for aggressive-splitting-on-demand 1`] = ` -"Hash: 6fd6445da5532a699ea4 +"Hash: 22813fefc4dae997c5fe Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names -58f368c01f66002b0eb3.js 1.94 KiB 6, 7 [emitted] +a2fea791e74e99836233.js 1.94 KiB 6 [emitted] 2736cf9d79233cd0a9b6.js 1.93 KiB 0 [emitted] 7f83e5c2f4e52435dd2c.js 1.96 KiB 2 [emitted] 43c1ac24102c075ecb2d.js 1.94 KiB 3, 1 [emitted] -a35356222d6a2151f7d3.js 1.01 KiB 4 [emitted] -e5fb899955fa03a8053b.js 1.94 KiB 5 [emitted] +db744382311550539cad.js 9.7 KiB 4 [emitted] main +6a80fd33f274d3117a32.js 1.01 KiB 5 [emitted] 29de52df747b400f6177.js 1 KiB 1 [emitted] -6a8e74d82c35e3f013d2.js 1 KiB 7 [emitted] +a9463ba36646aa40b97c.js 1.94 KiB 7, 9 [emitted] 5bc7f208cd99a83b4e33.js 1.94 KiB 8 [emitted] -13713792eb1b5038ab8b.js 1.94 KiB 9 [emitted] -d886db099ddf05aadc6d.js 9.7 KiB 10 [emitted] main +819c28704a84308cd0f6.js 1 KiB 9 [emitted] +5ea68201264e1d2b28e9.js 1.94 KiB 10 [emitted] ba9fedb7aa0c69201639.js 1.94 KiB 11 [emitted] -Entrypoint main = d886db099ddf05aadc6d.js -chunk {0} 2736cf9d79233cd0a9b6.js 1.76 KiB <{10}> ={1}= ={2}= ={3}= ={7}= ={9}= [recorded] aggressive splitted +Entrypoint main = db744382311550539cad.js +chunk {0} 2736cf9d79233cd0a9b6.js 1.76 KiB <{4}> ={1}= ={2}= ={3}= ={9}= ={10}= [recorded] aggressive splitted > ./b ./d ./e ./f ./g [11] ./index.js 5:0-44 > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 - [0] ./b.js 899 bytes {0} {5} [built] + [0] ./b.js 899 bytes {0} {6} [built] [1] ./d.js 899 bytes {0} {8} [built] -chunk {1} 29de52df747b400f6177.js 899 bytes <{10}> ={0}= ={2}= ={8}= +chunk {1} 29de52df747b400f6177.js 899 bytes <{4}> ={0}= ={2}= ={8}= > ./c ./d ./e [11] ./index.js 3:0-30 > ./b ./d ./e ./f ./g [11] ./index.js 5:0-44 [2] ./e.js 899 bytes {1} {3} [built] -chunk {2} 7f83e5c2f4e52435dd2c.js 1.76 KiB <{10}> ={0}= ={1}= ={11}= ={3}= ={6}= ={7}= ={9}= [recorded] aggressive splitted +chunk {2} 7f83e5c2f4e52435dd2c.js 1.76 KiB <{4}> ={0}= ={1}= ={3}= ={7}= ={9}= ={10}= ={11}= [recorded] aggressive splitted > ./f ./g ./h ./i ./j ./k [11] ./index.js 4:0-51 > ./b ./d ./e ./f ./g [11] ./index.js 5:0-44 > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 [3] ./f.js 899 bytes {2} [built] [4] ./g.js 901 bytes {2} [built] -chunk {3} 43c1ac24102c075ecb2d.js 1.76 KiB <{10}> ={0}= ={2}= ={7}= ={9}= [rendered] [recorded] aggressive splitted +chunk {3} 43c1ac24102c075ecb2d.js 1.76 KiB <{4}> ={0}= ={2}= ={9}= ={10}= [rendered] [recorded] aggressive splitted > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 [2] ./e.js 899 bytes {1} {3} [built] [6] ./h.js 899 bytes {3} {11} [built] -chunk {4} a35356222d6a2151f7d3.js 899 bytes <{10}> +chunk {4} db744382311550539cad.js (main) 248 bytes >{0}< >{1}< >{2}< >{3}< >{5}< >{6}< >{7}< >{8}< >{9}< >{10}< >{11}< [entry] [rendered] + > ./index main + [11] ./index.js 248 bytes {4} [built] +chunk {5} 6a80fd33f274d3117a32.js 899 bytes <{4}> > ./a [11] ./index.js 1:0-16 - [10] ./a.js 899 bytes {4} [built] -chunk {5} e5fb899955fa03a8053b.js 1.76 KiB <{10}> + [10] ./a.js 899 bytes {5} [built] +chunk {6} a2fea791e74e99836233.js 1.76 KiB <{4}> > ./b ./c [11] ./index.js 2:0-23 - [0] ./b.js 899 bytes {0} {5} [built] - [5] ./c.js 899 bytes {5} {8} [built] -chunk {6} 58f368c01f66002b0eb3.js 1.76 KiB <{10}> ={11}= ={2}= + [0] ./b.js 899 bytes {0} {6} [built] + [5] ./c.js 899 bytes {6} {8} [built] +chunk {7} a9463ba36646aa40b97c.js 1.76 KiB <{4}> ={2}= ={11}= > ./f ./g ./h ./i ./j ./k [11] ./index.js 4:0-51 - [8] ./j.js 901 bytes {6} {9} [built] - [9] ./k.js 899 bytes {6} {7} [built] -chunk {7} 6a8e74d82c35e3f013d2.js 899 bytes <{10}> ={0}= ={2}= ={3}= ={9}= - > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 - [9] ./k.js 899 bytes {6} {7} [built] -chunk {8} 5bc7f208cd99a83b4e33.js 1.76 KiB <{10}> ={1}= [recorded] aggressive splitted + [8] ./j.js 901 bytes {7} {10} [built] + [9] ./k.js 899 bytes {7} {9} [built] +chunk {8} 5bc7f208cd99a83b4e33.js 1.76 KiB <{4}> ={1}= [recorded] aggressive splitted > ./c ./d ./e [11] ./index.js 3:0-30 [1] ./d.js 899 bytes {0} {8} [built] - [5] ./c.js 899 bytes {5} {8} [built] -chunk {9} 13713792eb1b5038ab8b.js 1.76 KiB <{10}> ={0}= ={2}= ={3}= ={7}= [rendered] [recorded] aggressive splitted + [5] ./c.js 899 bytes {6} {8} [built] +chunk {9} 819c28704a84308cd0f6.js 899 bytes <{4}> ={0}= ={2}= ={3}= ={10}= > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 - [7] ./i.js 899 bytes {9} {11} [built] - [8] ./j.js 901 bytes {6} {9} [built] -chunk {10} d886db099ddf05aadc6d.js (main) 248 bytes >{0}< >{1}< >{11}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< >{8}< >{9}< [entry] [rendered] - > ./index main - [11] ./index.js 248 bytes {10} [built] -chunk {11} ba9fedb7aa0c69201639.js 1.76 KiB <{10}> ={2}= ={6}= [rendered] [recorded] aggressive splitted + [9] ./k.js 899 bytes {7} {9} [built] +chunk {10} 5ea68201264e1d2b28e9.js 1.76 KiB <{4}> ={0}= ={2}= ={3}= ={9}= [rendered] [recorded] aggressive splitted + > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 + [7] ./i.js 899 bytes {10} {11} [built] + [8] ./j.js 901 bytes {7} {10} [built] +chunk {11} ba9fedb7aa0c69201639.js 1.76 KiB <{4}> ={2}= ={7}= [rendered] [recorded] aggressive splitted > ./f ./g ./h ./i ./j ./k [11] ./index.js 4:0-51 [6] ./h.js 899 bytes {3} {11} [built] - [7] ./i.js 899 bytes {9} {11} [built]" + [7] ./i.js 899 bytes {10} {11} [built]" `; exports[`StatsTestCases should print correct stats for async-commons-chunk 1`] = ` "Entrypoint main = main.js -chunk {0} 0.js 21 bytes <{3}> ={1}= ={2}= [rendered] reused as split chunk (cache group: default) - > [3] ./index.js 17:1-21:3 - > [3] ./index.js 2:1-5:3 - > ./a ./b [3] ./index.js 9:1-13:3 +chunk {0} 0.js 21 bytes <{1}> ={2}= ={3}= [rendered] reused as split chunk (cache group: default) + > [1] ./index.js 17:1-21:3 + > [1] ./index.js 2:1-5:3 + > ./a ./b [1] ./index.js 9:1-13:3 [0] ./a.js 21 bytes {0} [built] -chunk {1} 1.js 21 bytes <{3}> ={0}= [rendered] - > ./a ./b [3] ./index.js 9:1-13:3 - [1] ./b.js 21 bytes {1} [built] -chunk {2} 2.js 21 bytes <{3}> ={0}= [rendered] - > [3] ./index.js 17:1-21:3 - [2] ./c.js 21 bytes {2} [built] -chunk {3} main.js (main) 515 bytes >{0}< >{1}< >{2}< [entry] [rendered] +chunk {1} main.js (main) 515 bytes >{0}< >{2}< >{3}< [entry] [rendered] > ./ main - [3] ./index.js 515 bytes {3} [built]" + [1] ./index.js 515 bytes {1} [built] +chunk {2} 2.js 21 bytes <{1}> ={0}= [rendered] + > ./a ./b [1] ./index.js 9:1-13:3 + [2] ./b.js 21 bytes {2} [built] +chunk {3} 3.js 21 bytes <{1}> ={0}= [rendered] + > [1] ./index.js 17:1-21:3 + [3] ./c.js 21 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for async-commons-chunk-auto 1`] = ` @@ -148,192 +148,192 @@ exports[`StatsTestCases should print correct stats for async-commons-chunk-auto Entrypoint a = disabled/a.js Entrypoint b = disabled/b.js Entrypoint c = disabled/c.js - chunk {0} disabled/async-a.js (async-a) 216 bytes <{4}> >{3}< [rendered] + chunk {0} disabled/main.js (main) 147 bytes >{4}< >{5}< >{6}< [entry] [rendered] + > ./ main + [7] ./index.js 147 bytes {0} [built] + chunk {1} disabled/a.js (a) 216 bytes >{7}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [3] ./node_modules/y.js 20 bytes {1} {2} {4} {5} [built] + [5] ./a.js + 1 modules 156 bytes {1} {4} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {2} disabled/b.js (b) 152 bytes [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [2] ./f.js 20 bytes {2} {3} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {1} {2} {4} {5} [built] + [4] ./b.js 72 bytes {2} {5} [built] + chunk {3} disabled/c.js (c) 167 bytes [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [2] ./f.js 20 bytes {2} {3} {5} {6} {7} [built] + [6] ./c.js + 1 modules 107 bytes {3} {6} [built] + | ./c.js 72 bytes [built] + | ./node_modules/z.js 20 bytes [built] + chunk {4} disabled/async-a.js (async-a) 216 bytes <{0}> >{7}< [rendered] > ./a [7] ./index.js 1:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {5} {6} [built] - [5] ./a.js + 1 modules 156 bytes {0} {5} [built] + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [3] ./node_modules/y.js 20 bytes {1} {2} {4} {5} [built] + [5] ./a.js + 1 modules 156 bytes {1} {4} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {1} disabled/async-b.js (async-b) 152 bytes <{4}> [rendered] + chunk {5} disabled/async-b.js (async-b) 152 bytes <{0}> [rendered] > ./b [7] ./index.js 2:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [2] ./f.js 20 bytes {1} {2} {3} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {5} {6} [built] - [4] ./b.js 72 bytes {1} {6} [built] - chunk {2} disabled/async-c.js (async-c) 167 bytes <{4}> [rendered] + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [2] ./f.js 20 bytes {2} {3} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {1} {2} {4} {5} [built] + [4] ./b.js 72 bytes {2} {5} [built] + chunk {6} disabled/async-c.js (async-c) 167 bytes <{0}> [rendered] > ./c [7] ./index.js 3:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [2] ./f.js 20 bytes {1} {2} {3} {6} {7} [built] - [6] ./c.js + 1 modules 107 bytes {2} {7} [built] + [0] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [1] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built] + [2] ./f.js 20 bytes {2} {3} {5} {6} {7} [built] + [6] ./c.js + 1 modules 107 bytes {3} {6} [built] | ./c.js 72 bytes [built] | ./node_modules/z.js 20 bytes [built] - chunk {3} disabled/async-g.js (async-g) 54 bytes <{0}> <{5}> [rendered] + chunk {7} disabled/async-g.js (async-g) 54 bytes <{1}> <{4}> [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [2] ./f.js 20 bytes {1} {2} {3} {6} {7} [built] - [8] ./g.js 34 bytes {3} [built] - chunk {4} disabled/main.js (main) 147 bytes >{0}< >{1}< >{2}< [entry] [rendered] - > ./ main - [7] ./index.js 147 bytes {4} [built] - chunk {5} disabled/a.js (a) 216 bytes >{3}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {5} {6} [built] - [5] ./a.js + 1 modules 156 bytes {0} {5} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {6} disabled/b.js (b) 152 bytes [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [2] ./f.js 20 bytes {1} {2} {3} {6} {7} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {5} {6} [built] - [4] ./b.js 72 bytes {1} {6} [built] - chunk {7} disabled/c.js (c) 167 bytes [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {5} {6} {7} [built] - [2] ./f.js 20 bytes {1} {2} {3} {6} {7} [built] - [6] ./c.js + 1 modules 107 bytes {2} {7} [built] - | ./c.js 72 bytes [built] - | ./node_modules/z.js 20 bytes [built] + [2] ./f.js 20 bytes {2} {3} {5} {6} {7} [built] + [8] ./g.js 34 bytes {7} [built] Child default: Entrypoint main = default/main.js Entrypoint a = default/a.js Entrypoint b = default/b.js Entrypoint c = default/c.js - chunk {0} default/vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= >{2}< >{7}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) + chunk {0} default/vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{4}> ={1}= ={2}= ={3}= ={8}= ={9}= ={10}= ={12}= >{2}< >{11}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= >{2}< >{7}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{4}> ={0}= ={2}= ={3}= ={8}= ={9}= ={10}= ={12}= >{2}< >{11}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{4}> <{9}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{4}> <{5}> <{8}> ={0}= ={1}= ={3}= ={9}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} default/vendors~async-a~async-b.js (vendors~async-a~async-b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={4}= ={5}= >{2}< >{7}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) + [2] ./f.js 20 bytes {2} {6} {7} [built] + chunk {3} default/vendors~async-a~async-b.js (vendors~async-a~async-b) 20 bytes <{4}> ={0}= ={1}= ={2}= ={8}= ={9}= >{2}< >{11}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - chunk {4} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{7}< [rendered] - > ./a [8] ./index.js 1:0-47 - [7] ./a.js + 1 modules 156 bytes {4} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {5} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] - > ./b [8] ./index.js 2:0-47 - [5] ./b.js 72 bytes {5} {11} [built] - chunk {6} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={8}= [rendered] - > ./c [8] ./index.js 3:0-47 - [6] ./c.js 72 bytes {6} {12} [built] - chunk {7} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{4}> ={2}= [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [9] ./g.js 34 bytes {7} [built] - chunk {8} default/vendors~async-c.js (vendors~async-c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={6}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) - > ./c [8] ./index.js 3:0-47 - [4] ./node_modules/z.js 20 bytes {8} {12} [built] - chunk {9} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{8}< [entry] [rendered] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + chunk {4} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{8}< >{9}< >{10}< >{12}< [entry] [rendered] > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} default/a.js (a) 216 bytes >{2}< >{7}< [entry] [rendered] + [8] ./index.js 147 bytes {4} [built] + chunk {5} default/a.js (a) 216 bytes >{2}< >{11}< [entry] [rendered] > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - [7] ./a.js + 1 modules 156 bytes {4} {10} [built] + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + [6] ./a.js + 1 modules 156 bytes {5} {8} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {11} default/b.js (b) 152 bytes [entry] [rendered] + chunk {6} default/b.js (b) 152 bytes [entry] [rendered] > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [2] ./f.js 20 bytes {2} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - [5] ./b.js 72 bytes {5} {11} [built] - chunk {12} default/c.js (c) 152 bytes [entry] [rendered] + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {2} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + [4] ./b.js 72 bytes {6} {9} [built] + chunk {7} default/c.js (c) 152 bytes [entry] [rendered] > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [2] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./node_modules/z.js 20 bytes {8} {12} [built] - [6] ./c.js 72 bytes {6} {12} [built] -Child vendors: - Entrypoint main = vendors/main.js - Entrypoint a = vendors/vendors.js vendors/a.js - Entrypoint b = vendors/vendors.js vendors/b.js - Entrypoint c = vendors/vendors.js vendors/c.js - chunk {0} vendors/async-a.js (async-a) 216 bytes <{5}> >{3}< [rendered] + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {2} {6} {7} [built] + [5] ./c.js 72 bytes {7} {10} [built] + [7] ./node_modules/z.js 20 bytes {7} {12} [built] + chunk {8} default/async-a.js (async-a) 156 bytes <{4}> ={0}= ={1}= ={3}= >{2}< >{11}< [rendered] > ./a [8] ./index.js 1:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {4} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {4} [built] - [7] ./a.js + 1 modules 156 bytes {0} {6} [built] + [6] ./a.js + 1 modules 156 bytes {5} {8} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {1} vendors/async-b.js (async-b) 152 bytes <{5}> [rendered] + chunk {9} default/async-b.js (async-b) 72 bytes <{4}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {4} [built] - [2] ./f.js 20 bytes {1} {2} {3} {7} {8} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {4} [built] - [5] ./b.js 72 bytes {1} {7} [built] - chunk {2} vendors/async-c.js (async-c) 152 bytes <{5}> [rendered] + [4] ./b.js 72 bytes {6} {9} [built] + chunk {10} default/async-c.js (async-c) 72 bytes <{4}> ={0}= ={1}= ={2}= ={12}= [rendered] > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {4} [built] - [2] ./f.js 20 bytes {1} {2} {3} {7} {8} [built] - [4] ./node_modules/z.js 20 bytes {2} {4} [built] - [6] ./c.js 72 bytes {2} {8} [built] - chunk {3} vendors/async-g.js (async-g) 54 bytes <{0}> <{4}> <{6}> [rendered] + [5] ./c.js 72 bytes {7} {10} [built] + chunk {11} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{8}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [2] ./f.js 20 bytes {1} {2} {3} {7} {8} [built] - [9] ./g.js 34 bytes {3} [built] - chunk {4} vendors/vendors.js (vendors) 60 bytes ={6}= ={7}= ={8}= >{3}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) + [9] ./g.js 34 bytes {11} [built] + chunk {12} default/vendors~async-c.js (vendors~async-c) 20 bytes <{4}> ={0}= ={1}= ={2}= ={10}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) + > ./c [8] ./index.js 3:0-47 + [7] ./node_modules/z.js 20 bytes {7} {12} [built] +Child vendors: + Entrypoint main = vendors/main.js + Entrypoint a = vendors/vendors.js vendors/a.js + Entrypoint b = vendors/vendors.js vendors/b.js + Entrypoint c = vendors/vendors.js vendors/c.js + chunk {0} vendors/vendors.js (vendors) 60 bytes ={2}= ={3}= ={4}= >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./a a > ./b b > ./c c - [1] ./node_modules/x.js 20 bytes {0} {1} {2} {4} [built] - [3] ./node_modules/y.js 20 bytes {0} {1} {4} [built] - [4] ./node_modules/z.js 20 bytes {2} {4} [built] - chunk {5} vendors/main.js (main) 147 bytes >{0}< >{1}< >{2}< [entry] [rendered] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {0} {5} {6} [built] + [7] ./node_modules/z.js 20 bytes {0} {7} [built] + chunk {1} vendors/main.js (main) 147 bytes >{5}< >{6}< >{7}< [entry] [rendered] > ./ main - [8] ./index.js 147 bytes {5} [built] - chunk {6} vendors/a.js (a) 176 bytes ={4}= >{3}< [entry] [rendered] + [8] ./index.js 147 bytes {1} [built] + chunk {2} vendors/a.js (a) 176 bytes ={0}= >{8}< [entry] [rendered] > ./a a - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [7] ./a.js + 1 modules 156 bytes {0} {6} [built] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [6] ./a.js + 1 modules 156 bytes {2} {5} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {7} vendors/b.js (b) 112 bytes ={4}= [entry] [rendered] + chunk {3} vendors/b.js (b) 112 bytes ={0}= [entry] [rendered] > ./b b - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [2] ./f.js 20 bytes {1} {2} {3} {7} {8} [built] - [5] ./b.js 72 bytes {1} {7} [built] - chunk {8} vendors/c.js (c) 112 bytes ={4}= [entry] [rendered] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {4} vendors/c.js (c) 112 bytes ={0}= [entry] [rendered] > ./c c - [0] ./d.js 20 bytes {0} {1} {2} {6} {7} {8} [built] - [2] ./f.js 20 bytes {1} {2} {3} {7} {8} [built] - [6] ./c.js 72 bytes {2} {8} [built] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + chunk {5} vendors/async-a.js (async-a) 216 bytes <{1}> >{8}< [rendered] + > ./a [8] ./index.js 1:0-47 + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {0} {5} {6} [built] + [6] ./a.js + 1 modules 156 bytes {2} {5} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {6} vendors/async-b.js (async-b) 152 bytes <{1}> [rendered] + > ./b [8] ./index.js 2:0-47 + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [3] ./node_modules/y.js 20 bytes {0} {5} {6} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {7} vendors/async-c.js (async-c) 152 bytes <{1}> [rendered] + > ./c [8] ./index.js 3:0-47 + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + [7] ./node_modules/z.js 20 bytes {0} {7} [built] + chunk {8} vendors/async-g.js (async-g) 54 bytes <{0}> <{2}> <{5}> [rendered] + > ./g [] 6:0-47 + > ./g [] 6:0-47 + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [9] ./g.js 34 bytes {8} [built] Child multiple-vendors: Entrypoint main = multiple-vendors/main.js Entrypoint a = multiple-vendors/libs-x.js multiple-vendors/vendors~a~async-a~async-b~b.js multiple-vendors/a.js Entrypoint b = multiple-vendors/libs-x.js multiple-vendors/vendors~a~async-a~async-b~b.js multiple-vendors/b.js Entrypoint c = multiple-vendors/libs-x.js multiple-vendors/vendors~async-c~c.js multiple-vendors/c.js - chunk {0} multiple-vendors/libs-x.js (libs-x) 20 bytes <{9}> ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x) + chunk {0} multiple-vendors/libs-x.js (libs-x) 20 bytes <{5}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x) > ./a a > ./b b > ./c c @@ -341,67 +341,67 @@ Child multiple-vendors: > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} multiple-vendors/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + chunk {1} multiple-vendors/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{5}> ={0}= ={2}= ={3}= ={6}= ={7}= ={9}= ={10}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) + > ./a a + > ./b b + > ./a [8] ./index.js 1:0-47 + > ./b [8] ./index.js 2:0-47 + [3] ./node_modules/y.js 20 bytes {1} [built] + chunk {2} multiple-vendors/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{5}> ={0}= ={1}= ={3}= ={4}= ={9}= ={10}= ={11}= >{3}< >{12}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} multiple-vendors/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{5}> <{9}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + chunk {3} multiple-vendors/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{5}> <{6}> <{9}> ={0}= ={1}= ={2}= ={4}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} multiple-vendors/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={10}= ={11}= ={2}= ={5}= ={6}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) - > ./a a - > ./b b - > ./a [8] ./index.js 1:0-47 - > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} multiple-vendors/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={7}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + [1] ./f.js 20 bytes {3} {7} {8} [built] + chunk {4} multiple-vendors/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{5}> ={0}= ={2}= ={3}= ={8}= ={11}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] - chunk {5} multiple-vendors/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] + chunk {5} multiple-vendors/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{9}< >{10}< >{11}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {5} [built] + chunk {6} multiple-vendors/a.js (a) 176 bytes ={0}= ={1}= >{3}< >{12}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {7} multiple-vendors/b.js (b) 112 bytes ={0}= ={1}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {8} multiple-vendors/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {9} multiple-vendors/async-a.js (async-a) 156 bytes <{5}> ={0}= ={1}= ={2}= >{3}< >{12}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {6} multiple-vendors/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {10} multiple-vendors/async-b.js (async-b) 72 bytes <{5}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {6} {11} [built] - chunk {7} multiple-vendors/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {11} multiple-vendors/async-c.js (async-c) 72 bytes <{5}> ={0}= ={2}= ={3}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 - [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} multiple-vendors/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{5}> ={2}= [rendered] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {12} multiple-vendors/async-g.js (async-g) 34 bytes <{0}> <{1}> <{2}> <{6}> <{9}> ={3}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [9] ./g.js 34 bytes {8} [built] - chunk {9} multiple-vendors/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} multiple-vendors/a.js (a) 176 bytes ={0}= ={3}= >{2}< >{8}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {11} multiple-vendors/b.js (b) 112 bytes ={0}= ={3}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./b.js 72 bytes {6} {11} [built] - chunk {12} multiple-vendors/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [5] ./c.js 72 bytes {7} {12} [built] + [9] ./g.js 34 bytes {12} [built] Child all: Entrypoint main = all/main.js Entrypoint a = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~a~async-a~async-b~b.js all/a.js Entrypoint b = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~a~async-a~async-b~b.js all/b.js Entrypoint c = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~async-c~c.js all/c.js - chunk {0} all/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) + chunk {0} all/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{5}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) > ./a a > ./b b > ./c c @@ -409,65 +409,65 @@ Child all: > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} all/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + chunk {1} all/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{5}> ={0}= ={2}= ={3}= ={6}= ={7}= ={9}= ={10}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) + > ./a a + > ./b b + > ./a [8] ./index.js 1:0-47 + > ./b [8] ./index.js 2:0-47 + [3] ./node_modules/y.js 20 bytes {1} [built] + chunk {2} all/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{5}> ={0}= ={1}= ={3}= ={4}= ={9}= ={10}= ={11}= >{3}< >{12}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} all/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{5}> <{9}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + chunk {3} all/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{5}> <{6}> <{9}> ={0}= ={1}= ={2}= ={4}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} all/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={10}= ={11}= ={2}= ={5}= ={6}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) - > ./a a - > ./b b - > ./a [8] ./index.js 1:0-47 - > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} all/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={7}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + [1] ./f.js 20 bytes {3} {7} {8} [built] + chunk {4} all/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{5}> ={0}= ={2}= ={3}= ={8}= ={11}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] - chunk {5} all/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] + chunk {5} all/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{9}< >{10}< >{11}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {5} [built] + chunk {6} all/a.js (a) 176 bytes ={0}= ={1}= >{3}< >{12}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {7} all/b.js (b) 112 bytes ={0}= ={1}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {8} all/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {9} all/async-a.js (async-a) 156 bytes <{5}> ={0}= ={1}= ={2}= >{3}< >{12}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {6} all/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {10} all/async-b.js (async-b) 72 bytes <{5}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {6} {11} [built] - chunk {7} all/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {11} all/async-c.js (async-c) 72 bytes <{5}> ={0}= ={2}= ={3}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 - [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} all/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{5}> ={2}= [rendered] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {12} all/async-g.js (async-g) 34 bytes <{0}> <{1}> <{2}> <{6}> <{9}> ={3}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [9] ./g.js 34 bytes {8} [built] - chunk {9} all/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} all/a.js (a) 176 bytes ={0}= ={3}= >{2}< >{8}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {11} all/b.js (b) 112 bytes ={0}= ={3}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./b.js 72 bytes {6} {11} [built] - chunk {12} all/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [5] ./c.js 72 bytes {7} {12} [built]" + [9] ./g.js 34 bytes {12} [built]" `; exports[`StatsTestCases should print correct stats for chunk-module-id-range 1`] = ` -"Hash: 7d8eb8b4418c6ae6a262 +"Hash: 8683bda4416097d173ee Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -477,107 +477,107 @@ Entrypoint main1 = main1.js Entrypoint main2 = main2.js chunk {0} main2.js (main2) 136 bytes [entry] [rendered] > ./main2 main2 - [0] ./e.js 20 bytes {0} [built] - [1] ./f.js 20 bytes {0} [built] - [2] ./main2.js 56 bytes {0} [built] - [100] ./d.js 20 bytes {0} {1} [built] + [0] ./d.js 20 bytes {0} {1} [built] + [1] ./e.js 20 bytes {0} [built] + [2] ./f.js 20 bytes {0} [built] + [3] ./main2.js 56 bytes {0} [built] [101] ./a.js 20 bytes {0} {1} [built] chunk {1} main1.js (main1) 136 bytes [entry] [rendered] > ./main1 main1 - [3] ./b.js 20 bytes {1} [built] - [4] ./main1.js 56 bytes {1} [built] - [100] ./d.js 20 bytes {0} {1} [built] + [0] ./d.js 20 bytes {0} {1} [built] + [4] ./c.js 20 bytes {1} [built] + [100] ./main1.js 56 bytes {1} [built] [101] ./a.js 20 bytes {0} {1} [built] - [102] ./c.js 20 bytes {1} [built]" + [102] ./b.js 20 bytes {1} [built]" `; exports[`StatsTestCases should print correct stats for chunks 1`] = ` -"Hash: 337155e238d6550ce6f7 +"Hash: bb90fc9e61205a066fee Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names -0.bundle.js 152 bytes 0 [emitted] -1.bundle.js 289 bytes 1 [emitted] - bundle.js 8.29 KiB 2 [emitted] main -3.bundle.js 227 bytes 3 [emitted] + bundle.js 8.28 KiB 0 [emitted] main +1.bundle.js 152 bytes 1 [emitted] +2.bundle.js 289 bytes 2 [emitted] +3.bundle.js 232 bytes 3 [emitted] Entrypoint main = bundle.js -chunk {0} 0.bundle.js 22 bytes <{2}> [rendered] - > ./b [4] ./index.js 2:0-16 - [2] ./b.js 22 bytes {0} [built] - amd require ./b [4] ./index.js 2:0-16 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {1} 1.bundle.js 54 bytes <{2}> >{3}< [rendered] - > ./c [4] ./index.js 3:0-16 - [3] ./c.js 54 bytes {1} [built] - amd require ./c [4] ./index.js 3:0-16 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {2} bundle.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] +chunk {0} bundle.js (main) 73 bytes >{1}< >{2}< [entry] [rendered] > ./index main - [4] ./index.js 51 bytes {2} [built] + [0] ./index.js 51 bytes {0} [built] single entry ./index main factory:Xms building:Xms = Xms - [5] ./a.js 22 bytes {2} [built] - cjs require ./a [4] ./index.js 1:0-14 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {3} 3.bundle.js 44 bytes <{1}> [rendered] + [1] ./a.js 22 bytes {0} [built] + cjs require ./a [0] ./index.js 1:0-14 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {1} 1.bundle.js 22 bytes <{0}> [rendered] + > ./b [0] ./index.js 2:0-16 + [2] ./b.js 22 bytes {1} [built] + amd require ./b [0] ./index.js 2:0-16 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {2} 2.bundle.js 54 bytes <{0}> >{3}< [rendered] + > ./c [0] ./index.js 3:0-16 + [3] ./c.js 54 bytes {2} [built] + amd require ./c [0] ./index.js 3:0-16 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {3} 3.bundle.js 44 bytes <{2}> [rendered] > [3] ./c.js 1:0-52 - [0] ./d.js 22 bytes {3} [built] + [4] ./d.js 22 bytes {3} [built] require.ensure item ./d [3] ./c.js 1:0-52 - [4] Xms -> [3] Xms -> factory:Xms building:Xms = Xms - [1] ./e.js 22 bytes {3} [built] + [0] Xms -> [3] Xms -> factory:Xms building:Xms = Xms + [5] ./e.js 22 bytes {3} [built] require.ensure item ./e [3] ./c.js 1:0-52 - [4] Xms -> [3] Xms -> factory:Xms building:Xms = Xms" + [0] Xms -> [3] Xms -> factory:Xms building:Xms = Xms" `; exports[`StatsTestCases should print correct stats for chunks-development 1`] = ` -"Hash: 491964abb8a9925c2f65 +"Hash: 83bf92a94bc3834801e8 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names -0.bundle.js 433 bytes 0 [emitted] -1.bundle.js 297 bytes 1 [emitted] -2.bundle.js 588 bytes 2 [emitted] bundle.js 8.67 KiB main [emitted] main +0.bundle.js 297 bytes 0 [emitted] +1.bundle.js 433 bytes 1 [emitted] +2.bundle.js 588 bytes 2 [emitted] Entrypoint main = bundle.js -chunk {main} bundle.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] - > ./index main - [./a.js] 22 bytes {main} [built] - cjs require ./a [./index.js] 1:0-14 - cjs require ./a [./e.js] 1:0-14 +chunk {0} 0.bundle.js 22 bytes <{main}> [rendered] + > ./b [./index.js] ./index.js 2:0-16 + [./b.js] 22 bytes {0} [built] + amd require ./b [./index.js] 2:0-16 [./index.js] Xms -> factory:Xms building:Xms = Xms - [./index.js] 51 bytes {main} [built] - single entry ./index main - factory:Xms building:Xms = Xms -chunk {0} 0.bundle.js 54 bytes <{main}> >{2}< [rendered] +chunk {1} 1.bundle.js 54 bytes <{main}> >{2}< [rendered] > ./c [./index.js] ./index.js 3:0-16 - [./c.js] 54 bytes {0} [built] + [./c.js] 54 bytes {1} [built] amd require ./c [./index.js] 3:0-16 [./index.js] Xms -> factory:Xms building:Xms = Xms -chunk {1} 1.bundle.js 22 bytes <{main}> [rendered] - > ./b [./index.js] ./index.js 2:0-16 - [./b.js] 22 bytes {1} [built] - amd require ./b [./index.js] 2:0-16 - [./index.js] Xms -> factory:Xms building:Xms = Xms -chunk {2} 2.bundle.js 60 bytes <{0}> [rendered] +chunk {2} 2.bundle.js 60 bytes <{1}> [rendered] > [./c.js] ./c.js 1:0-52 [./d.js] 22 bytes {2} [built] require.ensure item ./d [./c.js] 1:0-52 [./index.js] Xms -> [./c.js] Xms -> factory:Xms building:Xms = Xms [./e.js] 38 bytes {2} [built] require.ensure item ./e [./c.js] 1:0-52 - [./index.js] Xms -> [./c.js] Xms -> factory:Xms building:Xms = Xms" + [./index.js] Xms -> [./c.js] Xms -> factory:Xms building:Xms = Xms +chunk {main} bundle.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] + > ./index main + [./a.js] 22 bytes {main} [built] + cjs require ./a [./index.js] 1:0-14 + cjs require ./a [./e.js] 1:0-14 + [./index.js] Xms -> factory:Xms building:Xms = Xms + [./index.js] 51 bytes {main} [built] + single entry ./index main + factory:Xms building:Xms = Xms" `; exports[`StatsTestCases should print correct stats for circular-correctness 1`] = ` "Entrypoint main = bundle.js -chunk {0} 0.bundle.js (a) 49 bytes <{2}> <{3}> >{3}< [rendered] - [1] ./module-a.js 49 bytes {0} [built] -chunk {1} 1.bundle.js (b) 49 bytes <{2}> <{3}> >{3}< [rendered] - [2] ./module-b.js 49 bytes {1} [built] -chunk {2} bundle.js (main) 98 bytes >{0}< >{1}< [entry] [rendered] - [3] ./index.js 98 bytes {2} [built] -chunk {3} 3.bundle.js (c) 98 bytes <{0}> <{1}> >{0}< >{1}< [rendered] - [0] ./module-c.js 98 bytes {3} [built]" +chunk {0} bundle.js (main) 98 bytes >{1}< >{2}< [entry] [rendered] + [0] ./index.js 98 bytes {0} [built] +chunk {1} 1.bundle.js (a) 49 bytes <{0}> <{3}> >{3}< [rendered] + [1] ./module-a.js 49 bytes {1} [built] +chunk {2} 2.bundle.js (b) 49 bytes <{0}> <{3}> >{3}< [rendered] + [2] ./module-b.js 49 bytes {2} [built] +chunk {3} 3.bundle.js (c) 98 bytes <{1}> <{2}> >{1}< >{2}< [rendered] + [3] ./module-c.js 98 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for color-disabled 1`] = ` @@ -996,56 +996,56 @@ Child [warnings => false]: exports[`StatsTestCases should print correct stats for graph-correctness-entries 1`] = ` "Entrypoint e1 = e1.js Entrypoint e2 = e2.js -chunk {0} a.js (a) 49 bytes <{1}> <{2}> >{4}< [rendered] - [0] ./module-a.js 49 bytes {0} [built] - import() ./module-a [1] ./module-c.js 1:0-47 - import() ./module-a [3] ./e1.js 1:0-47 -chunk {1} c.js (c) 49 bytes <{3}> <{4}> >{0}< [rendered] - [1] ./module-c.js 49 bytes {1} [built] - import() ./module-c [2] ./module-b.js 1:0-47 - import() ./module-c [4] ./e2.js 1:0-47 -chunk {2} e1.js (e1) 49 bytes >{0}< [entry] [rendered] - [3] ./e1.js 49 bytes {2} [built] +chunk {0} e1.js (e1) 49 bytes >{2}< [entry] [rendered] + [0] ./e1.js 49 bytes {0} [built] single entry ./e1 e1 -chunk {3} e2.js (e2) 49 bytes >{1}< [entry] [rendered] - [4] ./e2.js 49 bytes {3} [built] +chunk {1} e2.js (e2) 49 bytes >{3}< [entry] [rendered] + [1] ./e2.js 49 bytes {1} [built] single entry ./e2 e2 -chunk {4} b.js (b) 49 bytes <{0}> >{1}< [rendered] - [2] ./module-b.js 49 bytes {4} [built] - import() ./module-b [0] ./module-a.js 1:0-47" +chunk {2} a.js (a) 49 bytes <{0}> <{3}> >{4}< [rendered] + [2] ./module-a.js 49 bytes {2} [built] + import() ./module-a [0] ./e1.js 1:0-47 + import() ./module-a [3] ./module-c.js 1:0-47 +chunk {3} c.js (c) 49 bytes <{1}> <{4}> >{2}< [rendered] + [3] ./module-c.js 49 bytes {3} [built] + import() ./module-c [1] ./e2.js 1:0-47 + import() ./module-c [4] ./module-b.js 1:0-47 +chunk {4} b.js (b) 49 bytes <{2}> >{3}< [rendered] + [4] ./module-b.js 49 bytes {4} [built] + import() ./module-b [2] ./module-a.js 1:0-47" `; exports[`StatsTestCases should print correct stats for graph-correctness-modules 1`] = ` "Entrypoint e1 = e1.js Entrypoint e2 = e2.js -chunk {0} y.js (y) 0 bytes <{3}> <{4}> [rendered] - [3] ./module-y.js 0 bytes {0} [built] - import() ./module-y [0] ./module-x.js 1:0-47 -chunk {1} a.js (a) 49 bytes <{2}> <{3}> >{5}< [rendered] - [1] ./module-a.js 49 bytes {1} [built] - import() ./module-a [2] ./module-c.js 1:0-47 - import() ./module-a [5] ./e1.js 2:0-47 -chunk {2} c.js (c) 49 bytes <{4}> <{5}> >{1}< [rendered] - [2] ./module-c.js 49 bytes {2} [built] - import() ./module-c [4] ./module-b.js 1:0-47 - import() ./module-c [6] ./e2.js 2:0-47 -chunk {3} e1.js (e1) 119 bytes >{0}< >{1}< [entry] [rendered] - [0] ./module-x.js 49 bytes {3} {4} [built] - import() ./module-x [4] ./module-b.js 2:0-20 - harmony side effect evaluation ./module-x [5] ./e1.js 1:0-20 - harmony side effect evaluation ./module-x [6] ./e2.js 1:0-20 - [5] ./e1.js 70 bytes {3} [built] +chunk {0} e1.js (e1) 119 bytes >{2}< >{3}< [entry] [rendered] + [0] ./module-x.js 49 bytes {0} {1} [built] + harmony side effect evaluation ./module-x [2] ./e1.js 1:0-20 + harmony side effect evaluation ./module-x [3] ./e2.js 1:0-20 + import() ./module-x [6] ./module-b.js 2:0-20 + [2] ./e1.js 70 bytes {0} [built] single entry ./e1 e1 -chunk {4} e2.js (e2) 119 bytes >{0}< >{2}< [entry] [rendered] - [0] ./module-x.js 49 bytes {3} {4} [built] - import() ./module-x [4] ./module-b.js 2:0-20 - harmony side effect evaluation ./module-x [5] ./e1.js 1:0-20 - harmony side effect evaluation ./module-x [6] ./e2.js 1:0-20 - [6] ./e2.js 70 bytes {4} [built] +chunk {1} e2.js (e2) 119 bytes >{3}< >{4}< [entry] [rendered] + [0] ./module-x.js 49 bytes {0} {1} [built] + harmony side effect evaluation ./module-x [2] ./e1.js 1:0-20 + harmony side effect evaluation ./module-x [3] ./e2.js 1:0-20 + import() ./module-x [6] ./module-b.js 2:0-20 + [3] ./e2.js 70 bytes {1} [built] single entry ./e2 e2 -chunk {5} b.js (b) 179 bytes <{1}> >{2}< [rendered] - [4] ./module-b.js 179 bytes {5} [built] - import() ./module-b [1] ./module-a.js 1:0-47" +chunk {2} a.js (a) 49 bytes <{0}> <{4}> >{5}< [rendered] + [4] ./module-a.js 49 bytes {2} [built] + import() ./module-a [2] ./e1.js 2:0-47 + import() ./module-a [5] ./module-c.js 1:0-47 +chunk {3} y.js (y) 0 bytes <{0}> <{1}> [rendered] + [1] ./module-y.js 0 bytes {3} [built] + import() ./module-y [0] ./module-x.js 1:0-47 +chunk {4} c.js (c) 49 bytes <{1}> <{5}> >{2}< [rendered] + [5] ./module-c.js 49 bytes {4} [built] + import() ./module-c [3] ./e2.js 2:0-47 + import() ./module-c [6] ./module-b.js 1:0-47 +chunk {5} b.js (b) 179 bytes <{2}> >{4}< [rendered] + [6] ./module-b.js 179 bytes {5} [built] + import() ./module-b [4] ./module-a.js 1:0-47" `; exports[`StatsTestCases should print correct stats for import-context-filter 1`] = ` @@ -1066,26 +1066,26 @@ Entrypoint entry = entry.js `; exports[`StatsTestCases should print correct stats for import-weak 1`] = ` -"Hash: 5043a861e2975c70a2e7 +"Hash: dbee3e50dffcb0b8c23e Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 149 bytes 0 [emitted] -entry.js 8.53 KiB 1 [emitted] entry +entry.js 8.53 KiB 0 [emitted] entry + 1.js 149 bytes 1 [emitted] Entrypoint entry = entry.js -[0] ./modules/b.js 22 bytes {0} [built] -[1] ./entry.js 120 bytes {1} [built] +[0] ./modules/b.js 22 bytes {1} [built] +[1] ./entry.js 120 bytes {0} [built] [2] ./modules/a.js 37 bytes [built]" `; exports[`StatsTestCases should print correct stats for import-with-invalid-options-comments 1`] = ` "Built at: Thu Jan 01 1970 00:00:00 GMT -[0] ./chunk-a.js 27 bytes {2} [built] -[1] ./chunk-b.js 27 bytes {3} [built] -[2] ./chunk-c.js 27 bytes {4} [built] -[3] ./chunk-d.js 27 bytes {5} [built] -[4] ./chunk.js 401 bytes {0} [built] [3 warnings] -[5] ./index.js 50 bytes {1} [built] +[0] ./index.js 50 bytes {0} [built] +[1] ./chunk.js 401 bytes {1} [built] [3 warnings] +[2] ./chunk-a.js 27 bytes {2} [built] +[3] ./chunk-b.js 27 bytes {3} [built] +[4] ./chunk-c.js 27 bytes {4} [built] +[5] ./chunk-d.js 27 bytes {5} [built] WARNING in ./chunk.js 4:11-77 Compilation error while processing magic comment(-s): /* webpack Prefetch: 0, webpackChunkName: \\"notGoingToCompile-c\\" */: Unexpected identifier @@ -1101,7 +1101,7 @@ Compilation error while processing magic comment(-s): /* webpackPrefetch: true, `; exports[`StatsTestCases should print correct stats for issue-7577 1`] = ` -"Hash: 343642fcbd3799129ba328960aea386766e9b4685f5e642073649561789d +"Hash: 343642fcbd3799129ba328960aea386766e9b4687cb799c3c09b3e52b1ac Child Hash: 343642fcbd3799129ba3 Time: Xms @@ -1125,23 +1125,23 @@ Child [0] ./node_modules/vendor.js 23 bytes {vendors~main} [built] [1] ./b.js 17 bytes {all~main} [built] Child - Hash: 5f5e642073649561789d + Hash: 7cb799c3c09b3e52b1ac Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - c-0-6bb505f933a38ad423d3.js 150 bytes 0 [emitted] - c-1-e2f2199a8d3d8508c29c.js 459 bytes 1 [emitted] - c-all~main-5bf91ad3502dd7005727.js 299 bytes all~main [emitted] all~main - c-main-b48f733d0f40de7539ce.js 114 bytes main [emitted] main - c-runtime~main-4582dbde6a81040ef3aa.js 8.84 KiB runtime~main [emitted] runtime~main - Entrypoint main = c-runtime~main-4582dbde6a81040ef3aa.js c-all~main-5bf91ad3502dd7005727.js c-main-b48f733d0f40de7539ce.js (prefetch: c-0-6bb505f933a38ad423d3.js c-1-e2f2199a8d3d8508c29c.js) - [0] ./node_modules/vendor.js 23 bytes {0} [built] - [1] ./b.js 17 bytes {1} [built] - [2] ./c.js 61 bytes {all~main} [built]" + c-main-a7197f03f8f2dfea0fa5.js 114 bytes main [emitted] main + c-0-775a18a4f14e4483daf8.js 153 bytes 0 [emitted] + c-1-f0767101f6e51d910fd6.js 450 bytes 1 [emitted] + c-all~main-7b1b86e650f3856c17c9.js 305 bytes all~main [emitted] all~main + c-runtime~main-07e05a23b9679c3f51dd.js 8.84 KiB runtime~main [emitted] runtime~main + Entrypoint main = c-runtime~main-07e05a23b9679c3f51dd.js c-all~main-7b1b86e650f3856c17c9.js c-main-a7197f03f8f2dfea0fa5.js (prefetch: c-0-775a18a4f14e4483daf8.js c-1-f0767101f6e51d910fd6.js) + [0] ./b.js 17 bytes {1} [built] + [1] ./c.js 61 bytes {all~main} [built] + [2] ./node_modules/vendor.js 23 bytes {0} [built]" `; exports[`StatsTestCases should print correct stats for limit-chunk-count-plugin 1`] = ` -"Hash: 3f682d19df3a78cc355bf6b5cf6affcd0a3789f4d4554dbae635e8619c03ae9e4a73fc96c164d6f0 +"Hash: 3f682d19df3a78cc355b358ecf1b8718ebbde62e08074f8efde660b3b349f7c7c171ed4a3a7adb19 Child 1 chunks: Hash: 3f682d19df3a78cc355b Time: Xms @@ -1157,59 +1157,59 @@ Child 1 chunks: [4] ./d.js 22 bytes {0} [built] [5] ./e.js 22 bytes {0} [built] Child 2 chunks: - Hash: f6b5cf6affcd0a3789f4 + Hash: 358ecf1b8718ebbde62e Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.bundle.js 632 bytes 0 [emitted] + 0.bundle.js 641 bytes 0 [emitted] bundle.js 8.28 KiB 1 [emitted] main Entrypoint main = bundle.js chunk {0} 0.bundle.js 118 bytes <{0}> <{1}> >{0}< [rendered] - [0] ./d.js 22 bytes {0} [built] - [1] ./e.js 22 bytes {0} [built] - [2] ./a.js 22 bytes {0} [built] - [3] ./b.js 22 bytes {0} [built] - [4] ./c.js 30 bytes {0} [built] + [1] ./a.js 22 bytes {0} [built] + [2] ./b.js 22 bytes {0} [built] + [3] ./c.js 30 bytes {0} [built] + [4] ./d.js 22 bytes {0} [built] + [5] ./e.js 22 bytes {0} [built] chunk {1} bundle.js (main) 73 bytes >{0}< [entry] [rendered] - [5] ./index.js 73 bytes {1} [built] + [0] ./index.js 73 bytes {1} [built] Child 3 chunks: - Hash: d4554dbae635e8619c03 + Hash: 08074f8efde660b3b349 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names 0.bundle.js 494 bytes 0 [emitted] - 1.bundle.js 245 bytes 1 [emitted] + 1.bundle.js 232 bytes 1 [emitted] bundle.js 8.28 KiB 2 [emitted] main Entrypoint main = bundle.js chunk {0} 0.bundle.js 74 bytes <{0}> <{2}> >{0}< >{1}< [rendered] - [0] ./d.js 22 bytes {0} [built] - [2] ./a.js 22 bytes {0} [built] - [4] ./c.js 30 bytes {0} [built] + [1] ./a.js 22 bytes {0} [built] + [3] ./c.js 30 bytes {0} [built] + [4] ./d.js 22 bytes {0} [built] chunk {1} 1.bundle.js 44 bytes <{0}> <{2}> [rendered] - [1] ./e.js 22 bytes {1} [built] - [3] ./b.js 22 bytes {1} [built] + [2] ./b.js 22 bytes {1} [built] + [5] ./e.js 22 bytes {1} [built] chunk {2} bundle.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] - [5] ./index.js 73 bytes {2} [built] + [0] ./index.js 73 bytes {2} [built] Child 4 chunks: - Hash: ae9e4a73fc96c164d6f0 + Hash: f7c7c171ed4a3a7adb19 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.bundle.js 236 bytes 0 [emitted] - 1.bundle.js 245 bytes 1 [emitted] - 2.bundle.js 323 bytes 2 [emitted] - bundle.js 8.28 KiB 3 [emitted] main + 0.bundle.js 254 bytes 0 [emitted] + 1.bundle.js 232 bytes 1 [emitted] + bundle.js 8.28 KiB 2 [emitted] main + 3.bundle.js 323 bytes 3 [emitted] Entrypoint main = bundle.js chunk {0} 0.bundle.js 44 bytes <{2}> <{3}> [rendered] - [0] ./d.js 22 bytes {0} [built] - [2] ./a.js 22 bytes {0} [built] + [1] ./a.js 22 bytes {0} [built] + [4] ./d.js 22 bytes {0} [built] chunk {1} 1.bundle.js 44 bytes <{2}> <{3}> [rendered] - [1] ./e.js 22 bytes {1} [built] - [3] ./b.js 22 bytes {1} [built] - chunk {2} 2.bundle.js 30 bytes <{3}> >{0}< >{1}< [rendered] - [4] ./c.js 30 bytes {2} [built] - chunk {3} bundle.js (main) 73 bytes >{0}< >{1}< >{2}< [entry] [rendered] - [5] ./index.js 73 bytes {3} [built]" + [2] ./b.js 22 bytes {1} [built] + [5] ./e.js 22 bytes {1} [built] + chunk {2} bundle.js (main) 73 bytes >{0}< >{1}< >{3}< [entry] [rendered] + [0] ./index.js 73 bytes {2} [built] + chunk {3} 3.bundle.js 30 bytes <{2}> >{0}< >{1}< [rendered] + [3] ./c.js 30 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for max-modules 1`] = ` @@ -1268,107 +1268,107 @@ Entrypoint main = main.js `; exports[`StatsTestCases should print correct stats for module-assets 1`] = ` -"Hash: ceae20d6bebac3a4387e +"Hash: bd21dd593eac70b70df9 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint main = main.js -chunk {0} 0.js 68 bytes <{1}> [rendered] - [0] ./node_modules/a/1.png 51 bytes {0} [built] [1 asset] - [1] ./node_modules/a/index.js 17 bytes {0} [built] -chunk {1} main.js (main) 12 bytes >{0}< [entry] [rendered] - [2] ./index.js 12 bytes {1} [built] -[0] ./node_modules/a/1.png 51 bytes {0} [built] [1 asset] -[1] ./node_modules/a/index.js 17 bytes {0} [built] -[2] ./index.js 12 bytes {1} [built]" +chunk {0} main.js (main) 12 bytes >{1}< [entry] [rendered] + [0] ./index.js 12 bytes {0} [built] +chunk {1} 1.js 68 bytes <{0}> [rendered] + [1] ./node_modules/a/index.js 17 bytes {1} [built] + [2] ./node_modules/a/1.png 51 bytes {1} [built] [1 asset] +[0] ./index.js 12 bytes {0} [built] +[1] ./node_modules/a/index.js 17 bytes {1} [built] +[2] ./node_modules/a/1.png 51 bytes {1} [built] [1 asset]" `; exports[`StatsTestCases should print correct stats for module-deduplication 1`] = ` "Asset Size Chunks Chunk Names - 0.js 730 bytes 0, 4 [emitted] - 1.js 730 bytes 1, 5 [emitted] - 2.js 730 bytes 2, 3 [emitted] - 3.js 661 bytes 3 [emitted] - 4.js 661 bytes 4 [emitted] - 5.js 661 bytes 5 [emitted] -e1.js 9.42 KiB 6 [emitted] e1 -e2.js 9.44 KiB 7 [emitted] e2 -e3.js 9.46 KiB 8 [emitted] e3 + 0.js 730 bytes 0, 7 [emitted] + 1.js 730 bytes 1, 8 [emitted] + 2.js 730 bytes 2, 6 [emitted] +e1.js 9.42 KiB 3 [emitted] e1 +e2.js 9.44 KiB 4 [emitted] e2 +e3.js 9.46 KiB 5 [emitted] e3 + 6.js 661 bytes 6 [emitted] + 7.js 661 bytes 7 [emitted] + 8.js 661 bytes 8 [emitted] Entrypoint e1 = e1.js Entrypoint e2 = e2.js Entrypoint e3 = e3.js -chunk {0} 0.js 37 bytes <{6}> <{8}> [rendered] - [3] ./f.js 9 bytes {0} {7} [built] - [6] ./async2.js 28 bytes {0} {4} [built] -chunk {1} 1.js 37 bytes <{6}> <{7}> [rendered] - [4] ./h.js 9 bytes {1} {8} [built] - [7] ./async3.js 28 bytes {1} {5} [built] -chunk {2} 2.js 37 bytes <{7}> <{8}> [rendered] - [2] ./d.js 9 bytes {2} {6} [built] - [5] ./async1.js 28 bytes {2} {3} [built] -chunk {3} 3.js 28 bytes <{6}> [rendered] - [5] ./async1.js 28 bytes {2} {3} [built] -chunk {4} 4.js 28 bytes <{7}> [rendered] - [6] ./async2.js 28 bytes {0} {4} [built] -chunk {5} 5.js 28 bytes <{8}> [rendered] - [7] ./async3.js 28 bytes {1} {5} [built] -chunk {6} e1.js (e1) 152 bytes >{0}< >{1}< >{3}< [entry] [rendered] - [0] ./b.js 9 bytes {6} {7} {8} [built] - [1] ./a.js 9 bytes {6} {7} {8} [built] - [2] ./d.js 9 bytes {2} {6} [built] - [8] ./e1.js 116 bytes {6} [built] - [9] ./c.js 9 bytes {6} [built] -chunk {7} e2.js (e2) 152 bytes >{1}< >{2}< >{4}< [entry] [rendered] - [0] ./b.js 9 bytes {6} {7} {8} [built] - [1] ./a.js 9 bytes {6} {7} {8} [built] - [3] ./f.js 9 bytes {0} {7} [built] - [10] ./e2.js 116 bytes {7} [built] - [11] ./e.js 9 bytes {7} [built] -chunk {8} e3.js (e3) 152 bytes >{0}< >{2}< >{5}< [entry] [rendered] - [0] ./b.js 9 bytes {6} {7} {8} [built] - [1] ./a.js 9 bytes {6} {7} {8} [built] - [4] ./h.js 9 bytes {1} {8} [built] - [12] ./e3.js 116 bytes {8} [built] - [13] ./g.js 9 bytes {8} [built]" +chunk {0} 0.js 37 bytes <{3}> <{5}> [rendered] + [3] ./async2.js 28 bytes {0} {7} [built] + [6] ./f.js 9 bytes {0} {4} [built] +chunk {1} 1.js 37 bytes <{3}> <{4}> [rendered] + [4] ./async3.js 28 bytes {1} {8} [built] + [7] ./h.js 9 bytes {1} {5} [built] +chunk {2} 2.js 37 bytes <{4}> <{5}> [rendered] + [2] ./async1.js 28 bytes {2} {6} [built] + [5] ./d.js 9 bytes {2} {3} [built] +chunk {3} e1.js (e1) 152 bytes >{0}< >{1}< >{6}< [entry] [rendered] + [0] ./b.js 9 bytes {3} {4} {5} [built] + [1] ./a.js 9 bytes {3} {4} {5} [built] + [5] ./d.js 9 bytes {2} {3} [built] + [8] ./e1.js 116 bytes {3} [built] + [9] ./c.js 9 bytes {3} [built] +chunk {4} e2.js (e2) 152 bytes >{1}< >{2}< >{7}< [entry] [rendered] + [0] ./b.js 9 bytes {3} {4} {5} [built] + [1] ./a.js 9 bytes {3} {4} {5} [built] + [6] ./f.js 9 bytes {0} {4} [built] + [10] ./e2.js 116 bytes {4} [built] + [11] ./e.js 9 bytes {4} [built] +chunk {5} e3.js (e3) 152 bytes >{0}< >{2}< >{8}< [entry] [rendered] + [0] ./b.js 9 bytes {3} {4} {5} [built] + [1] ./a.js 9 bytes {3} {4} {5} [built] + [7] ./h.js 9 bytes {1} {5} [built] + [12] ./e3.js 116 bytes {5} [built] + [13] ./g.js 9 bytes {5} [built] +chunk {6} 6.js 28 bytes <{3}> [rendered] + [2] ./async1.js 28 bytes {2} {6} [built] +chunk {7} 7.js 28 bytes <{4}> [rendered] + [3] ./async2.js 28 bytes {0} {7} [built] +chunk {8} 8.js 28 bytes <{5}> [rendered] + [4] ./async3.js 28 bytes {1} {8} [built]" `; exports[`StatsTestCases should print correct stats for module-deduplication-named 1`] = ` " Asset Size Chunks Chunk Names -async1.js 818 bytes 0 [emitted] async1 -async2.js 818 bytes 1 [emitted] async2 -async3.js 818 bytes 2 [emitted] async3 - e1.js 9.31 KiB 3 [emitted] e1 - e2.js 9.33 KiB 4 [emitted] e2 - e3.js 9.35 KiB 5 [emitted] e3 + e1.js 9.28 KiB 0 [emitted] e1 + e2.js 9.3 KiB 1 [emitted] e2 + e3.js 9.32 KiB 2 [emitted] e3 +async1.js 820 bytes 3 [emitted] async1 +async2.js 820 bytes 4 [emitted] async2 +async3.js 820 bytes 5 [emitted] async3 Entrypoint e1 = e1.js Entrypoint e2 = e2.js Entrypoint e3 = e3.js -chunk {0} async1.js (async1) 89 bytes <{2}> <{3}> >{1}< [rendered] +chunk {0} e1.js (e1) 144 bytes >{3}< [entry] [rendered] + [0] ./b.js 9 bytes {0} {1} {2} [built] + [1] ./a.js 9 bytes {0} {1} {2} [built] [2] ./d.js 9 bytes {0} {3} [built] - [5] ./async1.js 80 bytes {0} [built] -chunk {1} async2.js (async2) 89 bytes <{0}> <{4}> >{2}< [rendered] + [5] ./e1.js 108 bytes {0} [built] + [6] ./c.js 9 bytes {0} [built] +chunk {1} e2.js (e2) 144 bytes >{4}< [entry] [rendered] + [0] ./b.js 9 bytes {0} {1} {2} [built] + [1] ./a.js 9 bytes {0} {1} {2} [built] [3] ./f.js 9 bytes {1} {4} [built] - [6] ./async2.js 80 bytes {1} [built] -chunk {2} async3.js (async3) 89 bytes <{1}> <{5}> >{0}< [rendered] - [4] ./h.js 9 bytes {2} {5} [built] - [7] ./async3.js 80 bytes {2} [built] -chunk {3} e1.js (e1) 144 bytes >{0}< [entry] [rendered] - [0] ./b.js 9 bytes {3} {4} {5} [built] - [1] ./a.js 9 bytes {3} {4} {5} [built] - [2] ./d.js 9 bytes {0} {3} [built] - [8] ./e1.js 108 bytes {3} [built] - [9] ./c.js 9 bytes {3} [built] -chunk {4} e2.js (e2) 144 bytes >{1}< [entry] [rendered] - [0] ./b.js 9 bytes {3} {4} {5} [built] - [1] ./a.js 9 bytes {3} {4} {5} [built] + [7] ./e2.js 108 bytes {1} [built] + [8] ./e.js 9 bytes {1} [built] +chunk {2} e3.js (e3) 144 bytes >{5}< [entry] [rendered] + [0] ./b.js 9 bytes {0} {1} {2} [built] + [1] ./a.js 9 bytes {0} {1} {2} [built] + [4] ./h.js 9 bytes {2} {5} [built] + [9] ./e3.js 108 bytes {2} [built] + [10] ./g.js 9 bytes {2} [built] +chunk {3} async1.js (async1) 89 bytes <{0}> <{5}> >{4}< [rendered] + [2] ./d.js 9 bytes {0} {3} [built] + [11] ./async1.js 80 bytes {3} [built] +chunk {4} async2.js (async2) 89 bytes <{1}> <{3}> >{5}< [rendered] [3] ./f.js 9 bytes {1} {4} [built] - [10] ./e2.js 108 bytes {4} [built] - [11] ./e.js 9 bytes {4} [built] -chunk {5} e3.js (e3) 144 bytes >{2}< [entry] [rendered] - [0] ./b.js 9 bytes {3} {4} {5} [built] - [1] ./a.js 9 bytes {3} {4} {5} [built] + [12] ./async2.js 80 bytes {4} [built] +chunk {5} async3.js (async3) 89 bytes <{2}> <{4}> >{3}< [rendered] [4] ./h.js 9 bytes {2} {5} [built] - [12] ./e3.js 108 bytes {5} [built] - [13] ./g.js 9 bytes {5} [built]" + [13] ./async3.js 80 bytes {5} [built]" `; exports[`StatsTestCases should print correct stats for module-trace-disabled-in-error 1`] = ` @@ -1402,51 +1402,51 @@ exports[`StatsTestCases should print correct stats for named-chunk-groups 1`] = Chunk Group async-a = async-a~async-b.js async-a.js Chunk Group async-b = async-a~async-b.js async-b.js Chunk Group async-c = vendors.js async-c.js - chunk {0} async-a~async-b.js (async-a~async-b) 133 bytes <{5}> ={1}= ={2}= [rendered] split chunk (cache group: default) (name: async-a~async-b) - > ./a [6] ./index.js 1:0-47 - > ./b [6] ./index.js 2:0-47 - [0] ./shared.js 133 bytes {0} [built] - chunk {1} async-a.js (async-a) 40 bytes <{5}> ={0}= [rendered] - > ./a [6] ./index.js 1:0-47 - [3] ./a.js 40 bytes {1} [built] - chunk {2} async-b.js (async-b) 40 bytes <{5}> ={0}= [rendered] - > ./b [6] ./index.js 2:0-47 - [4] ./b.js 40 bytes {2} [built] - chunk {3} async-c.js (async-c) 45 bytes <{5}> ={4}= [rendered] - > ./c [6] ./index.js 3:0-47 - [5] ./c.js 45 bytes {3} [built] - chunk {4} vendors.js (vendors) 40 bytes <{5}> ={3}= [rendered] split chunk (cache group: vendors) (name: vendors) - > ./c [6] ./index.js 3:0-47 - [1] ./node_modules/x.js 20 bytes {4} [built] - [2] ./node_modules/y.js 20 bytes {4} [built] - chunk {5} main.js (main) 146 bytes >{0}< >{1}< >{2}< >{3}< >{4}< [entry] [rendered] + chunk {0} async-a~async-b.js (async-a~async-b) 133 bytes <{1}> ={2}= ={3}= [rendered] split chunk (cache group: default) (name: async-a~async-b) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + [4] ./shared.js 133 bytes {0} [built] + chunk {1} main.js (main) 146 bytes >{0}< >{2}< >{3}< >{4}< >{5}< [entry] [rendered] > ./ main - [6] ./index.js 146 bytes {5} [built] + [0] ./index.js 146 bytes {1} [built] + chunk {2} async-a.js (async-a) 40 bytes <{1}> ={0}= [rendered] + > ./a [0] ./index.js 1:0-47 + [1] ./a.js 40 bytes {2} [built] + chunk {3} async-b.js (async-b) 40 bytes <{1}> ={0}= [rendered] + > ./b [0] ./index.js 2:0-47 + [2] ./b.js 40 bytes {3} [built] + chunk {4} async-c.js (async-c) 45 bytes <{1}> ={5}= [rendered] + > ./c [0] ./index.js 3:0-47 + [3] ./c.js 45 bytes {4} [built] + chunk {5} vendors.js (vendors) 40 bytes <{1}> ={4}= [rendered] split chunk (cache group: vendors) (name: vendors) + > ./c [0] ./index.js 3:0-47 + [5] ./node_modules/x.js 20 bytes {5} [built] + [6] ./node_modules/y.js 20 bytes {5} [built] Child Entrypoint main = main.js Chunk Group async-a = async-a~async-b.js async-a.js Chunk Group async-b = async-a~async-b.js async-b.js Chunk Group async-c = vendors.js async-c.js - chunk {0} async-a~async-b.js (async-a~async-b) 133 bytes <{5}> ={1}= ={2}= [rendered] split chunk (cache group: default) (name: async-a~async-b) - > ./a [6] ./index.js 1:0-47 - > ./b [6] ./index.js 2:0-47 - [0] ./shared.js 133 bytes {0} [built] - chunk {1} async-a.js (async-a) 40 bytes <{5}> ={0}= [rendered] - > ./a [6] ./index.js 1:0-47 - [3] ./a.js 40 bytes {1} [built] - chunk {2} async-b.js (async-b) 40 bytes <{5}> ={0}= [rendered] - > ./b [6] ./index.js 2:0-47 - [4] ./b.js 40 bytes {2} [built] - chunk {3} async-c.js (async-c) 45 bytes <{5}> ={4}= [rendered] - > ./c [6] ./index.js 3:0-47 - [5] ./c.js 45 bytes {3} [built] - chunk {4} vendors.js (vendors) 40 bytes <{5}> ={3}= [rendered] split chunk (cache group: vendors) (name: vendors) - > ./c [6] ./index.js 3:0-47 - [1] ./node_modules/x.js 20 bytes {4} [built] - [2] ./node_modules/y.js 20 bytes {4} [built] - chunk {5} main.js (main) 146 bytes >{0}< >{1}< >{2}< >{3}< >{4}< [entry] [rendered] + chunk {0} async-a~async-b.js (async-a~async-b) 133 bytes <{1}> ={2}= ={3}= [rendered] split chunk (cache group: default) (name: async-a~async-b) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + [4] ./shared.js 133 bytes {0} [built] + chunk {1} main.js (main) 146 bytes >{0}< >{2}< >{3}< >{4}< >{5}< [entry] [rendered] > ./ main - [6] ./index.js 146 bytes {5} [built]" + [0] ./index.js 146 bytes {1} [built] + chunk {2} async-a.js (async-a) 40 bytes <{1}> ={0}= [rendered] + > ./a [0] ./index.js 1:0-47 + [1] ./a.js 40 bytes {2} [built] + chunk {3} async-b.js (async-b) 40 bytes <{1}> ={0}= [rendered] + > ./b [0] ./index.js 2:0-47 + [2] ./b.js 40 bytes {3} [built] + chunk {4} async-c.js (async-c) 45 bytes <{1}> ={5}= [rendered] + > ./c [0] ./index.js 3:0-47 + [3] ./c.js 45 bytes {4} [built] + chunk {5} vendors.js (vendors) 40 bytes <{1}> ={4}= [rendered] split chunk (cache group: vendors) (name: vendors) + > ./c [0] ./index.js 3:0-47 + [5] ./node_modules/x.js 20 bytes {5} [built] + [6] ./node_modules/y.js 20 bytes {5} [built]" `; exports[`StatsTestCases should print correct stats for named-chunks-plugin 1`] = ` @@ -1464,17 +1464,17 @@ Entrypoint entry = vendor.js entry.js `; exports[`StatsTestCases should print correct stats for named-chunks-plugin-async 1`] = ` -"Hash: 8c348decadc8408ab829 +"Hash: 70179b5d2d5e089a82e9 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names -chunk-containing-__a_js.js 313 bytes chunk-containing-__a_js [emitted] -chunk-containing-__b_js.js 173 bytes chunk-containing-__b_js [emitted] +chunk-containing-__a_js.js 307 bytes chunk-containing-__a_js [emitted] +chunk-containing-__b_js.js 182 bytes chunk-containing-__b_js [emitted] entry.js 8.18 KiB entry [emitted] entry Entrypoint entry = entry.js -[0] ./modules/b.js 22 bytes {chunk-containing-__b_js} [built] -[1] ./modules/a.js 37 bytes {chunk-containing-__a_js} [built] -[2] ./entry.js 47 bytes {entry} [built]" +[0] ./entry.js 47 bytes {entry} [built] +[1] ./modules/b.js 22 bytes {chunk-containing-__b_js} [built] +[2] ./modules/a.js 37 bytes {chunk-containing-__a_js} [built]" `; exports[`StatsTestCases should print correct stats for no-emit-on-errors-plugin-with-child-error 1`] = ` @@ -1500,53 +1500,53 @@ Child child: `; exports[`StatsTestCases should print correct stats for optimize-chunks 1`] = ` -"Hash: 8d1bfb62ba8ed42918d6 +"Hash: 79cd36807b8c3ac6b11e Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names cir1.js 299 bytes 0 [emitted] cir1 - ab.js 183 bytes 1 [emitted] ab - abd.js 268 bytes 2, 1 [emitted] abd - cir2.js 299 bytes 3 [emitted] cir2 - main.js 9.09 KiB 4 [emitted] main + main.js 9.09 KiB 1 [emitted] main + ab.js 183 bytes 2 [emitted] ab + abd.js 250 bytes 3, 2 [emitted] abd + cir2.js 299 bytes 4 [emitted] cir2 ac in ab.js 130 bytes 5 [emitted] ac in ab - chunk.js 190 bytes 6, 5 [emitted] chunk -cir2 from cir1.js 359 bytes 7, 3 [emitted] cir2 from cir1 + chunk.js 212 bytes 6, 5 [emitted] chunk +cir2 from cir1.js 359 bytes 7, 4 [emitted] cir2 from cir1 Entrypoint main = main.js -chunk {0} cir1.js (cir1) 81 bytes <{3}> <{4}> >{7}< [rendered] - > [3] ./circular2.js 1:0-79 - > [3] ./circular2.js 1:0-79 - > [8] ./index.js 13:0-54 - [2] ./circular1.js 81 bytes {0} [built] -chunk {1} ab.js (ab) 0 bytes <{4}> >{5}< [rendered] - > [8] ./index.js 1:0-6:8 - [0] ./modules/a.js 0 bytes {1} {2} [built] - [1] ./modules/b.js 0 bytes {1} {2} [built] -chunk {2} abd.js (abd) 0 bytes <{4}> >{6}< [rendered] - > [8] ./index.js 8:0-11:9 - [0] ./modules/a.js 0 bytes {1} {2} [built] - [1] ./modules/b.js 0 bytes {1} {2} [built] - [5] ./modules/d.js 0 bytes {2} {6} [built] -chunk {3} cir2.js (cir2) 81 bytes <{4}> >{0}< [rendered] - > [8] ./index.js 14:0-54 - [3] ./circular2.js 81 bytes {3} {7} [built] -chunk {4} main.js (main) 523 bytes >{0}< >{1}< >{2}< >{3}< [entry] [rendered] +chunk {0} cir1.js (cir1) 81 bytes <{1}> <{4}> >{7}< [rendered] + > [5] ./index.js 13:0-54 + > [7] ./circular2.js 1:0-79 + > [7] ./circular2.js 1:0-79 + [6] ./circular1.js 81 bytes {0} [built] +chunk {1} main.js (main) 523 bytes >{0}< >{2}< >{3}< >{4}< [entry] [rendered] > ./index main - [4] ./modules/f.js 0 bytes {4} [built] - [8] ./index.js 523 bytes {4} [built] -chunk {5} ac in ab.js (ac in ab) 0 bytes <{1}> >{6}< [rendered] - > [8] ./index.js 2:1-5:15 - [6] ./modules/c.js 0 bytes {5} {6} [built] -chunk {6} chunk.js (chunk) 0 bytes <{2}> <{5}> [rendered] - > [8] ./index.js 3:2-4:13 - > [8] ./index.js 9:1-10:12 - [5] ./modules/d.js 0 bytes {2} {6} [built] - [6] ./modules/c.js 0 bytes {5} {6} [built] + [2] ./modules/f.js 0 bytes {1} [built] + [5] ./index.js 523 bytes {1} [built] +chunk {2} ab.js (ab) 0 bytes <{1}> >{5}< [rendered] + > [5] ./index.js 1:0-6:8 + [0] ./modules/a.js 0 bytes {2} {3} [built] + [1] ./modules/b.js 0 bytes {2} {3} [built] +chunk {3} abd.js (abd) 0 bytes <{1}> >{6}< [rendered] + > [5] ./index.js 8:0-11:9 + [0] ./modules/a.js 0 bytes {2} {3} [built] + [1] ./modules/b.js 0 bytes {2} {3} [built] + [3] ./modules/d.js 0 bytes {3} {6} [built] +chunk {4} cir2.js (cir2) 81 bytes <{1}> >{0}< [rendered] + > [5] ./index.js 14:0-54 + [7] ./circular2.js 81 bytes {4} {7} [built] +chunk {5} ac in ab.js (ac in ab) 0 bytes <{2}> >{6}< [rendered] + > [5] ./index.js 2:1-5:15 + [4] ./modules/c.js 0 bytes {5} {6} [built] +chunk {6} chunk.js (chunk) 0 bytes <{3}> <{5}> [rendered] + > [5] ./index.js 3:2-4:13 + > [5] ./index.js 9:1-10:12 + [3] ./modules/d.js 0 bytes {3} {6} [built] + [4] ./modules/c.js 0 bytes {5} {6} [built] chunk {7} cir2 from cir1.js (cir2 from cir1) 81 bytes <{0}> [rendered] - > [2] ./circular1.js 1:0-79 - > [2] ./circular1.js 1:0-79 - [3] ./circular2.js 81 bytes {3} {7} [built] - [7] ./modules/e.js 0 bytes {7} [built]" + > [6] ./circular1.js 1:0-79 + > [6] ./circular1.js 1:0-79 + [7] ./circular2.js 81 bytes {4} {7} [built] + [8] ./modules/e.js 0 bytes {7} [built]" `; exports[`StatsTestCases should print correct stats for parse-error 1`] = ` @@ -1679,34 +1679,34 @@ exports[`StatsTestCases should print correct stats for performance-disabled 1`] "Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 301 KiB 2 [emitted] main - 3.js 227 bytes 3 [emitted] +main.js 301 KiB 0 [emitted] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main = main.js -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 52 bytes {2} [built] -[5] ./a.js 293 KiB {2} [built]" +[0] ./index.js 52 bytes {0} [built] +[1] ./a.js 293 KiB {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for performance-error 1`] = ` "Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 301 KiB 2 [emitted] [big] main - 3.js 227 bytes 3 [emitted] +main.js 301 KiB 0 [emitted] [big] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main [big] = main.js -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 52 bytes {2} [built] -[5] ./a.js 293 KiB {2} [built] +[0] ./index.js 52 bytes {0} [built] +[1] ./a.js 293 KiB {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built] ERROR in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). This can impact web performance. @@ -1755,17 +1755,17 @@ exports[`StatsTestCases should print correct stats for performance-no-hints 1`] "Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 301 KiB 2 [emitted] [big] main - 3.js 227 bytes 3 [emitted] +main.js 301 KiB 0 [emitted] [big] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main [big] = main.js -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 52 bytes {2} [built] -[5] ./a.js 293 KiB {2} [built]" +[0] ./index.js 52 bytes {0} [built] +[1] ./a.js 293 KiB {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for performance-oversize-limit-error 1`] = ` @@ -1801,85 +1801,85 @@ For more info visit https://webpack.js.org/guides/code-splitting/" exports[`StatsTestCases should print correct stats for prefetch 1`] = ` " Asset Size Chunks Chunk Names - prefetched.js 475 bytes 0 [emitted] prefetched - normal.js 130 bytes 1 [emitted] normal -prefetched2.js 127 bytes 2 [emitted] prefetched2 -prefetched3.js 130 bytes 3 [emitted] prefetched3 - main.js 9.66 KiB 4 [emitted] main - inner.js 136 bytes 5 [emitted] inner - inner2.js 201 bytes 6 [emitted] inner2 + main.js 9.66 KiB 0 [emitted] main + prefetched.js 475 bytes 1 [emitted] prefetched + normal.js 130 bytes 2 [emitted] normal +prefetched2.js 127 bytes 3 [emitted] prefetched2 +prefetched3.js 130 bytes 4 [emitted] prefetched3 + inner.js 130 bytes 5 [emitted] inner + inner2.js 188 bytes 6 [emitted] inner2 Entrypoint main = main.js (prefetch: prefetched2.js prefetched.js prefetched3.js) -chunk {0} prefetched.js (prefetched) 228 bytes <{4}> >{5}< >{6}< (prefetch: {6} {5}) [rendered] -chunk {1} normal.js (normal) 0 bytes <{4}> [rendered] -chunk {2} prefetched2.js (prefetched2) 0 bytes <{4}> [rendered] -chunk {3} prefetched3.js (prefetched3) 0 bytes <{4}> [rendered] -chunk {4} main.js (main) 436 bytes >{0}< >{1}< >{2}< >{3}< (prefetch: {2} {0} {3}) [entry] [rendered] -chunk {5} inner.js (inner) 0 bytes <{0}> [rendered] -chunk {6} inner2.js (inner2) 0 bytes <{0}> [rendered]" +chunk {0} main.js (main) 436 bytes >{1}< >{2}< >{3}< >{4}< (prefetch: {3} {1} {4}) [entry] [rendered] +chunk {1} prefetched.js (prefetched) 228 bytes <{0}> >{5}< >{6}< (prefetch: {6} {5}) [rendered] +chunk {2} normal.js (normal) 0 bytes <{0}> [rendered] +chunk {3} prefetched2.js (prefetched2) 0 bytes <{0}> [rendered] +chunk {4} prefetched3.js (prefetched3) 0 bytes <{0}> [rendered] +chunk {5} inner.js (inner) 0 bytes <{1}> [rendered] +chunk {6} inner2.js (inner2) 0 bytes <{1}> [rendered]" `; exports[`StatsTestCases should print correct stats for prefetch-preload-mixed 1`] = ` -"chunk {0} a.js (a) 136 bytes <{3}> >{4}< >{5}< (prefetch: {4} {5}) [rendered] -chunk {1} b.js (b) 203 bytes <{3}> >{6}< >{7}< >{8}< (prefetch: {6} {8}) (preload: {7}) [rendered] -chunk {2} c.js (c) 134 bytes <{3}> >{10}< >{9}< (preload: {9} {10}) [rendered] -chunk {3} main.js (main) 195 bytes >{0}< >{1}< >{2}< (prefetch: {0} {1} {2}) [entry] [rendered] -chunk {4} a1.js (a1) 0 bytes <{0}> [rendered] -chunk {5} a2.js (a2) 0 bytes <{0}> [rendered] -chunk {6} b1.js (b1) 0 bytes <{1}> [rendered] -chunk {7} b2.js (b2) 0 bytes <{1}> [rendered] -chunk {8} b3.js (b3) 0 bytes <{1}> [rendered] -chunk {9} c1.js (c1) 0 bytes <{2}> [rendered] -chunk {10} c2.js (c2) 0 bytes <{2}> [rendered]" +"chunk {0} main.js (main) 195 bytes >{1}< >{2}< >{3}< (prefetch: {1} {2} {3}) [entry] [rendered] +chunk {1} a.js (a) 136 bytes <{0}> >{4}< >{5}< (prefetch: {4} {5}) [rendered] +chunk {2} b.js (b) 203 bytes <{0}> >{6}< >{7}< >{8}< (prefetch: {6} {8}) (preload: {7}) [rendered] +chunk {3} c.js (c) 134 bytes <{0}> >{9}< >{10}< (preload: {9} {10}) [rendered] +chunk {4} a1.js (a1) 0 bytes <{1}> [rendered] +chunk {5} a2.js (a2) 0 bytes <{1}> [rendered] +chunk {6} b1.js (b1) 0 bytes <{2}> [rendered] +chunk {7} b2.js (b2) 0 bytes <{2}> [rendered] +chunk {8} b3.js (b3) 0 bytes <{2}> [rendered] +chunk {9} c1.js (c1) 0 bytes <{3}> [rendered] +chunk {10} c2.js (c2) 0 bytes <{3}> [rendered]" `; exports[`StatsTestCases should print correct stats for preload 1`] = ` " Asset Size Chunks Chunk Names - preloaded.js 467 bytes 0 [emitted] preloaded - normal.js 130 bytes 1 [emitted] normal -preloaded2.js 127 bytes 2 [emitted] preloaded2 -preloaded3.js 130 bytes 3 [emitted] preloaded3 - main.js 9.86 KiB 4 [emitted] main - inner.js 136 bytes 5 [emitted] inner - inner2.js 201 bytes 6 [emitted] inner2 + main.js 9.87 KiB 0 [emitted] main + preloaded.js 467 bytes 1 [emitted] preloaded + normal.js 130 bytes 2 [emitted] normal +preloaded2.js 127 bytes 3 [emitted] preloaded2 +preloaded3.js 130 bytes 4 [emitted] preloaded3 + inner.js 130 bytes 5 [emitted] inner + inner2.js 188 bytes 6 [emitted] inner2 Entrypoint main = main.js (preload: preloaded2.js preloaded.js preloaded3.js) -chunk {0} preloaded.js (preloaded) 226 bytes <{4}> >{5}< >{6}< (preload: {6} {5}) [rendered] -chunk {1} normal.js (normal) 0 bytes <{4}> [rendered] -chunk {2} preloaded2.js (preloaded2) 0 bytes <{4}> [rendered] -chunk {3} preloaded3.js (preloaded3) 0 bytes <{4}> [rendered] -chunk {4} main.js (main) 424 bytes >{0}< >{1}< >{2}< >{3}< (preload: {2} {0} {3}) [entry] [rendered] -chunk {5} inner.js (inner) 0 bytes <{0}> [rendered] -chunk {6} inner2.js (inner2) 0 bytes <{0}> [rendered]" +chunk {0} main.js (main) 424 bytes >{1}< >{2}< >{3}< >{4}< (preload: {3} {1} {4}) [entry] [rendered] +chunk {1} preloaded.js (preloaded) 226 bytes <{0}> >{5}< >{6}< (preload: {6} {5}) [rendered] +chunk {2} normal.js (normal) 0 bytes <{0}> [rendered] +chunk {3} preloaded2.js (preloaded2) 0 bytes <{0}> [rendered] +chunk {4} preloaded3.js (preloaded3) 0 bytes <{0}> [rendered] +chunk {5} inner.js (inner) 0 bytes <{1}> [rendered] +chunk {6} inner2.js (inner2) 0 bytes <{1}> [rendered]" `; exports[`StatsTestCases should print correct stats for preset-detailed 1`] = ` -"Hash: d0fce43b3c0175d4cc8a +"Hash: 437c9384ca68c9e15b6c Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 8.29 KiB 2 [emitted] main - 3.js 227 bytes 3 [emitted] +main.js 8.29 KiB 0 [emitted] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main = main.js -chunk {0} 0.js 22 bytes <{2}> [rendered] - > ./b [4] ./index.js 2:0-16 -chunk {1} 1.js 54 bytes <{2}> >{3}< [rendered] - > ./c [4] ./index.js 3:0-16 -chunk {2} main.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] +chunk {0} main.js (main) 73 bytes >{1}< >{2}< [entry] [rendered] > ./index main -chunk {3} 3.js 44 bytes <{1}> [rendered] +chunk {1} 1.js 22 bytes <{0}> [rendered] + > ./b [0] ./index.js 2:0-16 +chunk {2} 2.js 54 bytes <{0}> >{3}< [rendered] + > ./c [0] ./index.js 3:0-16 +chunk {3} 3.js 44 bytes <{2}> [rendered] > [3] ./c.js 1:0-52 -[0] ./d.js 22 bytes {3} [depth 2] [built] +[0] ./index.js 51 bytes {0} [depth 0] [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[1] ./e.js 22 bytes {3} [depth 2] [built] +[1] ./a.js 22 bytes {0} [depth 1] [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[2] ./b.js 22 bytes {0} [depth 1] [built] +[2] ./b.js 22 bytes {1} [depth 1] [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[3] ./c.js 54 bytes {1} [depth 1] [built] +[3] ./c.js 54 bytes {2} [depth 1] [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[4] ./index.js 51 bytes {2} [depth 0] [built] +[4] ./d.js 22 bytes {3} [depth 2] [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[5] ./a.js 22 bytes {2} [depth 1] [built] +[5] ./e.js 22 bytes {3} [depth 2] [built] ModuleConcatenation bailout: Module is not an ECMAScript module" `; @@ -1911,38 +1911,38 @@ exports[`StatsTestCases should print correct stats for preset-none-array 1`] = ` exports[`StatsTestCases should print correct stats for preset-none-error 1`] = `""`; exports[`StatsTestCases should print correct stats for preset-normal 1`] = ` -"Hash: d0fce43b3c0175d4cc8a +"Hash: 437c9384ca68c9e15b6c Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 8.29 KiB 2 [emitted] main - 3.js 227 bytes 3 [emitted] +main.js 8.29 KiB 0 [emitted] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main = main.js -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 51 bytes {2} [built] -[5] ./a.js 22 bytes {2} [built]" +[0] ./index.js 51 bytes {0} [built] +[1] ./a.js 22 bytes {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for preset-normal-performance 1`] = ` "Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 301 KiB 2 [emitted] [big] main - 3.js 227 bytes 3 [emitted] +main.js 301 KiB 0 [emitted] [big] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main [big] = main.js -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 52 bytes {2} [built] -[5] ./a.js 293 KiB {2} [built] +[0] ./index.js 52 bytes {0} [built] +[1] ./a.js 293 KiB {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built] WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). This can impact web performance. @@ -1960,21 +1960,21 @@ exports[`StatsTestCases should print correct stats for preset-normal-performance "Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 182 bytes 0 [emitted] - 1.js 319 bytes 1 [emitted] - main.js 301 KiB 2 [emitted] [big] main - 3.js 257 bytes 3 [emitted] - 0.js.map 156 bytes 0 [emitted] - 1.js.map 197 bytes 1 [emitted] -main.js.map 1.72 MiB 2 [emitted] main - 3.js.map 214 bytes 3 [emitted] + main.js 301 KiB 0 [emitted] [big] main + 1.js 182 bytes 1 [emitted] + 2.js 319 bytes 2 [emitted] + 3.js 262 bytes 3 [emitted] +main.js.map 1.72 MiB 0 [emitted] main + 1.js.map 156 bytes 1 [emitted] + 2.js.map 197 bytes 2 [emitted] + 3.js.map 216 bytes 3 [emitted] Entrypoint main [big] = main.js main.js.map -[0] ./d.js 22 bytes {3} [built] -[1] ./e.js 22 bytes {3} [built] -[2] ./b.js 22 bytes {0} [built] -[3] ./c.js 54 bytes {1} [built] -[4] ./index.js 52 bytes {2} [built] -[5] ./a.js 293 KiB {2} [built] +[0] ./index.js 52 bytes {0} [built] +[1] ./a.js 293 KiB {0} [built] +[2] ./b.js 22 bytes {1} [built] +[3] ./c.js 54 bytes {2} [built] +[4] ./d.js 22 bytes {3} [built] +[5] ./e.js 22 bytes {3} [built] WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). This can impact web performance. @@ -1989,47 +1989,47 @@ Entrypoints: `; exports[`StatsTestCases should print correct stats for preset-verbose 1`] = ` -"Hash: d0fce43b3c0175d4cc8a +"Hash: 437c9384ca68c9e15b6c Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 152 bytes 0 [emitted] - 1.js 289 bytes 1 [emitted] -main.js 8.29 KiB 2 [emitted] main - 3.js 227 bytes 3 [emitted] +main.js 8.29 KiB 0 [emitted] main + 1.js 152 bytes 1 [emitted] + 2.js 289 bytes 2 [emitted] + 3.js 232 bytes 3 [emitted] Entrypoint main = main.js -chunk {0} 0.js 22 bytes <{2}> [rendered] - > ./b [4] ./index.js 2:0-16 - [2] ./b.js 22 bytes {0} [depth 1] [built] - ModuleConcatenation bailout: Module is not an ECMAScript module - amd require ./b [4] ./index.js 2:0-16 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {1} 1.js 54 bytes <{2}> >{3}< [rendered] - > ./c [4] ./index.js 3:0-16 - [3] ./c.js 54 bytes {1} [depth 1] [built] - ModuleConcatenation bailout: Module is not an ECMAScript module - amd require ./c [4] ./index.js 3:0-16 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {2} main.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] +chunk {0} main.js (main) 73 bytes >{1}< >{2}< [entry] [rendered] > ./index main - [4] ./index.js 51 bytes {2} [depth 0] [built] + [0] ./index.js 51 bytes {0} [depth 0] [built] ModuleConcatenation bailout: Module is not an ECMAScript module single entry ./index main factory:Xms building:Xms = Xms - [5] ./a.js 22 bytes {2} [depth 1] [built] + [1] ./a.js 22 bytes {0} [depth 1] [built] + ModuleConcatenation bailout: Module is not an ECMAScript module + cjs require ./a [0] ./index.js 1:0-14 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {1} 1.js 22 bytes <{0}> [rendered] + > ./b [0] ./index.js 2:0-16 + [2] ./b.js 22 bytes {1} [depth 1] [built] ModuleConcatenation bailout: Module is not an ECMAScript module - cjs require ./a [4] ./index.js 1:0-14 - [4] Xms -> factory:Xms building:Xms = Xms -chunk {3} 3.js 44 bytes <{1}> [rendered] + amd require ./b [0] ./index.js 2:0-16 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {2} 2.js 54 bytes <{0}> >{3}< [rendered] + > ./c [0] ./index.js 3:0-16 + [3] ./c.js 54 bytes {2} [depth 1] [built] + ModuleConcatenation bailout: Module is not an ECMAScript module + amd require ./c [0] ./index.js 3:0-16 + [0] Xms -> factory:Xms building:Xms = Xms +chunk {3} 3.js 44 bytes <{2}> [rendered] > [3] ./c.js 1:0-52 - [0] ./d.js 22 bytes {3} [depth 2] [built] + [4] ./d.js 22 bytes {3} [depth 2] [built] ModuleConcatenation bailout: Module is not an ECMAScript module require.ensure item ./d [3] ./c.js 1:0-52 - [4] Xms -> [3] Xms -> factory:Xms building:Xms = Xms - [1] ./e.js 22 bytes {3} [depth 2] [built] + [0] Xms -> [3] Xms -> factory:Xms building:Xms = Xms + [5] ./e.js 22 bytes {3} [depth 2] [built] ModuleConcatenation bailout: Module is not an ECMAScript module require.ensure item ./e [3] ./c.js 1:0-52 - [4] Xms -> [3] Xms -> factory:Xms building:Xms = Xms" + [0] Xms -> [3] Xms -> factory:Xms building:Xms = Xms" `; exports[`StatsTestCases should print correct stats for resolve-plugin-context 1`] = ` @@ -2084,26 +2084,26 @@ Entrypoint e2 = runtime~e2.js e2.js" exports[`StatsTestCases should print correct stats for runtime-chunk-integration 1`] = ` "Child base: Asset Size Chunks Chunk Names - 0.js 719 bytes 0 [emitted] - main1.js 542 bytes 1 [emitted] main1 + 0.js 728 bytes 0 [emitted] + main1.js 539 bytes 1 [emitted] main1 runtime.js 8.75 KiB 2 [emitted] runtime Entrypoint main1 = runtime.js main1.js - [0] ./b.js 20 bytes {0} [built] - [1] ./c.js 20 bytes {0} [built] - [2] ./d.js 20 bytes {0} [built] - [3] ./main1.js 66 bytes {1} [built] + [0] ./main1.js 66 bytes {1} [built] + [1] ./b.js 20 bytes {0} [built] + [2] ./c.js 20 bytes {0} [built] + [3] ./d.js 20 bytes {0} [built] Child manifest is named entry: Asset Size Chunks Chunk Names - 0.js 719 bytes 0 [emitted] + 0.js 737 bytes 0 [emitted] manifest.js 9.06 KiB 1 [emitted] manifest - main1.js 542 bytes 2 [emitted] main1 + main1.js 539 bytes 2 [emitted] main1 Entrypoint main1 = manifest.js main1.js Entrypoint manifest = manifest.js - [0] ./b.js 20 bytes {0} [built] - [1] ./c.js 20 bytes {0} [built] - [2] ./d.js 20 bytes {0} [built] - [3] ./main1.js 66 bytes {2} [built] - [4] ./f.js 20 bytes {1} [built]" + [0] ./main1.js 66 bytes {2} [built] + [1] ./f.js 20 bytes {1} [built] + [2] ./b.js 20 bytes {0} [built] + [3] ./c.js 20 bytes {0} [built] + [4] ./d.js 20 bytes {0} [built]" `; exports[`StatsTestCases should print correct stats for runtime-chunk-issue-7382 1`] = ` @@ -2117,131 +2117,131 @@ Entrypoint e2 = runtime.js e2.js" `; exports[`StatsTestCases should print correct stats for scope-hoisting-bailouts 1`] = ` -"Hash: 900e01719757ad40b4ee +"Hash: 38ac43ee32f96265a6e0 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint index = index.js Entrypoint entry = entry.js -[0] ./entry.js 32 bytes {1} {2} [built] +[0] ./entry.js 32 bytes {0} {1} [built] ModuleConcatenation bailout: Module is an entry point -[1] ./ref-from-cjs.js 45 bytes {1} [built] +[1] ./ref-from-cjs.js 45 bytes {0} [built] ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./cjs.js (referenced with cjs require) -[2] external \\"external\\" 42 bytes {1} [built] - ModuleConcatenation bailout: Module is not an ECMAScript module -[3] ./concatenated.js + 2 modules 116 bytes {0} [built] - ModuleConcatenation bailout: Cannot concat with external \\"external\\" (<- Module is not an ECMAScript module) - | ./concatenated.js 26 bytes [built] - | ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./index.js (referenced with import()) - | ./concatenated1.js 37 bytes [built] - | ./concatenated2.js 48 bytes [built] -[4] ./index.js 176 bytes {1} [built] +[2] ./index.js 176 bytes {0} [built] ModuleConcatenation bailout: Module is an entry point -[5] ./cjs.js 59 bytes {1} [built] +[3] ./cjs.js 59 bytes {0} [built] ModuleConcatenation bailout: Module is not an ECMAScript module -[6] ./eval.js 35 bytes {1} [built] +[4] ./eval.js 35 bytes {0} [built] ModuleConcatenation bailout: Module uses eval() -[7] ./injected-vars.js 40 bytes {1} [built] +[5] ./injected-vars.js 40 bytes {0} [built] ModuleConcatenation bailout: Module uses injected variables (__dirname, __filename) -[8] ./module-id.js 26 bytes {1} [built] +[6] ./module-id.js 26 bytes {0} [built] ModuleConcatenation bailout: Module uses module.id -[9] ./module-loaded.js 30 bytes {1} [built] - ModuleConcatenation bailout: Module uses module.loaded" +[7] ./module-loaded.js 30 bytes {0} [built] + ModuleConcatenation bailout: Module uses module.loaded +[8] external \\"external\\" 42 bytes {0} [built] + ModuleConcatenation bailout: Module is not an ECMAScript module +[9] ./concatenated.js + 2 modules 116 bytes {2} [built] + ModuleConcatenation bailout: Cannot concat with external \\"external\\" (<- Module is not an ECMAScript module) + | ./concatenated.js 26 bytes [built] + | ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./index.js (referenced with import()) + | ./concatenated1.js 37 bytes [built] + | ./concatenated2.js 48 bytes [built]" `; exports[`StatsTestCases should print correct stats for scope-hoisting-multi 1`] = ` -"Hash: 4fe44d37d6d451751f0a83f3311f89e78104b088 +"Hash: 62dc20c341a326c0983423541003173315bf485b Child - Hash: 4fe44d37d6d451751f0a + Hash: 62dc20c341a326c09834 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint first = vendor.js first.js Entrypoint second = vendor.js second.js - [0] ./common_lazy_shared.js 25 bytes {0} {1} {2} [built] - [1] ./common2.js 25 bytes {4} {5} [built] - [2] ./common_lazy.js 25 bytes {1} {2} [built] - [3] ./common.js 37 bytes {4} {5} [built] - [4] ./lazy_shared.js 31 bytes {0} [built] - [5] ./vendor.js 25 bytes {3} [built] - [6] ./lazy_first.js 55 bytes {1} [built] - [7] ./lazy_second.js 55 bytes {2} [built] - [8] ./first.js 207 bytes {4} [built] - [9] ./module_first.js 31 bytes {4} [built] - [10] ./second.js 177 bytes {5} [built] + [0] ./common2.js 25 bytes {1} {2} [built] + [1] ./common.js 37 bytes {1} {2} [built] + [2] ./vendor.js 25 bytes {0} [built] + [3] ./lazy_shared.js 31 bytes {4} [built] + [4] ./first.js 207 bytes {1} [built] + [5] ./module_first.js 31 bytes {1} [built] + [6] ./second.js 177 bytes {2} [built] + [7] ./lazy_first.js 55 bytes {3} [built] + [8] ./lazy_second.js 55 bytes {5} [built] + [9] ./common_lazy_shared.js 25 bytes {3} {4} {5} [built] + [10] ./common_lazy.js 25 bytes {3} {5} [built] Child - Hash: 83f3311f89e78104b088 + Hash: 23541003173315bf485b Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint first = vendor.js first.js Entrypoint second = vendor.js second.js - [0] ./common_lazy_shared.js 25 bytes {0} {1} {2} [built] - [1] ./common_lazy.js 25 bytes {1} {2} [built] - [2] ./common.js + 1 modules 62 bytes {4} {5} [built] + [0] ./common.js + 1 modules 62 bytes {1} {2} [built] | ./common.js 37 bytes [built] | ./common2.js 25 bytes [built] - [3] ./vendor.js 25 bytes {3} [built] - [4] ./lazy_shared.js 31 bytes {0} [built] - ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./first.js (referenced with import()), ./second.js (referenced with import()) - [5] ./lazy_second.js 55 bytes {2} [built] - ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./second.js (referenced with import()) - [6] ./second.js 177 bytes {5} [built] + [1] ./vendor.js 25 bytes {0} [built] + [2] ./second.js 177 bytes {2} [built] ModuleConcatenation bailout: Module is an entry point - [7] ./first.js + 1 modules 248 bytes {4} [built] + [3] ./common_lazy_shared.js 25 bytes {3} {4} {5} [built] + [4] ./common_lazy.js 25 bytes {3} {5} [built] + [5] ./lazy_shared.js 31 bytes {4} [built] + ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./first.js (referenced with import()), ./second.js (referenced with import()) + [6] ./first.js + 1 modules 248 bytes {1} [built] ModuleConcatenation bailout: Cannot concat with ./common.js ModuleConcatenation bailout: Cannot concat with ./vendor.js | ./first.js 207 bytes [built] | ModuleConcatenation bailout: Module is an entry point | ./module_first.js 31 bytes [built] - [8] ./lazy_first.js 55 bytes {1} [built] + [7] ./lazy_second.js 55 bytes {5} [built] + ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./second.js (referenced with import()) + [8] ./lazy_first.js 55 bytes {3} [built] ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./first.js (referenced with import())" `; exports[`StatsTestCases should print correct stats for side-effects-issue-7428 1`] = ` -"Hash: a9b58d04269fe092c240 +"Hash: 4981ff1831c58ef47c99 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names - 0.js 481 bytes 0 [emitted] -main.js 9.32 KiB 1 [emitted] main +main.js 9.35 KiB 0 [emitted] main + 1.js 481 bytes 1 [emitted] Entrypoint main = main.js -[0] ./components/src/CompAB/utils.js 97 bytes {1} [built] - harmony side effect evaluation ./utils [1] ./main.js + 1 modules 1:0-30 - harmony import specifier ./utils [1] ./main.js + 1 modules 5:2-5 +[0] ./components/src/CompAB/index.js 87 bytes [built] + [no exports used] + harmony side effect evaluation ./CompAB [3] ./components/src/index.js 1:0-40 + harmony export imported specifier ./CompAB [3] ./components/src/index.js 1:0-40 + harmony export imported specifier ./CompAB [3] ./components/src/index.js 1:0-40 +[1] ./components/src/CompC/CompC.js 33 bytes [built] + [no exports used] + harmony side effect evaluation ./CompC [2] ./components/src/CompC/index.js 1:0-34 + harmony export imported specifier ./CompC [2] ./components/src/CompC/index.js 1:0-34 +[2] ./components/src/CompC/index.js 34 bytes [built] + [no exports used] + harmony side effect evaluation ./CompC [3] ./components/src/index.js 2:0-43 + harmony export imported specifier ./CompC [3] ./components/src/index.js 2:0-43 +[3] ./components/src/index.js 84 bytes [built] + [no exports used] + harmony side effect evaluation ./components [6] ./foo.js 1:0-37 + harmony side effect evaluation ./components [7] ./main.js + 1 modules 1:0-44 +[4] ./components/src/CompAB/CompA.js 89 bytes {0} [built] + [only some exports used: default] + harmony side effect evaluation ./CompA [0] ./components/src/CompAB/index.js 1:0-43 + harmony export imported specifier ./CompA [0] ./components/src/CompAB/index.js 1:0-43 + harmony import specifier ./components ./main.js 3:15-20 (skipped side-effect-free modules) + harmony import specifier ./components [6] ./foo.js 3:20-25 (skipped side-effect-free modules) +[5] ./components/src/CompAB/utils.js 97 bytes {0} [built] harmony side effect evaluation ./utils [4] ./components/src/CompAB/CompA.js 1:0-35 harmony import specifier ./utils [4] ./components/src/CompAB/CompA.js 5:5-12 -[1] ./main.js + 1 modules 231 bytes {1} [built] + harmony side effect evaluation ./utils [7] ./main.js + 1 modules 1:0-30 + harmony import specifier ./utils [7] ./main.js + 1 modules 5:2-5 +[6] ./foo.js 101 bytes {1} [built] + import() ./foo ./main.js 6:0-15 +[7] ./main.js + 1 modules 231 bytes {0} [built] single entry ./main.js main | ./main.js 144 bytes [built] | single entry ./main.js main | ./components/src/CompAB/CompB.js 77 bytes [built] | [only some exports used: default] - | harmony import specifier ./components ./main.js 4:15-20 (skipped side-effect-free modules) - | harmony side effect evaluation ./CompB [7] ./components/src/CompAB/index.js 2:0-43 - | harmony export imported specifier ./CompB [7] ./components/src/CompAB/index.js 2:0-43 -[2] ./components/src/index.js 84 bytes [built] - [no exports used] - harmony side effect evaluation ./components [1] ./main.js + 1 modules 1:0-44 - harmony side effect evaluation ./components [3] ./foo.js 1:0-37 -[3] ./foo.js 101 bytes {0} [built] - import() ./foo ./main.js 6:0-15 -[4] ./components/src/CompAB/CompA.js 89 bytes {1} [built] - [only some exports used: default] - harmony import specifier ./components ./main.js 3:15-20 (skipped side-effect-free modules) - harmony import specifier ./components [3] ./foo.js 3:20-25 (skipped side-effect-free modules) - harmony side effect evaluation ./CompA [7] ./components/src/CompAB/index.js 1:0-43 - harmony export imported specifier ./CompA [7] ./components/src/CompAB/index.js 1:0-43 -[5] ./components/src/CompC/index.js 34 bytes [built] - [no exports used] - harmony side effect evaluation ./CompC [2] ./components/src/index.js 2:0-43 - harmony export imported specifier ./CompC [2] ./components/src/index.js 2:0-43 -[6] ./components/src/CompC/CompC.js 33 bytes [built] - [no exports used] - harmony side effect evaluation ./CompC [5] ./components/src/CompC/index.js 1:0-34 - harmony export imported specifier ./CompC [5] ./components/src/CompC/index.js 1:0-34 -[7] ./components/src/CompAB/index.js 87 bytes [built] - [no exports used] - harmony side effect evaluation ./CompAB [2] ./components/src/index.js 1:0-40 - harmony export imported specifier ./CompAB [2] ./components/src/index.js 1:0-40 - harmony export imported specifier ./CompAB [2] ./components/src/index.js 1:0-40" + | harmony side effect evaluation ./CompB [0] ./components/src/CompAB/index.js 2:0-43 + | harmony export imported specifier ./CompB [0] ./components/src/CompAB/index.js 2:0-43 + | harmony import specifier ./components ./main.js 4:15-20 (skipped side-effect-free modules)" `; exports[`StatsTestCases should print correct stats for side-effects-simple-unused 1`] = ` @@ -2291,75 +2291,75 @@ exports[`StatsTestCases should print correct stats for split-chunks 1`] = ` Entrypoint a = default/a.js Entrypoint b = default/b.js Entrypoint c = default/c.js - chunk {0} default/vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{9}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= >{2}< >{7}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) + chunk {0} default/vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{4}> ={1}= ={2}= ={3}= ={8}= ={9}= ={10}= ={12}= >{2}< >{11}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= >{2}< >{7}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{4}> ={0}= ={2}= ={3}= ={8}= ={9}= ={10}= ={12}= >{2}< >{11}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{4}> <{9}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{3}> <{4}> <{5}> <{8}> ={0}= ={1}= ={3}= ={9}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} default/vendors~async-a~async-b.js (vendors~async-a~async-b) 20 bytes <{9}> ={0}= ={1}= ={2}= ={4}= ={5}= >{2}< >{7}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) + [2] ./f.js 20 bytes {2} {6} {7} [built] + chunk {3} default/vendors~async-a~async-b.js (vendors~async-a~async-b) 20 bytes <{4}> ={0}= ={1}= ={2}= ={8}= ={9}= >{2}< >{11}< [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - chunk {4} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{7}< [rendered] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + chunk {4} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{8}< >{9}< >{10}< >{12}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {4} [built] + chunk {5} default/a.js (a) 216 bytes >{2}< >{11}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + [6] ./a.js + 1 modules 156 bytes {5} {8} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {6} default/b.js (b) 152 bytes [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {2} {6} {7} [built] + [3] ./node_modules/y.js 20 bytes {3} {5} {6} [built] + [4] ./b.js 72 bytes {6} {9} [built] + chunk {7} default/c.js (c) 152 bytes [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {1} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {5} {6} {7} [built] + [2] ./f.js 20 bytes {2} {6} {7} [built] + [5] ./c.js 72 bytes {7} {10} [built] + [7] ./node_modules/z.js 20 bytes {7} {12} [built] + chunk {8} default/async-a.js (async-a) 156 bytes <{4}> ={0}= ={1}= ={3}= >{2}< >{11}< [rendered] > ./a [8] ./index.js 1:0-47 - [7] ./a.js + 1 modules 156 bytes {4} {10} [built] + [6] ./a.js + 1 modules 156 bytes {5} {8} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {5} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {9} default/async-b.js (async-b) 72 bytes <{4}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [5] ./b.js 72 bytes {5} {11} [built] - chunk {6} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={8}= [rendered] + [4] ./b.js 72 bytes {6} {9} [built] + chunk {10} default/async-c.js (async-c) 72 bytes <{4}> ={0}= ={1}= ={2}= ={12}= [rendered] > ./c [8] ./index.js 3:0-47 - [6] ./c.js 72 bytes {6} {12} [built] - chunk {7} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{4}> ={2}= [rendered] + [5] ./c.js 72 bytes {7} {10} [built] + chunk {11} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{5}> <{8}> ={2}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [9] ./g.js 34 bytes {7} [built] - chunk {8} default/vendors~async-c.js (vendors~async-c) 20 bytes <{9}> ={0}= ={1}= ={2}= ={6}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) + [9] ./g.js 34 bytes {11} [built] + chunk {12} default/vendors~async-c.js (vendors~async-c) 20 bytes <{4}> ={0}= ={1}= ={2}= ={10}= [rendered] split chunk (cache group: vendors) (name: vendors~async-c) > ./c [8] ./index.js 3:0-47 - [4] ./node_modules/z.js 20 bytes {8} {12} [built] - chunk {9} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{8}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} default/a.js (a) 216 bytes >{2}< >{7}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - [7] ./a.js + 1 modules 156 bytes {4} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {11} default/b.js (b) 152 bytes [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [2] ./f.js 20 bytes {2} {11} {12} [built] - [3] ./node_modules/y.js 20 bytes {3} {10} {11} [built] - [5] ./b.js 72 bytes {5} {11} [built] - chunk {12} default/c.js (c) 152 bytes [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./node_modules/x.js 20 bytes {0} {10} {11} {12} [built] - [2] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./node_modules/z.js 20 bytes {8} {12} [built] - [6] ./c.js 72 bytes {6} {12} [built] + [7] ./node_modules/z.js 20 bytes {7} {12} [built] Child all-chunks: Entrypoint main = default/main.js Entrypoint a = default/vendors~a~async-a~async-b~async-c~b~c.js default/vendors~a~async-a~async-b~b.js default/a.js Entrypoint b = default/vendors~a~async-a~async-b~async-c~b~c.js default/vendors~a~async-a~async-b~b.js default/b.js Entrypoint c = default/vendors~a~async-a~async-b~async-c~b~c.js default/vendors~async-c~c.js default/c.js - chunk {0} default/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) + chunk {0} default/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{5}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c) > ./a a > ./b b > ./c c @@ -2367,437 +2367,621 @@ Child all-chunks: > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + chunk {1} default/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{5}> ={0}= ={2}= ={3}= ={6}= ={7}= ={9}= ={10}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) + > ./a a + > ./b b + > ./a [8] ./index.js 1:0-47 + > ./b [8] ./index.js 2:0-47 + [3] ./node_modules/y.js 20 bytes {1} [built] + chunk {2} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{5}> ={0}= ={1}= ={3}= ={4}= ={9}= ={10}= ={11}= >{3}< >{12}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{5}> <{9}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + chunk {3} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{5}> <{6}> <{9}> ={0}= ={1}= ={2}= ={4}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} default/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={10}= ={11}= ={2}= ={5}= ={6}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b) - > ./a a - > ./b b - > ./a [8] ./index.js 1:0-47 - > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={7}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + [1] ./f.js 20 bytes {3} {7} {8} [built] + chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{5}> ={0}= ={2}= ={3}= ={8}= ={11}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] - chunk {5} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] + chunk {5} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{9}< >{10}< >{11}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {5} [built] + chunk {6} default/a.js (a) 176 bytes ={0}= ={1}= >{3}< >{12}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {7} default/b.js (b) 112 bytes ={0}= ={1}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {8} default/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./f.js 20 bytes {3} {7} {8} [built] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {9} default/async-a.js (async-a) 156 bytes <{5}> ={0}= ={1}= ={2}= >{3}< >{12}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {6} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {10} default/async-b.js (async-b) 72 bytes <{5}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {6} {11} [built] - chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {11} default/async-c.js (async-c) 72 bytes <{5}> ={0}= ={2}= ={3}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 - [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{5}> ={2}= [rendered] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {12} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{2}> <{6}> <{9}> ={3}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [9] ./g.js 34 bytes {8} [built] - chunk {9} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} default/a.js (a) 176 bytes ={0}= ={3}= >{2}< >{8}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {11} default/b.js (b) 112 bytes ={0}= ={3}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./b.js 72 bytes {6} {11} [built] - chunk {12} default/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [5] ./c.js 72 bytes {7} {12} [built] + [9] ./g.js 34 bytes {12} [built] Child manual: Entrypoint main = default/main.js Entrypoint a = default/vendors.js default/a.js Entrypoint b = default/vendors.js default/b.js Entrypoint c = default/vendors.js default/c.js - chunk {0} default/vendors.js (vendors) 112 bytes <{5}> ={1}= ={2}= ={3}= ={6}= ={7}= ={8}= >{4}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) + chunk {0} default/vendors.js (vendors) 112 bytes <{1}> ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./a a > ./b b > ./c c > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./node_modules/x.js 20 bytes {0} [built] + [1] ./node_modules/x.js 20 bytes {0} [built] [3] ./node_modules/y.js 20 bytes {0} [built] [6] ./node_modules/z.js 20 bytes {0} [built] [9] multi x y z 52 bytes {0} [built] - chunk {1} default/async-a.js (async-a) 176 bytes <{5}> ={0}= >{4}< [rendered] + chunk {1} default/main.js (main) 147 bytes >{0}< >{5}< >{6}< >{7}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {1} [built] + chunk {2} default/a.js (a) 176 bytes ={0}= >{8}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [7] ./a.js + 1 modules 156 bytes {2} {5} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {3} default/b.js (b) 112 bytes ={0}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {4} default/c.js (c) 112 bytes ={0}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + chunk {5} default/async-a.js (async-a) 176 bytes <{1}> ={0}= >{8}< [rendered] > ./a [8] ./index.js 1:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [7] ./a.js + 1 modules 156 bytes {1} {6} [built] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [7] ./a.js + 1 modules 156 bytes {2} {5} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {2} default/async-b.js (async-b) 112 bytes <{5}> ={0}= [rendered] + chunk {6} default/async-b.js (async-b) 112 bytes <{1}> ={0}= [rendered] > ./b [8] ./index.js 2:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {2} {7} [built] - chunk {3} default/async-c.js (async-c) 112 bytes <{5}> ={0}= [rendered] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {7} default/async-c.js (async-c) 112 bytes <{1}> ={0}= [rendered] > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {3} {8} [built] - chunk {4} default/async-g.js (async-g) 54 bytes <{0}> <{1}> <{6}> [rendered] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + chunk {8} default/async-g.js (async-g) 54 bytes <{0}> <{2}> <{5}> [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [10] ./g.js 34 bytes {4} [built] - chunk {5} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {5} [built] - chunk {6} default/a.js (a) 176 bytes ={0}= >{4}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [7] ./a.js + 1 modules 156 bytes {1} {6} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {7} default/b.js (b) 112 bytes ={0}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {2} {7} [built] - chunk {8} default/c.js (c) 112 bytes ={0}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {3} {8} [built] + [2] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [10] ./g.js 34 bytes {8} [built] Child name-too-long: Entrypoint main = main.js Entrypoint aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js async-a.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js Entrypoint bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js async-b.js bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js Entrypoint cccccccccccccccccccccccccccccc = vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js vendors~async-c~cccccccccccccccccccccccccccccc.js aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js async-c.js cccccccccccccccccccccccccccccc.js - chunk {0} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) 20 bytes <{9}> ={1}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) + chunk {0} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) 20 bytes <{8}> ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={9}= ={10}= ={11}= >{2}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccc~50ebc41f) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./c cccccccccccccccccccccccccccccc > ./a [4] ./index.js 1:0-47 > ./b [4] ./index.js 2:0-47 > ./c [4] ./index.js 3:0-47 - [2] ./node_modules/x.js 20 bytes {0} [built] - chunk {1} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) 20 bytes <{9}> ={0}= ={10}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: default) (name: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) + [1] ./node_modules/x.js 20 bytes {0} [built] + chunk {1} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) 20 bytes <{8}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={9}= ={10}= ={11}= >{2}< >{12}< [initial] [rendered] split chunk (cache group: default) (name: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~async-c~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccc~18066793) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./c cccccccccccccccccccccccccccccc > ./a [4] ./index.js 1:0-47 > ./b [4] ./index.js 2:0-47 > ./c [4] ./index.js 3:0-47 - [1] ./d.js 20 bytes {1} [built] - chunk {2} async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js (async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) 20 bytes <{0}> <{1}> <{10}> <{3}> <{4}> <{9}> ={0}= ={1}= ={11}= ={12}= ={3}= ={5}= ={6}= ={7}= ={8}= [initial] [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) + [0] ./d.js 20 bytes {1} [built] + chunk {2} async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc.js (async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) 20 bytes <{0}> <{1}> <{3}> <{4}> <{8}> <{9}> ={0}= ={1}= ={3}= ={5}= ={6}= ={7}= ={10}= ={11}= ={12}= [initial] [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~cccccccccccccccccccccccccccccc) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./c cccccccccccccccccccccccccccccc > ./b [4] ./index.js 2:0-47 > ./c [4] ./index.js 3:0-47 - [0] ./f.js 20 bytes {2} [built] - chunk {3} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 20 bytes <{9}> ={0}= ={1}= ={10}= ={11}= ={2}= ={4}= ={5}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) + [2] ./f.js 20 bytes {2} [built] + chunk {3} vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 20 bytes <{8}> ={0}= ={1}= ={2}= ={4}= ={5}= ={9}= ={10}= >{2}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa~async-a~async-b~bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./a [4] ./index.js 1:0-47 > ./b [4] ./index.js 2:0-47 [3] ./node_modules/y.js 20 bytes {3} [built] - chunk {4} async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={10}= ={3}= >{2}< >{8}< [initial] [rendered] reused as split chunk (cache group: default) + chunk {4} async-a.js (async-a) 156 bytes <{8}> ={0}= ={1}= ={3}= ={9}= >{2}< >{12}< [initial] [rendered] reused as split chunk (cache group: default) > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ./a [4] ./index.js 1:0-47 [8] ./a.js + 1 modules 156 bytes {4} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {5} async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={11}= ={2}= ={3}= [initial] [rendered] reused as split chunk (cache group: default) + chunk {5} async-b.js (async-b) 72 bytes <{8}> ={0}= ={1}= ={2}= ={3}= ={10}= [initial] [rendered] reused as split chunk (cache group: default) > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb > ./b [4] ./index.js 2:0-47 [5] ./b.js 72 bytes {5} [built] - chunk {6} async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={7}= [initial] [rendered] reused as split chunk (cache group: default) + chunk {6} async-c.js (async-c) 72 bytes <{8}> ={0}= ={1}= ={2}= ={7}= ={11}= [initial] [rendered] reused as split chunk (cache group: default) > ./c cccccccccccccccccccccccccccccc > ./c [4] ./index.js 3:0-47 [6] ./c.js 72 bytes {6} [built] - chunk {7} vendors~async-c~cccccccccccccccccccccccccccccc.js (vendors~async-c~cccccccccccccccccccccccccccccc) 20 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={6}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~cccccccccccccccccccccccccccccc) + chunk {7} vendors~async-c~cccccccccccccccccccccccccccccc.js (vendors~async-c~cccccccccccccccccccccccccccccc) 20 bytes <{8}> ={0}= ={1}= ={2}= ={6}= ={11}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~cccccccccccccccccccccccccccccc) > ./c cccccccccccccccccccccccccccccc > ./c [4] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {7} [built] - chunk {8} async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{4}> ={2}= [rendered] - > ./g [] 6:0-47 - > ./g [] 6:0-47 - [9] ./g.js 34 bytes {8} [built] - chunk {9} main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] + chunk {8} main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] > ./ main - [4] ./index.js 147 bytes {9} [built] - chunk {10} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) 0 bytes ={0}= ={1}= ={3}= ={4}= >{2}< >{8}< [entry] [rendered] + [4] ./index.js 147 bytes {8} [built] + chunk {9} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) 0 bytes ={0}= ={1}= ={3}= ={4}= >{2}< >{12}< [entry] [rendered] > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - chunk {11} bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 0 bytes ={0}= ={1}= ={2}= ={3}= ={5}= [entry] [rendered] + chunk {10} bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 0 bytes ={0}= ={1}= ={2}= ={3}= ={5}= [entry] [rendered] > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb - chunk {12} cccccccccccccccccccccccccccccc.js (cccccccccccccccccccccccccccccc) 0 bytes ={0}= ={1}= ={2}= ={6}= ={7}= [entry] [rendered] + chunk {11} cccccccccccccccccccccccccccccc.js (cccccccccccccccccccccccccccccc) 0 bytes ={0}= ={1}= ={2}= ={6}= ={7}= [entry] [rendered] > ./c cccccccccccccccccccccccccccccc + chunk {12} async-g.js (async-g) 34 bytes <{0}> <{1}> <{3}> <{4}> <{9}> ={2}= [rendered] + > ./g [] 6:0-47 + > ./g [] 6:0-47 + [9] ./g.js 34 bytes {12} [built] Child custom-chunks-filter: Entrypoint main = default/main.js Entrypoint a = default/a.js Entrypoint b = default/vendors~async-a~async-b~async-c~b~c.js default/vendors~async-a~async-b~b.js default/b.js Entrypoint c = default/vendors~async-a~async-b~async-c~b~c.js default/vendors~async-c~c.js default/c.js - chunk {0} default/vendors~async-a~async-b~async-c~b~c.js (vendors~async-a~async-b~async-c~b~c) 20 bytes <{9}> ={1}= ={11}= ={12}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c~b~c) + chunk {0} default/vendors~async-a~async-b~async-c~b~c.js (vendors~async-a~async-b~async-c~b~c) 20 bytes <{5}> ={1}= ={2}= ={3}= ={4}= ={7}= ={8}= ={9}= ={10}= ={11}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c~b~c) > ./b b > ./c c > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./node_modules/x.js 20 bytes {0} {10} [built] - chunk {1} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{9}> ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= >{2}< >{8}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + [1] ./node_modules/x.js 20 bytes {0} {6} [built] + chunk {1} default/vendors~async-a~async-b~b.js (vendors~async-a~async-b~b) 20 bytes <{5}> ={0}= ={2}= ={3}= ={7}= ={9}= ={10}= >{3}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~b) + > ./b b + > ./a [8] ./index.js 1:0-47 + > ./b [8] ./index.js 2:0-47 + [3] ./node_modules/y.js 20 bytes {1} {6} [built] + chunk {2} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{5}> ={0}= ={1}= ={3}= ={4}= ={9}= ={10}= ={11}= >{3}< >{12}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - chunk {2} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{10}> <{3}> <{5}> <{9}> ={0}= ={1}= ={3}= ={4}= ={6}= ={7}= ={8}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + chunk {3} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{5}> <{6}> <{9}> ={0}= ={1}= ={2}= ={4}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g) > ./g [] 6:0-47 > ./g [] 6:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [1] ./f.js 20 bytes {2} {11} {12} [built] - chunk {3} default/vendors~async-a~async-b~b.js (vendors~async-a~async-b~b) 20 bytes <{9}> ={0}= ={1}= ={11}= ={2}= ={5}= ={6}= >{2}< >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~b) - > ./b b - > ./a [8] ./index.js 1:0-47 - > ./b [8] ./index.js 2:0-47 - [3] ./node_modules/y.js 20 bytes {3} {10} [built] - chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{9}> ={0}= ={1}= ={12}= ={2}= ={7}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) + [2] ./f.js 20 bytes {3} {7} {8} [built] + chunk {4} default/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{5}> ={0}= ={2}= ={3}= ={8}= ={11}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c) > ./c c > ./c [8] ./index.js 3:0-47 [7] ./node_modules/z.js 20 bytes {4} [built] - chunk {5} default/async-a.js (async-a) 156 bytes <{9}> ={0}= ={1}= ={3}= >{2}< >{8}< [rendered] + chunk {5} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{9}< >{10}< >{11}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {5} [built] + chunk {6} default/a.js (a) 216 bytes >{3}< >{12}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [1] ./node_modules/x.js 20 bytes {0} {6} [built] + [3] ./node_modules/y.js 20 bytes {1} {6} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {7} default/b.js (b) 112 bytes ={0}= ={1}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [2] ./f.js 20 bytes {3} {7} {8} [built] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {8} default/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {6} {7} {8} [built] + [2] ./f.js 20 bytes {3} {7} {8} [built] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {9} default/async-a.js (async-a) 156 bytes <{5}> ={0}= ={1}= ={2}= >{3}< >{12}< [rendered] > ./a [8] ./index.js 1:0-47 - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] + [6] ./a.js + 1 modules 156 bytes {6} {9} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {6} default/async-b.js (async-b) 72 bytes <{9}> ={0}= ={1}= ={2}= ={3}= [rendered] + chunk {10} default/async-b.js (async-b) 72 bytes <{5}> ={0}= ={1}= ={2}= ={3}= [rendered] > ./b [8] ./index.js 2:0-47 - [4] ./b.js 72 bytes {6} {11} [built] - chunk {7} default/async-c.js (async-c) 72 bytes <{9}> ={0}= ={1}= ={2}= ={4}= [rendered] + [4] ./b.js 72 bytes {7} {10} [built] + chunk {11} default/async-c.js (async-c) 72 bytes <{5}> ={0}= ={2}= ={3}= ={4}= [rendered] > ./c [8] ./index.js 3:0-47 - [5] ./c.js 72 bytes {7} {12} [built] - chunk {8} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{10}> <{3}> <{5}> ={2}= [rendered] + [5] ./c.js 72 bytes {8} {11} [built] + chunk {12} default/async-g.js (async-g) 34 bytes <{0}> <{1}> <{2}> <{6}> <{9}> ={3}= [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [9] ./g.js 34 bytes {8} [built] - chunk {9} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {9} [built] - chunk {10} default/a.js (a) 216 bytes >{2}< >{8}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [2] ./node_modules/x.js 20 bytes {0} {10} [built] - [3] ./node_modules/y.js 20 bytes {3} {10} [built] - [6] ./a.js + 1 modules 156 bytes {5} {10} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {11} default/b.js (b) 112 bytes ={0}= ={3}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [4] ./b.js 72 bytes {6} {11} [built] - chunk {12} default/c.js (c) 112 bytes ={0}= ={4}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {10} {11} {12} [built] - [1] ./f.js 20 bytes {2} {11} {12} [built] - [5] ./c.js 72 bytes {7} {12} [built] + [9] ./g.js 34 bytes {12} [built] Child custom-chunks-filter-in-cache-groups: Entrypoint main = default/main.js Entrypoint a = default/a.js Entrypoint b = default/vendors.js default/b.js Entrypoint c = default/vendors.js default/c.js - chunk {0} default/vendors.js (vendors) 112 bytes <{5}> ={1}= ={2}= ={3}= ={7}= ={8}= >{4}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) + chunk {0} default/vendors.js (vendors) 112 bytes <{1}> ={3}= ={4}= ={5}= ={6}= ={7}= >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./b b > ./c c > ./a [8] ./index.js 1:0-47 > ./b [8] ./index.js 2:0-47 > ./c [8] ./index.js 3:0-47 - [2] ./node_modules/x.js 20 bytes {0} {6} [built] - [3] ./node_modules/y.js 20 bytes {0} {6} [built] + [1] ./node_modules/x.js 20 bytes {0} {2} [built] + [2] ./node_modules/y.js 20 bytes {0} {2} [built] [6] ./node_modules/z.js 20 bytes {0} [built] [9] multi x y z 52 bytes {0} [built] - chunk {1} default/async-a.js (async-a) 176 bytes <{5}> ={0}= >{4}< [rendered] + chunk {1} default/main.js (main) 147 bytes >{0}< >{5}< >{6}< >{7}< [entry] [rendered] + > ./ main + [8] ./index.js 147 bytes {1} [built] + chunk {2} default/a.js (a) 216 bytes >{8}< [entry] [rendered] + > ./a a + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [1] ./node_modules/x.js 20 bytes {0} {2} [built] + [2] ./node_modules/y.js 20 bytes {0} {2} [built] + [7] ./a.js + 1 modules 156 bytes {2} {5} [built] + | ./a.js 121 bytes [built] + | ./e.js 20 bytes [built] + chunk {3} default/b.js (b) 112 bytes ={0}= [entry] [rendered] + > ./b b + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [3] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {4} default/c.js (c) 112 bytes ={0}= [entry] [rendered] + > ./c c + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [3] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + chunk {5} default/async-a.js (async-a) 176 bytes <{1}> ={0}= >{8}< [rendered] > ./a [8] ./index.js 1:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [7] ./a.js + 1 modules 156 bytes {1} {6} [built] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [7] ./a.js + 1 modules 156 bytes {2} {5} [built] | ./a.js 121 bytes [built] | ./e.js 20 bytes [built] - chunk {2} default/async-b.js (async-b) 112 bytes <{5}> ={0}= [rendered] + chunk {6} default/async-b.js (async-b) 112 bytes <{1}> ={0}= [rendered] > ./b [8] ./index.js 2:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {2} {7} [built] - chunk {3} default/async-c.js (async-c) 112 bytes <{5}> ={0}= [rendered] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [3] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [4] ./b.js 72 bytes {3} {6} [built] + chunk {7} default/async-c.js (async-c) 112 bytes <{1}> ={0}= [rendered] > ./c [8] ./index.js 3:0-47 - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {3} {8} [built] - chunk {4} default/async-g.js (async-g) 54 bytes <{0}> <{1}> <{6}> [rendered] + [0] ./d.js 20 bytes {2} {3} {4} {5} {6} {7} [built] + [3] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [5] ./c.js 72 bytes {4} {7} [built] + chunk {8} default/async-g.js (async-g) 54 bytes <{0}> <{2}> <{5}> [rendered] > ./g [] 6:0-47 > ./g [] 6:0-47 - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [10] ./g.js 34 bytes {4} [built] - chunk {5} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< [entry] [rendered] - > ./ main - [8] ./index.js 147 bytes {5} [built] - chunk {6} default/a.js (a) 216 bytes >{4}< [entry] [rendered] - > ./a a - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [2] ./node_modules/x.js 20 bytes {0} {6} [built] - [3] ./node_modules/y.js 20 bytes {0} {6} [built] - [7] ./a.js + 1 modules 156 bytes {1} {6} [built] - | ./a.js 121 bytes [built] - | ./e.js 20 bytes [built] - chunk {7} default/b.js (b) 112 bytes ={0}= [entry] [rendered] - > ./b b - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [4] ./b.js 72 bytes {2} {7} [built] - chunk {8} default/c.js (c) 112 bytes ={0}= [entry] [rendered] - > ./c c - [0] ./d.js 20 bytes {1} {2} {3} {6} {7} {8} [built] - [1] ./f.js 20 bytes {2} {3} {4} {7} {8} [built] - [5] ./c.js 72 bytes {3} {8} [built]" + [3] ./f.js 20 bytes {3} {4} {6} {7} {8} [built] + [10] ./g.js 34 bytes {8} [built]" +`; + +exports[`StatsTestCases should print correct stats for split-chunks-automatic-name 1`] = ` +"Entrypoint main = main.js +chunk {0} common~async-a~async-b~async-c.js (common~async-a~async-b~async-c) 40 bytes <{3}> ={1}= ={2}= ={4}= ={5}= ={6}= ={7}= [rendered] split chunk (cache group: vendors) (name: common~async-a~async-b~async-c) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + > ./c [0] ./index.js 3:0-47 + [4] ./d.js 20 bytes {0} [built] + [5] ./node_modules/x.js 20 bytes {0} [built] +chunk {1} common~async-b~async-c.js (common~async-b~async-c) 20 bytes <{3}> ={0}= ={2}= ={5}= ={6}= ={7}= [rendered] split chunk (cache group: vendors) (name: common~async-b~async-c) + > ./b [0] ./index.js 2:0-47 + > ./c [0] ./index.js 3:0-47 + [7] ./f.js 20 bytes {1} [built] +chunk {2} common~async-a~async-b.js (common~async-a~async-b) 20 bytes <{3}> ={0}= ={1}= ={4}= ={5}= [rendered] split chunk (cache group: vendors) (name: common~async-a~async-b) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + [6] ./node_modules/y.js 20 bytes {2} [built] +chunk {3} main.js (main) 147 bytes >{0}< >{1}< >{2}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] + > ./ main + [0] ./index.js 147 bytes {3} [built] +chunk {4} async-a.js (async-a) 107 bytes <{3}> ={0}= ={2}= [rendered] + > ./a [0] ./index.js 1:0-47 + [3] ./a.js + 1 modules 107 bytes {4} [built] + | ./a.js 72 bytes [built] + | ./e.js 20 bytes [built] +chunk {5} async-b.js (async-b) 72 bytes <{3}> ={0}= ={1}= ={2}= [rendered] + > ./b [0] ./index.js 2:0-47 + [1] ./b.js 72 bytes {5} [built] +chunk {6} async-c.js (async-c) 72 bytes <{3}> ={0}= ={1}= ={7}= [rendered] + > ./c [0] ./index.js 3:0-47 + [2] ./c.js 72 bytes {6} [built] +chunk {7} common~async-c.js (common~async-c) 20 bytes <{3}> ={0}= ={1}= ={6}= [rendered] split chunk (cache group: vendors) (name: common~async-c) + > ./c [0] ./index.js 3:0-47 + [8] ./node_modules/z.js 20 bytes {7} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-combinations 1`] = ` "Entrypoint main = main.js -chunk {0} async-a~async-b.js (async-a~async-b) 134 bytes <{8}> ={1}= ={2}= [rendered] split chunk (cache group: default) (name: async-a~async-b) - > ./a [9] ./index.js 1:0-47 - > ./b [9] ./index.js 2:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [1] ./y.js 67 bytes {0} [built] -chunk {1} async-a.js (async-a) 48 bytes <{8}> ={0}= [rendered] - > ./a [9] ./index.js 1:0-47 - [2] ./a.js 48 bytes {1} [built] -chunk {2} async-b.js (async-b) 48 bytes <{8}> ={0}= [rendered] - > ./b [9] ./index.js 2:0-47 - [3] ./b.js 48 bytes {2} [built] -chunk {3} async-c.js (async-c) 101 bytes <{8}> [rendered] - > ./c [9] ./index.js 3:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [4] ./c.js 34 bytes {3} [built] -chunk {4} async-d.js (async-d) 101 bytes <{8}> [rendered] - > ./d [9] ./index.js 4:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [5] ./d.js 34 bytes {4} [built] -chunk {5} async-e.js (async-e) 101 bytes <{8}> [rendered] - > ./e [9] ./index.js 5:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [6] ./e.js 34 bytes {5} [built] -chunk {6} async-f.js (async-f) 101 bytes <{8}> [rendered] - > ./f [9] ./index.js 6:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [7] ./f.js 34 bytes {6} [built] -chunk {7} async-g.js (async-g) 101 bytes <{8}> [rendered] - > ./g [9] ./index.js 7:0-47 - [0] ./x.js 67 bytes {0} {3} {4} {5} {6} {7} [built] - [8] ./g.js 34 bytes {7} [built] -chunk {8} main.js (main) 343 bytes >{0}< >{1}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< [entry] [rendered] +chunk {0} async-a~async-b.js (async-a~async-b) 134 bytes <{1}> ={2}= ={3}= [rendered] split chunk (cache group: default) (name: async-a~async-b) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built] + [9] ./y.js 67 bytes {0} [built] +chunk {1} main.js (main) 343 bytes >{0}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< >{8}< [entry] [rendered] > ./ main - [9] ./index.js 343 bytes {8} [built]" + [0] ./index.js 343 bytes {1} [built] +chunk {2} async-a.js (async-a) 48 bytes <{1}> ={0}= [rendered] + > ./a [0] ./index.js 1:0-47 + [1] ./a.js 48 bytes {2} [built] +chunk {3} async-b.js (async-b) 48 bytes <{1}> ={0}= [rendered] + > ./b [0] ./index.js 2:0-47 + [2] ./b.js 48 bytes {3} [built] +chunk {4} async-c.js (async-c) 101 bytes <{1}> [rendered] + > ./c [0] ./index.js 3:0-47 + [3] ./c.js 34 bytes {4} [built] + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built] +chunk {5} async-d.js (async-d) 101 bytes <{1}> [rendered] + > ./d [0] ./index.js 4:0-47 + [4] ./d.js 34 bytes {5} [built] + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built] +chunk {6} async-e.js (async-e) 101 bytes <{1}> [rendered] + > ./e [0] ./index.js 5:0-47 + [5] ./e.js 34 bytes {6} [built] + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built] +chunk {7} async-f.js (async-f) 101 bytes <{1}> [rendered] + > ./f [0] ./index.js 6:0-47 + [6] ./f.js 34 bytes {7} [built] + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built] +chunk {8} async-g.js (async-g) 101 bytes <{1}> [rendered] + > ./g [0] ./index.js 7:0-47 + [7] ./g.js 34 bytes {8} [built] + [8] ./x.js 67 bytes {0} {4} {5} {6} {7} {8} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-issue-6413 1`] = ` "Entrypoint main = main.js -chunk {0} vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{5}> ={1}= ={2}= ={3}= ={4}= [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) - > ./a [5] ./index.js 1:0-47 - > ./b [5] ./index.js 2:0-47 - > ./c [5] ./index.js 3:0-47 - [1] ./node_modules/x.js 20 bytes {0} [built] -chunk {1} async-a~async-b~async-c.js (async-a~async-b~async-c) 11 bytes <{5}> ={0}= ={2}= ={3}= ={4}= [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) - > ./a [5] ./index.js 1:0-47 - > ./b [5] ./index.js 2:0-47 - > ./c [5] ./index.js 3:0-47 - [0] ./common.js 11 bytes {1} [built] -chunk {2} async-a.js (async-a) 19 bytes <{5}> ={0}= ={1}= [rendered] - > ./a [5] ./index.js 1:0-47 - [2] ./a.js 19 bytes {2} [built] -chunk {3} async-b.js (async-b) 19 bytes <{5}> ={0}= ={1}= [rendered] - > ./b [5] ./index.js 2:0-47 - [3] ./b.js 19 bytes {3} [built] -chunk {4} async-c.js (async-c) 19 bytes <{5}> ={0}= ={1}= [rendered] - > ./c [5] ./index.js 3:0-47 - [4] ./c.js 19 bytes {4} [built] -chunk {5} main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< >{4}< [entry] [rendered] +chunk {0} vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{2}> ={1}= ={3}= ={4}= ={5}= [rendered] split chunk (cache group: vendors) (name: vendors~async-a~async-b~async-c) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + > ./c [0] ./index.js 3:0-47 + [5] ./node_modules/x.js 20 bytes {0} [built] +chunk {1} async-a~async-b~async-c.js (async-a~async-b~async-c) 11 bytes <{2}> ={0}= ={3}= ={4}= ={5}= [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c) + > ./a [0] ./index.js 1:0-47 + > ./b [0] ./index.js 2:0-47 + > ./c [0] ./index.js 3:0-47 + [4] ./common.js 11 bytes {1} [built] +chunk {2} main.js (main) 147 bytes >{0}< >{1}< >{3}< >{4}< >{5}< [entry] [rendered] > ./ main - [5] ./index.js 147 bytes {5} [built]" + [0] ./index.js 147 bytes {2} [built] +chunk {3} async-a.js (async-a) 19 bytes <{2}> ={0}= ={1}= [rendered] + > ./a [0] ./index.js 1:0-47 + [1] ./a.js 19 bytes {3} [built] +chunk {4} async-b.js (async-b) 19 bytes <{2}> ={0}= ={1}= [rendered] + > ./b [0] ./index.js 2:0-47 + [2] ./b.js 19 bytes {4} [built] +chunk {5} async-c.js (async-c) 19 bytes <{2}> ={0}= ={1}= [rendered] + > ./c [0] ./index.js 3:0-47 + [3] ./c.js 19 bytes {5} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-issue-6696 1`] = ` "Entrypoint main = vendors.js main.js -chunk {0} async-a.js (async-a) 32 bytes <{2}> <{3}> [rendered] - > ./a [3] ./index.js 2:0-47 - [0] ./node_modules/x.js 20 bytes {0} {1} [built] - [1] ./a.js 12 bytes {0} [built] -chunk {1} async-b.js (async-b) 32 bytes <{2}> <{3}> [rendered] - > ./b [3] ./index.js 3:0-47 - [0] ./node_modules/x.js 20 bytes {0} {1} [built] - [2] ./b.js 12 bytes {1} [built] -chunk {2} main.js (main) 110 bytes ={3}= >{0}< >{1}< [entry] [rendered] +chunk {0} main.js (main) 110 bytes ={3}= >{1}< >{2}< [entry] [rendered] > ./ main - [3] ./index.js 110 bytes {2} [built] -chunk {3} vendors.js (vendors) 20 bytes ={2}= >{0}< >{1}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) + [0] ./index.js 110 bytes {0} [built] +chunk {1} async-a.js (async-a) 32 bytes <{0}> <{3}> [rendered] + > ./a [0] ./index.js 2:0-47 + [2] ./a.js 12 bytes {1} [built] + [4] ./node_modules/x.js 20 bytes {1} {2} [built] +chunk {2} async-b.js (async-b) 32 bytes <{0}> <{3}> [rendered] + > ./b [0] ./index.js 3:0-47 + [3] ./b.js 12 bytes {2} [built] + [4] ./node_modules/x.js 20 bytes {1} {2} [built] +chunk {3} vendors.js (vendors) 20 bytes ={0}= >{1}< >{2}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./ main - [4] ./node_modules/y.js 20 bytes {3} [built]" + [1] ./node_modules/y.js 20 bytes {3} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-issue-7401 1`] = ` "Entrypoint a = vendors~a~c.js a.js Entrypoint b = b.js Chunk Group c = vendors~a~c.js c.js -chunk {0} vendors~a~c.js (vendors~a~c) 20 bytes <{3}> ={1}= ={2}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~c) +chunk {0} vendors~a~c.js (vendors~a~c) 20 bytes <{2}> ={1}= ={3}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~c) > ./a a - > ./c [3] ./b.js 1:0-41 + > ./c [2] ./b.js 1:0-41 [0] ./node_modules/x.js 20 bytes {0} [built] -chunk {1} c.js (c) 12 bytes <{3}> ={0}= [rendered] - > ./c [3] ./b.js 1:0-41 - [1] ./c.js 12 bytes {1} [built] -chunk {2} a.js (a) 12 bytes ={0}= [entry] [rendered] +chunk {1} a.js (a) 12 bytes ={0}= [entry] [rendered] > ./a a - [2] ./a.js 12 bytes {2} [built] -chunk {3} b.js (b) 43 bytes >{0}< >{1}< [entry] [rendered] + [1] ./a.js 12 bytes {1} [built] +chunk {2} b.js (b) 43 bytes >{0}< >{3}< [entry] [rendered] > ./b b - [3] ./b.js 43 bytes {3} [built]" + [2] ./b.js 43 bytes {2} [built] +chunk {3} c.js (c) 12 bytes <{2}> ={0}= [rendered] + > ./c [2] ./b.js 1:0-41 + [3] ./c.js 12 bytes {3} [built]" +`; + +exports[`StatsTestCases should print correct stats for split-chunks-max-size 1`] = ` +"Child production: + Entrypoint main = prod-vendors~main~7274e1de.js prod-vendors~main~0feae4ad.js prod-main~6e7ead72.js prod-main~6a2ae26b.js prod-main~17acad98.js prod-main~b2c7414a.js prod-main~75f09de8.js prod-main~052b3814.js prod-main~3ff27526.js prod-main~11485824.js prod-main~c6931360.js prod-main~cd7c5bfc.js prod-main~02369f19.js + chunk {0} prod-main~02369f19.js (main~02369f19) 1.57 KiB ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [entry] [rendered] + > ./ main + [11] ./very-big.js?1 1.57 KiB {0} [built] + chunk {1} prod-vendors~main~0feae4ad.js (vendors~main~0feae4ad) 1.57 KiB ={0}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~main) + > ./ main + [43] ./node_modules/very-big.js?1 1.57 KiB {1} [built] + chunk {2} prod-main~6e7ead72.js (main~6e7ead72) 536 bytes ={0}= ={1}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] + > ./ main + [0] ./big.js?1 268 bytes {2} [built] + [1] ./big.js?2 268 bytes {2} [built] + chunk {3} prod-main~6a2ae26b.js (main~6a2ae26b) 536 bytes ={0}= ={1}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] + > ./ main + [34] ./in-some-directory/big.js?1 268 bytes {3} [built] + [35] ./in-some-directory/small.js?1 67 bytes {3} [built] + [36] ./in-some-directory/small.js?2 67 bytes {3} [built] + [37] ./in-some-directory/small.js?3 67 bytes {3} [built] + [38] ./in-some-directory/small.js?4 67 bytes {3} [built] + chunk {4} prod-main~17acad98.js (main~17acad98) 1.57 KiB ={0}= ={1}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] + > ./ main + [39] ./in-some-directory/very-big.js?1 1.57 KiB {4} [built] + chunk {5} prod-main~b2c7414a.js (main~b2c7414a) 1.19 KiB ={0}= ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] + > ./ main + [44] ./index.js 1.19 KiB {5} [built] + chunk {6} prod-main~75f09de8.js (main~75f09de8) 603 bytes ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={7}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] + > ./ main + [25] ./inner-module/small.js?1 67 bytes {6} [built] + [26] ./inner-module/small.js?2 67 bytes {6} [built] + [27] ./inner-module/small.js?3 67 bytes {6} [built] + [28] ./inner-module/small.js?4 67 bytes {6} [built] + [29] ./inner-module/small.js?5 67 bytes {6} [built] + [30] ./inner-module/small.js?6 67 bytes {6} [built] + [31] ./inner-module/small.js?7 67 bytes {6} [built] + [32] ./inner-module/small.js?8 67 bytes {6} [built] + [33] ./inner-module/small.js?9 67 bytes {6} [built] + chunk {7} prod-main~052b3814.js (main~052b3814) 603 bytes ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={8}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] + > ./ main + [2] ./small.js?1 67 bytes {7} [built] + [3] ./small.js?2 67 bytes {7} [built] + [4] ./small.js?3 67 bytes {7} [built] + [5] ./small.js?4 67 bytes {7} [built] + [6] ./small.js?5 67 bytes {7} [built] + [7] ./small.js?6 67 bytes {7} [built] + [8] ./small.js?7 67 bytes {7} [built] + [9] ./small.js?8 67 bytes {7} [built] + [10] ./small.js?9 67 bytes {7} [built] + chunk {8} prod-main~3ff27526.js (main~3ff27526) 536 bytes ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={9}= ={10}= ={11}= ={12}= [initial] [rendered] + > ./ main + [14] ./subfolder/big.js?1 268 bytes {8} [built] + [15] ./subfolder/big.js?2 268 bytes {8} [built] + chunk {9} prod-main~11485824.js (main~11485824) 603 bytes ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={10}= ={11}= ={12}= [initial] [rendered] + > ./ main + [16] ./subfolder/small.js?1 67 bytes {9} [built] + [17] ./subfolder/small.js?2 67 bytes {9} [built] + [18] ./subfolder/small.js?3 67 bytes {9} [built] + [19] ./subfolder/small.js?4 67 bytes {9} [built] + [20] ./subfolder/small.js?5 67 bytes {9} [built] + [21] ./subfolder/small.js?6 67 bytes {9} [built] + [22] ./subfolder/small.js?7 67 bytes {9} [built] + [23] ./subfolder/small.js?8 67 bytes {9} [built] + [24] ./subfolder/small.js?9 67 bytes {9} [built] + chunk {10} prod-main~c6931360.js (main~c6931360) 1.57 KiB ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={11}= ={12}= [initial] [rendered] + > ./ main + [12] ./very-big.js?2 1.57 KiB {10} [built] + chunk {11} prod-main~cd7c5bfc.js (main~cd7c5bfc) 1.57 KiB ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={12}= [initial] [rendered] + > ./ main + [13] ./very-big.js?3 1.57 KiB {11} [built] + chunk {12} prod-vendors~main~7274e1de.js (vendors~main~7274e1de) 402 bytes ={0}= ={1}= ={2}= ={3}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~main) + > ./ main + [40] ./node_modules/big.js?1 268 bytes {12} [built] + [41] ./node_modules/small.js?1 67 bytes {12} [built] + [42] ./node_modules/small.js?2 67 bytes {12} [built] +Child development: + Entrypoint main = dev-vendors~main~._node_modules_b.js dev-vendors~main~._node_modules_very-big.js~6bdbed7b.js dev-main~._big.js~1.js dev-main~._in-some-directory_b.js dev-main~._in-some-directory_very-big.js~8d76cf03.js dev-main~._index.js~41f5a26e.js dev-main~._inner-module_small.js~3.js dev-main~._small.js~1.js dev-main~._subfolder_big.js~b.js dev-main~._subfolder_small.js~1.js dev-main~._very-big.js~08cf55cf.js dev-main~._very-big.js~4647fb9d.js dev-main~._very-big.js~62f7f644.js + chunk {main~._big.js~1} dev-main~._big.js~1.js (main~._big.js~1) 536 bytes ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + > ./ main + [./big.js?1] 268 bytes {main~._big.js~1} [built] + [./big.js?2] 268 bytes {main~._big.js~1} [built] + chunk {main~._in-some-directory_b} dev-main~._in-some-directory_b.js (main~._in-some-directory_b) 536 bytes ={main~._big.js~1}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + > ./ main + [./in-some-directory/big.js?1] 268 bytes {main~._in-some-directory_b} [built] + [./in-some-directory/small.js?1] 67 bytes {main~._in-some-directory_b} [built] + [./in-some-directory/small.js?2] 67 bytes {main~._in-some-directory_b} [built] + [./in-some-directory/small.js?3] 67 bytes {main~._in-some-directory_b} [built] + [./in-some-directory/small.js?4] 67 bytes {main~._in-some-directory_b} [built] + chunk {main~._in-some-directory_very-big.js~8d76cf03} dev-main~._in-some-directory_very-big.js~8d76cf03.js (main~._in-some-directory_very-big.js~8d76cf03) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + > ./ main + [./in-some-directory/very-big.js?1] 1.57 KiB {main~._in-some-directory_very-big.js~8d76cf03} [built] + chunk {main~._index.js~41f5a26e} dev-main~._index.js~41f5a26e.js (main~._index.js~41f5a26e) 1.19 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + > ./ main + [./index.js] 1.19 KiB {main~._index.js~41f5a26e} [built] + chunk {main~._inner-module_small.js~3} dev-main~._inner-module_small.js~3.js (main~._inner-module_small.js~3) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + > ./ main + [./inner-module/small.js?1] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?2] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?3] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?4] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?5] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?6] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?7] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?8] 67 bytes {main~._inner-module_small.js~3} [built] + [./inner-module/small.js?9] 67 bytes {main~._inner-module_small.js~3} [built] + chunk {main~._small.js~1} dev-main~._small.js~1.js (main~._small.js~1) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + > ./ main + [./small.js?1] 67 bytes {main~._small.js~1} [built] + [./small.js?2] 67 bytes {main~._small.js~1} [built] + [./small.js?3] 67 bytes {main~._small.js~1} [built] + [./small.js?4] 67 bytes {main~._small.js~1} [built] + [./small.js?5] 67 bytes {main~._small.js~1} [built] + [./small.js?6] 67 bytes {main~._small.js~1} [built] + [./small.js?7] 67 bytes {main~._small.js~1} [built] + [./small.js?8] 67 bytes {main~._small.js~1} [built] + [./small.js?9] 67 bytes {main~._small.js~1} [built] + chunk {main~._subfolder_big.js~b} dev-main~._subfolder_big.js~b.js (main~._subfolder_big.js~b) 536 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + > ./ main + [./subfolder/big.js?1] 268 bytes {main~._subfolder_big.js~b} [built] + [./subfolder/big.js?2] 268 bytes {main~._subfolder_big.js~b} [built] + chunk {main~._subfolder_small.js~1} dev-main~._subfolder_small.js~1.js (main~._subfolder_small.js~1) 603 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + > ./ main + [./subfolder/small.js?1] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?2] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?3] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?4] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?5] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?6] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?7] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?8] 67 bytes {main~._subfolder_small.js~1} [built] + [./subfolder/small.js?9] 67 bytes {main~._subfolder_small.js~1} [built] + chunk {main~._very-big.js~08cf55cf} dev-main~._very-big.js~08cf55cf.js (main~._very-big.js~08cf55cf) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + > ./ main + [./very-big.js?2] 1.57 KiB {main~._very-big.js~08cf55cf} [built] + chunk {main~._very-big.js~4647fb9d} dev-main~._very-big.js~4647fb9d.js (main~._very-big.js~4647fb9d) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] + > ./ main + [./very-big.js?3] 1.57 KiB {main~._very-big.js~4647fb9d} [built] + chunk {main~._very-big.js~62f7f644} dev-main~._very-big.js~62f7f644.js (main~._very-big.js~62f7f644) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={vendors~main~._node_modules_b}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [entry] [rendered] + > ./ main + [./very-big.js?1] 1.57 KiB {main~._very-big.js~62f7f644} [built] + chunk {vendors~main~._node_modules_b} dev-vendors~main~._node_modules_b.js (vendors~main~._node_modules_b) 402 bytes ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_very-big.js~6bdbed7b}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~main) + > ./ main + [./node_modules/big.js?1] 268 bytes {vendors~main~._node_modules_b} [built] + [./node_modules/small.js?1] 67 bytes {vendors~main~._node_modules_b} [built] + [./node_modules/small.js?2] 67 bytes {vendors~main~._node_modules_b} [built] + chunk {vendors~main~._node_modules_very-big.js~6bdbed7b} dev-vendors~main~._node_modules_very-big.js~6bdbed7b.js (vendors~main~._node_modules_very-big.js~6bdbed7b) 1.57 KiB ={main~._big.js~1}= ={main~._in-some-directory_b}= ={main~._in-some-directory_very-big.js~8d76cf03}= ={main~._index.js~41f5a26e}= ={main~._inner-module_small.js~3}= ={main~._small.js~1}= ={main~._subfolder_big.js~b}= ={main~._subfolder_small.js~1}= ={main~._very-big.js~08cf55cf}= ={main~._very-big.js~4647fb9d}= ={main~._very-big.js~62f7f644}= ={vendors~main~._node_modules_b}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~main) + > ./ main + [./node_modules/very-big.js?1] 1.57 KiB {vendors~main~._node_modules_very-big.js~6bdbed7b} [built]" `; exports[`StatsTestCases should print correct stats for split-chunks-prefer-bigger-splits 1`] = ` "Entrypoint main = default/main.js -chunk {0} default/async-b~async-c.js (async-b~async-c) 110 bytes <{4}> ={2}= ={3}= [rendered] split chunk (cache group: default) (name: async-b~async-c) - > ./b [6] ./index.js 2:0-47 - > ./c [6] ./index.js 3:0-47 - [0] ./d.js 43 bytes {0} {1} [built] - [2] ./f.js 67 bytes {0} [built] -chunk {1} default/async-a.js (async-a) 134 bytes <{4}> [rendered] - > ./a [6] ./index.js 1:0-47 - [0] ./d.js 43 bytes {0} {1} [built] - [1] ./e.js 43 bytes {1} {2} [built] - [3] ./a.js 48 bytes {1} [built] -chunk {2} default/async-b.js (async-b) 105 bytes <{4}> ={0}= [rendered] - > ./b [6] ./index.js 2:0-47 - [1] ./e.js 43 bytes {1} {2} [built] - [4] ./b.js 62 bytes {2} [built] -chunk {3} default/async-c.js (async-c) 48 bytes <{4}> ={0}= [rendered] - > ./c [6] ./index.js 3:0-47 - [5] ./c.js 48 bytes {3} [built] -chunk {4} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< [entry] [rendered] +chunk {0} default/async-b~async-c.js (async-b~async-c) 110 bytes <{1}> ={3}= ={4}= [rendered] split chunk (cache group: default) (name: async-b~async-c) + > ./b [0] ./index.js 2:0-47 + > ./c [0] ./index.js 3:0-47 + [4] ./d.js 43 bytes {0} {2} [built] + [6] ./f.js 67 bytes {0} [built] +chunk {1} default/main.js (main) 147 bytes >{0}< >{2}< >{3}< >{4}< [entry] [rendered] > ./ main - [6] ./index.js 147 bytes {4} [built]" + [0] ./index.js 147 bytes {1} [built] +chunk {2} default/async-a.js (async-a) 134 bytes <{1}> [rendered] + > ./a [0] ./index.js 1:0-47 + [1] ./a.js 48 bytes {2} [built] + [4] ./d.js 43 bytes {0} {2} [built] + [5] ./e.js 43 bytes {2} {3} [built] +chunk {3} default/async-b.js (async-b) 105 bytes <{1}> ={0}= [rendered] + > ./b [0] ./index.js 2:0-47 + [2] ./b.js 62 bytes {3} [built] + [5] ./e.js 43 bytes {2} {3} [built] +chunk {4} default/async-c.js (async-c) 48 bytes <{1}> ={0}= [rendered] + > ./c [0] ./index.js 3:0-47 + [3] ./c.js 48 bytes {4} [built]" `; exports[`StatsTestCases should print correct stats for tree-shaking 1`] = ` -"Hash: 7664ceef8f3f695c9688 +"Hash: 676a77cd1dc12f6d6cc8 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -2811,13 +2995,13 @@ Entrypoint main = bundle.js [no exports used] [2] ./unknown.js 0 bytes {0} [built] [only some exports used: c] - [3] ./unknown2.js 0 bytes {0} [built] + [3] ./reexport-unknown.js 83 bytes {0} [built] + [exports: a, b, c, d] + [only some exports used: a, c] + [4] ./reexport-star-unknown.js 68 bytes {0} [built] + [only some exports used: a, c] + [5] ./unknown2.js 0 bytes {0} [built] [only some exports used: y] - [4] ./index.js 315 bytes {0} [built] - [no exports] - [5] ./require.include.js 36 bytes {0} [built] - [exports: a, default] - [no exports used] [6] ./reexport-known.js 49 bytes {0} [built] [exports: a, b] [only some exports used: a] @@ -2826,11 +3010,11 @@ Entrypoint main = bundle.js [only some exports used: a] [8] ./edge.js 45 bytes {0} [built] [only some exports used: y] - [9] ./reexport-unknown.js 83 bytes {0} [built] - [exports: a, b, c, d] - [only some exports used: a, c] -[10] ./reexport-star-unknown.js 68 bytes {0} [built] - [only some exports used: a, c]" + [9] ./index.js 315 bytes {0} [built] + [no exports] +[10] ./require.include.js 36 bytes {0} [built] + [exports: a, default] + [no exports used]" `; exports[`StatsTestCases should print correct stats for warnings-uglifyjs 1`] = ` diff --git a/test/cases/chunks/import-context/index.js b/test/cases/chunks/import-context/index.js index 9392c88775f..3f5e41d5ad6 100644 --- a/test/cases/chunks/import-context/index.js +++ b/test/cases/chunks/import-context/index.js @@ -23,10 +23,9 @@ function testCase(load, done) { it("should be able to use expressions in import", function(done) { function load(name, expected, callback) { import("./dir/" + name).then(function(result) { - expect(result).toEqual({ - default: expected, - [Symbol.toStringTag]: "Module" - }); + expect(result).toEqual(nsObj({ + default: expected + })); callback(); }).catch(function(err) { done(err); diff --git a/test/cases/chunks/import/index.js b/test/cases/chunks/import/index.js index e9bbf35d5df..0810e5c7e88 100644 --- a/test/cases/chunks/import/index.js +++ b/test/cases/chunks/import/index.js @@ -1,9 +1,8 @@ it("should be able to use import", function(done) { import("./two").then(function(two) { - expect(two).toEqual({ - default: 2, - [Symbol.toStringTag]: "Module" - }); + expect(two).toEqual(nsObj({ + default: 2 + })); done(); }).catch(function(err) { done(err); diff --git a/test/cases/chunks/inline-options/index.js b/test/cases/chunks/inline-options/index.js index 23c60da711a..def7f37a3bf 100644 --- a/test/cases/chunks/inline-options/index.js +++ b/test/cases/chunks/inline-options/index.js @@ -110,17 +110,15 @@ function testChunkLoading(load, expectedSyncInitial, expectedSyncRequested) { sync = true; var p = Promise.all([ load("a").then(function(a) { - expect(a).toEqual({ - default: "a", - [Symbol.toStringTag]: "Module" - }); + expect(a).toEqual(nsObj({ + default: "a" + })); expect(sync).toBe(true); }), load("c").then(function(c) { - expect(c).toEqual({ - default: "c", - [Symbol.toStringTag]: "Module" - }); + expect(c).toEqual(nsObj({ + default: "c" + })); expect(sync).toBe(expectedSyncRequested); }) ]); diff --git a/test/cases/chunks/issue-2443/index.js b/test/cases/chunks/issue-2443/index.js index 76388fef631..731b88a8128 100644 --- a/test/cases/chunks/issue-2443/index.js +++ b/test/cases/chunks/issue-2443/index.js @@ -1,10 +1,9 @@ it("should be able to use expressions in import (directory)", function(done) { function load(name, expected, callback) { import("./dir/" + name + "/file.js").then(function(result) { - expect(result).toEqual({ - default: expected, - [Symbol.toStringTag]: "Module" - }); + expect(result).toEqual(nsObj({ + default: expected + })); callback(); }).catch(function(err) { done(err); diff --git a/test/cases/json/import-lazy/index.js b/test/cases/json/import-lazy/index.js index 2f01d1b61fa..2837ad304e6 100644 --- a/test/cases/json/import-lazy/index.js +++ b/test/cases/json/import-lazy/index.js @@ -9,27 +9,23 @@ it("should be possible to import json data async", function() { import("../data/f.json"), import("../data/g.json") ]).then(([a, b, c, d, e, f, g]) => { - expect(a).toEqual({ - default: null, - [Symbol.toStringTag]: "Module" - }); - expect(b).toEqual({ - default: 123, - [Symbol.toStringTag]: "Module" - }); - expect(c).toEqual({ + expect(a).toEqual(nsObj({ + default: null + })); + expect(b).toEqual(nsObj({ + default: 123 + })); + expect(c).toEqual(nsObj({ 0: 1, 1: 2, 2: 3, 3: 4, - default: [1, 2, 3, 4], - [Symbol.toStringTag]: "Module" - }); - expect(d).toEqual({ - default: {}, - [Symbol.toStringTag]: "Module" - }); - expect(e).toEqual({ + default: [1, 2, 3, 4] + })); + expect(d).toEqual(nsObj({ + default: {} + })); + expect(e).toEqual(nsObj({ aa: 1, bb: 2, 1: "x", @@ -37,25 +33,22 @@ it("should be possible to import json data async", function() { aa: 1, bb: 2, "1": "x" - }, - [Symbol.toStringTag]: "Module" - }); - expect(f).toEqual({ + } + })); + expect(f).toEqual(nsObj({ named: "named", default: { named: "named", "default": "default", __esModule: true - }, - [Symbol.toStringTag]: "Module" - }); - expect(g).toEqual({ + } + })); + expect(g).toEqual(nsObj({ named: {}, default: { named: {} - }, - [Symbol.toStringTag]: "Module" - }); + } + })); expect(g.named).toBe(g.default.named); }); }); diff --git a/test/cases/mjs/cjs-import-default/index.mjs b/test/cases/mjs/cjs-import-default/index.mjs index 2094d704219..1168325a807 100644 --- a/test/cases/mjs/cjs-import-default/index.mjs +++ b/test/cases/mjs/cjs-import-default/index.mjs @@ -17,33 +17,30 @@ it("should get correct values when importing named exports from a CommonJs modul default: "default" } }); - expect(star).toEqual({ + expect(star).toEqual(nsObj({ default: { data: "ok", default: "default" - }, - [Symbol.toStringTag]: "Module" - }); + } + })); expect({ star }).toEqual({ - star: { + star: nsObj({ default: { data: "ok", default: "default" - }, - [Symbol.toStringTag]: "Module" - } + } + }) }); expect(star.default).toEqual({ data: "ok", default: "default" }); - expect(ns).toEqual({ + expect(ns).toEqual(nsObj({ default: { data: "ok", default: "default" - }, - [Symbol.toStringTag]: "Module" - }); + } + })); expect(def1).toEqual({ data: "ok", default: "default" @@ -53,14 +50,13 @@ it("should get correct values when importing named exports from a CommonJs modul default: "default" }); expect((typeof data2)).toBe("undefined"); - expect(reexport).toEqual({ - ns: { + expect(reexport).toEqual(nsObj({ + ns: nsObj({ default: { data: "ok", default: "default" - }, - [Symbol.toStringTag]: "Module" - }, + } + }), default: { data: "ok", default: "default" @@ -69,7 +65,6 @@ it("should get correct values when importing named exports from a CommonJs modul data: "ok", default: "default" }, - data: undefined, - [Symbol.toStringTag]: "Module" - }); + data: undefined + })); }); diff --git a/test/cases/mjs/namespace-object-lazy/index.mjs b/test/cases/mjs/namespace-object-lazy/index.mjs index 539e66910d8..daf92e19219 100644 --- a/test/cases/mjs/namespace-object-lazy/index.mjs +++ b/test/cases/mjs/namespace-object-lazy/index.mjs @@ -1,13 +1,13 @@ it("should receive a namespace object when importing commonjs", function(done) { import("./cjs.js").then(function(result) { - expect(result).toEqual({ default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }); + expect(result).toEqual(nsObj({ default: { named: "named", default: "default" } })); done(); }).catch(done); }); it("should receive a namespace object when importing commonjs with __esModule", function(done) { import("./cjs-esmodule.js").then(function(result) { - expect(result).toEqual({ default: { __esModule: true, named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }); + expect(result).toEqual(nsObj({ default: { __esModule: true, named: "named", default: "default" } })); done(); }).catch(done); }); @@ -60,27 +60,27 @@ function promiseTest(promise, equalsTo) { it("should receive a namespace object when importing commonjs via context", function() { return Promise.all([ - promiseTest(contextCJS("one"), { default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextCJS("two"), { default: { __esModule: true, named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextCJS("three"), { default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextCJS("null"), { default: null, [Symbol.toStringTag]: "Module" }) + promiseTest(contextCJS("one"), nsObj({ default: { named: "named", default: "default" } })), + promiseTest(contextCJS("two"), nsObj({ default: { __esModule: true, named: "named", default: "default" } })), + promiseTest(contextCJS("three"), nsObj({ default: { named: "named", default: "default" } })), + promiseTest(contextCJS("null"), nsObj({ default: null })) ]); }); it("should receive a namespace object when importing harmony via context", function() { return Promise.all([ - promiseTest(contextHarmony("one"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextHarmony("two"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextHarmony("three"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }) + promiseTest(contextHarmony("one"), nsObj({ named: "named", default: "default" })), + promiseTest(contextHarmony("two"), nsObj({ named: "named", default: "default" })), + promiseTest(contextHarmony("three"), nsObj({ named: "named", default: "default" })) ]); }); it("should receive a namespace object when importing mixed content via context", function() { return Promise.all([ - promiseTest(contextMixed("one"), { default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("two"), { default: { __esModule: true, named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("three"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("null"), { default: null, [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("json.json"), { named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }) + promiseTest(contextMixed("one"), nsObj({ default: { named: "named", default: "default" } })), + promiseTest(contextMixed("two"), nsObj({ default: { __esModule: true, named: "named", default: "default" } })), + promiseTest(contextMixed("three"), nsObj({ named: "named", default: "default" })), + promiseTest(contextMixed("null"), nsObj({ default: null })), + promiseTest(contextMixed("json.json"), nsObj({ named: "named", default: { named: "named", default: "default" } })) ]); }); diff --git a/test/cases/mjs/non-mjs-namespace-object-lazy/index.js b/test/cases/mjs/non-mjs-namespace-object-lazy/index.js index 936032eb9b6..1059b4dc9d4 100644 --- a/test/cases/mjs/non-mjs-namespace-object-lazy/index.js +++ b/test/cases/mjs/non-mjs-namespace-object-lazy/index.js @@ -1,6 +1,6 @@ it("should receive a namespace object when importing commonjs", function(done) { import("./cjs").then(function(result) { - expect(result).toEqual({ named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }); + expect(result).toEqual(nsObj({ named: "named", default: { named: "named", default: "default" } })); done(); }).catch(done); }); @@ -60,27 +60,27 @@ function promiseTest(promise, equalsTo) { it("should receive a namespace object when importing commonjs via context", function() { return Promise.all([ - promiseTest(contextCJS("one"), { named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), + promiseTest(contextCJS("one"), nsObj({ named: "named", default: { named: "named", default: "default" } })), promiseTest(contextCJS("two"), { __esModule: true, named: "named", default: "default" }), - promiseTest(contextCJS("three"), { named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), - promiseTest(contextCJS("null"), { default: null, [Symbol.toStringTag]: "Module" }) + promiseTest(contextCJS("three"), nsObj({ named: "named", default: { named: "named", default: "default" } })), + promiseTest(contextCJS("null"), nsObj({ default: null })) ]); }); it("should receive a namespace object when importing harmony via context", function() { return Promise.all([ - promiseTest(contextHarmony("one"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextHarmony("two"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextHarmony("three"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }) + promiseTest(contextHarmony("one"), nsObj({ named: "named", default: "default" })), + promiseTest(contextHarmony("two"), nsObj({ named: "named", default: "default" })), + promiseTest(contextHarmony("three"), nsObj({ named: "named", default: "default" })) ]); }); it("should receive a namespace object when importing mixed content via context", function() { return Promise.all([ - promiseTest(contextMixed("one"), { named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }), + promiseTest(contextMixed("one"), nsObj({ named: "named", default: { named: "named", default: "default" } })), promiseTest(contextMixed("two"), { __esModule: true, named: "named", default: "default" }), - promiseTest(contextMixed("three"), { named: "named", default: "default", [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("null"), { default: null, [Symbol.toStringTag]: "Module" }), - promiseTest(contextMixed("json.json"), { named: "named", default: { named: "named", default: "default" }, [Symbol.toStringTag]: "Module" }) + promiseTest(contextMixed("three"), nsObj({ named: "named", default: "default" })), + promiseTest(contextMixed("null"), nsObj({ default: null })), + promiseTest(contextMixed("json.json"), nsObj({ named: "named", default: { named: "named", default: "default" } })) ]); }); diff --git a/test/cases/optimize/side-effects-reexport-start-unknown/index.js b/test/cases/optimize/side-effects-reexport-start-unknown/index.js index 4c1a54309e3..2bdff81530b 100644 --- a/test/cases/optimize/side-effects-reexport-start-unknown/index.js +++ b/test/cases/optimize/side-effects-reexport-start-unknown/index.js @@ -2,5 +2,5 @@ import * as m from "m"; it("should handle unknown exports fine", function() { var x = m; - expect(x).toEqual({ foo: "foo", [Symbol.toStringTag]: "Module" }); + expect(x).toEqual(nsObj({ foo: "foo" })); }); diff --git a/test/cases/optimize/tree-shaking-star2/index.js b/test/cases/optimize/tree-shaking-star2/index.js index 676392638a8..0d1e070818d 100644 --- a/test/cases/optimize/tree-shaking-star2/index.js +++ b/test/cases/optimize/tree-shaking-star2/index.js @@ -6,9 +6,8 @@ it("should correctly tree shake star exports", function() { expect(aa).toBe("aa"); expect(aa2).toBe("aa"); expect(d).toBe("d"); - expect(root6).toEqual({ + expect(root6).toEqual(nsObj({ aa: "aa", - c: "c", - [Symbol.toStringTag]: "Module" - }); + c: "c" + })); }); diff --git a/test/cases/parsing/harmony-commonjs-mix/index.js b/test/cases/parsing/harmony-commonjs-mix/index.js index 7947bbf08a2..745a4323c78 100644 --- a/test/cases/parsing/harmony-commonjs-mix/index.js +++ b/test/cases/parsing/harmony-commonjs-mix/index.js @@ -1,7 +1,6 @@ it("should result in a warning when using module.exports in harmony module", function() { var x = require("./module1"); - expect(x).toEqual({ - default: 1234, - [Symbol.toStringTag]: "Module" - }); + expect(x).toEqual(nsObj({ + default: 1234 + })); }); diff --git a/test/cases/parsing/issue-2050/index.js b/test/cases/parsing/issue-2050/index.js index 4c28c4bac3e..6b05b3d8066 100644 --- a/test/cases/parsing/issue-2050/index.js +++ b/test/cases/parsing/issue-2050/index.js @@ -1,9 +1,8 @@ it("should support multiple reexports", function() { - expect(require("./x")).toEqual({ + expect(require("./x")).toEqual(nsObj({ xa: "a", xb: "b", xc: "c", - xd: "d", - [Symbol.toStringTag]: "Module" - }); + xd: "d" + })); }); diff --git a/test/cases/parsing/issue-2522/index.js b/test/cases/parsing/issue-2522/index.js index a727d989f25..e28c668496e 100644 --- a/test/cases/parsing/issue-2522/index.js +++ b/test/cases/parsing/issue-2522/index.js @@ -13,10 +13,9 @@ it("should import into object shorthand", function() { a: 123, aa: 123, b: 456, - c: { + c: nsObj({ a: 123, - default: 456, - [Symbol.toStringTag]: "Module" - } + default: 456 + }) }); }) diff --git a/test/cases/parsing/issue-3964/index.js b/test/cases/parsing/issue-3964/index.js index 9671c573578..f5765f4be7f 100644 --- a/test/cases/parsing/issue-3964/index.js +++ b/test/cases/parsing/issue-3964/index.js @@ -1,4 +1,4 @@ it("should be possible to export default an imported name", function() { var x = require("./module"); - expect(x).toEqual({ default: 1234, [Symbol.toStringTag]: "Module" }); + expect(x).toEqual(nsObj({ default: 1234 })); }); diff --git a/test/cases/parsing/issue-4179/index.js b/test/cases/parsing/issue-4179/index.js index 475b9e1ee1e..ff5224b2338 100644 --- a/test/cases/parsing/issue-4179/index.js +++ b/test/cases/parsing/issue-4179/index.js @@ -2,7 +2,7 @@ import def from "./module?harmony"; import * as mod from "./module?harmony-start" it("should export a sequence expression correctly", function() { - expect(require("./module?cjs")).toEqual({ default: 2, [Symbol.toStringTag]: "Module" }); + expect(require("./module?cjs")).toEqual(nsObj({ default: 2 })); expect(def).toBe(2); expect(mod.default).toBe(2); }); diff --git a/test/cases/scope-hoisting/export-namespace/index.js b/test/cases/scope-hoisting/export-namespace/index.js index f551d349e83..8020f45e589 100644 --- a/test/cases/scope-hoisting/export-namespace/index.js +++ b/test/cases/scope-hoisting/export-namespace/index.js @@ -2,17 +2,15 @@ import { ns as ns1 } from "./module1"; const ns2 = require("./module2").ns; it("should allow to export a namespace object (concated)", function() { - expect(ns1).toEqual({ + expect(ns1).toEqual(nsObj({ a: "a", - b: "b", - [Symbol.toStringTag]: "Module" - }); + b: "b" + })); }); it("should allow to export a namespace object (exposed)", function() { - expect(ns2).toEqual({ + expect(ns2).toEqual(nsObj({ a: "a", - b: "b", - [Symbol.toStringTag]: "Module" - }); + b: "b" + })); }); diff --git a/test/cases/scope-hoisting/issue-5020-minimal/index.js b/test/cases/scope-hoisting/issue-5020-minimal/index.js index c664793105a..cd70d349d65 100644 --- a/test/cases/scope-hoisting/issue-5020-minimal/index.js +++ b/test/cases/scope-hoisting/issue-5020-minimal/index.js @@ -1,14 +1,13 @@ var testData = require("./src/index.js"); it("should export the correct values", function() { - expect(testData).toEqual({ - icon: { - svg: { - default: 1, - [Symbol.toStringTag]: "Module" - }, - [Symbol.toStringTag]: "Module" - }, - [Symbol.toStringTag]: "Module" - }); + expect(testData).toEqual( + nsObj({ + icon: nsObj({ + svg: nsObj({ + default: 1 + }) + }) + }) + ); }); diff --git a/test/cases/scope-hoisting/issue-5020/index.js b/test/cases/scope-hoisting/issue-5020/index.js index df60a977d4e..a841b19370a 100644 --- a/test/cases/scope-hoisting/issue-5020/index.js +++ b/test/cases/scope-hoisting/issue-5020/index.js @@ -1,31 +1,28 @@ var testData = require("./src/index.js"); it("should export the correct values", function() { - expect(testData).toEqual({ - svg5: { - svg: { - clinical1: { - svg1: 1 - }, - clinical2: { - svg2: 2 - }, - [Symbol.toStringTag]: "Module" - }, - [Symbol.toStringTag]: "Module" - }, - svg6: { - svg: { - test: { - svg1: 10 - }, - clinical2: { - svg2: 20 - }, - [Symbol.toStringTag]: "Module" - }, - [Symbol.toStringTag]: "Module" - }, - [Symbol.toStringTag]: "Module" - }); + expect(testData).toEqual( + nsObj({ + svg5: nsObj({ + svg: nsObj({ + clinical1: { + svg1: 1 + }, + clinical2: { + svg2: 2 + } + }) + }), + svg6: nsObj({ + svg: nsObj({ + test: { + svg1: 10 + }, + clinical2: { + svg2: 20 + } + }) + }) + }) + ); }) diff --git a/test/cases/scope-hoisting/issue-5443/index.js b/test/cases/scope-hoisting/issue-5443/index.js index 30c2bdb7de3..f6d76307bc0 100644 --- a/test/cases/scope-hoisting/issue-5443/index.js +++ b/test/cases/scope-hoisting/issue-5443/index.js @@ -1,9 +1,8 @@ import { module } from "./reexport"; it("should have the correct values", function() { - expect(module).toEqual({ + expect(module).toEqual(nsObj({ default: "default", - named: "named", - [Symbol.toStringTag]: "Module" - }); + named: "named" + })); }); diff --git a/test/cases/side-effects/missing-module-7499/index.js b/test/cases/side-effects/missing-module-7499/index.js index 714aabf74b4..fea57ceb0c5 100644 --- a/test/cases/side-effects/missing-module-7499/index.js +++ b/test/cases/side-effects/missing-module-7499/index.js @@ -2,9 +2,8 @@ import './example' it("should run correctly", function() { return import('./lazy').then(lazy => { - expect(lazy.default()).toEqual({ - hello: "world", - [Symbol.toStringTag]: "Module" - }); + expect(lazy.default()).toEqual(nsObj({ + hello: "world" + })); }) }); diff --git a/test/cases/side-effects/order-issue-7665/index.js b/test/cases/side-effects/order-issue-7665/index.js new file mode 100644 index 00000000000..378de0e896e --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/index.js @@ -0,0 +1,7 @@ +import array from "./tracker"; +import { b } from "./module"; + +it("should evaulate modules in the correct order", () => { + expect(b).toEqual("b"); + expect(array).toEqual(["b", "a"]); +}) diff --git a/test/cases/side-effects/order-issue-7665/module/a.js b/test/cases/side-effects/order-issue-7665/module/a.js new file mode 100644 index 00000000000..635f930d2ac --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/module/a.js @@ -0,0 +1,5 @@ +import array from "../tracker"; + +array.push("a"); + +export default "a"; diff --git a/test/cases/side-effects/order-issue-7665/module/b.js b/test/cases/side-effects/order-issue-7665/module/b.js new file mode 100644 index 00000000000..3c47022b329 --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/module/b.js @@ -0,0 +1,5 @@ +import array from "../tracker"; + +array.push("b"); + +export default "b"; diff --git a/test/cases/side-effects/order-issue-7665/module/index.js b/test/cases/side-effects/order-issue-7665/module/index.js new file mode 100644 index 00000000000..6303d91ada7 --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/module/index.js @@ -0,0 +1,4 @@ +import b from './b'; +import './a'; + +export { b }; diff --git a/test/cases/side-effects/order-issue-7665/module/package.json b/test/cases/side-effects/order-issue-7665/module/package.json new file mode 100644 index 00000000000..a4ec69bc4ab --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/module/package.json @@ -0,0 +1,6 @@ +{ + "sideEffects": [ + "./index.js", + "./a.js" + ] +} diff --git a/test/cases/side-effects/order-issue-7665/tracker.js b/test/cases/side-effects/order-issue-7665/tracker.js new file mode 100644 index 00000000000..d6d1738de67 --- /dev/null +++ b/test/cases/side-effects/order-issue-7665/tracker.js @@ -0,0 +1 @@ +export default []; diff --git a/test/configCases/chunk-index/order-multiple-entries/webpack.config.js b/test/configCases/chunk-index/order-multiple-entries/webpack.config.js index 52dd6319209..29d22978153 100644 --- a/test/configCases/chunk-index/order-multiple-entries/webpack.config.js +++ b/test/configCases/chunk-index/order-multiple-entries/webpack.config.js @@ -66,6 +66,8 @@ module.exports = { asyncIndex2: "0: ./async.js" }); const indicies = compilation.modules + .slice() + .sort((a, b) => a.index - b.index) .map( m => `${m.index}: ${m.readableIdentifier( @@ -74,6 +76,8 @@ module.exports = { ) .join(", "); const indicies2 = compilation.modules + .slice() + .sort((a, b) => a.index2 - b.index2) .map( m => `${m.index2}: ${m.readableIdentifier( @@ -82,10 +86,10 @@ module.exports = { ) .join(", "); expect(indicies).toEqual( - "2: ./shared.js, 4: ./c.js, 3: ./b.js, 1: ./a.js, 6: ./async.js, 5: ./entry2.js, 0: ./entry1.js" + "0: ./entry1.js, 1: ./a.js, 2: ./shared.js, 3: ./b.js, 4: ./c.js, 5: ./entry2.js, 6: ./async.js" ); expect(indicies2).toEqual( - "0: ./shared.js, 3: ./c.js, 2: ./b.js, 1: ./a.js, 6: ./async.js, 5: ./entry2.js, 4: ./entry1.js" + "0: ./shared.js, 1: ./a.js, 2: ./b.js, 3: ./c.js, 4: ./entry1.js, 5: ./entry2.js, 6: ./async.js" ); }); }; diff --git a/test/configCases/code-generation/use-strict/index.js b/test/configCases/code-generation/use-strict/index.js index cf05674bee8..8f132820682 100644 --- a/test/configCases/code-generation/use-strict/index.js +++ b/test/configCases/code-generation/use-strict/index.js @@ -15,12 +15,14 @@ it("should include only one use strict per module", function() { match = regExp.exec(source); } + matches.sort(); + expect(matches).toEqual([ - "__webpack_require__.r(__webpack_exports__);", "/* unused harmony default export */ var _unused_webpack_default_export = (\"a\");", "__webpack_require__.r(__webpack_exports__);", "__webpack_require__.r(__webpack_exports__);", "__webpack_require__.r(__webpack_exports__);", + "__webpack_require__.r(__webpack_exports__);", "it(\"should include only one use strict per module\", function() {", ]); }); diff --git a/test/configCases/context-replacement/System.import/index.js b/test/configCases/context-replacement/System.import/index.js index c2afdd5a49e..c96946800d2 100644 --- a/test/configCases/context-replacement/System.import/index.js +++ b/test/configCases/context-replacement/System.import/index.js @@ -1,6 +1,6 @@ it("should replace a async context with a manual map", function() { var a = "a"; return import(a).then(function(a) { - expect(a).toEqual({ default: "b", [Symbol.toStringTag]: "Module" }); + expect(a).toEqual(nsObj({ default: "b" })); }); }); diff --git a/test/configCases/dll-plugin-entry/1-use-dll/index.js b/test/configCases/dll-plugin-entry/1-use-dll/index.js index ec66e9e5fd9..203fc2d122f 100644 --- a/test/configCases/dll-plugin-entry/1-use-dll/index.js +++ b/test/configCases/dll-plugin-entry/1-use-dll/index.js @@ -1,7 +1,7 @@ import Answer, { bar } from "dll/index"; it("should load a module from dll", function() { - expect(require("dll/index")).toEqual({ bar: "bar", default: 42, [Symbol.toStringTag]: "Module" }); + expect(require("dll/index")).toEqual(nsObj({ bar: "bar", default: 42 })); }); it("should load an harmony module from dll (default export)", function() { diff --git a/test/configCases/dll-plugin/1-use-dll/index.js b/test/configCases/dll-plugin/1-use-dll/index.js index 7f844261291..9d0f47340b7 100644 --- a/test/configCases/dll-plugin/1-use-dll/index.js +++ b/test/configCases/dll-plugin/1-use-dll/index.js @@ -12,7 +12,7 @@ it("should load a module of non-default type without extension from dll", functi it("should load an async module from dll", function(done) { require("dll/b")().then(function(c) { - expect(c).toEqual({ default: "c", [Symbol.toStringTag]: "Module" }); + expect(c).toEqual(nsObj({ default: "c" })); done(); }).catch(done); }); diff --git a/test/configCases/dll-plugin/2-use-dll-without-scope/index.js b/test/configCases/dll-plugin/2-use-dll-without-scope/index.js index 704f6b1589c..28f81259339 100644 --- a/test/configCases/dll-plugin/2-use-dll-without-scope/index.js +++ b/test/configCases/dll-plugin/2-use-dll-without-scope/index.js @@ -12,7 +12,7 @@ it("should load a module of non-default type without extension from dll", functi it("should load an async module from dll", function(done) { require("../0-create-dll/b")().then(function(c) { - expect(c).toEqual({ default: "c", [Symbol.toStringTag]: "Module" }); + expect(c).toEqual(nsObj({ default: "c" })); done(); }).catch(done); }); diff --git a/test/configCases/dll-plugin/3-use-dll-with-hashid/index.js b/test/configCases/dll-plugin/3-use-dll-with-hashid/index.js index 0967a518eea..224bc015e73 100644 --- a/test/configCases/dll-plugin/3-use-dll-with-hashid/index.js +++ b/test/configCases/dll-plugin/3-use-dll-with-hashid/index.js @@ -8,7 +8,7 @@ it("should load a module from dll", function() { it("should load an async module from dll", function(done) { require("../0-create-dll/b")().then(function(c) { - expect(c).toEqual({ default: "c", [Symbol.toStringTag]: "Module" }); + expect(c).toEqual(nsObj({ default: "c" })); done(); }).catch(done); }); diff --git a/test/configCases/hash-length/output-filename/test.config.js b/test/configCases/hash-length/output-filename/test.config.js index c378cab5525..224a52035b7 100644 --- a/test/configCases/hash-length/output-filename/test.config.js +++ b/test/configCases/hash-length/output-filename/test.config.js @@ -18,7 +18,7 @@ module.exports = { var bundleDetects = [ options.amd.expectedChunkFilenameLength && { - regex: new RegExp("^0.bundle" + i, "i"), + regex: new RegExp("^\\d+.bundle" + i, "i"), expectedNameLength: options.amd.expectedChunkFilenameLength }, { diff --git a/test/configCases/parsing/system.import/index.js b/test/configCases/parsing/system.import/index.js index 754a325d9f3..8310bbaf461 100644 --- a/test/configCases/parsing/system.import/index.js +++ b/test/configCases/parsing/system.import/index.js @@ -22,7 +22,7 @@ it("should be able to use System.import()", done => { if(__SYSTEM__ === false) { done(new Error("System.import should not be parsed")); } else { - expect(mod).toEqual({ default: "ok", [Symbol.toStringTag]: "Module" }); + expect(mod).toEqual(nsObj({ default: "ok" })); done(); } }); diff --git a/test/configCases/plugins/banner-plugin/index.js b/test/configCases/plugins/banner-plugin/index.js index 105a1f91b12..02653b73aeb 100644 --- a/test/configCases/plugins/banner-plugin/index.js +++ b/test/configCases/plugins/banner-plugin/index.js @@ -6,7 +6,7 @@ it("should contain banner in bundle0 chunk", () => { expect(source).toMatch("A test value"); expect(source).toMatch("banner is a string"); expect(source).toMatch("banner is a function"); - expect(source).toMatch("/*!\n * multiline\n * banner\n * 1\n */"); + expect(source).toMatch("/*!\n * multiline\n * banner\n * bundle0\n */"); }); it("should not contain banner in vendors chunk", () => { diff --git a/test/configCases/plugins/banner-plugin/webpack.config.js b/test/configCases/plugins/banner-plugin/webpack.config.js index fcaaee27a46..ed4baebb4d1 100644 --- a/test/configCases/plugins/banner-plugin/webpack.config.js +++ b/test/configCases/plugins/banner-plugin/webpack.config.js @@ -19,7 +19,7 @@ module.exports = { exclude: ["vendors.js"] }), new webpack.BannerPlugin({ - banner: ({ chunk }) => `multiline\nbanner\n${chunk.id}` + banner: ({ chunk }) => `multiline\nbanner\n${chunk.name}` }) ] }; diff --git a/test/configCases/source-map/array-as-output-library-in-object-output/index.js b/test/configCases/source-map/array-as-output-library-in-object-output/index.js new file mode 100644 index 00000000000..e0b8201c32b --- /dev/null +++ b/test/configCases/source-map/array-as-output-library-in-object-output/index.js @@ -0,0 +1 @@ +it("should compile successfully when output.library.root is an array of strings", function () { }); diff --git a/test/configCases/source-map/array-as-output-library-in-object-output/webpack.config.js b/test/configCases/source-map/array-as-output-library-in-object-output/webpack.config.js new file mode 100644 index 00000000000..d9c8900e51f --- /dev/null +++ b/test/configCases/source-map/array-as-output-library-in-object-output/webpack.config.js @@ -0,0 +1,11 @@ +module.exports = { + devtool: "source-map", + output: { + library: { + root: ["Foo", "[name]"], + amd: "[name]", + commonjs: "[name]" + }, + libraryTarget: "umd" + } +}; diff --git a/test/configCases/target/node-dynamic-import/index.js b/test/configCases/target/node-dynamic-import/index.js index 2c354b52920..43f1453b418 100644 --- a/test/configCases/target/node-dynamic-import/index.js +++ b/test/configCases/target/node-dynamic-import/index.js @@ -23,10 +23,9 @@ function testCase(load, done) { it("should be able to use expressions in import", function(done) { function load(name, expected, callback) { import("./dir/" + name + '.js') - .then((result) => {expect(result).toEqual({ - default: expected, - [Symbol.toStringTag]: "Module" - }); callback()}) + .then((result) => {expect(result).toEqual(nsObj({ + default: expected + })); callback()}) .catch((err) => {done(err)}); } testCase(load, done); @@ -35,10 +34,9 @@ it("should be able to use expressions in import", function(done) { it("should be able to use expressions in lazy-once import", function(done) { function load(name, expected, callback) { import(/* webpackMode: "lazy-once" */ "./dir/" + name + '.js') - .then((result) => {expect(result).toEqual({ - default: expected, - [Symbol.toStringTag]: "Module" - }); callback()}) + .then((result) => {expect(result).toEqual(nsObj({ + default: expected + })); callback()}) .catch((err) => {done(err)}); } testCase(load, done); @@ -47,10 +45,9 @@ it("should be able to use expressions in lazy-once import", function(done) { it("should be able to use expressions in import", function(done) { function load(name, expected, callback) { import("./dir2/" + name).then((result) => { - expect(result).toEqual({ - default: expected, - [Symbol.toStringTag]: "Module" - }); + expect(result).toEqual(nsObj({ + default: expected + })); callback(); }).catch((err) => { done(err); @@ -65,10 +62,9 @@ it("should convert to function in node", function() { it("should be able to use import", function(done) { import("./two").then((two) => { - expect(two).toEqual({ - default: 2, - [Symbol.toStringTag]: "Module" - }); + expect(two).toEqual(nsObj({ + default: 2 + })); done(); }).catch(function(err) { done(err); diff --git a/test/hotCases/concat/reload-compat-flag/index.js b/test/hotCases/concat/reload-compat-flag/index.js index 495849e609e..ddb2584ebb0 100644 --- a/test/hotCases/concat/reload-compat-flag/index.js +++ b/test/hotCases/concat/reload-compat-flag/index.js @@ -1,16 +1,14 @@ var x = require("./module"); it("should allow to hot replace modules in a ConcatenatedModule", (done) => { - expect(x).toEqual({ - default: "ok1", - [Symbol.toStringTag]: "Module" - }); + expect(x).toEqual(nsObj({ + default: "ok1" + })); module.hot.accept("./module", () => { x = require("./module"); - expect(x).toEqual({ - default: "ok2", - [Symbol.toStringTag]: "Module" - }); + expect(x).toEqual(nsObj({ + default: "ok2" + })); done(); }); NEXT(require("../../update")(done)); diff --git a/test/statsCases/split-chunks-automatic-name/a.js b/test/statsCases/split-chunks-automatic-name/a.js new file mode 100644 index 00000000000..1fcabdcfdc0 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/a.js @@ -0,0 +1,5 @@ +import "./d"; +import "./e"; +import "x"; +import "y"; +export default "a"; diff --git a/test/statsCases/split-chunks-automatic-name/b.js b/test/statsCases/split-chunks-automatic-name/b.js new file mode 100644 index 00000000000..fd909a7b63b --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/b.js @@ -0,0 +1,5 @@ +import "./d"; +import "./f"; +import "x"; +import "y"; +export default "b"; diff --git a/test/statsCases/split-chunks-automatic-name/c.js b/test/statsCases/split-chunks-automatic-name/c.js new file mode 100644 index 00000000000..6bbf24bfe50 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/c.js @@ -0,0 +1,5 @@ +import "./d"; +import "./f"; +import "x"; +import "z"; +export default "c"; diff --git a/test/statsCases/split-chunks-automatic-name/d.js b/test/statsCases/split-chunks-automatic-name/d.js new file mode 100644 index 00000000000..987d6d7e401 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/d.js @@ -0,0 +1 @@ +export default "d"; diff --git a/test/statsCases/split-chunks-automatic-name/e.js b/test/statsCases/split-chunks-automatic-name/e.js new file mode 100644 index 00000000000..d97e38b22f5 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/e.js @@ -0,0 +1 @@ +export default "e"; diff --git a/test/statsCases/split-chunks-automatic-name/f.js b/test/statsCases/split-chunks-automatic-name/f.js new file mode 100644 index 00000000000..657d4dee8a8 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/f.js @@ -0,0 +1 @@ +export default "f"; diff --git a/test/statsCases/split-chunks-automatic-name/index.js b/test/statsCases/split-chunks-automatic-name/index.js new file mode 100644 index 00000000000..5dfec91bc71 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/index.js @@ -0,0 +1,3 @@ +import(/* webpackChunkName: "async-a" */ "./a"); +import(/* webpackChunkName: "async-b" */ "./b"); +import(/* webpackChunkName: "async-c" */ "./c"); diff --git a/test/statsCases/split-chunks-automatic-name/node_modules/x.js b/test/statsCases/split-chunks-automatic-name/node_modules/x.js new file mode 100644 index 00000000000..3fd5ecc7a40 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/node_modules/x.js @@ -0,0 +1 @@ +export default "x"; diff --git a/test/statsCases/split-chunks-automatic-name/node_modules/y.js b/test/statsCases/split-chunks-automatic-name/node_modules/y.js new file mode 100644 index 00000000000..413e7c09da6 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/node_modules/y.js @@ -0,0 +1 @@ +export default "y"; diff --git a/test/statsCases/split-chunks-automatic-name/node_modules/z.js b/test/statsCases/split-chunks-automatic-name/node_modules/z.js new file mode 100644 index 00000000000..0b388750767 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/node_modules/z.js @@ -0,0 +1 @@ +export default "z"; diff --git a/test/statsCases/split-chunks-automatic-name/webpack.config.js b/test/statsCases/split-chunks-automatic-name/webpack.config.js new file mode 100644 index 00000000000..8216c7312c7 --- /dev/null +++ b/test/statsCases/split-chunks-automatic-name/webpack.config.js @@ -0,0 +1,37 @@ +const stats = { + hash: false, + timings: false, + builtAt: false, + assets: false, + chunks: true, + chunkOrigins: true, + entrypoints: true, + modules: false +}; +module.exports = { + name: "production", + mode: "production", + entry: { + main: "./" + }, + optimization: { + splitChunks: { + chunks: "all", + minSize: 1, + cacheGroups: { + default: { + automaticNamePrefix: "common", + reuseExistingChunk: true, + minChunks: 2, + priority: -20 + }, + vendors: { + automaticNamePrefix: "common", + test: /[\\/]node_modules[\\/]/, + priority: -10 + } + } + } + }, + stats +}; diff --git a/test/statsCases/split-chunks-max-size/big.js b/test/statsCases/split-chunks-max-size/big.js new file mode 100644 index 00000000000..40380e42352 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/big.js @@ -0,0 +1,4 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/in-some-directory/big.js b/test/statsCases/split-chunks-max-size/in-some-directory/big.js new file mode 100644 index 00000000000..40380e42352 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/in-some-directory/big.js @@ -0,0 +1,4 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/in-some-directory/small.js b/test/statsCases/split-chunks-max-size/in-some-directory/small.js new file mode 100644 index 00000000000..1f44b439eae --- /dev/null +++ b/test/statsCases/split-chunks-max-size/in-some-directory/small.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/in-some-directory/very-big.js b/test/statsCases/split-chunks-max-size/in-some-directory/very-big.js new file mode 100644 index 00000000000..4c943771c37 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/in-some-directory/very-big.js @@ -0,0 +1,24 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/index.js b/test/statsCases/split-chunks-max-size/index.js new file mode 100644 index 00000000000..28dd561398c --- /dev/null +++ b/test/statsCases/split-chunks-max-size/index.js @@ -0,0 +1,48 @@ +import "./big?1"; +import "./big?2"; +import "./small?1"; +import "./small?2"; +import "./small?3"; +import "./small?4"; +import "./small?5"; +import "./small?6"; +import "./small?7"; +import "./small?8"; +import "./small?9"; +import "./very-big?1"; +import "./very-big?2"; +import "./very-big?3"; + +import "./subfolder/big?1"; +import "./subfolder/big?2"; +import "./subfolder/small?1"; +import "./subfolder/small?2"; +import "./subfolder/small?3"; +import "./subfolder/small?4"; +import "./subfolder/small?5"; +import "./subfolder/small?6"; +import "./subfolder/small?7"; +import "./subfolder/small?8"; +import "./subfolder/small?9"; + +import "./inner-module/small?1"; +import "./inner-module/small?2"; +import "./inner-module/small?3"; +import "./inner-module/small?4"; +import "./inner-module/small?5"; +import "./inner-module/small?6"; +import "./inner-module/small?7"; +import "./inner-module/small?8"; +import "./inner-module/small?9"; + +import "./in-some-directory/big?1"; +import "./in-some-directory/small?1"; +import "./in-some-directory/small?2"; +import "./in-some-directory/small?3"; +import "./in-some-directory/small?4"; +import "./in-some-directory/very-big?1"; + +import "big?1"; +import "small?1"; +import "small?2"; +import "very-big?1"; diff --git a/test/statsCases/split-chunks-max-size/inner-module/big.js b/test/statsCases/split-chunks-max-size/inner-module/big.js new file mode 100644 index 00000000000..40380e42352 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/inner-module/big.js @@ -0,0 +1,4 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/inner-module/small.js b/test/statsCases/split-chunks-max-size/inner-module/small.js new file mode 100644 index 00000000000..1f44b439eae --- /dev/null +++ b/test/statsCases/split-chunks-max-size/inner-module/small.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/inner-module/very-big.js b/test/statsCases/split-chunks-max-size/inner-module/very-big.js new file mode 100644 index 00000000000..4c943771c37 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/inner-module/very-big.js @@ -0,0 +1,24 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/node_modules/big.js b/test/statsCases/split-chunks-max-size/node_modules/big.js new file mode 100644 index 00000000000..40380e42352 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/node_modules/big.js @@ -0,0 +1,4 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/node_modules/small.js b/test/statsCases/split-chunks-max-size/node_modules/small.js new file mode 100644 index 00000000000..1f44b439eae --- /dev/null +++ b/test/statsCases/split-chunks-max-size/node_modules/small.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/node_modules/very-big.js b/test/statsCases/split-chunks-max-size/node_modules/very-big.js new file mode 100644 index 00000000000..4c943771c37 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/node_modules/very-big.js @@ -0,0 +1,24 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/small.js b/test/statsCases/split-chunks-max-size/small.js new file mode 100644 index 00000000000..1f44b439eae --- /dev/null +++ b/test/statsCases/split-chunks-max-size/small.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/subfolder/big.js b/test/statsCases/split-chunks-max-size/subfolder/big.js new file mode 100644 index 00000000000..40380e42352 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/subfolder/big.js @@ -0,0 +1,4 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/subfolder/small.js b/test/statsCases/split-chunks-max-size/subfolder/small.js new file mode 100644 index 00000000000..1f44b439eae --- /dev/null +++ b/test/statsCases/split-chunks-max-size/subfolder/small.js @@ -0,0 +1 @@ +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/subfolder/very-big.js b/test/statsCases/split-chunks-max-size/subfolder/very-big.js new file mode 100644 index 00000000000..4c943771c37 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/subfolder/very-big.js @@ -0,0 +1,24 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/very-big.js b/test/statsCases/split-chunks-max-size/very-big.js new file mode 100644 index 00000000000..4c943771c37 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/very-big.js @@ -0,0 +1,24 @@ +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content +// content content content content content content content content diff --git a/test/statsCases/split-chunks-max-size/webpack.config.js b/test/statsCases/split-chunks-max-size/webpack.config.js new file mode 100644 index 00000000000..d153a580913 --- /dev/null +++ b/test/statsCases/split-chunks-max-size/webpack.config.js @@ -0,0 +1,48 @@ +const stats = { + hash: false, + timings: false, + builtAt: false, + assets: false, + chunks: true, + chunkOrigins: true, + entrypoints: true, + modules: false +}; +module.exports = [ + { + name: "production", + mode: "production", + entry: { + main: "./" + }, + output: { + filename: "prod-[name].js" + }, + optimization: { + splitChunks: { + minSize: 100, + maxSize: 1000, + chunks: "all" + } + }, + stats + }, + { + name: "development", + mode: "development", + entry: { + main: "./" + }, + output: { + filename: "dev-[name].js" + }, + optimization: { + splitChunks: { + minSize: 100, + maxSize: 1000, + chunks: "all" + } + }, + stats + } +]; diff --git a/test/watchCases/plugins/define-plugin/0/index.js b/test/watchCases/plugins/define-plugin/0/index.js index 182e0f038f8..0a53ea7ddc2 100644 --- a/test/watchCases/plugins/define-plugin/0/index.js +++ b/test/watchCases/plugins/define-plugin/0/index.js @@ -1,17 +1,15 @@ it("should be able to use dynamic defines in watch mode", function() { const module = require("./module"); - expect(module).toEqual({ + expect(module).toEqual(nsObj({ default: WATCH_STEP, - type: "string", - [Symbol.toStringTag]: "Module" - }); + type: "string" + })); }); it("should not update a define when dependencies list is missing", function() { const module2 = require("./module2"); - expect(module2).toEqual({ + expect(module2).toEqual(nsObj({ default: "0", - type: "string", - [Symbol.toStringTag]: "Module" - }); + type: "string" + })); }); diff --git a/yarn.lock b/yarn.lock index 564a6a30d56..fe3b3b99172 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,14 +3,14 @@ "@babel/code-frame@^7.0.0-beta.35": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz#d18c2f4c4ba8d093a2bcfab5616593bfe2441a27" + version "7.0.0-beta.52" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.52.tgz#192483bfa0d1e467c101571c21029ccb74af2801" dependencies: - "@babel/highlight" "7.0.0-beta.47" + "@babel/highlight" "7.0.0-beta.52" -"@babel/highlight@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.47.tgz#8fbc83fb2a21f0bd2b95cdbeb238cf9689cad494" +"@babel/highlight@7.0.0-beta.52": + version "7.0.0-beta.52" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.52.tgz#ef24931432f06155e7bc39cdb8a6b37b4a28b3d0" dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -251,7 +251,11 @@ acorn@^4.0.4, acorn@~4.0.2: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" -acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0, acorn@^5.6.2: +acorn@^5.0.0, acorn@^5.3.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" + +acorn@^5.5.0, acorn@^5.6.2: version "5.6.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.2.tgz#b1da1d7be2ac1b4a327fb9eab851702c5045b4e7" @@ -324,18 +328,12 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0, ansi-styles@^3.2.1: +ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" dependencies: color-convert "^1.9.0" -ansi-styles@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - dependencies: - color-convert "^1.9.0" - any-observable@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" @@ -351,19 +349,19 @@ app-root-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" +append-transform@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" dependencies: - default-require-extensions "^1.0.0" + default-require-extensions "^2.0.0" aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -477,10 +475,10 @@ async@1.x, async@^1.4.0: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" async@^2.1.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: - lodash "^4.14.0" + lodash "^4.17.10" asynckit@^0.4.0: version "0.4.0" @@ -565,12 +563,12 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.0.1.tgz#bbad3bf523fb202da05ed0a6540b48c84eed13a6" +babel-jest@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.2.0.tgz#14a9d6a3f4122dfea6069d37085adf26a53a4dba" dependencies: babel-plugin-istanbul "^4.1.6" - babel-preset-jest "^23.0.1" + babel-preset-jest "^23.2.0" babel-messages@^6.23.0: version "6.23.0" @@ -587,19 +585,19 @@ babel-plugin-istanbul@^4.1.6: istanbul-lib-instrument "^1.10.1" test-exclude "^4.2.1" -babel-plugin-jest-hoist@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.0.1.tgz#eaa11c964563aea9c21becef2bdf7853f7f3c148" +babel-plugin-jest-hoist@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" babel-plugin-syntax-object-rest-spread@^6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" -babel-preset-jest@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.0.1.tgz#631cc545c6cf021943013bcaf22f45d87fe62198" +babel-preset-jest@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" dependencies: - babel-plugin-jest-hoist "^23.0.1" + babel-plugin-jest-hoist "^23.2.0" babel-plugin-syntax-object-rest-spread "^6.13.0" babel-register@^6.26.0: @@ -631,7 +629,7 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@^6.18.0, babel-traverse@^6.26.0: +babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" dependencies: @@ -645,7 +643,7 @@ babel-traverse@^6.18.0, babel-traverse@^6.26.0: invariant "^2.2.2" lodash "^4.17.4" -babel-types@^6.18.0, babel-types@^6.26.0: +babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: @@ -683,8 +681,8 @@ base@^0.11.1: pascalcase "^0.1.1" bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" dependencies: tweetnacl "^0.14.3" @@ -717,18 +715,6 @@ boom@2.x.x: dependencies: hoek "2.x.x" -boom@4.x.x: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - dependencies: - hoek "4.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - dependencies: - hoek "4.x.x" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -767,9 +753,9 @@ 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.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" +browser-resolve@^1.11.2, browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" dependencies: resolve "1.1.7" @@ -1126,6 +1112,10 @@ clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" +clorox@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clorox/-/clorox-1.0.3.tgz#6fa63653f280c33d69f548fb14d239ddcfa1590d" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -1170,12 +1160,22 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.3.0, color-convert@^1.9.0: +color-convert@^1.3.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" dependencies: color-name "^1.1.1" +color-convert@^1.9.0: + version "1.9.2" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" + dependencies: + color-name "1.1.1" + +color-name@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" + color-name@^1.0.0, color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" @@ -1235,8 +1235,8 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" compare-versions@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.2.1.tgz#a49eb7689d4caaf0b6db5220173fd279614000f7" + version "3.3.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.3.0.tgz#af93ea705a96943f622ab309578b9b90586f39c3" component-emitter@^1.2.1: version "1.2.1" @@ -1324,8 +1324,8 @@ core-js@^1.0.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" core-js@^2.4.0, core-js@^2.5.0: - version "2.5.6" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.6.tgz#0fe6d45bf3cac3ac364a9d72de7576f4eb221b9d" + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -1400,12 +1400,6 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - dependencies: - boom "5.x.x" - crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -1517,12 +1511,12 @@ csso@~2.3.1: source-map "^0.5.3" cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" + version "0.3.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" -"cssstyle@>= 0.2.37 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" +"cssstyle@>= 0.3.1 < 0.4.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.3.1.tgz#6da9b4cff1bc5d716e6e5fe8e04fcb1b50a49adf" dependencies: cssom "0.3.x" @@ -1586,19 +1580,19 @@ dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" -deep-extend@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" +default-require-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" dependencies: - strip-bom "^2.0.0" + strip-bom "^3.0.0" define-properties@^1.1.2: version "1.1.2" @@ -1780,15 +1774,21 @@ errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + dependencies: + is-arrayish "^0.2.1" + +error-ex@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: is-arrayish "^0.2.1" es-abstract@^1.5.1: - version "1.11.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" dependencies: es-to-primitive "^1.1.1" function-bind "^1.1.1" @@ -1828,8 +1828,8 @@ escodegen@1.8.x: source-map "~0.2.0" escodegen@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + version "1.10.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.10.0.tgz#f647395de22519fbd0d928ffcf1d17e0dec2603e" dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -1871,6 +1871,13 @@ eslint-scope@^3.7.1: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" @@ -1977,10 +1984,10 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" exec-sh@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" + version "0.2.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" dependencies: - merge "^1.1.3" + merge "^1.2.0" execa@^0.7.0: version "0.7.0" @@ -2049,16 +2056,16 @@ expect@^22.4.3: jest-message-util "^22.4.3" jest-regex-util "^22.4.3" -expect@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-23.0.1.tgz#99131f2fd9115595f8cc3697401e7f0734d45fef" +expect@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-23.3.0.tgz#ecb051adcbdc40ac4db576c16067f12fdb13cc61" dependencies: ansi-styles "^3.2.0" - jest-diff "^23.0.1" + jest-diff "^23.2.0" jest-get-type "^22.1.0" - jest-matcher-utils "^23.0.1" - jest-message-util "^23.0.0" - jest-regex-util "^23.0.0" + jest-matcher-utils "^23.2.0" + jest-message-util "^23.3.0" + jest-regex-util "^23.3.0" express@~4.13.1: version "4.13.4" @@ -2383,7 +2390,7 @@ fsevents@^1.2.3: nan "^2.9.2" node-pre-gyp "^0.10.0" -function-bind@^1.0.2, function-bind@^1.1.1: +function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2603,10 +2610,10 @@ has-values@^1.0.0: kind-of "^4.0.0" has@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" dependencies: - function-bind "^1.0.2" + function-bind "^1.1.1" hash-base@^3.0.0: version "3.0.4" @@ -2631,15 +2638,6 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" -hawk@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - sntp "2.x.x" - hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -2664,8 +2662,8 @@ home-or-tmp@^2.0.0: os-tmpdir "^1.0.1" hosted-git-info@^2.1.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" html-comment-regex@^1.1.0: version "1.1.1" @@ -2888,8 +2886,8 @@ is-builtin-module@^1.0.0: builtin-modules "^1.0.0" is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" is-ci@^1.0.10, is-ci@^1.1.0: version "1.1.0" @@ -3046,12 +3044,6 @@ is-observable@^0.2.0: dependencies: symbol-observable "^0.2.2" -is-odd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" - dependencies: - is-number "^4.0.0" - is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" @@ -3174,8 +3166,8 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" istanbul-api@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.2.tgz#b2cfe6d15ae6a28ee282e7a823b8e9faa235e6cf" + version "1.3.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954" dependencies: async "^2.1.4" compare-versions "^3.1.0" @@ -3185,7 +3177,7 @@ istanbul-api@^1.3.1: istanbul-lib-instrument "^1.10.1" istanbul-lib-report "^1.1.4" istanbul-lib-source-maps "^1.2.4" - istanbul-reports "^1.4.0" + istanbul-reports "^1.3.0" js-yaml "^3.7.0" mkdirp "^0.5.1" once "^1.4.0" @@ -3195,10 +3187,10 @@ istanbul-lib-coverage@^1.2.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" istanbul-lib-hook@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz#ae556fd5a41a6e8efa0b1002b1e416dfeaf9816c" + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805" dependencies: - append-transform "^0.4.0" + append-transform "^1.0.0" istanbul-lib-instrument@^1.10.1: version "1.10.1" @@ -3222,8 +3214,8 @@ istanbul-lib-report@^1.1.4: supports-color "^3.1.2" istanbul-lib-source-maps@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7" + version "1.2.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1" dependencies: debug "^3.1.0" istanbul-lib-coverage "^1.2.0" @@ -3231,9 +3223,9 @@ istanbul-lib-source-maps@^1.2.4: rimraf "^2.6.1" source-map "^0.5.3" -istanbul-reports@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.4.0.tgz#3d7b44b912ecbe7652a603662b962120739646a1" +istanbul-reports@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554" dependencies: handlebars "^4.0.3" @@ -3277,15 +3269,15 @@ jade@^1.11.0: void-elements "~2.0.1" with "~4.0.0" -jest-changed-files@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.0.1.tgz#f79572d0720844ea5df84c2a448e862c2254f60c" +jest-changed-files@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.2.0.tgz#a145a6e4b66d0129fc7c99cee134dc937a643d9c" dependencies: throat "^4.0.0" -jest-cli@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.0.1.tgz#351a5ba51cf28ecf20336d97a30b970d1f530a56" +jest-cli@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.3.0.tgz#307e9be7733443b789a8279d694054d051a9e5e2" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -3298,22 +3290,24 @@ jest-cli@^23.0.1: istanbul-lib-coverage "^1.2.0" istanbul-lib-instrument "^1.10.1" istanbul-lib-source-maps "^1.2.4" - jest-changed-files "^23.0.1" - jest-config "^23.0.1" - jest-environment-jsdom "^23.0.1" + jest-changed-files "^23.2.0" + jest-config "^23.3.0" + jest-environment-jsdom "^23.3.0" jest-get-type "^22.1.0" - jest-haste-map "^23.0.1" - jest-message-util "^23.0.0" - jest-regex-util "^23.0.0" - jest-resolve-dependencies "^23.0.1" - jest-runner "^23.0.1" - jest-runtime "^23.0.1" - jest-snapshot "^23.0.1" - jest-util "^23.0.1" - jest-validate "^23.0.1" - jest-worker "^23.0.1" - micromatch "^2.3.11" + jest-haste-map "^23.2.0" + jest-message-util "^23.3.0" + jest-regex-util "^23.3.0" + jest-resolve-dependencies "^23.3.0" + jest-runner "^23.3.0" + jest-runtime "^23.3.0" + jest-snapshot "^23.3.0" + jest-util "^23.3.0" + jest-validate "^23.3.0" + jest-watcher "^23.2.0" + jest-worker "^23.2.0" + micromatch "^3.1.10" node-notifier "^5.2.1" + prompts "^0.1.9" realpath-native "^1.0.0" rimraf "^2.5.4" slash "^1.0.0" @@ -3338,23 +3332,23 @@ jest-config@^22.4.3: jest-validate "^22.4.3" pretty-format "^22.4.3" -jest-config@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.0.1.tgz#6798bff1247c7a390b1327193305001582fc58fa" +jest-config@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.3.0.tgz#bb4d53b70f9500fafddf718d226abb53b13b8323" dependencies: babel-core "^6.0.0" - babel-jest "^23.0.1" + babel-jest "^23.2.0" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^23.0.1" - jest-environment-node "^23.0.1" + jest-environment-jsdom "^23.3.0" + jest-environment-node "^23.3.0" jest-get-type "^22.1.0" - jest-jasmine2 "^23.0.1" - jest-regex-util "^23.0.0" - jest-resolve "^23.0.1" - jest-util "^23.0.1" - jest-validate "^23.0.1" - pretty-format "^23.0.1" + jest-jasmine2 "^23.3.0" + jest-regex-util "^23.3.0" + jest-resolve "^23.2.0" + jest-util "^23.3.0" + jest-validate "^23.3.0" + pretty-format "^23.2.0" jest-diff@^22.4.3: version "22.4.3" @@ -3365,31 +3359,31 @@ jest-diff@^22.4.3: jest-get-type "^22.4.3" pretty-format "^22.4.3" -jest-diff@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.0.1.tgz#3d49137cee12c320a4b4d2b4a6fa6e82d491a16a" +jest-diff@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.2.0.tgz#9f2cf4b51e12c791550200abc16b47130af1062a" dependencies: chalk "^2.0.1" diff "^3.2.0" jest-get-type "^22.1.0" - pretty-format "^23.0.1" + pretty-format "^23.2.0" jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" -jest-docblock@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.0.1.tgz#deddd18333be5dc2415260a04ef3fce9276b5725" +jest-docblock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" dependencies: detect-newline "^2.1.0" -jest-each@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.0.1.tgz#a6e5dbf530afc6bf9d74792dde69d8db70f84706" +jest-each@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.2.0.tgz#a400f81c857083f50c4f53399b109f12023fb19d" dependencies: chalk "^2.0.1" - pretty-format "^23.0.1" + pretty-format "^23.2.0" jest-environment-jsdom@^22.4.3: version "22.4.3" @@ -3399,12 +3393,12 @@ jest-environment-jsdom@^22.4.3: jest-util "^22.4.3" jsdom "^11.5.1" -jest-environment-jsdom@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.0.1.tgz#da689eb9358dc16e5708abb208f4eb26a439575c" +jest-environment-jsdom@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.3.0.tgz#190457f91c9e615454c4186056065db6ed7a4e2a" dependencies: - jest-mock "^23.0.1" - jest-util "^23.0.1" + jest-mock "^23.2.0" + jest-util "^23.3.0" jsdom "^11.5.1" jest-environment-node@^22.4.3: @@ -3414,27 +3408,27 @@ jest-environment-node@^22.4.3: jest-mock "^22.4.3" jest-util "^22.4.3" -jest-environment-node@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.0.1.tgz#676b740e205f1f2be77241969e7812be824ee795" +jest-environment-node@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.3.0.tgz#1e8df21c847aa5d03b76573f0dc16fcde5034c32" dependencies: - jest-mock "^23.0.1" - jest-util "^23.0.1" + jest-mock "^23.2.0" + jest-util "^23.3.0" jest-get-type@^22.1.0, jest-get-type@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" -jest-haste-map@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.0.1.tgz#cd89052abfc8cba01f560bbec09d4f36aec25d4f" +jest-haste-map@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.2.0.tgz#d10cbac007c695948c8ef1821a2b2ed2d4f2d4d8" dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.11" - jest-docblock "^23.0.1" + jest-docblock "^23.2.0" jest-serializer "^23.0.1" - jest-worker "^23.0.1" - micromatch "^2.3.11" + jest-worker "^23.2.0" + micromatch "^3.1.10" sane "^2.0.0" jest-jasmine2@^22.4.3: @@ -3453,27 +3447,27 @@ jest-jasmine2@^22.4.3: jest-util "^22.4.3" source-map-support "^0.5.0" -jest-jasmine2@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.0.1.tgz#16d875356e6360872bba48426f7d31fdc1b0bcea" +jest-jasmine2@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.3.0.tgz#a8706baac23c8a130d5aa8ef5464a9d49096d1b5" dependencies: chalk "^2.0.1" co "^4.6.0" - expect "^23.0.1" + expect "^23.3.0" is-generator-fn "^1.0.0" - jest-diff "^23.0.1" - jest-each "^23.0.1" - jest-matcher-utils "^23.0.1" - jest-message-util "^23.0.0" - jest-snapshot "^23.0.1" - jest-util "^23.0.1" - pretty-format "^23.0.1" + jest-diff "^23.2.0" + jest-each "^23.2.0" + jest-matcher-utils "^23.2.0" + jest-message-util "^23.3.0" + jest-snapshot "^23.3.0" + jest-util "^23.3.0" + pretty-format "^23.2.0" -jest-leak-detector@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.0.1.tgz#9dba07505ac3495c39d3ec09ac1e564599e861a0" +jest-leak-detector@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.2.0.tgz#c289d961dc638f14357d4ef96e0431ecc1aa377d" dependencies: - pretty-format "^23.0.1" + pretty-format "^23.2.0" jest-matcher-utils@^22.4.3: version "22.4.3" @@ -3483,13 +3477,13 @@ jest-matcher-utils@^22.4.3: jest-get-type "^22.4.3" pretty-format "^22.4.3" -jest-matcher-utils@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.0.1.tgz#0c6c0daedf9833c2a7f36236069efecb4c3f6e5f" +jest-matcher-utils@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.2.0.tgz#4d4981f23213e939e3cedf23dc34c747b5ae1913" dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" - pretty-format "^23.0.1" + pretty-format "^23.2.0" jest-message-util@^22.4.3: version "22.4.3" @@ -3501,13 +3495,13 @@ jest-message-util@^22.4.3: slash "^1.0.0" stack-utils "^1.0.1" -jest-message-util@^23.0.0: - version "23.0.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.0.0.tgz#073f3d76c701f7c718a4b9af1eb7f138792c4796" +jest-message-util@^23.0.0, jest-message-util@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.3.0.tgz#bc07b11cec6971fb5dd9de2dfb60ebc22150c160" dependencies: "@babel/code-frame" "^7.0.0-beta.35" chalk "^2.0.1" - micromatch "^2.3.11" + micromatch "^3.1.10" slash "^1.0.0" stack-utils "^1.0.1" @@ -3515,24 +3509,24 @@ jest-mock@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" -jest-mock@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.0.1.tgz#1569f477968c668fc728273a17c3767773b46357" +jest-mock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" jest-regex-util@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" -jest-regex-util@^23.0.0: - version "23.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.0.0.tgz#dd5c1fde0c46f4371314cf10f7a751a23f4e8f76" +jest-regex-util@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" -jest-resolve-dependencies@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.0.1.tgz#d01a10ddad9152c4cecdf5eac2b88571c4b6a64d" +jest-resolve-dependencies@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.3.0.tgz#8444d3b0b1288b80864d8801ff50b44a4d695d1d" dependencies: - jest-regex-util "^23.0.0" - jest-snapshot "^23.0.1" + jest-regex-util "^23.3.0" + jest-snapshot "^23.3.0" jest-resolve@^22.4.3: version "22.4.3" @@ -3541,35 +3535,35 @@ jest-resolve@^22.4.3: browser-resolve "^1.11.2" chalk "^2.0.1" -jest-resolve@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.0.1.tgz#3f8403462b10a34c2df1d47aab5574c4935bcd24" +jest-resolve@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.2.0.tgz#a0790ad5a3b99002ab4dbfcbf8d9e2d6a69b3d99" dependencies: - browser-resolve "^1.11.2" + browser-resolve "^1.11.3" chalk "^2.0.1" realpath-native "^1.0.0" -jest-runner@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.0.1.tgz#b176ae3ecf9e194aa4b84a7fcf70d1b8db231aa7" +jest-runner@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.3.0.tgz#04c7e458a617501a4875db0d7ffbe0e3cbd43bfb" dependencies: exit "^0.1.2" graceful-fs "^4.1.11" - jest-config "^23.0.1" - jest-docblock "^23.0.1" - jest-haste-map "^23.0.1" - jest-jasmine2 "^23.0.1" - jest-leak-detector "^23.0.1" - jest-message-util "^23.0.0" - jest-runtime "^23.0.1" - jest-util "^23.0.1" - jest-worker "^23.0.1" + jest-config "^23.3.0" + jest-docblock "^23.2.0" + jest-haste-map "^23.2.0" + jest-jasmine2 "^23.3.0" + jest-leak-detector "^23.2.0" + jest-message-util "^23.3.0" + jest-runtime "^23.3.0" + jest-util "^23.3.0" + jest-worker "^23.2.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.0.1.tgz#b1d765fb03fb6d4043805af270676a693f504d57" +jest-runtime@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.3.0.tgz#4865aab4ceff82f9cec6335fd7ae1422cc1de7df" dependencies: babel-core "^6.0.0" babel-plugin-istanbul "^4.1.6" @@ -3578,15 +3572,15 @@ jest-runtime@^23.0.1: exit "^0.1.2" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.1.11" - jest-config "^23.0.1" - jest-haste-map "^23.0.1" - jest-message-util "^23.0.0" - jest-regex-util "^23.0.0" - jest-resolve "^23.0.1" - jest-snapshot "^23.0.1" - jest-util "^23.0.1" - jest-validate "^23.0.1" - micromatch "^2.3.11" + jest-config "^23.3.0" + jest-haste-map "^23.2.0" + jest-message-util "^23.3.0" + jest-regex-util "^23.3.0" + jest-resolve "^23.2.0" + jest-snapshot "^23.3.0" + jest-util "^23.3.0" + jest-validate "^23.3.0" + micromatch "^3.1.10" realpath-native "^1.0.0" slash "^1.0.0" strip-bom "3.0.0" @@ -3615,16 +3609,21 @@ jest-snapshot@^22.4.3: natural-compare "^1.4.0" pretty-format "^22.4.3" -jest-snapshot@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.0.1.tgz#6674fa19b9eb69a99cabecd415bddc42d6af3e7e" +jest-snapshot@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.3.0.tgz#fc4e9f81e45432d10507e27f50bce60f44d81424" dependencies: + babel-traverse "^6.0.0" + babel-types "^6.0.0" chalk "^2.0.1" - jest-diff "^23.0.1" - jest-matcher-utils "^23.0.1" + jest-diff "^23.2.0" + jest-matcher-utils "^23.2.0" + jest-message-util "^23.3.0" + jest-resolve "^23.2.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^23.0.1" + pretty-format "^23.2.0" + semver "^5.5.0" jest-util@^22.4.3: version "22.4.3" @@ -3638,7 +3637,7 @@ jest-util@^22.4.3: mkdirp "^0.5.1" source-map "^0.6.0" -jest-util@^23.0.0, jest-util@^23.0.1: +jest-util@^23.0.0: version "23.0.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.0.1.tgz#68ea5bd7edb177d3059f9797259f8e0dacce2f99" dependencies: @@ -3650,6 +3649,19 @@ jest-util@^23.0.0, jest-util@^23.0.1: mkdirp "^0.5.1" source-map "^0.6.0" +jest-util@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.3.0.tgz#79f35bb0c30100ef611d963ee6b88f8ed873a81d" + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + jest-message-util "^23.3.0" + mkdirp "^0.5.1" + slash "^1.0.0" + source-map "^0.6.0" + jest-validate@^22.4.0, jest-validate@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.3.tgz#0780954a5a7daaeec8d3c10834b9280865976b30" @@ -3660,27 +3672,35 @@ jest-validate@^22.4.0, jest-validate@^22.4.3: leven "^2.1.0" pretty-format "^22.4.3" -jest-validate@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.0.1.tgz#cd9f01a89d26bb885f12a8667715e9c865a5754f" +jest-validate@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.3.0.tgz#d49bea6aad98c30acd2cbb542434798a0cc13f76" dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" leven "^2.1.0" - pretty-format "^23.0.1" + pretty-format "^23.2.0" -jest-worker@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.0.1.tgz#9e649dd963ff4046026f91c4017f039a6aa4a7bc" +jest-watcher@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.2.0.tgz#678e852896e919e9d9a0eb4b8baf1ae279620ea9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + string-length "^2.0.0" + +jest-worker@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" dependencies: merge-stream "^1.0.1" -jest@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-23.0.1.tgz#0d083290ee4112cecfb780df6ff81332ed373201" +jest@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-23.3.0.tgz#1355cd792f38cf20fba4da02dddb7ca14d9484b5" dependencies: import-local "^1.0.0" - jest-cli "^23.0.1" + jest-cli "^23.3.0" joi@^12.x: version "12.0.0" @@ -3709,13 +3729,20 @@ js-yaml@3.6.1: argparse "^1.0.7" esprima "^2.6.0" -js-yaml@3.x, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@3.x, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" dependencies: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.7.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + js-yaml@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" @@ -3728,21 +3755,21 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jsdom@^11.5.1: - version "11.10.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.10.0.tgz#a42cd54e88895dc765f03f15b807a474962ac3b5" + version "11.11.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.11.0.tgz#df486efad41aee96c59ad7a190e2449c7eb1110e" dependencies: abab "^1.0.4" acorn "^5.3.0" acorn-globals "^4.1.0" array-equal "^1.0.0" cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.2.37 < 0.3.0" + cssstyle ">= 0.3.1 < 0.4.0" data-urls "^1.0.0" domexception "^1.0.0" escodegen "^1.9.0" html-encoding-sniffer "^1.0.2" left-pad "^1.2.0" - nwmatcher "^1.4.3" + nwsapi "^2.0.0" parse5 "4.0.0" pn "^1.1.0" request "^2.83.0" @@ -3754,7 +3781,7 @@ jsdom@^11.5.1: webidl-conversions "^4.0.2" whatwg-encoding "^1.0.3" whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.0" + whatwg-url "^6.4.1" ws "^4.0.0" xml-name-validator "^3.0.0" @@ -4044,7 +4071,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -4172,7 +4199,7 @@ merge-stream@^1.0.1: dependencies: readable-stream "^2.0.1" -merge@^1.1.3: +merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" @@ -4180,7 +4207,7 @@ methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -micromatch@^2.3.11: +micromatch@^2.3.11, micromatch@^3.1.10: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -4271,11 +4298,11 @@ 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.3.1" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.1.tgz#4e872b959131a672837ab3cb554962bc84b1537d" +minipass@^2.2.1, minipass@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" dependencies: - safe-buffer "^5.1.1" + safe-buffer "^5.1.2" yallist "^3.0.0" minizlib@^1.1.0: @@ -4340,15 +4367,14 @@ nan@^2.9.2: resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" nanomatch@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" define-property "^2.0.2" extend-shallow "^3.0.2" fragment-cache "^0.2.1" - is-odd "^2.0.0" is-windows "^1.0.2" kind-of "^6.0.2" object.pick "^1.3.0" @@ -4360,7 +4386,7 @@ 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: +needle@^2.2.0, needle@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" dependencies: @@ -4425,16 +4451,16 @@ node-notifier@^5.2.1: which "^1.3.0" node-pre-gyp@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" - needle "^2.2.0" + needle "^2.2.1" nopt "^4.0.1" npm-packlist "^1.1.6" npmlog "^4.0.2" - rc "^1.1.7" + rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" tar "^4" @@ -4543,9 +4569,9 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -nwmatcher@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" +nwsapi@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.4.tgz#dc79040a5f77b97716dc79565fc7fc3ef7d50570" oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" @@ -4564,8 +4590,8 @@ object-copy@^0.1.0: kind-of "^3.0.3" object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + version "1.0.12" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" object-visit@^1.0.0: version "1.0.1" @@ -5140,9 +5166,9 @@ pretty-format@^22.4.3: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.0.1.tgz#d61d065268e4c759083bccbca27a01ad7c7601f4" +pretty-format@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.2.0.tgz#3b0aaa63c018a53583373c1cb3a5d96cc5e83017" dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" @@ -5185,6 +5211,13 @@ promise@~2.0: dependencies: is-promise "~1" +prompts@^0.1.9: + version "0.1.11" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.11.tgz#fdfac72f61d2887f4eaf2e65e748a9d9ef87206f" + dependencies: + clorox "^1.0.3" + sisteransi "^0.1.1" + prop-types@^15.5.10: version "15.6.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" @@ -5208,6 +5241,10 @@ pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +psl@^1.1.24: + version "1.1.28" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.28.tgz#4fb6ceb08a1e2214d4fd4de0ca22dae13740bc7b" + public-encrypt@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" @@ -5338,7 +5375,7 @@ punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -punycode@2.x.x, punycode@^2.1.0: +punycode@2.x.x: version "2.1.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" @@ -5346,6 +5383,10 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + pupa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pupa/-/pupa-1.0.0.tgz#9a9568a5af7e657b8462a6e9d5328743560ceff6" @@ -5418,11 +5459,11 @@ raw-loader@~0.5.0, raw-loader@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" -rc@^1.1.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.7.tgz#8a10ca30d588d00464360372b890d06dacd02297" +rc@^1.1.7, rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" dependencies: - deep-extend "^0.5.1" + deep-extend "^0.6.0" ini "~1.3.0" minimist "^1.2.0" strip-json-comments "~2.0.1" @@ -5491,8 +5532,8 @@ readdirp@^2.0.0: set-immediate-shim "^1.0.1" realpath-native@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0" + version "1.0.1" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.1.tgz#07f40a0cce8f8261e2e8b7ebebf5c95965d7b633" dependencies: util.promisify "^1.0.0" @@ -5647,8 +5688,8 @@ request@2.81.0: uuid "^3.0.0" request@^2.83.0: - version "2.86.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.86.0.tgz#2b9497f449b0a32654c081a5cf426bbfb5bf5b69" + version "2.87.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" dependencies: aws-sign2 "~0.7.0" aws4 "^1.6.0" @@ -5658,7 +5699,6 @@ request@^2.83.0: forever-agent "~0.6.1" form-data "~2.3.1" har-validator "~5.0.3" - hawk "~6.0.2" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -5802,7 +5842,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -5848,7 +5888,7 @@ semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" @@ -5959,6 +5999,10 @@ simple-git@^1.65.0: dependencies: debug "^3.1.0" +sisteransi@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -6010,12 +6054,6 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -sntp@2.x.x: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" - dependencies: - hoek "4.x.x" - sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -6112,13 +6150,14 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" sshpk@^1.7.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" + version "1.14.2" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" dashdash "^1.12.0" getpass "^0.1.1" + safer-buffer "^2.0.2" optionalDependencies: bcrypt-pbkdf "^1.0.0" ecc-jsbn "~0.1.1" @@ -6207,7 +6246,7 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" dependencies: @@ -6215,7 +6254,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: @@ -6339,12 +6378,12 @@ tapable@^1.0.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" tar@^4: - version "4.4.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.2.tgz#60685211ba46b38847b1ae7ee1a24d744a2cd462" + version "4.4.4" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" dependencies: chownr "^1.0.1" fs-minipass "^1.2.5" - minipass "^2.2.4" + minipass "^2.3.3" minizlib "^1.1.0" mkdirp "^0.5.0" safe-buffer "^5.1.2" @@ -6439,7 +6478,14 @@ topo@2.x.x: dependencies: hoek "4.x.x" -tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" dependencies: @@ -6502,9 +6548,9 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript@^3.0.0-dev.20180622: - version "3.0.0-dev.20180622" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.0-dev.20180622.tgz#16cb2d9cd90cda892810439f75b0b92762b8e745" +typescript@^3.0.0-rc: + version "3.0.0-rc" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.0-rc.tgz#13553808426d393d3f92c054f4fa6f24589549c1" ua-parser-js@^0.7.9: version "0.7.18" @@ -6652,10 +6698,14 @@ utils-merge@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" -uuid@^3.0.0, uuid@^3.1.0: +uuid@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" +uuid@^3.1.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + val-loader@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/val-loader/-/val-loader-1.1.0.tgz#ed91537424d62a4ded98e846ccf07367756bf506" @@ -6767,9 +6817,9 @@ whatwg-mimetype@^2.0.0, whatwg-mimetype@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz#f0f21d76cbba72362eb609dbed2a30cd17fcc7d4" -whatwg-url@^6.4.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.1.tgz#fdb94b440fd4ad836202c16e9737d511f012fd67" +whatwg-url@^6.4.0, whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" @@ -6783,17 +6833,23 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.1.1, which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0: +which@^1.1.1, which@^1.2.10: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: isexe "^2.0.0" +which@^1.2.12, which@^1.2.9, which@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" dependencies: - string-width "^1.0.2" + string-width "^1.0.2 || 2" window-size@0.1.0: version "0.1.0"