diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 25949d4d188..ebd98cfae21 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,6 +1,5 @@ name: Test -# cspell:word Ignus # cspell:word eslintcache on: @@ -90,7 +89,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - node-version: [10.x, 19.x] + node-version: [10.x, 20.x] part: [a, b] include: - os: ubuntu-latest @@ -105,6 +104,15 @@ jobs: - os: ubuntu-latest node-version: 12.x part: a + # Test with main branches of webpack dependencies + - os: ubuntu-latest + node-version: 16.x + part: a + use_main_branches: 1 + - os: ubuntu-latest + node-version: 16.x + part: b + use_main_branches: 1 runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 @@ -118,6 +126,10 @@ jobs: yarn upgrade jest@^27.5.0 jest-circus@^27.5.0 jest-cli@^27.5.0 jest-diff@^27.5.0 jest-environment-node@^27.5.0 jest-junit@^13.0.0 @types/jest@^27.4.0 pretty-format@^27.0.2 --ignore-engines yarn --frozen-lockfile --ignore-engines if: matrix.node-version == '10.x' || matrix.node-version == '12.x' || matrix.node-version == '14.x' + # Install main version of our deps + - run: yarn upgrade enhanced-resolve@webpack/enhanced-resolve#main loader-runner@webpack/loader-runner#main webpack-sources@webpack/webpack-sources#main watchpack@webpack/watchpack#main tapable@webpack/tapable#master + if: matrix.use_main_branches == '1' + # Install dependencies for LTS node versions - run: yarn --frozen-lockfile if: matrix.node-version != '10.x' && matrix.node-version != '12.x' && matrix.node-version != '14.x' - run: yarn link --frozen-lockfile || true diff --git a/declarations/WebpackOptions.d.ts b/declarations/WebpackOptions.d.ts index 9b5ffeaad46..dbe7c712250 100644 --- a/declarations/WebpackOptions.d.ts +++ b/declarations/WebpackOptions.d.ts @@ -2096,6 +2096,10 @@ export interface Output { * The filename of the Hot Update Main File. It is inside the 'output.path' directory. */ hotUpdateMainFilename?: HotUpdateMainFilename; + /** + * Ignore warnings in the browser. + */ + ignoreBrowserWarnings?: boolean; /** * Wrap javascript code into IIFE's to avoid leaking into global scope. */ @@ -3305,6 +3309,10 @@ export interface OutputNormalized { * The filename of the Hot Update Main File. It is inside the 'output.path' directory. */ hotUpdateMainFilename?: HotUpdateMainFilename; + /** + * Ignore warnings in the browser. + */ + ignoreBrowserWarnings?: boolean; /** * Wrap javascript code into IIFE's to avoid leaking into global scope. */ diff --git a/examples/module-federation/README.md b/examples/module-federation/README.md index d61a28e4466..a7e8ed18855 100644 --- a/examples/module-federation/README.md +++ b/examples/module-federation/README.md @@ -679,7 +679,11 @@ module.exports = new Promise((resolve, reject) => { /******/ if(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {}; /******/ // runs all init snippets from all modules reachable /******/ var scope = __webpack_require__.S[name]; -/******/ var warn = (msg) => (typeof console !== "undefined" && console.warn && console.warn(msg)); +/******/ var warn = (msg) => { +/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => { +/******/ +/******/ })() +/******/ }; /******/ var uniqueName = "module-federation-aaa"; /******/ var register = (name, version, factory, eager) => { /******/ var versions = scope[name] = scope[name] || {}; @@ -789,8 +793,13 @@ module.exports = new Promise((resolve, reject) => { /******/ if(entry) return get(entry); /******/ throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion)); /******/ }; +/******/ var warn = (msg) => { +/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => { +/******/ +/******/ })() +/******/ }; /******/ var warnInvalidVersion = (scope, scopeName, key, requiredVersion) => { -/******/ typeof console !== "undefined" && console.warn && console.warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion)); +/******/ warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion)); /******/ }; /******/ var get = (entry) => { /******/ entry.loaded = 1; @@ -1208,7 +1217,11 @@ __webpack_require__.d(exports, { /******/ if(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {}; /******/ // runs all init snippets from all modules reachable /******/ var scope = __webpack_require__.S[name]; -/******/ var warn = (msg) => (typeof console !== "undefined" && console.warn && console.warn(msg)); +/******/ var warn = (msg) => { +/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => { +/******/ +/******/ })() +/******/ }; /******/ var uniqueName = "module-federation-bbb"; /******/ var register = (name, version, factory, eager) => { /******/ var versions = scope[name] = scope[name] || {}; @@ -1289,7 +1302,7 @@ __webpack_require__.d(exports, { /******/ }; /******/ var getSingletonVersion = (scope, scopeName, key, requiredVersion) => { /******/ var version = findSingletonVersionKey(scope, key); -/******/ if (!satisfy(requiredVersion, version)) typeof console !== "undefined" && console.warn && console.warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion)); +/******/ if (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion)); /******/ return get(scope[key][version]); /******/ }; /******/ var getStrictSingletonVersion = (scope, scopeName, key, requiredVersion) => { @@ -1317,8 +1330,13 @@ __webpack_require__.d(exports, { /******/ if(entry) return get(entry); /******/ throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion)); /******/ }; +/******/ var warn = (msg) => { +/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => { +/******/ +/******/ })() +/******/ }; /******/ var warnInvalidVersion = (scope, scopeName, key, requiredVersion) => { -/******/ typeof console !== "undefined" && console.warn && console.warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion)); +/******/ warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion)); /******/ }; /******/ var get = (entry) => { /******/ entry.loaded = 1; @@ -1754,7 +1772,11 @@ __webpack_require__.d(exports, { /******/ if(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {}; /******/ // runs all init snippets from all modules reachable /******/ var scope = __webpack_require__.S[name]; -/******/ var warn = (msg) => (typeof console !== "undefined" && console.warn && console.warn(msg)); +/******/ var warn = (msg) => { +/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => { +/******/ +/******/ })() +/******/ }; /******/ var uniqueName = "module-federation-ccc"; /******/ var register = (name, version, factory, eager) => { /******/ var versions = scope[name] = scope[name] || {}; @@ -1835,7 +1857,7 @@ __webpack_require__.d(exports, { /******/ }; /******/ var getSingletonVersion = (scope, scopeName, key, requiredVersion) => { /******/ var version = findSingletonVersionKey(scope, key); -/******/ if (!satisfy(requiredVersion, version)) typeof console !== "undefined" && console.warn && console.warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion)); +/******/ if (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion)); /******/ return get(scope[key][version]); /******/ }; /******/ var getStrictSingletonVersion = (scope, scopeName, key, requiredVersion) => { @@ -1863,8 +1885,13 @@ __webpack_require__.d(exports, { /******/ if(entry) return get(entry); /******/ throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion)); /******/ }; +/******/ var warn = (msg) => { +/******/ typeof console !== "undefined" && console.warn ? console.warn(msg) : (() => { +/******/ +/******/ })() +/******/ }; /******/ var warnInvalidVersion = (scope, scopeName, key, requiredVersion) => { -/******/ typeof console !== "undefined" && console.warn && console.warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion)); +/******/ warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion)); /******/ }; /******/ var get = (entry) => { /******/ entry.loaded = 1; diff --git a/lib/AsyncDependenciesBlock.js b/lib/AsyncDependenciesBlock.js index 5fddec38963..f397a56d99f 100644 --- a/lib/AsyncDependenciesBlock.js +++ b/lib/AsyncDependenciesBlock.js @@ -15,6 +15,8 @@ const makeSerializable = require("./util/makeSerializable"); /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */ /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */ /** @typedef {import("./Module")} Module */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("./util/Hash")} Hash */ class AsyncDependenciesBlock extends DependenciesBlock { @@ -71,6 +73,9 @@ class AsyncDependenciesBlock extends DependenciesBlock { super.updateHash(hash, context); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.groupOptions); @@ -79,6 +84,9 @@ class AsyncDependenciesBlock extends DependenciesBlock { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.groupOptions = read(); diff --git a/lib/CodeGenerationResults.js b/lib/CodeGenerationResults.js index bea20456019..decbd667677 100644 --- a/lib/CodeGenerationResults.js +++ b/lib/CodeGenerationResults.js @@ -5,7 +5,7 @@ "use strict"; -const { provide } = require("./util/MapHelpers"); +const { getOrInsert } = require("./util/MapHelpers"); const { first } = require("./util/SetHelpers"); const createHash = require("./util/createHash"); const { runtimeToString, RuntimeSpecMap } = require("./util/runtime"); @@ -147,7 +147,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza * @returns {void} */ add(module, runtime, result) { - const map = provide(this.map, module, () => new RuntimeSpecMap()); + const map = getOrInsert(this.map, module, () => new RuntimeSpecMap()); map.set(runtime, result); } } diff --git a/lib/Compilation.js b/lib/Compilation.js index 866b2608e48..aef0adc43d1 100644 --- a/lib/Compilation.js +++ b/lib/Compilation.js @@ -61,7 +61,7 @@ const StatsPrinter = require("./stats/StatsPrinter"); const { equals: arrayEquals } = require("./util/ArrayHelpers"); const AsyncQueue = require("./util/AsyncQueue"); const LazySet = require("./util/LazySet"); -const { provide } = require("./util/MapHelpers"); +const { getOrInsert } = require("./util/MapHelpers"); const WeakTupleMap = require("./util/WeakTupleMap"); const { cachedCleverMerge } = require("./util/cleverMerge"); const { @@ -2618,7 +2618,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si const logByLoadersSummary = (category, getDuration, getParallelism) => { const map = new Map(); for (const [module, profile] of modulesWithProfiles) { - const list = provide( + const list = getOrInsert( map, module.type + "!" + module.identifier().replace(/(!|^)[^!]*$/, ""), () => [] diff --git a/lib/ContextModule.js b/lib/ContextModule.js index 8f594e15e21..cfbe31e2b2c 100644 --- a/lib/ContextModule.js +++ b/lib/ContextModule.js @@ -43,6 +43,8 @@ const makeSerializable = require("./util/makeSerializable"); /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */ /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("./dependencies/ContextElementDependency")} ContextElementDependency */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @template T @typedef {import("./util/LazySet")} LazySet */ /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */ @@ -1151,6 +1153,9 @@ module.exports = webpackEmptyAsyncContext;`; return size; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this._identifier); @@ -1158,6 +1163,9 @@ module.exports = webpackEmptyAsyncContext;`; super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this._identifier = read(); diff --git a/lib/CssModule.js b/lib/CssModule.js new file mode 100644 index 00000000000..c2b0f00a32e --- /dev/null +++ b/lib/CssModule.js @@ -0,0 +1,137 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Alexander Krasnoyarov @alexander-akait +*/ + +"use strict"; + +const NormalModule = require("./NormalModule"); +const makeSerializable = require("./util/makeSerializable"); + +/** @typedef {import("./Module")} Module */ +/** @typedef {import("./NormalModule").NormalModuleCreateData} NormalModuleCreateData */ +/** @typedef {import("./RequestShortener")} RequestShortener */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + +/** @typedef {NormalModuleCreateData & { cssLayer: string|undefined|null, supports: string|undefined|null, media: string|undefined|null }} CSSModuleCreateData */ + +class CssModule extends NormalModule { + /** + * @param {CSSModuleCreateData} options options object + */ + constructor(options) { + super(options); + + // Avoid override `layer` for `Module` class, because it is a feature to run module in specific layer + this.cssLayer = options.cssLayer; + this.supports = options.supports; + this.media = options.media; + } + + /** + * @returns {string} a unique identifier of the module + */ + identifier() { + let identifier = super.identifier(); + + if (this.cssLayer) { + identifier += `|${this.cssLayer}`; + } + + if (this.supports) { + identifier += `|${this.supports}`; + } + + if (this.media) { + identifier += `|${this.media}`; + } + + return identifier; + } + + /** + * @param {RequestShortener} requestShortener the request shortener + * @returns {string} a user readable identifier of the module + */ + readableIdentifier(requestShortener) { + const readableIdentifier = super.readableIdentifier(requestShortener); + + return `css ${readableIdentifier}${ + this.cssLayer ? ` (layer ${this.cssLayer || ""})` : "" + }${this.supports ? ` (supports ${this.supports || ""})` : ""}${ + this.media ? ` (media ${this.media || ""})` : "" + }`; + } + + /** + * Assuming this module is in the cache. Update the (cached) module with + * the fresh module from the factory. Usually updates internal references + * and properties. + * @param {Module} module fresh module + * @returns {void} + */ + updateCacheModule(module) { + super.updateCacheModule(module); + const m = /** @type {CssModule} */ (module); + this.cssLayer = m.cssLayer; + this.supports = m.supports; + this.media = m.media; + } + + /** + * @param {ObjectSerializerContext} context context + */ + serialize(context) { + const { write } = context; + write(this.cssLayer); + write(this.supports); + write(this.media); + super.serialize(context); + } + + /** + * @param {ObjectDeserializerContext} context context + * @returns {CssModule} the deserialized object + */ + static deserialize(context) { + const obj = new CssModule({ + // will be deserialized by Module + layer: null, + type: "", + // will be filled by updateCacheModule + resource: "", + context: "", + request: null, + userRequest: null, + rawRequest: null, + loaders: null, + matchResource: null, + parser: null, + parserOptions: null, + generator: null, + generatorOptions: null, + resolveOptions: null, + cssLayer: null, + supports: null, + media: null + }); + obj.deserialize(context); + return obj; + } + + /** + * @param {ObjectDeserializerContext} context context + */ + deserialize(context) { + const { read } = context; + this.cssLayer = read(); + this.supports = read(); + this.media = read(); + super.deserialize(context); + } +} + +makeSerializable(CssModule, "webpack/lib/CssModule"); + +module.exports = CssModule; diff --git a/lib/DefinePlugin.js b/lib/DefinePlugin.js index 79de6c918ca..ad1d4f48bdb 100644 --- a/lib/DefinePlugin.js +++ b/lib/DefinePlugin.js @@ -26,6 +26,7 @@ const createHash = require("./util/createHash"); /** @typedef {import("./NormalModule")} NormalModule */ /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */ +/** @typedef {import("./logging/Logger").Logger} Logger */ /** @typedef {null|undefined|RegExp|Function|string|number|boolean|bigint|undefined} CodeValuePrimitive */ /** @typedef {RecursiveArrayOrRecord} CodeValue */ @@ -117,6 +118,7 @@ class RuntimeValue { * @param {Map>} valueCacheVersions valueCacheVersions * @param {string} key the defined key * @param {RuntimeTemplate} runtimeTemplate the runtime template + * @param {Logger} logger the logger object * @param {boolean|undefined|null=} asiSafe asi safe (undefined: unknown, null: unneeded) * @param {Set|undefined=} objKeys used keys * @returns {string} code converted to string that evaluates @@ -127,6 +129,7 @@ const stringifyObj = ( valueCacheVersions, key, runtimeTemplate, + logger, asiSafe, objKeys ) => { @@ -135,7 +138,15 @@ const stringifyObj = ( if (arr) { code = `[${obj .map(code => - toCode(code, parser, valueCacheVersions, key, runtimeTemplate, null) + toCode( + code, + parser, + valueCacheVersions, + key, + runtimeTemplate, + logger, + null + ) ) .join(",")}]`; } else { @@ -150,7 +161,15 @@ const stringifyObj = ( return ( JSON.stringify(key) + ":" + - toCode(code, parser, valueCacheVersions, key, runtimeTemplate, null) + toCode( + code, + parser, + valueCacheVersions, + key, + runtimeTemplate, + logger, + null + ) ); }) .join(",")}}`; @@ -175,6 +194,7 @@ const stringifyObj = ( * @param {Map>} valueCacheVersions valueCacheVersions * @param {string} key the defined key * @param {RuntimeTemplate} runtimeTemplate the runtime template + * @param {Logger} logger the logger object * @param {boolean|undefined|null=} asiSafe asi safe (undefined: unknown, null: unneeded) * @param {Set|undefined=} objKeys used keys * @returns {string} code converted to string that evaluates @@ -185,51 +205,62 @@ const toCode = ( valueCacheVersions, key, runtimeTemplate, + logger, asiSafe, objKeys ) => { - if (code === null) { - return "null"; - } - if (code === undefined) { - return "undefined"; - } - if (Object.is(code, -0)) { - return "-0"; - } - if (code instanceof RuntimeValue) { - return toCode( - code.exec(parser, valueCacheVersions, key), - parser, - valueCacheVersions, - key, - runtimeTemplate, - asiSafe - ); - } - if (code instanceof RegExp && code.toString) { - return code.toString(); - } - if (typeof code === "function" && code.toString) { - return "(" + code.toString() + ")"; - } - if (typeof code === "object") { - return stringifyObj( - code, - parser, - valueCacheVersions, - key, - runtimeTemplate, - asiSafe, - objKeys - ); - } - if (typeof code === "bigint") { - return runtimeTemplate.supportsBigIntLiteral() - ? `${code}n` - : `BigInt("${code}")`; - } - return code + ""; + const transformToCode = () => { + if (code === null) { + return "null"; + } + if (code === undefined) { + return "undefined"; + } + if (Object.is(code, -0)) { + return "-0"; + } + if (code instanceof RuntimeValue) { + return toCode( + code.exec(parser, valueCacheVersions, key), + parser, + valueCacheVersions, + key, + runtimeTemplate, + logger, + asiSafe + ); + } + if (code instanceof RegExp && code.toString) { + return code.toString(); + } + if (typeof code === "function" && code.toString) { + return "(" + code.toString() + ")"; + } + if (typeof code === "object") { + return stringifyObj( + code, + parser, + valueCacheVersions, + key, + runtimeTemplate, + logger, + asiSafe, + objKeys + ); + } + if (typeof code === "bigint") { + return runtimeTemplate.supportsBigIntLiteral() + ? `${code}n` + : `BigInt("${code}")`; + } + return code + ""; + }; + + const strCode = transformToCode(); + + logger.log(`Replaced "${key}" with "${strCode}"`); + + return strCode; }; const toCacheVersion = code => { @@ -300,6 +331,7 @@ class DefinePlugin { compiler.hooks.compilation.tap( PLUGIN_NAME, (compilation, { normalModuleFactory }) => { + const logger = compilation.getLogger("webpack.DefinePlugin"); compilation.dependencyTemplates.set( ConstDependency, new ConstDependency.Template() @@ -421,6 +453,7 @@ class DefinePlugin { compilation.valueCacheVersions, key, runtimeTemplate, + logger, null ) ); @@ -436,6 +469,7 @@ class DefinePlugin { compilation.valueCacheVersions, originalKey, runtimeTemplate, + logger, !parser.isAsiPosition(expr.range[0]), parser.destructuringAssignmentPropertiesFor(expr) ); @@ -470,6 +504,7 @@ class DefinePlugin { compilation.valueCacheVersions, originalKey, runtimeTemplate, + logger, null ); const typeofCode = isTypeof @@ -488,6 +523,7 @@ class DefinePlugin { compilation.valueCacheVersions, originalKey, runtimeTemplate, + logger, null ); const typeofCode = isTypeof @@ -534,6 +570,7 @@ class DefinePlugin { compilation.valueCacheVersions, key, runtimeTemplate, + logger, !parser.isAsiPosition(expr.range[0]), parser.destructuringAssignmentPropertiesFor(expr) ); diff --git a/lib/DelegatedModule.js b/lib/DelegatedModule.js index 7a0fcd2e980..b7dbe78c973 100644 --- a/lib/DelegatedModule.js +++ b/lib/DelegatedModule.js @@ -30,6 +30,8 @@ const makeSerializable = require("./util/makeSerializable"); /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("./WebpackError")} WebpackError */ /** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("./util/Hash")} Hash */ /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */ @@ -186,6 +188,9 @@ class DelegatedModule extends Module { super.updateHash(hash, context); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; // constructor diff --git a/lib/DependenciesBlock.js b/lib/DependenciesBlock.js index 5309a6172a9..7fb4f485de7 100644 --- a/lib/DependenciesBlock.js +++ b/lib/DependenciesBlock.js @@ -12,6 +12,8 @@ const makeSerializable = require("./util/makeSerializable"); /** @typedef {import("./ChunkGroup")} ChunkGroup */ /** @typedef {import("./Dependency")} Dependency */ /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("./util/Hash")} Hash */ /** @typedef {(d: Dependency) => boolean} DependencyFilterFunction */ @@ -88,11 +90,17 @@ class DependenciesBlock { } } + /** + * @param {ObjectSerializerContext} context context + */ serialize({ write }) { write(this.dependencies); write(this.blocks); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize({ read }) { this.dependencies = read(); this.blocks = read(); diff --git a/lib/Dependency.js b/lib/Dependency.js index a9ec0cd08f8..fa9400721a1 100644 --- a/lib/Dependency.js +++ b/lib/Dependency.js @@ -17,6 +17,8 @@ const memoize = require("./util/memoize"); /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */ /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("./WebpackError")} WebpackError */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("./util/Hash")} Hash */ /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */ @@ -292,6 +294,9 @@ class Dependency { return getIgnoredModule(); } + /** + * @param {ObjectSerializerContext} context context + */ serialize({ write }) { write(this.weak); write(this.optional); @@ -303,6 +308,9 @@ class Dependency { write(this._locN); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize({ read }) { this.weak = read(); this.optional = read(); diff --git a/lib/DllModule.js b/lib/DllModule.js index 5fe6c8971f0..5a8de32bebb 100644 --- a/lib/DllModule.js +++ b/lib/DllModule.js @@ -25,6 +25,8 @@ const makeSerializable = require("./util/makeSerializable"); /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */ /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("./WebpackError")} WebpackError */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("./util/Hash")} Hash */ /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */ @@ -122,11 +124,17 @@ class DllModule extends Module { super.updateHash(hash, context); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { context.write(this.name); super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { this.name = context.read(); super.deserialize(context); diff --git a/lib/ExportsInfo.js b/lib/ExportsInfo.js index be0756e58b3..88aff0431a4 100644 --- a/lib/ExportsInfo.js +++ b/lib/ExportsInfo.js @@ -752,6 +752,9 @@ class ExportsInfo { ); } + /** + * @param {{ otherProvided: any, otherCanMangleProvide: any, otherTerminalBinding: any, exports: any }} data data + */ restoreProvided({ otherProvided, otherCanMangleProvide, diff --git a/lib/ExternalModule.js b/lib/ExternalModule.js index b228289343f..b2bf8940949 100644 --- a/lib/ExternalModule.js +++ b/lib/ExternalModule.js @@ -39,6 +39,8 @@ const { register } = require("./util/serialization"); /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("./WebpackError")} WebpackError */ /** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("./util/Hash")} Hash */ /** @typedef {typeof import("./util/Hash")} HashConstructor */ /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */ @@ -733,6 +735,9 @@ class ExternalModule extends Module { super.updateHash(hash, context); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -743,6 +748,9 @@ class ExternalModule extends Module { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/FileSystemInfo.js b/lib/FileSystemInfo.js index 87221acfa25..fce076798c7 100644 --- a/lib/FileSystemInfo.js +++ b/lib/FileSystemInfo.js @@ -18,6 +18,8 @@ const processAsyncTree = require("./util/processAsyncTree"); /** @typedef {import("./WebpackError")} WebpackError */ /** @typedef {import("./logging/Logger").Logger} Logger */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {typeof import("./util/Hash")} Hash */ /** @typedef {import("./util/fs").IStats} IStats */ /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */ @@ -378,6 +380,9 @@ class Snapshot { this.children.add(child); } + /** + * @param {ObjectSerializerContext} context context + */ serialize({ write }) { write(this._flags); if (this.hasStartTime()) write(this.startTime); @@ -395,6 +400,9 @@ class Snapshot { if (this.hasChildren()) write(this.children); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize({ read }) { this._flags = read(); if (this.hasStartTime()) this.startTime = read(); diff --git a/lib/LoaderOptionsPlugin.js b/lib/LoaderOptionsPlugin.js index 45fb88662b4..dec3bcae0a6 100644 --- a/lib/LoaderOptionsPlugin.js +++ b/lib/LoaderOptionsPlugin.js @@ -11,6 +11,7 @@ const createSchemaValidation = require("./util/create-schema-validation"); /** @typedef {import("../declarations/plugins/LoaderOptionsPlugin").LoaderOptionsPluginOptions} LoaderOptionsPluginOptions */ /** @typedef {import("./Compiler")} Compiler */ +/** @typedef {import("./ModuleFilenameHelpers").MatchObject} MatchObject */ const validate = createSchemaValidation( require("../schemas/plugins/LoaderOptionsPlugin.check.js"), @@ -20,17 +21,26 @@ const validate = createSchemaValidation( baseDataPath: "options" } ); + class LoaderOptionsPlugin { /** - * @param {LoaderOptionsPluginOptions} options options object + * @param {LoaderOptionsPluginOptions & MatchObject} options options object */ constructor(options = {}) { validate(options); + // If no options are set then generate empty options object if (typeof options !== "object") options = {}; if (!options.test) { - options.test = { + // This is mocking a RegExp object which always returns true + // TODO: Figure out how to do `as unknown as RegExp` for this line + // in JSDoc equivalent + /** @type {any} */ + const defaultTrueMockRegExp = { test: () => true }; + + /** @type {RegExp} */ + options.test = defaultTrueMockRegExp; } this.options = options; } diff --git a/lib/Module.js b/lib/Module.js index aede5945566..e09276eb9bc 100644 --- a/lib/Module.js +++ b/lib/Module.js @@ -33,6 +33,8 @@ const makeSerializable = require("./util/makeSerializable"); /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */ /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("./WebpackError")} WebpackError */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("./util/Hash")} Hash */ /** @template T @typedef {import("./util/LazySet")} LazySet */ /** @template T @typedef {import("./util/SortableSet")} SortableSet */ @@ -976,6 +978,9 @@ class Module extends DependenciesBlock { buildDependencies ) {} + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.type); @@ -1002,6 +1007,9 @@ class Module extends DependenciesBlock { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.type = read(); diff --git a/lib/ModuleBuildError.js b/lib/ModuleBuildError.js index a91d7857939..a24cfda1b0d 100644 --- a/lib/ModuleBuildError.js +++ b/lib/ModuleBuildError.js @@ -9,6 +9,9 @@ const { cutOffLoaderExecution } = require("./ErrorHelpers"); const WebpackError = require("./WebpackError"); const makeSerializable = require("./util/makeSerializable"); +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + class ModuleBuildError extends WebpackError { /** * @param {string | Error&any} err error thrown @@ -55,6 +58,9 @@ class ModuleBuildError extends WebpackError { this.error = err; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -63,6 +69,9 @@ class ModuleBuildError extends WebpackError { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/ModuleError.js b/lib/ModuleError.js index d6a17cae481..6f2a5e00c68 100644 --- a/lib/ModuleError.js +++ b/lib/ModuleError.js @@ -9,6 +9,9 @@ const { cleanUp } = require("./ErrorHelpers"); const WebpackError = require("./WebpackError"); const makeSerializable = require("./util/makeSerializable"); +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + class ModuleError extends WebpackError { /** * @param {Error} err error thrown @@ -39,6 +42,9 @@ class ModuleError extends WebpackError { : undefined; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -47,6 +53,9 @@ class ModuleError extends WebpackError { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/ModuleFilenameHelpers.js b/lib/ModuleFilenameHelpers.js index c9efe915e2c..dd8314edf94 100644 --- a/lib/ModuleFilenameHelpers.js +++ b/lib/ModuleFilenameHelpers.js @@ -14,6 +14,9 @@ const memoize = require("./util/memoize"); /** @typedef {import("./RequestShortener")} RequestShortener */ /** @typedef {typeof import("./util/Hash")} Hash */ +/** @typedef {string | RegExp | string[] | RegExp[]} Matcher */ +/** @typedef {{test?: Matcher, include?: Matcher, exclude?: Matcher }} MatchObject */ + const ModuleFilenameHelpers = exports; // TODO webpack 6: consider removing these @@ -43,6 +46,12 @@ ModuleFilenameHelpers.REGEXP_HASH = /\[hash\]/gi; ModuleFilenameHelpers.NAMESPACE = "[namespace]"; ModuleFilenameHelpers.REGEXP_NAMESPACE = /\[namespace\]/gi; +/** + * Returns a function that returns the part of the string after the token + * @param {() => string} strFn the function to get the string + * @param {string} token the token to search for + * @returns {() => string} a function that returns the part of the string after the token + */ const getAfter = (strFn, token) => { return () => { const str = strFn(); @@ -51,6 +60,12 @@ const getAfter = (strFn, token) => { }; }; +/** + * Returns a function that returns the part of the string before the token + * @param {() => string} strFn the function to get the string + * @param {string} token the token to search for + * @returns {() => string} a function that returns the part of the string before the token + */ const getBefore = (strFn, token) => { return () => { const str = strFn(); @@ -59,6 +74,12 @@ const getBefore = (strFn, token) => { }; }; +/** + * Returns a function that returns a hash of the string + * @param {() => string} strFn the function to get the string + * @param {string | Hash} hashFunction the hash function to use + * @returns {() => string} a function that returns the hash of the string + */ const getHash = (strFn, hashFunction) => { return () => { const hash = createHash(hashFunction); @@ -68,13 +89,35 @@ const getHash = (strFn, hashFunction) => { }; }; +/** + * Returns a function that returns the string with the token replaced with the replacement + * @param {string|RegExp} test A regular expression string or Regular Expression object + * @returns {RegExp} A regular expression object + * @example + * ```js + * const test = asRegExp("test"); + * test.test("test"); // true + * + * const test2 = asRegExp(/test/); + * test2.test("test"); // true + * ``` + */ const asRegExp = test => { if (typeof test === "string") { + // Escape special characters in the string to prevent them from being interpreted as special characters in a regular expression. Do this by + // adding a backslash before each special character test = new RegExp("^" + test.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")); } return test; }; +/** + * @template T + * Returns a lazy object. The object is lazy in the sense that the properties are + * only evaluated when they are accessed. This is only obtained by setting a function as the value for each key. + * @param {Record T>} obj the object to covert to a lazy access object + * @returns {Object} the lazy access object + */ const lazyObject = obj => { const newObj = {}; for (const key of Object.keys(obj)) { @@ -95,7 +138,7 @@ const lazyObject = obj => { return newObj; }; -const REGEXP = /\[\\*([\w-]+)\\*\]/gi; +const SQUARE_BRACKET_TAG_REGEXP = /\[\\*([\w-]+)\\*\]/gi; /** * @@ -212,7 +255,7 @@ ModuleFilenameHelpers.createFilename = ( ModuleFilenameHelpers.REGEXP_LOADERS_RESOURCE, "[short-identifier]" ) - .replace(REGEXP, (match, content) => { + .replace(SQUARE_BRACKET_TAG_REGEXP, (match, content) => { if (content.length + 2 === match.length) { const replacement = replacements.get(content.toLowerCase()); if (replacement !== undefined) { @@ -225,9 +268,28 @@ ModuleFilenameHelpers.createFilename = ( }); }; +/** + * Replaces duplicate items in an array with new values generated by a callback function. + * The callback function is called with the duplicate item, the index of the duplicate item, and the number of times the item has been replaced. + * The callback function should return the new value for the duplicate item. + * + * @template T + * @param {T[]} array the array with duplicates to be replaced + * @param {(duplicateItem: T, duplicateItemIndex: number, numberOfTimesReplaced: number) => T} fn callback function to generate new values for the duplicate items + * @param {(firstElement:T, nextElement:T) => -1 | 0 | 1} [comparator] optional comparator function to sort the duplicate items + * @returns {T[]} the array with duplicates replaced + * + * @example + * ```js + * const array = ["a", "b", "c", "a", "b", "a"]; + * const result = ModuleFilenameHelpers.replaceDuplicates(array, (item, index, count) => `${item}-${count}`); + * // result: ["a-1", "b-1", "c", "a-2", "b-2", "a-3"] + * ``` + */ ModuleFilenameHelpers.replaceDuplicates = (array, fn, comparator) => { const countMap = Object.create(null); const posMap = Object.create(null); + array.forEach((item, idx) => { countMap[item] = countMap[item] || []; countMap[item].push(idx); @@ -248,16 +310,63 @@ ModuleFilenameHelpers.replaceDuplicates = (array, fn, comparator) => { }); }; +/** + * Tests if a string matches a RegExp or an array of RegExp. + * + * @param {string} str string to test + * @param {Matcher} test value which will be used to match against the string + * @returns {boolean} true, when the RegExp matches + * + * @example + * ```js + * ModuleFilenameHelpers.matchPart("foo.js", "foo"); // true + * ModuleFilenameHelpers.matchPart("foo.js", "foo.js"); // true + * ModuleFilenameHelpers.matchPart("foo.js", "foo."); // false + * ModuleFilenameHelpers.matchPart("foo.js", "foo*"); // false + * ModuleFilenameHelpers.matchPart("foo.js", "foo.*"); // true + * ModuleFilenameHelpers.matchPart("foo.js", /^foo/); // true + * ModuleFilenameHelpers.matchPart("foo.js", [/^foo/, "bar"]); // true + * ModuleFilenameHelpers.matchPart("foo.js", [/^foo/, "bar"]); // true + * ModuleFilenameHelpers.matchPart("foo.js", [/^foo/, /^bar/]); // true + * ModuleFilenameHelpers.matchPart("foo.js", [/^baz/, /^bar/]); // false + * ``` + */ ModuleFilenameHelpers.matchPart = (str, test) => { if (!test) return true; - test = asRegExp(test); + if (Array.isArray(test)) { return test.map(asRegExp).some(regExp => regExp.test(str)); } else { - return test.test(str); + return asRegExp(test).test(str); } }; +/** + * Tests if a string matches a match object. The match object can have the following properties: + * - `test`: a RegExp or an array of RegExp + * - `include`: a RegExp or an array of RegExp + * - `exclude`: a RegExp or an array of RegExp + * + * The `test` property is tested first, then `include` and then `exclude`. + * + * @param {MatchObject} obj a match object to test against the string + * @param {string} str string to test against the matching object + * @returns {boolean} true, when the object matches + * @example + * ```js + * ModuleFilenameHelpers.matchObject({ test: "foo.js" }, "foo.js"); // true + * ModuleFilenameHelpers.matchObject({ test: /^foo/ }, "foo.js"); // true + * ModuleFilenameHelpers.matchObject({ test: [/^foo/, "bar"] }, "foo.js"); // true + * ModuleFilenameHelpers.matchObject({ test: [/^foo/, "bar"] }, "baz.js"); // false + * ModuleFilenameHelpers.matchObject({ include: "foo.js" }, "foo.js"); // true + * ModuleFilenameHelpers.matchObject({ include: "foo.js" }, "bar.js"); // false + * ModuleFilenameHelpers.matchObject({ include: /^foo/ }, "foo.js"); // true + * ModuleFilenameHelpers.matchObject({ include: [/^foo/, "bar"] }, "foo.js"); // true + * ModuleFilenameHelpers.matchObject({ include: [/^foo/, "bar"] }, "baz.js"); // false + * ModuleFilenameHelpers.matchObject({ exclude: "foo.js" }, "foo.js"); // false + * ModuleFilenameHelpers.matchObject({ exclude: [/^foo/, "bar"] }, "foo.js"); // false + * ``` + */ ModuleFilenameHelpers.matchObject = (obj, str) => { if (obj.test) { if (!ModuleFilenameHelpers.matchPart(str, obj.test)) { diff --git a/lib/ModuleParseError.js b/lib/ModuleParseError.js index 2a54f1bef6f..5ffbeb85137 100644 --- a/lib/ModuleParseError.js +++ b/lib/ModuleParseError.js @@ -8,6 +8,9 @@ const WebpackError = require("./WebpackError"); const makeSerializable = require("./util/makeSerializable"); +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + const WASM_HEADER = Buffer.from([0x00, 0x61, 0x73, 0x6d]); class ModuleParseError extends WebpackError { @@ -87,6 +90,9 @@ class ModuleParseError extends WebpackError { this.error = err; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -95,6 +101,9 @@ class ModuleParseError extends WebpackError { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/ModuleTypeConstants.js b/lib/ModuleTypeConstants.js index 09dcff18620..397f04dd003 100644 --- a/lib/ModuleTypeConstants.js +++ b/lib/ModuleTypeConstants.js @@ -42,9 +42,30 @@ const WEBASSEMBLY_MODULE_TYPE_ASYNC = "webassembly/async"; */ const WEBASSEMBLY_MODULE_TYPE_SYNC = "webassembly/sync"; +/** + * @type {Readonly<"css">} + * This is the module type used for CSS files. + */ +const CSS_MODULE_TYPE = "css"; + +/** + * @type {Readonly<"css/global">} + * This is the module type used for CSS modules files where you need to use `:local` in selector list to hash classes. + */ +const CSS_MODULE_TYPE_GLOBAL = "css/global"; + +/** + * @type {Readonly<"css/module">} + * This is the module type used for CSS modules files, by default all classes are hashed. + */ +const CSS_MODULE_TYPE_MODULE = "css/module"; + exports.JAVASCRIPT_MODULE_TYPE_AUTO = JAVASCRIPT_MODULE_TYPE_AUTO; exports.JAVASCRIPT_MODULE_TYPE_DYNAMIC = JAVASCRIPT_MODULE_TYPE_DYNAMIC; exports.JAVASCRIPT_MODULE_TYPE_ESM = JAVASCRIPT_MODULE_TYPE_ESM; exports.JSON_MODULE_TYPE = JSON_MODULE_TYPE; exports.WEBASSEMBLY_MODULE_TYPE_ASYNC = WEBASSEMBLY_MODULE_TYPE_ASYNC; exports.WEBASSEMBLY_MODULE_TYPE_SYNC = WEBASSEMBLY_MODULE_TYPE_SYNC; +exports.CSS_MODULE_TYPE = CSS_MODULE_TYPE; +exports.CSS_MODULE_TYPE_GLOBAL = CSS_MODULE_TYPE_GLOBAL; +exports.CSS_MODULE_TYPE_MODULE = CSS_MODULE_TYPE_MODULE; diff --git a/lib/ModuleWarning.js b/lib/ModuleWarning.js index a67c0e06f44..703035287f5 100644 --- a/lib/ModuleWarning.js +++ b/lib/ModuleWarning.js @@ -9,6 +9,9 @@ const { cleanUp } = require("./ErrorHelpers"); const WebpackError = require("./WebpackError"); const makeSerializable = require("./util/makeSerializable"); +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + class ModuleWarning extends WebpackError { /** * @param {Error} warning error thrown @@ -39,6 +42,9 @@ class ModuleWarning extends WebpackError { : undefined; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -47,6 +53,9 @@ class ModuleWarning extends WebpackError { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/NormalModule.js b/lib/NormalModule.js index c8495da169c..610d5d9e967 100644 --- a/lib/NormalModule.js +++ b/lib/NormalModule.js @@ -71,6 +71,8 @@ const memoize = require("./util/memoize"); /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */ /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("./logging/Logger").Logger} WebpackLogger */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("./util/Hash")} Hash */ /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */ /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */ @@ -1365,6 +1367,9 @@ class NormalModule extends Module { super.updateHash(hash, context); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; // deserialize @@ -1399,6 +1404,9 @@ class NormalModule extends Module { return obj; } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this._source = read(); diff --git a/lib/NormalModuleFactory.js b/lib/NormalModuleFactory.js index ddb36733d40..b04dd55b51c 100644 --- a/lib/NormalModuleFactory.js +++ b/lib/NormalModuleFactory.js @@ -233,6 +233,9 @@ class NormalModuleFactory extends ModuleFactory { ), generator: new HookMap( () => new SyncHook(["generator", "generatorOptions"]) + ), + createModuleClass: new HookMap( + () => new SyncBailHook(["createData", "resolveData"]) ) }); this.resolverFactory = resolverFactory; @@ -308,9 +311,18 @@ class NormalModuleFactory extends ModuleFactory { return callback(new Error("Empty dependency (no request)")); } - createdModule = new NormalModule( - /** @type {NormalModuleCreateData} */ (createData) - ); + // TODO webpack 6 make it required and move javascript/wasm/asset properties to own module + createdModule = this.hooks.createModuleClass + .for(createData.settings.type) + .call(createData, resolveData); + + if (!createdModule) { + createdModule = /** @type {Module} */ ( + new NormalModule( + /** @type {NormalModuleCreateData} */ (createData) + ) + ); + } } createdModule = this.hooks.module.call( diff --git a/lib/RawModule.js b/lib/RawModule.js index 910882c7456..3fa146d7748 100644 --- a/lib/RawModule.js +++ b/lib/RawModule.js @@ -23,6 +23,8 @@ const makeSerializable = require("./util/makeSerializable"); /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */ /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("./WebpackError")} WebpackError */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("./util/Hash")} Hash */ /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */ @@ -125,6 +127,9 @@ class RawModule extends Module { super.updateHash(hash, context); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -136,6 +141,9 @@ class RawModule extends Module { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/WebpackError.js b/lib/WebpackError.js index b98ad5a2e20..30adc0a0e57 100644 --- a/lib/WebpackError.js +++ b/lib/WebpackError.js @@ -11,6 +11,8 @@ const makeSerializable = require("./util/makeSerializable"); /** @typedef {import("./Chunk")} Chunk */ /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */ /** @typedef {import("./Module")} Module */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class WebpackError extends Error { /** @@ -37,6 +39,9 @@ class WebpackError extends Error { return this.stack + (this.details ? `\n${this.details}` : ""); } + /** + * @param {ObjectSerializerContext} context context + */ serialize({ write }) { write(this.name); write(this.message); @@ -46,6 +51,9 @@ class WebpackError extends Error { write(this.hideStack); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize({ read }) { this.name = read(); this.message = read(); diff --git a/lib/asset/RawDataUrlModule.js b/lib/asset/RawDataUrlModule.js index ffdd71ed20b..26f8316c1d2 100644 --- a/lib/asset/RawDataUrlModule.js +++ b/lib/asset/RawDataUrlModule.js @@ -19,6 +19,8 @@ const makeSerializable = require("../util/makeSerializable"); /** @typedef {import("../RequestShortener")} RequestShortener */ /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */ /** @typedef {import("../WebpackError")} WebpackError */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */ @@ -122,6 +124,9 @@ class RawDataUrlModule extends Module { super.updateHash(hash, context); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -132,6 +137,9 @@ class RawDataUrlModule extends Module { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/cache/ResolverCachePlugin.js b/lib/cache/ResolverCachePlugin.js index f53626b63d0..4659d617a3c 100644 --- a/lib/cache/ResolverCachePlugin.js +++ b/lib/cache/ResolverCachePlugin.js @@ -124,8 +124,11 @@ class ResolverCachePlugin { const newResolveContext = { ...resolveContext, stack: new Set(), + /** @type {LazySet} */ missingDependencies: new LazySet(), + /** @type {LazySet} */ fileDependencies: new LazySet(), + /** @type {LazySet} */ contextDependencies: new LazySet() }; let yieldResult; diff --git a/lib/config/normalization.js b/lib/config/normalization.js index 2ec9dee6a81..3f95ca98ce1 100644 --- a/lib/config/normalization.js +++ b/lib/config/normalization.js @@ -327,6 +327,7 @@ const getNormalizedWebpackOptions = config => { hotUpdateChunkFilename: output.hotUpdateChunkFilename, hotUpdateGlobal: output.hotUpdateGlobal, hotUpdateMainFilename: output.hotUpdateMainFilename, + ignoreBrowserWarnings: output.ignoreBrowserWarnings, iife: output.iife, importFunctionName: output.importFunctionName, importMetaName: output.importMetaName, diff --git a/lib/container/ContainerEntryModule.js b/lib/container/ContainerEntryModule.js index 77a5e6194e2..ae251eb7664 100644 --- a/lib/container/ContainerEntryModule.js +++ b/lib/container/ContainerEntryModule.js @@ -26,6 +26,8 @@ const ContainerExposedDependency = require("./ContainerExposedDependency"); /** @typedef {import("../RequestShortener")} RequestShortener */ /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */ /** @typedef {import("../WebpackError")} WebpackError */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */ /** @typedef {import("./ContainerEntryDependency")} ContainerEntryDependency */ @@ -260,6 +262,9 @@ class ContainerEntryModule extends Module { return 42; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this._name); diff --git a/lib/container/ContainerExposedDependency.js b/lib/container/ContainerExposedDependency.js index 02b9eef3c9b..2cbf04a694d 100644 --- a/lib/container/ContainerExposedDependency.js +++ b/lib/container/ContainerExposedDependency.js @@ -8,6 +8,9 @@ const ModuleDependency = require("../dependencies/ModuleDependency"); const makeSerializable = require("../util/makeSerializable"); +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + class ContainerExposedDependency extends ModuleDependency { /** * @param {string} exposedName public name @@ -33,11 +36,17 @@ class ContainerExposedDependency extends ModuleDependency { return `exposed dependency ${this.exposedName}=${this.request}`; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { context.write(this.exposedName); super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { this.exposedName = context.read(); super.deserialize(context); diff --git a/lib/container/FallbackDependency.js b/lib/container/FallbackDependency.js index dee28ab33fa..60d1fdd5969 100644 --- a/lib/container/FallbackDependency.js +++ b/lib/container/FallbackDependency.js @@ -8,6 +8,9 @@ const Dependency = require("../Dependency"); const makeSerializable = require("../util/makeSerializable"); +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + class FallbackDependency extends Dependency { constructor(requests) { super(); @@ -29,6 +32,9 @@ class FallbackDependency extends Dependency { return "esm"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.requests); diff --git a/lib/container/FallbackModule.js b/lib/container/FallbackModule.js index 572f6813975..c3e3c31cb87 100644 --- a/lib/container/FallbackModule.js +++ b/lib/container/FallbackModule.js @@ -24,6 +24,8 @@ const FallbackItemDependency = require("./FallbackItemDependency"); /** @typedef {import("../RequestShortener")} RequestShortener */ /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */ /** @typedef {import("../WebpackError")} WebpackError */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */ @@ -154,6 +156,9 @@ class FallbackModule extends Module { return { sources, runtimeRequirements: RUNTIME_REQUIREMENTS }; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.requests); diff --git a/lib/container/RemoteModule.js b/lib/container/RemoteModule.js index 0c399ccfccb..92e4b8ea29a 100644 --- a/lib/container/RemoteModule.js +++ b/lib/container/RemoteModule.js @@ -23,6 +23,8 @@ const RemoteToExternalDependency = require("./RemoteToExternalDependency"); /** @typedef {import("../RequestShortener")} RequestShortener */ /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */ /** @typedef {import("../WebpackError")} WebpackError */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */ @@ -149,6 +151,9 @@ class RemoteModule extends Module { return { sources, data, runtimeRequirements: RUNTIME_REQUIREMENTS }; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.request); diff --git a/lib/css/CssModulesPlugin.js b/lib/css/CssModulesPlugin.js index 23c3d5d3517..4c9d6e4995a 100644 --- a/lib/css/CssModulesPlugin.js +++ b/lib/css/CssModulesPlugin.js @@ -5,8 +5,14 @@ "use strict"; -const { ConcatSource } = require("webpack-sources"); +const { ConcatSource, PrefixSource } = require("webpack-sources"); +const CssModule = require("../CssModule"); const HotUpdateChunk = require("../HotUpdateChunk"); +const { + CSS_MODULE_TYPE, + CSS_MODULE_TYPE_GLOBAL, + CSS_MODULE_TYPE_MODULE +} = require("../ModuleTypeConstants"); const RuntimeGlobals = require("../RuntimeGlobals"); const SelfModuleFactory = require("../SelfModuleFactory"); const CssExportDependency = require("../dependencies/CssExportDependency"); @@ -125,53 +131,56 @@ class CssModulesPlugin { StaticExportsDependency, new StaticExportsDependency.Template() ); - normalModuleFactory.hooks.createParser - .for("css") - .tap(plugin, parserOptions => { - validateParserOptions(parserOptions); - return new CssParser(); - }); - normalModuleFactory.hooks.createParser - .for("css/global") - .tap(plugin, parserOptions => { - validateParserOptions(parserOptions); - return new CssParser({ - allowPseudoBlocks: false, - allowModeSwitch: false + for (const type of [ + CSS_MODULE_TYPE, + CSS_MODULE_TYPE_GLOBAL, + CSS_MODULE_TYPE_MODULE + ]) { + normalModuleFactory.hooks.createParser + .for(type) + .tap(plugin, parserOptions => { + validateParserOptions(parserOptions); + + switch (type) { + case CSS_MODULE_TYPE: + return new CssParser(); + case CSS_MODULE_TYPE_GLOBAL: + return new CssParser({ + allowPseudoBlocks: false, + allowModeSwitch: false + }); + case CSS_MODULE_TYPE_MODULE: + return new CssParser({ + defaultMode: "local" + }); + } }); - }); - normalModuleFactory.hooks.createParser - .for("css/module") - .tap(plugin, parserOptions => { - validateParserOptions(parserOptions); - return new CssParser({ - defaultMode: "local" + normalModuleFactory.hooks.createGenerator + .for(type) + .tap(plugin, generatorOptions => { + validateGeneratorOptions(generatorOptions); + return this._exportsOnly + ? new CssExportsGenerator() + : new CssGenerator(); }); - }); - normalModuleFactory.hooks.createGenerator - .for("css") - .tap(plugin, generatorOptions => { - validateGeneratorOptions(generatorOptions); - return this._exportsOnly - ? new CssExportsGenerator() - : new CssGenerator(); - }); - normalModuleFactory.hooks.createGenerator - .for("css/global") - .tap(plugin, generatorOptions => { - validateGeneratorOptions(generatorOptions); - return this._exportsOnly - ? new CssExportsGenerator() - : new CssGenerator(); - }); - normalModuleFactory.hooks.createGenerator - .for("css/module") - .tap(plugin, generatorOptions => { - validateGeneratorOptions(generatorOptions); - return this._exportsOnly - ? new CssExportsGenerator() - : new CssGenerator(); - }); + normalModuleFactory.hooks.createModuleClass + .for(type) + .tap(plugin, (createData, resolveData) => { + if (resolveData.dependencies.length > 0) { + // When CSS is imported from CSS there is only one dependency + const dependency = resolveData.dependencies[0]; + + return new CssModule({ + ...createData, + cssLayer: dependency.layer, + supports: dependency.supports, + media: dependency.media + }); + } + + return new CssModule(createData); + }); + } const orderedCssModulesPerChunk = new WeakMap(); compilation.hooks.afterCodeGeneration.tap("CssModulesPlugin", () => { const { chunkGraph } = compilation; @@ -401,16 +410,48 @@ class CssModulesPlugin { try { const codeGenResult = codeGenerationResults.get(module, chunk.runtime); - const s = + let moduleSource = codeGenResult.sources.get("css") || codeGenResult.sources.get("css-import"); - if (s) { - source.add(s); + + if (module.media) { + moduleSource = new ConcatSource( + `@media ${module.media} {\n`, + new PrefixSource("\t", moduleSource), + "}" + ); + } + + if (module.supports) { + moduleSource = new ConcatSource( + `@supports (${module.supports}) {\n`, + new PrefixSource("\t", moduleSource), + "}" + ); + } + + // Layer can be anonymous + if (module.cssLayer !== undefined && module.cssLayer !== null) { + moduleSource = new ConcatSource( + `@layer${module.cssLayer ? ` (${module.cssLayer})` : ""} {\n`, + new PrefixSource("\t", moduleSource), + "}" + ); + } + + if (moduleSource) { + source.add(moduleSource); source.add("\n"); } const exports = codeGenResult.data && codeGenResult.data.get("css-exports"); - const moduleId = chunkGraph.getModuleId(module) + ""; + let moduleId = chunkGraph.getModuleId(module) + ""; + + // When `optimization.moduleIds` is `named` the module id is a path, so we need to normalize it between platforms + if (typeof moduleId === "string") { + moduleId = moduleId.replace(/\\/g, "/"); + } + metaData.push( `${ exports diff --git a/lib/css/CssParser.js b/lib/css/CssParser.js index 7fb4311909c..7bafe010f3e 100644 --- a/lib/css/CssParser.js +++ b/lib/css/CssParser.js @@ -30,6 +30,9 @@ const STRING_MULTILINE = /\\[\n\r\f]/g; const TRIM_WHITE_SPACES = /(^[ \t\n\r\f]*|[ \t\n\r\f]*$)/g; const UNESCAPE = /\\([0-9a-fA-F]{1,6}[ \t\n\r\f]?|[\s\S])/g; const IMAGE_SET_FUNCTION = /^(-\w+-)?image-set$/i; +const OPTIONALLY_VENDOR_PREFIXED_KEYFRAMES_AT_RULE = /^@(-\w+-)?keyframes$/; +const OPTIONALLY_VENDOR_PREFIXED_ANIMATION_PROPERTY = + /^(-\w+-)?animation(-name)?$/i; const normalizeUrl = (str, isString) => { // Remove extra spaces and newlines: @@ -106,10 +109,8 @@ const CSS_MODE_TOP_LEVEL = 0; const CSS_MODE_IN_RULE = 1; const CSS_MODE_IN_LOCAL_RULE = 2; const CSS_MODE_AT_IMPORT_EXPECT_URL = 3; -// TODO implement layer and supports for @import -const CSS_MODE_AT_IMPORT_EXPECT_SUPPORTS = 4; -const CSS_MODE_AT_IMPORT_EXPECT_MEDIA = 5; -const CSS_MODE_AT_OTHER = 6; +const CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA = 4; +const CSS_MODE_AT_OTHER = 5; const explainMode = mode => { switch (mode) { @@ -121,10 +122,8 @@ const explainMode = mode => { return "parsing css rule content (local)"; case CSS_MODE_AT_IMPORT_EXPECT_URL: return "parsing @import (expecting url)"; - case CSS_MODE_AT_IMPORT_EXPECT_SUPPORTS: - return "parsing @import (expecting optionally supports or media query)"; - case CSS_MODE_AT_IMPORT_EXPECT_MEDIA: - return "parsing @import (expecting optionally media query)"; + case CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA: + return "parsing @import (expecting optionally layer, supports or media query)"; case CSS_MODE_AT_OTHER: return "parsing at-rule"; default: @@ -165,14 +164,13 @@ class CssParser extends Parser { const locConverter = new LocConverter(source); let mode = CSS_MODE_TOP_LEVEL; - let modePos = 0; let modeNestingLevel = 0; let modeData = undefined; let singleClassSelector = undefined; let lastIdentifier = undefined; let awaitRightParenthesis = false; /** @type [string, number, number][] */ - const functionStack = []; + let balanced = []; const modeStack = []; const isTopLevelLocal = () => @@ -315,8 +313,7 @@ class CssParser extends Parser { module.addDependency(dep); declaredCssVariables.add(name); } else if ( - propertyName.toLowerCase() === "animation-name" || - propertyName.toLowerCase() === "animation" + OPTIONALLY_VENDOR_PREFIXED_ANIMATION_PROPERTY.test(propertyName) ) { modeData = "animation"; lastIdentifier = undefined; @@ -338,7 +335,12 @@ class CssParser extends Parser { const eatNameInVar = eatUntil(",)};/"); walkCssTokens(source, { isSelector: () => { - return mode !== CSS_MODE_IN_RULE && mode !== CSS_MODE_IN_LOCAL_RULE; + return ( + mode !== CSS_MODE_IN_RULE && + mode !== CSS_MODE_IN_LOCAL_RULE && + mode !== CSS_MODE_AT_IMPORT_EXPECT_URL && + mode !== CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA + ); }, url: (input, start, end, contentStart, contentEnd, isString) => { let value = normalizeUrl( @@ -348,17 +350,14 @@ class CssParser extends Parser { switch (mode) { case CSS_MODE_AT_IMPORT_EXPECT_URL: { modeData.url = value; - mode = CSS_MODE_AT_IMPORT_EXPECT_SUPPORTS; + modeData.lastPos = end; + mode = CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA; + break; + } + // Do not parse URLs in `supports(...)` + case CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA: { break; } - case CSS_MODE_AT_IMPORT_EXPECT_SUPPORTS: - case CSS_MODE_AT_IMPORT_EXPECT_MEDIA: - throw new Error( - `Unexpected ${input.slice( - start, - end - )} at ${start} during ${explainMode(mode)}` - ); default: { if ( // Ignore `url(#highlight)` URLs @@ -384,17 +383,28 @@ class CssParser extends Parser { switch (mode) { case CSS_MODE_AT_IMPORT_EXPECT_URL: { modeData.url = normalizeUrl(input.slice(start + 1, end - 1), true); - mode = CSS_MODE_AT_IMPORT_EXPECT_SUPPORTS; + modeData.lastPos = end; + const insideURLFunction = + balanced[balanced.length - 1] && + balanced[balanced.length - 1][0] === "url"; + + if (!insideURLFunction) { + mode = CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA; + } + break; + } + // Do not parse URLs in `supports(...)` + case CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA: { break; } default: { // TODO move escaped parsing to tokenizer - const lastFunction = functionStack[functionStack.length - 1]; + const last = balanced[balanced.length - 1]; if ( - lastFunction && - (lastFunction[0].replace(/\\/g, "").toLowerCase() === "url" || - IMAGE_SET_FUNCTION.test(lastFunction[0].replace(/\\/g, ""))) + last && + (last[0].replace(/\\/g, "").toLowerCase() === "url" || + IMAGE_SET_FUNCTION.test(last[0].replace(/\\/g, ""))) ) { let value = normalizeUrl(input.slice(start + 1, end - 1), true); @@ -407,8 +417,7 @@ class CssParser extends Parser { break; } - const isUrl = - lastFunction[0].replace(/\\/g, "").toLowerCase() === "url"; + const isUrl = last[0].replace(/\\/g, "").toLowerCase() === "url"; const dep = new CssUrlDependency( value, [start, end], @@ -436,14 +445,16 @@ class CssParser extends Parser { ); } mode = CSS_MODE_AT_IMPORT_EXPECT_URL; - modePos = end; modeData = { - start: start, + atRuleStart: start, + lastPos: end, url: undefined, - supports: undefined + layer: undefined, + supports: undefined, + media: undefined }; } - if (name === "@keyframes") { + if (OPTIONALLY_VENDOR_PREFIXED_KEYFRAMES_AT_RULE.test(name)) { let pos = end; pos = walkCssTokens.eatWhitespaceAndComments(input, pos); if (pos === input.length) return pos; @@ -482,20 +493,40 @@ class CssParser extends Parser { switch (mode) { case CSS_MODE_AT_IMPORT_EXPECT_URL: throw new Error(`Expected URL for @import at ${start}`); - case CSS_MODE_AT_IMPORT_EXPECT_MEDIA: - case CSS_MODE_AT_IMPORT_EXPECT_SUPPORTS: { - const { line: sl, column: sc } = locConverter.get(modeData.start); + case CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA: { + if (modeData.url === undefined) { + throw new Error( + `Expected URL for @import at ${modeData.atRuleStart}` + ); + } + const semicolonPos = end; + const { line: sl, column: sc } = locConverter.get( + modeData.atRuleStart + ); const { line: el, column: ec } = locConverter.get(end); - end = eatWhiteLine(input, end); - const media = input.slice(modePos, start).trim(); + const pos = walkCssTokens.eatWhitespaceAndComments( + input, + modeData.lastPos + ); + // Prevent to consider comments as a part of media query + if (pos !== semicolonPos - 1) { + modeData.media = input + .slice(modeData.lastPos, semicolonPos - 1) + .trim(); + } const dep = new CssImportDependency( - modeData.url, + modeData.url.trim(), [modeData.start, end], + modeData.layer, modeData.supports, - media + modeData.media && modeData.media.length > 0 + ? modeData.media + : undefined ); dep.setLoc(sl, sc, el, ec); module.addDependency(dep); + modeData = undefined; + mode = CSS_MODE_TOP_LEVEL; break; } case CSS_MODE_IN_LOCAL_RULE: { @@ -570,6 +601,13 @@ class CssParser extends Parser { lastIdentifier = [start, end]; } break; + case CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA: { + if (input.slice(start, end).toLowerCase() === "layer") { + modeData.layer = ""; + modeData.lastPos = end; + } + break; + } } return end; }, @@ -595,7 +633,40 @@ class CssParser extends Parser { } return end; }, + function: (input, start, end) => { + let name = input.slice(start, end - 1); + + balanced.push([name, start, end]); + + switch (mode) { + case CSS_MODE_IN_LOCAL_RULE: { + name = name.toLowerCase(); + + if (name === "var") { + let pos = walkCssTokens.eatWhitespaceAndComments(input, end); + if (pos === input.length) return pos; + const [newPos, name] = eatText(input, pos, eatNameInVar); + if (!name.startsWith("--")) return end; + const { line: sl, column: sc } = locConverter.get(pos); + const { line: el, column: ec } = locConverter.get(newPos); + const dep = new CssSelfLocalIdentifierDependency( + name.slice(2), + [pos, newPos], + "--", + declaredCssVariables + ); + dep.setLoc(sl, sc, el, ec); + module.addDependency(dep); + return newPos; + } + break; + } + } + return end; + }, leftParenthesis: (input, start, end) => { + balanced.push(["(", start, end]); + switch (mode) { case CSS_MODE_TOP_LEVEL: { modeStack.push(false); @@ -605,7 +676,9 @@ class CssParser extends Parser { return end; }, rightParenthesis: (input, start, end) => { - functionStack.pop(); + const last = balanced[balanced.length - 1]; + + balanced.pop(); switch (mode) { case CSS_MODE_TOP_LEVEL: { @@ -620,6 +693,23 @@ class CssParser extends Parser { } break; } + case CSS_MODE_AT_IMPORT_EXPECT_URL: { + if (last && last[0] === "url") { + modeData.lastPos = end; + mode = CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA; + } + break; + } + case CSS_MODE_AT_IMPORT_EXPECT_LAYER_OR_SUPPORTS_OR_MEDIA: { + if (last && last[0].toLowerCase() === "layer") { + modeData.layer = input.slice(last[2], end - 1).trim(); + modeData.lastPos = end; + } else if (last && last[0].toLowerCase() === "supports") { + modeData.supports = input.slice(last[2], end - 1).trim(); + modeData.lastPos = end; + } + break; + } } return end; @@ -651,7 +741,7 @@ class CssParser extends Parser { pseudoFunction: (input, start, end) => { let name = input.slice(start, end - 1); - functionStack.push([name, start, end]); + balanced.push([name, start, end]); switch (mode) { case CSS_MODE_TOP_LEVEL: { @@ -676,37 +766,6 @@ class CssParser extends Parser { } return end; }, - function: (input, start, end) => { - let name = input.slice(start, end - 1); - - functionStack.push([name, start, end]); - - switch (mode) { - case CSS_MODE_IN_LOCAL_RULE: { - name = name.toLowerCase(); - - if (name === "var") { - let pos = walkCssTokens.eatWhitespaceAndComments(input, end); - if (pos === input.length) return pos; - const [newPos, name] = eatText(input, pos, eatNameInVar); - if (!name.startsWith("--")) return end; - const { line: sl, column: sc } = locConverter.get(pos); - const { line: el, column: ec } = locConverter.get(newPos); - const dep = new CssSelfLocalIdentifierDependency( - name.slice(2), - [pos, newPos], - "--", - declaredCssVariables - ); - dep.setLoc(sl, sc, el, ec); - module.addDependency(dep); - return newPos; - } - break; - } - } - return end; - }, comma: (input, start, end) => { switch (mode) { case CSS_MODE_TOP_LEVEL: diff --git a/lib/css/walkCssTokens.js b/lib/css/walkCssTokens.js index 9c31029b02f..288267cae5d 100644 --- a/lib/css/walkCssTokens.js +++ b/lib/css/walkCssTokens.js @@ -7,7 +7,7 @@ /** * @typedef {Object} CssTokenCallbacks - * @property {function(string, number): boolean} isSelector + * @property {function(string, number): boolean=} isSelector * @property {function(string, number, number, number, number): number=} url * @property {function(string, number, number): number=} string * @property {function(string, number, number): number=} leftParenthesis @@ -661,59 +661,39 @@ module.exports = (input, callbacks) => { } }; +/** + * @param {string} input input + * @param {number} pos position + * @returns {number} position after comments + */ module.exports.eatComments = (input, pos) => { - loop: for (;;) { - const cc = input.charCodeAt(pos); - if (cc === CC_SOLIDUS) { - if (pos === input.length) return pos; - let cc = input.charCodeAt(pos + 1); - if (cc !== CC_ASTERISK) return pos; - pos++; - for (;;) { - pos++; - if (pos === input.length) return pos; - cc = input.charCodeAt(pos); - while (cc === CC_ASTERISK) { - pos++; - if (pos === input.length) return pos; - cc = input.charCodeAt(pos); - if (cc === CC_SOLIDUS) { - pos++; - continue loop; - } - } - } + for (;;) { + let originalPos = pos; + pos = consumeComments(input, pos, {}); + if (originalPos === pos) { + break; } - return pos; } + + return pos; }; +/** + * @param {string} input input + * @param {number} pos position + * @returns {number} position after whitespace and comments + */ module.exports.eatWhitespaceAndComments = (input, pos) => { - loop: for (;;) { - const cc = input.charCodeAt(pos); - if (cc === CC_SOLIDUS) { - if (pos === input.length) return pos; - let cc = input.charCodeAt(pos + 1); - if (cc !== CC_ASTERISK) return pos; - pos++; - for (;;) { - pos++; - if (pos === input.length) return pos; - cc = input.charCodeAt(pos); - while (cc === CC_ASTERISK) { - pos++; - if (pos === input.length) return pos; - cc = input.charCodeAt(pos); - if (cc === CC_SOLIDUS) { - pos++; - continue loop; - } - } - } - } else if (_isWhiteSpace(cc)) { + for (;;) { + let originalPos = pos; + pos = consumeComments(input, pos, {}); + while (_isWhiteSpace(input.charCodeAt(pos))) { pos++; - continue; } - return pos; + if (originalPos === pos) { + break; + } } + + return pos; }; diff --git a/lib/dependencies/AMDDefineDependency.js b/lib/dependencies/AMDDefineDependency.js index 1a0816ae84f..019f3908c46 100644 --- a/lib/dependencies/AMDDefineDependency.js +++ b/lib/dependencies/AMDDefineDependency.js @@ -12,6 +12,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @type {Record} */ const DEFINITIONS = { @@ -119,6 +121,9 @@ class AMDDefineDependency extends NullDependency { return "amd define"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.range); @@ -130,6 +135,9 @@ class AMDDefineDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.range = read(); diff --git a/lib/dependencies/AMDRequireArrayDependency.js b/lib/dependencies/AMDRequireArrayDependency.js index d62938d8e67..123ce345657 100644 --- a/lib/dependencies/AMDRequireArrayDependency.js +++ b/lib/dependencies/AMDRequireArrayDependency.js @@ -12,6 +12,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class AMDRequireArrayDependency extends NullDependency { constructor(depsArray, range) { @@ -29,6 +31,9 @@ class AMDRequireArrayDependency extends NullDependency { return "amd"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -38,6 +43,9 @@ class AMDRequireArrayDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/AMDRequireContextDependency.js b/lib/dependencies/AMDRequireContextDependency.js index 0d68a26e064..eab91c33d2f 100644 --- a/lib/dependencies/AMDRequireContextDependency.js +++ b/lib/dependencies/AMDRequireContextDependency.js @@ -8,6 +8,9 @@ const makeSerializable = require("../util/makeSerializable"); const ContextDependency = require("./ContextDependency"); +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + class AMDRequireContextDependency extends ContextDependency { constructor(options, range, valueRange) { super(options); @@ -24,6 +27,9 @@ class AMDRequireContextDependency extends ContextDependency { return "amd"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -33,6 +39,9 @@ class AMDRequireContextDependency extends ContextDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/AMDRequireDependency.js b/lib/dependencies/AMDRequireDependency.js index e6e3f4c689e..3710bee239a 100644 --- a/lib/dependencies/AMDRequireDependency.js +++ b/lib/dependencies/AMDRequireDependency.js @@ -13,6 +13,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class AMDRequireDependency extends NullDependency { constructor(outerRange, arrayRange, functionRange, errorCallbackRange) { @@ -30,6 +32,9 @@ class AMDRequireDependency extends NullDependency { return "amd"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -43,6 +48,9 @@ class AMDRequireDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/CachedConstDependency.js b/lib/dependencies/CachedConstDependency.js index 1e07edeca20..b94dc0bbb96 100644 --- a/lib/dependencies/CachedConstDependency.js +++ b/lib/dependencies/CachedConstDependency.js @@ -18,6 +18,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../DependencyTemplates")} DependencyTemplates */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ class CachedConstDependency extends NullDependency { @@ -42,6 +44,9 @@ class CachedConstDependency extends NullDependency { hash.update(this._hashUpdate); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -52,6 +57,9 @@ class CachedConstDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/CommonJsDependencyHelpers.js b/lib/dependencies/CommonJsDependencyHelpers.js index e3955590215..ca7795c4c1c 100644 --- a/lib/dependencies/CommonJsDependencyHelpers.js +++ b/lib/dependencies/CommonJsDependencyHelpers.js @@ -7,6 +7,15 @@ const RuntimeGlobals = require("../RuntimeGlobals"); +/** @typedef {import("../Module")} Module */ +/** @typedef {"exports" | "module.exports" | "this" | "Object.defineProperty(exports)" | "Object.defineProperty(module.exports)" | "Object.defineProperty(this)"} CommonJSDependencyBaseKeywords */ + +/** + * @param {CommonJSDependencyBaseKeywords} depBase commonjs dependency base + * @param {Module} module module + * @param {Set} runtimeRequirements runtime requirements + * @returns {[string, string]} type and base + */ exports.handleDependencyBase = (depBase, module, runtimeRequirements) => { let base = undefined; let type; diff --git a/lib/dependencies/CommonJsExportRequireDependency.js b/lib/dependencies/CommonJsExportRequireDependency.js index 288e1012635..cf2cfe7aec8 100644 --- a/lib/dependencies/CommonJsExportRequireDependency.js +++ b/lib/dependencies/CommonJsExportRequireDependency.js @@ -22,6 +22,8 @@ const processExportInfo = require("./processExportInfo"); /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../Module")} Module */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ const idsSymbol = Symbol("CommonJsExportRequireDependency.ids"); @@ -270,6 +272,9 @@ class CommonJsExportRequireDependency extends ModuleDependency { return { exports, checked }; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.asiSafe); @@ -282,6 +287,9 @@ class CommonJsExportRequireDependency extends ModuleDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.asiSafe = read(); diff --git a/lib/dependencies/CommonJsExportsDependency.js b/lib/dependencies/CommonJsExportsDependency.js index 0715582edf9..ab53f20f273 100644 --- a/lib/dependencies/CommonJsExportsDependency.js +++ b/lib/dependencies/CommonJsExportsDependency.js @@ -16,6 +16,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ const EMPTY_OBJECT = {}; @@ -53,6 +55,9 @@ class CommonJsExportsDependency extends NullDependency { }; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.range); @@ -62,6 +67,9 @@ class CommonJsExportsDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.range = read(); diff --git a/lib/dependencies/CommonJsExportsParserPlugin.js b/lib/dependencies/CommonJsExportsParserPlugin.js index adccb109a8f..7b5bb050758 100644 --- a/lib/dependencies/CommonJsExportsParserPlugin.js +++ b/lib/dependencies/CommonJsExportsParserPlugin.js @@ -16,11 +16,36 @@ const DynamicExports = require("./DynamicExports"); const HarmonyExports = require("./HarmonyExports"); const ModuleDecoratorDependency = require("./ModuleDecoratorDependency"); +/** @typedef {import("estree").AssignmentExpression} AssignmentExpression */ +/** @typedef {import("estree").CallExpression} CallExpression */ /** @typedef {import("estree").Expression} ExpressionNode */ +/** @typedef {import("estree").Expression} Expression */ +/** @typedef {import("estree").Super} Super */ + /** @typedef {import("../NormalModule")} NormalModule */ /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */ /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */ +/** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */ +/** + * This function takes a generic expression and detects whether it is an ObjectExpression. + * This is used in the context of parsing CommonJS exports to get the value of the property descriptor + * when the `exports` object is assigned to `Object.defineProperty`. + * + * In CommonJS modules, the `exports` object can be assigned to `Object.defineProperty` and therefore + * webpack has to detect this case and get the value key of the property descriptor. See the following example + * for more information: https://astexplorer.net/#/gist/83ce51a4e96e59d777df315a6d111da6/8058ead48a1bb53c097738225db0967ef7f70e57 + * + * This would be an example of a CommonJS module that exports an object with a property descriptor: + * ```js + * Object.defineProperty(exports, "__esModule", { value: true }); + * exports.foo = void 0; + * exports.foo = "bar"; + * ``` + * + * @param {TODO} expr expression + * @returns {Expression} returns the value of property descriptor + */ const getValueOfPropertyDescription = expr => { if (expr.type !== "ObjectExpression") return; for (const property of expr.properties) { @@ -31,6 +56,15 @@ const getValueOfPropertyDescription = expr => { } }; +/** + * The purpose of this function is to check whether an expression is a truthy literal or not. This is + * useful when parsing CommonJS exports, because CommonJS modules can export any value, including falsy + * values like `null` and `false`. However, exports should only be created if the exported value is truthy. + * + * @param {Expression} expr expression being checked + * @returns {boolean} true, when the expression is a truthy literal + * + */ const isTruthyLiteral = expr => { switch (expr.type) { case "Literal": @@ -41,6 +75,14 @@ const isTruthyLiteral = expr => { return false; }; +/** + * The purpose of this function is to check whether an expression is a falsy literal or not. This is + * useful when parsing CommonJS exports, because CommonJS modules can export any value, including falsy + * values like `null` and `false`. However, exports should only be created if the exported value is truthy. + * + * @param {Expression} expr expression being checked + * @returns {boolean} true, when the expression is a falsy literal + */ const isFalsyLiteral = expr => { switch (expr.type) { case "Literal": @@ -97,6 +139,13 @@ class CommonJsExportsParserPlugin { const enableStructuredExports = () => { DynamicExports.enable(parser.state); }; + + /** + * @param {boolean} topLevel true, when the export is on top level + * @param {string[]} members members of the export + * @param {Expression} valueExpr expression for the value + * @returns {void} + */ const checkNamespace = (topLevel, members, valueExpr) => { if (!DynamicExports.isEnabled(parser.state)) return; if (members.length > 0 && members[0] === "__esModule") { @@ -126,6 +175,13 @@ class CommonJsExportsParserPlugin { .tap("CommonJsPlugin", evaluateToString("object")); // exporting // + + /** + * @param {AssignmentExpression} expr expression + * @param {CommonJSDependencyBaseKeywords} base commonjs base keywords + * @param {string[]} members members of the export + * @returns {boolean} true, when the expression was handled + */ const handleAssignExport = (expr, base, members) => { if (HarmonyExports.isEnabled(parser.state)) return; // Handle reexporting @@ -192,9 +248,7 @@ class CommonJsExportsParserPlugin { parser.hooks.call .for("Object.defineProperty") .tap("CommonJsExportsParserPlugin", expression => { - const expr = /** @type {import("estree").CallExpression} */ ( - expression - ); + const expr = /** @type {CallExpression} */ (expression); if (!parser.isStatementLevelExpression(expr)) return; if (expr.arguments.length !== 3) return; if (expr.arguments[0].type === "SpreadElement") return; @@ -233,6 +287,14 @@ class CommonJsExportsParserPlugin { }); // Self reference // + + /** + * @param {Expression | Super} expr expression + * @param {CommonJSDependencyBaseKeywords} base commonjs base keywords + * @param {string[]} members members of the export + * @param {CallExpression} call call expression + * @returns {boolean} true, when the expression was handled + */ const handleAccessExport = (expr, base, members, call = undefined) => { if (HarmonyExports.isEnabled(parser.state)) return; if (members.length === 0) { diff --git a/lib/dependencies/CommonJsFullRequireDependency.js b/lib/dependencies/CommonJsFullRequireDependency.js index 68da6a12ac6..43b2195d939 100644 --- a/lib/dependencies/CommonJsFullRequireDependency.js +++ b/lib/dependencies/CommonJsFullRequireDependency.js @@ -16,6 +16,8 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ class CommonJsFullRequireDependency extends ModuleDependency { @@ -51,6 +53,9 @@ class CommonJsFullRequireDependency extends ModuleDependency { return [this.names]; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.names); @@ -59,6 +64,9 @@ class CommonJsFullRequireDependency extends ModuleDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.names = read(); diff --git a/lib/dependencies/CommonJsRequireContextDependency.js b/lib/dependencies/CommonJsRequireContextDependency.js index e8637835d73..ebe731b2799 100644 --- a/lib/dependencies/CommonJsRequireContextDependency.js +++ b/lib/dependencies/CommonJsRequireContextDependency.js @@ -9,6 +9,9 @@ const makeSerializable = require("../util/makeSerializable"); const ContextDependency = require("./ContextDependency"); const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall"); +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + class CommonJsRequireContextDependency extends ContextDependency { constructor(options, range, valueRange, inShorthand, context) { super(options, context); @@ -23,6 +26,9 @@ class CommonJsRequireContextDependency extends ContextDependency { return "cjs require context"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -33,6 +39,9 @@ class CommonJsRequireContextDependency extends ContextDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/CommonJsSelfReferenceDependency.js b/lib/dependencies/CommonJsSelfReferenceDependency.js index 1c4af4867b5..094604f7bfc 100644 --- a/lib/dependencies/CommonJsSelfReferenceDependency.js +++ b/lib/dependencies/CommonJsSelfReferenceDependency.js @@ -17,6 +17,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ class CommonJsSelfReferenceDependency extends NullDependency { @@ -53,6 +55,9 @@ class CommonJsSelfReferenceDependency extends NullDependency { return [this.call ? this.names.slice(0, -1) : this.names]; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.range); @@ -62,6 +67,9 @@ class CommonJsSelfReferenceDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.range = read(); diff --git a/lib/dependencies/ConstDependency.js b/lib/dependencies/ConstDependency.js index 72e2cab1577..f118155cc34 100644 --- a/lib/dependencies/ConstDependency.js +++ b/lib/dependencies/ConstDependency.js @@ -15,6 +15,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ class ConstDependency extends NullDependency { @@ -61,6 +63,9 @@ class ConstDependency extends NullDependency { return false; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.expression); @@ -69,6 +74,9 @@ class ConstDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.expression = read(); diff --git a/lib/dependencies/ContextDependency.js b/lib/dependencies/ContextDependency.js index 8c41b8c1440..6831ee93df3 100644 --- a/lib/dependencies/ContextDependency.js +++ b/lib/dependencies/ContextDependency.js @@ -14,6 +14,8 @@ const memoize = require("../util/memoize"); /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../WebpackError")} WebpackError */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ const getCriticalDependencyWarning = memoize(() => require("./CriticalDependencyWarning") @@ -115,6 +117,9 @@ class ContextDependency extends Dependency { return warnings; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -132,6 +137,9 @@ class ContextDependency extends Dependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/ContextElementDependency.js b/lib/dependencies/ContextElementDependency.js index 21681f57711..1ceaadb0431 100644 --- a/lib/dependencies/ContextElementDependency.js +++ b/lib/dependencies/ContextElementDependency.js @@ -11,6 +11,8 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ class ContextElementDependency extends ModuleDependency { @@ -68,6 +70,9 @@ class ContextElementDependency extends ModuleDependency { : Dependency.EXPORTS_OBJECT_REFERENCED; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this._typePrefix); @@ -76,6 +81,9 @@ class ContextElementDependency extends ModuleDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this._typePrefix = read(); diff --git a/lib/dependencies/CreateScriptUrlDependency.js b/lib/dependencies/CreateScriptUrlDependency.js index 30b39b76d52..e2d27bf19f5 100644 --- a/lib/dependencies/CreateScriptUrlDependency.js +++ b/lib/dependencies/CreateScriptUrlDependency.js @@ -12,6 +12,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class CreateScriptUrlDependency extends NullDependency { /** @@ -26,12 +28,18 @@ class CreateScriptUrlDependency extends NullDependency { return "create script url"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.range); super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.range = read(); diff --git a/lib/dependencies/CssExportDependency.js b/lib/dependencies/CssExportDependency.js index 440e66fbe9e..15629a39211 100644 --- a/lib/dependencies/CssExportDependency.js +++ b/lib/dependencies/CssExportDependency.js @@ -13,6 +13,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */ /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class CssExportDependency extends NullDependency { /** @@ -47,6 +49,9 @@ class CssExportDependency extends NullDependency { }; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.name); @@ -54,6 +59,9 @@ class CssExportDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.name = read(); diff --git a/lib/dependencies/CssImportDependency.js b/lib/dependencies/CssImportDependency.js index 8f02d6e1fc3..d27311f3744 100644 --- a/lib/dependencies/CssImportDependency.js +++ b/lib/dependencies/CssImportDependency.js @@ -17,19 +17,27 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */ /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ class CssImportDependency extends ModuleDependency { /** + * Example of dependency: + * + * \@import url("landscape.css") layer(forms) screen and (orientation: landscape) screen and (orientation: landscape); + * * @param {string} request request * @param {[number, number]} range range of the argument + * @param {string | undefined} layer layer * @param {string | undefined} supports list of supports conditions * @param {string | undefined} media list of media conditions */ - constructor(request, range, supports, media) { + constructor(request, range, layer, supports, media) { super(request); this.range = range; + this.layer = layer; this.supports = supports; this.media = media; } @@ -42,6 +50,27 @@ class CssImportDependency extends ModuleDependency { return "css-import"; } + /** + * @returns {string | null} an identifier to merge equal requests + */ + getResourceIdentifier() { + let str = `context${this._context || ""}|module${this.request}`; + + if (this.layer) { + str += `|layer${this.layer}`; + } + + if (this.supports) { + str += `|supports${this.supports}`; + } + + if (this.media) { + str += `|media${this.media}`; + } + + return str; + } + /** * @param {string} context context directory * @returns {Module} a module @@ -49,6 +78,28 @@ class CssImportDependency extends ModuleDependency { createIgnoredModule(context) { return null; } + + /** + * @param {ObjectSerializerContext} context context + */ + serialize(context) { + const { write } = context; + write(this.layer); + write(this.supports); + write(this.media); + super.serialize(context); + } + + /** + * @param {ObjectDeserializerContext} context context + */ + deserialize(context) { + const { read } = context; + this.layer = read(); + this.supports = read(); + this.media = read(); + super.deserialize(context); + } } CssImportDependency.Template = class CssImportDependencyTemplate extends ( diff --git a/lib/dependencies/CssLocalIdentifierDependency.js b/lib/dependencies/CssLocalIdentifierDependency.js index 02ced928387..2cf301e2c34 100644 --- a/lib/dependencies/CssLocalIdentifierDependency.js +++ b/lib/dependencies/CssLocalIdentifierDependency.js @@ -13,6 +13,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */ /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class CssLocalIdentifierDependency extends NullDependency { /** @@ -49,6 +51,9 @@ class CssLocalIdentifierDependency extends NullDependency { }; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.name); @@ -57,6 +62,9 @@ class CssLocalIdentifierDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.name = read(); diff --git a/lib/dependencies/CssSelfLocalIdentifierDependency.js b/lib/dependencies/CssSelfLocalIdentifierDependency.js index dcb8be249b6..b2c43405068 100644 --- a/lib/dependencies/CssSelfLocalIdentifierDependency.js +++ b/lib/dependencies/CssSelfLocalIdentifierDependency.js @@ -14,6 +14,8 @@ const CssLocalIdentifierDependency = require("./CssLocalIdentifierDependency"); /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */ /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ class CssSelfLocalIdentifierDependency extends CssLocalIdentifierDependency { @@ -64,12 +66,18 @@ class CssSelfLocalIdentifierDependency extends CssLocalIdentifierDependency { return [[this.name]]; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.declaredSet); super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.declaredSet = read(); diff --git a/lib/dependencies/CssUrlDependency.js b/lib/dependencies/CssUrlDependency.js index c2af5c5cab9..c8d89450570 100644 --- a/lib/dependencies/CssUrlDependency.js +++ b/lib/dependencies/CssUrlDependency.js @@ -18,6 +18,8 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */ /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ @@ -52,12 +54,18 @@ class CssUrlDependency extends ModuleDependency { return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.urlType); super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.urlType = read(); diff --git a/lib/dependencies/DllEntryDependency.js b/lib/dependencies/DllEntryDependency.js index 1c3feee83f8..3bf126348d7 100644 --- a/lib/dependencies/DllEntryDependency.js +++ b/lib/dependencies/DllEntryDependency.js @@ -8,6 +8,9 @@ const Dependency = require("../Dependency"); const makeSerializable = require("../util/makeSerializable"); +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + class DllEntryDependency extends Dependency { constructor(dependencies, name) { super(); @@ -20,6 +23,9 @@ class DllEntryDependency extends Dependency { return "dll entry"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -29,6 +35,9 @@ class DllEntryDependency extends Dependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/ExportsInfoDependency.js b/lib/dependencies/ExportsInfoDependency.js index 0b7b17972d1..e36f4fedff9 100644 --- a/lib/dependencies/ExportsInfoDependency.js +++ b/lib/dependencies/ExportsInfoDependency.js @@ -16,6 +16,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../Module")} Module */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ @@ -89,6 +91,9 @@ class ExportsInfoDependency extends NullDependency { this.property = property; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.range); diff --git a/lib/dependencies/HarmonyAcceptDependency.js b/lib/dependencies/HarmonyAcceptDependency.js index 560d9bb32ea..4d270120d82 100644 --- a/lib/dependencies/HarmonyAcceptDependency.js +++ b/lib/dependencies/HarmonyAcceptDependency.js @@ -13,6 +13,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("./HarmonyAcceptImportDependency")} HarmonyAcceptImportDependency */ class HarmonyAcceptDependency extends NullDependency { @@ -32,6 +34,9 @@ class HarmonyAcceptDependency extends NullDependency { return "accepted harmony modules"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.range); @@ -40,6 +45,9 @@ class HarmonyAcceptDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.range = read(); diff --git a/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js b/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js index 4fb3a790b1f..5f5ebc9aca3 100644 --- a/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +++ b/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js @@ -12,6 +12,8 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend /** @typedef {import("../ChunkGraph")} ChunkGraph */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** * Dependency for static evaluating import specifier. e.g. @@ -30,12 +32,18 @@ class HarmonyEvaluatedImportSpecifierDependency extends HarmonyImportSpecifierDe return `evaluated X ${this.operator} harmony import specifier`; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { super.serialize(context); const { write } = context; write(this.operator); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { super.deserialize(context); const { read } = context; diff --git a/lib/dependencies/HarmonyExportExpressionDependency.js b/lib/dependencies/HarmonyExportExpressionDependency.js index 81b6027117c..5ebd0ef6d02 100644 --- a/lib/dependencies/HarmonyExportExpressionDependency.js +++ b/lib/dependencies/HarmonyExportExpressionDependency.js @@ -17,6 +17,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class HarmonyExportExpressionDependency extends NullDependency { constructor(range, rangeStatement, prefix, declarationId) { @@ -54,6 +56,9 @@ class HarmonyExportExpressionDependency extends NullDependency { return false; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.range); @@ -63,6 +68,9 @@ class HarmonyExportExpressionDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.range = read(); diff --git a/lib/dependencies/HarmonyExportHeaderDependency.js b/lib/dependencies/HarmonyExportHeaderDependency.js index 7dacbecc8a3..5aa80545abb 100644 --- a/lib/dependencies/HarmonyExportHeaderDependency.js +++ b/lib/dependencies/HarmonyExportHeaderDependency.js @@ -11,6 +11,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class HarmonyExportHeaderDependency extends NullDependency { constructor(range, rangeStatement) { @@ -23,6 +25,9 @@ class HarmonyExportHeaderDependency extends NullDependency { return "harmony export header"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.range); @@ -30,6 +35,9 @@ class HarmonyExportHeaderDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.range = read(); diff --git a/lib/dependencies/HarmonyExportImportedSpecifierDependency.js b/lib/dependencies/HarmonyExportImportedSpecifierDependency.js index 3859254f1a6..e322697fdd8 100644 --- a/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +++ b/lib/dependencies/HarmonyExportImportedSpecifierDependency.js @@ -35,6 +35,8 @@ const processExportInfo = require("./processExportInfo"); /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */ /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("../WebpackError")} WebpackError */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ @@ -856,6 +858,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency { return errors; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write, setCircularReference } = context; @@ -870,6 +875,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read, setCircularReference } = context; @@ -1251,11 +1259,17 @@ class HarmonyStarExportsList { return this.dependencies.slice(); } + /** + * @param {ObjectSerializerContext} context context + */ serialize({ write, setCircularReference }) { setCircularReference(this); write(this.dependencies); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize({ read, setCircularReference }) { setCircularReference(this); this.dependencies = read(); diff --git a/lib/dependencies/HarmonyExportSpecifierDependency.js b/lib/dependencies/HarmonyExportSpecifierDependency.js index ac663bacc5b..d749b6dab69 100644 --- a/lib/dependencies/HarmonyExportSpecifierDependency.js +++ b/lib/dependencies/HarmonyExportSpecifierDependency.js @@ -15,6 +15,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class HarmonyExportSpecifierDependency extends NullDependency { constructor(id, name) { @@ -49,6 +51,9 @@ class HarmonyExportSpecifierDependency extends NullDependency { return false; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.id); @@ -56,6 +61,9 @@ class HarmonyExportSpecifierDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.id = read(); diff --git a/lib/dependencies/HarmonyImportDependency.js b/lib/dependencies/HarmonyImportDependency.js index c270262ca8a..e0544043f58 100644 --- a/lib/dependencies/HarmonyImportDependency.js +++ b/lib/dependencies/HarmonyImportDependency.js @@ -24,6 +24,8 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("../WebpackError")} WebpackError */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ @@ -221,6 +223,9 @@ class HarmonyImportDependency extends ModuleDependency { } } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.sourceOrder); @@ -228,6 +233,9 @@ class HarmonyImportDependency extends ModuleDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.sourceOrder = read(); diff --git a/lib/dependencies/HarmonyImportSpecifierDependency.js b/lib/dependencies/HarmonyImportSpecifierDependency.js index 6115614bd07..3b7a1d15f1d 100644 --- a/lib/dependencies/HarmonyImportSpecifierDependency.js +++ b/lib/dependencies/HarmonyImportSpecifierDependency.js @@ -23,6 +23,8 @@ const HarmonyImportDependency = require("./HarmonyImportDependency"); /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */ /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */ /** @typedef {import("../WebpackError")} WebpackError */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ @@ -237,6 +239,9 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency { return 0; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.ids); @@ -253,6 +258,9 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.ids = read(); diff --git a/lib/dependencies/ImportContextDependency.js b/lib/dependencies/ImportContextDependency.js index ecc86eca45a..f94a86fcede 100644 --- a/lib/dependencies/ImportContextDependency.js +++ b/lib/dependencies/ImportContextDependency.js @@ -9,6 +9,9 @@ const makeSerializable = require("../util/makeSerializable"); const ContextDependency = require("./ContextDependency"); const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall"); +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + class ImportContextDependency extends ContextDependency { constructor(options, range, valueRange) { super(options); @@ -25,6 +28,9 @@ class ImportContextDependency extends ContextDependency { return "esm"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -33,6 +39,9 @@ class ImportContextDependency extends ContextDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/ImportDependency.js b/lib/dependencies/ImportDependency.js index 8c930796f07..98ff9b2654e 100644 --- a/lib/dependencies/ImportDependency.js +++ b/lib/dependencies/ImportDependency.js @@ -14,6 +14,8 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ class ImportDependency extends ModuleDependency { @@ -51,12 +53,18 @@ class ImportDependency extends ModuleDependency { : Dependency.EXPORTS_OBJECT_REFERENCED; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { context.write(this.range); context.write(this.referencedExports); super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { this.range = context.read(); this.referencedExports = context.read(); diff --git a/lib/dependencies/JsonExportsDependency.js b/lib/dependencies/JsonExportsDependency.js index 56d7cf824e5..e35b1ca2b29 100644 --- a/lib/dependencies/JsonExportsDependency.js +++ b/lib/dependencies/JsonExportsDependency.js @@ -14,6 +14,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../json/JsonData")} JsonData */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ const getExportsFromData = data => { @@ -78,12 +80,18 @@ class JsonExportsDependency extends NullDependency { this.data.updateHash(hash); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.data); super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.data = read(); diff --git a/lib/dependencies/LocalModuleDependency.js b/lib/dependencies/LocalModuleDependency.js index 66395319a7c..4e576ee881c 100644 --- a/lib/dependencies/LocalModuleDependency.js +++ b/lib/dependencies/LocalModuleDependency.js @@ -11,6 +11,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class LocalModuleDependency extends NullDependency { constructor(localModule, range, callNew) { @@ -21,6 +23,9 @@ class LocalModuleDependency extends NullDependency { this.callNew = callNew; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -31,6 +36,9 @@ class LocalModuleDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/ModuleDecoratorDependency.js b/lib/dependencies/ModuleDecoratorDependency.js index 0bf7fd255fc..c5ae9f30a3a 100644 --- a/lib/dependencies/ModuleDecoratorDependency.js +++ b/lib/dependencies/ModuleDecoratorDependency.js @@ -18,6 +18,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../DependencyTemplates")} DependencyTemplates */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ @@ -76,6 +78,9 @@ class ModuleDecoratorDependency extends NullDependency { hash.update(this._hashUpdate); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.decorator); @@ -83,6 +88,9 @@ class ModuleDecoratorDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.decorator = read(); diff --git a/lib/dependencies/ModuleDependency.js b/lib/dependencies/ModuleDependency.js index 0efbdaeb8cf..39c7b270a5c 100644 --- a/lib/dependencies/ModuleDependency.js +++ b/lib/dependencies/ModuleDependency.js @@ -11,6 +11,8 @@ const memoize = require("../util/memoize"); /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */ /** @typedef {import("../Module")} Module */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ const getRawModule = memoize(() => require("../RawModule")); @@ -67,6 +69,9 @@ class ModuleDependency extends Dependency { ); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.request); @@ -76,6 +81,9 @@ class ModuleDependency extends Dependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.request = read(); diff --git a/lib/dependencies/ProvidedDependency.js b/lib/dependencies/ProvidedDependency.js index 7f9c324ea63..5fb2f3d5957 100644 --- a/lib/dependencies/ProvidedDependency.js +++ b/lib/dependencies/ProvidedDependency.js @@ -18,6 +18,8 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../DependencyTemplates")} DependencyTemplates */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ @@ -78,6 +80,9 @@ class ProvidedDependency extends ModuleDependency { hash.update(this._hashUpdate); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.identifier); @@ -85,6 +90,9 @@ class ProvidedDependency extends ModuleDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.identifier = read(); diff --git a/lib/dependencies/PureExpressionDependency.js b/lib/dependencies/PureExpressionDependency.js index 3ee70286d1d..180141ed511 100644 --- a/lib/dependencies/PureExpressionDependency.js +++ b/lib/dependencies/PureExpressionDependency.js @@ -17,6 +17,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ class PureExpressionDependency extends NullDependency { @@ -52,6 +54,9 @@ class PureExpressionDependency extends NullDependency { return false; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.range); @@ -59,6 +64,9 @@ class PureExpressionDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.range = read(); diff --git a/lib/dependencies/RequireEnsureDependency.js b/lib/dependencies/RequireEnsureDependency.js index ab6347e1c78..c552faab993 100644 --- a/lib/dependencies/RequireEnsureDependency.js +++ b/lib/dependencies/RequireEnsureDependency.js @@ -13,6 +13,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class RequireEnsureDependency extends NullDependency { constructor(range, contentRange, errorHandlerRange) { @@ -27,6 +29,9 @@ class RequireEnsureDependency extends NullDependency { return "require.ensure"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -37,6 +42,9 @@ class RequireEnsureDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/RequireHeaderDependency.js b/lib/dependencies/RequireHeaderDependency.js index db76b5f4fc2..79022636825 100644 --- a/lib/dependencies/RequireHeaderDependency.js +++ b/lib/dependencies/RequireHeaderDependency.js @@ -12,6 +12,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class RequireHeaderDependency extends NullDependency { constructor(range) { @@ -20,6 +22,9 @@ class RequireHeaderDependency extends NullDependency { this.range = range; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.range); diff --git a/lib/dependencies/RequireResolveContextDependency.js b/lib/dependencies/RequireResolveContextDependency.js index 1bfe600d3e4..1d2454a4f15 100644 --- a/lib/dependencies/RequireResolveContextDependency.js +++ b/lib/dependencies/RequireResolveContextDependency.js @@ -9,6 +9,9 @@ const makeSerializable = require("../util/makeSerializable"); const ContextDependency = require("./ContextDependency"); const ContextDependencyTemplateAsId = require("./ContextDependencyTemplateAsId"); +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + class RequireResolveContextDependency extends ContextDependency { constructor(options, range, valueRange, context) { super(options, context); @@ -21,6 +24,9 @@ class RequireResolveContextDependency extends ContextDependency { return "amd require context"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -30,6 +36,9 @@ class RequireResolveContextDependency extends ContextDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/RequireResolveHeaderDependency.js b/lib/dependencies/RequireResolveHeaderDependency.js index bc4e177951c..6425d2e5942 100644 --- a/lib/dependencies/RequireResolveHeaderDependency.js +++ b/lib/dependencies/RequireResolveHeaderDependency.js @@ -11,6 +11,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class RequireResolveHeaderDependency extends NullDependency { constructor(range) { @@ -21,6 +23,9 @@ class RequireResolveHeaderDependency extends NullDependency { this.range = range; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; diff --git a/lib/dependencies/RuntimeRequirementsDependency.js b/lib/dependencies/RuntimeRequirementsDependency.js index a64248e9f8d..65752df3efb 100644 --- a/lib/dependencies/RuntimeRequirementsDependency.js +++ b/lib/dependencies/RuntimeRequirementsDependency.js @@ -14,6 +14,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ class RuntimeRequirementsDependency extends NullDependency { @@ -39,12 +41,18 @@ class RuntimeRequirementsDependency extends NullDependency { hash.update(this._hashUpdate); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.runtimeRequirements); super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.runtimeRequirements = read(); diff --git a/lib/dependencies/StaticExportsDependency.js b/lib/dependencies/StaticExportsDependency.js index d58e3286de4..d91b5e43da5 100644 --- a/lib/dependencies/StaticExportsDependency.js +++ b/lib/dependencies/StaticExportsDependency.js @@ -13,6 +13,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */ /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ class StaticExportsDependency extends NullDependency { @@ -43,6 +45,9 @@ class StaticExportsDependency extends NullDependency { }; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.exports); @@ -50,6 +55,9 @@ class StaticExportsDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.exports = read(); diff --git a/lib/dependencies/URLDependency.js b/lib/dependencies/URLDependency.js index a00c526c733..06ed7d9b107 100644 --- a/lib/dependencies/URLDependency.js +++ b/lib/dependencies/URLDependency.js @@ -22,6 +22,8 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */ /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ @@ -72,6 +74,9 @@ class URLDependency extends ModuleDependency { return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.outerRange); @@ -80,6 +85,9 @@ class URLDependency extends ModuleDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.outerRange = read(); diff --git a/lib/dependencies/UnsupportedDependency.js b/lib/dependencies/UnsupportedDependency.js index b8624b8bb5e..0f4ee2195e6 100644 --- a/lib/dependencies/UnsupportedDependency.js +++ b/lib/dependencies/UnsupportedDependency.js @@ -11,6 +11,8 @@ const NullDependency = require("./NullDependency"); /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */ /** @typedef {import("../Dependency")} Dependency */ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ class UnsupportedDependency extends NullDependency { constructor(request, range) { @@ -20,6 +22,9 @@ class UnsupportedDependency extends NullDependency { this.range = range; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -29,6 +34,9 @@ class UnsupportedDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/WebAssemblyExportImportedDependency.js b/lib/dependencies/WebAssemblyExportImportedDependency.js index ec3f3afac0e..f62f311b997 100644 --- a/lib/dependencies/WebAssemblyExportImportedDependency.js +++ b/lib/dependencies/WebAssemblyExportImportedDependency.js @@ -12,6 +12,8 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */ /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ class WebAssemblyExportImportedDependency extends ModuleDependency { @@ -50,6 +52,9 @@ class WebAssemblyExportImportedDependency extends ModuleDependency { return "wasm"; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -60,6 +65,9 @@ class WebAssemblyExportImportedDependency extends ModuleDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/WebAssemblyImportDependency.js b/lib/dependencies/WebAssemblyImportDependency.js index 52c23280bc2..badc78764cf 100644 --- a/lib/dependencies/WebAssemblyImportDependency.js +++ b/lib/dependencies/WebAssemblyImportDependency.js @@ -13,6 +13,8 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ /** @typedef {import("../WebpackError")} WebpackError */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ class WebAssemblyImportDependency extends ModuleDependency { @@ -71,6 +73,9 @@ class WebAssemblyImportDependency extends ModuleDependency { } } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; @@ -81,6 +86,9 @@ class WebAssemblyImportDependency extends ModuleDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; diff --git a/lib/dependencies/WorkerDependency.js b/lib/dependencies/WorkerDependency.js index 2f23e059b12..4c183691f8f 100644 --- a/lib/dependencies/WorkerDependency.js +++ b/lib/dependencies/WorkerDependency.js @@ -18,6 +18,8 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../Entrypoint")} Entrypoint */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ @@ -68,12 +70,18 @@ class WorkerDependency extends ModuleDependency { hash.update(this._hashUpdate); } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.options); super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.options = read(); diff --git a/lib/index.js b/lib/index.js index 6827c731666..ec665686a8f 100644 --- a/lib/index.js +++ b/lib/index.js @@ -18,6 +18,7 @@ const memoize = require("./util/memoize"); /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */ /** @typedef {import("../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */ /** @typedef {import("../declarations/WebpackOptions").LibraryOptions} LibraryOptions */ +/** @typedef {import("../declarations/WebpackOptions").MemoryCacheOptions} MemoryCacheOptions */ /** @typedef {import("../declarations/WebpackOptions").ModuleOptions} ModuleOptions */ /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */ /** @typedef {import("../declarations/WebpackOptions").RuleSetCondition} RuleSetCondition */ diff --git a/lib/javascript/JavascriptParser.js b/lib/javascript/JavascriptParser.js index 8df4f96c5d0..3800822ee8e 100644 --- a/lib/javascript/JavascriptParser.js +++ b/lib/javascript/JavascriptParser.js @@ -2482,7 +2482,7 @@ class JavascriptParser extends Parser { walkFunctionExpression(expression) { const wasTopLevel = this.scope.topLevelScope; this.scope.topLevelScope = false; - const scopeParams = expression.params; + const scopeParams = [...expression.params]; // Add function name in scope for recursive calls if (expression.id) { diff --git a/lib/optimize/RealContentHashPlugin.js b/lib/optimize/RealContentHashPlugin.js index 9ceb157781d..bf7ac967d95 100644 --- a/lib/optimize/RealContentHashPlugin.js +++ b/lib/optimize/RealContentHashPlugin.js @@ -15,6 +15,7 @@ const createHash = require("../util/createHash"); /** @typedef {import("webpack-sources").Source} Source */ /** @typedef {import("../Compilation").AssetInfo} AssetInfo */ /** @typedef {import("../Compiler")} Compiler */ +/** @typedef {typeof import("../util/Hash")} Hash */ const EMPTY_SET = new Set(); @@ -115,6 +116,11 @@ class RealContentHashPlugin { return hooks; } + /** + * @param {Object} options options object + * @param {string | Hash} options.hashFunction the hash function to use + * @param {string} options.hashDigest the hash digest to use + */ constructor({ hashFunction, hashDigest }) { this._hashFunction = hashFunction; this._hashDigest = hashDigest; diff --git a/lib/runtime/AutoPublicPathRuntimeModule.js b/lib/runtime/AutoPublicPathRuntimeModule.js index fa962f15947..cc09af78ee5 100644 --- a/lib/runtime/AutoPublicPathRuntimeModule.js +++ b/lib/runtime/AutoPublicPathRuntimeModule.js @@ -47,7 +47,12 @@ class AutoPublicPathRuntimeModule extends RuntimeModule { "if (!scriptUrl) {", Template.indent([ 'var scripts = document.getElementsByTagName("script");', - "if(scripts.length) scriptUrl = scripts[scripts.length - 1].src" + "if(scripts.length) {", + Template.indent([ + "var i = scripts.length - 1;", + "while (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;" + ]), + "}" ]), "}" ]), diff --git a/lib/serialization/ObjectMiddleware.js b/lib/serialization/ObjectMiddleware.js index 9d48d2d7315..ae5c40229ee 100644 --- a/lib/serialization/ObjectMiddleware.js +++ b/lib/serialization/ObjectMiddleware.js @@ -46,11 +46,13 @@ Technically any value can be used. /** * @typedef {Object} ObjectSerializerContext * @property {function(any): void} write + * @property {function(any): void} setCircularReference */ /** * @typedef {Object} ObjectDeserializerContext * @property {function(): any} read + * @property {function(any): void} setCircularReference */ /** diff --git a/lib/sharing/ConsumeSharedModule.js b/lib/sharing/ConsumeSharedModule.js index 4a8e83f5900..12f2918c6b4 100644 --- a/lib/sharing/ConsumeSharedModule.js +++ b/lib/sharing/ConsumeSharedModule.js @@ -25,6 +25,8 @@ const ConsumeSharedFallbackDependency = require("./ConsumeSharedFallbackDependen /** @typedef {import("../RequestShortener")} RequestShortener */ /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */ /** @typedef {import("../WebpackError")} WebpackError */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */ /** @typedef {import("../util/semver").SemVerRange} SemVerRange */ @@ -230,12 +232,18 @@ class ConsumeSharedModule extends Module { }; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this.options); super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + */ deserialize(context) { const { read } = context; this.options = read(); diff --git a/lib/sharing/ConsumeSharedRuntimeModule.js b/lib/sharing/ConsumeSharedRuntimeModule.js index 78edabd60a5..9b5f0aaf69b 100644 --- a/lib/sharing/ConsumeSharedRuntimeModule.js +++ b/lib/sharing/ConsumeSharedRuntimeModule.js @@ -119,8 +119,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule { "scope, scopeName, key, requiredVersion", [ "var version = findSingletonVersionKey(scope, key);", - "if (!satisfy(requiredVersion, version)) " + - 'typeof console !== "undefined" && console.warn && console.warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));', + "if (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));", "return get(scope[key][version]);" ] )};`, @@ -166,10 +165,17 @@ class ConsumeSharedRuntimeModule extends RuntimeModule { "throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));" ] )};`, + `var warn = ${ + this.compilation.options.output.ignoreBrowserWarnings + ? runtimeTemplate.basicFunction("", "") + : runtimeTemplate.basicFunction("msg", [ + 'if (typeof console !== "undefined" && console.warn) console.warn(msg);' + ]) + };`, `var warnInvalidVersion = ${runtimeTemplate.basicFunction( "scope, scopeName, key, requiredVersion", [ - 'typeof console !== "undefined" && console.warn && console.warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));' + "warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));" ] )};`, `var get = ${runtimeTemplate.basicFunction("entry", [ diff --git a/lib/sharing/ProvideSharedDependency.js b/lib/sharing/ProvideSharedDependency.js index fa243511067..2f7246d667b 100644 --- a/lib/sharing/ProvideSharedDependency.js +++ b/lib/sharing/ProvideSharedDependency.js @@ -8,6 +8,9 @@ const Dependency = require("../Dependency"); const makeSerializable = require("../util/makeSerializable"); +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ + class ProvideSharedDependency extends Dependency { constructor(shareScope, name, version, request, eager) { super(); @@ -31,6 +34,9 @@ class ProvideSharedDependency extends Dependency { } @ ${this.version}${this.eager ? " (eager)" : ""}`; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { context.write(this.shareScope); context.write(this.name); diff --git a/lib/sharing/ProvideSharedModule.js b/lib/sharing/ProvideSharedModule.js index 1749ac4c859..97ce92d99d8 100644 --- a/lib/sharing/ProvideSharedModule.js +++ b/lib/sharing/ProvideSharedModule.js @@ -23,6 +23,8 @@ const ProvideForSharedDependency = require("./ProvideForSharedDependency"); /** @typedef {import("../RequestShortener")} RequestShortener */ /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */ /** @typedef {import("../WebpackError")} WebpackError */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ +/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ /** @typedef {import("../util/Hash")} Hash */ /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */ @@ -158,6 +160,9 @@ class ProvideSharedModule extends Module { return { sources, data, runtimeRequirements }; } + /** + * @param {ObjectSerializerContext} context context + */ serialize(context) { const { write } = context; write(this._shareScope); diff --git a/lib/sharing/ShareRuntimeModule.js b/lib/sharing/ShareRuntimeModule.js index eca7252315e..762c7b7e4af 100644 --- a/lib/sharing/ShareRuntimeModule.js +++ b/lib/sharing/ShareRuntimeModule.js @@ -77,10 +77,13 @@ class ShareRuntimeModule extends RuntimeModule { `if(!${RuntimeGlobals.hasOwnProperty}(${RuntimeGlobals.shareScopeMap}, name)) ${RuntimeGlobals.shareScopeMap}[name] = {};`, "// runs all init snippets from all modules reachable", `var scope = ${RuntimeGlobals.shareScopeMap}[name];`, - `var warn = ${runtimeTemplate.returningFunction( - 'typeof console !== "undefined" && console.warn && console.warn(msg)', - "msg" - )};`, + `var warn = ${ + this.compilation.options.output.ignoreBrowserWarnings + ? runtimeTemplate.basicFunction("", "") + : runtimeTemplate.basicFunction("msg", [ + 'if (typeof console !== "undefined" && console.warn) console.warn(msg);' + ]) + };`, `var uniqueName = ${JSON.stringify(uniqueName || undefined)};`, `var register = ${runtimeTemplate.basicFunction( "name, version, factory, eager", diff --git a/lib/util/LazySet.js b/lib/util/LazySet.js index 0d3b13ba0c7..69831d675d6 100644 --- a/lib/util/LazySet.js +++ b/lib/util/LazySet.js @@ -87,7 +87,7 @@ class LazySet { /** * @param {T} item an item - * @returns {this} itself + * @returns {LazySet} itself */ add(item) { this._set.add(item); @@ -96,7 +96,7 @@ class LazySet { /** * @param {Iterable | LazySet} iterable a immutable iterable or another immutable LazySet which will eventually be merged into the Set - * @returns {this} itself + * @returns {LazySet} itself */ addAll(iterable) { if (this._deopt) { @@ -187,12 +187,20 @@ class LazySet { return "LazySet"; } + /** + * @param {import("../serialization/ObjectMiddleware").ObjectSerializerContext} context context + */ serialize({ write }) { if (this._needMerge) this._merge(); write(this._set.size); for (const item of this._set) write(item); } + /** + * @template T + * @param {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} context context + * @returns {LazySet} lazy set + */ static deserialize({ read }) { const count = read(); const items = []; diff --git a/lib/util/MapHelpers.js b/lib/util/MapHelpers.js index c87b93b71ba..d855a15f4f8 100644 --- a/lib/util/MapHelpers.js +++ b/lib/util/MapHelpers.js @@ -6,16 +6,30 @@ "use strict"; /** + * getOrInsert is a helper function for maps that allows you to get a value + * from a map if it exists, or insert a new value if it doesn't. If it value doesn't + * exist, it will be computed by the provided function. + * * @template K * @template V - * @param {Map} map a map - * @param {K} key the key - * @param {function(): V} computer compute value - * @returns {V} value + * @param {Map} map The map object to check + * @param {K} key The key to check + * @param {function(): V} computer function which will compute the value if it doesn't exist + * @returns {V} The value from the map, or the computed value + * + * @example + * ```js + * const map = new Map(); + * const value = getOrInsert(map, "key", () => "value"); + * console.log(value); // "value" + * ``` */ -exports.provide = (map, key, computer) => { +exports.getOrInsert = (map, key, computer) => { + // Grab key from map const value = map.get(key); + // If the value already exists, return it if (value !== undefined) return value; + // Otherwise compute the value, set it in the map, and return it const newValue = computer(); map.set(key, newValue); return newValue; diff --git a/lib/util/binarySearchBounds.js b/lib/util/binarySearchBounds.js index 5bc506af8af..af04daa1718 100644 --- a/lib/util/binarySearchBounds.js +++ b/lib/util/binarySearchBounds.js @@ -8,6 +8,28 @@ /* cspell:disable-next-line */ // Refactor: Peter Somogyvari @petermetz +/** @typedef {">=" | "<=" | "<" | ">" | "-" } BinarySearchPredicate */ +/** @typedef {"GE" | "GT" | "LT" | "LE" | "EQ" } SearchPredicateSuffix */ + +/** + * Helper function for compiling binary search functions. + * + * The generated code uses a while loop to repeatedly divide the search interval + * in half until the desired element is found, or the search interval is empty. + * + * The following is an example of a generated function for calling `compileSearch("P", "c(x,y)<=0", true, ["y", "c"], false)`: + * + * ```js + * function P(a,l,h,y,c){var i=l-1;while(l<=h){var m=(l+h)>>>1,x=a[m];if(c(x,y)<=0){i=m;l=m+1}else{h=m-1}}return i}; + * ``` + * + * @param {string} funcName The name of the function to be compiled. + * @param {string} predicate The predicate / comparison operator to be used in the binary search. + * @param {boolean} reversed Whether the search should be reversed. + * @param {string[]} extraArgs Extra arguments to be passed to the function. + * @param {boolean=} earlyOut Whether the search should return as soon as a match is found. + * @returns {string} The compiled binary search function. + */ const compileSearch = (funcName, predicate, reversed, extraArgs, earlyOut) => { const code = [ "function ", @@ -43,6 +65,18 @@ const compileSearch = (funcName, predicate, reversed, extraArgs, earlyOut) => { return code.join(""); }; +/** + * This helper functions generate code for two binary search functions: + * A(): Performs a binary search on an array using the comparison operator specified. + * P(): Performs a binary search on an array using a _custom comparison function_ + * `c(x,y)` **and** comparison operator specified by `predicate`. + * + * @param {BinarySearchPredicate} predicate The predicate / comparison operator to be used in the binary search. + * @param {boolean} reversed Whether the search should be reversed. + * @param {SearchPredicateSuffix} suffix The suffix to be used in the function name. + * @param {boolean=} earlyOut Whether the search should return as soon as a match is found. + * @returns {function} The compiled binary search function. + */ const compileBoundsSearch = (predicate, reversed, suffix, earlyOut) => { const arg1 = compileSearch( "A", @@ -77,6 +111,21 @@ return dispatchBinarySearch"; return result(); }; +/** + * These functions are used to perform binary searches on arrays. + * + * @example + * ```js + * const { gt, le} = require("./binarySearchBounds"); + * const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; + * + * // Find the index of the first element greater than 5 + * const index1 = gt(arr, 5); // index1 === 3 + * + * // Find the index of the first element less than or equal to 5 + * const index2 = le(arr, 5); // index2 === 4 + * ``` + */ module.exports = { ge: compileBoundsSearch(">=", false, "GE"), gt: compileBoundsSearch(">", false, "GT"), diff --git a/lib/util/internalSerializables.js b/lib/util/internalSerializables.js index 4fe124cdb3a..9c4d80f0237 100644 --- a/lib/util/internalSerializables.js +++ b/lib/util/internalSerializables.js @@ -189,6 +189,7 @@ module.exports = { ModuleParseError: () => require("../ModuleParseError"), ModuleWarning: () => require("../ModuleWarning"), NormalModule: () => require("../NormalModule"), + CssModule: () => require("../CssModule"), RawDataUrlModule: () => require("../asset/RawDataUrlModule"), RawModule: () => require("../RawModule"), "sharing/ConsumeSharedModule": () => diff --git a/lib/util/semver.js b/lib/util/semver.js index 1ffb923ef35..ddd8e65d882 100644 --- a/lib/util/semver.js +++ b/lib/util/semver.js @@ -288,7 +288,7 @@ const satisfy = (range, version) => { if (0 in range) { // @ts-expect-error version = parseVersion(version); - var fixCount = range[0]; + var fixCount = /** @type {number} */ (range[0]); // when negated is set it swill set for < instead of >= var negated = fixCount < 0; if (negated) fixCount = -fixCount - 1; diff --git a/package.json b/package.json index 8653ca72569..d1fc403bc8b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "webpack", - "version": "5.80.0", + "version": "5.81.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", @@ -56,7 +56,7 @@ "eslint": "^8.38.0", "eslint-config-prettier": "^8.1.0", "eslint-plugin-jest": "^27.2.1", - "eslint-plugin-jsdoc": "^41.1.1", + "eslint-plugin-jsdoc": "^43.0.5", "eslint-plugin-node": "^11.0.0", "eslint-plugin-prettier": "^4.2.1", "file-loader": "^6.0.0", @@ -76,7 +76,6 @@ "less": "^4.0.0", "less-loader": "^8.0.0", "lint-staged": "^13.2.1", - "loader-utils": "^2.0.3", "lodash": "^4.17.19", "lodash-es": "^4.17.15", "memfs": "^3.5.0", @@ -96,11 +95,11 @@ "simple-git": "^3.17.0", "strip-ansi": "^6.0.0", "style-loader": "^2.0.0", - "terser": "^5.16.9", + "terser": "^5.17.0", "toml": "^3.0.0", "tooling": "webpack/tooling#v1.22.1", "ts-loader": "^9.4.2", - "typescript": "^4.8.4", + "typescript": "^5.0.4", "url-loader": "^4.1.0", "wast-loader": "^1.11.5", "webassembly-feature": "1.3.0", diff --git a/schemas/WebpackOptions.check.js b/schemas/WebpackOptions.check.js index 8fbef40f003..9bc38e9557a 100644 --- a/schemas/WebpackOptions.check.js +++ b/schemas/WebpackOptions.check.js @@ -3,4 +3,4 @@ * DO NOT MODIFY BY HAND. * Run `yarn special-lint-fix` to update */ -const e=/^(?:[A-Za-z]:[\\/]|\\\\|\/)/;module.exports=Me,module.exports.default=Me;const t={definitions:{Amd:{anyOf:[{enum:[!1]},{type:"object"}]},AmdContainer:{type:"string",minLength:1},AssetFilterItemTypes:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!1},{instanceof:"Function"}]},AssetFilterTypes:{anyOf:[{type:"array",items:{oneOf:[{$ref:"#/definitions/AssetFilterItemTypes"}]}},{$ref:"#/definitions/AssetFilterItemTypes"}]},AssetGeneratorDataUrl:{anyOf:[{$ref:"#/definitions/AssetGeneratorDataUrlOptions"},{$ref:"#/definitions/AssetGeneratorDataUrlFunction"}]},AssetGeneratorDataUrlFunction:{instanceof:"Function"},AssetGeneratorDataUrlOptions:{type:"object",additionalProperties:!1,properties:{encoding:{enum:[!1,"base64"]},mimetype:{type:"string"}}},AssetGeneratorOptions:{type:"object",additionalProperties:!1,properties:{dataUrl:{$ref:"#/definitions/AssetGeneratorDataUrl"},emit:{type:"boolean"},filename:{$ref:"#/definitions/FilenameTemplate"},outputPath:{$ref:"#/definitions/AssetModuleOutputPath"},publicPath:{$ref:"#/definitions/RawPublicPath"}}},AssetInlineGeneratorOptions:{type:"object",additionalProperties:!1,properties:{dataUrl:{$ref:"#/definitions/AssetGeneratorDataUrl"}}},AssetModuleFilename:{anyOf:[{type:"string",absolutePath:!1},{instanceof:"Function"}]},AssetModuleOutputPath:{anyOf:[{type:"string",absolutePath:!1},{instanceof:"Function"}]},AssetParserDataUrlFunction:{instanceof:"Function"},AssetParserDataUrlOptions:{type:"object",additionalProperties:!1,properties:{maxSize:{type:"number"}}},AssetParserOptions:{type:"object",additionalProperties:!1,properties:{dataUrlCondition:{anyOf:[{$ref:"#/definitions/AssetParserDataUrlOptions"},{$ref:"#/definitions/AssetParserDataUrlFunction"}]}}},AssetResourceGeneratorOptions:{type:"object",additionalProperties:!1,properties:{emit:{type:"boolean"},filename:{$ref:"#/definitions/FilenameTemplate"},outputPath:{$ref:"#/definitions/AssetModuleOutputPath"},publicPath:{$ref:"#/definitions/RawPublicPath"}}},AuxiliaryComment:{anyOf:[{type:"string"},{$ref:"#/definitions/LibraryCustomUmdCommentObject"}]},Bail:{type:"boolean"},CacheOptions:{anyOf:[{enum:[!0]},{$ref:"#/definitions/CacheOptionsNormalized"}]},CacheOptionsNormalized:{anyOf:[{enum:[!1]},{$ref:"#/definitions/MemoryCacheOptions"},{$ref:"#/definitions/FileCacheOptions"}]},Charset:{type:"boolean"},ChunkFilename:{oneOf:[{$ref:"#/definitions/FilenameTemplate"}]},ChunkFormat:{anyOf:[{enum:["array-push","commonjs","module",!1]},{type:"string"}]},ChunkLoadTimeout:{type:"number"},ChunkLoading:{anyOf:[{enum:[!1]},{$ref:"#/definitions/ChunkLoadingType"}]},ChunkLoadingGlobal:{type:"string"},ChunkLoadingType:{anyOf:[{enum:["jsonp","import-scripts","require","async-node","import"]},{type:"string"}]},Clean:{anyOf:[{type:"boolean"},{$ref:"#/definitions/CleanOptions"}]},CleanOptions:{type:"object",additionalProperties:!1,properties:{dry:{type:"boolean"},keep:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!1},{instanceof:"Function"}]}}},CompareBeforeEmit:{type:"boolean"},Context:{type:"string",absolutePath:!0},CrossOriginLoading:{enum:[!1,"anonymous","use-credentials"]},CssChunkFilename:{oneOf:[{$ref:"#/definitions/FilenameTemplate"}]},CssExperimentOptions:{type:"object",additionalProperties:!1,properties:{exportsOnly:{type:"boolean"}}},CssFilename:{oneOf:[{$ref:"#/definitions/FilenameTemplate"}]},CssGeneratorOptions:{type:"object",additionalProperties:!1,properties:{}},CssParserOptions:{type:"object",additionalProperties:!1,properties:{}},Dependencies:{type:"array",items:{type:"string"}},DevServer:{type:"object"},DevTool:{anyOf:[{enum:[!1,"eval"]},{type:"string",pattern:"^(inline-|hidden-|eval-)?(nosources-)?(cheap-(module-)?)?source-map$"}]},DevtoolFallbackModuleFilenameTemplate:{anyOf:[{type:"string"},{instanceof:"Function"}]},DevtoolModuleFilenameTemplate:{anyOf:[{type:"string"},{instanceof:"Function"}]},DevtoolNamespace:{type:"string"},EmptyGeneratorOptions:{type:"object",additionalProperties:!1},EmptyParserOptions:{type:"object",additionalProperties:!1},EnabledChunkLoadingTypes:{type:"array",items:{$ref:"#/definitions/ChunkLoadingType"}},EnabledLibraryTypes:{type:"array",items:{$ref:"#/definitions/LibraryType"}},EnabledWasmLoadingTypes:{type:"array",items:{$ref:"#/definitions/WasmLoadingType"}},Entry:{anyOf:[{$ref:"#/definitions/EntryDynamic"},{$ref:"#/definitions/EntryStatic"}]},EntryDescription:{type:"object",additionalProperties:!1,properties:{asyncChunks:{type:"boolean"},baseUri:{type:"string"},chunkLoading:{$ref:"#/definitions/ChunkLoading"},dependOn:{anyOf:[{type:"array",items:{type:"string",minLength:1},minItems:1,uniqueItems:!0},{type:"string",minLength:1}]},filename:{$ref:"#/definitions/EntryFilename"},import:{$ref:"#/definitions/EntryItem"},layer:{$ref:"#/definitions/Layer"},library:{$ref:"#/definitions/LibraryOptions"},publicPath:{$ref:"#/definitions/PublicPath"},runtime:{$ref:"#/definitions/EntryRuntime"},wasmLoading:{$ref:"#/definitions/WasmLoading"}},required:["import"]},EntryDescriptionNormalized:{type:"object",additionalProperties:!1,properties:{asyncChunks:{type:"boolean"},baseUri:{type:"string"},chunkLoading:{$ref:"#/definitions/ChunkLoading"},dependOn:{type:"array",items:{type:"string",minLength:1},minItems:1,uniqueItems:!0},filename:{$ref:"#/definitions/Filename"},import:{type:"array",items:{type:"string",minLength:1},minItems:1,uniqueItems:!0},layer:{$ref:"#/definitions/Layer"},library:{$ref:"#/definitions/LibraryOptions"},publicPath:{$ref:"#/definitions/PublicPath"},runtime:{$ref:"#/definitions/EntryRuntime"},wasmLoading:{$ref:"#/definitions/WasmLoading"}}},EntryDynamic:{instanceof:"Function"},EntryDynamicNormalized:{instanceof:"Function"},EntryFilename:{oneOf:[{$ref:"#/definitions/FilenameTemplate"}]},EntryItem:{anyOf:[{type:"array",items:{type:"string",minLength:1},minItems:1,uniqueItems:!0},{type:"string",minLength:1}]},EntryNormalized:{anyOf:[{$ref:"#/definitions/EntryDynamicNormalized"},{$ref:"#/definitions/EntryStaticNormalized"}]},EntryObject:{type:"object",additionalProperties:{anyOf:[{$ref:"#/definitions/EntryItem"},{$ref:"#/definitions/EntryDescription"}]}},EntryRuntime:{anyOf:[{enum:[!1]},{type:"string",minLength:1}]},EntryStatic:{anyOf:[{$ref:"#/definitions/EntryObject"},{$ref:"#/definitions/EntryUnnamed"}]},EntryStaticNormalized:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/EntryDescriptionNormalized"}]}},EntryUnnamed:{oneOf:[{$ref:"#/definitions/EntryItem"}]},Environment:{type:"object",additionalProperties:!1,properties:{arrowFunction:{type:"boolean"},bigIntLiteral:{type:"boolean"},const:{type:"boolean"},destructuring:{type:"boolean"},dynamicImport:{type:"boolean"},forOf:{type:"boolean"},module:{type:"boolean"},optionalChaining:{type:"boolean"},templateLiteral:{type:"boolean"}}},Experiments:{type:"object",additionalProperties:!1,properties:{asyncWebAssembly:{type:"boolean"},backCompat:{type:"boolean"},buildHttp:{anyOf:[{$ref:"#/definitions/HttpUriAllowedUris"},{$ref:"#/definitions/HttpUriOptions"}]},cacheUnaffected:{type:"boolean"},css:{anyOf:[{type:"boolean"},{$ref:"#/definitions/CssExperimentOptions"}]},futureDefaults:{type:"boolean"},layers:{type:"boolean"},lazyCompilation:{anyOf:[{type:"boolean"},{$ref:"#/definitions/LazyCompilationOptions"}]},outputModule:{type:"boolean"},syncWebAssembly:{type:"boolean"},topLevelAwait:{type:"boolean"}}},ExperimentsCommon:{type:"object",additionalProperties:!1,properties:{asyncWebAssembly:{type:"boolean"},backCompat:{type:"boolean"},cacheUnaffected:{type:"boolean"},futureDefaults:{type:"boolean"},layers:{type:"boolean"},outputModule:{type:"boolean"},syncWebAssembly:{type:"boolean"},topLevelAwait:{type:"boolean"}}},ExperimentsNormalized:{type:"object",additionalProperties:!1,properties:{asyncWebAssembly:{type:"boolean"},backCompat:{type:"boolean"},buildHttp:{oneOf:[{$ref:"#/definitions/HttpUriOptions"}]},cacheUnaffected:{type:"boolean"},css:{anyOf:[{enum:[!1]},{$ref:"#/definitions/CssExperimentOptions"}]},futureDefaults:{type:"boolean"},layers:{type:"boolean"},lazyCompilation:{anyOf:[{enum:[!1]},{$ref:"#/definitions/LazyCompilationOptions"}]},outputModule:{type:"boolean"},syncWebAssembly:{type:"boolean"},topLevelAwait:{type:"boolean"}}},ExternalItem:{anyOf:[{instanceof:"RegExp"},{type:"string"},{type:"object",additionalProperties:{$ref:"#/definitions/ExternalItemValue"},properties:{byLayer:{anyOf:[{type:"object",additionalProperties:{$ref:"#/definitions/ExternalItem"}},{instanceof:"Function"}]}}},{instanceof:"Function"}]},ExternalItemFunctionData:{type:"object",additionalProperties:!1,properties:{context:{type:"string"},contextInfo:{type:"object"},dependencyType:{type:"string"},getResolve:{instanceof:"Function"},request:{type:"string"}}},ExternalItemValue:{anyOf:[{type:"array",items:{type:"string",minLength:1}},{type:"boolean"},{type:"string"},{type:"object"}]},Externals:{anyOf:[{type:"array",items:{$ref:"#/definitions/ExternalItem"}},{$ref:"#/definitions/ExternalItem"}]},ExternalsPresets:{type:"object",additionalProperties:!1,properties:{electron:{type:"boolean"},electronMain:{type:"boolean"},electronPreload:{type:"boolean"},electronRenderer:{type:"boolean"},node:{type:"boolean"},nwjs:{type:"boolean"},web:{type:"boolean"},webAsync:{type:"boolean"}}},ExternalsType:{enum:["var","module","assign","this","window","self","global","commonjs","commonjs2","commonjs-module","commonjs-static","amd","amd-require","umd","umd2","jsonp","system","promise","import","script","node-commonjs"]},FileCacheOptions:{type:"object",additionalProperties:!1,properties:{allowCollectingMemory:{type:"boolean"},buildDependencies:{type:"object",additionalProperties:{type:"array",items:{type:"string",minLength:1}}},cacheDirectory:{type:"string",absolutePath:!0},cacheLocation:{type:"string",absolutePath:!0},compression:{enum:[!1,"gzip","brotli"]},hashAlgorithm:{type:"string"},idleTimeout:{type:"number",minimum:0},idleTimeoutAfterLargeChanges:{type:"number",minimum:0},idleTimeoutForInitialStore:{type:"number",minimum:0},immutablePaths:{type:"array",items:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!0,minLength:1}]}},managedPaths:{type:"array",items:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!0,minLength:1}]}},maxAge:{type:"number",minimum:0},maxMemoryGenerations:{type:"number",minimum:0},memoryCacheUnaffected:{type:"boolean"},name:{type:"string"},profile:{type:"boolean"},store:{enum:["pack"]},type:{enum:["filesystem"]},version:{type:"string"}},required:["type"]},Filename:{oneOf:[{$ref:"#/definitions/FilenameTemplate"}]},FilenameTemplate:{anyOf:[{type:"string",absolutePath:!1,minLength:1},{instanceof:"Function"}]},FilterItemTypes:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!1},{instanceof:"Function"}]},FilterTypes:{anyOf:[{type:"array",items:{oneOf:[{$ref:"#/definitions/FilterItemTypes"}]}},{$ref:"#/definitions/FilterItemTypes"}]},GeneratorOptionsByModuleType:{type:"object",additionalProperties:{type:"object",additionalProperties:!0},properties:{asset:{$ref:"#/definitions/AssetGeneratorOptions"},"asset/inline":{$ref:"#/definitions/AssetInlineGeneratorOptions"},"asset/resource":{$ref:"#/definitions/AssetResourceGeneratorOptions"},javascript:{$ref:"#/definitions/EmptyGeneratorOptions"},"javascript/auto":{$ref:"#/definitions/EmptyGeneratorOptions"},"javascript/dynamic":{$ref:"#/definitions/EmptyGeneratorOptions"},"javascript/esm":{$ref:"#/definitions/EmptyGeneratorOptions"}}},GlobalObject:{type:"string",minLength:1},HashDigest:{type:"string"},HashDigestLength:{type:"number",minimum:1},HashFunction:{anyOf:[{type:"string",minLength:1},{instanceof:"Function"}]},HashSalt:{type:"string",minLength:1},HotUpdateChunkFilename:{type:"string",absolutePath:!1},HotUpdateGlobal:{type:"string"},HotUpdateMainFilename:{type:"string",absolutePath:!1},HttpUriAllowedUris:{oneOf:[{$ref:"#/definitions/HttpUriOptionsAllowedUris"}]},HttpUriOptions:{type:"object",additionalProperties:!1,properties:{allowedUris:{$ref:"#/definitions/HttpUriOptionsAllowedUris"},cacheLocation:{anyOf:[{enum:[!1]},{type:"string",absolutePath:!0}]},frozen:{type:"boolean"},lockfileLocation:{type:"string",absolutePath:!0},proxy:{type:"string"},upgrade:{type:"boolean"}},required:["allowedUris"]},HttpUriOptionsAllowedUris:{type:"array",items:{anyOf:[{instanceof:"RegExp"},{type:"string",pattern:"^https?://"},{instanceof:"Function"}]}},IgnoreWarnings:{type:"array",items:{anyOf:[{instanceof:"RegExp"},{type:"object",additionalProperties:!1,properties:{file:{instanceof:"RegExp"},message:{instanceof:"RegExp"},module:{instanceof:"RegExp"}}},{instanceof:"Function"}]}},IgnoreWarningsNormalized:{type:"array",items:{instanceof:"Function"}},Iife:{type:"boolean"},ImportFunctionName:{type:"string"},ImportMetaName:{type:"string"},InfrastructureLogging:{type:"object",additionalProperties:!1,properties:{appendOnly:{type:"boolean"},colors:{type:"boolean"},console:{},debug:{anyOf:[{type:"boolean"},{$ref:"#/definitions/FilterTypes"}]},level:{enum:["none","error","warn","info","log","verbose"]},stream:{}}},JavascriptParserOptions:{type:"object",additionalProperties:!0,properties:{amd:{$ref:"#/definitions/Amd"},browserify:{type:"boolean"},commonjs:{type:"boolean"},commonjsMagicComments:{type:"boolean"},createRequire:{anyOf:[{type:"boolean"},{type:"string"}]},dynamicImportMode:{enum:["eager","weak","lazy","lazy-once"]},dynamicImportPrefetch:{anyOf:[{type:"number"},{type:"boolean"}]},dynamicImportPreload:{anyOf:[{type:"number"},{type:"boolean"}]},exportsPresence:{enum:["error","warn","auto",!1]},exprContextCritical:{type:"boolean"},exprContextRecursive:{type:"boolean"},exprContextRegExp:{anyOf:[{instanceof:"RegExp"},{type:"boolean"}]},exprContextRequest:{type:"string"},harmony:{type:"boolean"},import:{type:"boolean"},importExportsPresence:{enum:["error","warn","auto",!1]},importMeta:{type:"boolean"},importMetaContext:{type:"boolean"},node:{$ref:"#/definitions/Node"},reexportExportsPresence:{enum:["error","warn","auto",!1]},requireContext:{type:"boolean"},requireEnsure:{type:"boolean"},requireInclude:{type:"boolean"},requireJs:{type:"boolean"},strictExportPresence:{type:"boolean"},strictThisContextOnImports:{type:"boolean"},system:{type:"boolean"},unknownContextCritical:{type:"boolean"},unknownContextRecursive:{type:"boolean"},unknownContextRegExp:{anyOf:[{instanceof:"RegExp"},{type:"boolean"}]},unknownContextRequest:{type:"string"},url:{anyOf:[{enum:["relative"]},{type:"boolean"}]},worker:{anyOf:[{type:"array",items:{type:"string",minLength:1}},{type:"boolean"}]},wrappedContextCritical:{type:"boolean"},wrappedContextRecursive:{type:"boolean"},wrappedContextRegExp:{instanceof:"RegExp"}}},Layer:{anyOf:[{enum:[null]},{type:"string",minLength:1}]},LazyCompilationDefaultBackendOptions:{type:"object",additionalProperties:!1,properties:{client:{type:"string"},listen:{anyOf:[{type:"number"},{type:"object",additionalProperties:!0,properties:{host:{type:"string"},port:{type:"number"}}},{instanceof:"Function"}]},protocol:{enum:["http","https"]},server:{anyOf:[{type:"object",additionalProperties:!0,properties:{}},{instanceof:"Function"}]}}},LazyCompilationOptions:{type:"object",additionalProperties:!1,properties:{backend:{anyOf:[{instanceof:"Function"},{$ref:"#/definitions/LazyCompilationDefaultBackendOptions"}]},entries:{type:"boolean"},imports:{type:"boolean"},test:{anyOf:[{instanceof:"RegExp"},{type:"string"},{instanceof:"Function"}]}}},Library:{anyOf:[{$ref:"#/definitions/LibraryName"},{$ref:"#/definitions/LibraryOptions"}]},LibraryCustomUmdCommentObject:{type:"object",additionalProperties:!1,properties:{amd:{type:"string"},commonjs:{type:"string"},commonjs2:{type:"string"},root:{type:"string"}}},LibraryCustomUmdObject:{type:"object",additionalProperties:!1,properties:{amd:{type:"string",minLength:1},commonjs:{type:"string",minLength:1},root:{anyOf:[{type:"array",items:{type:"string",minLength:1}},{type:"string",minLength:1}]}}},LibraryExport:{anyOf:[{type:"array",items:{type:"string",minLength:1}},{type:"string",minLength:1}]},LibraryName:{anyOf:[{type:"array",items:{type:"string",minLength:1},minItems:1},{type:"string",minLength:1},{$ref:"#/definitions/LibraryCustomUmdObject"}]},LibraryOptions:{type:"object",additionalProperties:!1,properties:{amdContainer:{$ref:"#/definitions/AmdContainer"},auxiliaryComment:{$ref:"#/definitions/AuxiliaryComment"},export:{$ref:"#/definitions/LibraryExport"},name:{$ref:"#/definitions/LibraryName"},type:{$ref:"#/definitions/LibraryType"},umdNamedDefine:{$ref:"#/definitions/UmdNamedDefine"}},required:["type"]},LibraryType:{anyOf:[{enum:["var","module","assign","assign-properties","this","window","self","global","commonjs","commonjs2","commonjs-module","commonjs-static","amd","amd-require","umd","umd2","jsonp","system"]},{type:"string"}]},Loader:{type:"object"},MemoryCacheOptions:{type:"object",additionalProperties:!1,properties:{cacheUnaffected:{type:"boolean"},maxGenerations:{type:"number",minimum:1},type:{enum:["memory"]}},required:["type"]},Mode:{enum:["development","production","none"]},ModuleFilterItemTypes:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!1},{instanceof:"Function"}]},ModuleFilterTypes:{anyOf:[{type:"array",items:{oneOf:[{$ref:"#/definitions/ModuleFilterItemTypes"}]}},{$ref:"#/definitions/ModuleFilterItemTypes"}]},ModuleOptions:{type:"object",additionalProperties:!1,properties:{defaultRules:{oneOf:[{$ref:"#/definitions/RuleSetRules"}]},exprContextCritical:{type:"boolean"},exprContextRecursive:{type:"boolean"},exprContextRegExp:{anyOf:[{instanceof:"RegExp"},{type:"boolean"}]},exprContextRequest:{type:"string"},generator:{$ref:"#/definitions/GeneratorOptionsByModuleType"},noParse:{$ref:"#/definitions/NoParse"},parser:{$ref:"#/definitions/ParserOptionsByModuleType"},rules:{oneOf:[{$ref:"#/definitions/RuleSetRules"}]},strictExportPresence:{type:"boolean"},strictThisContextOnImports:{type:"boolean"},unknownContextCritical:{type:"boolean"},unknownContextRecursive:{type:"boolean"},unknownContextRegExp:{anyOf:[{instanceof:"RegExp"},{type:"boolean"}]},unknownContextRequest:{type:"string"},unsafeCache:{anyOf:[{type:"boolean"},{instanceof:"Function"}]},wrappedContextCritical:{type:"boolean"},wrappedContextRecursive:{type:"boolean"},wrappedContextRegExp:{instanceof:"RegExp"}}},ModuleOptionsNormalized:{type:"object",additionalProperties:!1,properties:{defaultRules:{oneOf:[{$ref:"#/definitions/RuleSetRules"}]},generator:{$ref:"#/definitions/GeneratorOptionsByModuleType"},noParse:{$ref:"#/definitions/NoParse"},parser:{$ref:"#/definitions/ParserOptionsByModuleType"},rules:{oneOf:[{$ref:"#/definitions/RuleSetRules"}]},unsafeCache:{anyOf:[{type:"boolean"},{instanceof:"Function"}]}},required:["defaultRules","generator","parser","rules"]},Name:{type:"string"},NoParse:{anyOf:[{type:"array",items:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!0},{instanceof:"Function"}]},minItems:1},{instanceof:"RegExp"},{type:"string",absolutePath:!0},{instanceof:"Function"}]},Node:{anyOf:[{enum:[!1]},{$ref:"#/definitions/NodeOptions"}]},NodeOptions:{type:"object",additionalProperties:!1,properties:{__dirname:{enum:[!1,!0,"warn-mock","mock","eval-only"]},__filename:{enum:[!1,!0,"warn-mock","mock","eval-only"]},global:{enum:[!1,!0,"warn"]}}},Optimization:{type:"object",additionalProperties:!1,properties:{checkWasmTypes:{type:"boolean"},chunkIds:{enum:["natural","named","deterministic","size","total-size",!1]},concatenateModules:{type:"boolean"},emitOnErrors:{type:"boolean"},flagIncludedChunks:{type:"boolean"},innerGraph:{type:"boolean"},mangleExports:{anyOf:[{enum:["size","deterministic"]},{type:"boolean"}]},mangleWasmImports:{type:"boolean"},mergeDuplicateChunks:{type:"boolean"},minimize:{type:"boolean"},minimizer:{type:"array",items:{anyOf:[{enum:["..."]},{$ref:"#/definitions/WebpackPluginInstance"},{$ref:"#/definitions/WebpackPluginFunction"}]}},moduleIds:{enum:["natural","named","hashed","deterministic","size",!1]},noEmitOnErrors:{type:"boolean"},nodeEnv:{anyOf:[{enum:[!1]},{type:"string"}]},portableRecords:{type:"boolean"},providedExports:{type:"boolean"},realContentHash:{type:"boolean"},removeAvailableModules:{type:"boolean"},removeEmptyChunks:{type:"boolean"},runtimeChunk:{$ref:"#/definitions/OptimizationRuntimeChunk"},sideEffects:{anyOf:[{enum:["flag"]},{type:"boolean"}]},splitChunks:{anyOf:[{enum:[!1]},{$ref:"#/definitions/OptimizationSplitChunksOptions"}]},usedExports:{anyOf:[{enum:["global"]},{type:"boolean"}]}}},OptimizationRuntimeChunk:{anyOf:[{enum:["single","multiple"]},{type:"boolean"},{type:"object",additionalProperties:!1,properties:{name:{anyOf:[{type:"string"},{instanceof:"Function"}]}}}]},OptimizationRuntimeChunkNormalized:{anyOf:[{enum:[!1]},{type:"object",additionalProperties:!1,properties:{name:{instanceof:"Function"}}}]},OptimizationSplitChunksCacheGroup:{type:"object",additionalProperties:!1,properties:{automaticNameDelimiter:{type:"string",minLength:1},chunks:{anyOf:[{enum:["initial","async","all"]},{instanceof:"Function"}]},enforce:{type:"boolean"},enforceSizeThreshold:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},filename:{anyOf:[{type:"string",absolutePath:!1,minLength:1},{instanceof:"Function"}]},idHint:{type:"string"},layer:{anyOf:[{instanceof:"RegExp"},{type:"string"},{instanceof:"Function"}]},maxAsyncRequests:{type:"number",minimum:1},maxAsyncSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},maxInitialRequests:{type:"number",minimum:1},maxInitialSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},maxSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},minChunks:{type:"number",minimum:1},minRemainingSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},minSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},minSizeReduction:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},name:{anyOf:[{enum:[!1]},{type:"string"},{instanceof:"Function"}]},priority:{type:"number"},reuseExistingChunk:{type:"boolean"},test:{anyOf:[{instanceof:"RegExp"},{type:"string"},{instanceof:"Function"}]},type:{anyOf:[{instanceof:"RegExp"},{type:"string"},{instanceof:"Function"}]},usedExports:{type:"boolean"}}},OptimizationSplitChunksGetCacheGroups:{instanceof:"Function"},OptimizationSplitChunksOptions:{type:"object",additionalProperties:!1,properties:{automaticNameDelimiter:{type:"string",minLength:1},cacheGroups:{type:"object",additionalProperties:{anyOf:[{enum:[!1]},{instanceof:"RegExp"},{type:"string"},{instanceof:"Function"},{$ref:"#/definitions/OptimizationSplitChunksCacheGroup"}]},not:{type:"object",additionalProperties:!0,properties:{test:{anyOf:[{instanceof:"RegExp"},{type:"string"},{instanceof:"Function"}]}},required:["test"]}},chunks:{anyOf:[{enum:["initial","async","all"]},{instanceof:"Function"}]},defaultSizeTypes:{type:"array",items:{type:"string"},minItems:1},enforceSizeThreshold:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},fallbackCacheGroup:{type:"object",additionalProperties:!1,properties:{automaticNameDelimiter:{type:"string",minLength:1},chunks:{anyOf:[{enum:["initial","async","all"]},{instanceof:"Function"}]},maxAsyncSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},maxInitialSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},maxSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},minSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},minSizeReduction:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]}}},filename:{anyOf:[{type:"string",absolutePath:!1,minLength:1},{instanceof:"Function"}]},hidePathInfo:{type:"boolean"},maxAsyncRequests:{type:"number",minimum:1},maxAsyncSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},maxInitialRequests:{type:"number",minimum:1},maxInitialSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},maxSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},minChunks:{type:"number",minimum:1},minRemainingSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},minSize:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},minSizeReduction:{oneOf:[{$ref:"#/definitions/OptimizationSplitChunksSizes"}]},name:{anyOf:[{enum:[!1]},{type:"string"},{instanceof:"Function"}]},usedExports:{type:"boolean"}}},OptimizationSplitChunksSizes:{anyOf:[{type:"number",minimum:0},{type:"object",additionalProperties:{type:"number"}}]},Output:{type:"object",additionalProperties:!1,properties:{amdContainer:{oneOf:[{$ref:"#/definitions/AmdContainer"}]},assetModuleFilename:{$ref:"#/definitions/AssetModuleFilename"},asyncChunks:{type:"boolean"},auxiliaryComment:{oneOf:[{$ref:"#/definitions/AuxiliaryComment"}]},charset:{$ref:"#/definitions/Charset"},chunkFilename:{$ref:"#/definitions/ChunkFilename"},chunkFormat:{$ref:"#/definitions/ChunkFormat"},chunkLoadTimeout:{$ref:"#/definitions/ChunkLoadTimeout"},chunkLoading:{$ref:"#/definitions/ChunkLoading"},chunkLoadingGlobal:{$ref:"#/definitions/ChunkLoadingGlobal"},clean:{$ref:"#/definitions/Clean"},compareBeforeEmit:{$ref:"#/definitions/CompareBeforeEmit"},crossOriginLoading:{$ref:"#/definitions/CrossOriginLoading"},cssChunkFilename:{$ref:"#/definitions/CssChunkFilename"},cssFilename:{$ref:"#/definitions/CssFilename"},devtoolFallbackModuleFilenameTemplate:{$ref:"#/definitions/DevtoolFallbackModuleFilenameTemplate"},devtoolModuleFilenameTemplate:{$ref:"#/definitions/DevtoolModuleFilenameTemplate"},devtoolNamespace:{$ref:"#/definitions/DevtoolNamespace"},enabledChunkLoadingTypes:{$ref:"#/definitions/EnabledChunkLoadingTypes"},enabledLibraryTypes:{$ref:"#/definitions/EnabledLibraryTypes"},enabledWasmLoadingTypes:{$ref:"#/definitions/EnabledWasmLoadingTypes"},environment:{$ref:"#/definitions/Environment"},filename:{$ref:"#/definitions/Filename"},globalObject:{$ref:"#/definitions/GlobalObject"},hashDigest:{$ref:"#/definitions/HashDigest"},hashDigestLength:{$ref:"#/definitions/HashDigestLength"},hashFunction:{$ref:"#/definitions/HashFunction"},hashSalt:{$ref:"#/definitions/HashSalt"},hotUpdateChunkFilename:{$ref:"#/definitions/HotUpdateChunkFilename"},hotUpdateGlobal:{$ref:"#/definitions/HotUpdateGlobal"},hotUpdateMainFilename:{$ref:"#/definitions/HotUpdateMainFilename"},iife:{$ref:"#/definitions/Iife"},importFunctionName:{$ref:"#/definitions/ImportFunctionName"},importMetaName:{$ref:"#/definitions/ImportMetaName"},library:{$ref:"#/definitions/Library"},libraryExport:{oneOf:[{$ref:"#/definitions/LibraryExport"}]},libraryTarget:{oneOf:[{$ref:"#/definitions/LibraryType"}]},module:{$ref:"#/definitions/OutputModule"},path:{$ref:"#/definitions/Path"},pathinfo:{$ref:"#/definitions/Pathinfo"},publicPath:{$ref:"#/definitions/PublicPath"},scriptType:{$ref:"#/definitions/ScriptType"},sourceMapFilename:{$ref:"#/definitions/SourceMapFilename"},sourcePrefix:{$ref:"#/definitions/SourcePrefix"},strictModuleErrorHandling:{$ref:"#/definitions/StrictModuleErrorHandling"},strictModuleExceptionHandling:{$ref:"#/definitions/StrictModuleExceptionHandling"},trustedTypes:{anyOf:[{enum:[!0]},{type:"string",minLength:1},{$ref:"#/definitions/TrustedTypes"}]},umdNamedDefine:{oneOf:[{$ref:"#/definitions/UmdNamedDefine"}]},uniqueName:{$ref:"#/definitions/UniqueName"},wasmLoading:{$ref:"#/definitions/WasmLoading"},webassemblyModuleFilename:{$ref:"#/definitions/WebassemblyModuleFilename"},workerChunkLoading:{$ref:"#/definitions/ChunkLoading"},workerPublicPath:{$ref:"#/definitions/WorkerPublicPath"},workerWasmLoading:{$ref:"#/definitions/WasmLoading"}}},OutputModule:{type:"boolean"},OutputNormalized:{type:"object",additionalProperties:!1,properties:{assetModuleFilename:{$ref:"#/definitions/AssetModuleFilename"},asyncChunks:{type:"boolean"},charset:{$ref:"#/definitions/Charset"},chunkFilename:{$ref:"#/definitions/ChunkFilename"},chunkFormat:{$ref:"#/definitions/ChunkFormat"},chunkLoadTimeout:{$ref:"#/definitions/ChunkLoadTimeout"},chunkLoading:{$ref:"#/definitions/ChunkLoading"},chunkLoadingGlobal:{$ref:"#/definitions/ChunkLoadingGlobal"},clean:{$ref:"#/definitions/Clean"},compareBeforeEmit:{$ref:"#/definitions/CompareBeforeEmit"},crossOriginLoading:{$ref:"#/definitions/CrossOriginLoading"},cssChunkFilename:{$ref:"#/definitions/CssChunkFilename"},cssFilename:{$ref:"#/definitions/CssFilename"},devtoolFallbackModuleFilenameTemplate:{$ref:"#/definitions/DevtoolFallbackModuleFilenameTemplate"},devtoolModuleFilenameTemplate:{$ref:"#/definitions/DevtoolModuleFilenameTemplate"},devtoolNamespace:{$ref:"#/definitions/DevtoolNamespace"},enabledChunkLoadingTypes:{$ref:"#/definitions/EnabledChunkLoadingTypes"},enabledLibraryTypes:{$ref:"#/definitions/EnabledLibraryTypes"},enabledWasmLoadingTypes:{$ref:"#/definitions/EnabledWasmLoadingTypes"},environment:{$ref:"#/definitions/Environment"},filename:{$ref:"#/definitions/Filename"},globalObject:{$ref:"#/definitions/GlobalObject"},hashDigest:{$ref:"#/definitions/HashDigest"},hashDigestLength:{$ref:"#/definitions/HashDigestLength"},hashFunction:{$ref:"#/definitions/HashFunction"},hashSalt:{$ref:"#/definitions/HashSalt"},hotUpdateChunkFilename:{$ref:"#/definitions/HotUpdateChunkFilename"},hotUpdateGlobal:{$ref:"#/definitions/HotUpdateGlobal"},hotUpdateMainFilename:{$ref:"#/definitions/HotUpdateMainFilename"},iife:{$ref:"#/definitions/Iife"},importFunctionName:{$ref:"#/definitions/ImportFunctionName"},importMetaName:{$ref:"#/definitions/ImportMetaName"},library:{$ref:"#/definitions/LibraryOptions"},module:{$ref:"#/definitions/OutputModule"},path:{$ref:"#/definitions/Path"},pathinfo:{$ref:"#/definitions/Pathinfo"},publicPath:{$ref:"#/definitions/PublicPath"},scriptType:{$ref:"#/definitions/ScriptType"},sourceMapFilename:{$ref:"#/definitions/SourceMapFilename"},sourcePrefix:{$ref:"#/definitions/SourcePrefix"},strictModuleErrorHandling:{$ref:"#/definitions/StrictModuleErrorHandling"},strictModuleExceptionHandling:{$ref:"#/definitions/StrictModuleExceptionHandling"},trustedTypes:{$ref:"#/definitions/TrustedTypes"},uniqueName:{$ref:"#/definitions/UniqueName"},wasmLoading:{$ref:"#/definitions/WasmLoading"},webassemblyModuleFilename:{$ref:"#/definitions/WebassemblyModuleFilename"},workerChunkLoading:{$ref:"#/definitions/ChunkLoading"},workerPublicPath:{$ref:"#/definitions/WorkerPublicPath"},workerWasmLoading:{$ref:"#/definitions/WasmLoading"}}},Parallelism:{type:"number",minimum:1},ParserOptionsByModuleType:{type:"object",additionalProperties:{type:"object",additionalProperties:!0},properties:{asset:{$ref:"#/definitions/AssetParserOptions"},"asset/inline":{$ref:"#/definitions/EmptyParserOptions"},"asset/resource":{$ref:"#/definitions/EmptyParserOptions"},"asset/source":{$ref:"#/definitions/EmptyParserOptions"},javascript:{$ref:"#/definitions/JavascriptParserOptions"},"javascript/auto":{$ref:"#/definitions/JavascriptParserOptions"},"javascript/dynamic":{$ref:"#/definitions/JavascriptParserOptions"},"javascript/esm":{$ref:"#/definitions/JavascriptParserOptions"}}},Path:{type:"string",absolutePath:!0},Pathinfo:{anyOf:[{enum:["verbose"]},{type:"boolean"}]},Performance:{anyOf:[{enum:[!1]},{$ref:"#/definitions/PerformanceOptions"}]},PerformanceOptions:{type:"object",additionalProperties:!1,properties:{assetFilter:{instanceof:"Function"},hints:{enum:[!1,"warning","error"]},maxAssetSize:{type:"number"},maxEntrypointSize:{type:"number"}}},Plugins:{type:"array",items:{anyOf:[{$ref:"#/definitions/WebpackPluginInstance"},{$ref:"#/definitions/WebpackPluginFunction"}]}},Profile:{type:"boolean"},PublicPath:{anyOf:[{enum:["auto"]},{$ref:"#/definitions/RawPublicPath"}]},RawPublicPath:{anyOf:[{type:"string"},{instanceof:"Function"}]},RecordsInputPath:{anyOf:[{enum:[!1]},{type:"string",absolutePath:!0}]},RecordsOutputPath:{anyOf:[{enum:[!1]},{type:"string",absolutePath:!0}]},RecordsPath:{anyOf:[{enum:[!1]},{type:"string",absolutePath:!0}]},Resolve:{oneOf:[{$ref:"#/definitions/ResolveOptions"}]},ResolveAlias:{anyOf:[{type:"array",items:{type:"object",additionalProperties:!1,properties:{alias:{anyOf:[{type:"array",items:{type:"string",minLength:1}},{enum:[!1]},{type:"string",minLength:1}]},name:{type:"string"},onlyModule:{type:"boolean"}},required:["alias","name"]}},{type:"object",additionalProperties:{anyOf:[{type:"array",items:{type:"string",minLength:1}},{enum:[!1]},{type:"string",minLength:1}]}}]},ResolveLoader:{oneOf:[{$ref:"#/definitions/ResolveOptions"}]},ResolveOptions:{type:"object",additionalProperties:!1,properties:{alias:{$ref:"#/definitions/ResolveAlias"},aliasFields:{type:"array",items:{anyOf:[{type:"array",items:{type:"string",minLength:1}},{type:"string",minLength:1}]}},byDependency:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/ResolveOptions"}]}},cache:{type:"boolean"},cachePredicate:{instanceof:"Function"},cacheWithContext:{type:"boolean"},conditionNames:{type:"array",items:{type:"string"}},descriptionFiles:{type:"array",items:{type:"string",minLength:1}},enforceExtension:{type:"boolean"},exportsFields:{type:"array",items:{type:"string"}},extensionAlias:{type:"object",additionalProperties:{anyOf:[{type:"array",items:{type:"string",minLength:1}},{type:"string",minLength:1}]}},extensions:{type:"array",items:{type:"string"}},fallback:{oneOf:[{$ref:"#/definitions/ResolveAlias"}]},fileSystem:{},fullySpecified:{type:"boolean"},importsFields:{type:"array",items:{type:"string"}},mainFields:{type:"array",items:{anyOf:[{type:"array",items:{type:"string",minLength:1}},{type:"string",minLength:1}]}},mainFiles:{type:"array",items:{type:"string",minLength:1}},modules:{type:"array",items:{type:"string",minLength:1}},plugins:{type:"array",items:{anyOf:[{enum:["..."]},{$ref:"#/definitions/ResolvePluginInstance"}]}},preferAbsolute:{type:"boolean"},preferRelative:{type:"boolean"},resolver:{},restrictions:{type:"array",items:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!0,minLength:1}]}},roots:{type:"array",items:{type:"string"}},symlinks:{type:"boolean"},unsafeCache:{anyOf:[{type:"boolean"},{type:"object",additionalProperties:!0}]},useSyncFileSystemCalls:{type:"boolean"}}},ResolvePluginInstance:{type:"object",additionalProperties:!0,properties:{apply:{instanceof:"Function"}},required:["apply"]},RuleSetCondition:{anyOf:[{instanceof:"RegExp"},{type:"string"},{instanceof:"Function"},{$ref:"#/definitions/RuleSetLogicalConditions"},{$ref:"#/definitions/RuleSetConditions"}]},RuleSetConditionAbsolute:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!0},{instanceof:"Function"},{$ref:"#/definitions/RuleSetLogicalConditionsAbsolute"},{$ref:"#/definitions/RuleSetConditionsAbsolute"}]},RuleSetConditionOrConditions:{anyOf:[{$ref:"#/definitions/RuleSetCondition"},{$ref:"#/definitions/RuleSetConditions"}]},RuleSetConditionOrConditionsAbsolute:{anyOf:[{$ref:"#/definitions/RuleSetConditionAbsolute"},{$ref:"#/definitions/RuleSetConditionsAbsolute"}]},RuleSetConditions:{type:"array",items:{oneOf:[{$ref:"#/definitions/RuleSetCondition"}]}},RuleSetConditionsAbsolute:{type:"array",items:{oneOf:[{$ref:"#/definitions/RuleSetConditionAbsolute"}]}},RuleSetLoader:{type:"string",minLength:1},RuleSetLoaderOptions:{anyOf:[{type:"string"},{type:"object"}]},RuleSetLogicalConditions:{type:"object",additionalProperties:!1,properties:{and:{oneOf:[{$ref:"#/definitions/RuleSetConditions"}]},not:{oneOf:[{$ref:"#/definitions/RuleSetCondition"}]},or:{oneOf:[{$ref:"#/definitions/RuleSetConditions"}]}}},RuleSetLogicalConditionsAbsolute:{type:"object",additionalProperties:!1,properties:{and:{oneOf:[{$ref:"#/definitions/RuleSetConditionsAbsolute"}]},not:{oneOf:[{$ref:"#/definitions/RuleSetConditionAbsolute"}]},or:{oneOf:[{$ref:"#/definitions/RuleSetConditionsAbsolute"}]}}},RuleSetRule:{type:"object",additionalProperties:!1,properties:{assert:{type:"object",additionalProperties:{$ref:"#/definitions/RuleSetConditionOrConditions"}},compiler:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditions"}]},dependency:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditions"}]},descriptionData:{type:"object",additionalProperties:{$ref:"#/definitions/RuleSetConditionOrConditions"}},enforce:{enum:["pre","post"]},exclude:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditionsAbsolute"}]},generator:{type:"object"},include:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditionsAbsolute"}]},issuer:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditionsAbsolute"}]},issuerLayer:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditions"}]},layer:{type:"string"},loader:{oneOf:[{$ref:"#/definitions/RuleSetLoader"}]},mimetype:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditions"}]},oneOf:{type:"array",items:{oneOf:[{$ref:"#/definitions/RuleSetRule"}]}},options:{oneOf:[{$ref:"#/definitions/RuleSetLoaderOptions"}]},parser:{type:"object",additionalProperties:!0},realResource:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditionsAbsolute"}]},resolve:{type:"object",oneOf:[{$ref:"#/definitions/ResolveOptions"}]},resource:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditionsAbsolute"}]},resourceFragment:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditions"}]},resourceQuery:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditions"}]},rules:{type:"array",items:{oneOf:[{$ref:"#/definitions/RuleSetRule"}]}},scheme:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditions"}]},sideEffects:{type:"boolean"},test:{oneOf:[{$ref:"#/definitions/RuleSetConditionOrConditionsAbsolute"}]},type:{type:"string"},use:{oneOf:[{$ref:"#/definitions/RuleSetUse"}]}}},RuleSetRules:{type:"array",items:{anyOf:[{enum:["..."]},{$ref:"#/definitions/RuleSetRule"}]}},RuleSetUse:{anyOf:[{type:"array",items:{oneOf:[{$ref:"#/definitions/RuleSetUseItem"}]}},{instanceof:"Function"},{$ref:"#/definitions/RuleSetUseItem"}]},RuleSetUseItem:{anyOf:[{type:"object",additionalProperties:!1,properties:{ident:{type:"string"},loader:{oneOf:[{$ref:"#/definitions/RuleSetLoader"}]},options:{oneOf:[{$ref:"#/definitions/RuleSetLoaderOptions"}]}}},{instanceof:"Function"},{$ref:"#/definitions/RuleSetLoader"}]},ScriptType:{enum:[!1,"text/javascript","module"]},SnapshotOptions:{type:"object",additionalProperties:!1,properties:{buildDependencies:{type:"object",additionalProperties:!1,properties:{hash:{type:"boolean"},timestamp:{type:"boolean"}}},immutablePaths:{type:"array",items:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!0,minLength:1}]}},managedPaths:{type:"array",items:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!0,minLength:1}]}},module:{type:"object",additionalProperties:!1,properties:{hash:{type:"boolean"},timestamp:{type:"boolean"}}},resolve:{type:"object",additionalProperties:!1,properties:{hash:{type:"boolean"},timestamp:{type:"boolean"}}},resolveBuildDependencies:{type:"object",additionalProperties:!1,properties:{hash:{type:"boolean"},timestamp:{type:"boolean"}}}}},SourceMapFilename:{type:"string",absolutePath:!1},SourcePrefix:{type:"string"},StatsOptions:{type:"object",additionalProperties:!1,properties:{all:{type:"boolean"},assets:{type:"boolean"},assetsSort:{type:"string"},assetsSpace:{type:"number"},builtAt:{type:"boolean"},cached:{type:"boolean"},cachedAssets:{type:"boolean"},cachedModules:{type:"boolean"},children:{type:"boolean"},chunkGroupAuxiliary:{type:"boolean"},chunkGroupChildren:{type:"boolean"},chunkGroupMaxAssets:{type:"number"},chunkGroups:{type:"boolean"},chunkModules:{type:"boolean"},chunkModulesSpace:{type:"number"},chunkOrigins:{type:"boolean"},chunkRelations:{type:"boolean"},chunks:{type:"boolean"},chunksSort:{type:"string"},colors:{anyOf:[{type:"boolean"},{type:"object",additionalProperties:!1,properties:{bold:{type:"string"},cyan:{type:"string"},green:{type:"string"},magenta:{type:"string"},red:{type:"string"},yellow:{type:"string"}}}]},context:{type:"string",absolutePath:!0},dependentModules:{type:"boolean"},depth:{type:"boolean"},entrypoints:{anyOf:[{enum:["auto"]},{type:"boolean"}]},env:{type:"boolean"},errorDetails:{anyOf:[{enum:["auto"]},{type:"boolean"}]},errorStack:{type:"boolean"},errors:{type:"boolean"},errorsCount:{type:"boolean"},errorsSpace:{type:"number"},exclude:{anyOf:[{type:"boolean"},{$ref:"#/definitions/ModuleFilterTypes"}]},excludeAssets:{oneOf:[{$ref:"#/definitions/AssetFilterTypes"}]},excludeModules:{anyOf:[{type:"boolean"},{$ref:"#/definitions/ModuleFilterTypes"}]},groupAssetsByChunk:{type:"boolean"},groupAssetsByEmitStatus:{type:"boolean"},groupAssetsByExtension:{type:"boolean"},groupAssetsByInfo:{type:"boolean"},groupAssetsByPath:{type:"boolean"},groupModulesByAttributes:{type:"boolean"},groupModulesByCacheStatus:{type:"boolean"},groupModulesByExtension:{type:"boolean"},groupModulesByLayer:{type:"boolean"},groupModulesByPath:{type:"boolean"},groupModulesByType:{type:"boolean"},groupReasonsByOrigin:{type:"boolean"},hash:{type:"boolean"},ids:{type:"boolean"},logging:{anyOf:[{enum:["none","error","warn","info","log","verbose"]},{type:"boolean"}]},loggingDebug:{anyOf:[{type:"boolean"},{$ref:"#/definitions/FilterTypes"}]},loggingTrace:{type:"boolean"},moduleAssets:{type:"boolean"},moduleTrace:{type:"boolean"},modules:{type:"boolean"},modulesSort:{type:"string"},modulesSpace:{type:"number"},nestedModules:{type:"boolean"},nestedModulesSpace:{type:"number"},optimizationBailout:{type:"boolean"},orphanModules:{type:"boolean"},outputPath:{type:"boolean"},performance:{type:"boolean"},preset:{anyOf:[{type:"boolean"},{type:"string"}]},providedExports:{type:"boolean"},publicPath:{type:"boolean"},reasons:{type:"boolean"},reasonsSpace:{type:"number"},relatedAssets:{type:"boolean"},runtime:{type:"boolean"},runtimeModules:{type:"boolean"},source:{type:"boolean"},timings:{type:"boolean"},usedExports:{type:"boolean"},version:{type:"boolean"},warnings:{type:"boolean"},warningsCount:{type:"boolean"},warningsFilter:{oneOf:[{$ref:"#/definitions/WarningFilterTypes"}]},warningsSpace:{type:"number"}}},StatsValue:{anyOf:[{enum:["none","summary","errors-only","errors-warnings","minimal","normal","detailed","verbose"]},{type:"boolean"},{$ref:"#/definitions/StatsOptions"}]},StrictModuleErrorHandling:{type:"boolean"},StrictModuleExceptionHandling:{type:"boolean"},Target:{anyOf:[{type:"array",items:{type:"string",minLength:1},minItems:1},{enum:[!1]},{type:"string",minLength:1}]},TrustedTypes:{type:"object",additionalProperties:!1,properties:{policyName:{type:"string",minLength:1}}},UmdNamedDefine:{type:"boolean"},UniqueName:{type:"string",minLength:1},WarningFilterItemTypes:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!1},{instanceof:"Function"}]},WarningFilterTypes:{anyOf:[{type:"array",items:{oneOf:[{$ref:"#/definitions/WarningFilterItemTypes"}]}},{$ref:"#/definitions/WarningFilterItemTypes"}]},WasmLoading:{anyOf:[{enum:[!1]},{$ref:"#/definitions/WasmLoadingType"}]},WasmLoadingType:{anyOf:[{enum:["fetch-streaming","fetch","async-node"]},{type:"string"}]},Watch:{type:"boolean"},WatchOptions:{type:"object",additionalProperties:!1,properties:{aggregateTimeout:{type:"number"},followSymlinks:{type:"boolean"},ignored:{anyOf:[{type:"array",items:{type:"string",minLength:1}},{instanceof:"RegExp"},{type:"string",minLength:1}]},poll:{anyOf:[{type:"number"},{type:"boolean"}]},stdin:{type:"boolean"}}},WebassemblyModuleFilename:{type:"string",absolutePath:!1},WebpackOptionsNormalized:{type:"object",additionalProperties:!1,properties:{amd:{$ref:"#/definitions/Amd"},bail:{$ref:"#/definitions/Bail"},cache:{$ref:"#/definitions/CacheOptionsNormalized"},context:{$ref:"#/definitions/Context"},dependencies:{$ref:"#/definitions/Dependencies"},devServer:{$ref:"#/definitions/DevServer"},devtool:{$ref:"#/definitions/DevTool"},entry:{$ref:"#/definitions/EntryNormalized"},experiments:{$ref:"#/definitions/ExperimentsNormalized"},externals:{$ref:"#/definitions/Externals"},externalsPresets:{$ref:"#/definitions/ExternalsPresets"},externalsType:{$ref:"#/definitions/ExternalsType"},ignoreWarnings:{$ref:"#/definitions/IgnoreWarningsNormalized"},infrastructureLogging:{$ref:"#/definitions/InfrastructureLogging"},loader:{$ref:"#/definitions/Loader"},mode:{$ref:"#/definitions/Mode"},module:{$ref:"#/definitions/ModuleOptionsNormalized"},name:{$ref:"#/definitions/Name"},node:{$ref:"#/definitions/Node"},optimization:{$ref:"#/definitions/Optimization"},output:{$ref:"#/definitions/OutputNormalized"},parallelism:{$ref:"#/definitions/Parallelism"},performance:{$ref:"#/definitions/Performance"},plugins:{$ref:"#/definitions/Plugins"},profile:{$ref:"#/definitions/Profile"},recordsInputPath:{$ref:"#/definitions/RecordsInputPath"},recordsOutputPath:{$ref:"#/definitions/RecordsOutputPath"},resolve:{$ref:"#/definitions/Resolve"},resolveLoader:{$ref:"#/definitions/ResolveLoader"},snapshot:{$ref:"#/definitions/SnapshotOptions"},stats:{$ref:"#/definitions/StatsValue"},target:{$ref:"#/definitions/Target"},watch:{$ref:"#/definitions/Watch"},watchOptions:{$ref:"#/definitions/WatchOptions"}},required:["cache","snapshot","entry","experiments","externals","externalsPresets","infrastructureLogging","module","node","optimization","output","plugins","resolve","resolveLoader","stats","watchOptions"]},WebpackPluginFunction:{instanceof:"Function"},WebpackPluginInstance:{type:"object",additionalProperties:!0,properties:{apply:{instanceof:"Function"}},required:["apply"]},WorkerPublicPath:{type:"string"}},type:"object",additionalProperties:!1,properties:{amd:{$ref:"#/definitions/Amd"},bail:{$ref:"#/definitions/Bail"},cache:{$ref:"#/definitions/CacheOptions"},context:{$ref:"#/definitions/Context"},dependencies:{$ref:"#/definitions/Dependencies"},devServer:{$ref:"#/definitions/DevServer"},devtool:{$ref:"#/definitions/DevTool"},entry:{$ref:"#/definitions/Entry"},experiments:{$ref:"#/definitions/Experiments"},externals:{$ref:"#/definitions/Externals"},externalsPresets:{$ref:"#/definitions/ExternalsPresets"},externalsType:{$ref:"#/definitions/ExternalsType"},ignoreWarnings:{$ref:"#/definitions/IgnoreWarnings"},infrastructureLogging:{$ref:"#/definitions/InfrastructureLogging"},loader:{$ref:"#/definitions/Loader"},mode:{$ref:"#/definitions/Mode"},module:{$ref:"#/definitions/ModuleOptions"},name:{$ref:"#/definitions/Name"},node:{$ref:"#/definitions/Node"},optimization:{$ref:"#/definitions/Optimization"},output:{$ref:"#/definitions/Output"},parallelism:{$ref:"#/definitions/Parallelism"},performance:{$ref:"#/definitions/Performance"},plugins:{$ref:"#/definitions/Plugins"},profile:{$ref:"#/definitions/Profile"},recordsInputPath:{$ref:"#/definitions/RecordsInputPath"},recordsOutputPath:{$ref:"#/definitions/RecordsOutputPath"},recordsPath:{$ref:"#/definitions/RecordsPath"},resolve:{$ref:"#/definitions/Resolve"},resolveLoader:{$ref:"#/definitions/ResolveLoader"},snapshot:{$ref:"#/definitions/SnapshotOptions"},stats:{$ref:"#/definitions/StatsValue"},target:{$ref:"#/definitions/Target"},watch:{$ref:"#/definitions/Watch"},watchOptions:{$ref:"#/definitions/WatchOptions"}}},n=Object.prototype.hasOwnProperty,r={type:"object",additionalProperties:!1,properties:{allowCollectingMemory:{type:"boolean"},buildDependencies:{type:"object",additionalProperties:{type:"array",items:{type:"string",minLength:1}}},cacheDirectory:{type:"string",absolutePath:!0},cacheLocation:{type:"string",absolutePath:!0},compression:{enum:[!1,"gzip","brotli"]},hashAlgorithm:{type:"string"},idleTimeout:{type:"number",minimum:0},idleTimeoutAfterLargeChanges:{type:"number",minimum:0},idleTimeoutForInitialStore:{type:"number",minimum:0},immutablePaths:{type:"array",items:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!0,minLength:1}]}},managedPaths:{type:"array",items:{anyOf:[{instanceof:"RegExp"},{type:"string",absolutePath:!0,minLength:1}]}},maxAge:{type:"number",minimum:0},maxMemoryGenerations:{type:"number",minimum:0},memoryCacheUnaffected:{type:"boolean"},name:{type:"string"},profile:{type:"boolean"},store:{enum:["pack"]},type:{enum:["filesystem"]},version:{type:"string"}},required:["type"]};function o(t,{instancePath:s="",parentData:i,parentDataProperty:a,rootData:l=t}={}){let p=null,f=0;const u=f;let c=!1;const y=f;if(!1!==t){const e={params:{}};null===p?p=[e]:p.push(e),f++}var m=y===f;if(c=c||m,!c){const o=f;if(f==f)if(t&&"object"==typeof t&&!Array.isArray(t)){let e;if(void 0===t.type&&(e="type")){const t={params:{missingProperty:e}};null===p?p=[t]:p.push(t),f++}else{const e=f;for(const e in t)if("cacheUnaffected"!==e&&"maxGenerations"!==e&&"type"!==e){const t={params:{additionalProperty:e}};null===p?p=[t]:p.push(t),f++;break}if(e===f){if(void 0!==t.cacheUnaffected){const e=f;if("boolean"!=typeof t.cacheUnaffected){const e={params:{type:"boolean"}};null===p?p=[e]:p.push(e),f++}var d=e===f}else d=!0;if(d){if(void 0!==t.maxGenerations){let e=t.maxGenerations;const n=f;if(f===n)if("number"==typeof e){if(e<1||isNaN(e)){const e={params:{comparison:">=",limit:1}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}d=n===f}else d=!0;if(d)if(void 0!==t.type){const e=f;if("memory"!==t.type){const e={params:{}};null===p?p=[e]:p.push(e),f++}d=e===f}else d=!0}}}}else{const e={params:{type:"object"}};null===p?p=[e]:p.push(e),f++}if(m=o===f,c=c||m,!c){const o=f;if(f==f)if(t&&"object"==typeof t&&!Array.isArray(t)){let o;if(void 0===t.type&&(o="type")){const e={params:{missingProperty:o}};null===p?p=[e]:p.push(e),f++}else{const o=f;for(const e in t)if(!n.call(r.properties,e)){const t={params:{additionalProperty:e}};null===p?p=[t]:p.push(t),f++;break}if(o===f){if(void 0!==t.allowCollectingMemory){const e=f;if("boolean"!=typeof t.allowCollectingMemory){const e={params:{type:"boolean"}};null===p?p=[e]:p.push(e),f++}var h=e===f}else h=!0;if(h){if(void 0!==t.buildDependencies){let e=t.buildDependencies;const n=f;if(f===n)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){let n=e[t];const r=f;if(f===r)if(Array.isArray(n)){const e=n.length;for(let t=0;t=",limit:0}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}h=n===f}else h=!0;if(h){if(void 0!==t.idleTimeoutAfterLargeChanges){let e=t.idleTimeoutAfterLargeChanges;const n=f;if(f===n)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}h=n===f}else h=!0;if(h){if(void 0!==t.idleTimeoutForInitialStore){let e=t.idleTimeoutForInitialStore;const n=f;if(f===n)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}h=n===f}else h=!0;if(h){if(void 0!==t.immutablePaths){let n=t.immutablePaths;const r=f;if(f===r)if(Array.isArray(n)){const t=n.length;for(let r=0;r=",limit:0}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}h=n===f}else h=!0;if(h){if(void 0!==t.maxMemoryGenerations){let e=t.maxMemoryGenerations;const n=f;if(f===n)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}h=n===f}else h=!0;if(h){if(void 0!==t.memoryCacheUnaffected){const e=f;if("boolean"!=typeof t.memoryCacheUnaffected){const e={params:{type:"boolean"}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0;if(h){if(void 0!==t.name){const e=f;if("string"!=typeof t.name){const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0;if(h){if(void 0!==t.profile){const e=f;if("boolean"!=typeof t.profile){const e={params:{type:"boolean"}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0;if(h){if(void 0!==t.store){const e=f;if("pack"!==t.store){const e={params:{}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0;if(h){if(void 0!==t.type){const e=f;if("filesystem"!==t.type){const e={params:{}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0;if(h)if(void 0!==t.version){const e=f;if("string"!=typeof t.version){const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0}}}}}}}}}}}}}}}}}}}}else{const e={params:{type:"object"}};null===p?p=[e]:p.push(e),f++}m=o===f,c=c||m}}if(!c){const e={params:{}};return null===p?p=[e]:p.push(e),f++,o.errors=p,!1}return f=u,null!==p&&(u?p.length=u:p=null),o.errors=p,0===f}function s(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:i=e}={}){let a=null,l=0;const p=l;let f=!1;const u=l;if(!0!==e){const e={params:{}};null===a?a=[e]:a.push(e),l++}var c=u===l;if(f=f||c,!f){const s=l;o(e,{instancePath:t,parentData:n,parentDataProperty:r,rootData:i})||(a=null===a?o.errors:a.concat(o.errors),l=a.length),c=s===l,f=f||c}if(!f){const e={params:{}};return null===a?a=[e]:a.push(e),l++,s.errors=a,!1}return l=p,null!==a&&(p?a.length=p:a=null),s.errors=a,0===l}const i={type:"object",additionalProperties:!1,properties:{asyncChunks:{type:"boolean"},baseUri:{type:"string"},chunkLoading:{$ref:"#/definitions/ChunkLoading"},dependOn:{anyOf:[{type:"array",items:{type:"string",minLength:1},minItems:1,uniqueItems:!0},{type:"string",minLength:1}]},filename:{$ref:"#/definitions/EntryFilename"},import:{$ref:"#/definitions/EntryItem"},layer:{$ref:"#/definitions/Layer"},library:{$ref:"#/definitions/LibraryOptions"},publicPath:{$ref:"#/definitions/PublicPath"},runtime:{$ref:"#/definitions/EntryRuntime"},wasmLoading:{$ref:"#/definitions/WasmLoading"}},required:["import"]};function a(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const l=i;let p=!1;const f=i;if(!1!==e){const e={params:{}};null===s?s=[e]:s.push(e),i++}var u=f===i;if(p=p||u,!p){const t=i,n=i;let r=!1;const o=i;if("jsonp"!==e&&"import-scripts"!==e&&"require"!==e&&"async-node"!==e&&"import"!==e){const e={params:{}};null===s?s=[e]:s.push(e),i++}var c=o===i;if(r=r||c,!r){const t=i;if("string"!=typeof e){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}c=t===i,r=r||c}if(r)i=n,null!==s&&(n?s.length=n:s=null);else{const e={params:{}};null===s?s=[e]:s.push(e),i++}u=t===i,p=p||u}if(!p){const e={params:{}};return null===s?s=[e]:s.push(e),i++,a.errors=s,!1}return i=l,null!==s&&(l?s.length=l:s=null),a.errors=s,0===i}function l(t,{instancePath:n="",parentData:r,parentDataProperty:o,rootData:s=t}={}){let i=null,a=0;const p=a;let f=!1,u=null;const c=a,y=a;let m=!1;const d=a;if(a===d)if("string"==typeof t){if(t.includes("!")||!1!==e.test(t)){const e={params:{}};null===i?i=[e]:i.push(e),a++}else if(t.length<1){const e={params:{}};null===i?i=[e]:i.push(e),a++}}else{const e={params:{type:"string"}};null===i?i=[e]:i.push(e),a++}var h=d===a;if(m=m||h,!m){const e=a;if(!(t instanceof Function)){const e={params:{}};null===i?i=[e]:i.push(e),a++}h=e===a,m=m||h}if(m)a=y,null!==i&&(y?i.length=y:i=null);else{const e={params:{}};null===i?i=[e]:i.push(e),a++}if(c===a&&(f=!0,u=0),!f){const e={params:{passingSchemas:u}};return null===i?i=[e]:i.push(e),a++,l.errors=i,!1}return a=p,null!==i&&(p?i.length=p:i=null),l.errors=i,0===a}function p(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1;const f=i;if("string"!=typeof e){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}var u=f===i;if(l=l||u,!l){const t=i;if(i==i)if(e&&"object"==typeof e&&!Array.isArray(e)){const t=i;for(const t in e)if("amd"!==t&&"commonjs"!==t&&"commonjs2"!==t&&"root"!==t){const e={params:{additionalProperty:t}};null===s?s=[e]:s.push(e),i++;break}if(t===i){if(void 0!==e.amd){const t=i;if("string"!=typeof e.amd){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}var c=t===i}else c=!0;if(c){if(void 0!==e.commonjs){const t=i;if("string"!=typeof e.commonjs){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}c=t===i}else c=!0;if(c){if(void 0!==e.commonjs2){const t=i;if("string"!=typeof e.commonjs2){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}c=t===i}else c=!0;if(c)if(void 0!==e.root){const t=i;if("string"!=typeof e.root){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}c=t===i}else c=!0}}}}else{const e={params:{type:"object"}};null===s?s=[e]:s.push(e),i++}u=t===i,l=l||u}if(!l){const e={params:{}};return null===s?s=[e]:s.push(e),i++,p.errors=s,!1}return i=a,null!==s&&(a?s.length=a:s=null),p.errors=s,0===i}function f(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1;const p=i;if(i===p)if(Array.isArray(e))if(e.length<1){const e={params:{limit:1}};null===s?s=[e]:s.push(e),i++}else{const t=e.length;for(let n=0;n1){const r={};for(;n--;){let o=t[n];if("string"==typeof o){if("number"==typeof r[o]){e=r[o];const t={params:{i:n,j:e}};null===p?p=[t]:p.push(t),f++;break}r[o]=n}}}}}else{const e={params:{type:"array"}};null===p?p=[e]:p.push(e),f++}var g=s===f;if(o=o||g,!o){const e=f;if(f===e)if("string"==typeof t){if(t.length<1){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}g=e===f,o=o||g}if(!o){const e={params:{}};return null===p?p=[e]:p.push(e),f++,m.errors=p,!1}f=r,null!==p&&(r?p.length=r:p=null),d=n===f}else d=!0;if(d){if(void 0!==e.filename){const n=f;l(e.filename,{instancePath:t+"/filename",parentData:e,parentDataProperty:"filename",rootData:s})||(p=null===p?l.errors:p.concat(l.errors),f=p.length),d=n===f}else d=!0;if(d){if(void 0!==e.import){let t=e.import;const n=f,r=f;let o=!1;const s=f;if(f===s)if(Array.isArray(t))if(t.length<1){const e={params:{limit:1}};null===p?p=[e]:p.push(e),f++}else{var b=!0;const e=t.length;for(let n=0;n1){const r={};for(;n--;){let o=t[n];if("string"==typeof o){if("number"==typeof r[o]){e=r[o];const t={params:{i:n,j:e}};null===p?p=[t]:p.push(t),f++;break}r[o]=n}}}}}else{const e={params:{type:"array"}};null===p?p=[e]:p.push(e),f++}var v=s===f;if(o=o||v,!o){const e=f;if(f===e)if("string"==typeof t){if(t.length<1){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}v=e===f,o=o||v}if(!o){const e={params:{}};return null===p?p=[e]:p.push(e),f++,m.errors=p,!1}f=r,null!==p&&(r?p.length=r:p=null),d=n===f}else d=!0;if(d){if(void 0!==e.layer){let t=e.layer;const n=f,r=f;let o=!1;const s=f;if(null!==t){const e={params:{}};null===p?p=[e]:p.push(e),f++}var P=s===f;if(o=o||P,!o){const e=f;if(f===e)if("string"==typeof t){if(t.length<1){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}P=e===f,o=o||P}if(!o){const e={params:{}};return null===p?p=[e]:p.push(e),f++,m.errors=p,!1}f=r,null!==p&&(r?p.length=r:p=null),d=n===f}else d=!0;if(d){if(void 0!==e.library){const n=f;u(e.library,{instancePath:t+"/library",parentData:e,parentDataProperty:"library",rootData:s})||(p=null===p?u.errors:p.concat(u.errors),f=p.length),d=n===f}else d=!0;if(d){if(void 0!==e.publicPath){const n=f;c(e.publicPath,{instancePath:t+"/publicPath",parentData:e,parentDataProperty:"publicPath",rootData:s})||(p=null===p?c.errors:p.concat(c.errors),f=p.length),d=n===f}else d=!0;if(d){if(void 0!==e.runtime){let t=e.runtime;const n=f,r=f;let o=!1;const s=f;if(!1!==t){const e={params:{}};null===p?p=[e]:p.push(e),f++}var D=s===f;if(o=o||D,!o){const e=f;if(f===e)if("string"==typeof t){if(t.length<1){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}D=e===f,o=o||D}if(!o){const e={params:{}};return null===p?p=[e]:p.push(e),f++,m.errors=p,!1}f=r,null!==p&&(r?p.length=r:p=null),d=n===f}else d=!0;if(d)if(void 0!==e.wasmLoading){const n=f;y(e.wasmLoading,{instancePath:t+"/wasmLoading",parentData:e,parentDataProperty:"wasmLoading",rootData:s})||(p=null===p?y.errors:p.concat(y.errors),f=p.length),d=n===f}else d=!0}}}}}}}}}}}}}return m.errors=p,0===f}function d(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;if(0===i){if(!e||"object"!=typeof e||Array.isArray(e))return d.errors=[{params:{type:"object"}}],!1;for(const n in e){let r=e[n];const f=i,u=i;let c=!1;const y=i,h=i;let g=!1;const b=i;if(i===b)if(Array.isArray(r))if(r.length<1){const e={params:{limit:1}};null===s?s=[e]:s.push(e),i++}else{var a=!0;const e=r.length;for(let t=0;t1){const n={};for(;t--;){let o=r[t];if("string"==typeof o){if("number"==typeof n[o]){e=n[o];const r={params:{i:t,j:e}};null===s?s=[r]:s.push(r),i++;break}n[o]=t}}}}}else{const e={params:{type:"array"}};null===s?s=[e]:s.push(e),i++}var l=b===i;if(g=g||l,!g){const e=i;if(i===e)if("string"==typeof r){if(r.length<1){const e={params:{}};null===s?s=[e]:s.push(e),i++}}else{const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}l=e===i,g=g||l}if(g)i=h,null!==s&&(h?s.length=h:s=null);else{const e={params:{}};null===s?s=[e]:s.push(e),i++}var p=y===i;if(c=c||p,!c){const a=i;m(r,{instancePath:t+"/"+n.replace(/~/g,"~0").replace(/\//g,"~1"),parentData:e,parentDataProperty:n,rootData:o})||(s=null===s?m.errors:s.concat(m.errors),i=s.length),p=a===i,c=c||p}if(!c){const e={params:{}};return null===s?s=[e]:s.push(e),i++,d.errors=s,!1}if(i=u,null!==s&&(u?s.length=u:s=null),f!==i)break}}return d.errors=s,0===i}function h(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1,p=null;const f=i,u=i;let c=!1;const y=i;if(i===y)if(Array.isArray(e))if(e.length<1){const e={params:{limit:1}};null===s?s=[e]:s.push(e),i++}else{var m=!0;const t=e.length;for(let n=0;n1){const r={};for(;n--;){let o=e[n];if("string"==typeof o){if("number"==typeof r[o]){t=r[o];const e={params:{i:n,j:t}};null===s?s=[e]:s.push(e),i++;break}r[o]=n}}}}}else{const e={params:{type:"array"}};null===s?s=[e]:s.push(e),i++}var d=y===i;if(c=c||d,!c){const t=i;if(i===t)if("string"==typeof e){if(e.length<1){const e={params:{}};null===s?s=[e]:s.push(e),i++}}else{const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}d=t===i,c=c||d}if(c)i=u,null!==s&&(u?s.length=u:s=null);else{const e={params:{}};null===s?s=[e]:s.push(e),i++}if(f===i&&(l=!0,p=0),!l){const e={params:{passingSchemas:p}};return null===s?s=[e]:s.push(e),i++,h.errors=s,!1}return i=a,null!==s&&(a?s.length=a:s=null),h.errors=s,0===i}function g(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1;const p=i;d(e,{instancePath:t,parentData:n,parentDataProperty:r,rootData:o})||(s=null===s?d.errors:s.concat(d.errors),i=s.length);var f=p===i;if(l=l||f,!l){const a=i;h(e,{instancePath:t,parentData:n,parentDataProperty:r,rootData:o})||(s=null===s?h.errors:s.concat(h.errors),i=s.length),f=a===i,l=l||f}if(!l){const e={params:{}};return null===s?s=[e]:s.push(e),i++,g.errors=s,!1}return i=a,null!==s&&(a?s.length=a:s=null),g.errors=s,0===i}function b(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1;const p=i;if(!(e instanceof Function)){const e={params:{}};null===s?s=[e]:s.push(e),i++}var f=p===i;if(l=l||f,!l){const a=i;g(e,{instancePath:t,parentData:n,parentDataProperty:r,rootData:o})||(s=null===s?g.errors:s.concat(g.errors),i=s.length),f=a===i,l=l||f}if(!l){const e={params:{}};return null===s?s=[e]:s.push(e),i++,b.errors=s,!1}return i=a,null!==s&&(a?s.length=a:s=null),b.errors=s,0===i}const v={type:"object",additionalProperties:!1,properties:{asyncWebAssembly:{type:"boolean"},backCompat:{type:"boolean"},buildHttp:{anyOf:[{$ref:"#/definitions/HttpUriAllowedUris"},{$ref:"#/definitions/HttpUriOptions"}]},cacheUnaffected:{type:"boolean"},css:{anyOf:[{type:"boolean"},{$ref:"#/definitions/CssExperimentOptions"}]},futureDefaults:{type:"boolean"},layers:{type:"boolean"},lazyCompilation:{anyOf:[{type:"boolean"},{$ref:"#/definitions/LazyCompilationOptions"}]},outputModule:{type:"boolean"},syncWebAssembly:{type:"boolean"},topLevelAwait:{type:"boolean"}}},P=new RegExp("^https?://","u");function D(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1,p=null;const f=i;if(i==i)if(Array.isArray(e)){const t=e.length;for(let n=0;n=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var u=y===l;if(c=c||u,!c){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}u=t===l,c=c||u}if(c)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.filename){let n=t.filename;const r=l,o=l;let s=!1;const i=l;if(l===i)if("string"==typeof n){if(n.includes("!")||!1!==e.test(n)){const e={params:{}};null===a?a=[e]:a.push(e),l++}else if(n.length<1){const e={params:{}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}var c=i===l;if(s=s||c,!s){const e=l;if(!(n instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}c=e===l,s=s||c}if(!s){const e={params:{}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=o,null!==a&&(o?a.length=o:a=null),p=r===l}else p=!0;if(p){if(void 0!==t.idHint){const e=l;if("string"!=typeof t.idHint)return pe.errors=[{params:{type:"string"}}],!1;p=e===l}else p=!0;if(p){if(void 0!==t.layer){let e=t.layer;const n=l,r=l;let o=!1;const s=l;if(!(e instanceof RegExp)){const e={params:{}};null===a?a=[e]:a.push(e),l++}var y=s===l;if(o=o||y,!o){const t=l;if("string"!=typeof e){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(y=t===l,o=o||y,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}y=t===l,o=o||y}}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.maxAsyncRequests){let e=t.maxAsyncRequests;const n=l;if(l===n){if("number"!=typeof e)return pe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return pe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.maxAsyncSize){let e=t.maxAsyncSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var m=c===l;if(u=u||m,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}m=t===l,u=u||m}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.maxInitialRequests){let e=t.maxInitialRequests;const n=l;if(l===n){if("number"!=typeof e)return pe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return pe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.maxInitialSize){let e=t.maxInitialSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var d=c===l;if(u=u||d,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}d=t===l,u=u||d}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.maxSize){let e=t.maxSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var h=c===l;if(u=u||h,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}h=t===l,u=u||h}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minChunks){let e=t.minChunks;const n=l;if(l===n){if("number"!=typeof e)return pe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return pe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.minRemainingSize){let e=t.minRemainingSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var g=c===l;if(u=u||g,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}g=t===l,u=u||g}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minSize){let e=t.minSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var b=c===l;if(u=u||b,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}b=t===l,u=u||b}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minSizeReduction){let e=t.minSizeReduction;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var v=c===l;if(u=u||v,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}v=t===l,u=u||v}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.name){let e=t.name;const n=l,r=l;let o=!1;const s=l;if(!1!==e){const e={params:{}};null===a?a=[e]:a.push(e),l++}var P=s===l;if(o=o||P,!o){const t=l;if("string"!=typeof e){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(P=t===l,o=o||P,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}P=t===l,o=o||P}}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.priority){const e=l;if("number"!=typeof t.priority)return pe.errors=[{params:{type:"number"}}],!1;p=e===l}else p=!0;if(p){if(void 0!==t.reuseExistingChunk){const e=l;if("boolean"!=typeof t.reuseExistingChunk)return pe.errors=[{params:{type:"boolean"}}],!1;p=e===l}else p=!0;if(p){if(void 0!==t.test){let e=t.test;const n=l,r=l;let o=!1;const s=l;if(!(e instanceof RegExp)){const e={params:{}};null===a?a=[e]:a.push(e),l++}var D=s===l;if(o=o||D,!o){const t=l;if("string"!=typeof e){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(D=t===l,o=o||D,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}D=t===l,o=o||D}}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.type){let e=t.type;const n=l,r=l;let o=!1;const s=l;if(!(e instanceof RegExp)){const e={params:{}};null===a?a=[e]:a.push(e),l++}var O=s===l;if(o=o||O,!o){const t=l;if("string"!=typeof e){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(O=t===l,o=o||O,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}O=t===l,o=o||O}}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p)if(void 0!==t.usedExports){const e=l;if("boolean"!=typeof t.usedExports)return pe.errors=[{params:{type:"boolean"}}],!1;p=e===l}else p=!0}}}}}}}}}}}}}}}}}}}}}}}return pe.errors=a,0===l}function fe(t,{instancePath:r="",parentData:o,parentDataProperty:s,rootData:i=t}={}){let a=null,l=0;if(0===l){if(!t||"object"!=typeof t||Array.isArray(t))return fe.errors=[{params:{type:"object"}}],!1;{const o=l;for(const e in t)if(!n.call(ae.properties,e))return fe.errors=[{params:{additionalProperty:e}}],!1;if(o===l){if(void 0!==t.automaticNameDelimiter){let e=t.automaticNameDelimiter;const n=l;if(l===n){if("string"!=typeof e)return fe.errors=[{params:{type:"string"}}],!1;if(e.length<1)return fe.errors=[{params:{}}],!1}var p=n===l}else p=!0;if(p){if(void 0!==t.cacheGroups){let e=t.cacheGroups;const n=l,o=l,s=l;if(l===s)if(e&&"object"==typeof e&&!Array.isArray(e)){let t;if(void 0===e.test&&(t="test")){const e={};null===a?a=[e]:a.push(e),l++}else if(void 0!==e.test){let t=e.test;const n=l;let r=!1;const o=l;if(!(t instanceof RegExp)){const e={};null===a?a=[e]:a.push(e),l++}var f=o===l;if(r=r||f,!r){const e=l;if("string"!=typeof t){const e={};null===a?a=[e]:a.push(e),l++}if(f=e===l,r=r||f,!r){const e=l;if(!(t instanceof Function)){const e={};null===a?a=[e]:a.push(e),l++}f=e===l,r=r||f}}if(r)l=n,null!==a&&(n?a.length=n:a=null);else{const e={};null===a?a=[e]:a.push(e),l++}}}else{const e={};null===a?a=[e]:a.push(e),l++}if(s===l)return fe.errors=[{params:{}}],!1;if(l=o,null!==a&&(o?a.length=o:a=null),l===n){if(!e||"object"!=typeof e||Array.isArray(e))return fe.errors=[{params:{type:"object"}}],!1;for(const t in e){let n=e[t];const o=l,s=l;let p=!1;const f=l;if(!1!==n){const e={params:{}};null===a?a=[e]:a.push(e),l++}var u=f===l;if(p=p||u,!p){const o=l;if(!(n instanceof RegExp)){const e={params:{}};null===a?a=[e]:a.push(e),l++}if(u=o===l,p=p||u,!p){const o=l;if("string"!=typeof n){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(u=o===l,p=p||u,!p){const o=l;if(!(n instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}if(u=o===l,p=p||u,!p){const o=l;pe(n,{instancePath:r+"/cacheGroups/"+t.replace(/~/g,"~0").replace(/\//g,"~1"),parentData:e,parentDataProperty:t,rootData:i})||(a=null===a?pe.errors:a.concat(pe.errors),l=a.length),u=o===l,p=p||u}}}}if(!p){const e={params:{}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}if(l=s,null!==a&&(s?a.length=s:a=null),o!==l)break}}p=n===l}else p=!0;if(p){if(void 0!==t.chunks){let e=t.chunks;const n=l,r=l;let o=!1;const s=l;if("initial"!==e&&"async"!==e&&"all"!==e){const e={params:{}};null===a?a=[e]:a.push(e),l++}var c=s===l;if(o=o||c,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}c=t===l,o=o||c}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.defaultSizeTypes){let e=t.defaultSizeTypes;const n=l;if(l===n){if(!Array.isArray(e))return fe.errors=[{params:{type:"array"}}],!1;if(e.length<1)return fe.errors=[{params:{limit:1}}],!1;{const t=e.length;for(let n=0;n=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var y=c===l;if(u=u||y,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}y=t===l,u=u||y}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.fallbackCacheGroup){let e=t.fallbackCacheGroup;const n=l;if(l===n){if(!e||"object"!=typeof e||Array.isArray(e))return fe.errors=[{params:{type:"object"}}],!1;{const t=l;for(const t in e)if("automaticNameDelimiter"!==t&&"chunks"!==t&&"maxAsyncSize"!==t&&"maxInitialSize"!==t&&"maxSize"!==t&&"minSize"!==t&&"minSizeReduction"!==t)return fe.errors=[{params:{additionalProperty:t}}],!1;if(t===l){if(void 0!==e.automaticNameDelimiter){let t=e.automaticNameDelimiter;const n=l;if(l===n){if("string"!=typeof t)return fe.errors=[{params:{type:"string"}}],!1;if(t.length<1)return fe.errors=[{params:{}}],!1}var m=n===l}else m=!0;if(m){if(void 0!==e.chunks){let t=e.chunks;const n=l,r=l;let o=!1;const s=l;if("initial"!==t&&"async"!==t&&"all"!==t){const e={params:{}};null===a?a=[e]:a.push(e),l++}var d=s===l;if(o=o||d,!o){const e=l;if(!(t instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}d=e===l,o=o||d}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0;if(m){if(void 0!==e.maxAsyncSize){let t=e.maxAsyncSize;const n=l,r=l;let o=!1,s=null;const i=l,p=l;let f=!1;const u=l;if(l===u)if("number"==typeof t){if(t<0||isNaN(t)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var h=u===l;if(f=f||h,!f){const e=l;if(l===e)if(t&&"object"==typeof t&&!Array.isArray(t))for(const e in t){const n=l;if("number"!=typeof t[e]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}h=e===l,f=f||h}if(f)l=p,null!==a&&(p?a.length=p:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0;if(m){if(void 0!==e.maxInitialSize){let t=e.maxInitialSize;const n=l,r=l;let o=!1,s=null;const i=l,p=l;let f=!1;const u=l;if(l===u)if("number"==typeof t){if(t<0||isNaN(t)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var g=u===l;if(f=f||g,!f){const e=l;if(l===e)if(t&&"object"==typeof t&&!Array.isArray(t))for(const e in t){const n=l;if("number"!=typeof t[e]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}g=e===l,f=f||g}if(f)l=p,null!==a&&(p?a.length=p:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0;if(m){if(void 0!==e.maxSize){let t=e.maxSize;const n=l,r=l;let o=!1,s=null;const i=l,p=l;let f=!1;const u=l;if(l===u)if("number"==typeof t){if(t<0||isNaN(t)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var b=u===l;if(f=f||b,!f){const e=l;if(l===e)if(t&&"object"==typeof t&&!Array.isArray(t))for(const e in t){const n=l;if("number"!=typeof t[e]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}b=e===l,f=f||b}if(f)l=p,null!==a&&(p?a.length=p:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0;if(m){if(void 0!==e.minSize){let t=e.minSize;const n=l,r=l;let o=!1,s=null;const i=l,p=l;let f=!1;const u=l;if(l===u)if("number"==typeof t){if(t<0||isNaN(t)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var v=u===l;if(f=f||v,!f){const e=l;if(l===e)if(t&&"object"==typeof t&&!Array.isArray(t))for(const e in t){const n=l;if("number"!=typeof t[e]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}v=e===l,f=f||v}if(f)l=p,null!==a&&(p?a.length=p:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0;if(m)if(void 0!==e.minSizeReduction){let t=e.minSizeReduction;const n=l,r=l;let o=!1,s=null;const i=l,p=l;let f=!1;const u=l;if(l===u)if("number"==typeof t){if(t<0||isNaN(t)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var P=u===l;if(f=f||P,!f){const e=l;if(l===e)if(t&&"object"==typeof t&&!Array.isArray(t))for(const e in t){const n=l;if("number"!=typeof t[e]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}P=e===l,f=f||P}if(f)l=p,null!==a&&(p?a.length=p:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0}}}}}}}}p=n===l}else p=!0;if(p){if(void 0!==t.filename){let n=t.filename;const r=l,o=l;let s=!1;const i=l;if(l===i)if("string"==typeof n){if(n.includes("!")||!1!==e.test(n)){const e={params:{}};null===a?a=[e]:a.push(e),l++}else if(n.length<1){const e={params:{}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}var D=i===l;if(s=s||D,!s){const e=l;if(!(n instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}D=e===l,s=s||D}if(!s){const e={params:{}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=o,null!==a&&(o?a.length=o:a=null),p=r===l}else p=!0;if(p){if(void 0!==t.hidePathInfo){const e=l;if("boolean"!=typeof t.hidePathInfo)return fe.errors=[{params:{type:"boolean"}}],!1;p=e===l}else p=!0;if(p){if(void 0!==t.maxAsyncRequests){let e=t.maxAsyncRequests;const n=l;if(l===n){if("number"!=typeof e)return fe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return fe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.maxAsyncSize){let e=t.maxAsyncSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var O=c===l;if(u=u||O,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}O=t===l,u=u||O}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.maxInitialRequests){let e=t.maxInitialRequests;const n=l;if(l===n){if("number"!=typeof e)return fe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return fe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.maxInitialSize){let e=t.maxInitialSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var A=c===l;if(u=u||A,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}A=t===l,u=u||A}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.maxSize){let e=t.maxSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var x=c===l;if(u=u||x,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}x=t===l,u=u||x}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minChunks){let e=t.minChunks;const n=l;if(l===n){if("number"!=typeof e)return fe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return fe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.minRemainingSize){let e=t.minRemainingSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var C=c===l;if(u=u||C,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}C=t===l,u=u||C}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minSize){let e=t.minSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var k=c===l;if(u=u||k,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}k=t===l,u=u||k}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minSizeReduction){let e=t.minSizeReduction;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var $=c===l;if(u=u||$,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}$=t===l,u=u||$}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.name){let e=t.name;const n=l,r=l;let o=!1;const s=l;if(!1!==e){const e={params:{}};null===a?a=[e]:a.push(e),l++}var S=s===l;if(o=o||S,!o){const t=l;if("string"!=typeof e){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(S=t===l,o=o||S,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}S=t===l,o=o||S}}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p)if(void 0!==t.usedExports){const e=l;if("boolean"!=typeof t.usedExports)return fe.errors=[{params:{type:"boolean"}}],!1;p=e===l}else p=!0}}}}}}}}}}}}}}}}}}}}return fe.errors=a,0===l}function ue(e,{instancePath:t="",parentData:r,parentDataProperty:o,rootData:s=e}={}){let i=null,a=0;if(0===a){if(!e||"object"!=typeof e||Array.isArray(e))return ue.errors=[{params:{type:"object"}}],!1;{const r=a;for(const t in e)if(!n.call(ie.properties,t))return ue.errors=[{params:{additionalProperty:t}}],!1;if(r===a){if(void 0!==e.checkWasmTypes){const t=a;if("boolean"!=typeof e.checkWasmTypes)return ue.errors=[{params:{type:"boolean"}}],!1;var l=t===a}else l=!0;if(l){if(void 0!==e.chunkIds){let t=e.chunkIds;const n=a;if("natural"!==t&&"named"!==t&&"deterministic"!==t&&"size"!==t&&"total-size"!==t&&!1!==t)return ue.errors=[{params:{}}],!1;l=n===a}else l=!0;if(l){if(void 0!==e.concatenateModules){const t=a;if("boolean"!=typeof e.concatenateModules)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.emitOnErrors){const t=a;if("boolean"!=typeof e.emitOnErrors)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.flagIncludedChunks){const t=a;if("boolean"!=typeof e.flagIncludedChunks)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.innerGraph){const t=a;if("boolean"!=typeof e.innerGraph)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.mangleExports){let t=e.mangleExports;const n=a,r=a;let o=!1;const s=a;if("size"!==t&&"deterministic"!==t){const e={params:{}};null===i?i=[e]:i.push(e),a++}var p=s===a;if(o=o||p,!o){const e=a;if("boolean"!=typeof t){const e={params:{type:"boolean"}};null===i?i=[e]:i.push(e),a++}p=e===a,o=o||p}if(!o){const e={params:{}};return null===i?i=[e]:i.push(e),a++,ue.errors=i,!1}a=r,null!==i&&(r?i.length=r:i=null),l=n===a}else l=!0;if(l){if(void 0!==e.mangleWasmImports){const t=a;if("boolean"!=typeof e.mangleWasmImports)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.mergeDuplicateChunks){const t=a;if("boolean"!=typeof e.mergeDuplicateChunks)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.minimize){const t=a;if("boolean"!=typeof e.minimize)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.minimizer){let t=e.minimizer;const n=a;if(a===n){if(!Array.isArray(t))return ue.errors=[{params:{type:"array"}}],!1;{const e=t.length;for(let n=0;n=",limit:1}}],!1}u=n===f}else u=!0;if(u){if(void 0!==t.hashFunction){let e=t.hashFunction;const n=f,r=f;let o=!1;const s=f;if(f===s)if("string"==typeof e){if(e.length<1){const e={params:{}};null===l?l=[e]:l.push(e),f++}}else{const e={params:{type:"string"}};null===l?l=[e]:l.push(e),f++}var v=s===f;if(o=o||v,!o){const t=f;if(!(e instanceof Function)){const e={params:{}};null===l?l=[e]:l.push(e),f++}v=t===f,o=o||v}if(!o){const e={params:{}};return null===l?l=[e]:l.push(e),f++,Ae.errors=l,!1}f=r,null!==l&&(r?l.length=r:l=null),u=n===f}else u=!0;if(u){if(void 0!==t.hashSalt){let e=t.hashSalt;const n=f;if(f==f){if("string"!=typeof e)return Ae.errors=[{params:{type:"string"}}],!1;if(e.length<1)return Ae.errors=[{params:{}}],!1}u=n===f}else u=!0;if(u){if(void 0!==t.hotUpdateChunkFilename){let n=t.hotUpdateChunkFilename;const r=f;if(f==f){if("string"!=typeof n)return Ae.errors=[{params:{type:"string"}}],!1;if(n.includes("!")||!1!==e.test(n))return Ae.errors=[{params:{}}],!1}u=r===f}else u=!0;if(u){if(void 0!==t.hotUpdateGlobal){const e=f;if("string"!=typeof t.hotUpdateGlobal)return Ae.errors=[{params:{type:"string"}}],!1;u=e===f}else u=!0;if(u){if(void 0!==t.hotUpdateMainFilename){let n=t.hotUpdateMainFilename;const r=f;if(f==f){if("string"!=typeof n)return Ae.errors=[{params:{type:"string"}}],!1;if(n.includes("!")||!1!==e.test(n))return Ae.errors=[{params:{}}],!1}u=r===f}else u=!0;if(u){if(void 0!==t.iife){const e=f;if("boolean"!=typeof t.iife)return Ae.errors=[{params:{type:"boolean"}}],!1;u=e===f}else u=!0;if(u){if(void 0!==t.importFunctionName){const e=f;if("string"!=typeof t.importFunctionName)return Ae.errors=[{params:{type:"string"}}],!1;u=e===f}else u=!0;if(u){if(void 0!==t.importMetaName){const e=f;if("string"!=typeof t.importMetaName)return Ae.errors=[{params:{type:"string"}}],!1;u=e===f}else u=!0;if(u){if(void 0!==t.library){const e=f;Oe(t.library,{instancePath:r+"/library",parentData:t,parentDataProperty:"library",rootData:i})||(l=null===l?Oe.errors:l.concat(Oe.errors),f=l.length),u=e===f}else u=!0;if(u){if(void 0!==t.libraryExport){let e=t.libraryExport;const n=f,r=f;let o=!1,s=null;const i=f,a=f;let p=!1;const c=f;if(f===c)if(Array.isArray(e)){const t=e.length;for(let n=0;n=",limit:1}}],!1}c=t===f}else c=!0;if(c){if(void 0!==r.performance){const e=f;xe(r.performance,{instancePath:o+"/performance",parentData:r,parentDataProperty:"performance",rootData:l})||(p=null===p?xe.errors:p.concat(xe.errors),f=p.length),c=e===f}else c=!0;if(c){if(void 0!==r.plugins){const e=f;Ce(r.plugins,{instancePath:o+"/plugins",parentData:r,parentDataProperty:"plugins",rootData:l})||(p=null===p?Ce.errors:p.concat(Ce.errors),f=p.length),c=e===f}else c=!0;if(c){if(void 0!==r.profile){const e=f;if("boolean"!=typeof r.profile)return Me.errors=[{params:{type:"boolean"}}],!1;c=e===f}else c=!0;if(c){if(void 0!==r.recordsInputPath){let t=r.recordsInputPath;const n=f,o=f;let s=!1;const i=f;if(!1!==t){const e={params:{}};null===p?p=[e]:p.push(e),f++}var g=i===f;if(s=s||g,!s){const n=f;if(f===n)if("string"==typeof t){if(t.includes("!")||!0!==e.test(t)){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}g=n===f,s=s||g}if(!s){const e={params:{}};return null===p?p=[e]:p.push(e),f++,Me.errors=p,!1}f=o,null!==p&&(o?p.length=o:p=null),c=n===f}else c=!0;if(c){if(void 0!==r.recordsOutputPath){let t=r.recordsOutputPath;const n=f,o=f;let s=!1;const i=f;if(!1!==t){const e={params:{}};null===p?p=[e]:p.push(e),f++}var v=i===f;if(s=s||v,!s){const n=f;if(f===n)if("string"==typeof t){if(t.includes("!")||!0!==e.test(t)){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}v=n===f,s=s||v}if(!s){const e={params:{}};return null===p?p=[e]:p.push(e),f++,Me.errors=p,!1}f=o,null!==p&&(o?p.length=o:p=null),c=n===f}else c=!0;if(c){if(void 0!==r.recordsPath){let t=r.recordsPath;const n=f,o=f;let s=!1;const i=f;if(!1!==t){const e={params:{}};null===p?p=[e]:p.push(e),f++}var P=i===f;if(s=s||P,!s){const n=f;if(f===n)if("string"==typeof t){if(t.includes("!")||!0!==e.test(t)){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}P=n===f,s=s||P}if(!s){const e={params:{}};return null===p?p=[e]:p.push(e),f++,Me.errors=p,!1}f=o,null!==p&&(o?p.length=o:p=null),c=n===f}else c=!0;if(c){if(void 0!==r.resolve){const e=f;ke(r.resolve,{instancePath:o+"/resolve",parentData:r,parentDataProperty:"resolve",rootData:l})||(p=null===p?ke.errors:p.concat(ke.errors),f=p.length),c=e===f}else c=!0;if(c){if(void 0!==r.resolveLoader){const e=f;$e(r.resolveLoader,{instancePath:o+"/resolveLoader",parentData:r,parentDataProperty:"resolveLoader",rootData:l})||(p=null===p?$e.errors:p.concat($e.errors),f=p.length),c=e===f}else c=!0;if(c){if(void 0!==r.snapshot){let t=r.snapshot;const n=f;if(f==f){if(!t||"object"!=typeof t||Array.isArray(t))return Me.errors=[{params:{type:"object"}}],!1;{const n=f;for(const e in t)if("buildDependencies"!==e&&"immutablePaths"!==e&&"managedPaths"!==e&&"module"!==e&&"resolve"!==e&&"resolveBuildDependencies"!==e)return Me.errors=[{params:{additionalProperty:e}}],!1;if(n===f){if(void 0!==t.buildDependencies){let e=t.buildDependencies;const n=f;if(f===n){if(!e||"object"!=typeof e||Array.isArray(e))return Me.errors=[{params:{type:"object"}}],!1;{const t=f;for(const t in e)if("hash"!==t&&"timestamp"!==t)return Me.errors=[{params:{additionalProperty:t}}],!1;if(t===f){if(void 0!==e.hash){const t=f;if("boolean"!=typeof e.hash)return Me.errors=[{params:{type:"boolean"}}],!1;var D=t===f}else D=!0;if(D)if(void 0!==e.timestamp){const t=f;if("boolean"!=typeof e.timestamp)return Me.errors=[{params:{type:"boolean"}}],!1;D=t===f}else D=!0}}}var O=n===f}else O=!0;if(O){if(void 0!==t.immutablePaths){let n=t.immutablePaths;const r=f;if(f===r){if(!Array.isArray(n))return Me.errors=[{params:{type:"array"}}],!1;{const t=n.length;for(let r=0;r=",limit:1}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}d=n===f}else d=!0;if(d)if(void 0!==t.type){const e=f;if("memory"!==t.type){const e={params:{}};null===p?p=[e]:p.push(e),f++}d=e===f}else d=!0}}}}else{const e={params:{type:"object"}};null===p?p=[e]:p.push(e),f++}if(m=o===f,c=c||m,!c){const o=f;if(f==f)if(t&&"object"==typeof t&&!Array.isArray(t)){let o;if(void 0===t.type&&(o="type")){const e={params:{missingProperty:o}};null===p?p=[e]:p.push(e),f++}else{const o=f;for(const e in t)if(!n.call(r.properties,e)){const t={params:{additionalProperty:e}};null===p?p=[t]:p.push(t),f++;break}if(o===f){if(void 0!==t.allowCollectingMemory){const e=f;if("boolean"!=typeof t.allowCollectingMemory){const e={params:{type:"boolean"}};null===p?p=[e]:p.push(e),f++}var h=e===f}else h=!0;if(h){if(void 0!==t.buildDependencies){let e=t.buildDependencies;const n=f;if(f===n)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){let n=e[t];const r=f;if(f===r)if(Array.isArray(n)){const e=n.length;for(let t=0;t=",limit:0}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}h=n===f}else h=!0;if(h){if(void 0!==t.idleTimeoutAfterLargeChanges){let e=t.idleTimeoutAfterLargeChanges;const n=f;if(f===n)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}h=n===f}else h=!0;if(h){if(void 0!==t.idleTimeoutForInitialStore){let e=t.idleTimeoutForInitialStore;const n=f;if(f===n)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}h=n===f}else h=!0;if(h){if(void 0!==t.immutablePaths){let n=t.immutablePaths;const r=f;if(f===r)if(Array.isArray(n)){const t=n.length;for(let r=0;r=",limit:0}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}h=n===f}else h=!0;if(h){if(void 0!==t.maxMemoryGenerations){let e=t.maxMemoryGenerations;const n=f;if(f===n)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"number"}};null===p?p=[e]:p.push(e),f++}h=n===f}else h=!0;if(h){if(void 0!==t.memoryCacheUnaffected){const e=f;if("boolean"!=typeof t.memoryCacheUnaffected){const e={params:{type:"boolean"}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0;if(h){if(void 0!==t.name){const e=f;if("string"!=typeof t.name){const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0;if(h){if(void 0!==t.profile){const e=f;if("boolean"!=typeof t.profile){const e={params:{type:"boolean"}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0;if(h){if(void 0!==t.store){const e=f;if("pack"!==t.store){const e={params:{}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0;if(h){if(void 0!==t.type){const e=f;if("filesystem"!==t.type){const e={params:{}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0;if(h)if(void 0!==t.version){const e=f;if("string"!=typeof t.version){const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}h=e===f}else h=!0}}}}}}}}}}}}}}}}}}}}else{const e={params:{type:"object"}};null===p?p=[e]:p.push(e),f++}m=o===f,c=c||m}}if(!c){const e={params:{}};return null===p?p=[e]:p.push(e),f++,o.errors=p,!1}return f=u,null!==p&&(u?p.length=u:p=null),o.errors=p,0===f}function s(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:i=e}={}){let a=null,l=0;const p=l;let f=!1;const u=l;if(!0!==e){const e={params:{}};null===a?a=[e]:a.push(e),l++}var c=u===l;if(f=f||c,!f){const s=l;o(e,{instancePath:t,parentData:n,parentDataProperty:r,rootData:i})||(a=null===a?o.errors:a.concat(o.errors),l=a.length),c=s===l,f=f||c}if(!f){const e={params:{}};return null===a?a=[e]:a.push(e),l++,s.errors=a,!1}return l=p,null!==a&&(p?a.length=p:a=null),s.errors=a,0===l}const i={type:"object",additionalProperties:!1,properties:{asyncChunks:{type:"boolean"},baseUri:{type:"string"},chunkLoading:{$ref:"#/definitions/ChunkLoading"},dependOn:{anyOf:[{type:"array",items:{type:"string",minLength:1},minItems:1,uniqueItems:!0},{type:"string",minLength:1}]},filename:{$ref:"#/definitions/EntryFilename"},import:{$ref:"#/definitions/EntryItem"},layer:{$ref:"#/definitions/Layer"},library:{$ref:"#/definitions/LibraryOptions"},publicPath:{$ref:"#/definitions/PublicPath"},runtime:{$ref:"#/definitions/EntryRuntime"},wasmLoading:{$ref:"#/definitions/WasmLoading"}},required:["import"]};function a(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const l=i;let p=!1;const f=i;if(!1!==e){const e={params:{}};null===s?s=[e]:s.push(e),i++}var u=f===i;if(p=p||u,!p){const t=i,n=i;let r=!1;const o=i;if("jsonp"!==e&&"import-scripts"!==e&&"require"!==e&&"async-node"!==e&&"import"!==e){const e={params:{}};null===s?s=[e]:s.push(e),i++}var c=o===i;if(r=r||c,!r){const t=i;if("string"!=typeof e){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}c=t===i,r=r||c}if(r)i=n,null!==s&&(n?s.length=n:s=null);else{const e={params:{}};null===s?s=[e]:s.push(e),i++}u=t===i,p=p||u}if(!p){const e={params:{}};return null===s?s=[e]:s.push(e),i++,a.errors=s,!1}return i=l,null!==s&&(l?s.length=l:s=null),a.errors=s,0===i}function l(t,{instancePath:n="",parentData:r,parentDataProperty:o,rootData:s=t}={}){let i=null,a=0;const p=a;let f=!1,u=null;const c=a,y=a;let m=!1;const d=a;if(a===d)if("string"==typeof t){if(t.includes("!")||!1!==e.test(t)){const e={params:{}};null===i?i=[e]:i.push(e),a++}else if(t.length<1){const e={params:{}};null===i?i=[e]:i.push(e),a++}}else{const e={params:{type:"string"}};null===i?i=[e]:i.push(e),a++}var h=d===a;if(m=m||h,!m){const e=a;if(!(t instanceof Function)){const e={params:{}};null===i?i=[e]:i.push(e),a++}h=e===a,m=m||h}if(m)a=y,null!==i&&(y?i.length=y:i=null);else{const e={params:{}};null===i?i=[e]:i.push(e),a++}if(c===a&&(f=!0,u=0),!f){const e={params:{passingSchemas:u}};return null===i?i=[e]:i.push(e),a++,l.errors=i,!1}return a=p,null!==i&&(p?i.length=p:i=null),l.errors=i,0===a}function p(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1;const f=i;if("string"!=typeof e){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}var u=f===i;if(l=l||u,!l){const t=i;if(i==i)if(e&&"object"==typeof e&&!Array.isArray(e)){const t=i;for(const t in e)if("amd"!==t&&"commonjs"!==t&&"commonjs2"!==t&&"root"!==t){const e={params:{additionalProperty:t}};null===s?s=[e]:s.push(e),i++;break}if(t===i){if(void 0!==e.amd){const t=i;if("string"!=typeof e.amd){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}var c=t===i}else c=!0;if(c){if(void 0!==e.commonjs){const t=i;if("string"!=typeof e.commonjs){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}c=t===i}else c=!0;if(c){if(void 0!==e.commonjs2){const t=i;if("string"!=typeof e.commonjs2){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}c=t===i}else c=!0;if(c)if(void 0!==e.root){const t=i;if("string"!=typeof e.root){const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}c=t===i}else c=!0}}}}else{const e={params:{type:"object"}};null===s?s=[e]:s.push(e),i++}u=t===i,l=l||u}if(!l){const e={params:{}};return null===s?s=[e]:s.push(e),i++,p.errors=s,!1}return i=a,null!==s&&(a?s.length=a:s=null),p.errors=s,0===i}function f(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1;const p=i;if(i===p)if(Array.isArray(e))if(e.length<1){const e={params:{limit:1}};null===s?s=[e]:s.push(e),i++}else{const t=e.length;for(let n=0;n1){const r={};for(;n--;){let o=t[n];if("string"==typeof o){if("number"==typeof r[o]){e=r[o];const t={params:{i:n,j:e}};null===p?p=[t]:p.push(t),f++;break}r[o]=n}}}}}else{const e={params:{type:"array"}};null===p?p=[e]:p.push(e),f++}var g=s===f;if(o=o||g,!o){const e=f;if(f===e)if("string"==typeof t){if(t.length<1){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}g=e===f,o=o||g}if(!o){const e={params:{}};return null===p?p=[e]:p.push(e),f++,m.errors=p,!1}f=r,null!==p&&(r?p.length=r:p=null),d=n===f}else d=!0;if(d){if(void 0!==e.filename){const n=f;l(e.filename,{instancePath:t+"/filename",parentData:e,parentDataProperty:"filename",rootData:s})||(p=null===p?l.errors:p.concat(l.errors),f=p.length),d=n===f}else d=!0;if(d){if(void 0!==e.import){let t=e.import;const n=f,r=f;let o=!1;const s=f;if(f===s)if(Array.isArray(t))if(t.length<1){const e={params:{limit:1}};null===p?p=[e]:p.push(e),f++}else{var b=!0;const e=t.length;for(let n=0;n1){const r={};for(;n--;){let o=t[n];if("string"==typeof o){if("number"==typeof r[o]){e=r[o];const t={params:{i:n,j:e}};null===p?p=[t]:p.push(t),f++;break}r[o]=n}}}}}else{const e={params:{type:"array"}};null===p?p=[e]:p.push(e),f++}var v=s===f;if(o=o||v,!o){const e=f;if(f===e)if("string"==typeof t){if(t.length<1){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}v=e===f,o=o||v}if(!o){const e={params:{}};return null===p?p=[e]:p.push(e),f++,m.errors=p,!1}f=r,null!==p&&(r?p.length=r:p=null),d=n===f}else d=!0;if(d){if(void 0!==e.layer){let t=e.layer;const n=f,r=f;let o=!1;const s=f;if(null!==t){const e={params:{}};null===p?p=[e]:p.push(e),f++}var P=s===f;if(o=o||P,!o){const e=f;if(f===e)if("string"==typeof t){if(t.length<1){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}P=e===f,o=o||P}if(!o){const e={params:{}};return null===p?p=[e]:p.push(e),f++,m.errors=p,!1}f=r,null!==p&&(r?p.length=r:p=null),d=n===f}else d=!0;if(d){if(void 0!==e.library){const n=f;u(e.library,{instancePath:t+"/library",parentData:e,parentDataProperty:"library",rootData:s})||(p=null===p?u.errors:p.concat(u.errors),f=p.length),d=n===f}else d=!0;if(d){if(void 0!==e.publicPath){const n=f;c(e.publicPath,{instancePath:t+"/publicPath",parentData:e,parentDataProperty:"publicPath",rootData:s})||(p=null===p?c.errors:p.concat(c.errors),f=p.length),d=n===f}else d=!0;if(d){if(void 0!==e.runtime){let t=e.runtime;const n=f,r=f;let o=!1;const s=f;if(!1!==t){const e={params:{}};null===p?p=[e]:p.push(e),f++}var D=s===f;if(o=o||D,!o){const e=f;if(f===e)if("string"==typeof t){if(t.length<1){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}D=e===f,o=o||D}if(!o){const e={params:{}};return null===p?p=[e]:p.push(e),f++,m.errors=p,!1}f=r,null!==p&&(r?p.length=r:p=null),d=n===f}else d=!0;if(d)if(void 0!==e.wasmLoading){const n=f;y(e.wasmLoading,{instancePath:t+"/wasmLoading",parentData:e,parentDataProperty:"wasmLoading",rootData:s})||(p=null===p?y.errors:p.concat(y.errors),f=p.length),d=n===f}else d=!0}}}}}}}}}}}}}return m.errors=p,0===f}function d(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;if(0===i){if(!e||"object"!=typeof e||Array.isArray(e))return d.errors=[{params:{type:"object"}}],!1;for(const n in e){let r=e[n];const f=i,u=i;let c=!1;const y=i,h=i;let g=!1;const b=i;if(i===b)if(Array.isArray(r))if(r.length<1){const e={params:{limit:1}};null===s?s=[e]:s.push(e),i++}else{var a=!0;const e=r.length;for(let t=0;t1){const n={};for(;t--;){let o=r[t];if("string"==typeof o){if("number"==typeof n[o]){e=n[o];const r={params:{i:t,j:e}};null===s?s=[r]:s.push(r),i++;break}n[o]=t}}}}}else{const e={params:{type:"array"}};null===s?s=[e]:s.push(e),i++}var l=b===i;if(g=g||l,!g){const e=i;if(i===e)if("string"==typeof r){if(r.length<1){const e={params:{}};null===s?s=[e]:s.push(e),i++}}else{const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}l=e===i,g=g||l}if(g)i=h,null!==s&&(h?s.length=h:s=null);else{const e={params:{}};null===s?s=[e]:s.push(e),i++}var p=y===i;if(c=c||p,!c){const a=i;m(r,{instancePath:t+"/"+n.replace(/~/g,"~0").replace(/\//g,"~1"),parentData:e,parentDataProperty:n,rootData:o})||(s=null===s?m.errors:s.concat(m.errors),i=s.length),p=a===i,c=c||p}if(!c){const e={params:{}};return null===s?s=[e]:s.push(e),i++,d.errors=s,!1}if(i=u,null!==s&&(u?s.length=u:s=null),f!==i)break}}return d.errors=s,0===i}function h(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1,p=null;const f=i,u=i;let c=!1;const y=i;if(i===y)if(Array.isArray(e))if(e.length<1){const e={params:{limit:1}};null===s?s=[e]:s.push(e),i++}else{var m=!0;const t=e.length;for(let n=0;n1){const r={};for(;n--;){let o=e[n];if("string"==typeof o){if("number"==typeof r[o]){t=r[o];const e={params:{i:n,j:t}};null===s?s=[e]:s.push(e),i++;break}r[o]=n}}}}}else{const e={params:{type:"array"}};null===s?s=[e]:s.push(e),i++}var d=y===i;if(c=c||d,!c){const t=i;if(i===t)if("string"==typeof e){if(e.length<1){const e={params:{}};null===s?s=[e]:s.push(e),i++}}else{const e={params:{type:"string"}};null===s?s=[e]:s.push(e),i++}d=t===i,c=c||d}if(c)i=u,null!==s&&(u?s.length=u:s=null);else{const e={params:{}};null===s?s=[e]:s.push(e),i++}if(f===i&&(l=!0,p=0),!l){const e={params:{passingSchemas:p}};return null===s?s=[e]:s.push(e),i++,h.errors=s,!1}return i=a,null!==s&&(a?s.length=a:s=null),h.errors=s,0===i}function g(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1;const p=i;d(e,{instancePath:t,parentData:n,parentDataProperty:r,rootData:o})||(s=null===s?d.errors:s.concat(d.errors),i=s.length);var f=p===i;if(l=l||f,!l){const a=i;h(e,{instancePath:t,parentData:n,parentDataProperty:r,rootData:o})||(s=null===s?h.errors:s.concat(h.errors),i=s.length),f=a===i,l=l||f}if(!l){const e={params:{}};return null===s?s=[e]:s.push(e),i++,g.errors=s,!1}return i=a,null!==s&&(a?s.length=a:s=null),g.errors=s,0===i}function b(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1;const p=i;if(!(e instanceof Function)){const e={params:{}};null===s?s=[e]:s.push(e),i++}var f=p===i;if(l=l||f,!l){const a=i;g(e,{instancePath:t,parentData:n,parentDataProperty:r,rootData:o})||(s=null===s?g.errors:s.concat(g.errors),i=s.length),f=a===i,l=l||f}if(!l){const e={params:{}};return null===s?s=[e]:s.push(e),i++,b.errors=s,!1}return i=a,null!==s&&(a?s.length=a:s=null),b.errors=s,0===i}const v={type:"object",additionalProperties:!1,properties:{asyncWebAssembly:{type:"boolean"},backCompat:{type:"boolean"},buildHttp:{anyOf:[{$ref:"#/definitions/HttpUriAllowedUris"},{$ref:"#/definitions/HttpUriOptions"}]},cacheUnaffected:{type:"boolean"},css:{anyOf:[{type:"boolean"},{$ref:"#/definitions/CssExperimentOptions"}]},futureDefaults:{type:"boolean"},layers:{type:"boolean"},lazyCompilation:{anyOf:[{type:"boolean"},{$ref:"#/definitions/LazyCompilationOptions"}]},outputModule:{type:"boolean"},syncWebAssembly:{type:"boolean"},topLevelAwait:{type:"boolean"}}},P=new RegExp("^https?://","u");function D(e,{instancePath:t="",parentData:n,parentDataProperty:r,rootData:o=e}={}){let s=null,i=0;const a=i;let l=!1,p=null;const f=i;if(i==i)if(Array.isArray(e)){const t=e.length;for(let n=0;n=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var u=y===l;if(c=c||u,!c){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}u=t===l,c=c||u}if(c)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.filename){let n=t.filename;const r=l,o=l;let s=!1;const i=l;if(l===i)if("string"==typeof n){if(n.includes("!")||!1!==e.test(n)){const e={params:{}};null===a?a=[e]:a.push(e),l++}else if(n.length<1){const e={params:{}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}var c=i===l;if(s=s||c,!s){const e=l;if(!(n instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}c=e===l,s=s||c}if(!s){const e={params:{}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=o,null!==a&&(o?a.length=o:a=null),p=r===l}else p=!0;if(p){if(void 0!==t.idHint){const e=l;if("string"!=typeof t.idHint)return pe.errors=[{params:{type:"string"}}],!1;p=e===l}else p=!0;if(p){if(void 0!==t.layer){let e=t.layer;const n=l,r=l;let o=!1;const s=l;if(!(e instanceof RegExp)){const e={params:{}};null===a?a=[e]:a.push(e),l++}var y=s===l;if(o=o||y,!o){const t=l;if("string"!=typeof e){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(y=t===l,o=o||y,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}y=t===l,o=o||y}}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.maxAsyncRequests){let e=t.maxAsyncRequests;const n=l;if(l===n){if("number"!=typeof e)return pe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return pe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.maxAsyncSize){let e=t.maxAsyncSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var m=c===l;if(u=u||m,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}m=t===l,u=u||m}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.maxInitialRequests){let e=t.maxInitialRequests;const n=l;if(l===n){if("number"!=typeof e)return pe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return pe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.maxInitialSize){let e=t.maxInitialSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var d=c===l;if(u=u||d,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}d=t===l,u=u||d}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.maxSize){let e=t.maxSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var h=c===l;if(u=u||h,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}h=t===l,u=u||h}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minChunks){let e=t.minChunks;const n=l;if(l===n){if("number"!=typeof e)return pe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return pe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.minRemainingSize){let e=t.minRemainingSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var g=c===l;if(u=u||g,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}g=t===l,u=u||g}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minSize){let e=t.minSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var b=c===l;if(u=u||b,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}b=t===l,u=u||b}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minSizeReduction){let e=t.minSizeReduction;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var v=c===l;if(u=u||v,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}v=t===l,u=u||v}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.name){let e=t.name;const n=l,r=l;let o=!1;const s=l;if(!1!==e){const e={params:{}};null===a?a=[e]:a.push(e),l++}var P=s===l;if(o=o||P,!o){const t=l;if("string"!=typeof e){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(P=t===l,o=o||P,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}P=t===l,o=o||P}}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.priority){const e=l;if("number"!=typeof t.priority)return pe.errors=[{params:{type:"number"}}],!1;p=e===l}else p=!0;if(p){if(void 0!==t.reuseExistingChunk){const e=l;if("boolean"!=typeof t.reuseExistingChunk)return pe.errors=[{params:{type:"boolean"}}],!1;p=e===l}else p=!0;if(p){if(void 0!==t.test){let e=t.test;const n=l,r=l;let o=!1;const s=l;if(!(e instanceof RegExp)){const e={params:{}};null===a?a=[e]:a.push(e),l++}var D=s===l;if(o=o||D,!o){const t=l;if("string"!=typeof e){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(D=t===l,o=o||D,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}D=t===l,o=o||D}}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.type){let e=t.type;const n=l,r=l;let o=!1;const s=l;if(!(e instanceof RegExp)){const e={params:{}};null===a?a=[e]:a.push(e),l++}var O=s===l;if(o=o||O,!o){const t=l;if("string"!=typeof e){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(O=t===l,o=o||O,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}O=t===l,o=o||O}}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,pe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p)if(void 0!==t.usedExports){const e=l;if("boolean"!=typeof t.usedExports)return pe.errors=[{params:{type:"boolean"}}],!1;p=e===l}else p=!0}}}}}}}}}}}}}}}}}}}}}}}return pe.errors=a,0===l}function fe(t,{instancePath:r="",parentData:o,parentDataProperty:s,rootData:i=t}={}){let a=null,l=0;if(0===l){if(!t||"object"!=typeof t||Array.isArray(t))return fe.errors=[{params:{type:"object"}}],!1;{const o=l;for(const e in t)if(!n.call(ae.properties,e))return fe.errors=[{params:{additionalProperty:e}}],!1;if(o===l){if(void 0!==t.automaticNameDelimiter){let e=t.automaticNameDelimiter;const n=l;if(l===n){if("string"!=typeof e)return fe.errors=[{params:{type:"string"}}],!1;if(e.length<1)return fe.errors=[{params:{}}],!1}var p=n===l}else p=!0;if(p){if(void 0!==t.cacheGroups){let e=t.cacheGroups;const n=l,o=l,s=l;if(l===s)if(e&&"object"==typeof e&&!Array.isArray(e)){let t;if(void 0===e.test&&(t="test")){const e={};null===a?a=[e]:a.push(e),l++}else if(void 0!==e.test){let t=e.test;const n=l;let r=!1;const o=l;if(!(t instanceof RegExp)){const e={};null===a?a=[e]:a.push(e),l++}var f=o===l;if(r=r||f,!r){const e=l;if("string"!=typeof t){const e={};null===a?a=[e]:a.push(e),l++}if(f=e===l,r=r||f,!r){const e=l;if(!(t instanceof Function)){const e={};null===a?a=[e]:a.push(e),l++}f=e===l,r=r||f}}if(r)l=n,null!==a&&(n?a.length=n:a=null);else{const e={};null===a?a=[e]:a.push(e),l++}}}else{const e={};null===a?a=[e]:a.push(e),l++}if(s===l)return fe.errors=[{params:{}}],!1;if(l=o,null!==a&&(o?a.length=o:a=null),l===n){if(!e||"object"!=typeof e||Array.isArray(e))return fe.errors=[{params:{type:"object"}}],!1;for(const t in e){let n=e[t];const o=l,s=l;let p=!1;const f=l;if(!1!==n){const e={params:{}};null===a?a=[e]:a.push(e),l++}var u=f===l;if(p=p||u,!p){const o=l;if(!(n instanceof RegExp)){const e={params:{}};null===a?a=[e]:a.push(e),l++}if(u=o===l,p=p||u,!p){const o=l;if("string"!=typeof n){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(u=o===l,p=p||u,!p){const o=l;if(!(n instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}if(u=o===l,p=p||u,!p){const o=l;pe(n,{instancePath:r+"/cacheGroups/"+t.replace(/~/g,"~0").replace(/\//g,"~1"),parentData:e,parentDataProperty:t,rootData:i})||(a=null===a?pe.errors:a.concat(pe.errors),l=a.length),u=o===l,p=p||u}}}}if(!p){const e={params:{}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}if(l=s,null!==a&&(s?a.length=s:a=null),o!==l)break}}p=n===l}else p=!0;if(p){if(void 0!==t.chunks){let e=t.chunks;const n=l,r=l;let o=!1;const s=l;if("initial"!==e&&"async"!==e&&"all"!==e){const e={params:{}};null===a?a=[e]:a.push(e),l++}var c=s===l;if(o=o||c,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}c=t===l,o=o||c}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.defaultSizeTypes){let e=t.defaultSizeTypes;const n=l;if(l===n){if(!Array.isArray(e))return fe.errors=[{params:{type:"array"}}],!1;if(e.length<1)return fe.errors=[{params:{limit:1}}],!1;{const t=e.length;for(let n=0;n=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var y=c===l;if(u=u||y,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}y=t===l,u=u||y}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.fallbackCacheGroup){let e=t.fallbackCacheGroup;const n=l;if(l===n){if(!e||"object"!=typeof e||Array.isArray(e))return fe.errors=[{params:{type:"object"}}],!1;{const t=l;for(const t in e)if("automaticNameDelimiter"!==t&&"chunks"!==t&&"maxAsyncSize"!==t&&"maxInitialSize"!==t&&"maxSize"!==t&&"minSize"!==t&&"minSizeReduction"!==t)return fe.errors=[{params:{additionalProperty:t}}],!1;if(t===l){if(void 0!==e.automaticNameDelimiter){let t=e.automaticNameDelimiter;const n=l;if(l===n){if("string"!=typeof t)return fe.errors=[{params:{type:"string"}}],!1;if(t.length<1)return fe.errors=[{params:{}}],!1}var m=n===l}else m=!0;if(m){if(void 0!==e.chunks){let t=e.chunks;const n=l,r=l;let o=!1;const s=l;if("initial"!==t&&"async"!==t&&"all"!==t){const e={params:{}};null===a?a=[e]:a.push(e),l++}var d=s===l;if(o=o||d,!o){const e=l;if(!(t instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}d=e===l,o=o||d}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0;if(m){if(void 0!==e.maxAsyncSize){let t=e.maxAsyncSize;const n=l,r=l;let o=!1,s=null;const i=l,p=l;let f=!1;const u=l;if(l===u)if("number"==typeof t){if(t<0||isNaN(t)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var h=u===l;if(f=f||h,!f){const e=l;if(l===e)if(t&&"object"==typeof t&&!Array.isArray(t))for(const e in t){const n=l;if("number"!=typeof t[e]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}h=e===l,f=f||h}if(f)l=p,null!==a&&(p?a.length=p:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0;if(m){if(void 0!==e.maxInitialSize){let t=e.maxInitialSize;const n=l,r=l;let o=!1,s=null;const i=l,p=l;let f=!1;const u=l;if(l===u)if("number"==typeof t){if(t<0||isNaN(t)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var g=u===l;if(f=f||g,!f){const e=l;if(l===e)if(t&&"object"==typeof t&&!Array.isArray(t))for(const e in t){const n=l;if("number"!=typeof t[e]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}g=e===l,f=f||g}if(f)l=p,null!==a&&(p?a.length=p:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0;if(m){if(void 0!==e.maxSize){let t=e.maxSize;const n=l,r=l;let o=!1,s=null;const i=l,p=l;let f=!1;const u=l;if(l===u)if("number"==typeof t){if(t<0||isNaN(t)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var b=u===l;if(f=f||b,!f){const e=l;if(l===e)if(t&&"object"==typeof t&&!Array.isArray(t))for(const e in t){const n=l;if("number"!=typeof t[e]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}b=e===l,f=f||b}if(f)l=p,null!==a&&(p?a.length=p:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0;if(m){if(void 0!==e.minSize){let t=e.minSize;const n=l,r=l;let o=!1,s=null;const i=l,p=l;let f=!1;const u=l;if(l===u)if("number"==typeof t){if(t<0||isNaN(t)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var v=u===l;if(f=f||v,!f){const e=l;if(l===e)if(t&&"object"==typeof t&&!Array.isArray(t))for(const e in t){const n=l;if("number"!=typeof t[e]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}v=e===l,f=f||v}if(f)l=p,null!==a&&(p?a.length=p:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0;if(m)if(void 0!==e.minSizeReduction){let t=e.minSizeReduction;const n=l,r=l;let o=!1,s=null;const i=l,p=l;let f=!1;const u=l;if(l===u)if("number"==typeof t){if(t<0||isNaN(t)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var P=u===l;if(f=f||P,!f){const e=l;if(l===e)if(t&&"object"==typeof t&&!Array.isArray(t))for(const e in t){const n=l;if("number"!=typeof t[e]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}P=e===l,f=f||P}if(f)l=p,null!==a&&(p?a.length=p:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),m=n===l}else m=!0}}}}}}}}p=n===l}else p=!0;if(p){if(void 0!==t.filename){let n=t.filename;const r=l,o=l;let s=!1;const i=l;if(l===i)if("string"==typeof n){if(n.includes("!")||!1!==e.test(n)){const e={params:{}};null===a?a=[e]:a.push(e),l++}else if(n.length<1){const e={params:{}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}var D=i===l;if(s=s||D,!s){const e=l;if(!(n instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}D=e===l,s=s||D}if(!s){const e={params:{}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=o,null!==a&&(o?a.length=o:a=null),p=r===l}else p=!0;if(p){if(void 0!==t.hidePathInfo){const e=l;if("boolean"!=typeof t.hidePathInfo)return fe.errors=[{params:{type:"boolean"}}],!1;p=e===l}else p=!0;if(p){if(void 0!==t.maxAsyncRequests){let e=t.maxAsyncRequests;const n=l;if(l===n){if("number"!=typeof e)return fe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return fe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.maxAsyncSize){let e=t.maxAsyncSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var O=c===l;if(u=u||O,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}O=t===l,u=u||O}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.maxInitialRequests){let e=t.maxInitialRequests;const n=l;if(l===n){if("number"!=typeof e)return fe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return fe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.maxInitialSize){let e=t.maxInitialSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var A=c===l;if(u=u||A,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}A=t===l,u=u||A}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.maxSize){let e=t.maxSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var x=c===l;if(u=u||x,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}x=t===l,u=u||x}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minChunks){let e=t.minChunks;const n=l;if(l===n){if("number"!=typeof e)return fe.errors=[{params:{type:"number"}}],!1;if(e<1||isNaN(e))return fe.errors=[{params:{comparison:">=",limit:1}}],!1}p=n===l}else p=!0;if(p){if(void 0!==t.minRemainingSize){let e=t.minRemainingSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var C=c===l;if(u=u||C,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}C=t===l,u=u||C}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minSize){let e=t.minSize;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var k=c===l;if(u=u||k,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}k=t===l,u=u||k}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.minSizeReduction){let e=t.minSizeReduction;const n=l,r=l;let o=!1,s=null;const i=l,f=l;let u=!1;const c=l;if(l===c)if("number"==typeof e){if(e<0||isNaN(e)){const e={params:{comparison:">=",limit:0}};null===a?a=[e]:a.push(e),l++}}else{const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}var $=c===l;if(u=u||$,!u){const t=l;if(l===t)if(e&&"object"==typeof e&&!Array.isArray(e))for(const t in e){const n=l;if("number"!=typeof e[t]){const e={params:{type:"number"}};null===a?a=[e]:a.push(e),l++}if(n!==l)break}else{const e={params:{type:"object"}};null===a?a=[e]:a.push(e),l++}$=t===l,u=u||$}if(u)l=f,null!==a&&(f?a.length=f:a=null);else{const e={params:{}};null===a?a=[e]:a.push(e),l++}if(i===l&&(o=!0,s=0),!o){const e={params:{passingSchemas:s}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p){if(void 0!==t.name){let e=t.name;const n=l,r=l;let o=!1;const s=l;if(!1!==e){const e={params:{}};null===a?a=[e]:a.push(e),l++}var S=s===l;if(o=o||S,!o){const t=l;if("string"!=typeof e){const e={params:{type:"string"}};null===a?a=[e]:a.push(e),l++}if(S=t===l,o=o||S,!o){const t=l;if(!(e instanceof Function)){const e={params:{}};null===a?a=[e]:a.push(e),l++}S=t===l,o=o||S}}if(!o){const e={params:{}};return null===a?a=[e]:a.push(e),l++,fe.errors=a,!1}l=r,null!==a&&(r?a.length=r:a=null),p=n===l}else p=!0;if(p)if(void 0!==t.usedExports){const e=l;if("boolean"!=typeof t.usedExports)return fe.errors=[{params:{type:"boolean"}}],!1;p=e===l}else p=!0}}}}}}}}}}}}}}}}}}}}return fe.errors=a,0===l}function ue(e,{instancePath:t="",parentData:r,parentDataProperty:o,rootData:s=e}={}){let i=null,a=0;if(0===a){if(!e||"object"!=typeof e||Array.isArray(e))return ue.errors=[{params:{type:"object"}}],!1;{const r=a;for(const t in e)if(!n.call(ie.properties,t))return ue.errors=[{params:{additionalProperty:t}}],!1;if(r===a){if(void 0!==e.checkWasmTypes){const t=a;if("boolean"!=typeof e.checkWasmTypes)return ue.errors=[{params:{type:"boolean"}}],!1;var l=t===a}else l=!0;if(l){if(void 0!==e.chunkIds){let t=e.chunkIds;const n=a;if("natural"!==t&&"named"!==t&&"deterministic"!==t&&"size"!==t&&"total-size"!==t&&!1!==t)return ue.errors=[{params:{}}],!1;l=n===a}else l=!0;if(l){if(void 0!==e.concatenateModules){const t=a;if("boolean"!=typeof e.concatenateModules)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.emitOnErrors){const t=a;if("boolean"!=typeof e.emitOnErrors)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.flagIncludedChunks){const t=a;if("boolean"!=typeof e.flagIncludedChunks)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.innerGraph){const t=a;if("boolean"!=typeof e.innerGraph)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.mangleExports){let t=e.mangleExports;const n=a,r=a;let o=!1;const s=a;if("size"!==t&&"deterministic"!==t){const e={params:{}};null===i?i=[e]:i.push(e),a++}var p=s===a;if(o=o||p,!o){const e=a;if("boolean"!=typeof t){const e={params:{type:"boolean"}};null===i?i=[e]:i.push(e),a++}p=e===a,o=o||p}if(!o){const e={params:{}};return null===i?i=[e]:i.push(e),a++,ue.errors=i,!1}a=r,null!==i&&(r?i.length=r:i=null),l=n===a}else l=!0;if(l){if(void 0!==e.mangleWasmImports){const t=a;if("boolean"!=typeof e.mangleWasmImports)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.mergeDuplicateChunks){const t=a;if("boolean"!=typeof e.mergeDuplicateChunks)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.minimize){const t=a;if("boolean"!=typeof e.minimize)return ue.errors=[{params:{type:"boolean"}}],!1;l=t===a}else l=!0;if(l){if(void 0!==e.minimizer){let t=e.minimizer;const n=a;if(a===n){if(!Array.isArray(t))return ue.errors=[{params:{type:"array"}}],!1;{const e=t.length;for(let n=0;n=",limit:1}}],!1}u=n===f}else u=!0;if(u){if(void 0!==t.hashFunction){let e=t.hashFunction;const n=f,r=f;let o=!1;const s=f;if(f===s)if("string"==typeof e){if(e.length<1){const e={params:{}};null===l?l=[e]:l.push(e),f++}}else{const e={params:{type:"string"}};null===l?l=[e]:l.push(e),f++}var v=s===f;if(o=o||v,!o){const t=f;if(!(e instanceof Function)){const e={params:{}};null===l?l=[e]:l.push(e),f++}v=t===f,o=o||v}if(!o){const e={params:{}};return null===l?l=[e]:l.push(e),f++,Ae.errors=l,!1}f=r,null!==l&&(r?l.length=r:l=null),u=n===f}else u=!0;if(u){if(void 0!==t.hashSalt){let e=t.hashSalt;const n=f;if(f==f){if("string"!=typeof e)return Ae.errors=[{params:{type:"string"}}],!1;if(e.length<1)return Ae.errors=[{params:{}}],!1}u=n===f}else u=!0;if(u){if(void 0!==t.hotUpdateChunkFilename){let n=t.hotUpdateChunkFilename;const r=f;if(f==f){if("string"!=typeof n)return Ae.errors=[{params:{type:"string"}}],!1;if(n.includes("!")||!1!==e.test(n))return Ae.errors=[{params:{}}],!1}u=r===f}else u=!0;if(u){if(void 0!==t.hotUpdateGlobal){const e=f;if("string"!=typeof t.hotUpdateGlobal)return Ae.errors=[{params:{type:"string"}}],!1;u=e===f}else u=!0;if(u){if(void 0!==t.hotUpdateMainFilename){let n=t.hotUpdateMainFilename;const r=f;if(f==f){if("string"!=typeof n)return Ae.errors=[{params:{type:"string"}}],!1;if(n.includes("!")||!1!==e.test(n))return Ae.errors=[{params:{}}],!1}u=r===f}else u=!0;if(u){if(void 0!==t.ignoreBrowserWarnings){const e=f;if("boolean"!=typeof t.ignoreBrowserWarnings)return Ae.errors=[{params:{type:"boolean"}}],!1;u=e===f}else u=!0;if(u){if(void 0!==t.iife){const e=f;if("boolean"!=typeof t.iife)return Ae.errors=[{params:{type:"boolean"}}],!1;u=e===f}else u=!0;if(u){if(void 0!==t.importFunctionName){const e=f;if("string"!=typeof t.importFunctionName)return Ae.errors=[{params:{type:"string"}}],!1;u=e===f}else u=!0;if(u){if(void 0!==t.importMetaName){const e=f;if("string"!=typeof t.importMetaName)return Ae.errors=[{params:{type:"string"}}],!1;u=e===f}else u=!0;if(u){if(void 0!==t.library){const e=f;Oe(t.library,{instancePath:r+"/library",parentData:t,parentDataProperty:"library",rootData:i})||(l=null===l?Oe.errors:l.concat(Oe.errors),f=l.length),u=e===f}else u=!0;if(u){if(void 0!==t.libraryExport){let e=t.libraryExport;const n=f,r=f;let o=!1,s=null;const i=f,a=f;let p=!1;const c=f;if(f===c)if(Array.isArray(e)){const t=e.length;for(let n=0;n=",limit:1}}],!1}c=t===f}else c=!0;if(c){if(void 0!==r.performance){const e=f;xe(r.performance,{instancePath:o+"/performance",parentData:r,parentDataProperty:"performance",rootData:l})||(p=null===p?xe.errors:p.concat(xe.errors),f=p.length),c=e===f}else c=!0;if(c){if(void 0!==r.plugins){const e=f;Ce(r.plugins,{instancePath:o+"/plugins",parentData:r,parentDataProperty:"plugins",rootData:l})||(p=null===p?Ce.errors:p.concat(Ce.errors),f=p.length),c=e===f}else c=!0;if(c){if(void 0!==r.profile){const e=f;if("boolean"!=typeof r.profile)return Me.errors=[{params:{type:"boolean"}}],!1;c=e===f}else c=!0;if(c){if(void 0!==r.recordsInputPath){let t=r.recordsInputPath;const n=f,o=f;let s=!1;const i=f;if(!1!==t){const e={params:{}};null===p?p=[e]:p.push(e),f++}var g=i===f;if(s=s||g,!s){const n=f;if(f===n)if("string"==typeof t){if(t.includes("!")||!0!==e.test(t)){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}g=n===f,s=s||g}if(!s){const e={params:{}};return null===p?p=[e]:p.push(e),f++,Me.errors=p,!1}f=o,null!==p&&(o?p.length=o:p=null),c=n===f}else c=!0;if(c){if(void 0!==r.recordsOutputPath){let t=r.recordsOutputPath;const n=f,o=f;let s=!1;const i=f;if(!1!==t){const e={params:{}};null===p?p=[e]:p.push(e),f++}var v=i===f;if(s=s||v,!s){const n=f;if(f===n)if("string"==typeof t){if(t.includes("!")||!0!==e.test(t)){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}v=n===f,s=s||v}if(!s){const e={params:{}};return null===p?p=[e]:p.push(e),f++,Me.errors=p,!1}f=o,null!==p&&(o?p.length=o:p=null),c=n===f}else c=!0;if(c){if(void 0!==r.recordsPath){let t=r.recordsPath;const n=f,o=f;let s=!1;const i=f;if(!1!==t){const e={params:{}};null===p?p=[e]:p.push(e),f++}var P=i===f;if(s=s||P,!s){const n=f;if(f===n)if("string"==typeof t){if(t.includes("!")||!0!==e.test(t)){const e={params:{}};null===p?p=[e]:p.push(e),f++}}else{const e={params:{type:"string"}};null===p?p=[e]:p.push(e),f++}P=n===f,s=s||P}if(!s){const e={params:{}};return null===p?p=[e]:p.push(e),f++,Me.errors=p,!1}f=o,null!==p&&(o?p.length=o:p=null),c=n===f}else c=!0;if(c){if(void 0!==r.resolve){const e=f;ke(r.resolve,{instancePath:o+"/resolve",parentData:r,parentDataProperty:"resolve",rootData:l})||(p=null===p?ke.errors:p.concat(ke.errors),f=p.length),c=e===f}else c=!0;if(c){if(void 0!==r.resolveLoader){const e=f;$e(r.resolveLoader,{instancePath:o+"/resolveLoader",parentData:r,parentDataProperty:"resolveLoader",rootData:l})||(p=null===p?$e.errors:p.concat($e.errors),f=p.length),c=e===f}else c=!0;if(c){if(void 0!==r.snapshot){let t=r.snapshot;const n=f;if(f==f){if(!t||"object"!=typeof t||Array.isArray(t))return Me.errors=[{params:{type:"object"}}],!1;{const n=f;for(const e in t)if("buildDependencies"!==e&&"immutablePaths"!==e&&"managedPaths"!==e&&"module"!==e&&"resolve"!==e&&"resolveBuildDependencies"!==e)return Me.errors=[{params:{additionalProperty:e}}],!1;if(n===f){if(void 0!==t.buildDependencies){let e=t.buildDependencies;const n=f;if(f===n){if(!e||"object"!=typeof e||Array.isArray(e))return Me.errors=[{params:{type:"object"}}],!1;{const t=f;for(const t in e)if("hash"!==t&&"timestamp"!==t)return Me.errors=[{params:{additionalProperty:t}}],!1;if(t===f){if(void 0!==e.hash){const t=f;if("boolean"!=typeof e.hash)return Me.errors=[{params:{type:"boolean"}}],!1;var D=t===f}else D=!0;if(D)if(void 0!==e.timestamp){const t=f;if("boolean"!=typeof e.timestamp)return Me.errors=[{params:{type:"boolean"}}],!1;D=t===f}else D=!0}}}var O=n===f}else O=!0;if(O){if(void 0!==t.immutablePaths){let n=t.immutablePaths;const r=f;if(f===r){if(!Array.isArray(n))return Me.errors=[{params:{type:"array"}}],!1;{const t=n.length;for(let r=0;r { "hotUpdateChunkFilename": "[id].[fullhash].hot-update.js", "hotUpdateGlobal": "webpackHotUpdatewebpack", "hotUpdateMainFilename": "[runtime].[fullhash].hot-update.json", + "ignoreBrowserWarnings": undefined, "iife": true, "importFunctionName": "import", "importMetaName": "import.meta", diff --git a/test/Stats.test.js b/test/Stats.test.js index 935e5f63a6d..24d3aafc6bf 100644 --- a/test/Stats.test.js +++ b/test/Stats.test.js @@ -175,10 +175,10 @@ describe("Stats", () => { "assets": Array [ Object { "name": "entryB.js", - "size": 2961, + "size": 2985, }, ], - "assetsSize": 2961, + "assetsSize": 2985, "auxiliaryAssets": undefined, "auxiliaryAssetsSize": 0, "childAssets": undefined, @@ -223,10 +223,10 @@ describe("Stats", () => { "info": Object { "javascriptModule": false, "minimized": true, - "size": 2961, + "size": 2985, }, "name": "entryB.js", - "size": 2961, + "size": 2985, "type": "asset", }, Object { diff --git a/test/Validation.test.js b/test/Validation.test.js index 38eeb846c52..475fc646c9c 100644 --- a/test/Validation.test.js +++ b/test/Validation.test.js @@ -498,7 +498,7 @@ describe("Validation", () => { expect(msg).toMatchInlineSnapshot(` "Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema. - configuration.output has an unknown property 'ecmaVersion'. These properties are valid: - object { amdContainer?, assetModuleFilename?, asyncChunks?, auxiliaryComment?, charset?, chunkFilename?, chunkFormat?, chunkLoadTimeout?, chunkLoading?, chunkLoadingGlobal?, clean?, compareBeforeEmit?, crossOriginLoading?, cssChunkFilename?, cssFilename?, devtoolFallbackModuleFilenameTemplate?, devtoolModuleFilenameTemplate?, devtoolNamespace?, enabledChunkLoadingTypes?, enabledLibraryTypes?, enabledWasmLoadingTypes?, environment?, filename?, globalObject?, hashDigest?, hashDigestLength?, hashFunction?, hashSalt?, hotUpdateChunkFilename?, hotUpdateGlobal?, hotUpdateMainFilename?, iife?, importFunctionName?, importMetaName?, library?, libraryExport?, libraryTarget?, module?, path?, pathinfo?, publicPath?, scriptType?, sourceMapFilename?, sourcePrefix?, strictModuleErrorHandling?, strictModuleExceptionHandling?, trustedTypes?, umdNamedDefine?, uniqueName?, wasmLoading?, webassemblyModuleFilename?, workerChunkLoading?, workerPublicPath?, workerWasmLoading? } + object { amdContainer?, assetModuleFilename?, asyncChunks?, auxiliaryComment?, charset?, chunkFilename?, chunkFormat?, chunkLoadTimeout?, chunkLoading?, chunkLoadingGlobal?, clean?, compareBeforeEmit?, crossOriginLoading?, cssChunkFilename?, cssFilename?, devtoolFallbackModuleFilenameTemplate?, devtoolModuleFilenameTemplate?, devtoolNamespace?, enabledChunkLoadingTypes?, enabledLibraryTypes?, enabledWasmLoadingTypes?, environment?, filename?, globalObject?, hashDigest?, hashDigestLength?, hashFunction?, hashSalt?, hotUpdateChunkFilename?, hotUpdateGlobal?, hotUpdateMainFilename?, ignoreBrowserWarnings?, iife?, importFunctionName?, importMetaName?, library?, libraryExport?, libraryTarget?, module?, path?, pathinfo?, publicPath?, scriptType?, sourceMapFilename?, sourcePrefix?, strictModuleErrorHandling?, strictModuleExceptionHandling?, trustedTypes?, umdNamedDefine?, uniqueName?, wasmLoading?, webassemblyModuleFilename?, workerChunkLoading?, workerPublicPath?, workerWasmLoading? } -> Options affecting the output of the compilation. \`output\` options tell webpack how to write the compiled files to disk. Did you mean output.environment (output.ecmaVersion was a temporary configuration option during webpack 5 beta)?" `) diff --git a/test/__snapshots__/Cli.basictest.js.snap b/test/__snapshots__/Cli.basictest.js.snap index 68d9f8c6379..705257db10f 100644 --- a/test/__snapshots__/Cli.basictest.js.snap +++ b/test/__snapshots__/Cli.basictest.js.snap @@ -6076,6 +6076,19 @@ Object { "multiple": false, "simpleType": "string", }, + "output-ignore-browser-warnings": Object { + "configs": Array [ + Object { + "description": "Ignore warnings in the browser.", + "multiple": false, + "path": "output.ignoreBrowserWarnings", + "type": "boolean", + }, + ], + "description": "Ignore warnings in the browser.", + "multiple": false, + "simpleType": "boolean", + }, "output-iife": Object { "configs": Array [ Object { diff --git a/test/__snapshots__/ConfigCacheTestCases.longtest.js.snap b/test/__snapshots__/ConfigCacheTestCases.longtest.js.snap index 1864b090871..0d902eb2552 100644 --- a/test/__snapshots__/ConfigCacheTestCases.longtest.js.snap +++ b/test/__snapshots__/ConfigCacheTestCases.longtest.js.snap @@ -1,5 +1,613 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`ConfigCacheTestCases css css-import exported tests should compile 1`] = ` +Array [ + "body { + externally-imported: true; +} + +body { + background: black; +} + +body { + background: black; +} + +@layer (default) { + body { + background: black; + } +} +@layer (default) { + body { + background: black; + } +} +@supports (display: flex) { + body { + background: black; + } +} +@supports (display: flex) { + body { + background: black; + } +} +@media screen and (min-width: 400px) { + body { + background: black; + } +} +@media screen and (min-width: 400px) { + body { + background: black; + } +} +@layer (default) { + @supports (display: flex) { + body { + background: black; + } + }} +@layer (default) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }} +@supports (display: flex) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@layer (default) { + @supports (background: url(./img.png)) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@layer (default) { + @supports (background: url(\\"./img.png\\")) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@media screen { + body { + background: black; + } +} +@media screen { + body { + background: black; + } +} +@media screen { + body { + background: black; + } +} +body { + background: black; +} + +body { + background: green; +} + +@layer (base) { + body { + background: green; + } +} +@supports (display: flex) { + body { + background: green; + } +} +@media screen, print { + body { + background: green; + } +} +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +@media screen and (orientation:landscape) { + a { + color: red; + } +} +@media SCREEN AND (ORIENTATION: LANDSCAPE) { + a { + color: red; + } +} +@media (min-width: 100px) { + a { + color: red; + } +} +.class { + content: \\"style.css\\"; + color: red; +} + +.class { + content: \\"style.css\\"; + color: red; +} + +.class { + content: \\"style.css\\"; + color: red; +} + +.class { + content: \\"style.css\\"; + color: red; +} + +.class { + content: \\"style7.css\\"; +} + +.class { + content: \\"style7.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test.css\\"; +} + +.class { + content: \\"test.css\\"; +} + +.class { + content: \\"test.css\\"; +} + +.class { + content: \\"test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style4.css\\"; +} + +.class { + content: \\"style4.css\\"; +} + +.class { + content: \\"style4.css\\"; +} + +@supports (display: flex) { + .class { + content: \\"style4.css\\"; + } +} +@supports (display: flex) { + @media screen and (orientation:landscape) { + .class { + content: \\"style4.css\\"; + } + }} +.class { + content: \\"style4.css\\"; +} + +.class { + content: \\"style4.css\\"; +} + +.class { + content: \\"style4.css\\"; +} + +a { + color: red; +} +@media screen and (orientation:landscape) { + a { + color: blue; + }} +.class { + content: \\"style5.css\\"; +} + +.class { + content: \\"style5.css\\"; +} + +@supports (unknown) { + .class { + content: \\"style5.css\\"; + } +} +@supports (display: flex) { + .class { + content: \\"style5.css\\"; + } +} +@supports (display: flex !important) { + .class { + content: \\"style5.css\\"; + } +} +@supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"style5.css\\"; + } + }} +@supports (selector(a b)) { + .class { + content: \\"style5.css\\"; + } +} +@supports (display: flex) { + .class { + content: \\"style5.css\\"; + } +} +@layer { + .class { + content: \\"layer.css\\"; + } +} +@layer (default) { + .class { + content: \\"layer.css\\"; + } +} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"layer.css\\"; + } + }}} +@layer { + @supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"layer.css\\"; + } + }}} +@layer { + @supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"layer.css\\"; + } + }}} +@layer { + .class { + content: \\"layer.css\\"; + } +} +@layer (foo.bar.baz) { + .class { + content: \\"layer.css\\"; + } +} +@layer { + .class { + content: \\"layer.css\\"; + } +} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } + }}} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } + }}} +@supports (display: flex) { + @media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } + }} +@media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } +} +@media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } +} +@media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } +} +@layer (default) { + @supports (display : flex) { + @media screen and ( min-width : 400px ) { + .class { + content: \\"style6.css\\"; + } + }}} +@layer (DEFAULT) { + @supports (DISPLAY: FLEX) { + @media SCREEN AND (MIN-WIDTH: 400PX) { + .class { + content: \\"style6.css\\"; + } + }}} +@layer { + @supports (DISPLAY: FLEX) { + @media SCREEN AND (MIN-WIDTH: 400PX) { + .class { + content: \\"style6.css\\"; + } + }}} +@layer (/* Comment */default/* Comment */) { + @supports (/* Comment */display/* Comment */:/* Comment */ flex/* Comment */) { + @media /* Comment */ screen/* Comment */ and/* Comment */ (/* Comment */min-width/* Comment */: /* Comment */400px/* Comment */) { + .class { + content: \\"style6.css\\"; + } + }}} +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +@media /* Comment */ print and (orientation:landscape) { + .class { + content: \\"style6.css\\"; + } +} +@media /* Comment */print and (orientation:landscape)/* Comment */ { + .class { + content: \\"style6.css\\"; + } +} +@media /* Comment */ print and (orientation:landscape) { + .class { + content: \\"style6.css\\"; + } +} +@media screen and (min-width: 400px) { + .class { + content: \\"style8.css\\"; + } +} +@media (prefers-color-scheme: dark) { + .class { + content: \\"style8.css\\"; + } +} +@supports (display: flex) { + .class { + content: \\"style8.css\\"; + } +} +@supports (((display: flex))) { + .class { + content: \\"style8.css\\"; + } +} +@supports (((display: inline-grid))) { + @media screen and (((min-width: 400px))) { + .class { + content: \\"style8.css\\"; + } + }} +@supports (display: grid) { + .class { + content: \\"style8.css\\"; + } +} +@supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"style8.css\\"; + } + }} +@layer (framework) { + .class { + content: \\"style8.css\\"; + } +} +@layer (default) { + .class { + content: \\"style8.css\\"; + } +} +@layer (base) { + .class { + content: \\"style8.css\\"; + } +} +@layer (default) { + @supports (display: flex) { + .class { + content: \\"style8.css\\"; + } + }} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"style8.css\\"; + } + }}} +@layer { + a { + color: red; + } +} +@media unknown(default) unknown(display: flex) unknown { + .class { + content: \\"style9.css\\"; + } +} +@media unknown(default) { + .class { + content: \\"style9.css\\"; + } +} + + +body { + background: red; +} + +head{--webpack-main:https\\\\:\\\\/\\\\/test\\\\.cases\\\\/path\\\\/\\\\.\\\\.\\\\/\\\\.\\\\.\\\\/\\\\.\\\\.\\\\/\\\\.\\\\.\\\\/configCases\\\\/css\\\\/css-import\\\\/external\\\\.css,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=8,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=9,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=10,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=11,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=12,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=13,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=14,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=15,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=16,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=17,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=18,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=19,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=20,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=21,\\\\.\\\\/imported\\\\.css\\\\?2fc7,\\\\.\\\\/imported\\\\.css\\\\?8e23,\\\\.\\\\/imported\\\\.css\\\\?daf4,\\\\.\\\\/imported\\\\.css\\\\?7a8d,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=8,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=9,\\\\.\\\\/style2\\\\.css\\\\?3989,\\\\.\\\\/style2\\\\.css\\\\?1933,\\\\.\\\\/style2\\\\.css\\\\?6611,\\\\.\\\\/style3\\\\.css\\\\?bar\\\\=1,\\\\.\\\\/style3\\\\.css\\\\?bar\\\\=2,\\\\.\\\\/style3\\\\.css\\\\?bar\\\\=3,\\\\.\\\\/style3\\\\.css\\\\?\\\\=bar4,\\\\.\\\\/styl\\\\'le7\\\\.css,\\\\.\\\\/styl\\\\'le7\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/test\\\\ test\\\\.css,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/test\\\\.css,\\\\.\\\\/test\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/test\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/test\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=8,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=9,\\\\.\\\\/test\\\\ test\\\\.css\\\\?fpp\\\\=10,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=11,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=bazz,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=bar,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=bar\\\\#hash,\\\\.\\\\/style4\\\\.css\\\\?\\\\#hash,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=5,data\\\\:text\\\\/css\\\\;charset\\\\=utf-8\\\\,a\\\\%20\\\\%7B\\\\%0D\\\\%0A\\\\%20\\\\%20color\\\\%3A\\\\%20red\\\\%3B\\\\%0D\\\\%0A\\\\%7D,data\\\\:text\\\\/css\\\\;charset\\\\=utf-8\\\\,a\\\\%20\\\\%7B\\\\%0D\\\\%0A\\\\%20\\\\%20color\\\\%3A\\\\%20blue\\\\%3B\\\\%0D\\\\%0A\\\\%7D,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=8,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=3\\\\?14ba,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=3\\\\?0e0d,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/style6\\\\.css,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=8,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=9,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=10,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=11,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=12,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=13,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=14,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=15,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=16,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=17,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=18,\\\\.\\\\/style8\\\\.css\\\\?5018,\\\\.\\\\/style8\\\\.css\\\\?204b,\\\\.\\\\/style8\\\\.css\\\\?63b0,\\\\.\\\\/style8\\\\.css\\\\?edb8,\\\\.\\\\/style8\\\\.css\\\\?6154,\\\\.\\\\/style8\\\\.css\\\\?8c51,\\\\.\\\\/style8\\\\.css\\\\?ced0,\\\\.\\\\/style8\\\\.css\\\\?d3b8,\\\\.\\\\/style8\\\\.css\\\\?3557,\\\\.\\\\/style8\\\\.css\\\\?ae6e,\\\\.\\\\/style8\\\\.css\\\\?d078,\\\\.\\\\/style8\\\\.css\\\\?ae8b,\\\\.\\\\/style2\\\\.css\\\\?ee8c,\\\\.\\\\/style9\\\\.css\\\\?5f26,\\\\.\\\\/style9\\\\.css\\\\?6536,\\\\.\\\\/style\\\\.css;}", +] +`; + exports[`ConfigCacheTestCases css urls exported tests should be able to handle styles in div.css 1`] = ` Object { "--foo": " url(img.09a1a1112c577c279435.png)", diff --git a/test/__snapshots__/ConfigTestCases.basictest.js.snap b/test/__snapshots__/ConfigTestCases.basictest.js.snap index 1370850dc32..d4fa83fd9d4 100644 --- a/test/__snapshots__/ConfigTestCases.basictest.js.snap +++ b/test/__snapshots__/ConfigTestCases.basictest.js.snap @@ -1,5 +1,613 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`ConfigTestCases css css-import exported tests should compile 1`] = ` +Array [ + "body { + externally-imported: true; +} + +body { + background: black; +} + +body { + background: black; +} + +@layer (default) { + body { + background: black; + } +} +@layer (default) { + body { + background: black; + } +} +@supports (display: flex) { + body { + background: black; + } +} +@supports (display: flex) { + body { + background: black; + } +} +@media screen and (min-width: 400px) { + body { + background: black; + } +} +@media screen and (min-width: 400px) { + body { + background: black; + } +} +@layer (default) { + @supports (display: flex) { + body { + background: black; + } + }} +@layer (default) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }} +@supports (display: flex) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@layer (default) { + @supports (background: url(./img.png)) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@layer (default) { + @supports (background: url(\\"./img.png\\")) { + @media screen and (min-width: 400px) { + body { + background: black; + } + }}} +@media screen { + body { + background: black; + } +} +@media screen { + body { + background: black; + } +} +@media screen { + body { + background: black; + } +} +body { + background: black; +} + +body { + background: green; +} + +@layer (base) { + body { + background: green; + } +} +@supports (display: flex) { + body { + background: green; + } +} +@media screen, print { + body { + background: green; + } +} +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +a { + color: red; +} + +@media screen and (orientation:landscape) { + a { + color: red; + } +} +@media SCREEN AND (ORIENTATION: LANDSCAPE) { + a { + color: red; + } +} +@media (min-width: 100px) { + a { + color: red; + } +} +.class { + content: \\"style.css\\"; + color: red; +} + +.class { + content: \\"style.css\\"; + color: red; +} + +.class { + content: \\"style.css\\"; + color: red; +} + +.class { + content: \\"style.css\\"; + color: red; +} + +.class { + content: \\"style7.css\\"; +} + +.class { + content: \\"style7.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test.css\\"; +} + +.class { + content: \\"test.css\\"; +} + +.class { + content: \\"test.css\\"; +} + +.class { + content: \\"test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"test test.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style4.css\\"; +} + +.class { + content: \\"style4.css\\"; +} + +.class { + content: \\"style4.css\\"; +} + +@supports (display: flex) { + .class { + content: \\"style4.css\\"; + } +} +@supports (display: flex) { + @media screen and (orientation:landscape) { + .class { + content: \\"style4.css\\"; + } + }} +.class { + content: \\"style4.css\\"; +} + +.class { + content: \\"style4.css\\"; +} + +.class { + content: \\"style4.css\\"; +} + +a { + color: red; +} +@media screen and (orientation:landscape) { + a { + color: blue; + }} +.class { + content: \\"style5.css\\"; +} + +.class { + content: \\"style5.css\\"; +} + +@supports (unknown) { + .class { + content: \\"style5.css\\"; + } +} +@supports (display: flex) { + .class { + content: \\"style5.css\\"; + } +} +@supports (display: flex !important) { + .class { + content: \\"style5.css\\"; + } +} +@supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"style5.css\\"; + } + }} +@supports (selector(a b)) { + .class { + content: \\"style5.css\\"; + } +} +@supports (display: flex) { + .class { + content: \\"style5.css\\"; + } +} +@layer { + .class { + content: \\"layer.css\\"; + } +} +@layer (default) { + .class { + content: \\"layer.css\\"; + } +} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"layer.css\\"; + } + }}} +@layer { + @supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"layer.css\\"; + } + }}} +@layer { + @supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"layer.css\\"; + } + }}} +@layer { + .class { + content: \\"layer.css\\"; + } +} +@layer (foo.bar.baz) { + .class { + content: \\"layer.css\\"; + } +} +@layer { + .class { + content: \\"layer.css\\"; + } +} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } + }}} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } + }}} +@supports (display: flex) { + @media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } + }} +@media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } +} +@media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } +} +@media screen and (min-width:400px) { + .class { + content: \\"style6.css\\"; + } +} +@layer (default) { + @supports (display : flex) { + @media screen and ( min-width : 400px ) { + .class { + content: \\"style6.css\\"; + } + }}} +@layer (DEFAULT) { + @supports (DISPLAY: FLEX) { + @media SCREEN AND (MIN-WIDTH: 400PX) { + .class { + content: \\"style6.css\\"; + } + }}} +@layer { + @supports (DISPLAY: FLEX) { + @media SCREEN AND (MIN-WIDTH: 400PX) { + .class { + content: \\"style6.css\\"; + } + }}} +@layer (/* Comment */default/* Comment */) { + @supports (/* Comment */display/* Comment */:/* Comment */ flex/* Comment */) { + @media /* Comment */ screen/* Comment */ and/* Comment */ (/* Comment */min-width/* Comment */: /* Comment */400px/* Comment */) { + .class { + content: \\"style6.css\\"; + } + }}} +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +.class { + content: \\"style6.css\\"; +} + +@media /* Comment */ print and (orientation:landscape) { + .class { + content: \\"style6.css\\"; + } +} +@media /* Comment */print and (orientation:landscape)/* Comment */ { + .class { + content: \\"style6.css\\"; + } +} +@media /* Comment */ print and (orientation:landscape) { + .class { + content: \\"style6.css\\"; + } +} +@media screen and (min-width: 400px) { + .class { + content: \\"style8.css\\"; + } +} +@media (prefers-color-scheme: dark) { + .class { + content: \\"style8.css\\"; + } +} +@supports (display: flex) { + .class { + content: \\"style8.css\\"; + } +} +@supports (((display: flex))) { + .class { + content: \\"style8.css\\"; + } +} +@supports (((display: inline-grid))) { + @media screen and (((min-width: 400px))) { + .class { + content: \\"style8.css\\"; + } + }} +@supports (display: grid) { + .class { + content: \\"style8.css\\"; + } +} +@supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"style8.css\\"; + } + }} +@layer (framework) { + .class { + content: \\"style8.css\\"; + } +} +@layer (default) { + .class { + content: \\"style8.css\\"; + } +} +@layer (base) { + .class { + content: \\"style8.css\\"; + } +} +@layer (default) { + @supports (display: flex) { + .class { + content: \\"style8.css\\"; + } + }} +@layer (default) { + @supports (display: flex) { + @media screen and (min-width: 400px) { + .class { + content: \\"style8.css\\"; + } + }}} +@layer { + a { + color: red; + } +} +@media unknown(default) unknown(display: flex) unknown { + .class { + content: \\"style9.css\\"; + } +} +@media unknown(default) { + .class { + content: \\"style9.css\\"; + } +} + + +body { + background: red; +} + +head{--webpack-main:https\\\\:\\\\/\\\\/test\\\\.cases\\\\/path\\\\/\\\\.\\\\.\\\\/\\\\.\\\\.\\\\/\\\\.\\\\.\\\\/\\\\.\\\\.\\\\/configCases\\\\/css\\\\/css-import\\\\/external\\\\.css,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=8,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=9,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=10,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=11,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=12,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=13,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=14,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=15,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=16,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=17,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=18,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=19,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=20,\\\\.\\\\/print\\\\.css\\\\?foo\\\\=21,\\\\.\\\\/imported\\\\.css\\\\?2fc7,\\\\.\\\\/imported\\\\.css\\\\?8e23,\\\\.\\\\/imported\\\\.css\\\\?daf4,\\\\.\\\\/imported\\\\.css\\\\?7a8d,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=8,\\\\.\\\\/style2\\\\.css\\\\?foo\\\\=9,\\\\.\\\\/style2\\\\.css\\\\?3989,\\\\.\\\\/style2\\\\.css\\\\?1933,\\\\.\\\\/style2\\\\.css\\\\?6611,\\\\.\\\\/style3\\\\.css\\\\?bar\\\\=1,\\\\.\\\\/style3\\\\.css\\\\?bar\\\\=2,\\\\.\\\\/style3\\\\.css\\\\?bar\\\\=3,\\\\.\\\\/style3\\\\.css\\\\?\\\\=bar4,\\\\.\\\\/styl\\\\'le7\\\\.css,\\\\.\\\\/styl\\\\'le7\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/test\\\\ test\\\\.css,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/test\\\\.css,\\\\.\\\\/test\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/test\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/test\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=8,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=9,\\\\.\\\\/test\\\\ test\\\\.css\\\\?fpp\\\\=10,\\\\.\\\\/test\\\\ test\\\\.css\\\\?foo\\\\=11,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=bazz,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=bar,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=bar\\\\#hash,\\\\.\\\\/style4\\\\.css\\\\?\\\\#hash,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/style4\\\\.css\\\\?foo\\\\=5,data\\\\:text\\\\/css\\\\;charset\\\\=utf-8\\\\,a\\\\%20\\\\%7B\\\\%0D\\\\%0A\\\\%20\\\\%20color\\\\%3A\\\\%20red\\\\%3B\\\\%0D\\\\%0A\\\\%7D,data\\\\:text\\\\/css\\\\;charset\\\\=utf-8\\\\,a\\\\%20\\\\%7B\\\\%0D\\\\%0A\\\\%20\\\\%20color\\\\%3A\\\\%20blue\\\\%3B\\\\%0D\\\\%0A\\\\%7D,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/style5\\\\.css\\\\?foo\\\\=8,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=3\\\\?14ba,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=3\\\\?0e0d,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/layer\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/style6\\\\.css,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=1,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=2,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=3,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=4,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=5,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=6,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=7,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=8,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=9,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=10,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=11,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=12,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=13,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=14,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=15,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=16,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=17,\\\\.\\\\/style6\\\\.css\\\\?foo\\\\=18,\\\\.\\\\/style8\\\\.css\\\\?5018,\\\\.\\\\/style8\\\\.css\\\\?204b,\\\\.\\\\/style8\\\\.css\\\\?63b0,\\\\.\\\\/style8\\\\.css\\\\?edb8,\\\\.\\\\/style8\\\\.css\\\\?6154,\\\\.\\\\/style8\\\\.css\\\\?8c51,\\\\.\\\\/style8\\\\.css\\\\?ced0,\\\\.\\\\/style8\\\\.css\\\\?d3b8,\\\\.\\\\/style8\\\\.css\\\\?3557,\\\\.\\\\/style8\\\\.css\\\\?ae6e,\\\\.\\\\/style8\\\\.css\\\\?d078,\\\\.\\\\/style8\\\\.css\\\\?ae8b,\\\\.\\\\/style2\\\\.css\\\\?ee8c,\\\\.\\\\/style9\\\\.css\\\\?5f26,\\\\.\\\\/style9\\\\.css\\\\?6536,\\\\.\\\\/style\\\\.css;}", +] +`; + exports[`ConfigTestCases css urls exported tests should be able to handle styles in div.css 1`] = ` Object { "--foo": " url(img.09a1a1112c577c279435.png)", diff --git a/test/__snapshots__/StatsTestCases.basictest.js.snap b/test/__snapshots__/StatsTestCases.basictest.js.snap index 0da9e6f4741..fd276c6a3fb 100644 --- a/test/__snapshots__/StatsTestCases.basictest.js.snap +++ b/test/__snapshots__/StatsTestCases.basictest.js.snap @@ -3,14 +3,14 @@ exports[`StatsTestCases should print correct stats for aggressive-splitting-entry 1`] = ` "fitting: PublicPath: auto - asset fitting-27df06fdbf7adbff38d6.js 16.1 KiB [emitted] [immutable] + asset fitting-27df06fdbf7adbff38d6.js 16.2 KiB [emitted] [immutable] asset fitting-50595d23e8f97d7ccd2a.js 1.9 KiB [emitted] [immutable] asset fitting-5bc77880fdc9e2bf09ee.js 1.9 KiB [emitted] [immutable] asset fitting-72afdc913f6cf884b457.js 1.08 KiB [emitted] [immutable] - Entrypoint main 19.9 KiB = fitting-50595d23e8f97d7ccd2a.js 1.9 KiB fitting-5bc77880fdc9e2bf09ee.js 1.9 KiB fitting-27df06fdbf7adbff38d6.js 16.1 KiB - chunk (runtime: main) fitting-27df06fdbf7adbff38d6.js 1.87 KiB (javascript) 8.65 KiB (runtime) [entry] [rendered] + Entrypoint main 20 KiB = fitting-50595d23e8f97d7ccd2a.js 1.9 KiB fitting-5bc77880fdc9e2bf09ee.js 1.9 KiB fitting-27df06fdbf7adbff38d6.js 16.2 KiB + chunk (runtime: main) fitting-27df06fdbf7adbff38d6.js 1.87 KiB (javascript) 8.7 KiB (runtime) [entry] [rendered] > ./index main - runtime modules 8.65 KiB 11 modules + runtime modules 8.7 KiB 11 modules cacheable modules 1.87 KiB ./e.js 899 bytes [dependent] [built] [code generated] ./f.js 900 bytes [dependent] [built] [code generated] @@ -30,14 +30,14 @@ exports[`StatsTestCases should print correct stats for aggressive-splitting-entr content-change: PublicPath: auto - asset content-change-ea14516bfb79836da4ae.js 16.1 KiB [emitted] [immutable] + asset content-change-ea14516bfb79836da4ae.js 16.2 KiB [emitted] [immutable] asset content-change-50595d23e8f97d7ccd2a.js 1.9 KiB [emitted] [immutable] asset content-change-5bc77880fdc9e2bf09ee.js 1.9 KiB [emitted] [immutable] asset content-change-72afdc913f6cf884b457.js 1.08 KiB [emitted] [immutable] - Entrypoint main 19.9 KiB = content-change-50595d23e8f97d7ccd2a.js 1.9 KiB content-change-5bc77880fdc9e2bf09ee.js 1.9 KiB content-change-ea14516bfb79836da4ae.js 16.1 KiB - chunk (runtime: main) content-change-ea14516bfb79836da4ae.js 1.87 KiB (javascript) 8.66 KiB (runtime) [entry] [rendered] + Entrypoint main 20 KiB = content-change-50595d23e8f97d7ccd2a.js 1.9 KiB content-change-5bc77880fdc9e2bf09ee.js 1.9 KiB content-change-ea14516bfb79836da4ae.js 16.2 KiB + chunk (runtime: main) content-change-ea14516bfb79836da4ae.js 1.87 KiB (javascript) 8.71 KiB (runtime) [entry] [rendered] > ./index main - runtime modules 8.66 KiB 11 modules + runtime modules 8.71 KiB 11 modules cacheable modules 1.87 KiB ./e.js 899 bytes [dependent] [built] [code generated] ./f.js 900 bytes [dependent] [built] [code generated] @@ -58,7 +58,7 @@ content-change: exports[`StatsTestCases should print correct stats for aggressive-splitting-on-demand 1`] = ` "PublicPath: auto -asset abdecc928f4f9878244e.js 11.6 KiB [emitted] [immutable] (name: main) +asset abdecc928f4f9878244e.js 11.7 KiB [emitted] [immutable] (name: main) asset 3fc6535262efa7e4fa3b.js 1.91 KiB [emitted] [immutable] asset 56815935c535fbc0e462.js 1.91 KiB [emitted] [immutable] asset 2b8c8882bd4326b27013.js 1.9 KiB [emitted] [immutable] @@ -70,14 +70,14 @@ asset f79c60cc3faba968a476.js 1.9 KiB [emitted] [immutable] asset 7294786e49319a98f5af.js 1010 bytes [emitted] [immutable] asset c5861419d7f3f6ea6c19.js 1010 bytes [emitted] [immutable] asset f897ac9956540163d002.js 1010 bytes [emitted] [immutable] -Entrypoint main 11.6 KiB = abdecc928f4f9878244e.js +Entrypoint main 11.7 KiB = abdecc928f4f9878244e.js chunk (runtime: main) 5bc77880fdc9e2bf09ee.js 1.76 KiB [rendered] [recorded] aggressive splitted > ./c ./d ./e ./index.js 3:0-30 ./c.js 899 bytes [built] [code generated] ./d.js 899 bytes [built] [code generated] -chunk (runtime: main) abdecc928f4f9878244e.js (main) 248 bytes (javascript) 6.31 KiB (runtime) [entry] [rendered] +chunk (runtime: main) abdecc928f4f9878244e.js (main) 248 bytes (javascript) 6.36 KiB (runtime) [entry] [rendered] > ./index main - runtime modules 6.31 KiB 7 modules + runtime modules 6.36 KiB 7 modules ./index.js 248 bytes [built] [code generated] chunk (runtime: main) 3fc6535262efa7e4fa3b.js 1.76 KiB [rendered] > ./f ./g ./h ./i ./j ./k ./index.js 4:0-51 @@ -157,9 +157,9 @@ webpack/runtime/make namespace object 274 bytes {main} [code generated] exports[`StatsTestCases should print correct stats for asset 1`] = ` "asset 89a353e9c515885abd8e.png 14.6 KiB [emitted] [immutable] [from: images/file.png] (auxiliary name: main) -asset bundle.js 13.4 KiB [emitted] (name: main) +asset bundle.js 13.5 KiB [emitted] (name: main) asset static/file.html 12 bytes [emitted] [from: static/file.html] (auxiliary name: main) -runtime modules 1.06 KiB 2 modules +runtime modules 1.12 KiB 2 modules modules by path ./ 9.36 KiB (javascript) 14.6 KiB (asset) modules by path ./images/ 8.86 KiB (javascript) 14.6 KiB (asset) ./images/file.png 42 bytes (javascript) 14.6 KiB (asset) [built] [code generated] @@ -179,10 +179,10 @@ webpack x.x.x compiled successfully in X ms" exports[`StatsTestCases should print correct stats for asset-concat 1`] = ` "asset 89a353e9c515885abd8e.png 14.6 KiB [emitted] [immutable] [from: images/file.png] (auxiliary name: main) -asset bundle.js 11.7 KiB [emitted] (name: main) +asset bundle.js 11.8 KiB [emitted] (name: main) asset static/file.html 12 bytes [emitted] [from: static/file.html] (auxiliary name: main) orphan modules 9.05 KiB [orphan] 7 modules -runtime modules 1.06 KiB 2 modules +runtime modules 1.12 KiB 2 modules cacheable modules 9.6 KiB (javascript) 14.6 KiB (asset) ./index.js + 9 modules 9.52 KiB [built] [code generated] ./images/file.png 42 bytes (javascript) 14.6 KiB (asset) [built] [code generated] @@ -191,9 +191,9 @@ webpack x.x.x compiled successfully in X ms" `; exports[`StatsTestCases should print correct stats for async-commons-chunk 1`] = ` -"chunk (runtime: main) main.js (main) 515 bytes (javascript) 6 KiB (runtime) >{460}< >{847}< >{996}< [entry] [rendered] +"chunk (runtime: main) main.js (main) 515 bytes (javascript) 6.05 KiB (runtime) >{460}< >{847}< >{996}< [entry] [rendered] > ./ main - runtime modules 6 KiB 7 modules + runtime modules 6.05 KiB 7 modules ./index.js 515 bytes [built] [code generated] chunk (runtime: main) 460.js 21 bytes <{179}> ={847}= [rendered] > ./index.js 17:1-21:3 @@ -220,9 +220,9 @@ exports[`StatsTestCases should print correct stats for async-commons-chunk-auto > ./g ./a.js 6:0-47 dependent modules 20 bytes [dependent] 1 module ./g.js 45 bytes [built] [code generated] - chunk (runtime: main) disabled/main.js (main) 147 bytes (javascript) 6.65 KiB (runtime) [entry] [rendered] + chunk (runtime: main) disabled/main.js (main) 147 bytes (javascript) 6.7 KiB (runtime) [entry] [rendered] > ./ main - runtime modules 6.65 KiB 9 modules + runtime modules 6.7 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: main) disabled/async-b.js (async-b) 196 bytes [rendered] > ./b ./index.js 2:0-47 @@ -237,9 +237,9 @@ exports[`StatsTestCases should print correct stats for async-commons-chunk-auto dependent modules 60 bytes [dependent] 3 modules runtime modules 396 bytes 2 modules ./c.js + 1 modules 136 bytes [built] [code generated] - chunk (runtime: a) disabled/a.js (a) 245 bytes (javascript) 6.59 KiB (runtime) [entry] [rendered] + chunk (runtime: a) disabled/a.js (a) 245 bytes (javascript) 6.64 KiB (runtime) [entry] [rendered] > ./a a - runtime modules 6.59 KiB 9 modules + runtime modules 6.64 KiB 9 modules dependent modules 60 bytes [dependent] 3 modules ./a.js + 1 modules 185 bytes [built] [code generated] chunk (runtime: main) disabled/async-a.js (async-a) 245 bytes [rendered] @@ -257,9 +257,9 @@ default: chunk (runtime: a, main) default/async-g.js (async-g) 45 bytes [rendered] > ./g ./a.js 6:0-47 ./g.js 45 bytes [built] [code generated] - chunk (runtime: main) default/main.js (main) 147 bytes (javascript) 6.66 KiB (runtime) [entry] [rendered] + chunk (runtime: main) default/main.js (main) 147 bytes (javascript) 6.71 KiB (runtime) [entry] [rendered] > ./ main - runtime modules 6.66 KiB 9 modules + runtime modules 6.71 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: main) default/282.js (id hint: vendors) 20 bytes [rendered] split chunk (cache group: defaultVendors) > ./a ./index.js 1:0-47 @@ -290,9 +290,9 @@ default: chunk (runtime: main) default/769.js (id hint: vendors) 20 bytes [rendered] split chunk (cache group: defaultVendors) > ./c ./index.js 3:0-47 ./node_modules/z.js 20 bytes [built] [code generated] - chunk (runtime: a) default/a.js (a) 245 bytes (javascript) 6.65 KiB (runtime) [entry] [rendered] + chunk (runtime: a) default/a.js (a) 245 bytes (javascript) 6.7 KiB (runtime) [entry] [rendered] > ./a a - runtime modules 6.65 KiB 9 modules + runtime modules 6.7 KiB 9 modules dependent modules 60 bytes [dependent] 3 modules ./a.js + 1 modules 185 bytes [built] [code generated] chunk (runtime: main) default/async-a.js (async-a) 185 bytes [rendered] @@ -305,8 +305,8 @@ default: default (webpack x.x.x) compiled successfully vendors: - Entrypoint main 11.1 KiB = vendors/main.js - Entrypoint a 14.5 KiB = vendors/vendors.js 1.05 KiB vendors/a.js 13.4 KiB + Entrypoint main 11.2 KiB = vendors/main.js + Entrypoint a 14.5 KiB = vendors/vendors.js 1.05 KiB vendors/a.js 13.5 KiB Entrypoint b 8.18 KiB = vendors/vendors.js 1.05 KiB vendors/b.js 7.13 KiB Entrypoint c 8.18 KiB = vendors/vendors.js 1.05 KiB vendors/c.js 7.13 KiB chunk (runtime: b) vendors/b.js (b) 156 bytes (javascript) 2.75 KiB (runtime) [entry] [rendered] @@ -318,9 +318,9 @@ vendors: > ./g ./a.js 6:0-47 dependent modules 20 bytes [dependent] 1 module ./g.js 45 bytes [built] [code generated] - chunk (runtime: main) vendors/main.js (main) 147 bytes (javascript) 6.64 KiB (runtime) [entry] [rendered] + chunk (runtime: main) vendors/main.js (main) 147 bytes (javascript) 6.7 KiB (runtime) [entry] [rendered] > ./ main - runtime modules 6.64 KiB 9 modules + runtime modules 6.7 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: a, b, c) vendors/vendors.js (vendors) (id hint: vendors) 60 bytes [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./a a @@ -342,9 +342,9 @@ vendors: runtime modules 2.75 KiB 4 modules dependent modules 40 bytes [dependent] 2 modules ./c.js 116 bytes [built] [code generated] - chunk (runtime: a) vendors/a.js (a) 205 bytes (javascript) 7.53 KiB (runtime) [entry] [rendered] + chunk (runtime: a) vendors/a.js (a) 205 bytes (javascript) 7.59 KiB (runtime) [entry] [rendered] > ./a a - runtime modules 7.53 KiB 10 modules + runtime modules 7.59 KiB 10 modules dependent modules 20 bytes [dependent] 1 module ./a.js + 1 modules 185 bytes [built] [code generated] chunk (runtime: main) vendors/async-a.js (async-a) 245 bytes [rendered] @@ -354,8 +354,8 @@ vendors: vendors (webpack x.x.x) compiled successfully multiple-vendors: - Entrypoint main 11.5 KiB = multiple-vendors/main.js - Entrypoint a 15 KiB = multiple-vendors/libs-x.js 414 bytes multiple-vendors/954.js 414 bytes multiple-vendors/767.js 414 bytes multiple-vendors/390.js 414 bytes multiple-vendors/a.js 13.4 KiB + Entrypoint main 11.6 KiB = multiple-vendors/main.js + Entrypoint a 15.1 KiB = multiple-vendors/libs-x.js 414 bytes multiple-vendors/954.js 414 bytes multiple-vendors/767.js 414 bytes multiple-vendors/390.js 414 bytes multiple-vendors/a.js 13.4 KiB Entrypoint b 8.14 KiB = multiple-vendors/libs-x.js 414 bytes multiple-vendors/954.js 414 bytes multiple-vendors/767.js 414 bytes multiple-vendors/568.js 414 bytes multiple-vendors/b.js 6.52 KiB Entrypoint c 8.14 KiB = multiple-vendors/libs-x.js 414 bytes multiple-vendors/769.js 414 bytes multiple-vendors/767.js 414 bytes multiple-vendors/568.js 414 bytes multiple-vendors/c.js 6.52 KiB chunk (runtime: a, b, c, main) multiple-vendors/libs-x.js (libs-x) (id hint: libs) 20 bytes [initial] [rendered] split chunk (cache group: libs) (name: libs-x) @@ -373,9 +373,9 @@ multiple-vendors: chunk (runtime: a, main) multiple-vendors/async-g.js (async-g) 45 bytes [rendered] > ./g ./a.js 6:0-47 ./g.js 45 bytes [built] [code generated] - chunk (runtime: main) multiple-vendors/main.js (main) 147 bytes (javascript) 6.68 KiB (runtime) [entry] [rendered] + chunk (runtime: main) multiple-vendors/main.js (main) 147 bytes (javascript) 6.73 KiB (runtime) [entry] [rendered] > ./ main - runtime modules 6.68 KiB 9 modules + runtime modules 6.73 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: main) multiple-vendors/async-b.js (async-b) 116 bytes [rendered] > ./b ./index.js 2:0-47 @@ -410,9 +410,9 @@ multiple-vendors: > ./c ./index.js 3:0-47 > ./c c ./node_modules/z.js 20 bytes [built] [code generated] - chunk (runtime: a) multiple-vendors/a.js (a) 165 bytes (javascript) 7.58 KiB (runtime) [entry] [rendered] + chunk (runtime: a) multiple-vendors/a.js (a) 165 bytes (javascript) 7.63 KiB (runtime) [entry] [rendered] > ./a a - runtime modules 7.58 KiB 10 modules + runtime modules 7.63 KiB 10 modules ./a.js 165 bytes [built] [code generated] chunk (runtime: main) multiple-vendors/async-a.js (async-a) 165 bytes [rendered] > ./a ./index.js 1:0-47 @@ -427,7 +427,7 @@ multiple-vendors: all: Entrypoint main 11.5 KiB = all/main.js - Entrypoint a 15 KiB = all/282.js 414 bytes all/954.js 414 bytes all/767.js 414 bytes all/390.js 414 bytes all/a.js 13.3 KiB + Entrypoint a 15.1 KiB = all/282.js 414 bytes all/954.js 414 bytes all/767.js 414 bytes all/390.js 414 bytes all/a.js 13.4 KiB Entrypoint b 8.14 KiB = all/282.js 414 bytes all/954.js 414 bytes all/767.js 414 bytes all/568.js 414 bytes all/b.js 6.52 KiB Entrypoint c 8.14 KiB = all/282.js 414 bytes all/769.js 414 bytes all/767.js 414 bytes all/568.js 414 bytes all/c.js 6.52 KiB chunk (runtime: b) all/b.js (b) 116 bytes (javascript) 2.76 KiB (runtime) [entry] [rendered] @@ -437,9 +437,9 @@ all: chunk (runtime: a, main) all/async-g.js (async-g) 45 bytes [rendered] > ./g ./a.js 6:0-47 ./g.js 45 bytes [built] [code generated] - chunk (runtime: main) all/main.js (main) 147 bytes (javascript) 6.65 KiB (runtime) [entry] [rendered] + chunk (runtime: main) all/main.js (main) 147 bytes (javascript) 6.71 KiB (runtime) [entry] [rendered] > ./ main - runtime modules 6.65 KiB 9 modules + runtime modules 6.71 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: a, b, c, main) all/282.js (id hint: vendors) 20 bytes [initial] [rendered] split chunk (cache group: vendors) > ./a ./index.js 1:0-47 @@ -482,9 +482,9 @@ all: > ./c ./index.js 3:0-47 > ./c c ./node_modules/z.js 20 bytes [built] [code generated] - chunk (runtime: a) all/a.js (a) 165 bytes (javascript) 7.57 KiB (runtime) [entry] [rendered] + chunk (runtime: a) all/a.js (a) 165 bytes (javascript) 7.62 KiB (runtime) [entry] [rendered] > ./a a - runtime modules 7.57 KiB 10 modules + runtime modules 7.62 KiB 10 modules ./a.js 165 bytes [built] [code generated] chunk (runtime: main) all/async-a.js (async-a) 165 bytes [rendered] > ./a ./index.js 1:0-47 @@ -546,13 +546,13 @@ webpack x.x.x compiled successfully in X ms" exports[`StatsTestCases should print correct stats for chunks 1`] = ` "PublicPath: auto -asset bundle.js 10.2 KiB [emitted] (name: main) +asset bundle.js 10.3 KiB [emitted] (name: main) asset 460.bundle.js 323 bytes [emitted] asset 524.bundle.js 206 bytes [emitted] asset 996.bundle.js 138 bytes [emitted] -chunk (runtime: main) bundle.js (main) 73 bytes (javascript) 6 KiB (runtime) >{460}< >{996}< [entry] [rendered] +chunk (runtime: main) bundle.js (main) 73 bytes (javascript) 6.06 KiB (runtime) >{460}< >{996}< [entry] [rendered] > ./index main - runtime modules 6 KiB 7 modules + runtime modules 6.06 KiB 7 modules cacheable modules 73 bytes ./a.js 22 bytes [dependent] [built] [code generated] cjs self exports reference ./a.js 1:0-14 @@ -592,7 +592,7 @@ webpack x.x.x compiled successfully in X ms" exports[`StatsTestCases should print correct stats for chunks-development 1`] = ` "PublicPath: auto -asset bundle.js 11.3 KiB [emitted] (name: main) +asset bundle.js 11.4 KiB [emitted] (name: main) asset d_js-e_js.bundle.js 1.07 KiB [emitted] asset c_js.bundle.js 1010 bytes [emitted] asset b_js.bundle.js 816 bytes [emitted] @@ -621,9 +621,9 @@ chunk (runtime: main) d_js-e_js.bundle.js 60 bytes <{c_js}> [rendered] cjs self exports reference ./e.js 2:0-14 X ms -> X ms -> X ms (resolving: X ms, restoring: X ms, integration: X ms, building: X ms, storing: X ms) -chunk (runtime: main) bundle.js (main) 73 bytes (javascript) 6 KiB (runtime) >{b_js}< >{c_js}< [entry] [rendered] +chunk (runtime: main) bundle.js (main) 73 bytes (javascript) 6.06 KiB (runtime) >{b_js}< >{c_js}< [entry] [rendered] > ./index main - runtime modules 6 KiB 7 modules + runtime modules 6.06 KiB 7 modules cacheable modules 73 bytes ./a.js 22 bytes [dependent] [built] [code generated] cjs self exports reference ./a.js 1:0-14 @@ -640,8 +640,8 @@ webpack x.x.x compiled successfully in X ms" exports[`StatsTestCases should print correct stats for circular-correctness 1`] = ` "chunk (runtime: main) 128.bundle.js (b) 49 bytes <{179}> <{459}> >{459}< [rendered] ./module-b.js 49 bytes [built] [code generated] -chunk (runtime: main) bundle.js (main) 98 bytes (javascript) 7.68 KiB (runtime) >{128}< >{786}< [entry] [rendered] - runtime modules 7.68 KiB 10 modules +chunk (runtime: main) bundle.js (main) 98 bytes (javascript) 7.74 KiB (runtime) >{128}< >{786}< [entry] [rendered] + runtime modules 7.74 KiB 10 modules ./index.js 98 bytes [built] [code generated] chunk (runtime: main) 459.bundle.js (c) 98 bytes <{128}> <{786}> >{128}< >{786}< [rendered] ./module-c.js 98 bytes [built] [code generated] @@ -751,11 +751,11 @@ exports[`StatsTestCases should print correct stats for concat-and-sideeffects 1` `; exports[`StatsTestCases should print correct stats for context-independence 1`] = ` -"asset main-5479233a626f640195f9.js 12.7 KiB [emitted] [immutable] (name: main) - sourceMap main-5479233a626f640195f9.js.map 11 KiB [emitted] [dev] (auxiliary name: main) +"asset main-5479233a626f640195f9.js 12.8 KiB [emitted] [immutable] (name: main) + sourceMap main-5479233a626f640195f9.js.map 11.1 KiB [emitted] [dev] (auxiliary name: main) asset 695-d9846ea7920868a759cd.js 455 bytes [emitted] [immutable] sourceMap 695-d9846ea7920868a759cd.js.map 347 bytes [emitted] [dev] -runtime modules 6.59 KiB 9 modules +runtime modules 6.65 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by layer 234 bytes @@ -767,11 +767,11 @@ built modules 500 bytes [built] ./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated] webpack x.x.x compiled successfully in X ms -asset main-5479233a626f640195f9.js 12.7 KiB [emitted] [immutable] (name: main) - sourceMap main-5479233a626f640195f9.js.map 11 KiB [emitted] [dev] (auxiliary name: main) +asset main-5479233a626f640195f9.js 12.8 KiB [emitted] [immutable] (name: main) + sourceMap main-5479233a626f640195f9.js.map 11.1 KiB [emitted] [dev] (auxiliary name: main) asset 695-d9846ea7920868a759cd.js 455 bytes [emitted] [immutable] sourceMap 695-d9846ea7920868a759cd.js.map 347 bytes [emitted] [dev] -runtime modules 6.59 KiB 9 modules +runtime modules 6.65 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by layer 234 bytes @@ -783,9 +783,9 @@ built modules 500 bytes [built] ./b/chunk.js + 1 modules (in Xdir/context-independence/b) 66 bytes [built] [code generated] webpack x.x.x compiled successfully in X ms -asset main-afc6c97c5c3aafd6f882.js 14.8 KiB [emitted] [immutable] (name: main) +asset main-afc6c97c5c3aafd6f882.js 14.9 KiB [emitted] [immutable] (name: main) asset 695-3a54289b6e0375f1e753.js 1.51 KiB [emitted] [immutable] -runtime modules 6.59 KiB 9 modules +runtime modules 6.65 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by layer 234 bytes @@ -797,9 +797,9 @@ built modules 500 bytes [built] ./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated] webpack x.x.x compiled successfully in X ms -asset main-afc6c97c5c3aafd6f882.js 14.8 KiB [emitted] [immutable] (name: main) +asset main-afc6c97c5c3aafd6f882.js 14.9 KiB [emitted] [immutable] (name: main) asset 695-3a54289b6e0375f1e753.js 1.51 KiB [emitted] [immutable] -runtime modules 6.59 KiB 9 modules +runtime modules 6.65 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by layer 234 bytes @@ -811,9 +811,9 @@ built modules 500 bytes [built] ./b/chunk.js + 1 modules (in Xdir/context-independence/b) 66 bytes [built] [code generated] webpack x.x.x compiled successfully in X ms -asset main-7dd3306e33267a41ff55.js 13.7 KiB [emitted] [immutable] (name: main) +asset main-7dd3306e33267a41ff55.js 13.8 KiB [emitted] [immutable] (name: main) asset 695-ace208366ce0ce2556ef.js 1.01 KiB [emitted] [immutable] -runtime modules 6.59 KiB 9 modules +runtime modules 6.65 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by layer 234 bytes @@ -825,9 +825,9 @@ built modules 500 bytes [built] ./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated] webpack x.x.x compiled successfully in X ms -asset main-7dd3306e33267a41ff55.js 13.7 KiB [emitted] [immutable] (name: main) +asset main-7dd3306e33267a41ff55.js 13.8 KiB [emitted] [immutable] (name: main) asset 695-ace208366ce0ce2556ef.js 1.01 KiB [emitted] [immutable] -runtime modules 6.59 KiB 9 modules +runtime modules 6.65 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by layer 234 bytes @@ -860,6 +860,14 @@ webpack x.x.x compiled successfully in X ms asset both.js 1.4 KiB [emitted] (name: main) ./index.js 24 bytes [built] [code generated] +webpack x.x.x compiled successfully in X ms + +asset log.js 1.4 KiB [emitted] (name: main) +./index.js 24 bytes [built] [code generated] + +DEBUG LOG from webpack.DefinePlugin + Replaced \\"VALUE\\" with \\"123\\" + webpack x.x.x compiled successfully in X ms" `; @@ -1156,8 +1164,8 @@ webpack x.x.x compiled with 2 errors in X ms" exports[`StatsTestCases should print correct stats for exclude-with-loader 1`] = ` "hidden assets 34 bytes 1 asset -asset bundle.js 5.25 KiB [emitted] (name: main) -runtime modules 1.72 KiB 5 modules +asset bundle.js 5.34 KiB [emitted] (name: main) +runtime modules 1.77 KiB 5 modules hidden modules 99 bytes 2 modules cacheable modules 119 bytes ./index.js 77 bytes [built] [code generated] @@ -1176,16 +1184,16 @@ exports[`StatsTestCases should print correct stats for graph-correctness-entries "chunk (runtime: e1, e2) b.js (b) 49 bytes <{786}> >{459}< [rendered] ./module-b.js 49 bytes [built] [code generated] import() ./module-b ./module-a.js 1:0-47 -chunk (runtime: e1) e1.js (e1) 49 bytes (javascript) 7.71 KiB (runtime) >{786}< [entry] [rendered] - runtime modules 7.71 KiB 10 modules +chunk (runtime: e1) e1.js (e1) 49 bytes (javascript) 7.76 KiB (runtime) >{786}< [entry] [rendered] + runtime modules 7.76 KiB 10 modules ./e1.js 49 bytes [built] [code generated] entry ./e1 e1 chunk (runtime: e1, e2) c.js (c) 49 bytes <{128}> <{621}> >{786}< [rendered] ./module-c.js 49 bytes [built] [code generated] import() ./module-c ./e2.js 1:0-47 import() ./module-c ./module-b.js 1:0-47 -chunk (runtime: e2) e2.js (e2) 49 bytes (javascript) 7.71 KiB (runtime) >{459}< [entry] [rendered] - runtime modules 7.71 KiB 10 modules +chunk (runtime: e2) e2.js (e2) 49 bytes (javascript) 7.76 KiB (runtime) >{459}< [entry] [rendered] + runtime modules 7.76 KiB 10 modules ./e2.js 49 bytes [built] [code generated] entry ./e2 e2 chunk (runtime: e1, e2) a.js (a) 49 bytes <{257}> <{459}> >{128}< [rendered] @@ -1199,8 +1207,8 @@ exports[`StatsTestCases should print correct stats for graph-correctness-modules "chunk (runtime: e1, e2) b.js (b) 179 bytes <{786}> >{459}< [rendered] ./module-b.js 179 bytes [built] [code generated] import() ./module-b ./module-a.js 1:0-47 -chunk (runtime: e1) e1.js (e1) 119 bytes (javascript) 7.98 KiB (runtime) >{786}< >{892}< [entry] [rendered] - runtime modules 7.98 KiB 11 modules +chunk (runtime: e1) e1.js (e1) 119 bytes (javascript) 8.03 KiB (runtime) >{786}< >{892}< [entry] [rendered] + runtime modules 8.03 KiB 11 modules cacheable modules 119 bytes ./e1.js 70 bytes [built] [code generated] entry ./e1 e1 @@ -1212,8 +1220,8 @@ chunk (runtime: e1, e2) c.js (c) 49 bytes <{128}> <{621}> >{786}< [rendered] ./module-c.js 49 bytes [built] [code generated] import() ./module-c ./e2.js 2:0-47 import() ./module-c ./module-b.js 1:0-47 -chunk (runtime: e2) e2.js (e2) 119 bytes (javascript) 7.98 KiB (runtime) >{459}< >{892}< [entry] [rendered] - runtime modules 7.98 KiB 11 modules +chunk (runtime: e2) e2.js (e2) 119 bytes (javascript) 8.03 KiB (runtime) >{459}< >{892}< [entry] [rendered] + runtime modules 8.03 KiB 11 modules cacheable modules 119 bytes ./e2.js 70 bytes [built] [code generated] entry ./e2 e2 @@ -1252,8 +1260,8 @@ chunk (runtime: main) id-equals-name_js0.js 21 bytes [rendered] ./id-equals-name.js 21 bytes [built] [code generated] chunk (runtime: main) id-equals-name_js_3.js 21 bytes [rendered] ./id-equals-name.js?3 21 bytes [built] [code generated] -chunk (runtime: main) main.js (main) 639 bytes (javascript) 6.57 KiB (runtime) [entry] [rendered] - runtime modules 6.57 KiB 9 modules +chunk (runtime: main) main.js (main) 639 bytes (javascript) 6.62 KiB (runtime) [entry] [rendered] + runtime modules 6.62 KiB 9 modules ./index.js 639 bytes [built] [code generated] chunk (runtime: main) tree.js (tree) 137 bytes [rendered] dependent modules 98 bytes [dependent] 3 modules @@ -1282,16 +1290,16 @@ webpack x.x.x compiled with 2 warnings in X ms" `; exports[`StatsTestCases should print correct stats for immutable 1`] = ` -"asset 5d45ce8c58c0be47d4b1.js 13.3 KiB [emitted] [immutable] (name: main) +"asset 5d45ce8c58c0be47d4b1.js 13.4 KiB [emitted] [immutable] (name: main) asset 22c24a3b26d46118dc06.js 809 bytes [emitted] [immutable]" `; exports[`StatsTestCases should print correct stats for import-context-filter 1`] = ` -"asset entry.js 11.9 KiB [emitted] (name: entry) +"asset entry.js 12 KiB [emitted] (name: entry) asset 398.js 482 bytes [emitted] asset 544.js 482 bytes [emitted] asset 718.js 482 bytes [emitted] -runtime modules 6.56 KiB 9 modules +runtime modules 6.62 KiB 9 modules built modules 724 bytes [built] modules by path ./templates/*.js 114 bytes ./templates/bar.js 38 bytes [optional] [built] [code generated] @@ -1303,9 +1311,9 @@ webpack x.x.x compiled successfully in X ms" `; exports[`StatsTestCases should print correct stats for import-weak 1`] = ` -"asset entry.js 13 KiB [emitted] (name: entry) +"asset entry.js 13.1 KiB [emitted] (name: entry) asset 836.js 138 bytes [emitted] -runtime modules 7.68 KiB 10 modules +runtime modules 7.73 KiB 10 modules orphan modules 37 bytes [orphan] 1 module cacheable modules 142 bytes ./entry.js 120 bytes [built] [code generated] @@ -1314,9 +1322,9 @@ webpack x.x.x compiled successfully in X ms" `; exports[`StatsTestCases should print correct stats for import-weak-parser-option 1`] = ` -"asset entry.js 13 KiB [emitted] (name: entry) +"asset entry.js 13.1 KiB [emitted] (name: entry) asset 836.js 138 bytes [emitted] -runtime modules 7.68 KiB 10 modules +runtime modules 7.73 KiB 10 modules orphan modules 37 bytes [orphan] 1 module cacheable modules 116 bytes ./entry.js 94 bytes [built] [code generated] @@ -1325,7 +1333,7 @@ webpack x.x.x compiled successfully in X ms" `; exports[`StatsTestCases should print correct stats for import-with-invalid-options-comments 1`] = ` -"runtime modules 8.6 KiB 12 modules +"runtime modules 8.66 KiB 12 modules cacheable modules 559 bytes ./index.js 50 bytes [built] [code generated] ./chunk.js 401 bytes [built] [code generated] [3 warnings] @@ -1372,11 +1380,11 @@ webpack x.x.x compiled successfully in X ms assets by chunk 895 bytes (id hint: all) asset c-all-b_js-d2d64fdaadbf1936503b.js 502 bytes [emitted] [immutable] (id hint: all) asset c-all-c_js-0552c7cbb8c1a12b6b9c.js 393 bytes [emitted] [immutable] (id hint: all) -asset c-runtime~main-39696e33891b24e372db.js 13.5 KiB [emitted] [immutable] (name: runtime~main) +asset c-runtime~main-39696e33891b24e372db.js 13.6 KiB [emitted] [immutable] (name: runtime~main) asset c-main-463838c803f48fe97bb6.js 680 bytes [emitted] [immutable] (name: main) asset c-vendors-node_modules_vendor_js-7320f018dbab7e34ead5.js 185 bytes [emitted] [immutable] (id hint: vendors) -Entrypoint main 14.6 KiB = c-runtime~main-39696e33891b24e372db.js 13.5 KiB c-all-c_js-0552c7cbb8c1a12b6b9c.js 393 bytes c-main-463838c803f48fe97bb6.js 680 bytes -runtime modules 8.66 KiB 13 modules +Entrypoint main 14.7 KiB = c-runtime~main-39696e33891b24e372db.js 13.6 KiB c-all-c_js-0552c7cbb8c1a12b6b9c.js 393 bytes c-main-463838c803f48fe97bb6.js 680 bytes +runtime modules 8.72 KiB 13 modules cacheable modules 101 bytes ./c.js 61 bytes [built] [code generated] ./b.js 17 bytes [built] [code generated] @@ -1399,10 +1407,10 @@ exports[`StatsTestCases should print correct stats for limit-chunk-count-plugin 1 chunks (webpack x.x.x) compiled successfully in X ms 2 chunks: - asset bundle2.js 12.5 KiB [emitted] (name: main) + asset bundle2.js 12.6 KiB [emitted] (name: main) asset 459.bundle2.js 664 bytes [emitted] (name: c) - chunk (runtime: main) bundle2.js (main) 101 bytes (javascript) 7.69 KiB (runtime) >{459}< [entry] [rendered] - runtime modules 7.69 KiB 10 modules + chunk (runtime: main) bundle2.js (main) 101 bytes (javascript) 7.74 KiB (runtime) >{459}< [entry] [rendered] + runtime modules 7.74 KiB 10 modules ./index.js 101 bytes [built] [code generated] chunk (runtime: main) 459.bundle2.js (c) 118 bytes <{179}> <{459}> >{459}< [rendered] dependent modules 44 bytes [dependent] @@ -1414,11 +1422,11 @@ exports[`StatsTestCases should print correct stats for limit-chunk-count-plugin 2 chunks (webpack x.x.x) compiled successfully in X ms 3 chunks: - asset bundle3.js 12.5 KiB [emitted] (name: main) + asset bundle3.js 12.6 KiB [emitted] (name: main) asset 459.bundle3.js 528 bytes [emitted] (name: c) asset 524.bundle3.js 206 bytes [emitted] - chunk (runtime: main) bundle3.js (main) 101 bytes (javascript) 7.69 KiB (runtime) >{459}< [entry] [rendered] - runtime modules 7.69 KiB 10 modules + chunk (runtime: main) bundle3.js (main) 101 bytes (javascript) 7.74 KiB (runtime) >{459}< [entry] [rendered] + runtime modules 7.74 KiB 10 modules ./index.js 101 bytes [built] [code generated] chunk (runtime: main) 459.bundle3.js (c) 74 bytes <{179}> >{524}< [rendered] ./a.js 22 bytes [built] [code generated] @@ -1430,12 +1438,12 @@ exports[`StatsTestCases should print correct stats for limit-chunk-count-plugin 3 chunks (webpack x.x.x) compiled successfully in X ms 4 chunks: - asset bundle4.js 12.5 KiB [emitted] (name: main) + asset bundle4.js 12.6 KiB [emitted] (name: main) asset 459.bundle4.js 392 bytes [emitted] (name: c) asset 394.bundle4.js 206 bytes [emitted] asset 524.bundle4.js 206 bytes [emitted] - chunk (runtime: main) bundle4.js (main) 101 bytes (javascript) 7.69 KiB (runtime) >{394}< >{459}< [entry] [rendered] - runtime modules 7.69 KiB 10 modules + chunk (runtime: main) bundle4.js (main) 101 bytes (javascript) 7.74 KiB (runtime) >{394}< >{459}< [entry] [rendered] + runtime modules 7.74 KiB 10 modules ./index.js 101 bytes [built] [code generated] chunk (runtime: main) 394.bundle4.js 44 bytes <{179}> [rendered] ./a.js 22 bytes [built] [code generated] @@ -1591,26 +1599,26 @@ webpack x.x.x compiled successfully in X ms" `; exports[`StatsTestCases should print correct stats for module-assets 1`] = ` -"assets by path *.js 11.7 KiB - asset main.js 10.4 KiB [emitted] (name: main) +"assets by path *.js 11.8 KiB + asset main.js 10.5 KiB [emitted] (name: main) asset a.js 732 bytes [emitted] (name: a) asset b.js 549 bytes [emitted] (name: b) assets by path *.png 42 KiB asset 1.png 21 KiB [emitted] [from: node_modules/a/1.png] (auxiliary name: a) asset 2.png 21 KiB [emitted] [from: node_modules/a/2.png] (auxiliary name: a, b) -Entrypoint main 10.4 KiB = main.js +Entrypoint main 10.5 KiB = main.js Chunk Group a 732 bytes (42 KiB) = a.js 732 bytes (1.png 21 KiB 2.png 21 KiB) Chunk Group b 549 bytes (21 KiB) = b.js 549 bytes (2.png 21 KiB) chunk (runtime: main) b.js (b) 67 bytes [rendered] ./node_modules/a/2.png 49 bytes [dependent] [built] [code generated] [1 asset] ./node_modules/b/index.js 18 bytes [built] [code generated] -chunk (runtime: main) main.js (main) 82 bytes (javascript) 6.29 KiB (runtime) [entry] [rendered] - runtime modules 6.29 KiB 8 modules +chunk (runtime: main) main.js (main) 82 bytes (javascript) 6.34 KiB (runtime) [entry] [rendered] + runtime modules 6.34 KiB 8 modules ./index.js 82 bytes [built] [code generated] chunk (runtime: main) a.js (a) 134 bytes [rendered] ./node_modules/a/2.png 49 bytes [dependent] [built] [code generated] [1 asset] ./node_modules/a/index.js + 1 modules 85 bytes [built] [code generated] [1 asset] -runtime modules 6.29 KiB 8 modules +runtime modules 6.34 KiB 8 modules orphan modules 49 bytes [orphan] 1 module modules with assets 234 bytes modules by path ./node_modules/a/ 134 bytes @@ -1622,9 +1630,9 @@ webpack x.x.x compiled successfully in X ms" `; exports[`StatsTestCases should print correct stats for module-deduplication 1`] = ` -"asset e1.js 12.1 KiB [emitted] (name: e1) -asset e2.js 12.1 KiB [emitted] (name: e2) -asset e3.js 12.1 KiB [emitted] (name: e3) +"asset e1.js 12.2 KiB [emitted] (name: e1) +asset e2.js 12.2 KiB [emitted] (name: e2) +asset e3.js 12.2 KiB [emitted] (name: e3) asset 172.js 858 bytes [emitted] asset 326.js 858 bytes [emitted] asset 923.js 858 bytes [emitted] @@ -1633,8 +1641,8 @@ asset 593.js 524 bytes [emitted] asset 716.js 524 bytes [emitted] chunk (runtime: e1) 114.js 61 bytes [rendered] ./async1.js 61 bytes [built] [code generated] -chunk (runtime: e3) e3.js (e3) 249 bytes (javascript) 6.56 KiB (runtime) [entry] [rendered] - runtime modules 6.56 KiB 9 modules +chunk (runtime: e3) e3.js (e3) 249 bytes (javascript) 6.62 KiB (runtime) [entry] [rendered] + runtime modules 6.62 KiB 9 modules cacheable modules 249 bytes ./b.js 20 bytes [dependent] [built] [code generated] ./e3.js + 2 modules 209 bytes [built] [code generated] @@ -1642,8 +1650,8 @@ chunk (runtime: e3) e3.js (e3) 249 bytes (javascript) 6.56 KiB (runtime) [entry] chunk (runtime: e1, e3) 172.js 81 bytes [rendered] ./async2.js 61 bytes [built] [code generated] ./f.js 20 bytes [dependent] [built] [code generated] -chunk (runtime: e1) e1.js (e1) 249 bytes (javascript) 6.56 KiB (runtime) [entry] [rendered] - runtime modules 6.56 KiB 9 modules +chunk (runtime: e1) e1.js (e1) 249 bytes (javascript) 6.62 KiB (runtime) [entry] [rendered] + runtime modules 6.62 KiB 9 modules cacheable modules 249 bytes ./b.js 20 bytes [dependent] [built] [code generated] ./d.js 20 bytes [dependent] [built] [code generated] @@ -1653,8 +1661,8 @@ chunk (runtime: e1, e2) 326.js 81 bytes [rendered] ./h.js 20 bytes [dependent] [built] [code generated] chunk (runtime: e3) 593.js 61 bytes [rendered] ./async3.js 61 bytes [built] [code generated] -chunk (runtime: e2) e2.js (e2) 249 bytes (javascript) 6.56 KiB (runtime) [entry] [rendered] - runtime modules 6.56 KiB 9 modules +chunk (runtime: e2) e2.js (e2) 249 bytes (javascript) 6.62 KiB (runtime) [entry] [rendered] + runtime modules 6.62 KiB 9 modules cacheable modules 249 bytes ./b.js 20 bytes [dependent] [built] [code generated] ./e2.js + 2 modules 209 bytes [built] [code generated] @@ -1668,20 +1676,20 @@ webpack x.x.x compiled successfully" `; exports[`StatsTestCases should print correct stats for module-deduplication-named 1`] = ` -"asset e1.js 12 KiB [emitted] (name: e1) -asset e2.js 12 KiB [emitted] (name: e2) -asset e3.js 12 KiB [emitted] (name: e3) +"asset e1.js 12.1 KiB [emitted] (name: e1) +asset e2.js 12.1 KiB [emitted] (name: e2) +asset e3.js 12.1 KiB [emitted] (name: e3) asset async1.js 964 bytes [emitted] (name: async1) asset async2.js 964 bytes [emitted] (name: async2) asset async3.js 964 bytes [emitted] (name: async3) -chunk (runtime: e3) e3.js (e3) 242 bytes (javascript) 6.61 KiB (runtime) [entry] [rendered] - runtime modules 6.61 KiB 9 modules +chunk (runtime: e3) e3.js (e3) 242 bytes (javascript) 6.66 KiB (runtime) [entry] [rendered] + runtime modules 6.66 KiB 9 modules cacheable modules 242 bytes ./b.js 20 bytes [dependent] [built] [code generated] ./e3.js + 2 modules 202 bytes [built] [code generated] ./h.js 20 bytes [dependent] [built] [code generated] -chunk (runtime: e1) e1.js (e1) 242 bytes (javascript) 6.61 KiB (runtime) [entry] [rendered] - runtime modules 6.61 KiB 9 modules +chunk (runtime: e1) e1.js (e1) 242 bytes (javascript) 6.66 KiB (runtime) [entry] [rendered] + runtime modules 6.66 KiB 9 modules cacheable modules 242 bytes ./b.js 20 bytes [dependent] [built] [code generated] ./d.js 20 bytes [dependent] [built] [code generated] @@ -1692,8 +1700,8 @@ chunk (runtime: e1, e2, e3) async1.js (async1) 135 bytes [rendered] chunk (runtime: e1, e2, e3) async3.js (async3) 135 bytes [rendered] ./async3.js 115 bytes [built] [code generated] ./h.js 20 bytes [dependent] [built] [code generated] -chunk (runtime: e2) e2.js (e2) 242 bytes (javascript) 6.61 KiB (runtime) [entry] [rendered] - runtime modules 6.61 KiB 9 modules +chunk (runtime: e2) e2.js (e2) 242 bytes (javascript) 6.66 KiB (runtime) [entry] [rendered] + runtime modules 6.66 KiB 9 modules cacheable modules 242 bytes ./b.js 20 bytes [dependent] [built] [code generated] ./e2.js + 2 modules 202 bytes [built] [code generated] @@ -1705,10 +1713,10 @@ webpack x.x.x compiled successfully" `; exports[`StatsTestCases should print correct stats for module-federation-custom-exposed-module-name 1`] = ` -"asset container_bundle.js 11.9 KiB [emitted] (name: container) +"asset container_bundle.js 12 KiB [emitted] (name: container) asset custom-entry_bundle.js 414 bytes [emitted] (name: custom-entry) asset main_bundle.js 84 bytes [emitted] (name: main) -runtime modules 6.58 KiB 9 modules +runtime modules 6.63 KiB 9 modules built modules 82 bytes [built] ./index.js 1 bytes [built] [code generated] container entry 42 bytes [built] [code generated] @@ -1813,9 +1821,9 @@ chunk (runtime: main) a-52.js 149 bytes [rendered] split chunk (cache group: def > ./a ./index.js 1:0-47 > ./b ./index.js 2:0-47 ./shared.js 149 bytes [built] [code generated] -chunk (runtime: main) a-main.js (main) 146 bytes (javascript) 6.9 KiB (runtime) [entry] [rendered] +chunk (runtime: main) a-main.js (main) 146 bytes (javascript) 6.96 KiB (runtime) [entry] [rendered] > ./ main - runtime modules 6.9 KiB 10 modules + runtime modules 6.96 KiB 10 modules ./index.js 146 bytes [built] [code generated] chunk (runtime: main) a-vendors.js (vendors) (id hint: vendors) 40 bytes [rendered] split chunk (cache group: vendors) (name: vendors) > ./c ./index.js 3:0-47 @@ -1840,9 +1848,9 @@ chunk (runtime: main) b-52.js 149 bytes [rendered] split chunk (cache group: def > ./a ./index.js 1:0-47 > ./b ./index.js 2:0-47 ./shared.js 149 bytes [built] [code generated] -chunk (runtime: main) b-main.js (main) 146 bytes (javascript) 6.9 KiB (runtime) [entry] [rendered] +chunk (runtime: main) b-main.js (main) 146 bytes (javascript) 6.96 KiB (runtime) [entry] [rendered] > ./ main - runtime modules 6.9 KiB 10 modules + runtime modules 6.96 KiB 10 modules ./index.js 146 bytes [built] [code generated] chunk (runtime: main) b-vendors.js (vendors) (id hint: vendors) 40 bytes [rendered] split chunk (cache group: vendors) (name: vendors) > ./c ./index.js 3:0-47 @@ -1874,10 +1882,10 @@ webpack x.x.x compiled successfully in X ms" `; exports[`StatsTestCases should print correct stats for named-chunks-plugin-async 1`] = ` -"asset entry.js 12.4 KiB [emitted] (name: entry) +"asset entry.js 12.5 KiB [emitted] (name: entry) asset modules_a_js.js 313 bytes [emitted] asset modules_b_js.js 149 bytes [emitted] -runtime modules 7.68 KiB 10 modules +runtime modules 7.74 KiB 10 modules cacheable modules 106 bytes ./entry.js 47 bytes [built] [code generated] ./modules/a.js 37 bytes [built] [code generated] @@ -1899,7 +1907,7 @@ webpack x.x.x compiled with 1 error and 1 warning in X ms" `; exports[`StatsTestCases should print correct stats for optimize-chunks 1`] = ` -"asset main.js 11 KiB {179} [emitted] (name: main) +"asset main.js 11.1 KiB {179} [emitted] (name: main) asset cir2 from cir1.js 377 bytes {288}, {289} [emitted] (name: cir2 from cir1) asset cir1.js 333 bytes {592} [emitted] (name: cir1) asset cir2.js 333 bytes {289} [emitted] (name: cir2) @@ -1911,9 +1919,9 @@ chunk {90} (runtime: main) ab.js (ab) 2 bytes <{179}> >{753}< [rendered] > [10] ./index.js 1:0-6:8 ./modules/a.js [839] 1 bytes {90} {374} [built] [code generated] ./modules/b.js [836] 1 bytes {90} {374} [built] [code generated] -chunk {179} (runtime: main) main.js (main) 524 bytes (javascript) 6.1 KiB (runtime) >{90}< >{289}< >{374}< >{592}< [entry] [rendered] +chunk {179} (runtime: main) main.js (main) 524 bytes (javascript) 6.15 KiB (runtime) >{90}< >{289}< >{374}< >{592}< [entry] [rendered] > ./index main - runtime modules 6.1 KiB 7 modules + runtime modules 6.15 KiB 7 modules cacheable modules 524 bytes ./index.js [10] 523 bytes {179} [built] [code generated] ./modules/f.js [544] 1 bytes {179} [dependent] [built] [code generated] @@ -2056,7 +2064,7 @@ asset 460.js 323 bytes [emitted] asset 524.js 206 bytes [emitted] asset 996.js 138 bytes [emitted] Entrypoint main 303 KiB = main.js -runtime modules 6 KiB 7 modules +runtime modules 6.05 KiB 7 modules cacheable modules 293 KiB ./index.js 52 bytes [built] [code generated] ./a.js 293 KiB [built] [code generated] @@ -2073,7 +2081,7 @@ asset 460.js 323 bytes [emitted] asset 524.js 206 bytes [emitted] asset 996.js 138 bytes [emitted] Entrypoint main [big] 303 KiB = main.js -runtime modules 6 KiB 7 modules +runtime modules 6.05 KiB 7 modules cacheable modules 293 KiB ./index.js 52 bytes [built] [code generated] ./a.js 293 KiB [built] [code generated] @@ -2132,7 +2140,7 @@ asset 460.js 323 bytes [emitted] asset 524.js 206 bytes [emitted] asset 996.js 138 bytes [emitted] Entrypoint main [big] 303 KiB = main.js -runtime modules 6 KiB 7 modules +runtime modules 6.05 KiB 7 modules cacheable modules 293 KiB ./index.js 52 bytes [built] [code generated] ./a.js 293 KiB [built] [code generated] @@ -2174,17 +2182,17 @@ webpack x.x.x compiled with 3 errors in X ms" `; exports[`StatsTestCases should print correct stats for prefetch 1`] = ` -"asset main.js 16.8 KiB {179} [emitted] (name: main) +"asset main.js 16.9 KiB {179} [emitted] (name: main) asset prefetched.js 556 bytes {505} [emitted] (name: prefetched) asset inner2.js 150 bytes {641} [emitted] (name: inner2) asset inner.js 110 bytes {746} [emitted] (name: inner) asset prefetched2.js 110 bytes {379} [emitted] (name: prefetched2) asset prefetched3.js 110 bytes {220} [emitted] (name: prefetched3) asset normal.js 109 bytes {30} [emitted] (name: normal) -Entrypoint main 16.8 KiB = main.js +Entrypoint main 16.9 KiB = main.js prefetch: prefetched2.js {379} (name: prefetched2), prefetched.js {505} (name: prefetched), prefetched3.js {220} (name: prefetched3) chunk {30} (runtime: main) normal.js (normal) 1 bytes <{179}> [rendered] -chunk {179} (runtime: main) main.js (main) 436 bytes (javascript) 9.94 KiB (runtime) >{30}< >{220}< >{379}< >{505}< (prefetch: {379} {505} {220}) [entry] [rendered] +chunk {179} (runtime: main) main.js (main) 436 bytes (javascript) 9.99 KiB (runtime) >{30}< >{220}< >{379}< >{505}< (prefetch: {379} {505} {220}) [entry] [rendered] chunk {220} (runtime: main) prefetched3.js (prefetched3) 1 bytes <{179}> [rendered] chunk {379} (runtime: main) prefetched2.js (prefetched2) 1 bytes <{179}> [rendered] chunk {505} (runtime: main) prefetched.js (prefetched) 228 bytes <{179}> >{641}< >{746}< (prefetch: {641} {746}) [rendered] @@ -2217,7 +2225,7 @@ asset preloaded3.js 108 bytes [emitted] (name: preloaded3) Entrypoint main 15.2 KiB = main.js preload: preloaded2.js (name: preloaded2), preloaded.js (name: preloaded), preloaded3.js (name: preloaded3) chunk (runtime: main) normal.js (normal) 1 bytes [rendered] -chunk (runtime: main) main.js (main) 424 bytes (javascript) 8.88 KiB (runtime) (preload: {363} {851} {355}) [entry] [rendered] +chunk (runtime: main) main.js (main) 424 bytes (javascript) 8.93 KiB (runtime) (preload: {363} {851} {355}) [entry] [rendered] chunk (runtime: main) preloaded3.js (preloaded3) 1 bytes [rendered] chunk (runtime: main) preloaded2.js (preloaded2) 1 bytes [rendered] chunk (runtime: main) inner2.js (inner2) 2 bytes [rendered] @@ -2235,12 +2243,12 @@ exports[`StatsTestCases should print correct stats for preset-detailed 1`] = ` [LogTestPlugin] Log [LogTestPlugin] End PublicPath: auto -asset main.js 10.2 KiB {179} [emitted] (name: main) +asset main.js 10.3 KiB {179} [emitted] (name: main) asset 460.js 323 bytes {460} [emitted] asset 524.js 206 bytes {524} [emitted] asset 996.js 138 bytes {996} [emitted] -Entrypoint main 10.2 KiB = main.js -chunk {179} (runtime: main) main.js (main) 73 bytes (javascript) 6 KiB (runtime) >{460}< >{996}< [entry] [rendered] +Entrypoint main 10.3 KiB = main.js +chunk {179} (runtime: main) main.js (main) 73 bytes (javascript) 6.05 KiB (runtime) >{460}< >{996}< [entry] [rendered] > ./index main chunk {460} (runtime: main) 460.js 54 bytes <{179}> >{524}< [rendered] > ./c [10] ./index.js 3:0-16 @@ -2248,7 +2256,7 @@ chunk {524} (runtime: main) 524.js 44 bytes <{460}> [rendered] > [460] ./c.js 1:0-52 chunk {996} (runtime: main) 996.js 22 bytes <{179}> [rendered] > ./b [10] ./index.js 2:0-16 -runtime modules 6 KiB +runtime modules 6.05 KiB webpack/runtime/ensure chunk 326 bytes {179} [code generated] [no exports] [used exports unknown] @@ -2267,7 +2275,7 @@ runtime modules 6 KiB webpack/runtime/load script 1.36 KiB {179} [code generated] [no exports] [used exports unknown] - webpack/runtime/publicPath 868 bytes {179} [code generated] + webpack/runtime/publicPath 923 bytes {179} [code generated] [no exports] [used exports unknown] cacheable modules 193 bytes @@ -2338,7 +2346,7 @@ LOG from webpack.FileSystemInfo Directory info in cache: 0 timestamps 0 hashes 0 timestamp hash combinations Managed items info in cache: 0 items -1970-04-20 12:42:42: webpack x.x.x compiled successfully in X ms (44c013196446a1259957)" +1970-04-20 12:42:42: webpack x.x.x compiled successfully in X ms (b5dd2f2a91faf2c4143f)" `; exports[`StatsTestCases should print correct stats for preset-errors-only 1`] = `""`; @@ -2413,11 +2421,11 @@ exports[`StatsTestCases should print correct stats for preset-normal 1`] = ` " [LogTestPlugin] Error [LogTestPlugin] Warning [LogTestPlugin] Info -asset main.js 10.2 KiB [emitted] (name: main) +asset main.js 10.3 KiB [emitted] (name: main) asset 460.js 323 bytes [emitted] asset 524.js 206 bytes [emitted] asset 996.js 138 bytes [emitted] -runtime modules 6 KiB 7 modules +runtime modules 6.05 KiB 7 modules cacheable modules 193 bytes ./index.js 51 bytes [built] [code generated] ./a.js 22 bytes [built] [code generated] @@ -2440,7 +2448,7 @@ exports[`StatsTestCases should print correct stats for preset-normal-performance asset 460.js 323 bytes [emitted] asset 524.js 206 bytes [emitted] asset 996.js 138 bytes [emitted] -runtime modules 6 KiB 7 modules +runtime modules 6.05 KiB 7 modules cacheable modules 293 KiB ./index.js 52 bytes [built] [code generated] ./a.js 293 KiB [built] [code generated] @@ -2468,7 +2476,7 @@ exports[`StatsTestCases should print correct stats for preset-normal-performance asset 460.js 355 bytes [emitted] 1 related asset asset 524.js 238 bytes [emitted] 1 related asset asset 996.js 170 bytes [emitted] 1 related asset -runtime modules 6 KiB 7 modules +runtime modules 6.05 KiB 7 modules cacheable modules 293 KiB ./index.js 52 bytes [built] [code generated] ./a.js 293 KiB [built] [code generated] @@ -2511,14 +2519,14 @@ exports[`StatsTestCases should print correct stats for preset-verbose 1`] = ` [LogTestPlugin] Log [LogTestPlugin] End PublicPath: auto -asset main.js 10.2 KiB {179} [emitted] (name: main) +asset main.js 10.3 KiB {179} [emitted] (name: main) asset 460.js 323 bytes {460} [emitted] asset 524.js 206 bytes {524} [emitted] asset 996.js 138 bytes {996} [emitted] -Entrypoint main 10.2 KiB = main.js -chunk {179} (runtime: main) main.js (main) 73 bytes (javascript) 6 KiB (runtime) >{460}< >{996}< [entry] [rendered] +Entrypoint main 10.3 KiB = main.js +chunk {179} (runtime: main) main.js (main) 73 bytes (javascript) 6.05 KiB (runtime) >{460}< >{996}< [entry] [rendered] > ./index main - runtime modules 6 KiB + runtime modules 6.05 KiB webpack/runtime/ensure chunk 326 bytes {179} [code generated] [no exports] [used exports unknown] @@ -2537,7 +2545,7 @@ chunk {179} (runtime: main) main.js (main) 73 bytes (javascript) 6 KiB (runtime) webpack/runtime/load script 1.36 KiB {179} [code generated] [no exports] [used exports unknown] - webpack/runtime/publicPath 868 bytes {179} [code generated] + webpack/runtime/publicPath 923 bytes {179} [code generated] [no exports] [used exports unknown] cacheable modules 73 bytes @@ -2714,13 +2722,13 @@ LOG from webpack.FileSystemInfo Directory info in cache: 0 timestamps 0 hashes 0 timestamp hash combinations Managed items info in cache: 0 items -1970-04-20 12:42:42: webpack x.x.x compiled successfully in X ms (44c013196446a1259957)" +1970-04-20 12:42:42: webpack x.x.x compiled successfully in X ms (b5dd2f2a91faf2c4143f)" `; exports[`StatsTestCases should print correct stats for real-content-hash 1`] = ` "a-normal: - assets by path *.js 3.2 KiB - asset e9785128a82e17f93bc4-e97851.js 2.75 KiB [emitted] [immutable] [minimized] (name: runtime) + assets by path *.js 3.23 KiB + asset 48e1a25a11a7b9397e41-48e1a2.js 2.77 KiB [emitted] [immutable] [minimized] (name: runtime) asset f96e917feecf51c4fc5c-f96e91.js 232 bytes [emitted] [immutable] [minimized] (name: lazy) asset f17033ffbf027f2d71b7-f17033.js 212 bytes [emitted] [immutable] [minimized] (name: index) asset 666f2b8847021ccc7608-666f2b.js 21 bytes [emitted] [immutable] [minimized] (name: a, b) @@ -2728,10 +2736,10 @@ exports[`StatsTestCases should print correct stats for real-content-hash 1`] = ` asset 89a353e9c515885abd8e.png 14.6 KiB [emitted] [immutable] [from: file.png] (auxiliary name: lazy) asset 7382fad5b015914e0811.jpg?query 5.89 KiB [cached] [immutable] [from: file.jpg?query] (auxiliary name: lazy) asset 7382fad5b015914e0811.jpg 5.89 KiB [emitted] [immutable] [from: file.jpg] (auxiliary name: index) - Entrypoint index 2.96 KiB (5.89 KiB) = e9785128a82e17f93bc4-e97851.js 2.75 KiB f17033ffbf027f2d71b7-f17033.js 212 bytes 1 auxiliary asset + Entrypoint index 2.98 KiB (5.89 KiB) = 48e1a25a11a7b9397e41-48e1a2.js 2.77 KiB f17033ffbf027f2d71b7-f17033.js 212 bytes 1 auxiliary asset Entrypoint a 21 bytes = 666f2b8847021ccc7608-666f2b.js Entrypoint b 21 bytes = 666f2b8847021ccc7608-666f2b.js - runtime modules 7.28 KiB 9 modules + runtime modules 7.34 KiB 9 modules orphan modules 23 bytes [orphan] 1 module cacheable modules 556 bytes (javascript) 26.3 KiB (asset) javascript modules 430 bytes @@ -2746,8 +2754,8 @@ exports[`StatsTestCases should print correct stats for real-content-hash 1`] = ` a-normal (webpack x.x.x) compiled successfully in X ms b-normal: - assets by path *.js 3.2 KiB - asset 3d07a728e82c0ce8f5a8-3d07a7.js 2.75 KiB [emitted] [immutable] [minimized] (name: runtime) + assets by path *.js 3.23 KiB + asset f64fdaf8571eaf5e2680-f64fda.js 2.77 KiB [emitted] [immutable] [minimized] (name: runtime) asset f96e917feecf51c4fc5c-f96e91.js 232 bytes [emitted] [immutable] [minimized] (name: lazy) asset f17033ffbf027f2d71b7-f17033.js 212 bytes [emitted] [immutable] [minimized] (name: index) asset 666f2b8847021ccc7608-666f2b.js 21 bytes [emitted] [immutable] [minimized] (name: a, b) @@ -2755,10 +2763,10 @@ b-normal: asset 89a353e9c515885abd8e.png 14.6 KiB [emitted] [immutable] [from: file.png] (auxiliary name: lazy) asset 7382fad5b015914e0811.jpg?query 5.89 KiB [cached] [immutable] [from: file.jpg?query] (auxiliary name: lazy) asset 7382fad5b015914e0811.jpg 5.89 KiB [emitted] [immutable] [from: file.jpg] (auxiliary name: index) - Entrypoint index 2.96 KiB (5.89 KiB) = 3d07a728e82c0ce8f5a8-3d07a7.js 2.75 KiB f17033ffbf027f2d71b7-f17033.js 212 bytes 1 auxiliary asset + Entrypoint index 2.98 KiB (5.89 KiB) = f64fdaf8571eaf5e2680-f64fda.js 2.77 KiB f17033ffbf027f2d71b7-f17033.js 212 bytes 1 auxiliary asset Entrypoint a 21 bytes = 666f2b8847021ccc7608-666f2b.js Entrypoint b 21 bytes = 666f2b8847021ccc7608-666f2b.js - runtime modules 7.28 KiB 9 modules + runtime modules 7.34 KiB 9 modules orphan modules 19 bytes [orphan] 1 module cacheable modules 511 bytes (javascript) 26.3 KiB (asset) javascript modules 385 bytes @@ -2773,9 +2781,9 @@ b-normal: b-normal (webpack x.x.x) compiled successfully in X ms a-source-map: - assets by path *.js 3.42 KiB - asset 34764f712e482b1264f9-34764f.js 2.8 KiB [emitted] [immutable] [minimized] (name: runtime) - sourceMap 34764f712e482b1264f9-34764f.js.map 14.6 KiB [emitted] [dev] (auxiliary name: runtime) + assets by path *.js 3.44 KiB + asset 018715e3bf7c960ef754-018715.js 2.83 KiB [emitted] [immutable] [minimized] (name: runtime) + sourceMap 018715e3bf7c960ef754-018715.js.map 14.7 KiB [emitted] [dev] (auxiliary name: runtime) asset 0a8aef384737d9f64f44-0a8aef.js 288 bytes [emitted] [immutable] [minimized] (name: lazy) sourceMap 0a8aef384737d9f64f44-0a8aef.js.map 409 bytes [emitted] [dev] (auxiliary name: lazy) asset da629d4acf5998c06668-da629d.js 268 bytes [emitted] [immutable] [minimized] (name: index) @@ -2786,10 +2794,10 @@ a-source-map: asset 89a353e9c515885abd8e.png 14.6 KiB [emitted] [immutable] [from: file.png] (auxiliary name: lazy) asset 7382fad5b015914e0811.jpg?query 5.89 KiB [cached] [immutable] [from: file.jpg?query] (auxiliary name: lazy) asset 7382fad5b015914e0811.jpg 5.89 KiB [emitted] [immutable] [from: file.jpg] (auxiliary name: index) - Entrypoint index 3.06 KiB (20.8 KiB) = 34764f712e482b1264f9-34764f.js 2.8 KiB da629d4acf5998c06668-da629d.js 268 bytes 3 auxiliary assets + Entrypoint index 3.09 KiB (20.9 KiB) = 018715e3bf7c960ef754-018715.js 2.83 KiB da629d4acf5998c06668-da629d.js 268 bytes 3 auxiliary assets Entrypoint a 77 bytes (254 bytes) = 222c2acc68675174e6b2-222c2a.js 1 auxiliary asset Entrypoint b 77 bytes (254 bytes) = 222c2acc68675174e6b2-222c2a.js 1 auxiliary asset - runtime modules 7.28 KiB 9 modules + runtime modules 7.34 KiB 9 modules orphan modules 23 bytes [orphan] 1 module cacheable modules 556 bytes (javascript) 26.3 KiB (asset) javascript modules 430 bytes @@ -2804,9 +2812,9 @@ a-source-map: a-source-map (webpack x.x.x) compiled successfully in X ms b-source-map: - assets by path *.js 3.42 KiB - asset e7ae87512ef2d6985798-e7ae87.js 2.8 KiB [emitted] [immutable] [minimized] (name: runtime) - sourceMap e7ae87512ef2d6985798-e7ae87.js.map 14.6 KiB [emitted] [dev] (auxiliary name: runtime) + assets by path *.js 3.44 KiB + asset 487b2e232adae9b3ff8b-487b2e.js 2.83 KiB [emitted] [immutable] [minimized] (name: runtime) + sourceMap 487b2e232adae9b3ff8b-487b2e.js.map 14.7 KiB [emitted] [dev] (auxiliary name: runtime) asset 0a8aef384737d9f64f44-0a8aef.js 288 bytes [emitted] [immutable] [minimized] (name: lazy) sourceMap 0a8aef384737d9f64f44-0a8aef.js.map 405 bytes [emitted] [dev] (auxiliary name: lazy) asset da629d4acf5998c06668-da629d.js 268 bytes [emitted] [immutable] [minimized] (name: index) @@ -2817,10 +2825,10 @@ b-source-map: asset 89a353e9c515885abd8e.png 14.6 KiB [emitted] [immutable] [from: file.png] (auxiliary name: lazy) asset 7382fad5b015914e0811.jpg?query 5.89 KiB [cached] [immutable] [from: file.jpg?query] (auxiliary name: lazy) asset 7382fad5b015914e0811.jpg 5.89 KiB [emitted] [immutable] [from: file.jpg] (auxiliary name: index) - Entrypoint index 3.06 KiB (20.8 KiB) = e7ae87512ef2d6985798-e7ae87.js 2.8 KiB da629d4acf5998c06668-da629d.js 268 bytes 3 auxiliary assets + Entrypoint index 3.09 KiB (20.9 KiB) = 487b2e232adae9b3ff8b-487b2e.js 2.83 KiB da629d4acf5998c06668-da629d.js 268 bytes 3 auxiliary assets Entrypoint a 77 bytes (254 bytes) = 222c2acc68675174e6b2-222c2a.js 1 auxiliary asset Entrypoint b 77 bytes (254 bytes) = 222c2acc68675174e6b2-222c2a.js 1 auxiliary asset - runtime modules 7.28 KiB 9 modules + runtime modules 7.34 KiB 9 modules orphan modules 19 bytes [orphan] 1 module cacheable modules 511 bytes (javascript) 26.3 KiB (asset) javascript modules 385 bytes @@ -2837,21 +2845,21 @@ b-source-map: exports[`StatsTestCases should print correct stats for related-assets 1`] = ` "default: - assets by path *.js 15.2 KiB - asset default-main.js 14.4 KiB [emitted] (name: main) 3 related assets + assets by path *.js 15.3 KiB + asset default-main.js 14.5 KiB [emitted] (name: main) 3 related assets asset default-chunk_js.js 803 bytes [emitted] 3 related assets assets by path *.css 142 bytes asset default-chunk_js.css 73 bytes [emitted] 3 related assets asset default-main.css 69 bytes [emitted] (name: main) 3 related assets relatedAssets: - assets by path *.js 15.2 KiB + assets by path *.js 15.3 KiB asset relatedAssets-main.js 14.5 KiB [emitted] (name: main) compressed relatedAssets-main.js.br 14.5 KiB [emitted] compressed relatedAssets-main.js.gz 14.5 KiB [emitted] - sourceMap relatedAssets-main.js.map 12.5 KiB [emitted] [dev] (auxiliary name: main) - compressed relatedAssets-main.js.map.br 12.5 KiB [emitted] - compressed relatedAssets-main.js.map.gz 12.5 KiB [emitted] + sourceMap relatedAssets-main.js.map 12.6 KiB [emitted] [dev] (auxiliary name: main) + compressed relatedAssets-main.js.map.br 12.6 KiB [emitted] + compressed relatedAssets-main.js.map.gz 12.6 KiB [emitted] asset relatedAssets-chunk_js.js 809 bytes [emitted] compressed relatedAssets-chunk_js.js.br 809 bytes [emitted] compressed relatedAssets-chunk_js.js.gz 809 bytes [emitted] @@ -2873,11 +2881,11 @@ relatedAssets: compressed relatedAssets-main.css.gz 75 bytes [emitted] exclude1: - assets by path *.js 15.2 KiB - asset exclude1-main.js 14.4 KiB [emitted] (name: main) - hidden assets 28.9 KiB 2 assets + assets by path *.js 15.3 KiB + asset exclude1-main.js 14.5 KiB [emitted] (name: main) + hidden assets 29 KiB 2 assets sourceMap exclude1-main.js.map 12.5 KiB [emitted] [dev] (auxiliary name: main) - hidden assets 24.9 KiB 2 assets + hidden assets 25.1 KiB 2 assets + 1 related asset + 1 related asset asset exclude1-chunk_js.js 804 bytes [emitted] @@ -2901,11 +2909,11 @@ exclude1: + 1 related asset exclude2: - assets by path *.js 15.2 KiB - asset exclude2-main.js 14.4 KiB [emitted] (name: main) + assets by path *.js 15.3 KiB + asset exclude2-main.js 14.5 KiB [emitted] (name: main) hidden assets 12.5 KiB 1 asset - compressed exclude2-main.js.br 14.4 KiB [emitted] - compressed exclude2-main.js.gz 14.4 KiB [emitted] + compressed exclude2-main.js.br 14.5 KiB [emitted] + compressed exclude2-main.js.gz 14.5 KiB [emitted] asset exclude2-chunk_js.js 804 bytes [emitted] hidden assets 295 bytes 1 asset compressed exclude2-chunk_js.js.br 804 bytes [emitted] @@ -2922,10 +2930,10 @@ exclude2: exclude3: hidden assets 878 bytes 2 assets - assets by status 14.5 KiB [emitted] - asset exclude3-main.js 14.4 KiB [emitted] (name: main) - compressed exclude3-main.js.br 14.4 KiB [emitted] - compressed exclude3-main.js.gz 14.4 KiB [emitted] + assets by status 14.6 KiB [emitted] + asset exclude3-main.js 14.5 KiB [emitted] (name: main) + compressed exclude3-main.js.br 14.5 KiB [emitted] + compressed exclude3-main.js.gz 14.5 KiB [emitted] sourceMap exclude3-main.js.map 12.5 KiB [emitted] [dev] (auxiliary name: main) compressed exclude3-main.js.map.br 12.5 KiB [emitted] compressed exclude3-main.js.map.gz 12.5 KiB [emitted] @@ -2992,11 +3000,11 @@ webpack x.x.x compiled successfully" exports[`StatsTestCases should print correct stats for runtime-chunk-integration 1`] = ` "base: - asset without-runtime.js 12 KiB [emitted] (name: runtime) + asset without-runtime.js 12.1 KiB [emitted] (name: runtime) asset without-505.js 1.2 KiB [emitted] asset without-main1.js 815 bytes [emitted] (name: main1) - Entrypoint main1 12.8 KiB = without-runtime.js 12 KiB without-main1.js 815 bytes - runtime modules 7.51 KiB 10 modules + Entrypoint main1 12.9 KiB = without-runtime.js 12.1 KiB without-main1.js 815 bytes + runtime modules 7.56 KiB 10 modules cacheable modules 126 bytes ./main1.js 66 bytes [built] [code generated] ./b.js 20 bytes [built] [code generated] @@ -3005,15 +3013,15 @@ exports[`StatsTestCases should print correct stats for runtime-chunk-integration base (webpack x.x.x) compiled successfully static custom name: - asset with-manifest.js 12 KiB [emitted] (name: manifest) + asset with-manifest.js 12.1 KiB [emitted] (name: manifest) asset with-505.js 1.2 KiB [emitted] asset with-main1.js 815 bytes [emitted] (name: main1) asset with-main2.js 434 bytes [emitted] (name: main2) asset with-main3.js 434 bytes [emitted] (name: main3) - Entrypoint main1 12.8 KiB = with-manifest.js 12 KiB with-main1.js 815 bytes - Entrypoint main2 12.5 KiB = with-manifest.js 12 KiB with-main2.js 434 bytes - Entrypoint main3 12.5 KiB = with-manifest.js 12 KiB with-main3.js 434 bytes - runtime modules 7.51 KiB 10 modules + Entrypoint main1 12.9 KiB = with-manifest.js 12.1 KiB with-main1.js 815 bytes + Entrypoint main2 12.5 KiB = with-manifest.js 12.1 KiB with-main2.js 434 bytes + Entrypoint main3 12.5 KiB = with-manifest.js 12.1 KiB with-main3.js 434 bytes + runtime modules 7.56 KiB 10 modules cacheable modules 166 bytes ./main1.js 66 bytes [built] [code generated] ./main2.js 20 bytes [built] [code generated] @@ -3024,16 +3032,16 @@ static custom name: static custom name (webpack x.x.x) compiled successfully dynamic custom name: - asset func-b.js 12 KiB [emitted] (name: b) + asset func-b.js 12.1 KiB [emitted] (name: b) asset func-a.js 4.91 KiB [emitted] (name: a) asset func-505.js 1.2 KiB [emitted] asset func-main1.js 815 bytes [emitted] (name: main1) asset func-main2.js 434 bytes [emitted] (name: main2) asset func-main3.js 434 bytes [emitted] (name: main3) - Entrypoint main1 12.8 KiB = func-b.js 12 KiB func-main1.js 815 bytes - Entrypoint main2 12.5 KiB = func-b.js 12 KiB func-main2.js 434 bytes + Entrypoint main1 12.9 KiB = func-b.js 12.1 KiB func-main1.js 815 bytes + Entrypoint main2 12.5 KiB = func-b.js 12.1 KiB func-main2.js 434 bytes Entrypoint main3 5.33 KiB = func-a.js 4.91 KiB func-main3.js 434 bytes - runtime modules 9.96 KiB 13 modules + runtime modules 10 KiB 13 modules cacheable modules 166 bytes ./main1.js 66 bytes [built] [code generated] ./main2.js 20 bytes [built] [code generated] @@ -3058,16 +3066,16 @@ webpack x.x.x compiled successfully" exports[`StatsTestCases should print correct stats for runtime-specific-used-exports 1`] = ` "production: - asset production-a.js 13.1 KiB [emitted] (name: a) - asset production-b.js 13.1 KiB [emitted] (name: b) + asset production-a.js 13.2 KiB [emitted] (name: a) + asset production-b.js 13.2 KiB [emitted] (name: b) asset production-dx_js.js 1.16 KiB [emitted] asset production-dw_js-_a6170.js 1.16 KiB [emitted] asset production-dw_js-_a6171.js 1.16 KiB [emitted] asset production-dy_js.js 1.14 KiB [emitted] asset production-dz_js.js 1.14 KiB [emitted] asset production-c.js 93 bytes [emitted] (name: c) - chunk (runtime: a) production-a.js (a) 605 bytes (javascript) 6.57 KiB (runtime) [entry] [rendered] - runtime modules 6.57 KiB 9 modules + chunk (runtime: a) production-a.js (a) 605 bytes (javascript) 6.63 KiB (runtime) [entry] [rendered] + runtime modules 6.63 KiB 9 modules cacheable modules 605 bytes ./a.js 261 bytes [built] [code generated] [no exports used] @@ -3079,8 +3087,8 @@ exports[`StatsTestCases should print correct stats for runtime-specific-used-exp [only some exports used: x] ./reexport.js 37 bytes [dependent] [built] [code generated] [only some exports used: x] - chunk (runtime: b) production-b.js (b) 605 bytes (javascript) 6.57 KiB (runtime) [entry] [rendered] - runtime modules 6.57 KiB 9 modules + chunk (runtime: b) production-b.js (b) 605 bytes (javascript) 6.63 KiB (runtime) [entry] [rendered] + runtime modules 6.63 KiB 9 modules cacheable modules 605 bytes ./b.js 261 bytes [built] [code generated] [no exports used] @@ -3115,7 +3123,7 @@ exports[`StatsTestCases should print correct stats for runtime-specific-used-exp ./dz.js 46 bytes [built] [code generated] ./module.js?chunk 122 bytes [dependent] [built] [code generated] [only some exports used: identity, w, x, z] - runtime modules 13.1 KiB 18 modules + runtime modules 13.3 KiB 18 modules cacheable modules 1.15 KiB ./a.js 261 bytes [built] [code generated] [no exports used] @@ -3147,8 +3155,8 @@ development: asset development-dy_js.js 2.11 KiB [emitted] asset development-dz_js.js 2.11 KiB [emitted] asset development-c.js 1.13 KiB [emitted] (name: c) - chunk (runtime: a) development-a.js (a) 605 bytes (javascript) 6.58 KiB (runtime) [entry] [rendered] - runtime modules 6.58 KiB 9 modules + chunk (runtime: a) development-a.js (a) 605 bytes (javascript) 6.63 KiB (runtime) [entry] [rendered] + runtime modules 6.63 KiB 9 modules cacheable modules 605 bytes ./a.js 261 bytes [built] [code generated] [used exports unknown] @@ -3160,8 +3168,8 @@ development: [used exports unknown] ./reexport.js 37 bytes [dependent] [built] [code generated] [used exports unknown] - chunk (runtime: b) development-b.js (b) 605 bytes (javascript) 6.58 KiB (runtime) [entry] [rendered] - runtime modules 6.58 KiB 9 modules + chunk (runtime: b) development-b.js (b) 605 bytes (javascript) 6.63 KiB (runtime) [entry] [rendered] + runtime modules 6.63 KiB 9 modules cacheable modules 605 bytes ./b.js 261 bytes [built] [code generated] [used exports unknown] @@ -3196,7 +3204,7 @@ development: [used exports unknown] ./module.js?chunk 122 bytes [dependent] [built] [code generated] [used exports unknown] - runtime modules 13.2 KiB 18 modules + runtime modules 13.3 KiB 18 modules cacheable modules 1.15 KiB ./a.js 261 bytes [built] [code generated] [used exports unknown] @@ -3225,15 +3233,15 @@ development: development (webpack x.x.x) compiled successfully in X ms global: - asset global-a.js 13.3 KiB [emitted] (name: a) - asset global-b.js 13.3 KiB [emitted] (name: b) + asset global-a.js 13.4 KiB [emitted] (name: a) + asset global-b.js 13.4 KiB [emitted] (name: b) asset global-dw_js.js 1.16 KiB [emitted] asset global-dx_js.js 1.16 KiB [emitted] asset global-dy_js.js 1.16 KiB [emitted] asset global-dz_js.js 1.16 KiB [emitted] asset global-c.js 93 bytes [emitted] (name: c) - chunk (runtime: a) global-a.js (a) 605 bytes (javascript) 6.57 KiB (runtime) [entry] [rendered] - runtime modules 6.57 KiB 9 modules + chunk (runtime: a) global-a.js (a) 605 bytes (javascript) 6.62 KiB (runtime) [entry] [rendered] + runtime modules 6.62 KiB 9 modules cacheable modules 605 bytes ./a.js 261 bytes [built] [code generated] [no exports used] @@ -3245,8 +3253,8 @@ global: [only some exports used: x, y] ./reexport.js 37 bytes [dependent] [built] [code generated] [only some exports used: x, y] - chunk (runtime: b) global-b.js (b) 605 bytes (javascript) 6.57 KiB (runtime) [entry] [rendered] - runtime modules 6.57 KiB 9 modules + chunk (runtime: b) global-b.js (b) 605 bytes (javascript) 6.62 KiB (runtime) [entry] [rendered] + runtime modules 6.62 KiB 9 modules cacheable modules 605 bytes ./b.js 261 bytes [built] [code generated] [no exports used] @@ -3277,7 +3285,7 @@ global: ./dz.js 46 bytes [built] [code generated] ./module.js?chunk 122 bytes [dependent] [built] [code generated] [only some exports used: identity, w, x, y, z] - runtime modules 13.1 KiB 18 modules + runtime modules 13.2 KiB 18 modules cacheable modules 1.15 KiB ./a.js 261 bytes [built] [code generated] [no exports used] @@ -3303,7 +3311,7 @@ global: `; exports[`StatsTestCases should print correct stats for scope-hoisting-bailouts 1`] = ` -"runtime modules 6.82 KiB 10 modules +"runtime modules 6.88 KiB 10 modules built modules 615 bytes [built] code generated modules 530 bytes [code generated] ./index.js 150 bytes [built] [code generated] @@ -3340,8 +3348,8 @@ webpack x.x.x compiled successfully in X ms" exports[`StatsTestCases should print correct stats for scope-hoisting-multi 1`] = ` "Entrypoint first 14.4 KiB = a-vendor.js 419 bytes a-first.js 14 KiB -Entrypoint second 13.9 KiB = a-vendor.js 419 bytes a-second.js 13.5 KiB -runtime modules 15.1 KiB 20 modules +Entrypoint second 14 KiB = a-vendor.js 419 bytes a-second.js 13.5 KiB +runtime modules 15.2 KiB 20 modules orphan modules 37 bytes [orphan] 1 module cacheable modules 807 bytes ./first.js 236 bytes [built] [code generated] @@ -3356,9 +3364,9 @@ cacheable modules 807 bytes ./common_lazy_shared.js 25 bytes [built] [code generated] webpack x.x.x compiled successfully in X ms -Entrypoint first 13.6 KiB = b-vendor.js 419 bytes b-first.js 13.2 KiB -Entrypoint second 13.5 KiB = b-vendor.js 419 bytes b-second.js 13.1 KiB -runtime modules 15.1 KiB 20 modules +Entrypoint first 13.7 KiB = b-vendor.js 419 bytes b-first.js 13.3 KiB +Entrypoint second 13.6 KiB = b-vendor.js 419 bytes b-second.js 13.2 KiB +runtime modules 15.2 KiB 20 modules cacheable modules 975 bytes code generated modules 857 bytes [code generated] ./first.js + 2 modules 292 bytes [built] [code generated] @@ -3383,9 +3391,9 @@ webpack x.x.x compiled successfully in X ms" `; exports[`StatsTestCases should print correct stats for side-effects-issue-7428 1`] = ` -"asset main.js 12.3 KiB [emitted] (name: main) +"asset main.js 12.4 KiB [emitted] (name: main) asset 1.js 643 bytes [emitted] -runtime modules 6.56 KiB 9 modules +runtime modules 6.62 KiB 9 modules cacheable modules 823 bytes modules by path ./components/src/ 501 bytes orphan modules 315 bytes [orphan] @@ -3560,8 +3568,8 @@ webpack x.x.x compiled successfully in X ms" exports[`StatsTestCases should print correct stats for split-chunks 1`] = ` "default: - Entrypoint main 11.4 KiB = default/main.js - Entrypoint a 12.5 KiB = default/a.js + Entrypoint main 11.5 KiB = default/main.js + Entrypoint a 12.6 KiB = default/a.js Entrypoint b 3.94 KiB = default/b.js Entrypoint c 3.94 KiB = default/c.js chunk (runtime: b) default/b.js (b) 196 bytes (javascript) 396 bytes (runtime) [entry] [rendered] @@ -3572,9 +3580,9 @@ exports[`StatsTestCases should print correct stats for split-chunks 1`] = ` chunk (runtime: a, main) default/async-g.js (async-g) 45 bytes <{282}> <{767}> <{786}> <{794}> <{954}> ={568}= [rendered] > ./g ./a.js 6:0-47 ./g.js 45 bytes [built] [code generated] - chunk (runtime: main) default/main.js (main) 147 bytes (javascript) 6.66 KiB (runtime) >{282}< >{334}< >{383}< >{568}< >{767}< >{769}< >{794}< >{954}< [entry] [rendered] + chunk (runtime: main) default/main.js (main) 147 bytes (javascript) 6.71 KiB (runtime) >{282}< >{334}< >{383}< >{568}< >{767}< >{769}< >{794}< >{954}< [entry] [rendered] > ./ main - runtime modules 6.66 KiB 9 modules + runtime modules 6.71 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: main) default/282.js (id hint: vendors) 20 bytes <{179}> ={334}= ={383}= ={568}= ={767}= ={769}= ={794}= ={954}= >{137}< >{568}< [rendered] split chunk (cache group: defaultVendors) > ./a ./index.js 1:0-47 @@ -3605,9 +3613,9 @@ exports[`StatsTestCases should print correct stats for split-chunks 1`] = ` chunk (runtime: main) default/769.js (id hint: vendors) 20 bytes <{179}> ={282}= ={383}= ={568}= ={767}= [rendered] split chunk (cache group: defaultVendors) > ./c ./index.js 3:0-47 ./node_modules/z.js 20 bytes [built] [code generated] - chunk (runtime: a) default/a.js (a) 245 bytes (javascript) 6.65 KiB (runtime) >{137}< >{568}< [entry] [rendered] + chunk (runtime: a) default/a.js (a) 245 bytes (javascript) 6.7 KiB (runtime) >{137}< >{568}< [entry] [rendered] > ./a a - runtime modules 6.65 KiB 9 modules + runtime modules 6.7 KiB 9 modules dependent modules 60 bytes [dependent] 3 modules ./a.js + 1 modules 185 bytes [built] [code generated] chunk (runtime: main) default/async-a.js (async-a) 185 bytes <{179}> ={282}= ={767}= ={954}= >{137}< >{568}< [rendered] @@ -3620,8 +3628,8 @@ exports[`StatsTestCases should print correct stats for split-chunks 1`] = ` default (webpack x.x.x) compiled successfully all-chunks: - Entrypoint main 11.5 KiB = all-chunks/main.js - Entrypoint a 15 KiB = all-chunks/282.js 414 bytes all-chunks/954.js 414 bytes all-chunks/767.js 414 bytes all-chunks/390.js 414 bytes all-chunks/a.js 13.4 KiB + Entrypoint main 11.6 KiB = all-chunks/main.js + Entrypoint a 15.1 KiB = all-chunks/282.js 414 bytes all-chunks/954.js 414 bytes all-chunks/767.js 414 bytes all-chunks/390.js 414 bytes all-chunks/a.js 13.4 KiB Entrypoint b 8.14 KiB = all-chunks/282.js 414 bytes all-chunks/954.js 414 bytes all-chunks/767.js 414 bytes all-chunks/568.js 414 bytes all-chunks/b.js 6.52 KiB Entrypoint c 8.14 KiB = all-chunks/282.js 414 bytes all-chunks/769.js 414 bytes all-chunks/767.js 414 bytes all-chunks/568.js 414 bytes all-chunks/c.js 6.52 KiB chunk (runtime: b) all-chunks/b.js (b) 116 bytes (javascript) 2.76 KiB (runtime) ={282}= ={568}= ={767}= ={954}= [entry] [rendered] @@ -3631,9 +3639,9 @@ all-chunks: chunk (runtime: a, main) all-chunks/async-g.js (async-g) 45 bytes <{282}> <{390}> <{767}> <{786}> <{794}> <{954}> ={568}= [rendered] > ./g ./a.js 6:0-47 ./g.js 45 bytes [built] [code generated] - chunk (runtime: main) all-chunks/main.js (main) 147 bytes (javascript) 6.66 KiB (runtime) >{282}< >{334}< >{383}< >{390}< >{568}< >{767}< >{769}< >{794}< >{954}< [entry] [rendered] + chunk (runtime: main) all-chunks/main.js (main) 147 bytes (javascript) 6.71 KiB (runtime) >{282}< >{334}< >{383}< >{390}< >{568}< >{767}< >{769}< >{794}< >{954}< [entry] [rendered] > ./ main - runtime modules 6.66 KiB 9 modules + runtime modules 6.71 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: a, b, c, main) all-chunks/282.js (id hint: vendors) 20 bytes <{179}> ={128}= ={334}= ={383}= ={390}= ={459}= ={568}= ={767}= ={769}= ={786}= ={794}= ={954}= >{137}< >{568}< [initial] [rendered] split chunk (cache group: defaultVendors) > ./a ./index.js 1:0-47 @@ -3676,9 +3684,9 @@ all-chunks: > ./c ./index.js 3:0-47 > ./c c ./node_modules/z.js 20 bytes [built] [code generated] - chunk (runtime: a) all-chunks/a.js (a) 165 bytes (javascript) 7.57 KiB (runtime) ={282}= ={390}= ={767}= ={954}= >{137}< >{568}< [entry] [rendered] + chunk (runtime: a) all-chunks/a.js (a) 165 bytes (javascript) 7.63 KiB (runtime) ={282}= ={390}= ={767}= ={954}= >{137}< >{568}< [entry] [rendered] > ./a a - runtime modules 7.57 KiB 10 modules + runtime modules 7.63 KiB 10 modules ./a.js 165 bytes [built] [code generated] chunk (runtime: main) all-chunks/async-a.js (async-a) 165 bytes <{179}> ={282}= ={390}= ={767}= ={954}= >{137}< >{568}< [rendered] > ./a ./index.js 1:0-47 @@ -3692,8 +3700,8 @@ all-chunks: all-chunks (webpack x.x.x) compiled successfully manual: - Entrypoint main 11.2 KiB = manual/main.js - Entrypoint a 14.7 KiB = manual/vendors.js 1.05 KiB manual/a.js 13.7 KiB + Entrypoint main 11.3 KiB = manual/main.js + Entrypoint a 14.8 KiB = manual/vendors.js 1.05 KiB manual/a.js 13.8 KiB Entrypoint b 8.45 KiB = manual/vendors.js 1.05 KiB manual/b.js 7.4 KiB Entrypoint c 8.45 KiB = manual/vendors.js 1.05 KiB manual/c.js 7.4 KiB chunk (runtime: b) manual/b.js (b) 156 bytes (javascript) 2.76 KiB (runtime) ={216}= [entry] [rendered] @@ -3708,9 +3716,9 @@ manual: > ./g ./a.js 6:0-47 dependent modules 20 bytes [dependent] 1 module ./g.js 45 bytes [built] [code generated] - chunk (runtime: main) manual/main.js (main) 147 bytes (javascript) 6.66 KiB (runtime) >{216}< >{334}< >{383}< >{794}< [entry] [rendered] + chunk (runtime: main) manual/main.js (main) 147 bytes (javascript) 6.71 KiB (runtime) >{216}< >{334}< >{383}< >{794}< [entry] [rendered] > ./ main - runtime modules 6.66 KiB 9 modules + runtime modules 6.71 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: a, b, c, main) manual/vendors.js (vendors) (id hint: vendors) 60 bytes <{179}> ={128}= ={334}= ={383}= ={459}= ={786}= ={794}= >{137}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./a ./index.js 1:0-47 @@ -3747,12 +3755,12 @@ manual: runtime modules 2.76 KiB 4 modules dependent modules 40 bytes [dependent] 2 modules ./c.js 116 bytes [built] [code generated] - chunk (runtime: a) manual/a.js (a) 205 bytes (javascript) 7.54 KiB (runtime) ={216}= >{137}< [entry] [rendered] + chunk (runtime: a) manual/a.js (a) 205 bytes (javascript) 7.59 KiB (runtime) ={216}= >{137}< [entry] [rendered] > ./a a > x a > y a > z a - runtime modules 7.54 KiB 10 modules + runtime modules 7.59 KiB 10 modules dependent modules 20 bytes [dependent] 1 module ./a.js + 1 modules 185 bytes [built] [code generated] chunk (runtime: main) manual/async-a.js (async-a) 205 bytes <{179}> ={216}= >{137}< [rendered] @@ -3762,16 +3770,16 @@ manual: manual (webpack x.x.x) compiled successfully name-too-long: - Entrypoint main 11.5 KiB = name-too-long/main.js - Entrypoint aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 15 KiB = name-too-long/282.js 414 bytes name-too-long/954.js 414 bytes name-too-long/767.js 414 bytes name-too-long/390.js 414 bytes name-too-long/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js 13.4 KiB + Entrypoint main 11.6 KiB = name-too-long/main.js + Entrypoint aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 15.1 KiB = name-too-long/282.js 414 bytes name-too-long/954.js 414 bytes name-too-long/767.js 414 bytes name-too-long/390.js 414 bytes name-too-long/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js 13.4 KiB Entrypoint bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 8.14 KiB = name-too-long/282.js 414 bytes name-too-long/954.js 414 bytes name-too-long/767.js 414 bytes name-too-long/568.js 414 bytes name-too-long/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js 6.52 KiB Entrypoint cccccccccccccccccccccccccccccc 8.14 KiB = name-too-long/282.js 414 bytes name-too-long/769.js 414 bytes name-too-long/767.js 414 bytes name-too-long/568.js 414 bytes name-too-long/cccccccccccccccccccccccccccccc.js 6.52 KiB chunk (runtime: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, main) name-too-long/async-g.js (async-g) 45 bytes <{282}> <{390}> <{751}> <{767}> <{794}> <{954}> ={568}= [rendered] > ./g ./a.js 6:0-47 ./g.js 45 bytes [built] [code generated] - chunk (runtime: main) name-too-long/main.js (main) 147 bytes (javascript) 6.66 KiB (runtime) >{282}< >{334}< >{383}< >{390}< >{568}< >{767}< >{769}< >{794}< >{954}< [entry] [rendered] + chunk (runtime: main) name-too-long/main.js (main) 147 bytes (javascript) 6.72 KiB (runtime) >{282}< >{334}< >{383}< >{390}< >{568}< >{767}< >{769}< >{794}< >{954}< [entry] [rendered] > ./ main - runtime modules 6.66 KiB 9 modules + runtime modules 6.72 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, cccccccccccccccccccccccccccccc, main) name-too-long/282.js (id hint: vendors) 20 bytes <{179}> ={334}= ={383}= ={390}= ={568}= ={658}= ={751}= ={766}= ={767}= ={769}= ={794}= ={954}= >{137}< >{568}< [initial] [rendered] split chunk (cache group: defaultVendors) > ./a ./index.js 1:0-47 @@ -3802,9 +3810,9 @@ name-too-long: > ./c cccccccccccccccccccccccccccccc runtime modules 2.76 KiB 4 modules ./c.js 116 bytes [built] [code generated] - chunk (runtime: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) name-too-long/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) 165 bytes (javascript) 7.58 KiB (runtime) ={282}= ={390}= ={767}= ={954}= >{137}< >{568}< [entry] [rendered] + chunk (runtime: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) name-too-long/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.js (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) 165 bytes (javascript) 7.63 KiB (runtime) ={282}= ={390}= ={767}= ={954}= >{137}< >{568}< [entry] [rendered] > ./a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - runtime modules 7.58 KiB 10 modules + runtime modules 7.63 KiB 10 modules ./a.js 165 bytes [built] [code generated] chunk (runtime: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) name-too-long/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.js (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) 116 bytes (javascript) 2.76 KiB (runtime) ={282}= ={568}= ={767}= ={954}= [entry] [rendered] > ./b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb @@ -3834,8 +3842,8 @@ name-too-long: name-too-long (webpack x.x.x) compiled successfully custom-chunks-filter: - Entrypoint main 11.4 KiB = custom-chunks-filter/main.js - Entrypoint a 12.5 KiB = custom-chunks-filter/a.js + Entrypoint main 11.5 KiB = custom-chunks-filter/main.js + Entrypoint a 12.6 KiB = custom-chunks-filter/a.js Entrypoint b 8.14 KiB = custom-chunks-filter/282.js 414 bytes custom-chunks-filter/954.js 414 bytes custom-chunks-filter/568.js 414 bytes custom-chunks-filter/767.js 414 bytes custom-chunks-filter/b.js 6.52 KiB Entrypoint c 8.14 KiB = custom-chunks-filter/282.js 414 bytes custom-chunks-filter/769.js 414 bytes custom-chunks-filter/568.js 414 bytes custom-chunks-filter/767.js 414 bytes custom-chunks-filter/c.js 6.52 KiB chunk (runtime: b) custom-chunks-filter/b.js (b) 116 bytes (javascript) 2.76 KiB (runtime) ={282}= ={568}= ={767}= ={954}= [entry] [rendered] @@ -3845,9 +3853,9 @@ custom-chunks-filter: chunk (runtime: a, main) custom-chunks-filter/async-g.js (async-g) 45 bytes <{282}> <{767}> <{786}> <{794}> <{954}> ={568}= [rendered] > ./g ./a.js 6:0-47 ./g.js 45 bytes [built] [code generated] - chunk (runtime: main) custom-chunks-filter/main.js (main) 147 bytes (javascript) 6.67 KiB (runtime) >{282}< >{334}< >{383}< >{568}< >{767}< >{769}< >{794}< >{954}< [entry] [rendered] + chunk (runtime: main) custom-chunks-filter/main.js (main) 147 bytes (javascript) 6.72 KiB (runtime) >{282}< >{334}< >{383}< >{568}< >{767}< >{769}< >{794}< >{954}< [entry] [rendered] > ./ main - runtime modules 6.67 KiB 9 modules + runtime modules 6.72 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: b, c, main) custom-chunks-filter/282.js (id hint: vendors) 20 bytes <{179}> ={128}= ={334}= ={383}= ={459}= ={568}= ={767}= ={769}= ={794}= ={954}= >{137}< >{568}< [initial] [rendered] split chunk (cache group: defaultVendors) > ./a ./index.js 1:0-47 @@ -3884,9 +3892,9 @@ custom-chunks-filter: > ./c ./index.js 3:0-47 > ./c c ./node_modules/z.js 20 bytes [built] [code generated] - chunk (runtime: a) custom-chunks-filter/a.js (a) 245 bytes (javascript) 6.66 KiB (runtime) >{137}< >{568}< [entry] [rendered] + chunk (runtime: a) custom-chunks-filter/a.js (a) 245 bytes (javascript) 6.71 KiB (runtime) >{137}< >{568}< [entry] [rendered] > ./a a - runtime modules 6.66 KiB 9 modules + runtime modules 6.71 KiB 9 modules dependent modules 60 bytes [dependent] 3 modules ./a.js + 1 modules 185 bytes [built] [code generated] chunk (runtime: main) custom-chunks-filter/async-a.js (async-a) 185 bytes <{179}> ={282}= ={767}= ={954}= >{137}< >{568}< [rendered] @@ -3900,8 +3908,8 @@ custom-chunks-filter: custom-chunks-filter (webpack x.x.x) compiled successfully custom-chunks-filter-in-cache-groups: - Entrypoint main 11.2 KiB = custom-chunks-filter-in-cache-groups/main.js - Entrypoint a 14.5 KiB = custom-chunks-filter-in-cache-groups/176.js 864 bytes custom-chunks-filter-in-cache-groups/a.js 13.7 KiB + Entrypoint main 11.3 KiB = custom-chunks-filter-in-cache-groups/main.js + Entrypoint a 14.6 KiB = custom-chunks-filter-in-cache-groups/176.js 864 bytes custom-chunks-filter-in-cache-groups/a.js 13.8 KiB Entrypoint b 8.45 KiB = custom-chunks-filter-in-cache-groups/vendors.js 1.05 KiB custom-chunks-filter-in-cache-groups/b.js 7.4 KiB Entrypoint c 8.45 KiB = custom-chunks-filter-in-cache-groups/vendors.js 1.05 KiB custom-chunks-filter-in-cache-groups/c.js 7.4 KiB chunk (runtime: b) custom-chunks-filter-in-cache-groups/b.js (b) 156 bytes (javascript) 2.76 KiB (runtime) ={216}= [entry] [rendered] @@ -3924,9 +3932,9 @@ custom-chunks-filter-in-cache-groups: ./node_modules/x.js 20 bytes [built] [code generated] ./node_modules/y.js 20 bytes [built] [code generated] ./node_modules/z.js 20 bytes [built] [code generated] - chunk (runtime: main) custom-chunks-filter-in-cache-groups/main.js (main) 147 bytes (javascript) 6.69 KiB (runtime) >{216}< >{334}< >{383}< >{794}< [entry] [rendered] + chunk (runtime: main) custom-chunks-filter-in-cache-groups/main.js (main) 147 bytes (javascript) 6.74 KiB (runtime) >{216}< >{334}< >{383}< >{794}< [entry] [rendered] > ./ main - runtime modules 6.69 KiB 9 modules + runtime modules 6.74 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: b, c, main) custom-chunks-filter-in-cache-groups/vendors.js (vendors) (id hint: vendors) 60 bytes <{179}> ={128}= ={334}= ={383}= ={459}= ={794}= >{137}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./a ./index.js 1:0-47 @@ -3959,12 +3967,12 @@ custom-chunks-filter-in-cache-groups: runtime modules 2.76 KiB 4 modules dependent modules 40 bytes [dependent] 2 modules ./c.js 116 bytes [built] [code generated] - chunk (runtime: a) custom-chunks-filter-in-cache-groups/a.js (a) 205 bytes (javascript) 7.57 KiB (runtime) ={176}= >{137}< [entry] [rendered] + chunk (runtime: a) custom-chunks-filter-in-cache-groups/a.js (a) 205 bytes (javascript) 7.62 KiB (runtime) ={176}= >{137}< [entry] [rendered] > ./a a > x a > y a > z a - runtime modules 7.57 KiB 10 modules + runtime modules 7.62 KiB 10 modules dependent modules 20 bytes [dependent] 1 module ./a.js + 1 modules 185 bytes [built] [code generated] chunk (runtime: main) custom-chunks-filter-in-cache-groups/async-a.js (async-a) 205 bytes <{179}> ={216}= >{137}< [rendered] @@ -3975,7 +3983,7 @@ custom-chunks-filter-in-cache-groups: `; exports[`StatsTestCases should print correct stats for split-chunks-automatic-name 1`] = ` -"Entrypoint main 11.5 KiB = main.js +"Entrypoint main 11.6 KiB = main.js chunk (runtime: main) async-a.js (async-a) 136 bytes <{main}> ={common-d_js}= ={common-node_modules_x_js}= ={common-node_modules_y_js}= [rendered] > ./a ./index.js 1:0-47 ./a.js + 1 modules 136 bytes [built] [code generated] @@ -4006,18 +4014,18 @@ chunk (runtime: main) common-node_modules_y_js.js (id hint: common) 20 bytes <{m chunk (runtime: main) common-node_modules_z_js.js (id hint: common) 20 bytes <{main}> ={async-c}= ={common-d_js}= ={common-f_js}= ={common-node_modules_x_js}= [rendered] split chunk (cache group: b) > ./c ./index.js 3:0-47 ./node_modules/z.js 20 bytes [built] [code generated] -chunk (runtime: main) main.js (main) 147 bytes (javascript) 6.57 KiB (runtime) >{async-a}< >{async-b}< >{async-c}< >{common-d_js}< >{common-f_js}< >{common-node_modules_x_js}< >{common-node_modules_y_js}< >{common-node_modules_z_js}< [entry] [rendered] +chunk (runtime: main) main.js (main) 147 bytes (javascript) 6.62 KiB (runtime) >{async-a}< >{async-b}< >{async-c}< >{common-d_js}< >{common-f_js}< >{common-node_modules_x_js}< >{common-node_modules_y_js}< >{common-node_modules_z_js}< [entry] [rendered] > ./ main - runtime modules 6.57 KiB 9 modules + runtime modules 6.62 KiB 9 modules ./index.js 147 bytes [built] [code generated] production (webpack x.x.x) compiled successfully" `; exports[`StatsTestCases should print correct stats for split-chunks-chunk-name 1`] = ` -"Entrypoint main 11.2 KiB = default/main.js -chunk (runtime: main) default/main.js (main) 192 bytes (javascript) 6.63 KiB (runtime) >{334}< >{709}< >{794}< [entry] [rendered] +"Entrypoint main 11.3 KiB = default/main.js +chunk (runtime: main) default/main.js (main) 192 bytes (javascript) 6.68 KiB (runtime) >{334}< >{709}< >{794}< [entry] [rendered] > ./ main - runtime modules 6.63 KiB 9 modules + runtime modules 6.68 KiB 9 modules ./index.js 192 bytes [built] [code generated] chunk (runtime: main) default/async-b.js (async-b) (id hint: vendors) 122 bytes <{179}> [rendered] reused as split chunk (cache group: defaultVendors) > b ./index.js 2:0-45 @@ -4033,7 +4041,7 @@ webpack x.x.x compiled successfully" `; exports[`StatsTestCases should print correct stats for split-chunks-combinations 1`] = ` -"Entrypoint main 11.6 KiB = main.js +"Entrypoint main 11.7 KiB = main.js chunk (runtime: main) async-d.js (async-d) 132 bytes <{179}> [rendered] > ./d ./index.js 4:0-47 dependent modules 87 bytes [dependent] 1 module @@ -4042,9 +4050,9 @@ chunk (runtime: main) async-g.js (async-g) 132 bytes <{179}> [rendered] > ./g ./index.js 7:0-47 dependent modules 87 bytes [dependent] 1 module ./g.js 45 bytes [built] [code generated] -chunk (runtime: main) main.js (main) 343 bytes (javascript) 6.69 KiB (runtime) >{31}< >{137}< >{206}< >{334}< >{383}< >{449}< >{794}< >{804}< [entry] [rendered] +chunk (runtime: main) main.js (main) 343 bytes (javascript) 6.74 KiB (runtime) >{31}< >{137}< >{206}< >{334}< >{383}< >{449}< >{794}< >{804}< [entry] [rendered] > ./ main - runtime modules 6.69 KiB 9 modules + runtime modules 6.74 KiB 9 modules ./index.js 343 bytes [built] [code generated] chunk (runtime: main) async-f.js (async-f) 132 bytes <{179}> [rendered] > ./f ./index.js 6:0-47 @@ -4073,10 +4081,10 @@ webpack x.x.x compiled successfully" `; exports[`StatsTestCases should print correct stats for split-chunks-issue-6413 1`] = ` -"Entrypoint main 11.3 KiB = main.js -chunk (runtime: main) main.js (main) 147 bytes (javascript) 6.63 KiB (runtime) >{282}< >{334}< >{383}< >{543}< >{794}< [entry] [rendered] +"Entrypoint main 11.4 KiB = main.js +chunk (runtime: main) main.js (main) 147 bytes (javascript) 6.68 KiB (runtime) >{282}< >{334}< >{383}< >{543}< >{794}< [entry] [rendered] > ./ main - runtime modules 6.63 KiB 9 modules + runtime modules 6.68 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: main) 282.js (id hint: vendors) 20 bytes <{179}> ={334}= ={383}= ={543}= ={794}= [rendered] split chunk (cache group: defaultVendors) > ./a ./index.js 1:0-47 @@ -4101,10 +4109,10 @@ default (webpack x.x.x) compiled successfully" `; exports[`StatsTestCases should print correct stats for split-chunks-issue-6696 1`] = ` -"Entrypoint main 13.3 KiB = vendors.js 414 bytes main.js 12.9 KiB -chunk (runtime: main) main.js (main) 134 bytes (javascript) 7.55 KiB (runtime) ={216}= >{334}< >{794}< [entry] [rendered] +"Entrypoint main 13.4 KiB = vendors.js 414 bytes main.js 13 KiB +chunk (runtime: main) main.js (main) 134 bytes (javascript) 7.6 KiB (runtime) ={216}= >{334}< >{794}< [entry] [rendered] > ./ main - runtime modules 7.55 KiB 10 modules + runtime modules 7.6 KiB 10 modules ./index.js 134 bytes [built] [code generated] chunk (runtime: main) vendors.js (vendors) (id hint: vendors) 20 bytes ={179}= >{334}< >{794}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors) > ./ main @@ -4122,11 +4130,11 @@ default (webpack x.x.x) compiled successfully" exports[`StatsTestCases should print correct stats for split-chunks-issue-7401 1`] = ` "Entrypoint a 6.42 KiB = 282.js 414 bytes a.js 6.02 KiB -Entrypoint b 10.8 KiB = b.js +Entrypoint b 10.9 KiB = b.js Chunk Group c 797 bytes = 282.js 414 bytes c.js 383 bytes -chunk (runtime: b) b.js (b) 43 bytes (javascript) 6.59 KiB (runtime) >{282}< >{459}< [entry] [rendered] +chunk (runtime: b) b.js (b) 43 bytes (javascript) 6.64 KiB (runtime) >{282}< >{459}< [entry] [rendered] > ./b b - runtime modules 6.59 KiB 9 modules + runtime modules 6.64 KiB 9 modules ./b.js 43 bytes [built] [code generated] chunk (runtime: a, b) 282.js (id hint: vendors) 20 bytes <{128}> ={459}= ={786}= [initial] [rendered] split chunk (cache group: defaultVendors) > ./c ./b.js 1:0-41 @@ -4143,13 +4151,13 @@ default (webpack x.x.x) compiled successfully" `; exports[`StatsTestCases should print correct stats for split-chunks-keep-remaining-size 1`] = ` -"Entrypoint main 11.3 KiB = default/main.js +"Entrypoint main 11.4 KiB = default/main.js chunk (runtime: main) default/async-d.js (async-d) 84 bytes <{179}> ={782}= [rendered] > ./d ./index.js 4:0-47 ./d.js 84 bytes [built] [code generated] -chunk (runtime: main) default/main.js (main) 196 bytes (javascript) 6.66 KiB (runtime) >{31}< >{334}< >{383}< >{782}< >{794}< >{821}< [entry] [rendered] +chunk (runtime: main) default/main.js (main) 196 bytes (javascript) 6.71 KiB (runtime) >{31}< >{334}< >{383}< >{782}< >{794}< >{821}< [entry] [rendered] > ./ main - runtime modules 6.66 KiB 9 modules + runtime modules 6.71 KiB 9 modules ./index.js 196 bytes [built] [code generated] chunk (runtime: main) default/async-b.js (async-b) 50 bytes <{179}> ={821}= [rendered] > ./b ./index.js 2:0-47 @@ -4464,10 +4472,10 @@ zero-min: zero-min (webpack x.x.x) compiled successfully max-async-size: - Entrypoint main 15.9 KiB = max-async-size-main.js - chunk (runtime: main) max-async-size-main.js (main) 2.46 KiB (javascript) 6.94 KiB (runtime) >{342}< >{385}< >{820}< >{920}< [entry] [rendered] + Entrypoint main 16 KiB = max-async-size-main.js + chunk (runtime: main) max-async-size-main.js (main) 2.46 KiB (javascript) 6.99 KiB (runtime) >{342}< >{385}< >{820}< >{920}< [entry] [rendered] > ./async main - runtime modules 6.94 KiB 10 modules + runtime modules 6.99 KiB 10 modules dependent modules 2.09 KiB [dependent] 6 modules ./async/index.js 386 bytes [built] [code generated] chunk (runtime: main) max-async-size-async-b-77a8c116.js (async-b-77a8c116) 1.57 KiB <{179}> ={385}= ={820}= ={920}= [rendered] @@ -4580,13 +4588,13 @@ only-async: `; exports[`StatsTestCases should print correct stats for split-chunks-min-size-reduction 1`] = ` -"Entrypoint main 11.4 KiB = default/main.js +"Entrypoint main 11.5 KiB = default/main.js chunk (runtime: main) default/async-d.js (async-d) 50 bytes <{179}> ={821}= [rendered] > ./d ./index.js 4:0-47 ./d.js 50 bytes [built] [code generated] -chunk (runtime: main) default/main.js (main) 245 bytes (javascript) 6.67 KiB (runtime) >{31}< >{334}< >{383}< >{449}< >{794}< >{821}< [entry] [rendered] +chunk (runtime: main) default/main.js (main) 245 bytes (javascript) 6.73 KiB (runtime) >{31}< >{334}< >{383}< >{449}< >{794}< >{821}< [entry] [rendered] > ./ main - runtime modules 6.67 KiB 9 modules + runtime modules 6.73 KiB 9 modules ./index.js 245 bytes [built] [code generated] chunk (runtime: main) default/async-b.js (async-b) 176 bytes <{179}> [rendered] > ./b ./index.js 2:0-47 @@ -4617,9 +4625,9 @@ chunk (runtime: main) default/118.js 150 bytes <{179}> ={334}= ={383}= [rendered > ./c ./index.js 3:0-47 ./d.js 63 bytes [built] [code generated] ./f.js 87 bytes [built] [code generated] -chunk (runtime: main) default/main.js (main) 147 bytes (javascript) 6.64 KiB (runtime) >{118}< >{334}< >{383}< >{794}< [entry] [rendered] +chunk (runtime: main) default/main.js (main) 147 bytes (javascript) 6.7 KiB (runtime) >{118}< >{334}< >{383}< >{794}< [entry] [rendered] > ./ main - runtime modules 6.64 KiB 9 modules + runtime modules 6.7 KiB 9 modules ./index.js 147 bytes [built] [code generated] chunk (runtime: main) default/async-b.js (async-b) 158 bytes <{179}> ={118}= [rendered] > ./b ./index.js 2:0-47 @@ -4750,8 +4758,8 @@ webpack x.x.x compiled with 1 warning in X ms" `; exports[`StatsTestCases should print correct stats for wasm-explorer-examples-sync 1`] = ` -"assets by path *.js 21.7 KiB - asset bundle.js 16.2 KiB [emitted] (name: main) +"assets by path *.js 21.8 KiB + asset bundle.js 16.3 KiB [emitted] (name: main) asset 325.bundle.js 3.9 KiB [emitted] asset 795.bundle.js 557 bytes [emitted] asset 526.bundle.js 366 bytes [emitted] (id hint: vendors) @@ -4767,8 +4775,8 @@ assets by path *.wasm 1.37 KiB asset 0301cb3f9f4151b567f5.module.wasm 120 bytes [emitted] [immutable] chunk (runtime: main) 20.bundle.js 50 bytes (javascript) 531 bytes (webassembly) [rendered] ./duff.wasm 50 bytes (javascript) 531 bytes (webassembly) [built] [code generated] -chunk (runtime: main) bundle.js (main) 586 bytes (javascript) 9.12 KiB (runtime) [entry] [rendered] - runtime modules 9.12 KiB 11 modules +chunk (runtime: main) bundle.js (main) 586 bytes (javascript) 9.18 KiB (runtime) [entry] [rendered] + runtime modules 9.18 KiB 11 modules ./index.js 586 bytes [built] [code generated] chunk (runtime: main) 189.bundle.js 50 bytes (javascript) 156 bytes (webassembly) [rendered] ./Q_rsqrt.wasm 50 bytes (javascript) 156 bytes (webassembly) [built] [code generated] @@ -4782,7 +4790,7 @@ chunk (runtime: main) 526.bundle.js (id hint: vendors) 34 bytes [rendered] split chunk (runtime: main) 795.bundle.js 110 bytes (javascript) 444 bytes (webassembly) [rendered] ./fact.wasm 50 bytes (javascript) 154 bytes (webassembly) [built] [code generated] ./fast-math.wasm 60 bytes (javascript) 290 bytes (webassembly) [built] [code generated] -runtime modules 9.12 KiB 11 modules +runtime modules 9.18 KiB 11 modules cacheable modules 2.31 KiB (javascript) 1.37 KiB (webassembly) webassembly modules 310 bytes (javascript) 1.37 KiB (webassembly) ./Q_rsqrt.wasm 50 bytes (javascript) 156 bytes (webassembly) [built] [code generated] @@ -4799,9 +4807,9 @@ webpack x.x.x compiled successfully in X ms" `; exports[`StatsTestCases should print correct stats for worker-public-path 1`] = ` -"asset main-27d65b836727f9226214.js 3.51 KiB [emitted] [immutable] (name: main) +"asset main-96fbc03a7e45e354f81a.js 3.59 KiB [emitted] [immutable] (name: main) asset 442-579eebb6602aecc20b13.js 219 bytes [emitted] [immutable] -runtime modules 1.75 KiB 5 modules +runtime modules 1.81 KiB 5 modules cacheable modules 250 bytes ./index.js 115 bytes [built] [code generated] ./worker.js 135 bytes [built] [code generated] diff --git a/test/cases/loaders/issue-10725/loader.js b/test/cases/loaders/issue-10725/loader.js index af9af2d2418..ff2b347224d 100644 --- a/test/cases/loaders/issue-10725/loader.js +++ b/test/cases/loaders/issue-10725/loader.js @@ -1,5 +1,3 @@ -const { getRemainingRequest, stringifyRequest } = require("loader-utils"); - const loaderPath = require.resolve("./loader"); /** @type {import("../../../../").LoaderDefinition} */ @@ -12,12 +10,10 @@ export default answer; `; } - const matchResource = `${this.resourcePath}.js`; - const loader = `${loaderPath}?load`; - const remaining = getRemainingRequest(this); - const request = JSON.parse( - stringifyRequest(this, `${matchResource}!=!${loader}!${remaining}`) - ); + const matchResource = `${this.utils.contextify(this.context, this.resourcePath)}.js`; + const loader = `${this.utils.contextify(this.context, loaderPath)}?load`; + const remaining = this.utils.contextify(this.context, this.remainingRequest); + const request = `${matchResource}!=!${loader}!${remaining}`; this.async(); this.loadModule(request, (err, source) => { diff --git a/test/cases/wasm/two-files-loader/wrapper-loader.js b/test/cases/wasm/two-files-loader/wrapper-loader.js index 827857a6b8a..6ffbf502972 100644 --- a/test/cases/wasm/two-files-loader/wrapper-loader.js +++ b/test/cases/wasm/two-files-loader/wrapper-loader.js @@ -1,12 +1,9 @@ -const stringifyRequest = require("loader-utils").stringifyRequest; - /** @type {import("../../../../").PitchLoaderDefinitionFunction} */ module.exports.pitch = function (remainingRequest) { return ` - import { getString as _getString, memory } from ${stringifyRequest( - this, - `${this.resourcePath}.wat!=!${remainingRequest}` - )}; + import { getString as _getString, memory } from ${ + JSON.stringify(`${this.utils.contextify(this.context, this.resourcePath)}.wat!=!${this.utils.contextify(this.context, remainingRequest)}`) + }; export function getString() { const strBuf = new Uint8Array(memory.buffer, _getString()); diff --git a/test/cases/wasm/two-files-loader/wrapper-loader2.js b/test/cases/wasm/two-files-loader/wrapper-loader2.js index dde8826aa73..6ffbf502972 100644 --- a/test/cases/wasm/two-files-loader/wrapper-loader2.js +++ b/test/cases/wasm/two-files-loader/wrapper-loader2.js @@ -1,12 +1,9 @@ -const stringifyRequest = require("loader-utils").stringifyRequest; - /** @type {import("../../../../").PitchLoaderDefinitionFunction} */ module.exports.pitch = function (remainingRequest) { return ` - import { getString as _getString, memory } from ${stringifyRequest( - this, - `${this.resourcePath}.wasm!=!wast-loader!${remainingRequest}` - )}; + import { getString as _getString, memory } from ${ + JSON.stringify(`${this.utils.contextify(this.context, this.resourcePath)}.wat!=!${this.utils.contextify(this.context, remainingRequest)}`) + }; export function getString() { const strBuf = new Uint8Array(memory.buffer, _getString()); diff --git a/test/configCases/css/conflicting-order/warnings.js b/test/configCases/css/conflicting-order/warnings.js index 76f82133850..bf0f21a942d 100644 --- a/test/configCases/css/conflicting-order/warnings.js +++ b/test/configCases/css/conflicting-order/warnings.js @@ -1 +1,3 @@ -module.exports = [[/Conflicting order between \.\/b\.css and \.\/c\.css/]]; +module.exports = [ + [/Conflicting order between css \.\/b\.css and css \.\/c\.css/] +]; diff --git a/test/configCases/css/css-import/external.css b/test/configCases/css/css-import/external.css new file mode 100644 index 00000000000..2da62ee0768 --- /dev/null +++ b/test/configCases/css/css-import/external.css @@ -0,0 +1,3 @@ +body { + externally-imported: true; +} diff --git a/test/configCases/css/css-import/img.png b/test/configCases/css/css-import/img.png new file mode 100644 index 00000000000..b74b839e2b8 Binary files /dev/null and b/test/configCases/css/css-import/img.png differ diff --git a/test/configCases/css/css-import/imported.css b/test/configCases/css/css-import/imported.css new file mode 100644 index 00000000000..828bff206d5 --- /dev/null +++ b/test/configCases/css/css-import/imported.css @@ -0,0 +1,3 @@ +body { + background: green; +} diff --git a/test/configCases/css/css-import/index.js b/test/configCases/css/css-import/index.js new file mode 100644 index 00000000000..3b26850a1e7 --- /dev/null +++ b/test/configCases/css/css-import/index.js @@ -0,0 +1,14 @@ +import "./style.css"; + +it("should compile", done => { + const links = document.getElementsByTagName("link"); + const css = []; + + // Skip first because import it by default + for (const link of links.slice(1)) { + css.push(link.sheet.css); + } + + expect(css).toMatchSnapshot(); + done(); +}); diff --git a/test/configCases/css/css-import/layer.css b/test/configCases/css/css-import/layer.css new file mode 100644 index 00000000000..317776dde97 --- /dev/null +++ b/test/configCases/css/css-import/layer.css @@ -0,0 +1,3 @@ +.class { + content: "layer.css"; +} diff --git a/test/configCases/css/css-import/print.css b/test/configCases/css/css-import/print.css new file mode 100644 index 00000000000..5fa2bfe59ff --- /dev/null +++ b/test/configCases/css/css-import/print.css @@ -0,0 +1,3 @@ +body { + background: black; +} diff --git a/test/configCases/css/css-import/styl'le7.css b/test/configCases/css/css-import/styl'le7.css new file mode 100644 index 00000000000..8e5fc45d459 --- /dev/null +++ b/test/configCases/css/css-import/styl'le7.css @@ -0,0 +1,3 @@ +.class { + content: "style7.css"; +} diff --git a/test/configCases/css/css-import/style.css b/test/configCases/css/css-import/style.css new file mode 100644 index 00000000000..0cb51c78538 --- /dev/null +++ b/test/configCases/css/css-import/style.css @@ -0,0 +1,196 @@ +@import "print.css?foo=1"; +@import url("print.css?foo=2"); +@import "print.css?foo=3" layer(default); +@import url("print.css?foo=4") layer(default); +@import "print.css?foo=5" supports(display: flex); +@import url("print.css?foo=6") supports(display: flex); +@import "print.css?foo=7" screen and (min-width: 400px); +@import url("print.css?foo=8") screen and (min-width: 400px); +@import "print.css?foo=9" layer(default) supports(display: flex); +@import "print.css?foo=10" layer(default) screen and (min-width: 400px); +@import "print.css?foo=11" supports(display: flex) screen and (min-width: 400px); +@import "print.css?foo=12" layer(default) supports(display: flex) screen and (min-width: 400px); +@import "print.css?foo=13"layer(default)supports(display: flex)screen and (min-width: 400px); +@import url(print.css?foo=14)layer(default)supports(display: flex)screen and (min-width: 400px); +@import url("print.css?foo=15")layer(default)supports(display: flex)screen and (min-width: 400px); +@import url(print.css?foo=16)layer(default)supports(background: url(./img.png))screen and (min-width: 400px); +@import url(print.css?foo=17)layer(default)supports(background: url("./img.png"))screen and (min-width: 400px); +@import url(print.css?foo=18)screen; +@import url("print.css?foo=19")screen; +@import "print.css?foo=20"screen; +@import url(print.css?foo=18) screen ; +@import url("print.css?foo=19") screen ; +@import "print.css?foo=20" screen ; +@import "print.css?foo=21" ; + +/* Has the same URL */ +@import "imported.css"; +@import "imported.css" layer(base); +@import "imported.css" supports(display: flex); +@import "imported.css" screen, print; + +@import url(style2.css?foo=1); +@import url('style2.css?foo=2'); +@import url("style2.css?foo=3"); +@IMPORT url(style2.css?foo=4); +@import URL(style2.css?foo=5); +@import url(style2.css?foo=6 ); +@import url( style2.css?foo=7); +@import url( style2.css?foo=8 ); +@import url( +style2.css?foo=9 +); +/*@import url(); +@import url(''); +@import url(""); +@import ''; +@import ""; +@import " "; +@import "\ +"; +@import url(); +@import url(''); +@import url("");*/ +@import url(style2.css) screen and (orientation:landscape); +@import url(style2.css) SCREEN AND (ORIENTATION: LANDSCAPE); +@import url(style2.css)screen and (orientation:landscape); +@import url(style2.css) screen and (orientation:landscape); +@import url(style2.css) screen and (orientation:landscape); +@import url(style2.css) (min-width: 100px); +@import url(https://test.cases/path/../../../../configCases/css/css-import/external.css); +/*@import url(https://test.cases/path/../../../../configCases/css/css-import/external.css) screen and (orientation:landscape); +@import url(https://test.cases/path/../../../../configCases/css/css-import/external.css) screen and (orientation:landscape);*/ +/*@import url("//example.com/style.css");*/ +/*@import url(~package/test.css);*/ +/*@import ;*/ +/*@import foo-bar;*/ +/*@import-normalize;*/ +/*@import url('http://') :root {}*/ +/*@import url('query.css?foo=1&bar=1');*/ +/*@import url('other-query.css?foo=1&bar=1#hash');*/ +/*@import url('other-query.css?foo=1&bar=1#hash') screen and (orientation:landscape);*/ +/*@import url('https://fonts.googleapis.com/css?family=Roboto');*/ +/*@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC');*/ +/*@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto');*/ + +@import './sty\ +le3.css?bar=1'; +@import './sty\ +\ +\ +le3.css?bar=2'; +@import url('./sty\ +le3.css?bar=3'); +@import url('./sty\ +\ +\ +le3.css?=bar4'); + +@import "./styl'le7.css"; +@import url("./styl'le7.css?foo=1"); +@import './styl\'le7.css'; +@import url('./styl\'le7.css'); +@import './test test.css'; +@import url('./test test.css?foo=1'); +@import './test\ test.css?foo=2'; +@import url('./test\ test.css?foo=3'); +@import './test%20test.css?foo=4'; +@import url('./test%20test.css?foo=5'); +@import './\74\65\73\74.css'; +@import url('./\74\65\73\74.css?foo=1'); +@import './t\65\73\74.css?foo=2'; +@import url('./t\65\73\74.css?foo=3'); +@import url(./test\ test.css?foo=6); +@import url(./t\65st%20test.css?foo=7); +@import url('./t\65st%20test.css?foo=8'); +@import url("./t\65st%20test.css?foo=9"); +@import "./t\65st%20test.css?fpp=10"; +@import './t\65st%20test.css?foo=11'; +@import url( style6.css?foo=bazz ); +/*@import nourl(test.css); +@import '\ +\ +\ +'; +@import url('!!../../helpers/string-loader.js?esModule=false!~package/tilde.css');*/ +@import url(style4.css?foo=bar); +@import url(style4.css?foo=bar#hash); +@import url(style4.css?#hash); +@import "style4.css?foo=1" supports(display: flex); +@import "style4.css?foo=2" supports(display: flex) screen and (orientation:landscape); + +@import " ./style4.css?foo=3 "; +@import url(' ./style4.css?foo=4 '); +@import url( ./style4.css?foo=5 ); + +/*@import url(' https://fonts.googleapis.com/css?family=Roboto ');*/ +/*@import url('!!../../helpers/string-loader.js?esModule=false!');*/ +/*@import url(' !!../../helpers/string-loader.js?esModule=false!~package/tilde.css ');*/ +@import url(data:text/css;charset=utf-8,a%20%7B%0D%0A%20%20color%3A%20red%3B%0D%0A%7D); +@import url(data:text/css;charset=utf-8,a%20%7B%0D%0A%20%20color%3A%20blue%3B%0D%0A%7D) screen and (orientation:landscape); + +@import url("./style5.css?foo=1") supports(); +@import url("./style5.css?foo=2") supports( ); +@import url("./style5.css?foo=3") supports(unknown); +@import url("./style5.css?foo=4") supports(display: flex); +@import url("./style5.css?foo=5") supports(display: flex !important); +@import url("./style5.css?foo=6") supports(display: flex) screen and (min-width: 400px); +@import url("./style5.css?foo=7") supports(selector(a b)); +@import url("./style5.css?foo=8") supports( display: flex ); +@import url("./layer.css?foo=1") layer; +@import url("./layer.css?foo=2") layer(default); +@import url("./layer.css?foo=3") layer(default) supports(display: flex) screen and (min-width: 400px); +@import url("./layer.css?foo=3") layer supports(display: flex) screen and (min-width: 400px); +@import url("./layer.css?foo=4") layer() supports(display: flex) screen and (min-width: 400px); +@import url("./layer.css?foo=5") layer(); +@import url("./layer.css?foo=6") layer( foo.bar.baz ); +@import url("./layer.css?foo=7") layer( ); +/*@import url("http://example.com/style.css") supports(display: flex) screen and (min-width: 400px);*/ +@import url("./style6.css")layer(default)supports(display: flex)screen and (min-width:400px); +@import "./style6.css?foo=1"layer(default)supports(display: flex)screen and (min-width:400px); +@import "./style6.css?foo=2"supports(display: flex)screen and (min-width:400px); +@import "./style6.css?foo=3"screen and (min-width:400px); +@import url("./style6.css?foo=4")screen and (min-width:400px); +@import url(./style6.css?foo=5)screen and (min-width:400px); +@import url("./style6.css?foo=6") layer( default ) supports( display : flex ) screen and ( min-width : 400px ); +@import URL("./style6.css?foo=7") LAYER(DEFAULT) SUPPORTS(DISPLAY: FLEX) SCREEN AND (MIN-WIDTH: 400PX); +@import url("./style6.css?foo=8") LAYER SUPPORTS(DISPLAY: FLEX) SCREEN AND (MIN-WIDTH: 400PX); +@import url("./style6.css?foo=9") /* Comment */ layer(/* Comment */default/* Comment */) /* Comment */ supports(/* Comment */display/* Comment */:/* Comment */ flex/* Comment */)/* Comment */ screen/* Comment */ and/* Comment */ (/* Comment */min-width/* Comment */: /* Comment */400px/* Comment */); +@import url(style6.css?foo=10) /* Comment */; +@import url(style6.css?foo=11) /* Comment */ /* Comment */; +@import url(style6.css?foo=12) /* Comment *//* Comment */; +@import url(style6.css?foo=13)/* Comment *//* Comment */; +@import +url(style6.css?foo=14) +/* Comment */ +/* Comment */; +@import /* Comment */ url(style6.css?foo=15) /* Comment */; +@import url(style6.css?foo=16) /* Comment */ print and (orientation:landscape); +@import url(style6.css?foo=17)/* Comment */print and (orientation:landscape)/* Comment */; +@import /* Comment */ url(style6.css?foo=18) /* Comment */ print and (orientation:landscape); + +@import url("./style8.css") screen and (min-width: 400px); +@import url("./style8.css") (prefers-color-scheme: dark); +@import url("./style8.css") supports(display: flex); +@import url("./style8.css") supports(((display: flex))); +@import url("./style8.css") supports(((display: inline-grid))) screen and (((min-width: 400px))); +@import url("./style8.css") supports(display: flex); +@import url('./style8.css') supports(display: grid); +@import url("./style8.css") supports(display: flex) screen and (min-width: 400px); +@import url("./style8.css") layer(framework); +@import url("./style8.css") layer(default); +@import url("./style8.css") layer(base); +@import url("./style8.css") layer(default) supports(display: flex); +@import url("./style8.css") layer(default) supports(display: flex) screen and (min-width: 400px); + +/* anonymous */ +@import "style2.css" layer(); +@import "style2.css" layer; + +/* All unknown parse as media for compatibility */ +@import url("./style9.css") unknown(default) unknown(display: flex) unknown; +@import url("./style9.css") unknown(default); + +body { + background: red; +} diff --git a/test/configCases/css/css-import/style2.css b/test/configCases/css/css-import/style2.css new file mode 100644 index 00000000000..195b6bcf6d2 --- /dev/null +++ b/test/configCases/css/css-import/style2.css @@ -0,0 +1,3 @@ +a { + color: red; +} diff --git a/test/configCases/css/css-import/style3.css b/test/configCases/css/css-import/style3.css new file mode 100644 index 00000000000..3da7fa6f9a7 --- /dev/null +++ b/test/configCases/css/css-import/style3.css @@ -0,0 +1,4 @@ +.class { + content: "style.css"; + color: red; +} diff --git a/test/configCases/css/css-import/style4.css b/test/configCases/css/css-import/style4.css new file mode 100644 index 00000000000..ffafcc6bc82 --- /dev/null +++ b/test/configCases/css/css-import/style4.css @@ -0,0 +1,3 @@ +.class { + content: "style4.css"; +} diff --git a/test/configCases/css/css-import/style5.css b/test/configCases/css/css-import/style5.css new file mode 100644 index 00000000000..762f796a624 --- /dev/null +++ b/test/configCases/css/css-import/style5.css @@ -0,0 +1,3 @@ +.class { + content: "style5.css"; +} diff --git a/test/configCases/css/css-import/style6.css b/test/configCases/css/css-import/style6.css new file mode 100644 index 00000000000..07cf8d4947d --- /dev/null +++ b/test/configCases/css/css-import/style6.css @@ -0,0 +1,3 @@ +.class { + content: "style6.css"; +} diff --git a/test/configCases/css/css-import/style8.css b/test/configCases/css/css-import/style8.css new file mode 100644 index 00000000000..cdf5c7ed93a --- /dev/null +++ b/test/configCases/css/css-import/style8.css @@ -0,0 +1,3 @@ +.class { + content: "style8.css"; +} diff --git a/test/configCases/css/css-import/style9.css b/test/configCases/css/css-import/style9.css new file mode 100644 index 00000000000..cdaaa1da655 --- /dev/null +++ b/test/configCases/css/css-import/style9.css @@ -0,0 +1,3 @@ +.class { + content: "style9.css"; +} diff --git a/test/configCases/css/css-import/test test.css b/test/configCases/css/css-import/test test.css new file mode 100644 index 00000000000..1e68c3da01e --- /dev/null +++ b/test/configCases/css/css-import/test test.css @@ -0,0 +1,3 @@ +.class { + content: "test test.css"; +} diff --git a/test/configCases/css/css-import/test.config.js b/test/configCases/css/css-import/test.config.js new file mode 100644 index 00000000000..0590757288f --- /dev/null +++ b/test/configCases/css/css-import/test.config.js @@ -0,0 +1,8 @@ +module.exports = { + moduleScope(scope) { + const link = scope.window.document.createElement("link"); + link.rel = "stylesheet"; + link.href = "bundle0.css"; + scope.window.document.head.appendChild(link); + } +}; diff --git a/test/configCases/css/css-import/test.css b/test/configCases/css/css-import/test.css new file mode 100644 index 00000000000..2c03574bff6 --- /dev/null +++ b/test/configCases/css/css-import/test.css @@ -0,0 +1,3 @@ +.class { + content: "test.css"; +} diff --git a/test/configCases/css/css-import/webpack.config.js b/test/configCases/css/css-import/webpack.config.js new file mode 100644 index 00000000000..cfb8e5c0346 --- /dev/null +++ b/test/configCases/css/css-import/webpack.config.js @@ -0,0 +1,8 @@ +/** @type {import("../../../../").Configuration} */ +module.exports = { + target: "web", + mode: "development", + experiments: { + css: true + } +}; diff --git a/test/configCases/css/css-modules-in-node/index.js b/test/configCases/css/css-modules-in-node/index.js index 7a35129b34e..73c255d96e5 100644 --- a/test/configCases/css/css-modules-in-node/index.js +++ b/test/configCases/css/css-modules-in-node/index.js @@ -68,6 +68,12 @@ it("should allow to create css modules", done => { inSupportScope: prod ? "my-app-491-FO" : "./style.module.css-inSupportScope", + animationName: prod + ? "my-app-491-w3" + : "./style.module.css-animationName", + mozAnimationName: prod + ? "my-app-491-t6" + : "./style.module.css-mozAnimationName" }); } catch (e) { return done(e); diff --git a/test/configCases/css/css-modules/index.js b/test/configCases/css/css-modules/index.js index 3a24fddf147..267c674eb10 100644 --- a/test/configCases/css/css-modules/index.js +++ b/test/configCases/css/css-modules/index.js @@ -9,14 +9,26 @@ it("should allow to create css modules", done => { expect(x).toEqual({ global: undefined, class: prod ? "my-app-491-S" : "./style.module.css-class", - currentWmultiParams: prod ? "my-app-491-yK" : "./style.module.css-local12", - futureWmultiParams: prod ? "my-app-491-Y4" : "./style.module.css-local14", - hasWmultiParams: prod ? "my-app-491-PK" : "./style.module.css-local11", - matchesWmultiParams: prod ? "my-app-491-$Y" : "./style.module.css-local9", - mozAnyWmultiParams: prod ? "my-app-491-TT" : "./style.module.css-local15", - pastWmultiParams: prod ? "my-app-491-P_" : "./style.module.css-local13", - webkitAnyWmultiParams: prod ? "my-app-491-rT" : "./style.module.css-local16", - whereWmultiParams: prod ? "my-app-491-ie" : "./style.module.css-local10", + currentWmultiParams: prod + ? "my-app-491-yK" + : "./style.module.css-local12", + futureWmultiParams: prod + ? "my-app-491-Y4" + : "./style.module.css-local14", + hasWmultiParams: prod ? "my-app-491-PK" : "./style.module.css-local11", + matchesWmultiParams: prod + ? "my-app-491-$Y" + : "./style.module.css-local9", + mozAnyWmultiParams: prod + ? "my-app-491-TT" + : "./style.module.css-local15", + pastWmultiParams: prod ? "my-app-491-P_" : "./style.module.css-local13", + webkitAnyWmultiParams: prod + ? "my-app-491-rT" + : "./style.module.css-local16", + whereWmultiParams: prod + ? "my-app-491-ie" + : "./style.module.css-local10", local: prod ? "my-app-491-Zw my-app-491-yl my-app-491-J_ my-app-491-gc" : "./style.module.css-local1 ./style.module.css-local2 ./style.module.css-local3 ./style.module.css-local4", @@ -71,6 +83,12 @@ it("should allow to create css modules", done => { inSupportScope: prod ? "my-app-491-FO" : "./style.module.css-inSupportScope", + animationName: prod + ? "my-app-491-w3" + : "./style.module.css-animationName", + mozAnimationName: prod + ? "my-app-491-t6" + : "./style.module.css-mozAnimationName" }); } catch (e) { return done(e); diff --git a/test/configCases/css/css-modules/style.module.css b/test/configCases/css/css-modules/style.module.css index 95e41d7edb8..f331c38805d 100644 --- a/test/configCases/css/css-modules/style.module.css +++ b/test/configCases/css/css-modules/style.module.css @@ -225,3 +225,49 @@ color: red; } } + +.a { + animation: 3s animationName; + -webkit-animation: 3s animationName; +} + +.b { + animation: animationName 3s; + -webkit-animation: animationName 3s; +} + +.c { + animation-name: animationName; + -webkit-animation-name: animationName; +} + +.d { + --animation-name: animationName; +} + +@keyframes animationName { + 0% { + background: white; + } + 100% { + background: red; + } +} + +@-webkit-keyframes animationName { + 0% { + background: white; + } + 100% { + background: red; + } +} + +@-moz-keyframes mozAnimationName { + 0% { + background: white; + } + 100% { + background: red; + } +} diff --git a/test/configCases/css/css-modules/use-style.js b/test/configCases/css/css-modules/use-style.js index c2af1382f0a..48b4fc3b8e3 100644 --- a/test/configCases/css/css-modules/use-style.js +++ b/test/configCases/css/css-modules/use-style.js @@ -32,4 +32,6 @@ export default { displayFlexInSupportsInMediaUpperCase: style.displayFlexInSupportsInMediaUpperCase, VARS: `${style["LOCAL-COLOR"]} ${style.VARS} ${style["GLOBAL-COLOR"]} ${style.globalVarsUpperCase}`, inSupportScope: style.inSupportScope, + animationName: style.animationName, + mozAnimationName: style.mozAnimationName, }; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/errors.js b/test/configCases/sharing/consume-module-ignore-warnings/errors.js new file mode 100644 index 00000000000..722d5d0a45f --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/errors.js @@ -0,0 +1 @@ +module.exports = [[/prefix\/deep\/c/]]; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/index.js b/test/configCases/sharing/consume-module-ignore-warnings/index.js new file mode 100644 index 00000000000..43a7d1832d1 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/index.js @@ -0,0 +1,262 @@ +let warnings = []; +let oldWarn; + +beforeEach(done => { + oldWarn = console.warn; + console.warn = m => warnings.push(m); + done(); +}); + +afterEach(done => { + expectWarning(); + console.warn = oldWarn; + done(); +}); + +const expectWarning = regexp => { + if (!regexp) { + expect(warnings).toEqual([]); + } else { + expect(warnings).toEqual( + expect.objectContaining({ + 0: expect.stringMatching(regexp), + length: 1 + }) + ); + } + warnings.length = 0; +}; + +it("should load the shared modules with ignored warnings", async () => { + __webpack_share_scopes__["test-scope"] = { + package: { + "0": { + get: () => () => "shared package" + } + }, + "@scoped/package": { + "0": { + get: () => Promise.resolve(() => "shared @scoped/package") + } + }, + "prefix/a": { + "0": { + get: () => () => "shared prefix/a" + } + }, + "prefix/deep/c": { + "0": { + get: () => () => "shared prefix/deep/c" + } + }, + "./relative1": { + "0": { + get: () => () => "shared relative1" + } + } + }; + __webpack_share_scopes__["other-scope"] = { + "advanced/123": { + "1.2.beta.1": { + get: () => () => "123" + } + }, + "advanced/error1": { + "1.2.3": { + get: () => { + throw new Error("error1"); + } + } + }, + "advanced/error2": { + "1.2.3": { + get: () => + Promise.resolve().then(() => { + throw new Error("error2"); + }) + } + }, + "advanced/error3": { + "1.2.3": { + get: () => + Promise.resolve().then(() => () => { + throw new Error("error3"); + }) + } + }, + "advanced/error4": { + "1.0.0": { + get: () => () => "wrong" + } + } + }; + { + const result = await import("package"); + expect(result.default).toBe("shared package"); + } + { + const result = await import("@scoped/package"); + expect(result.default).toBe("shared @scoped/package"); + } + { + const result = await import("prefix/a"); + expect(result.default).toBe("shared prefix/a"); + } + { + const result = await import("prefix/deep/b"); + expect(result.default).toBe("b"); + } + { + const result = await import("prefix/deep/c"); + expect(result.default).toBe("shared prefix/deep/c"); + } + { + const result = await import("./relative1"); + expect(result.default).toBe("shared relative1"); + } + { + const result = await import("./relative2"); + expect(result.default).toBe("relative2"); + } + { + const result = await import("advanced/123"); + expect(result.default).toBe("123"); + } + { + await expect(() => import("advanced/error0")).rejects.toEqual( + expect.objectContaining({ + message: expect.stringContaining("advanced/error0") + }) + ); + } + { + await expect(() => import("advanced/error1")).rejects.toEqual( + expect.objectContaining({ + message: expect.stringContaining("error1") + }) + ); + } + { + await expect(() => import("advanced/error2")).rejects.toEqual( + expect.objectContaining({ + message: expect.stringContaining("error2") + }) + ); + } + { + await expect(() => import("advanced/error3")).rejects.toEqual( + expect.objectContaining({ + message: expect.stringContaining("error3") + }) + ); + } + { + await expect(() => import("advanced/error4")).rejects.toEqual( + expect.objectContaining({ + message: expect.stringContaining("1.2.3") + }) + ); + } +}); + +it("should handle version matching correctly in strict and singleton mode", async () => { + __webpack_share_scopes__["default"] = { + strict0: { + "1.1.1": { + get: () => () => "shared strict0" + } + }, + strict1: { + "1.1.1": { + get: () => () => "shared strict1" + } + }, + strict2: { + "1.1.1": { + get: () => () => "shared strict2" + } + }, + strict3: { + "1.1.1": { + get: () => () => "shared strict3" + } + }, + strict4: { + "1.1.1": { + get: () => () => "shared strict4" + } + }, + strict5: { + "1.1.1": { + get: () => () => "shared strict5" + } + }, + singleton: { + "1.1.1": { + get: () => () => "shared singleton", + from: 'container-a' + } + }, + singletonWithoutVersion: { + "1.0.0": { + get: () => () => "shared singleton v1.0.0", + loaded: true + }, + "2.0.0": { + get: () => () => "shared singleton v2.0.0" + } + } + }; + { + const result = await import("strict0"); + expect(result.default).toBe("shared strict0"); + expectWarning(); + } + { + const result = await import("strict1"); + expect(result.default).toBe("strict"); + } + { + const result = await import("strict2"); + expect(result.default).toBe("strict"); + } + { + const result = await import("strict3"); + expect(result.default).toBe("strict"); + } + { + const result = await import("strict4"); + expect(result.default).toBe("strict"); + } + { + await expect(() => import("strict5")).rejects.toEqual( + expect.objectContaining({ + message: expect.stringContaining("strict5") + }) + ); + expectWarning(); + } + { + const result = await import("singleton"); + expect(result.default).toBe("shared singleton"); + expectWarning(); + } +}); + +it("should not instantiate multiple singletons even if a higher version exists", async () => { + __webpack_share_scopes__["default"] = { + singletonWithoutVersion: { + "1.0.0": { + get: () => () => "shared singleton v1.0.0", + loaded: true + }, + "2.0.0": { + get: () => () => "shared singleton v2.0.0" + } + } + }; + { + const result = await import("singletonWithoutVersion"); + expect(result.default).toBe("shared singleton v1.0.0"); + } +}); diff --git a/test/configCases/sharing/consume-module-ignore-warnings/node_modules/@scoped/package/index.js b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/@scoped/package/index.js new file mode 100644 index 00000000000..8678386a6f2 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/@scoped/package/index.js @@ -0,0 +1 @@ +module.exports = "@scoped/package"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/node_modules/package.js b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/package.js new file mode 100644 index 00000000000..7c1dac1c302 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/package.js @@ -0,0 +1 @@ +module.exports = "package"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/node_modules/prefix/a.js b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/prefix/a.js new file mode 100644 index 00000000000..6cd1d0075d4 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/prefix/a.js @@ -0,0 +1 @@ +module.exports = "a"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/node_modules/prefix/deep/b.js b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/prefix/deep/b.js new file mode 100644 index 00000000000..dfbbeb621fa --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/prefix/deep/b.js @@ -0,0 +1 @@ +module.exports = "b"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/node_modules/singleton.js b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/singleton.js new file mode 100644 index 00000000000..ec0140e27d2 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/singleton.js @@ -0,0 +1 @@ +module.exports = "singleton"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/node_modules/singletonWithoutVersion.js b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/singletonWithoutVersion.js new file mode 100644 index 00000000000..eb02ddc0628 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/singletonWithoutVersion.js @@ -0,0 +1 @@ +module.exports = "singleton without version"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict0.js b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict0.js new file mode 100644 index 00000000000..51df4cc6671 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict0.js @@ -0,0 +1 @@ +module.exports = "strict"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict1.js b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict1.js new file mode 100644 index 00000000000..51df4cc6671 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict1.js @@ -0,0 +1 @@ +module.exports = "strict"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict2.js b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict2.js new file mode 100644 index 00000000000..51df4cc6671 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict2.js @@ -0,0 +1 @@ +module.exports = "strict"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict3.js b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict3.js new file mode 100644 index 00000000000..51df4cc6671 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict3.js @@ -0,0 +1 @@ +module.exports = "strict"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict4.js b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict4.js new file mode 100644 index 00000000000..51df4cc6671 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/node_modules/strict4.js @@ -0,0 +1 @@ +module.exports = "strict"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/package.json b/test/configCases/sharing/consume-module-ignore-warnings/package.json new file mode 100644 index 00000000000..e0c4fa8cb6d --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/package.json @@ -0,0 +1,7 @@ +{ + "dependencies": { + "package": "*", + "@scoped/package": "*", + "prefix": "*" + } +} diff --git a/test/configCases/sharing/consume-module-ignore-warnings/relative1.js b/test/configCases/sharing/consume-module-ignore-warnings/relative1.js new file mode 100644 index 00000000000..ce7c23d165c --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/relative1.js @@ -0,0 +1 @@ +module.exports = "relative1"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/relative2.js b/test/configCases/sharing/consume-module-ignore-warnings/relative2.js new file mode 100644 index 00000000000..7097875c2df --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/relative2.js @@ -0,0 +1 @@ +module.exports = "relative2"; diff --git a/test/configCases/sharing/consume-module-ignore-warnings/webpack.config.js b/test/configCases/sharing/consume-module-ignore-warnings/webpack.config.js new file mode 100644 index 00000000000..6e167768445 --- /dev/null +++ b/test/configCases/sharing/consume-module-ignore-warnings/webpack.config.js @@ -0,0 +1,68 @@ +// eslint-disable-next-line node/no-unpublished-require +const { ConsumeSharedPlugin } = require("../../../../").sharing; + +/** @type {import("../../../../").Configuration} */ +module.exports = { + mode: "development", + output: { + ignoreBrowserWarnings: true + }, + plugins: [ + new ConsumeSharedPlugin({ + shareScope: "test-scope", + consumes: [ + "package", + "@scoped/package", + "prefix/", + "./relative1", + "./relative2", + { + "advanced/": { + import: false, + requiredVersion: "^1.2.3", + shareScope: "other-scope", + strictVersion: true + } + } + ] + }), + new ConsumeSharedPlugin({ + consumes: { + strict0: { + requiredVersion: "^1.0.0", + strictVersion: true + }, + strict1: { + requiredVersion: ">=1.2.0", + strictVersion: true + }, + strict2: { + requiredVersion: "1.1.0", + strictVersion: true + }, + strict3: { + requiredVersion: "~1.0.0", + strictVersion: true + }, + strict4: { + requiredVersion: "^2.2.3", + strictVersion: true + }, + strict5: { + import: false, + requiredVersion: "alpha", + strictVersion: true + }, + singleton: { + requiredVersion: "1.1.0", + singleton: true, + strictVersion: false + }, + singletonWithoutVersion: { + requiredVersion: false, + singleton: true + } + } + }) + ] +}; diff --git a/test/configCases/sharing/consume-multiple-versions-ignore-warnings/index.js b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/index.js new file mode 100644 index 00000000000..da18374d39d --- /dev/null +++ b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/index.js @@ -0,0 +1,49 @@ +const expectWarning = require("../../../helpers/expectWarningFactory")(); + +it("should be able to consume different shared module version depending on context with ignored warnings", async () => { + __webpack_share_scopes__["default"] = { + shared: { + "9.9.9": { + get: () => () => "shared@9.9.9" + }, + "1.9.9": { + get: () => () => "shared@1.9.9" + }, + "1.2.9": { + get: () => () => "shared@1.2.9" + }, + "1.2.3": { + get: () => () => "shared@1.2.3", + from: "mfe1" + }, + "2.9.9": { + get: () => () => "shared@2.9.9" + }, + "2.3.9": { + get: () => () => "shared@2.3.9" + }, + "2.3.4": { + get: () => () => "shared@2.3.4" + }, + "3.0.0": { + get: () => () => "shared@3.0.0" + } + }, + shared2: { + "9.9.9": { + get: () => () => "shared2@9.9.9" + } + } + }; + expect(require("shared")).toBe("shared@1.9.9"); + expect(require("my-module")).toBe("shared@2.9.9"); + expect(require("my-module2")).toBe("shared@2.3.9"); + expect(() => require("my-module3")).toThrowError( + "No satisfying version (^3.4.5) of shared module shared found in shared scope default.\n" + + "Available versions: 9.9.9 from undefined, 1.9.9 from undefined, 1.2.9 from undefined, 1.2.3 from mfe1, 2.9.9 from undefined, 2.3.9 from undefined, 2.3.4 from undefined, 3.0.0 from undefined" + ); + expect(require("my-module4")).toBe("shared@9.9.9"); + expectWarning(); + expect(require("shared2")).toBe("shared2@9.9.9"); + expectWarning(); +}); diff --git a/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module/index.js b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module/index.js new file mode 100644 index 00000000000..ae61e683bfb --- /dev/null +++ b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module/index.js @@ -0,0 +1 @@ +module.exports = require("shared"); diff --git a/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module/package.json b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module/package.json new file mode 100644 index 00000000000..ab866ffdfa3 --- /dev/null +++ b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "shared": "^2.3.0" + } +} diff --git a/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module2/index.js b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module2/index.js new file mode 100644 index 00000000000..ae61e683bfb --- /dev/null +++ b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module2/index.js @@ -0,0 +1 @@ +module.exports = require("shared"); diff --git a/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module2/package.json b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module2/package.json new file mode 100644 index 00000000000..b88141f46c5 --- /dev/null +++ b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module2/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "shared": "~2.3.0" + } +} diff --git a/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module3/index.js b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module3/index.js new file mode 100644 index 00000000000..ae61e683bfb --- /dev/null +++ b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module3/index.js @@ -0,0 +1 @@ +module.exports = require("shared"); diff --git a/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module3/package.json b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module3/package.json new file mode 100644 index 00000000000..6a3ed89c57b --- /dev/null +++ b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module3/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "shared": "^3.4.5" + } +} diff --git a/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module4/index.js b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module4/index.js new file mode 100644 index 00000000000..ae61e683bfb --- /dev/null +++ b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module4/index.js @@ -0,0 +1 @@ +module.exports = require("shared"); diff --git a/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module4/package.json b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module4/package.json new file mode 100644 index 00000000000..6faf4164846 --- /dev/null +++ b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/node_modules/my-module4/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "shared": "*" + } +} diff --git a/test/configCases/sharing/consume-multiple-versions-ignore-warnings/package.json b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/package.json new file mode 100644 index 00000000000..9260ff7df9d --- /dev/null +++ b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/package.json @@ -0,0 +1,8 @@ +{ + "dependencies": { + "shared2": "1.2.3 3.2.1" + }, + "peerDependencies": { + "shared": "^1.0.0" + } +} diff --git a/test/configCases/sharing/consume-multiple-versions-ignore-warnings/webpack.config.js b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/webpack.config.js new file mode 100644 index 00000000000..81b694e7342 --- /dev/null +++ b/test/configCases/sharing/consume-multiple-versions-ignore-warnings/webpack.config.js @@ -0,0 +1,22 @@ +// eslint-disable-next-line node/no-unpublished-require +const { ConsumeSharedPlugin } = require("../../../../").sharing; + +/** @type {import("../../../../").Configuration} */ +module.exports = { + output: { + ignoreBrowserWarnings: true + }, + plugins: [ + new ConsumeSharedPlugin({ + consumes: { + shared: { + import: false, + strictVersion: true + }, + shared2: { + import: false + } + } + }) + ] +}; diff --git a/test/helpers/FakeDocument.js b/test/helpers/FakeDocument.js index 55a3a94907f..5d70c0e5d11 100644 --- a/test/helpers/FakeDocument.js +++ b/test/helpers/FakeDocument.js @@ -143,6 +143,30 @@ class FakeSheet { this._basePath = basePath; } + get css() { + let css = fs.readFileSync( + path.resolve( + this._basePath, + this._element.href + .replace(/^https:\/\/test\.cases\/path\//, "") + .replace(/^https:\/\/example\.com\//, "") + ), + "utf-8" + ); + + css = css.replace(/@import url\("([^"]+)"\);/g, (match, url) => { + return fs.readFileSync( + path.resolve( + this._basePath, + url.replace(/^https:\/\/test\.cases\/path\//, "") + ), + "utf-8" + ); + }); + + return css; + } + get cssRules() { const walkCssTokens = require("../../lib/css/walkCssTokens"); const rules = []; diff --git a/test/statsCases/define-plugin/webpack.config.js b/test/statsCases/define-plugin/webpack.config.js index c11eee59df1..618f1c4f36d 100644 --- a/test/statsCases/define-plugin/webpack.config.js +++ b/test/statsCases/define-plugin/webpack.config.js @@ -56,5 +56,26 @@ module.exports = [ ) }) ] + }, + + { + mode: "production", + entry: "./index", + output: { + filename: "log.js" + }, + infrastructureLogging: { + debug: /DefinePlugin/, + level: "none" + }, + stats: { + loggingDebug: /DefinePlugin/, + logging: "none" + }, + plugins: [ + new webpack.DefinePlugin({ + VALUE: "123" + }) + ] } ]; diff --git a/types.d.ts b/types.d.ts index 7e6a78dcdf9..958155c3c4c 100644 --- a/types.d.ts +++ b/types.d.ts @@ -2646,8 +2646,8 @@ declare abstract class DependenciesBlock { */ clearDependenciesAndBlocks(): void; updateHash(hash: Hash, context: UpdateHashContextDependency): void; - serialize(__0: { write: any }): void; - deserialize(__0: { read: any }): void; + serialize(__0: ObjectSerializerContext): void; + deserialize(__0: ObjectDeserializerContext): void; } declare interface DependenciesBlockLike { dependencies: Dependency[]; @@ -2717,8 +2717,8 @@ declare class Dependency { moduleGraph: ModuleGraph ): ConnectionState; createIgnoredModule(context: string): Module; - serialize(__0: { write: any }): void; - deserialize(__0: { read: any }): void; + serialize(__0: ObjectSerializerContext): void; + deserialize(__0: ObjectDeserializerContext): void; module: any; get disconnect(): any; static NO_EXPORTS_REFERENCED: string[][]; @@ -6204,9 +6204,9 @@ declare class LazySet { has(item: T): boolean; keys(): IterableIterator; values(): IterableIterator; - serialize(__0: { write: any }): void; + serialize(__0: ObjectSerializerContext): void; [Symbol.iterator](): IterableIterator; - static deserialize(__0: { read: any }): LazySet; + static deserialize(__0: ObjectDeserializerContext): LazySet; } declare interface LibIdentOptions { /** @@ -6433,8 +6433,8 @@ declare interface LoaderModule { pitch?: PitchLoaderDefinitionFunction; } declare class LoaderOptionsPlugin { - constructor(options?: LoaderOptionsPluginOptions); - options: LoaderOptionsPluginOptions; + constructor(options?: LoaderOptionsPluginOptions & MatchObject); + options: LoaderOptionsPluginOptions & MatchObject; /** * Apply the plugin @@ -6733,6 +6733,12 @@ declare interface MapOptions { columns?: boolean; module?: boolean; } +declare interface MatchObject { + test?: string | RegExp | string[] | RegExp[]; + include?: string | RegExp | string[] | RegExp[]; + exclude?: string | RegExp | string[] | RegExp[]; +} +type Matcher = string | RegExp | string[] | RegExp[]; /** * Options object for in-memory caching. @@ -7847,6 +7853,7 @@ declare abstract class NormalModuleFactory extends ModuleFactory { parser: HookMap>; createGenerator: HookMap>; generator: HookMap>; + createModuleClass: HookMap>; }>; resolverFactory: ResolverFactory; ruleSet: RuleSet; @@ -8001,6 +8008,7 @@ declare class NullDependencyTemplate extends DependencyTemplate { } declare interface ObjectDeserializerContext { read: () => any; + setCircularReference: (arg0?: any) => void; } declare interface ObjectSerializer { serialize: (arg0: any, arg1: ObjectSerializerContext) => void; @@ -8008,6 +8016,7 @@ declare interface ObjectSerializer { } declare interface ObjectSerializerContext { write: (arg0?: any) => void; + setCircularReference: (arg0?: any) => void; } declare class OccurrenceChunkIdsPlugin { constructor(options?: OccurrenceChunkIdsPluginOptions); @@ -8609,6 +8618,11 @@ declare interface Output { */ hotUpdateMainFilename?: string; + /** + * Ignore warnings in the browser. + */ + ignoreBrowserWarnings?: boolean; + /** * Wrap javascript code into IIFE's to avoid leaking into global scope. */ @@ -8923,6 +8937,11 @@ declare interface OutputNormalized { */ hotUpdateMainFilename?: string; + /** + * Ignore warnings in the browser. + */ + ignoreBrowserWarnings?: boolean; + /** * Wrap javascript code into IIFE's to avoid leaking into global scope. */ @@ -9243,7 +9262,7 @@ declare class ProgressPlugin { showModules?: boolean; showDependencies?: boolean; showActiveModules?: boolean; - percentBy?: null | "modules" | "dependencies" | "entries"; + percentBy?: null | "entries" | "modules" | "dependencies"; apply(compiler: Compiler | MultiCompiler): void; static getReporter( compiler: Compiler @@ -9304,7 +9323,7 @@ declare interface ProgressPluginOptions { /** * Collect percent algorithm. By default it calculates by a median from modules, entries and dependencies percent. */ - percentBy?: null | "modules" | "dependencies" | "entries"; + percentBy?: null | "entries" | "modules" | "dependencies"; /** * Collect profile data for progress steps. Default: false. @@ -9437,7 +9456,16 @@ declare interface ReaddirOptions { withFileTypes?: boolean; } declare class RealContentHashPlugin { - constructor(__0: { hashFunction: any; hashDigest: any }); + constructor(__0: { + /** + * the hash function to use + */ + hashFunction: string | typeof Hash; + /** + * the hash digest to use + */ + hashDigest: string; + }); /** * Apply the plugin @@ -11071,8 +11099,8 @@ declare abstract class Snapshot { hasChildren(): boolean; setChildren(value?: any): void; addChild(child?: any): void; - serialize(__0: { write: any }): void; - deserialize(__0: { read: any }): void; + serialize(__0: ObjectSerializerContext): void; + deserialize(__0: ObjectDeserializerContext): void; getFileIterable(): Iterable; getContextIterable(): Iterable; getMissingIterable(): Iterable; @@ -12400,8 +12428,8 @@ declare class WebpackError extends Error { hideStack: boolean; chunk: Chunk; file: string; - serialize(__0: { write: any }): void; - deserialize(__0: { read: any }): void; + serialize(__0: ObjectSerializerContext): void; + deserialize(__0: ObjectDeserializerContext): void; /** * Create .stack property on a target object @@ -12774,13 +12802,17 @@ declare namespace exports { hashFunction: string | typeof Hash; } ) => string; - export let replaceDuplicates: ( - array?: any, - fn?: any, - comparator?: any - ) => any; - export let matchPart: (str?: any, test?: any) => any; - export let matchObject: (obj?: any, str?: any) => boolean; + export let replaceDuplicates: ( + array: T[], + fn: ( + duplicateItem: T, + duplicateItemIndex: number, + numberOfTimesReplaced: number + ) => T, + comparator?: (firstElement: T, nextElement: T) => 0 | 1 | -1 + ) => T[]; + export let matchPart: (str: string, test: Matcher) => boolean; + export let matchObject: (obj: MatchObject, str: string) => boolean; } export namespace RuntimeGlobals { export let require: "__webpack_require__"; @@ -13240,6 +13272,7 @@ declare namespace exports { Externals, FileCacheOptions, LibraryOptions, + MemoryCacheOptions, ModuleOptions, ResolveOptionsWebpackOptions as ResolveOptions, RuleSetCondition, diff --git a/yarn.lock b/yarn.lock index 0489e329ba7..96744b62f30 100644 --- a/yarn.lock +++ b/yarn.lock @@ -676,12 +676,12 @@ integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@es-joy/jsdoccomment@~0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.37.0.tgz#aaafb4bb6c88288aa7899aef0f3b1b851c36f908" - integrity sha512-hjK0wnsPCYLlF+HHB4R/RbUjOWeLW2SlarB67+Do5WsKILOkmIZvvPJFbtWSmbypxcjpoECLAMzoao0D4Bg5ZQ== + version "0.37.1" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz#fa32a41ba12097452693343e09ad4d26d157aedd" + integrity sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg== dependencies: comment-parser "1.3.1" - esquery "^1.4.0" + esquery "^1.5.0" jsdoc-type-pratt-parser "~4.0.0" "@eslint-community/eslint-utils@^4.2.0": @@ -1100,9 +1100,9 @@ "@types/json-schema" "*" "@types/estree@*", "@types/estree@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" - integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== "@types/graceful-fs@^4.1.3": version "4.1.6" @@ -1149,9 +1149,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node@*", "@types/node@^18.15.11": - version "18.15.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" - integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== + version "18.15.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== "@types/normalize-package-data@^2.4.1": version "2.4.1" @@ -1568,9 +1568,9 @@ asn1@~0.2.3: safer-buffer "~2.1.0" assemblyscript@^0.27.2: - version "0.27.2" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.27.2.tgz#cf723d1218fbe3f6b7801ac56e4197fb7d363489" - integrity sha512-uTiUFkiXkVpsY3votMjmPuA9vvL/vHuUrtH+VtVKCl+BM+1OqXFO7j53FYA4L9QtVJA9KQDYXSVnZ5LFad668w== + version "0.27.3" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.27.3.tgz#9015284d77308367b705ffa7464d43b94baec9e5" + integrity sha512-l0ZXXFa2gql1SnIYsNQJ5vrHpMksALCLQNBOA6VUssCRugYzz7M0dVCXcsWsukVty/Uc24i0//32jJ+S24q3rw== dependencies: binaryen "112.0.0-nightly.20230411" long "^5.2.1" @@ -2632,10 +2632,10 @@ eslint-plugin-jest@^27.2.1: dependencies: "@typescript-eslint/utils" "^5.10.0" -eslint-plugin-jsdoc@^41.1.1: - version "41.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-41.1.1.tgz#f5430aea369c4eb69c2fdc4030e09eb79d5f0518" - integrity sha512-dfH97DKLGtQ5dgEMzd+GSUuY+xX/yyAfjML3O0pEWmMMpylsG6Ro65s4ziYXKmixiENYK9CTQxCVRGqZUFN2Mw== +eslint-plugin-jsdoc@^43.0.5: + version "43.0.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-43.0.5.tgz#5b19487f6bb8d9cda64eafd992f8ec190bcec043" + integrity sha512-4+hN5jrwcElXwK+J6GiUYbgHl+C063lu1gR2ajUA1L4bs+rBsAoV37dP2gISfqzoU83VsY1/sSD4wvH87JHCsQ== dependencies: "@es-joy/jsdoccomment" "~0.37.0" are-docs-informative "^0.0.2" @@ -2643,7 +2643,7 @@ eslint-plugin-jsdoc@^41.1.1: debug "^4.3.4" escape-string-regexp "^4.0.0" esquery "^1.5.0" - semver "^7.3.8" + semver "^7.5.0" spdx-expression-parse "^3.0.1" eslint-plugin-node@^11.0.0: @@ -2763,7 +2763,7 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0, esquery@^1.4.2, esquery@^1.5.0: +esquery@^1.4.2, esquery@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== @@ -4331,7 +4331,7 @@ loader-utils@^1.1.0: emojis-list "^3.0.0" json5 "^1.0.1" -loader-utils@^2.0.0, loader-utils@^2.0.3: +loader-utils@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== @@ -4467,9 +4467,9 @@ map-obj@^4.3.0: integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== memfs@^3.4.1, memfs@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.5.0.tgz#9da86405fca0a539addafd37dbd452344fd1c0bd" - integrity sha512-yK6o8xVJlQerz57kvPROwTMgx5WtGwC2ZxDtOUsnGl49rHjYkfQoPNZPCKH73VdLE1BwBu/+Fx/NL8NYMUw2aA== + version "3.5.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.5.1.tgz#f0cd1e2bfaef58f6fe09bfb9c2288f07fea099ec" + integrity sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA== dependencies: fs-monkey "^1.0.3" @@ -5089,9 +5089,9 @@ prettier-linter-helpers@^1.0.0: fast-diff "^1.1.2" prettier@^2.0.5, prettier@^2.7.1: - version "2.8.7" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" - integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== pretty-format@^29.0.0, pretty-format@^29.5.0: version "29.5.0" @@ -5577,10 +5577,10 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: - version "7.4.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.4.0.tgz#8481c92feffc531ab1e012a8ffc15bdd3a0f4318" - integrity sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw== +semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== dependencies: lru-cache "^6.0.0" @@ -5621,9 +5621,9 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== simple-git@^3.17.0: - version "3.17.0" - resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.17.0.tgz#1a961fa43f697b4e2391cf34c8a0554ef84fed8e" - integrity sha512-JozI/s8jr3nvLd9yn2jzPVHnhVzt7t7QWfcIoDcqRIGN+f1IINGv52xoZti2kkYfoRhhRvzMSNPfogHMp97rlw== + version "3.18.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.18.0.tgz#2e25adbbc1e3df5ee97c0f1b468ddadf3f0f9adf" + integrity sha512-Yt0GJ5aYrpPci3JyrYcsPz8Xc05Hi4JPSOb+Sgn/BmPX35fn/6Fp9Mef8eMBCrL2siY5w4j49TA5Q+bxPpri1Q== dependencies: "@kwsites/file-exists" "^1.1.1" "@kwsites/promise-deferred" "^1.1.1" @@ -5932,10 +5932,10 @@ terser-webpack-plugin@^5.3.7: serialize-javascript "^6.0.1" terser "^5.16.5" -terser@^5.16.5, terser@^5.16.9, terser@^5.6.1: - version "5.16.9" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.9.tgz#7a28cb178e330c484369886f2afd623d9847495f" - integrity sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg== +terser@^5.16.5, terser@^5.17.0, terser@^5.6.1: + version "5.17.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.0.tgz#2b1bc90b5917e09ecffbcd2ff911f6922a4f5743" + integrity sha512-3die3+pYW4mta4xF6K8Wtf7id8+oYyfqtAhjwzqY01+CfDSDMx/VA1Sp8sXWs5AVNIoAKoUfmp/gnPqRjBxuDA== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -6158,10 +6158,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.8.4: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== uglify-js@^3.1.4: version "3.17.4"