diff --git a/README.md b/README.md
index fd63f076505..a4b1440cbef 100644
--- a/README.md
+++ b/README.md
@@ -252,6 +252,18 @@ you full control of what is loaded initially and what is loaded at runtime
through code splitting. It can also make your code chunks **cache
friendly** by using hashes.
+### Developer Tools
+
+If you're working on webpack itself, or building advanced plugins or integrations, the tools below can help you explore internal mechanics, debug plugin life-cycles, and build custom tooling.
+
+#### Instrumentation
+
+| Name | Status | Description |
+| --------------------------------------------------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
+| [tapable-tracer](https://github.com/ertgl/tapable-tracer) | ![tapable-tracer-npm] | Traces tapable hook execution in real-time and collects structured stack frames. Can export to UML for generating visualizations. |
+
+[tapable-tracer-npm]: https://img.shields.io/npm/v/tapable-tracer.svg
+
Contributing
**We want contributing to webpack to be fun, enjoyable, and educational for anyone, and everyone.** We have a [vibrant ecosystem](https://medium.com/webpack/contributors-guide/home) that spans beyond this single repo. We welcome you to check out any of the repositories in [our organization](https://github.com/webpack) or [webpack-contrib organization](https://github.com/webpack-contrib) which houses all of our loaders and plugins.
diff --git a/lib/ConcatenationScope.js b/lib/ConcatenationScope.js
index 76b0a1dde56..e14add3899f 100644
--- a/lib/ConcatenationScope.js
+++ b/lib/ConcatenationScope.js
@@ -30,8 +30,9 @@ class ConcatenationScope {
/**
* @param {ModuleInfo[] | Map} modulesMap all module info by module
* @param {ConcatenatedModuleInfo} currentModule the current module info
+ * @param {Set} usedNames all used names
*/
- constructor(modulesMap, currentModule) {
+ constructor(modulesMap, currentModule, usedNames) {
this._currentModule = currentModule;
if (Array.isArray(modulesMap)) {
const map = new Map();
@@ -40,6 +41,7 @@ class ConcatenationScope {
}
modulesMap = map;
}
+ this.usedNames = usedNames;
this._modulesMap = modulesMap;
}
@@ -77,6 +79,30 @@ class ConcatenationScope {
}
}
+ /**
+ * @param {string} exportName name of the export
+ * @returns {string | undefined} the expression of the export
+ */
+ getRawExport(exportName) {
+ if (!this._currentModule.rawExportMap) {
+ return undefined;
+ }
+ return this._currentModule.rawExportMap.get(exportName);
+ }
+
+ /**
+ * @param {string} exportName name of the export
+ * @param {string} expression expression to be used
+ */
+ setRawExportMap(exportName, expression) {
+ if (!this._currentModule.rawExportMap) {
+ this._currentModule.rawExportMap = new Map();
+ }
+ if (this._currentModule.rawExportMap.has(exportName)) {
+ this._currentModule.rawExportMap.set(exportName, expression);
+ }
+ }
+
/**
* @param {string} symbol identifier of the export in source code
*/
@@ -84,6 +110,18 @@ class ConcatenationScope {
this._currentModule.namespaceExportSymbol = symbol;
}
+ /**
+ * @param {string} symbol identifier of the export in source code
+ * @returns {boolean} registered success
+ */
+ registerUsedName(symbol) {
+ if (this.usedNames.has(symbol)) {
+ return false;
+ }
+ this.usedNames.add(symbol);
+ return true;
+ }
+
/**
* @param {Module} module the referenced module
* @param {Partial} options options
diff --git a/lib/ExternalModule.js b/lib/ExternalModule.js
index ced3598d3f7..de7b38919fe 100644
--- a/lib/ExternalModule.js
+++ b/lib/ExternalModule.js
@@ -75,8 +75,11 @@ const { register } = require("./util/serialization");
* @property {string} expression
* @property {InitFragment[]=} chunkInitFragments
* @property {ReadOnlyRuntimeRequirements=} runtimeRequirements
+ * @property {[string, string][]=} specifiers
*/
+/** @typedef {true | [string, string][]} Imported */
+
const RUNTIME_REQUIREMENTS = new Set([RuntimeGlobals.module]);
const RUNTIME_REQUIREMENTS_FOR_SCRIPT = new Set([RuntimeGlobals.loadScript]);
const RUNTIME_REQUIREMENTS_FOR_MODULE = new Set([
@@ -220,10 +223,9 @@ const getSourceForImportExternal = (
};
/**
- * @template {{ [key: string]: string }} T
- * @param {keyof T} key key
- * @param {T[keyof T]} value value
- * @returns {undefined | T[keyof T]} replaced value
+ * @param {string} key key
+ * @param {ImportAttributes | string | boolean | undefined} value value
+ * @returns {ImportAttributes | string | boolean | undefined} replaced value
*/
const importAssertionReplacer = (key, value) => {
if (key === "_isLegacyAssert") {
@@ -234,17 +236,19 @@ const importAssertionReplacer = (key, value) => {
};
/**
- * @extends {InitFragment}
+ * @extends {InitFragment}
*/
class ModuleExternalInitFragment extends InitFragment {
/**
* @param {string} request import source
+ * @param {Imported} imported the imported specifiers
* @param {string=} ident recomputed ident
* @param {ImportDependencyMeta=} dependencyMeta the dependency meta
* @param {HashFunction=} hashFunction the hash function to use
*/
constructor(
request,
+ imported,
ident,
dependencyMeta,
hashFunction = DEFAULTS.HASH_FUNCTION
@@ -258,28 +262,78 @@ class ModuleExternalInitFragment extends InitFragment {
.slice(0, 8)}`;
}
}
+
const identifier = `__WEBPACK_EXTERNAL_MODULE_${ident}__`;
super(
- `import * as ${identifier} from ${JSON.stringify(request)}${
- dependencyMeta && dependencyMeta.attributes
- ? dependencyMeta.attributes._isLegacyAssert
- ? ` assert ${JSON.stringify(
- dependencyMeta.attributes,
- importAssertionReplacer
- )}`
- : ` with ${JSON.stringify(dependencyMeta.attributes)}`
- : ""
- };\n`,
+ "",
InitFragment.STAGE_HARMONY_IMPORTS,
0,
- `external module import ${ident}`
+ `external module import ${ident} ${imported === true ? imported : imported.join(" ")}`
);
this._ident = ident;
this._request = request;
- this._dependencyMeta = request;
+ this._dependencyMeta = dependencyMeta;
+ this._imported = imported;
this._identifier = identifier;
}
+ /**
+ * @returns {Imported} imported
+ */
+ getImported() {
+ return this._imported;
+ }
+
+ /**
+ * @param {Imported} imported imported
+ */
+ setImported(imported) {
+ this._imported = imported;
+ }
+
+ /**
+ * @param {GenerateContext} context context
+ * @returns {string | Source | undefined} the source code that will be included as initialization code
+ */
+ getContent(context) {
+ const {
+ _dependencyMeta: dependencyMeta,
+ _imported: imported,
+ _request: request,
+ _identifier: identifier
+ } = this;
+ const attributes =
+ dependencyMeta && dependencyMeta.attributes
+ ? dependencyMeta.attributes._isLegacyAssert &&
+ dependencyMeta.attributes._isLegacyAssert
+ ? ` assert ${JSON.stringify(
+ dependencyMeta.attributes,
+ importAssertionReplacer
+ )}`
+ : ` with ${JSON.stringify(dependencyMeta.attributes)}`
+ : "";
+ let content = "";
+ if (imported === true) {
+ // namespace
+ content = `import * as ${identifier} from ${JSON.stringify(request)}${
+ attributes
+ };\n`;
+ } else if (imported.length === 0) {
+ // just import, no use
+ content = `import ${JSON.stringify(request)}${attributes};\n`;
+ } else {
+ content = `import { ${imported
+ .map(([name, finalName]) => {
+ if (name !== finalName) {
+ return `${name} as ${finalName}`;
+ }
+ return name;
+ })
+ .join(", ")} } from ${JSON.stringify(request)}${attributes};\n`;
+ }
+ return content;
+ }
+
getNamespaceIdentifier() {
return this._identifier;
}
@@ -292,11 +346,12 @@ register(
{
serialize(obj, { write }) {
write(obj._request);
+ write(obj._imported);
write(obj._ident);
write(obj._dependencyMeta);
},
deserialize({ read }) {
- return new ModuleExternalInitFragment(read(), read(), read());
+ return new ModuleExternalInitFragment(read(), read(), read(), read());
}
}
);
@@ -348,6 +403,7 @@ const generateModuleRemapping = (
* @param {RuntimeSpec} runtime the runtime
* @param {RuntimeTemplate} runtimeTemplate the runtime template
* @param {ImportDependencyMeta} dependencyMeta the dependency meta
+ * @param {ConcatenationScope=} concatenationScope concatenationScope
* @returns {SourceData} the generated source
*/
const getSourceForModuleExternal = (
@@ -355,28 +411,71 @@ const getSourceForModuleExternal = (
exportsInfo,
runtime,
runtimeTemplate,
- dependencyMeta
+ dependencyMeta,
+ concatenationScope
) => {
if (!Array.isArray(moduleAndSpecifiers)) {
moduleAndSpecifiers = [moduleAndSpecifiers];
}
+
+ /** @type {Imported} */
+ let imported = true;
+ if (concatenationScope) {
+ const usedExports = exportsInfo.getUsedExports(runtime);
+ switch (usedExports) {
+ case true:
+ case null:
+ // unknown exports
+ imported = true;
+ break;
+ case false:
+ // no used exports
+ imported = [];
+ break;
+ default:
+ imported = [];
+ if (exportsInfo.isUsed(runtime) === false) {
+ // no used, only
+ }
+ for (const [name] of usedExports.entries()) {
+ let counter = 0;
+ let finalName = name;
+
+ if (concatenationScope) {
+ while (!concatenationScope.registerUsedName(finalName)) {
+ finalName = `${name}_${counter++}`;
+ }
+ }
+ imported.push([name, finalName]);
+ }
+ }
+ }
+
const initFragment = new ModuleExternalInitFragment(
moduleAndSpecifiers[0],
+ imported,
undefined,
dependencyMeta,
runtimeTemplate.outputOptions.hashFunction
);
+ const specifiers = imported === true ? undefined : imported;
const baseAccess = `${initFragment.getNamespaceIdentifier()}${propertyAccess(
moduleAndSpecifiers,
1
)}`;
- const moduleRemapping = generateModuleRemapping(
- baseAccess,
- exportsInfo,
- runtime,
- runtimeTemplate
- );
- const expression = moduleRemapping || baseAccess;
+ let expression = baseAccess;
+
+ const useNamespace = imported === true;
+ let moduleRemapping;
+ if (useNamespace) {
+ moduleRemapping = generateModuleRemapping(
+ baseAccess,
+ exportsInfo,
+ runtime,
+ runtimeTemplate
+ );
+ expression = moduleRemapping || baseAccess;
+ }
return {
expression,
init: moduleRemapping
@@ -388,10 +487,13 @@ const getSourceForModuleExternal = (
"x"
)}`
: undefined,
+ specifiers,
runtimeRequirements: moduleRemapping
? RUNTIME_REQUIREMENTS_FOR_MODULE
: undefined,
- chunkInitFragments: [initFragment]
+ chunkInitFragments: [
+ /** @type {InitFragment} */ (initFragment)
+ ]
};
};
@@ -738,6 +840,7 @@ class ExternalModule extends Module {
* @param {ChunkGraph} chunkGraph the chunk graph
* @param {RuntimeSpec} runtime the runtime
* @param {DependencyMeta | undefined} dependencyMeta the dependency meta
+ * @param {ConcatenationScope=} concatenationScope concatenationScope
* @returns {SourceData} the source data
*/
_getSourceData(
@@ -747,7 +850,8 @@ class ExternalModule extends Module {
moduleGraph,
chunkGraph,
runtime,
- dependencyMeta
+ dependencyMeta,
+ concatenationScope
) {
switch (externalType) {
case "this":
@@ -817,7 +921,8 @@ class ExternalModule extends Module {
moduleGraph.getExportsInfo(this),
runtime,
runtimeTemplate,
- /** @type {ImportDependencyMeta} */ (dependencyMeta)
+ /** @type {ImportDependencyMeta} */ (dependencyMeta),
+ concatenationScope
);
}
case "var":
@@ -897,14 +1002,24 @@ class ExternalModule extends Module {
moduleGraph,
chunkGraph,
runtime,
- this.dependencyMeta
+ this.dependencyMeta,
+ concatenationScope
);
+ // sourceString can be empty str only when there is concatenationScope
let sourceString = sourceData.expression;
if (sourceData.iife) {
sourceString = `(function() { return ${sourceString}; }())`;
}
- if (concatenationScope) {
+
+ const specifiers = sourceData.specifiers;
+ if (specifiers) {
+ sourceString = "";
+ const scope = /** @type {ConcatenationScope} */ (concatenationScope);
+ for (const [specifier, finalName] of specifiers) {
+ scope.registerRawExport(specifier, finalName);
+ }
+ } else if (concatenationScope) {
sourceString = `${
runtimeTemplate.supportsConst() ? "const" : "var"
} ${ConcatenationScope.NAMESPACE_OBJECT_EXPORT} = ${sourceString};`;
@@ -1010,3 +1125,4 @@ class ExternalModule extends Module {
makeSerializable(ExternalModule, "webpack/lib/ExternalModule");
module.exports = ExternalModule;
+module.exports.ModuleExternalInitFragment = ModuleExternalInitFragment;
diff --git a/lib/ExternalsPlugin.js b/lib/ExternalsPlugin.js
index 87b692e7fed..b713357ec3c 100644
--- a/lib/ExternalsPlugin.js
+++ b/lib/ExternalsPlugin.js
@@ -5,10 +5,13 @@
"use strict";
+const { ModuleExternalInitFragment } = require("./ExternalModule");
const ExternalModuleFactoryPlugin = require("./ExternalModuleFactoryPlugin");
+const ConcatenatedModule = require("./optimize/ConcatenatedModule");
/** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
/** @typedef {import("./Compiler")} Compiler */
+/** @typedef {import("./optimize/ConcatenatedModule").ConcatenatedModuleInfo} ConcatenatedModuleInfo */
const PLUGIN_NAME = "ExternalsPlugin";
@@ -33,6 +36,48 @@ class ExternalsPlugin {
normalModuleFactory
);
});
+
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
+ const { concatenatedModuleInfo } =
+ ConcatenatedModule.getCompilationHooks(compilation);
+ concatenatedModuleInfo.tap(PLUGIN_NAME, (updatedInfo, moduleInfo) => {
+ const rawExportMap =
+ /** @type {ConcatenatedModuleInfo} */ updatedInfo.rawExportMap;
+
+ if (!rawExportMap) {
+ return;
+ }
+
+ const chunkInitFragments =
+ /** @type {ConcatenatedModuleInfo} */ moduleInfo.chunkInitFragments;
+ const moduleExternalInitFragments = chunkInitFragments
+ ? chunkInitFragments.filter(
+ (fragment) => fragment instanceof ModuleExternalInitFragment
+ )
+ : [];
+
+ let initFragmentChanged = false;
+
+ for (const fragment of moduleExternalInitFragments) {
+ const imported = fragment.getImported();
+
+ if (Array.isArray(imported)) {
+ const newImported = imported.map(([specifier, finalName]) => [
+ specifier,
+ rawExportMap.has(specifier)
+ ? rawExportMap.get(specifier)
+ : finalName
+ ]);
+ fragment.setImported(newImported);
+ initFragmentChanged = true;
+ }
+ }
+
+ if (initFragmentChanged) {
+ return true;
+ }
+ });
+ });
}
}
diff --git a/lib/FileSystemInfo.js b/lib/FileSystemInfo.js
index 88b1e246638..8ae2f7ffc20 100644
--- a/lib/FileSystemInfo.js
+++ b/lib/FileSystemInfo.js
@@ -15,6 +15,7 @@ const StackedCacheMap = require("./util/StackedCacheMap");
const createHash = require("./util/createHash");
const { dirname, join, lstatReadlinkAbsolute, relative } = require("./util/fs");
const makeSerializable = require("./util/makeSerializable");
+const memoize = require("./util/memoize");
const processAsyncTree = require("./util/processAsyncTree");
/** @typedef {import("enhanced-resolve").Resolver} Resolver */
@@ -1039,6 +1040,8 @@ const addAll = (source, target) => {
for (const key of source) target.add(key);
};
+const getEsModuleLexer = memoize(() => require("es-module-lexer"));
+
/** @typedef {Set} LoggedPaths */
/** @typedef {FileSystemInfoEntry | "ignore" | null} FileTimestamp */
@@ -1935,7 +1938,7 @@ class FileSystemInfo {
this._warnAboutExperimentalEsmTracking = true;
}
- const lexer = require("es-module-lexer");
+ const lexer = getEsModuleLexer();
lexer.init.then(() => {
this.fs.readFile(path, (err, content) => {
diff --git a/lib/InitFragment.js b/lib/InitFragment.js
index 228f592a4ff..e06f8e906b6 100644
--- a/lib/InitFragment.js
+++ b/lib/InitFragment.js
@@ -173,6 +173,12 @@ makeSerializable(InitFragment, "webpack/lib/InitFragment");
InitFragment.prototype.merge =
/** @type {TODO} */
(undefined);
+InitFragment.prototype.getImported =
+ /** @type {TODO} */
+ (undefined);
+InitFragment.prototype.setImported =
+ /** @type {TODO} */
+ (undefined);
InitFragment.STAGE_CONSTANTS = 10;
InitFragment.STAGE_ASYNC_BOUNDARY = 20;
diff --git a/lib/ModuleGraph.js b/lib/ModuleGraph.js
index 2ebcebd61b7..20bf162c142 100644
--- a/lib/ModuleGraph.js
+++ b/lib/ModuleGraph.js
@@ -11,6 +11,7 @@ const ModuleGraphConnection = require("./ModuleGraphConnection");
const SortableSet = require("./util/SortableSet");
const WeakTupleMap = require("./util/WeakTupleMap");
const { sortWithSourceOrder } = require("./util/comparators");
+const memoize = require("./util/memoize");
/** @typedef {import("./Compilation").ModuleMemCaches} ModuleMemCaches */
/** @typedef {import("./DependenciesBlock")} DependenciesBlock */
@@ -24,6 +25,10 @@ const { sortWithSourceOrder } = require("./util/comparators");
/** @typedef {import("./dependencies/HarmonyImportSpecifierDependency")} HarmonyImportSpecifierDependency */
/** @typedef {import("./util/comparators").DependencySourceOrder} DependencySourceOrder */
+const getCommonJsSelfReferenceDependency = memoize(() =>
+ require("./dependencies/CommonJsSelfReferenceDependency")
+);
+
/**
* @callback OptimizationBailoutFunction
* @param {RequestShortener} requestShortener
@@ -840,8 +845,7 @@ class ModuleGraph {
for (const connection of connections) {
if (
!connection.dependency ||
- connection.dependency instanceof
- require("./dependencies/CommonJsSelfReferenceDependency")
+ connection.dependency instanceof getCommonJsSelfReferenceDependency()
) {
continue;
}
diff --git a/lib/RuntimeGlobals.js b/lib/RuntimeGlobals.js
index 753d6891ea4..26178a0e5df 100644
--- a/lib/RuntimeGlobals.js
+++ b/lib/RuntimeGlobals.js
@@ -109,6 +109,26 @@ module.exports.ensureChunkIncludeEntries =
*/
module.exports.entryModuleId = "__webpack_require__.s";
+/**
+ * esm module id
+ */
+module.exports.esmId = "__webpack_esm_id__";
+
+/**
+ * esm module ids
+ */
+module.exports.esmIds = "__webpack_esm_ids__";
+
+/**
+ * esm modules
+ */
+module.exports.esmModules = "__webpack_esm_modules__";
+
+/**
+ * esm runtime
+ */
+module.exports.esmRuntime = "__webpack_esm_runtime__";
+
/**
* the internal exports object
*/
diff --git a/lib/config/defaults.js b/lib/config/defaults.js
index 0c07d87424f..05cda8c4f53 100644
--- a/lib/config/defaults.js
+++ b/lib/config/defaults.js
@@ -384,6 +384,7 @@ const applyExperimentsDefaults = (
D(experiments, "lazyCompilation", undefined);
D(experiments, "buildHttp", undefined);
D(experiments, "cacheUnaffected", experiments.futureDefaults);
+ D(experiments, "deferImport", false);
F(experiments, "css", () => (experiments.futureDefaults ? true : undefined));
// TODO webpack 6: remove this. topLevelAwait should be enabled by default
diff --git a/lib/css/CssGenerator.js b/lib/css/CssGenerator.js
index 97ce9f34592..56cbc5d607f 100644
--- a/lib/css/CssGenerator.js
+++ b/lib/css/CssGenerator.js
@@ -18,6 +18,7 @@ const {
} = require("../ModuleSourceTypesConstants");
const RuntimeGlobals = require("../RuntimeGlobals");
const Template = require("../Template");
+const memoize = require("../util/memoize");
/** @typedef {import("webpack-sources").Source} Source */
/** @typedef {import("../../declarations/WebpackOptions").CssAutoGeneratorOptions} CssAutoGeneratorOptions */
@@ -37,6 +38,8 @@ const Template = require("../Template");
/** @typedef {import("../NormalModule")} NormalModule */
/** @typedef {import("../util/Hash")} Hash */
+const getPropertyName = memoize(() => require("../util/propertyName"));
+
class CssGenerator extends Generator {
/**
* @param {CssAutoGeneratorOptions | CssGlobalGeneratorOptions | CssModuleGeneratorOptions} options options
@@ -147,6 +150,7 @@ class CssGenerator extends Generator {
if (generateContext.concatenationScope) {
const source = new ConcatSource();
const usedIdentifiers = new Set();
+ const { RESERVED_IDENTIFIER } = getPropertyName();
for (const [name, v] of cssData.exports) {
const usedName = generateContext.moduleGraph
.getExportInfo(module, name)
@@ -156,8 +160,6 @@ class CssGenerator extends Generator {
}
let identifier = Template.toIdentifier(usedName);
- const { RESERVED_IDENTIFIER } = require("../util/propertyName");
-
if (RESERVED_IDENTIFIER.has(identifier)) {
identifier = `_${identifier}`;
}
diff --git a/lib/dependencies/HarmonyExportDependencyParserPlugin.js b/lib/dependencies/HarmonyExportDependencyParserPlugin.js
index dfb9f54639f..eb6162d366e 100644
--- a/lib/dependencies/HarmonyExportDependencyParserPlugin.js
+++ b/lib/dependencies/HarmonyExportDependencyParserPlugin.js
@@ -77,13 +77,16 @@ module.exports = class HarmonyExportDependencyParserPlugin {
clearDep.loc = /** @type {DependencyLocation} */ (statement.loc);
clearDep.loc.index = -1;
parser.state.module.addPresentationalDependency(clearDep);
- const { defer } = getImportMode(parser, statement);
- if (defer) {
- const error = new WebpackError(
- "Deferred re-export (`export defer * as namespace from '...'`) is not a part of the Import Defer proposal.\nUse the following code instead:\n import defer * as namespace from '...';\n export { namespace };"
- );
- error.loc = statement.loc || undefined;
- parser.state.current.addError(error);
+ let defer = false;
+ if (this.deferImport) {
+ ({ defer } = getImportMode(parser, statement));
+ if (defer) {
+ const error = new WebpackError(
+ "Deferred re-export (`export defer * as namespace from '...'`) is not a part of the Import Defer proposal.\nUse the following code instead:\n import defer * as namespace from '...';\n export { namespace };"
+ );
+ error.loc = statement.loc || undefined;
+ parser.state.current.addError(error);
+ }
}
const sideEffectDep = new HarmonyImportSideEffectDependency(
/** @type {string} */ (source),
@@ -202,7 +205,9 @@ module.exports = class HarmonyExportDependencyParserPlugin {
parser.state.harmonyStarExports || new HarmonyStarExportsList();
}
const attributes = getImportAttributes(statement);
- const { defer } = getImportMode(parser, statement);
+ const defer = this.deferImport
+ ? getImportMode(parser, statement).defer
+ : false;
const dep = new HarmonyExportImportedSpecifierDependency(
/** @type {string} */
(source),
diff --git a/lib/dependencies/HarmonyImportDependencyParserPlugin.js b/lib/dependencies/HarmonyImportDependencyParserPlugin.js
index 4e131dda382..45a230c23c9 100644
--- a/lib/dependencies/HarmonyImportDependencyParserPlugin.js
+++ b/lib/dependencies/HarmonyImportDependencyParserPlugin.js
@@ -124,17 +124,20 @@ module.exports = class HarmonyImportDependencyParserPlugin {
parser.state.module.addPresentationalDependency(clearDep);
parser.unsetAsiPosition(/** @type {Range} */ (statement.range)[1]);
const attributes = getImportAttributes(statement);
- const { defer } = getImportMode(parser, statement);
- if (
- defer &&
- (statement.specifiers.length !== 1 ||
- statement.specifiers[0].type !== "ImportNamespaceSpecifier")
- ) {
- const error = new WebpackError(
- "Deferred import can only be used with `import * as namespace from '...'` syntax."
- );
- error.loc = statement.loc || undefined;
- parser.state.current.addError(error);
+ let defer = false;
+ if (this.deferImport) {
+ ({ defer } = getImportMode(parser, statement));
+ if (
+ defer &&
+ (statement.specifiers.length !== 1 ||
+ statement.specifiers[0].type !== "ImportNamespaceSpecifier")
+ ) {
+ const error = new WebpackError(
+ "Deferred import can only be used with `import * as namespace from '...'` syntax."
+ );
+ error.loc = statement.loc || undefined;
+ parser.state.current.addError(error);
+ }
}
const sideEffectDep = new HarmonyImportSideEffectDependency(
/** @type {string} */ (source),
@@ -150,7 +153,9 @@ module.exports = class HarmonyImportDependencyParserPlugin {
PLUGIN_NAME,
(statement, source, id, name) => {
const ids = id === null ? [] : [id];
- const { defer } = getImportMode(parser, statement);
+ const defer = this.deferImport
+ ? getImportMode(parser, statement).defer
+ : false;
parser.tagVariable(name, harmonySpecifierTag, {
name,
source,
@@ -391,7 +396,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
/**
* @param {JavascriptParser} parser parser
* @param {ExportNamedDeclaration | ExportAllDeclaration | ImportDeclaration} node node
- * @returns {{defer: boolean}} import attributes
+ * @returns {{ defer: boolean }} import attributes
*/
function getImportMode(parser, node) {
const result = { defer: "phase" in node && node.phase === "defer" };
diff --git a/lib/esm/ModuleChunkFormatPlugin.js b/lib/esm/ModuleChunkFormatPlugin.js
index f6a6331b4f2..8d26a4314b8 100644
--- a/lib/esm/ModuleChunkFormatPlugin.js
+++ b/lib/esm/ModuleChunkFormatPlugin.js
@@ -196,17 +196,17 @@ class ModuleChunkFormatPlugin {
const hotUpdateChunk = chunk instanceof HotUpdateChunk ? chunk : null;
const source = new ConcatSource();
source.add(
- `export const __webpack_id__ = ${JSON.stringify(chunk.id)};\n`
+ `export const ${RuntimeGlobals.esmId} = ${JSON.stringify(chunk.id)};\n`
);
source.add(
- `export const __webpack_ids__ = ${JSON.stringify(chunk.ids)};\n`
+ `export const ${RuntimeGlobals.esmIds} = ${JSON.stringify(chunk.ids)};\n`
);
- source.add("export const __webpack_modules__ = ");
+ source.add(`export const ${RuntimeGlobals.esmModules} = `);
source.add(modules);
source.add(";\n");
const runtimeModules = chunkGraph.getChunkRuntimeModulesInOrder(chunk);
if (runtimeModules.length > 0) {
- source.add("export const __webpack_runtime__ =\n");
+ source.add(`export const ${RuntimeGlobals.esmRuntime} =\n`);
source.add(
Template.renderChunkRuntimeModules(runtimeModules, renderContext)
);
diff --git a/lib/esm/ModuleChunkLoadingRuntimeModule.js b/lib/esm/ModuleChunkLoadingRuntimeModule.js
index cd2b8e61b37..3df1e1e3a95 100644
--- a/lib/esm/ModuleChunkLoadingRuntimeModule.js
+++ b/lib/esm/ModuleChunkLoadingRuntimeModule.js
@@ -168,29 +168,33 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
withLoading || withExternalInstallChunk
? `var installChunk = ${runtimeTemplate.basicFunction("data", [
runtimeTemplate.destructureObject(
- ["__webpack_ids__", "__webpack_modules__", "__webpack_runtime__"],
+ [
+ RuntimeGlobals.esmIds,
+ RuntimeGlobals.esmModules,
+ RuntimeGlobals.esmRuntime
+ ],
"data"
),
'// add "modules" to the modules object,',
'// then flag all "ids" as loaded and fire callback',
"var moduleId, chunkId, i = 0;",
- "for(moduleId in __webpack_modules__) {",
+ `for(moduleId in ${RuntimeGlobals.esmModules}) {`,
Template.indent([
- `if(${RuntimeGlobals.hasOwnProperty}(__webpack_modules__, moduleId)) {`,
+ `if(${RuntimeGlobals.hasOwnProperty}(${RuntimeGlobals.esmModules}, moduleId)) {`,
Template.indent(
- `${RuntimeGlobals.moduleFactories}[moduleId] = __webpack_modules__[moduleId];`
+ `${RuntimeGlobals.moduleFactories}[moduleId] = ${RuntimeGlobals.esmModules}[moduleId];`
),
"}"
]),
"}",
- `if(__webpack_runtime__) __webpack_runtime__(${RuntimeGlobals.require});`,
- "for(;i < __webpack_ids__.length; i++) {",
+ `if(${RuntimeGlobals.esmRuntime}) ${RuntimeGlobals.esmRuntime}(${RuntimeGlobals.require});`,
+ `for(;i < ${RuntimeGlobals.esmIds}.length; i++) {`,
Template.indent([
- "chunkId = __webpack_ids__[i];",
+ `chunkId = ${RuntimeGlobals.esmIds}[i];`,
`if(${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) && installedChunks[chunkId]) {`,
Template.indent("installedChunks[chunkId][0]();"),
"}",
- "installedChunks[__webpack_ids__[i]] = 0;"
+ `installedChunks[${RuntimeGlobals.esmIds}[i]] = 0;`
]),
"}",
withOnChunkLoad ? `${RuntimeGlobals.onChunksLoaded}();` : ""
@@ -365,8 +369,8 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
"// start update chunk loading",
`var url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkUpdateScriptFilename}(chunkId);`,
`var onResolve = ${runtimeTemplate.basicFunction("obj", [
- "var updatedModules = obj.__webpack_modules__;",
- "var updatedRuntime = obj.__webpack_runtime__;",
+ `var updatedModules = obj.${RuntimeGlobals.esmModules};`,
+ `var updatedRuntime = obj.${RuntimeGlobals.esmRuntime};`,
"if(updatedRuntime) currentUpdateRuntime.push(updatedRuntime);",
"for(var moduleId in updatedModules) {",
Template.indent([
diff --git a/lib/optimize/ConcatenatedModule.js b/lib/optimize/ConcatenatedModule.js
index 417f025a95f..f1703343e2e 100644
--- a/lib/optimize/ConcatenatedModule.js
+++ b/lib/optimize/ConcatenatedModule.js
@@ -66,6 +66,7 @@ const {
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
/** @typedef {import("../DependencyTemplates")} DependencyTemplates */
/** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
+/** @typedef {import("../ExternalModule")} ExternalModule */
/** @typedef {import("../Module").BuildCallback} BuildCallback */
/** @typedef {import("../Module").BuildInfo} BuildInfo */
/** @typedef {import("../Module").BuildMeta} BuildMeta */
@@ -94,7 +95,6 @@ const {
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
/** @typedef {import("../util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
-
/**
* @template T
* @typedef {import("../InitFragment")} InitFragment
@@ -159,6 +159,7 @@ if (!ReferencerClass.prototype.PropertyDefinition) {
* @property {Map | undefined} rawExportMap
* @property {string=} namespaceExportSymbol
* @property {string | undefined} namespaceObjectName
+ * @property {ConcatenationScope | undefined} concatenationScope
* @property {boolean} interopNamespaceObjectUsed "default-with-named" namespace
* @property {string | undefined} interopNamespaceObjectName "default-with-named" namespace
* @property {boolean} interopNamespaceObject2Used "default-only" namespace
@@ -668,6 +669,7 @@ const getFinalName = (
/**
* @typedef {object} ConcatenateModuleHooks
* @property {SyncBailHook<[Record, ConcatenatedModule], boolean | void>} exportsDefinitions
+ * @property {SyncBailHook<[Partial, ConcatenatedModuleInfo], boolean | void>} concatenatedModuleInfo
*/
/** @type {WeakMap} */
@@ -714,7 +716,11 @@ class ConcatenatedModule extends Module {
let hooks = compilationHooksMap.get(compilation);
if (hooks === undefined) {
hooks = {
- exportsDefinitions: new SyncBailHook(["definitions", "module"])
+ exportsDefinitions: new SyncBailHook(["definitions", "module"]),
+ concatenatedModuleInfo: new SyncBailHook([
+ "updatedInfo",
+ "concatenatedModuleInfo"
+ ])
};
compilationHooksMap.set(compilation, hooks);
}
@@ -945,7 +951,8 @@ class ConcatenatedModule extends Module {
/** @type {Map} */
const existingEntries = new Map();
const deferEnabled =
- this.compilation && this.compilation.options.experiments.deferImport;
+ /** @type {Compilation} */
+ (this.compilation).options.experiments.deferImport;
/**
* @param {Module} module a module
@@ -1180,6 +1187,10 @@ class ConcatenatedModule extends Module {
runtime: generationRuntime,
codeGenerationResults
}) {
+ const { concatenatedModuleInfo } = ConcatenatedModule.getCompilationHooks(
+ /** @type {Compilation} */ (this.compilation)
+ );
+
/** @type {RuntimeRequirements} */
const runtimeRequirements = new Set();
const runtime = intersectRuntime(generationRuntime, this._runtime);
@@ -1195,6 +1206,9 @@ class ConcatenatedModule extends Module {
/** @type {Set} */
const neededNamespaceObjects = new Set();
+ // List of all used names to avoid conflicts
+ const allUsedNames = new Set(RESERVED_NAMES);
+
// Generate source code and analyse scopes
// Prepare a ReplaceSource for the final source
for (const info of moduleToInfoMap.values()) {
@@ -1207,12 +1221,11 @@ class ConcatenatedModule extends Module {
chunkGraph,
runtime,
/** @type {CodeGenerationResults} */
- (codeGenerationResults)
+ (codeGenerationResults),
+ allUsedNames
);
}
- // List of all used names to avoid conflicts
- const allUsedNames = new Set(RESERVED_NAMES);
// Updated Top level declarations are created by renaming
/** @type {Set} */
const topLevelDeclarations = new Set();
@@ -1321,6 +1334,75 @@ class ConcatenatedModule extends Module {
}
}
+ /**
+ * @param {string} name the name to find a new name for
+ * @param {ConcatenatedModuleInfo} info the info of the module
+ * @param {Reference[]} references the references to the name
+ * @returns {string|undefined} the new name or undefined if the name is not found
+ */
+ const _findNewName = (name, info, references) => {
+ const { usedNames, alreadyCheckedScopes } = getUsedNamesInScopeInfo(
+ usedNamesInScopeInfo,
+ info.module.identifier(),
+ name
+ );
+ if (allUsedNames.has(name) || usedNames.has(name)) {
+ for (const ref of references) {
+ addScopeSymbols(
+ ref.from,
+ usedNames,
+ alreadyCheckedScopes,
+ ignoredScopes
+ );
+ }
+ const newName = findNewName(
+ name,
+ allUsedNames,
+ usedNames,
+ info.module.readableIdentifier(requestShortener)
+ );
+ allUsedNames.add(newName);
+ info.internalNames.set(name, newName);
+ topLevelDeclarations.add(newName);
+ return newName;
+ }
+ };
+
+ /**
+ * @param {string} name the name to find a new name for
+ * @param {ConcatenatedModuleInfo} info the info of the module
+ * @param {Reference[]} references the references to the name
+ * @returns {string|undefined} the new name or undefined if the name is not found
+ */
+ const _findNewNameForSpecifier = (name, info, references) => {
+ const { usedNames: moduleUsedNames, alreadyCheckedScopes } =
+ getUsedNamesInScopeInfo(
+ usedNamesInScopeInfo,
+ info.module.identifier(),
+ name
+ );
+ const referencesUsedNames = new Set();
+ for (const ref of references) {
+ addScopeSymbols(
+ ref.from,
+ referencesUsedNames,
+ alreadyCheckedScopes,
+ ignoredScopes
+ );
+ }
+ if (moduleUsedNames.has(name) || referencesUsedNames.has(name)) {
+ const newName = findNewName(
+ name,
+ allUsedNames,
+ new Set([...moduleUsedNames, ...referencesUsedNames]),
+ info.module.readableIdentifier(requestShortener)
+ );
+ allUsedNames.add(newName);
+ topLevelDeclarations.add(newName);
+ return newName;
+ }
+ };
+
// generate names for symbols
for (const info of moduleToInfoMap.values()) {
const { usedNames: namespaceObjectUsedNames } = getUsedNamesInScopeInfo(
@@ -1333,30 +1415,9 @@ class ConcatenatedModule extends Module {
const variables = /** @type {Scope} */ (info.moduleScope).variables;
for (const variable of variables) {
const name = variable.name;
- const { usedNames, alreadyCheckedScopes } = getUsedNamesInScopeInfo(
- usedNamesInScopeInfo,
- info.module.identifier(),
- name
- );
- if (allUsedNames.has(name) || usedNames.has(name)) {
- const references = getAllReferences(variable);
- for (const ref of references) {
- addScopeSymbols(
- ref.from,
- usedNames,
- alreadyCheckedScopes,
- ignoredScopes
- );
- }
- const newName = findNewName(
- name,
- allUsedNames,
- usedNames,
- info.module.readableIdentifier(requestShortener)
- );
- allUsedNames.add(newName);
- info.internalNames.set(name, newName);
- topLevelDeclarations.add(newName);
+ const references = getAllReferences(variable);
+ const newName = _findNewName(name, info, references);
+ if (newName) {
const source = /** @type {ReplaceSource} */ (info.source);
const allIdentifiers = new Set([
...references.map((r) => r.identifier),
@@ -1493,14 +1554,48 @@ class ConcatenatedModule extends Module {
for (const info of moduleToInfoMap.values()) {
if (info.type === "concatenated") {
const globalScope = /** @type {Scope} */ (info.globalScope);
+ // group references by name
+ const referencesByName = new Map();
for (const reference of globalScope.through) {
const name = reference.identifier.name;
+ if (!referencesByName.has(name)) {
+ referencesByName.set(name, []);
+ }
+ referencesByName.get(name).push(reference);
+ }
+ for (const [name, references] of referencesByName) {
const match = ConcatenationScope.matchModuleReference(name);
if (match) {
const referencedInfo = modulesWithInfo[match.index];
if (referencedInfo.type === "reference") {
throw new Error("Module reference can't point to a reference");
}
+ const concatenationScope = /** @type {ConcatenatedModuleInfo} */ (
+ referencedInfo
+ ).concatenationScope;
+ const exportId = match.ids[0];
+ const specifier =
+ concatenationScope && concatenationScope.getRawExport(exportId);
+ if (specifier) {
+ const newName = _findNewNameForSpecifier(
+ specifier,
+ info,
+ references
+ );
+ const initFragmentChanged =
+ newName &&
+ concatenatedModuleInfo.call(
+ {
+ rawExportMap: new Map([
+ [exportId, /** @type {string} */ (newName)]
+ ])
+ },
+ /** @type {ConcatenatedModuleInfo} */ (referencedInfo)
+ );
+ if (initFragmentChanged) {
+ concatenationScope.setRawExportMap(exportId, newName);
+ }
+ }
const finalName = getFinalName(
moduleGraph,
referencedInfo,
@@ -1517,10 +1612,13 @@ class ConcatenatedModule extends Module {
(info.module.buildMeta).strictHarmonyModule,
match.asiSafe
);
- const r = /** @type {Range} */ (reference.identifier.range);
- const source = /** @type {ReplaceSource} */ (info.source);
- // range is extended by 2 chars to cover the appended "._"
- source.replace(r[0], r[1] + 1, finalName);
+
+ for (const reference of references) {
+ const r = /** @type {Range} */ (reference.identifier.range);
+ const source = /** @type {ReplaceSource} */ (info.source);
+ // range is extended by 2 chars to cover the appended "._"
+ source.replace(r[0], r[1] + 1, finalName);
+ }
}
}
}
@@ -1712,7 +1810,8 @@ ${defineGetters}`
/** @type {InitFragment[]} */
const chunkInitFragments = [];
const deferEnabled =
- this.compilation && this.compilation.options.experiments.deferImport;
+ /** @type {Compilation} */
+ (this.compilation).options.experiments.deferImport;
// evaluate modules in order
for (const rawInfo of modulesWithInfo) {
@@ -1788,18 +1887,19 @@ ${defineGetters}`
runtimeTemplate,
info.module.getExportsType(
moduleGraph,
- this.rootModule.buildMeta &&
- this.rootModule.buildMeta.strictHarmonyModule
+ /** @type {BuildMeta} */
+ (this.rootModule.buildMeta).strictHarmonyModule
),
moduleId,
// an async module will opt-out of the concat module optimization.
[]
);
result.add(`var ${info.deferredName} = ${loader};`);
+ name = info.deferredName;
} else {
result.add(`var ${info.name} = __webpack_require__(${moduleId});`);
+ name = info.name;
}
- name = info.name;
break;
}
default:
@@ -1866,6 +1966,7 @@ ${defineGetters}`
* @param {ChunkGraph} chunkGraph chunkGraph
* @param {RuntimeSpec} runtime runtime
* @param {CodeGenerationResults} codeGenerationResults codeGenerationResults
+ * @param {Set} usedNames used names
*/
_analyseModule(
modulesMap,
@@ -1875,13 +1976,18 @@ ${defineGetters}`
moduleGraph,
chunkGraph,
runtime,
- codeGenerationResults
+ codeGenerationResults,
+ usedNames
) {
if (info.type === "concatenated") {
const m = info.module;
try {
// Create a concatenation scope to track and capture information
- const concatenationScope = new ConcatenationScope(modulesMap, info);
+ const concatenationScope = new ConcatenationScope(
+ modulesMap,
+ info,
+ usedNames
+ );
// TODO cache codeGeneration results
const codeGenResult = m.codeGeneration({
@@ -1941,6 +2047,7 @@ ${defineGetters}`
info.chunkInitFragments = chunkInitFragments;
info.globalScope = globalScope;
info.moduleScope = moduleScope;
+ info.concatenationScope = concatenationScope;
} catch (err) {
/** @type {Error} */
(err).message +=
@@ -1989,7 +2096,8 @@ ${defineGetters}`
interopNamespaceObject2Used: false,
interopNamespaceObject2Name: undefined,
interopDefaultAccessUsed: false,
- interopDefaultAccessName: undefined
+ interopDefaultAccessName: undefined,
+ concatenationScope: undefined
};
break;
case "external":
diff --git a/lib/optimize/ModuleConcatenationPlugin.js b/lib/optimize/ModuleConcatenationPlugin.js
index 559b0d32ac1..8d9618df01b 100644
--- a/lib/optimize/ModuleConcatenationPlugin.js
+++ b/lib/optimize/ModuleConcatenationPlugin.js
@@ -149,6 +149,7 @@ class ModuleConcatenationPlugin {
chunkGraph,
moduleGraph
};
+ const deferEnabled = compilation.options.experiments.deferImport;
logger.time("select relevant modules");
for (const module of modules) {
let canBeRoot = true;
@@ -223,7 +224,7 @@ class ModuleConcatenationPlugin {
canBeInner = false;
}
- if (moduleGraph.isDeferred(module)) {
+ if (deferEnabled && moduleGraph.isDeferred(module)) {
setInnerBailoutReason(module, "Module is deferred");
canBeInner = false;
}
diff --git a/lib/util/magicComment.js b/lib/util/magicComment.js
index 6abac1ed0b4..173dfe53f86 100644
--- a/lib/util/magicComment.js
+++ b/lib/util/magicComment.js
@@ -5,9 +5,13 @@
"use strict";
+const memoize = require("./memoize");
+
+const getVm = memoize(() => require("vm"));
+
// regexp to match at least one "magic comment"
module.exports.createMagicCommentContext = () =>
- require("vm").createContext(undefined, {
+ getVm().createContext(undefined, {
name: "Webpack Magic Comment Parser",
codeGeneration: { strings: false, wasm: false }
});
diff --git a/package.json b/package.json
index 641fba83850..50492bfd4e9 100644
--- a/package.json
+++ b/package.json
@@ -112,13 +112,13 @@
"@babel/preset-react": "^7.27.1",
"@codspeed/core": "^4.0.1",
"@eslint/js": "^9.29.0",
- "@eslint/markdown": "^7.0.0",
- "@stylistic/eslint-plugin": "^5.0.0",
+ "@eslint/markdown": "^7.1.0",
+ "@stylistic/eslint-plugin": "^5.2.2",
"@types/glob-to-regexp": "^0.4.4",
"@types/graceful-fs": "^4.1.9",
"@types/jest": "^30.0.0",
"@types/mime-types": "^2.1.4",
- "@types/node": "^24.0.13",
+ "@types/node": "^24.1.0",
"@types/xxhashjs": "^0.2.4",
"assemblyscript": "^0.28.2",
"babel-loader": "^10.0.0",
@@ -133,24 +133,24 @@
"es6-promise-polyfill": "^1.2.0",
"eslint": "^9.29.0",
"eslint-config-prettier": "^10.1.1",
- "eslint-config-webpack": "^4.4.1",
+ "eslint-config-webpack": "^4.5.1",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jest": "^29.0.1",
"eslint-plugin-jsdoc": "^51.2.3",
"eslint-plugin-n": "^17.21.0",
"eslint-plugin-prettier": "^5.5.0",
- "eslint-plugin-unicorn": "^59.0.1",
+ "eslint-plugin-unicorn": "^60.0.0",
"file-loader": "^6.0.0",
"fork-ts-checker-webpack-plugin": "^9.0.2",
"globals": "^16.0.0",
"hash-wasm": "^4.9.0",
"husky": "^9.0.11",
"istanbul": "^0.4.5",
- "jest": "^30.0.3",
- "jest-circus": "^30.0.3",
- "jest-cli": "^30.0.3",
- "jest-diff": "^30.0.3",
- "jest-environment-node": "^30.0.2",
+ "jest": "^30.0.5",
+ "jest-circus": "^30.0.5",
+ "jest-cli": "^30.0.5",
+ "jest-diff": "^30.0.5",
+ "jest-environment-node": "^30.0.5",
"jest-junit": "^16.0.0",
"json-loader": "^0.5.7",
"json5": "^2.1.3",
@@ -167,7 +167,7 @@
"open-cli": "^8.0.0",
"prettier": "^3.6.0",
"prettier-2": "npm:prettier@^2",
- "pretty-format": "^30.0.2",
+ "pretty-format": "^30.0.5",
"pug": "^3.0.3",
"pug-loader": "^2.4.0",
"raw-loader": "^4.0.1",
diff --git a/test/Defaults.unittest.js b/test/Defaults.unittest.js
index d92a9c7b14e..f9c3f9c3cf0 100644
--- a/test/Defaults.unittest.js
+++ b/test/Defaults.unittest.js
@@ -97,6 +97,7 @@ describe("snapshots", () => {
"buildHttp": undefined,
"cacheUnaffected": false,
"css": undefined,
+ "deferImport": false,
"futureDefaults": false,
"layers": false,
"lazyCompilation": undefined,
@@ -1804,15 +1805,15 @@ describe("snapshots", () => {
{ optimization: { runtimeChunk: "single" } },
(e) =>
e.toMatchInlineSnapshot(`
- - Expected
- + Received
-
- @@ ... @@
- - "runtimeChunk": false,
- + "runtimeChunk": Object {
- + "name": [Function name],
- + },
- `)
+ - Expected
+ + Received
+
+ @@ ... @@
+ - "runtimeChunk": false,
+ + "runtimeChunk": Object {
+ + "name": [Function name],
+ + },
+ `)
);
test(
@@ -2025,9 +2026,10 @@ describe("snapshots", () => {
@@ ... @@
- "cacheUnaffected": false,
- "css": undefined,
- - "futureDefaults": false,
+ "cacheUnaffected": true,
+ "css": true,
+ @@ ... @@
+ - "futureDefaults": false,
+ "futureDefaults": true,
@@ ... @@
+ },
@@ -2491,9 +2493,10 @@ describe("snapshots", () => {
@@ ... @@
- "cacheUnaffected": false,
- "css": undefined,
- - "futureDefaults": false,
+ "cacheUnaffected": true,
+ "css": true,
+ @@ ... @@
+ - "futureDefaults": false,
+ "futureDefaults": true,
@@ ... @@
+ },
@@ -2637,9 +2640,10 @@ describe("snapshots", () => {
@@ ... @@
- "cacheUnaffected": false,
- "css": undefined,
- - "futureDefaults": false,
+ "cacheUnaffected": true,
+ "css": false,
+ @@ ... @@
+ - "futureDefaults": false,
+ "futureDefaults": true,
@@ ... @@
+ },
diff --git a/test/__snapshots__/ConfigCacheTestCases.longtest.js.snap b/test/__snapshots__/ConfigCacheTestCases.longtest.js.snap
index f38dbd5ef75..2d22d508fc2 100644
--- a/test/__snapshots__/ConfigCacheTestCases.longtest.js.snap
+++ b/test/__snapshots__/ConfigCacheTestCases.longtest.js.snap
@@ -10148,3 +10148,1095 @@ exports[`ConfigCacheTestCases css webpack-ignore exported tests should compile 1
"
`;
+
+exports[`ConfigCacheTestCases library concatenate-modules-named-import-externals concatenate-modules-named-import-externals should compile 1`] = `
+"import { HomeLayout as lib_HomeLayout_0, a } from \\"externals0\\";
+import { HomeLayout as HomeLayout_0, a as a_0 } from \\"externals1\\";
+import { default as default_0 } from \\"externals2\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals3__ from \\"externals3\\";
+import \\"externals4\\";
+/*!*****************************!*\\\\
+ !*** ./test.js + 6 modules ***!
+ \\\\*****************************/
+
+;// external \\"externals0\\"
+
+;// external \\"externals1\\"
+
+;// external \\"externals2\\"
+
+;// external \\"externals3\\"
+const external_externals3_namespaceObject = __WEBPACK_EXTERNAL_MODULE_externals3__;
+;// external \\"externals4\\"
+
+;// ./lib.js
+
+
+const { HomeLayout: lib_HomeLayout = 123 } = {};
+console.log({ HomeLayout: lib_HomeLayout });
+{
+ const { HomeLayout = lib_HomeLayout_0 } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = lib_HomeLayout_0 } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = \\"111\\" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+
+;// ./test.js
+// re export
+
+
+// named import
+;
+
+
+// default import
+
+
+// namespace import
+
+
+// side effect only import
+
+
+
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+HomeLayout_0;
+a;
+a_0;
+default_0;
+external_externals3_namespaceObject;
+export { lib_HomeLayout as HomeLayout, a };
+"
+`;
+
+exports[`ConfigCacheTestCases library concatenate-modules-named-import-externals concatenate-modules-named-import-externals should compile 2`] = `
+"import { HomeLayout as lib_HomeLayout_0, a } from \\"externals0\\";
+import { HomeLayout as HomeLayout_0, a as a_0 } from \\"externals1\\";
+import { default as default_0 } from \\"externals2\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals3__ from \\"externals3\\";
+import \\"externals4\\";
+/*!*****************************!*\\\\
+ !*** ./test.js + 6 modules ***!
+ \\\\*****************************/
+
+;// external \\"externals0\\"
+
+;// external \\"externals1\\"
+
+;// external \\"externals2\\"
+
+;// external \\"externals3\\"
+const external_externals3_namespaceObject = __WEBPACK_EXTERNAL_MODULE_externals3__;
+;// external \\"externals4\\"
+
+;// ./lib.js
+
+
+const { HomeLayout: lib_HomeLayout = 123 } = {};
+console.log({ HomeLayout: lib_HomeLayout });
+{
+ const { HomeLayout = lib_HomeLayout_0 } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = lib_HomeLayout_0 } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = \\"111\\" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+
+;// ./test.js
+// re export
+
+
+// named import
+;
+
+
+// default import
+
+
+// namespace import
+
+
+// side effect only import
+
+
+
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+HomeLayout_0;
+a;
+a_0;
+default_0;
+external_externals3_namespaceObject;
+export { lib_HomeLayout as HomeLayout, a };
+"
+`;
+
+exports[`ConfigCacheTestCases library concatenate-modules-named-import-externals concatenate-modules-named-import-externals should pre-compile to fill disk cache (1st) 1`] = `
+"import { HomeLayout as lib_HomeLayout_0, a } from \\"externals0\\";
+import { HomeLayout as HomeLayout_0, a as a_0 } from \\"externals1\\";
+import { default as default_0 } from \\"externals2\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals3__ from \\"externals3\\";
+import \\"externals4\\";
+/*!*****************************!*\\\\
+ !*** ./test.js + 6 modules ***!
+ \\\\*****************************/
+
+;// external \\"externals0\\"
+
+;// external \\"externals1\\"
+
+;// external \\"externals2\\"
+
+;// external \\"externals3\\"
+const external_externals3_namespaceObject = __WEBPACK_EXTERNAL_MODULE_externals3__;
+;// external \\"externals4\\"
+
+;// ./lib.js
+
+
+const { HomeLayout: lib_HomeLayout = 123 } = {};
+console.log({ HomeLayout: lib_HomeLayout });
+{
+ const { HomeLayout = lib_HomeLayout_0 } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = lib_HomeLayout_0 } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = \\"111\\" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+
+;// ./test.js
+// re export
+
+
+// named import
+;
+
+
+// default import
+
+
+// namespace import
+
+
+// side effect only import
+
+
+
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+HomeLayout_0;
+a;
+a_0;
+default_0;
+external_externals3_namespaceObject;
+export { lib_HomeLayout as HomeLayout, a };
+"
+`;
+
+exports[`ConfigCacheTestCases library concatenate-modules-named-import-externals concatenate-modules-named-import-externals should pre-compile to fill disk cache (2nd) 1`] = `
+"import { HomeLayout as lib_HomeLayout_0, a } from \\"externals0\\";
+import { HomeLayout as HomeLayout_0, a as a_0 } from \\"externals1\\";
+import { default as default_0 } from \\"externals2\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals3__ from \\"externals3\\";
+import \\"externals4\\";
+/*!*****************************!*\\\\
+ !*** ./test.js + 6 modules ***!
+ \\\\*****************************/
+
+;// external \\"externals0\\"
+
+;// external \\"externals1\\"
+
+;// external \\"externals2\\"
+
+;// external \\"externals3\\"
+const external_externals3_namespaceObject = __WEBPACK_EXTERNAL_MODULE_externals3__;
+;// external \\"externals4\\"
+
+;// ./lib.js
+
+
+const { HomeLayout: lib_HomeLayout = 123 } = {};
+console.log({ HomeLayout: lib_HomeLayout });
+{
+ const { HomeLayout = lib_HomeLayout_0 } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = lib_HomeLayout_0 } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = \\"111\\" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+
+;// ./test.js
+// re export
+
+
+// named import
+;
+
+
+// default import
+
+
+// namespace import
+
+
+// side effect only import
+
+
+
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+HomeLayout_0;
+a;
+a_0;
+default_0;
+external_externals3_namespaceObject;
+export { lib_HomeLayout as HomeLayout, a };
+"
+`;
+
+exports[`ConfigCacheTestCases library modern-module-named-import-externals modern-module-named-import-externals should compile 1`] = `
+"import * as __WEBPACK_EXTERNAL_MODULE_externals0__ from \\"externals0\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals1__ from \\"externals1\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals2__ from \\"externals2\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals3__ from \\"externals3\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals4__ from \\"externals4\\";
+/******/ var __webpack_modules__ = ([
+/* 0 */,
+/* 1 */,
+/* 2 */
+/*!*****************************!*\\\\
+ !*** external \\"externals0\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"HomeLayout\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals0__.HomeLayout), [\\"a\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals0__.a) });
+
+/***/ }),
+/* 3 */
+/*!*****************************!*\\\\
+ !*** external \\"externals1\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"HomeLayout\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals1__.HomeLayout), [\\"a\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals1__.a) });
+
+/***/ }),
+/* 4 */
+/*!*****************************!*\\\\
+ !*** external \\"externals2\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"default\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals2__[\\"default\\"]) });
+
+/***/ }),
+/* 5 */
+/*!*****************************!*\\\\
+ !*** external \\"externals3\\" ***!
+ \\\\*****************************/
+/***/ ((module) => {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_externals3__;
+
+/***/ }),
+/* 6 */
+/*!*****************************!*\\\\
+ !*** external \\"externals4\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ });
+
+/***/ }),
+/* 7 */
+/*!****************!*\\\\
+ !*** ./lib.js ***!
+ \\\\****************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ HomeLayout: () => (/* binding */ HomeLayout)
+/* harmony export */ });
+/* harmony import */ var externals0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! externals0 */ 2);
+
+
+const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+console.log({ HomeLayout });
+{
+ const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = \\"111\\" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+
+
+/***/ })
+/******/ ]);
+/************************************************************************/
+/******/ // The module cache
+/******/ var __webpack_module_cache__ = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/ // Check if module is in cache
+/******/ var cachedModule = __webpack_module_cache__[moduleId];
+/******/ if (cachedModule !== undefined) {
+/******/ return cachedModule.exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = __webpack_module_cache__[moduleId] = {
+/******/ // no module.id needed
+/******/ // no module.loaded needed
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/************************************************************************/
+/******/ /* webpack/runtime/define property getters */
+/******/ (() => {
+/******/ // define getter functions for harmony exports
+/******/ __webpack_require__.d = (exports, definition) => {
+/******/ for(var key in definition) {
+/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
+/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
+/******/ }
+/******/ }
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/hasOwnProperty shorthand */
+/******/ (() => {
+/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ })();
+/******/
+/************************************************************************/
+var __webpack_exports__ = {};
+// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
+(() => {
+/*!*****************!*\\\\
+ !*** ./test.js ***!
+ \\\\*****************/
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ HomeLayout: () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_5__.HomeLayout),
+/* harmony export */ a: () => (/* reexport safe */ externals0__WEBPACK_IMPORTED_MODULE_0__.a)
+/* harmony export */ });
+/* harmony import */ var externals0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! externals0 */ 2);
+/* harmony import */ var externals1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! externals1 */ 3);
+/* harmony import */ var externals2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! externals2 */ 4);
+/* harmony import */ var externals3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! externals3 */ 5);
+/* harmony import */ var externals4__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! externals4 */ 6);
+/* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib */ 7);
+// re export
+
+
+// named import
+;
+
+
+// default import
+
+
+// namespace import
+
+
+// side effect only import
+
+
+
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+externals1__WEBPACK_IMPORTED_MODULE_1__.HomeLayout;
+externals0__WEBPACK_IMPORTED_MODULE_0__.a;
+externals1__WEBPACK_IMPORTED_MODULE_1__.a;
+externals2__WEBPACK_IMPORTED_MODULE_2__[\\"default\\"];
+externals3__WEBPACK_IMPORTED_MODULE_3__;
+})();
+
+const __webpack_exports__HomeLayout = __webpack_exports__.HomeLayout;
+const __webpack_exports__a = __webpack_exports__.a;
+export { __webpack_exports__HomeLayout as HomeLayout, __webpack_exports__a as a };
+"
+`;
+
+exports[`ConfigCacheTestCases library modern-module-named-import-externals modern-module-named-import-externals should compile 2`] = `
+"import * as __WEBPACK_EXTERNAL_MODULE_externals0__ from \\"externals0\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals1__ from \\"externals1\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals2__ from \\"externals2\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals3__ from \\"externals3\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals4__ from \\"externals4\\";
+/******/ var __webpack_modules__ = ([
+/* 0 */,
+/* 1 */,
+/* 2 */
+/*!*****************************!*\\\\
+ !*** external \\"externals0\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"HomeLayout\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals0__.HomeLayout), [\\"a\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals0__.a) });
+
+/***/ }),
+/* 3 */
+/*!*****************************!*\\\\
+ !*** external \\"externals1\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"HomeLayout\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals1__.HomeLayout), [\\"a\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals1__.a) });
+
+/***/ }),
+/* 4 */
+/*!*****************************!*\\\\
+ !*** external \\"externals2\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"default\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals2__[\\"default\\"]) });
+
+/***/ }),
+/* 5 */
+/*!*****************************!*\\\\
+ !*** external \\"externals3\\" ***!
+ \\\\*****************************/
+/***/ ((module) => {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_externals3__;
+
+/***/ }),
+/* 6 */
+/*!*****************************!*\\\\
+ !*** external \\"externals4\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ });
+
+/***/ }),
+/* 7 */
+/*!****************!*\\\\
+ !*** ./lib.js ***!
+ \\\\****************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ HomeLayout: () => (/* binding */ HomeLayout)
+/* harmony export */ });
+/* harmony import */ var externals0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! externals0 */ 2);
+
+
+const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+console.log({ HomeLayout });
+{
+ const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = \\"111\\" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+
+
+/***/ })
+/******/ ]);
+/************************************************************************/
+/******/ // The module cache
+/******/ var __webpack_module_cache__ = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/ // Check if module is in cache
+/******/ var cachedModule = __webpack_module_cache__[moduleId];
+/******/ if (cachedModule !== undefined) {
+/******/ return cachedModule.exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = __webpack_module_cache__[moduleId] = {
+/******/ // no module.id needed
+/******/ // no module.loaded needed
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/************************************************************************/
+/******/ /* webpack/runtime/define property getters */
+/******/ (() => {
+/******/ // define getter functions for harmony exports
+/******/ __webpack_require__.d = (exports, definition) => {
+/******/ for(var key in definition) {
+/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
+/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
+/******/ }
+/******/ }
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/hasOwnProperty shorthand */
+/******/ (() => {
+/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ })();
+/******/
+/************************************************************************/
+var __webpack_exports__ = {};
+// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
+(() => {
+/*!*****************!*\\\\
+ !*** ./test.js ***!
+ \\\\*****************/
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ HomeLayout: () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_5__.HomeLayout),
+/* harmony export */ a: () => (/* reexport safe */ externals0__WEBPACK_IMPORTED_MODULE_0__.a)
+/* harmony export */ });
+/* harmony import */ var externals0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! externals0 */ 2);
+/* harmony import */ var externals1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! externals1 */ 3);
+/* harmony import */ var externals2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! externals2 */ 4);
+/* harmony import */ var externals3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! externals3 */ 5);
+/* harmony import */ var externals4__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! externals4 */ 6);
+/* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib */ 7);
+// re export
+
+
+// named import
+;
+
+
+// default import
+
+
+// namespace import
+
+
+// side effect only import
+
+
+
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+externals1__WEBPACK_IMPORTED_MODULE_1__.HomeLayout;
+externals0__WEBPACK_IMPORTED_MODULE_0__.a;
+externals1__WEBPACK_IMPORTED_MODULE_1__.a;
+externals2__WEBPACK_IMPORTED_MODULE_2__[\\"default\\"];
+externals3__WEBPACK_IMPORTED_MODULE_3__;
+})();
+
+const __webpack_exports__HomeLayout = __webpack_exports__.HomeLayout;
+const __webpack_exports__a = __webpack_exports__.a;
+export { __webpack_exports__HomeLayout as HomeLayout, __webpack_exports__a as a };
+"
+`;
+
+exports[`ConfigCacheTestCases library modern-module-named-import-externals modern-module-named-import-externals should pre-compile to fill disk cache (1st) 1`] = `
+"import * as __WEBPACK_EXTERNAL_MODULE_externals0__ from \\"externals0\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals1__ from \\"externals1\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals2__ from \\"externals2\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals3__ from \\"externals3\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals4__ from \\"externals4\\";
+/******/ var __webpack_modules__ = ([
+/* 0 */,
+/* 1 */,
+/* 2 */
+/*!*****************************!*\\\\
+ !*** external \\"externals0\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"HomeLayout\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals0__.HomeLayout), [\\"a\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals0__.a) });
+
+/***/ }),
+/* 3 */
+/*!*****************************!*\\\\
+ !*** external \\"externals1\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"HomeLayout\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals1__.HomeLayout), [\\"a\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals1__.a) });
+
+/***/ }),
+/* 4 */
+/*!*****************************!*\\\\
+ !*** external \\"externals2\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"default\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals2__[\\"default\\"]) });
+
+/***/ }),
+/* 5 */
+/*!*****************************!*\\\\
+ !*** external \\"externals3\\" ***!
+ \\\\*****************************/
+/***/ ((module) => {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_externals3__;
+
+/***/ }),
+/* 6 */
+/*!*****************************!*\\\\
+ !*** external \\"externals4\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ });
+
+/***/ }),
+/* 7 */
+/*!****************!*\\\\
+ !*** ./lib.js ***!
+ \\\\****************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ HomeLayout: () => (/* binding */ HomeLayout)
+/* harmony export */ });
+/* harmony import */ var externals0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! externals0 */ 2);
+
+
+const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+console.log({ HomeLayout });
+{
+ const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = \\"111\\" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+
+
+/***/ })
+/******/ ]);
+/************************************************************************/
+/******/ // The module cache
+/******/ var __webpack_module_cache__ = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/ // Check if module is in cache
+/******/ var cachedModule = __webpack_module_cache__[moduleId];
+/******/ if (cachedModule !== undefined) {
+/******/ return cachedModule.exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = __webpack_module_cache__[moduleId] = {
+/******/ // no module.id needed
+/******/ // no module.loaded needed
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/************************************************************************/
+/******/ /* webpack/runtime/define property getters */
+/******/ (() => {
+/******/ // define getter functions for harmony exports
+/******/ __webpack_require__.d = (exports, definition) => {
+/******/ for(var key in definition) {
+/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
+/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
+/******/ }
+/******/ }
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/hasOwnProperty shorthand */
+/******/ (() => {
+/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ })();
+/******/
+/************************************************************************/
+var __webpack_exports__ = {};
+// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
+(() => {
+/*!*****************!*\\\\
+ !*** ./test.js ***!
+ \\\\*****************/
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ HomeLayout: () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_5__.HomeLayout),
+/* harmony export */ a: () => (/* reexport safe */ externals0__WEBPACK_IMPORTED_MODULE_0__.a)
+/* harmony export */ });
+/* harmony import */ var externals0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! externals0 */ 2);
+/* harmony import */ var externals1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! externals1 */ 3);
+/* harmony import */ var externals2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! externals2 */ 4);
+/* harmony import */ var externals3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! externals3 */ 5);
+/* harmony import */ var externals4__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! externals4 */ 6);
+/* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib */ 7);
+// re export
+
+
+// named import
+;
+
+
+// default import
+
+
+// namespace import
+
+
+// side effect only import
+
+
+
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+externals1__WEBPACK_IMPORTED_MODULE_1__.HomeLayout;
+externals0__WEBPACK_IMPORTED_MODULE_0__.a;
+externals1__WEBPACK_IMPORTED_MODULE_1__.a;
+externals2__WEBPACK_IMPORTED_MODULE_2__[\\"default\\"];
+externals3__WEBPACK_IMPORTED_MODULE_3__;
+})();
+
+const __webpack_exports__HomeLayout = __webpack_exports__.HomeLayout;
+const __webpack_exports__a = __webpack_exports__.a;
+export { __webpack_exports__HomeLayout as HomeLayout, __webpack_exports__a as a };
+"
+`;
+
+exports[`ConfigCacheTestCases library modern-module-named-import-externals modern-module-named-import-externals should pre-compile to fill disk cache (2nd) 1`] = `
+"import * as __WEBPACK_EXTERNAL_MODULE_externals0__ from \\"externals0\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals1__ from \\"externals1\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals2__ from \\"externals2\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals3__ from \\"externals3\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals4__ from \\"externals4\\";
+/******/ var __webpack_modules__ = ([
+/* 0 */,
+/* 1 */,
+/* 2 */
+/*!*****************************!*\\\\
+ !*** external \\"externals0\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"HomeLayout\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals0__.HomeLayout), [\\"a\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals0__.a) });
+
+/***/ }),
+/* 3 */
+/*!*****************************!*\\\\
+ !*** external \\"externals1\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"HomeLayout\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals1__.HomeLayout), [\\"a\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals1__.a) });
+
+/***/ }),
+/* 4 */
+/*!*****************************!*\\\\
+ !*** external \\"externals2\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"default\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals2__[\\"default\\"]) });
+
+/***/ }),
+/* 5 */
+/*!*****************************!*\\\\
+ !*** external \\"externals3\\" ***!
+ \\\\*****************************/
+/***/ ((module) => {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_externals3__;
+
+/***/ }),
+/* 6 */
+/*!*****************************!*\\\\
+ !*** external \\"externals4\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ });
+
+/***/ }),
+/* 7 */
+/*!****************!*\\\\
+ !*** ./lib.js ***!
+ \\\\****************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ HomeLayout: () => (/* binding */ HomeLayout)
+/* harmony export */ });
+/* harmony import */ var externals0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! externals0 */ 2);
+
+
+const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+console.log({ HomeLayout });
+{
+ const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = \\"111\\" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+
+
+/***/ })
+/******/ ]);
+/************************************************************************/
+/******/ // The module cache
+/******/ var __webpack_module_cache__ = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/ // Check if module is in cache
+/******/ var cachedModule = __webpack_module_cache__[moduleId];
+/******/ if (cachedModule !== undefined) {
+/******/ return cachedModule.exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = __webpack_module_cache__[moduleId] = {
+/******/ // no module.id needed
+/******/ // no module.loaded needed
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/************************************************************************/
+/******/ /* webpack/runtime/define property getters */
+/******/ (() => {
+/******/ // define getter functions for harmony exports
+/******/ __webpack_require__.d = (exports, definition) => {
+/******/ for(var key in definition) {
+/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
+/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
+/******/ }
+/******/ }
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/hasOwnProperty shorthand */
+/******/ (() => {
+/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ })();
+/******/
+/************************************************************************/
+var __webpack_exports__ = {};
+// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
+(() => {
+/*!*****************!*\\\\
+ !*** ./test.js ***!
+ \\\\*****************/
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ HomeLayout: () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_5__.HomeLayout),
+/* harmony export */ a: () => (/* reexport safe */ externals0__WEBPACK_IMPORTED_MODULE_0__.a)
+/* harmony export */ });
+/* harmony import */ var externals0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! externals0 */ 2);
+/* harmony import */ var externals1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! externals1 */ 3);
+/* harmony import */ var externals2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! externals2 */ 4);
+/* harmony import */ var externals3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! externals3 */ 5);
+/* harmony import */ var externals4__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! externals4 */ 6);
+/* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib */ 7);
+// re export
+
+
+// named import
+;
+
+
+// default import
+
+
+// namespace import
+
+
+// side effect only import
+
+
+
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+externals1__WEBPACK_IMPORTED_MODULE_1__.HomeLayout;
+externals0__WEBPACK_IMPORTED_MODULE_0__.a;
+externals1__WEBPACK_IMPORTED_MODULE_1__.a;
+externals2__WEBPACK_IMPORTED_MODULE_2__[\\"default\\"];
+externals3__WEBPACK_IMPORTED_MODULE_3__;
+})();
+
+const __webpack_exports__HomeLayout = __webpack_exports__.HomeLayout;
+const __webpack_exports__a = __webpack_exports__.a;
+export { __webpack_exports__HomeLayout as HomeLayout, __webpack_exports__a as a };
+"
+`;
diff --git a/test/__snapshots__/ConfigTestCases.basictest.js.snap b/test/__snapshots__/ConfigTestCases.basictest.js.snap
index 3542d2527fa..c281a612f2a 100644
--- a/test/__snapshots__/ConfigTestCases.basictest.js.snap
+++ b/test/__snapshots__/ConfigTestCases.basictest.js.snap
@@ -10148,3 +10148,276 @@ exports[`ConfigTestCases css webpack-ignore exported tests should compile 1`] =
"
`;
+
+exports[`ConfigTestCases library concatenate-modules-named-import-externals concatenate-modules-named-import-externals should compile 1`] = `
+"import { HomeLayout as lib_HomeLayout_0, a } from \\"externals0\\";
+import { HomeLayout as HomeLayout_0, a as a_0 } from \\"externals1\\";
+import { default as default_0 } from \\"externals2\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals3__ from \\"externals3\\";
+import \\"externals4\\";
+/*!*****************************!*\\\\
+ !*** ./test.js + 6 modules ***!
+ \\\\*****************************/
+
+;// external \\"externals0\\"
+
+;// external \\"externals1\\"
+
+;// external \\"externals2\\"
+
+;// external \\"externals3\\"
+const external_externals3_namespaceObject = __WEBPACK_EXTERNAL_MODULE_externals3__;
+;// external \\"externals4\\"
+
+;// ./lib.js
+
+
+const { HomeLayout: lib_HomeLayout = 123 } = {};
+console.log({ HomeLayout: lib_HomeLayout });
+{
+ const { HomeLayout = lib_HomeLayout_0 } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = lib_HomeLayout_0 } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = \\"111\\" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+
+;// ./test.js
+// re export
+
+
+// named import
+;
+
+
+// default import
+
+
+// namespace import
+
+
+// side effect only import
+
+
+
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+HomeLayout_0;
+a;
+a_0;
+default_0;
+external_externals3_namespaceObject;
+export { lib_HomeLayout as HomeLayout, a };
+"
+`;
+
+exports[`ConfigTestCases library modern-module-named-import-externals modern-module-named-import-externals should compile 1`] = `
+"import * as __WEBPACK_EXTERNAL_MODULE_externals0__ from \\"externals0\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals1__ from \\"externals1\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals2__ from \\"externals2\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals3__ from \\"externals3\\";
+import * as __WEBPACK_EXTERNAL_MODULE_externals4__ from \\"externals4\\";
+/******/ var __webpack_modules__ = ([
+/* 0 */,
+/* 1 */,
+/* 2 */
+/*!*****************************!*\\\\
+ !*** external \\"externals0\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"HomeLayout\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals0__.HomeLayout), [\\"a\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals0__.a) });
+
+/***/ }),
+/* 3 */
+/*!*****************************!*\\\\
+ !*** external \\"externals1\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"HomeLayout\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals1__.HomeLayout), [\\"a\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals1__.a) });
+
+/***/ }),
+/* 4 */
+/*!*****************************!*\\\\
+ !*** external \\"externals2\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ [\\"default\\"]: () => (__WEBPACK_EXTERNAL_MODULE_externals2__[\\"default\\"]) });
+
+/***/ }),
+/* 5 */
+/*!*****************************!*\\\\
+ !*** external \\"externals3\\" ***!
+ \\\\*****************************/
+/***/ ((module) => {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_externals3__;
+
+/***/ }),
+/* 6 */
+/*!*****************************!*\\\\
+ !*** external \\"externals4\\" ***!
+ \\\\*****************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+var x = (y) => {
+ var x = {}; __webpack_require__.d(x, y); return x
+}
+var y = (x) => (() => (x))
+module.exports = x({ });
+
+/***/ }),
+/* 7 */
+/*!****************!*\\\\
+ !*** ./lib.js ***!
+ \\\\****************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ HomeLayout: () => (/* binding */ HomeLayout)
+/* harmony export */ });
+/* harmony import */ var externals0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! externals0 */ 2);
+
+
+const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+console.log({ HomeLayout });
+{
+ const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = externals0__WEBPACK_IMPORTED_MODULE_0__.HomeLayout } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = \\"111\\" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+
+
+/***/ })
+/******/ ]);
+/************************************************************************/
+/******/ // The module cache
+/******/ var __webpack_module_cache__ = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/ // Check if module is in cache
+/******/ var cachedModule = __webpack_module_cache__[moduleId];
+/******/ if (cachedModule !== undefined) {
+/******/ return cachedModule.exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = __webpack_module_cache__[moduleId] = {
+/******/ // no module.id needed
+/******/ // no module.loaded needed
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/************************************************************************/
+/******/ /* webpack/runtime/define property getters */
+/******/ (() => {
+/******/ // define getter functions for harmony exports
+/******/ __webpack_require__.d = (exports, definition) => {
+/******/ for(var key in definition) {
+/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
+/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
+/******/ }
+/******/ }
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/hasOwnProperty shorthand */
+/******/ (() => {
+/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ })();
+/******/
+/************************************************************************/
+var __webpack_exports__ = {};
+// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
+(() => {
+/*!*****************!*\\\\
+ !*** ./test.js ***!
+ \\\\*****************/
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ HomeLayout: () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_5__.HomeLayout),
+/* harmony export */ a: () => (/* reexport safe */ externals0__WEBPACK_IMPORTED_MODULE_0__.a)
+/* harmony export */ });
+/* harmony import */ var externals0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! externals0 */ 2);
+/* harmony import */ var externals1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! externals1 */ 3);
+/* harmony import */ var externals2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! externals2 */ 4);
+/* harmony import */ var externals3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! externals3 */ 5);
+/* harmony import */ var externals4__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! externals4 */ 6);
+/* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib */ 7);
+// re export
+
+
+// named import
+;
+
+
+// default import
+
+
+// namespace import
+
+
+// side effect only import
+
+
+
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+externals1__WEBPACK_IMPORTED_MODULE_1__.HomeLayout;
+externals0__WEBPACK_IMPORTED_MODULE_0__.a;
+externals1__WEBPACK_IMPORTED_MODULE_1__.a;
+externals2__WEBPACK_IMPORTED_MODULE_2__[\\"default\\"];
+externals3__WEBPACK_IMPORTED_MODULE_3__;
+})();
+
+const __webpack_exports__HomeLayout = __webpack_exports__.HomeLayout;
+const __webpack_exports__a = __webpack_exports__.a;
+export { __webpack_exports__HomeLayout as HomeLayout, __webpack_exports__a as a };
+"
+`;
diff --git a/test/cases/parsing/context/templates/templateLoader.js b/test/cases/parsing/context/templates/templateLoader.js
index e2b1e898947..e541d7ec4e4 100644
--- a/test/cases/parsing/context/templates/templateLoader.js
+++ b/test/cases/parsing/context/templates/templateLoader.js
@@ -1,3 +1,6 @@
+/**
+ * @param {string} name
+ */
module.exports = function(name) {
return require(name);
}
\ No newline at end of file
diff --git a/test/cases/parsing/context/templates/templateLoaderIndirect.js b/test/cases/parsing/context/templates/templateLoaderIndirect.js
index 89035fe1744..c7753680c55 100644
--- a/test/cases/parsing/context/templates/templateLoaderIndirect.js
+++ b/test/cases/parsing/context/templates/templateLoaderIndirect.js
@@ -1,3 +1,6 @@
+/**
+ * @param {string} name
+ */
module.exports = function(name) {
var a = load(require, name);
var r = require;
@@ -6,6 +9,10 @@ module.exports = function(name) {
return a;
}
+/**
+ * @param {Function} requireFunction
+ * @param {string} name
+ */
function load(requireFunction, name) {
return requireFunction(name);
}
\ No newline at end of file
diff --git a/test/configCases/externals/module-import/a.js b/test/configCases/externals/module-import/a.js
index d923fc87a03..1440a3c5c9b 100644
--- a/test/configCases/externals/module-import/a.js
+++ b/test/configCases/externals/module-import/a.js
@@ -4,4 +4,11 @@ const external2 = require("external2"); // node-commonjs
import external3_1 from "external3"; // module
const external3_2 = import("external3"); // import
+// Trigger concatenation
+import { internalHelper, internalConstant } from "./lib-to-concat";
+
console.log(external0, external1, external3_1, external3_2);
+console.log(internalHelper(), internalConstant);
+
+// ESM export ensures module concatenation
+export { external0, internalHelper };
diff --git a/test/configCases/externals/module-import/index.js b/test/configCases/externals/module-import/index.js
index af64c4613b0..90246878f29 100644
--- a/test/configCases/externals/module-import/index.js
+++ b/test/configCases/externals/module-import/index.js
@@ -3,7 +3,7 @@ const path = require("path");
it("module-import should correctly get fallback type", function() {
const content = fs.readFileSync(path.resolve(__dirname, "a.js"), "utf-8");
- expect(content).toContain(`import * as __WEBPACK_EXTERNAL_MODULE_external0__ from "external0"`); // module
+ expect(content).toContain(`import { default as default_0 } from "external0"`); // module
expect(content).toContain(`import * as __WEBPACK_EXTERNAL_MODULE_external1__ from "external1"`); // module
expect(content).toContain(`module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("external2")`); // node-commonjs
expect(content).toContain(`import * as __WEBPACK_EXTERNAL_MODULE_external3__ from "external3"`); // module
diff --git a/test/configCases/externals/module-import/lib-to-concat.js b/test/configCases/externals/module-import/lib-to-concat.js
new file mode 100644
index 00000000000..ab5a2e2fcdf
--- /dev/null
+++ b/test/configCases/externals/module-import/lib-to-concat.js
@@ -0,0 +1,6 @@
+// Trigger concatenation with a.js
+export function internalHelper() {
+ return "internal";
+}
+
+export const internalConstant = 100;
\ No newline at end of file
diff --git a/test/configCases/externals/module-import/webpack.config.js b/test/configCases/externals/module-import/webpack.config.js
index ddf3515be93..941efedc194 100644
--- a/test/configCases/externals/module-import/webpack.config.js
+++ b/test/configCases/externals/module-import/webpack.config.js
@@ -16,7 +16,8 @@ module.exports = {
main: "./index"
},
optimization: {
- concatenateModules: true
+ concatenateModules: true,
+ usedExports: true
},
experiments: {
outputModule: true
diff --git a/test/configCases/inner-graph/_helpers/testModuleLoader.js b/test/configCases/inner-graph/_helpers/testModuleLoader.js
index b6d54748dda..7f3a64f7ac6 100644
--- a/test/configCases/inner-graph/_helpers/testModuleLoader.js
+++ b/test/configCases/inner-graph/_helpers/testModuleLoader.js
@@ -3,8 +3,8 @@ module.exports = function () {
const usedExports = JSON.parse(this.query.slice(1));
return [
`import { ${usedExports
- .map(x => `${x} as export_${x}`)
+ .map((/** @type {string} */ x) => `${x} as export_${x}`)
.join(", ")} } from "./module";`,
- `export default [${usedExports.map(x => `export_${x}`).join(", ")}];`
+ `export default [${usedExports.map((/** @type {string} */ x) => `export_${x}`).join(", ")}];`
].join("\n");
};
diff --git a/test/configCases/library/concatenate-modules-named-import-externals/index.js b/test/configCases/library/concatenate-modules-named-import-externals/index.js
new file mode 100644
index 00000000000..f6e48fad94d
--- /dev/null
+++ b/test/configCases/library/concatenate-modules-named-import-externals/index.js
@@ -0,0 +1,7 @@
+
+it('should compile', () => {});
+
+it('should handle external modules with concatenation and caching', () => {
+ // This test ensures serialization works with caching enabled
+ expect(true).toBe(true);
+});
diff --git a/test/configCases/library/concatenate-modules-named-import-externals/lib.js b/test/configCases/library/concatenate-modules-named-import-externals/lib.js
new file mode 100644
index 00000000000..d484730bb89
--- /dev/null
+++ b/test/configCases/library/concatenate-modules-named-import-externals/lib.js
@@ -0,0 +1,21 @@
+import { HomeLayout as aaa } from 'externals0';
+
+const { HomeLayout = 123 } = {};
+console.log({ HomeLayout });
+{
+ const { HomeLayout = aaa } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = aaa } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = "111" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+export { HomeLayout }
\ No newline at end of file
diff --git a/test/configCases/library/concatenate-modules-named-import-externals/test.config.js b/test/configCases/library/concatenate-modules-named-import-externals/test.config.js
new file mode 100644
index 00000000000..a8755bed92f
--- /dev/null
+++ b/test/configCases/library/concatenate-modules-named-import-externals/test.config.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = {
+ findBundle() {
+ return ["main.js"];
+ }
+};
diff --git a/test/configCases/library/concatenate-modules-named-import-externals/test.js b/test/configCases/library/concatenate-modules-named-import-externals/test.js
new file mode 100644
index 00000000000..eddb63f953d
--- /dev/null
+++ b/test/configCases/library/concatenate-modules-named-import-externals/test.js
@@ -0,0 +1,27 @@
+// re export
+export { a } from 'externals0'
+
+// named import
+import { a as a_2, HomeLayout as aaa } from 'externals1'
+import { a as a_0 } from 'externals0'
+
+// default import
+import defaultValue from 'externals2'
+
+// namespace import
+import * as namespace from 'externals3'
+
+// side effect only import
+import 'externals4'
+
+export { HomeLayout } from './lib'
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+aaa;
+a_0;
+a_2;
+defaultValue;
+namespace;
\ No newline at end of file
diff --git a/test/configCases/library/concatenate-modules-named-import-externals/webpack.config.js b/test/configCases/library/concatenate-modules-named-import-externals/webpack.config.js
new file mode 100644
index 00000000000..af204eb0536
--- /dev/null
+++ b/test/configCases/library/concatenate-modules-named-import-externals/webpack.config.js
@@ -0,0 +1,56 @@
+"use strict";
+
+/** @type {import("../../../../types").Configuration} */
+module.exports = {
+ cache: {
+ type: "memory" // Enable memory cache to test serialization
+ },
+ mode: "none",
+ entry: { main: "./index.js", test: "./test.js" },
+ output: {
+ module: true,
+ library: {
+ type: "modern-module"
+ },
+ filename: "[name].js",
+ chunkFormat: "module"
+ },
+ experiments: {
+ outputModule: true
+ },
+ resolve: {
+ extensions: [".js"]
+ },
+ externalsType: "module",
+ externals: [
+ "externals0",
+ "externals1",
+ "externals2",
+ "externals3",
+ "externals4"
+ ],
+ optimization: {
+ concatenateModules: true,
+ usedExports: true
+ },
+ plugins: [
+ (compiler) => {
+ compiler.hooks.compilation.tap(
+ "testcase",
+ (
+ /** @type {import("../../../../types").Compilation} */ compilation
+ ) => {
+ compilation.hooks.afterProcessAssets.tap(
+ "testcase",
+ (
+ /** @type {Record} */ assets
+ ) => {
+ const source = assets["test.js"].source();
+ expect(source).toMatchSnapshot();
+ }
+ );
+ }
+ );
+ }
+ ]
+};
diff --git a/test/configCases/library/modern-module-named-import-externals/index.js b/test/configCases/library/modern-module-named-import-externals/index.js
new file mode 100644
index 00000000000..f6e48fad94d
--- /dev/null
+++ b/test/configCases/library/modern-module-named-import-externals/index.js
@@ -0,0 +1,7 @@
+
+it('should compile', () => {});
+
+it('should handle external modules with concatenation and caching', () => {
+ // This test ensures serialization works with caching enabled
+ expect(true).toBe(true);
+});
diff --git a/test/configCases/library/modern-module-named-import-externals/lib.js b/test/configCases/library/modern-module-named-import-externals/lib.js
new file mode 100644
index 00000000000..650825e2bc7
--- /dev/null
+++ b/test/configCases/library/modern-module-named-import-externals/lib.js
@@ -0,0 +1,21 @@
+import { HomeLayout as aaa } from 'externals0';
+
+const { HomeLayout = aaa } = {};
+console.log({ HomeLayout });
+{
+ const { HomeLayout = aaa } = {};
+ console.log({ HomeLayout });
+}
+(() => {
+ {
+ const { HomeLayout = aaa } = {};
+ console.log({ HomeLayout });
+ }
+})()
+
+{
+ const { external_externals3_namespaceObject = "111" } = {}
+ console.log({ external_externals3_namespaceObject });
+}
+
+export { HomeLayout }
\ No newline at end of file
diff --git a/test/configCases/library/modern-module-named-import-externals/test.config.js b/test/configCases/library/modern-module-named-import-externals/test.config.js
new file mode 100644
index 00000000000..a8755bed92f
--- /dev/null
+++ b/test/configCases/library/modern-module-named-import-externals/test.config.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = {
+ findBundle() {
+ return ["main.js"];
+ }
+};
diff --git a/test/configCases/library/modern-module-named-import-externals/test.js b/test/configCases/library/modern-module-named-import-externals/test.js
new file mode 100644
index 00000000000..eddb63f953d
--- /dev/null
+++ b/test/configCases/library/modern-module-named-import-externals/test.js
@@ -0,0 +1,27 @@
+// re export
+export { a } from 'externals0'
+
+// named import
+import { a as a_2, HomeLayout as aaa } from 'externals1'
+import { a as a_0 } from 'externals0'
+
+// default import
+import defaultValue from 'externals2'
+
+// namespace import
+import * as namespace from 'externals3'
+
+// side effect only import
+import 'externals4'
+
+export { HomeLayout } from './lib'
+
+{
+ const HomeLayout_0 = 'HomeLayout_0';
+ HomeLayout_0;
+}
+aaa;
+a_0;
+a_2;
+defaultValue;
+namespace;
\ No newline at end of file
diff --git a/test/configCases/library/modern-module-named-import-externals/webpack.config.js b/test/configCases/library/modern-module-named-import-externals/webpack.config.js
new file mode 100644
index 00000000000..5b088d90a24
--- /dev/null
+++ b/test/configCases/library/modern-module-named-import-externals/webpack.config.js
@@ -0,0 +1,56 @@
+"use strict";
+
+/** @type {import("../../../../types").Configuration} */
+module.exports = {
+ cache: {
+ type: "memory" // Enable memory cache to test serialization
+ },
+ mode: "none",
+ entry: { main: "./index.js", test: "./test.js" },
+ output: {
+ module: true,
+ library: {
+ type: "modern-module"
+ },
+ filename: "[name].js",
+ chunkFormat: "module"
+ },
+ experiments: {
+ outputModule: true
+ },
+ resolve: {
+ extensions: [".js"]
+ },
+ externalsType: "module",
+ externals: [
+ "externals0",
+ "externals1",
+ "externals2",
+ "externals3",
+ "externals4"
+ ],
+ optimization: {
+ concatenateModules: false,
+ usedExports: true
+ },
+ plugins: [
+ (compiler) => {
+ compiler.hooks.compilation.tap(
+ "testcase",
+ (
+ /** @type {import("../../../../types").Compilation} */ compilation
+ ) => {
+ compilation.hooks.afterProcessAssets.tap(
+ "testcase",
+ (
+ /** @type {Record} */ assets
+ ) => {
+ const source = assets["test.js"].source();
+ expect(source).toMatchSnapshot();
+ }
+ );
+ }
+ );
+ }
+ ]
+};
diff --git a/test/configCases/library/module-named-import-externals/index.js b/test/configCases/library/module-named-import-externals/index.js
new file mode 100644
index 00000000000..15879c481b1
--- /dev/null
+++ b/test/configCases/library/module-named-import-externals/index.js
@@ -0,0 +1,21 @@
+import { readFileSync, writeFileSync as aaa } from 'fs'
+import * as path from 'path'
+import * as fs from 'fs'
+
+const { writeFileSync = aaa } = {}
+console.log({ writeFileSync });
+
+
+{
+ const { writeFileSync = aaa } = {}
+ console.log({ writeFileSync });
+}
+
+it('should handle external modules with concatenation and caching', () => {
+ expect(typeof readFileSync).toBe('function');
+ const { writeFileSync = aaa } = {}
+ expect(typeof writeFileSync).toBe('function');
+ expect(typeof path.join).toBe('function');
+});
+
+export { readFileSync, writeFileSync, path, fs }
\ No newline at end of file
diff --git a/test/configCases/library/module-named-import-externals/test.config.js b/test/configCases/library/module-named-import-externals/test.config.js
new file mode 100644
index 00000000000..9100dc59963
--- /dev/null
+++ b/test/configCases/library/module-named-import-externals/test.config.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = {
+ findBundle() {
+ return ["main.mjs"];
+ }
+};
diff --git a/test/configCases/library/module-named-import-externals/webpack.config.js b/test/configCases/library/module-named-import-externals/webpack.config.js
new file mode 100644
index 00000000000..78ca1e13e7a
--- /dev/null
+++ b/test/configCases/library/module-named-import-externals/webpack.config.js
@@ -0,0 +1,26 @@
+"use strict";
+
+/** @type {import("../../../../types").Configuration} */
+module.exports = {
+ entry: { main: "./index.js" },
+ output: {
+ module: true,
+ library: {
+ type: "module"
+ },
+ filename: "[name].mjs",
+ chunkFormat: "module"
+ },
+ experiments: {
+ outputModule: true
+ },
+ resolve: {
+ extensions: [".js"]
+ },
+ externals: ["fs", "path"],
+ externalsType: "module",
+ optimization: {
+ concatenateModules: true,
+ usedExports: true
+ }
+};
diff --git a/test/configCases/split-chunks/asnyc-entries/webpack.config.js b/test/configCases/split-chunks/asnyc-entries/webpack.config.js
index 668c6ba5e78..d45fc7ec296 100644
--- a/test/configCases/split-chunks/asnyc-entries/webpack.config.js
+++ b/test/configCases/split-chunks/asnyc-entries/webpack.config.js
@@ -2,6 +2,9 @@
module.exports = {
output: {
- filename: "[name].js"
+ filename: "[name].js",
+ environment: {
+ nodePrefixForCoreModules: false
+ }
}
};
diff --git a/types.d.ts b/types.d.ts
index 01ac4e67f25..7e422d489db 100644
--- a/types.d.ts
+++ b/types.d.ts
@@ -2751,6 +2751,7 @@ declare interface ConcatenatedModuleInfo {
rawExportMap?: Map;
namespaceExportSymbol?: string;
namespaceObjectName?: string;
+ concatenationScope?: ConcatenationScope;
/**
* "default-with-named" namespace
@@ -2796,12 +2797,17 @@ declare interface ConcatenationBailoutReasonContext {
declare class ConcatenationScope {
constructor(
modulesMap: ModuleInfo[] | Map,
- currentModule: ConcatenatedModuleInfo
+ currentModule: ConcatenatedModuleInfo,
+ usedNames: Set
);
+ usedNames: Set;
isModuleInScope(module: Module): boolean;
registerExport(exportName: string, symbol: string): void;
registerRawExport(exportName: string, expression: string): void;
+ getRawExport(exportName: string): undefined | string;
+ setRawExportMap(exportName: string, expression: string): void;
registerNamespaceExport(symbol: string): void;
+ registerUsedName(symbol: string): boolean;
createModuleReference(
module: Module,
__1: Partial
@@ -5230,6 +5236,7 @@ declare class ExternalModule extends Module {
unsafeCacheData: UnsafeCacheData,
normalModuleFactory: NormalModuleFactory
): void;
+ static ModuleExternalInitFragment: typeof ModuleExternalInitFragment;
}
declare interface ExternalModuleInfo {
type: "external";
@@ -6276,6 +6283,7 @@ type ImportSource =
| SimpleLiteral
| RegExpLiteral
| BigIntLiteral;
+type Imported = true | [string, string][];
/**
* Options for infrastructure level logging.
@@ -6338,6 +6346,8 @@ declare class InitFragment {
serialize(context: ObjectSerializerContext): void;
deserialize(context: ObjectDeserializerContext): void;
merge: any;
+ getImported: any;
+ setImported: any;
static addToSource(
source: Source,
initFragments: InitFragment[],
@@ -9809,6 +9819,28 @@ declare class ModuleDependency extends Dependency {
static EXPORTS_OBJECT_REFERENCED: string[][];
static TRANSITIVE: typeof TRANSITIVE;
}
+declare class ModuleExternalInitFragment extends InitFragment {
+ constructor(
+ request: string,
+ imported: Imported,
+ ident?: string,
+ dependencyMeta?: ImportDependencyMeta,
+ hashFunction?: string | typeof Hash
+ );
+ getNamespaceIdentifier(): string;
+ static addToSource(
+ source: Source,
+ initFragments: InitFragment[],
+ context: Context
+ ): Source;
+ static STAGE_CONSTANTS: number;
+ static STAGE_ASYNC_BOUNDARY: number;
+ static STAGE_HARMONY_EXPORTS: number;
+ static STAGE_HARMONY_IMPORTS: number;
+ static STAGE_PROVIDES: number;
+ static STAGE_ASYNC_DEPENDENCIES: number;
+ static STAGE_ASYNC_HARMONY_IMPORTS: number;
+}
declare abstract class ModuleFactory {
create(
data: ModuleFactoryCreateData,
@@ -17585,6 +17617,10 @@ declare namespace exports {
export let ensureChunkHandlers: "__webpack_require__.f";
export let ensureChunkIncludeEntries: "__webpack_require__.f (include entries)";
export let entryModuleId: "__webpack_require__.s";
+ export let esmId: "__webpack_esm_id__";
+ export let esmIds: "__webpack_esm_ids__";
+ export let esmModules: "__webpack_esm_modules__";
+ export let esmRuntime: "__webpack_esm_runtime__";
export let exports: "__webpack_exports__";
export let externalInstallChunk: "__webpack_require__.C";
export let getChunkCssFilename: "__webpack_require__.k";
diff --git a/yarn.lock b/yarn.lock
index b5e16e9545f..a685a44b689 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -116,7 +116,7 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
-"@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.27.1":
+"@babel/helper-validator-identifier@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
@@ -798,7 +798,7 @@
esquery "^1.6.0"
jsdoc-type-pratt-parser "~4.1.0"
-"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.5.0", "@eslint-community/eslint-utils@^4.5.1", "@eslint-community/eslint-utils@^4.7.0":
+"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.5.0", "@eslint-community/eslint-utils@^4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a"
integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==
@@ -824,20 +824,6 @@
resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.3.0.tgz#3e09a90dfb87e0005c7694791e58e97077271286"
integrity sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==
-"@eslint/core@^0.13.0":
- version "0.13.0"
- resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.13.0.tgz#bf02f209846d3bf996f9e8009db62df2739b458c"
- integrity sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==
- dependencies:
- "@types/json-schema" "^7.0.15"
-
-"@eslint/core@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.14.0.tgz#326289380968eaf7e96f364e1e4cf8f3adf2d003"
- integrity sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==
- dependencies:
- "@types/json-schema" "^7.0.15"
-
"@eslint/core@^0.15.0", "@eslint/core@^0.15.1":
version "0.15.1"
resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.15.1.tgz#d530d44209cbfe2f82ef86d6ba08760196dd3b60"
@@ -860,22 +846,22 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@9.31.0", "@eslint/js@^9.29.0":
- version "9.31.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.31.0.tgz#adb1f39953d8c475c4384b67b67541b0d7206ed8"
- integrity sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==
+"@eslint/js@9.32.0", "@eslint/js@^9.29.0":
+ version "9.32.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.32.0.tgz#a02916f58bd587ea276876cb051b579a3d75d091"
+ integrity sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==
-"@eslint/markdown@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@eslint/markdown/-/markdown-7.0.0.tgz#e5711a23fd69764a31f4abfd1612de05f14ac3c3"
- integrity sha512-0WNH6pSFHNlWSlNaIFQP0sLHpMUJw1FaJtyqapvGqOt0ISRgTUkTLVT0hT/zekDA1QlP2TT8pwjPkqYTu2s8yg==
+"@eslint/markdown@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@eslint/markdown/-/markdown-7.1.0.tgz#c35be3f16d9e74077ca238ceca184ded0bac74bc"
+ integrity sha512-Y+X1B1j+/zupKDVJfkKc8uYMjQkGzfnd8lt7vK3y8x9Br6H5dBuhAfFrQ6ff7HAMm/1BwgecyEiRFkYCWPRxmA==
dependencies:
- "@eslint/core" "^0.14.0"
- "@eslint/plugin-kit" "^0.3.1"
+ "@eslint/core" "^0.15.1"
+ "@eslint/plugin-kit" "^0.3.4"
github-slugger "^2.0.0"
mdast-util-from-markdown "^2.0.2"
mdast-util-frontmatter "^2.0.1"
- mdast-util-gfm "^3.0.0"
+ mdast-util-gfm "^3.1.0"
micromark-extension-frontmatter "^2.0.0"
micromark-extension-gfm "^3.0.0"
@@ -884,18 +870,10 @@
resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f"
integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==
-"@eslint/plugin-kit@^0.2.7":
- version "0.2.8"
- resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz#47488d8f8171b5d4613e833313f3ce708e3525f8"
- integrity sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==
- dependencies:
- "@eslint/core" "^0.13.0"
- levn "^0.4.1"
-
-"@eslint/plugin-kit@^0.3.1":
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.3.tgz#32926b59bd407d58d817941e48b2a7049359b1fd"
- integrity sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==
+"@eslint/plugin-kit@^0.3.3", "@eslint/plugin-kit@^0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz#c6b9f165e94bf4d9fdd493f1c028a94aaf5fc1cc"
+ integrity sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==
dependencies:
"@eslint/core" "^0.15.1"
levn "^0.4.1"
@@ -963,50 +941,50 @@
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
-"@jest/console@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-30.0.4.tgz#943a62c3c8e3f495290f2e2c3749b7b4516c3e93"
- integrity sha512-tMLCDvBJBwPqMm4OAiuKm2uF5y5Qe26KgcMn+nrDSWpEW+eeFmqA0iO4zJfL16GP7gE3bUUQ3hIuUJ22AqVRnw==
+"@jest/console@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-30.0.5.tgz#d7d027c2db5c64c20a973b7f3e57b49956d6c335"
+ integrity sha512-xY6b0XiL0Nav3ReresUarwl2oIz1gTnxGbGpho9/rbUWsLH0f1OD/VT84xs8c7VmH7MChnLb0pag6PhZhAdDiA==
dependencies:
- "@jest/types" "30.0.1"
+ "@jest/types" "30.0.5"
"@types/node" "*"
chalk "^4.1.2"
- jest-message-util "30.0.2"
- jest-util "30.0.2"
+ jest-message-util "30.0.5"
+ jest-util "30.0.5"
slash "^3.0.0"
-"@jest/core@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-30.0.4.tgz#a8fc7fcdc8a650f50f33dd585d774a1f683e9e59"
- integrity sha512-MWScSO9GuU5/HoWjpXAOBs6F/iobvK1XlioelgOM9St7S0Z5WTI9kjCQLPeo4eQRRYusyLW25/J7J5lbFkrYXw==
+"@jest/core@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-30.0.5.tgz#b5778922d2928f676636e3ec199829554e61e452"
+ integrity sha512-fKD0OulvRsXF1hmaFgHhVJzczWzA1RXMMo9LTPuFXo9q/alDbME3JIyWYqovWsUBWSoBcsHaGPSLF9rz4l9Qeg==
dependencies:
- "@jest/console" "30.0.4"
+ "@jest/console" "30.0.5"
"@jest/pattern" "30.0.1"
- "@jest/reporters" "30.0.4"
- "@jest/test-result" "30.0.4"
- "@jest/transform" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/reporters" "30.0.5"
+ "@jest/test-result" "30.0.5"
+ "@jest/transform" "30.0.5"
+ "@jest/types" "30.0.5"
"@types/node" "*"
ansi-escapes "^4.3.2"
chalk "^4.1.2"
ci-info "^4.2.0"
exit-x "^0.2.2"
graceful-fs "^4.2.11"
- jest-changed-files "30.0.2"
- jest-config "30.0.4"
- jest-haste-map "30.0.2"
- jest-message-util "30.0.2"
+ jest-changed-files "30.0.5"
+ jest-config "30.0.5"
+ jest-haste-map "30.0.5"
+ jest-message-util "30.0.5"
jest-regex-util "30.0.1"
- jest-resolve "30.0.2"
- jest-resolve-dependencies "30.0.4"
- jest-runner "30.0.4"
- jest-runtime "30.0.4"
- jest-snapshot "30.0.4"
- jest-util "30.0.2"
- jest-validate "30.0.2"
- jest-watcher "30.0.4"
+ jest-resolve "30.0.5"
+ jest-resolve-dependencies "30.0.5"
+ jest-runner "30.0.5"
+ jest-runtime "30.0.5"
+ jest-snapshot "30.0.5"
+ jest-util "30.0.5"
+ jest-validate "30.0.5"
+ jest-watcher "30.0.5"
micromatch "^4.0.8"
- pretty-format "30.0.2"
+ pretty-format "30.0.5"
slash "^3.0.0"
"@jest/diff-sequences@30.0.1":
@@ -1014,57 +992,57 @@
resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be"
integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==
-"@jest/environment@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-30.0.4.tgz#fb0deafd8a3cbb06cd9ce0b52c6bcaf342778428"
- integrity sha512-5NT+sr7ZOb8wW7C4r7wOKnRQ8zmRWQT2gW4j73IXAKp5/PX1Z8MCStBLQDYfIG3n1Sw0NRfYGdp0iIPVooBAFQ==
+"@jest/environment@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-30.0.5.tgz#eaaae0403c7d3f8414053c2224acc3011e1c3a1b"
+ integrity sha512-aRX7WoaWx1oaOkDQvCWImVQ8XNtdv5sEWgk4gxR6NXb7WBUnL5sRak4WRzIQRZ1VTWPvV4VI4mgGjNL9TeKMYA==
dependencies:
- "@jest/fake-timers" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/fake-timers" "30.0.5"
+ "@jest/types" "30.0.5"
"@types/node" "*"
- jest-mock "30.0.2"
+ jest-mock "30.0.5"
-"@jest/expect-utils@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.4.tgz#0512fb2588c7fc463ce26fb38c0d47814266d965"
- integrity sha512-EgXecHDNfANeqOkcak0DxsoVI4qkDUsR7n/Lr2vtmTBjwLPBnnPOF71S11Q8IObWzxm2QgQoY6f9hzrRD3gHRA==
+"@jest/expect-utils@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.5.tgz#9d42e4b8bc80367db30abc6c42b2cb14073f66fc"
+ integrity sha512-F3lmTT7CXWYywoVUGTCmom0vXq3HTTkaZyTAzIy+bXSBizB7o5qzlC9VCtq0arOa8GqmNsbg/cE9C6HLn7Szew==
dependencies:
"@jest/get-type" "30.0.1"
-"@jest/expect@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-30.0.4.tgz#de25549873ccc0302faeef96044acae464f50997"
- integrity sha512-Z/DL7t67LBHSX4UzDyeYKqOxE/n7lbrrgEwWM3dGiH5Dgn35nk+YtgzKudmfIrBI8DRRrKYY5BCo3317HZV1Fw==
+"@jest/expect@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-30.0.5.tgz#2bbd101df4869f5d171c3cfee881f810f1525005"
+ integrity sha512-6udac8KKrtTtC+AXZ2iUN/R7dp7Ydry+Fo6FPFnDG54wjVMnb6vW/XNlf7Xj8UDjAE3aAVAsR4KFyKk3TCXmTA==
dependencies:
- expect "30.0.4"
- jest-snapshot "30.0.4"
+ expect "30.0.5"
+ jest-snapshot "30.0.5"
-"@jest/fake-timers@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-30.0.4.tgz#fdd4552541a99826e488fc01afdb7626d6ad46cd"
- integrity sha512-qZ7nxOcL5+gwBO6LErvwVy5k06VsX/deqo2XnVUSTV0TNC9lrg8FC3dARbi+5lmrr5VyX5drragK+xLcOjvjYw==
+"@jest/fake-timers@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-30.0.5.tgz#c028a9465a44b7744cb2368196bed89ce13c7054"
+ integrity sha512-ZO5DHfNV+kgEAeP3gK3XlpJLL4U3Sz6ebl/n68Uwt64qFFs5bv4bfEEjyRGK5uM0C90ewooNgFuKMdkbEoMEXw==
dependencies:
- "@jest/types" "30.0.1"
+ "@jest/types" "30.0.5"
"@sinonjs/fake-timers" "^13.0.0"
"@types/node" "*"
- jest-message-util "30.0.2"
- jest-mock "30.0.2"
- jest-util "30.0.2"
+ jest-message-util "30.0.5"
+ jest-mock "30.0.5"
+ jest-util "30.0.5"
"@jest/get-type@30.0.1":
version "30.0.1"
resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.0.1.tgz#0d32f1bbfba511948ad247ab01b9007724fc9f52"
integrity sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==
-"@jest/globals@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-30.0.4.tgz#8650aa24c587fae830915b5c3518e82bd2ac5e60"
- integrity sha512-avyZuxEHF2EUhFF6NEWVdxkRRV6iXXcIES66DLhuLlU7lXhtFG/ySq/a8SRZmEJSsLkNAFX6z6mm8KWyXe9OEA==
+"@jest/globals@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-30.0.5.tgz#ca70e0ac08ab40417cf8cd92bcb76116c2ccca63"
+ integrity sha512-7oEJT19WW4oe6HR7oLRvHxwlJk2gev0U9px3ufs8sX9PoD1Eza68KF0/tlN7X0dq/WVsBScXQGgCldA1V9Y/jA==
dependencies:
- "@jest/environment" "30.0.4"
- "@jest/expect" "30.0.4"
- "@jest/types" "30.0.1"
- jest-mock "30.0.2"
+ "@jest/environment" "30.0.5"
+ "@jest/expect" "30.0.5"
+ "@jest/types" "30.0.5"
+ jest-mock "30.0.5"
"@jest/pattern@30.0.1":
version "30.0.1"
@@ -1074,16 +1052,16 @@
"@types/node" "*"
jest-regex-util "30.0.1"
-"@jest/reporters@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-30.0.4.tgz#8ff5939713f643f788b48d3edcf15f2c06a00a63"
- integrity sha512-6ycNmP0JSJEEys1FbIzHtjl9BP0tOZ/KN6iMeAKrdvGmUsa1qfRdlQRUDKJ4P84hJ3xHw1yTqJt4fvPNHhyE+g==
+"@jest/reporters@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-30.0.5.tgz#b83585e6448d390a8d92a641c567f1655976d5c6"
+ integrity sha512-mafft7VBX4jzED1FwGC1o/9QUM2xebzavImZMeqnsklgcyxBto8mV4HzNSzUrryJ+8R9MFOM3HgYuDradWR+4g==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
- "@jest/console" "30.0.4"
- "@jest/test-result" "30.0.4"
- "@jest/transform" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/console" "30.0.5"
+ "@jest/test-result" "30.0.5"
+ "@jest/transform" "30.0.5"
+ "@jest/types" "30.0.5"
"@jridgewell/trace-mapping" "^0.3.25"
"@types/node" "*"
chalk "^4.1.2"
@@ -1096,26 +1074,26 @@
istanbul-lib-report "^3.0.0"
istanbul-lib-source-maps "^5.0.0"
istanbul-reports "^3.1.3"
- jest-message-util "30.0.2"
- jest-util "30.0.2"
- jest-worker "30.0.2"
+ jest-message-util "30.0.5"
+ jest-util "30.0.5"
+ jest-worker "30.0.5"
slash "^3.0.0"
string-length "^4.0.2"
v8-to-istanbul "^9.0.1"
-"@jest/schemas@30.0.1":
- version "30.0.1"
- resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.1.tgz#27c00d707d480ece0c19126af97081a1af3bc46e"
- integrity sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w==
+"@jest/schemas@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.5.tgz#7bdf69fc5a368a5abdb49fd91036c55225846473"
+ integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==
dependencies:
"@sinclair/typebox" "^0.34.0"
-"@jest/snapshot-utils@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/snapshot-utils/-/snapshot-utils-30.0.4.tgz#cd5b3d21e19255106b12350d55c1b9bf613fbcfa"
- integrity sha512-BEpX8M/Y5lG7MI3fmiO+xCnacOrVsnbqVrcDZIT8aSGkKV1w2WwvRQxSWw5SIS8ozg7+h8tSj5EO1Riqqxcdag==
+"@jest/snapshot-utils@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/snapshot-utils/-/snapshot-utils-30.0.5.tgz#e23a0e786f174e8cff7f150c1cfbdc9cb7cc81a4"
+ integrity sha512-XcCQ5qWHLvi29UUrowgDFvV4t7ETxX91CbDczMnoqXPOIcZOxyNdSjm6kV5XMc8+HkxfRegU/MUmnTbJRzGrUQ==
dependencies:
- "@jest/types" "30.0.1"
+ "@jest/types" "30.0.5"
chalk "^4.1.2"
graceful-fs "^4.2.11"
natural-compare "^1.4.0"
@@ -1129,54 +1107,54 @@
callsites "^3.1.0"
graceful-fs "^4.2.11"
-"@jest/test-result@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-30.0.4.tgz#0b1c4e8256e3f9ebb9452ede22d4b04b31ea54fe"
- integrity sha512-Mfpv8kjyKTHqsuu9YugB6z1gcdB3TSSOaKlehtVaiNlClMkEHY+5ZqCY2CrEE3ntpBMlstX/ShDAf84HKWsyIw==
+"@jest/test-result@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-30.0.5.tgz#064c5210c24d5ea192fb02ceddad3be1cfa557c8"
+ integrity sha512-wPyztnK0gbDMQAJZ43tdMro+qblDHH1Ru/ylzUo21TBKqt88ZqnKKK2m30LKmLLoKtR2lxdpCC/P3g1vfKcawQ==
dependencies:
- "@jest/console" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/console" "30.0.5"
+ "@jest/types" "30.0.5"
"@types/istanbul-lib-coverage" "^2.0.6"
collect-v8-coverage "^1.0.2"
-"@jest/test-sequencer@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-30.0.4.tgz#4ef749c994beca340e274e67a4c90f0154482e5f"
- integrity sha512-bj6ePmqi4uxAE8EHE0Slmk5uBYd9Vd/PcVt06CsBxzH4bbA8nGsI1YbXl/NH+eii4XRtyrRx+Cikub0x8H4vDg==
+"@jest/test-sequencer@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-30.0.5.tgz#c6dba8fc3c386dd793c087626e8508ff1ead19f4"
+ integrity sha512-Aea/G1egWoIIozmDD7PBXUOxkekXl7ueGzrsGGi1SbeKgQqCYCIf+wfbflEbf2LiPxL8j2JZGLyrzZagjvW4YQ==
dependencies:
- "@jest/test-result" "30.0.4"
+ "@jest/test-result" "30.0.5"
graceful-fs "^4.2.11"
- jest-haste-map "30.0.2"
+ jest-haste-map "30.0.5"
slash "^3.0.0"
-"@jest/transform@30.0.4":
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-30.0.4.tgz#a06f8c6fc2a04985241b483096f821bafb99cc93"
- integrity sha512-atvy4hRph/UxdCIBp+UB2jhEA/jJiUeGZ7QPgBi9jUUKNgi3WEoMXGNG7zbbELG2+88PMabUNCDchmqgJy3ELg==
+"@jest/transform@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-30.0.5.tgz#f8ca2e9f7466b77b406807d3bef1f6790dd384e4"
+ integrity sha512-Vk8amLQCmuZyy6GbBht1Jfo9RSdBtg7Lks+B0PecnjI8J+PCLQPGh7uI8Q/2wwpW2gLdiAfiHNsmekKlywULqg==
dependencies:
"@babel/core" "^7.27.4"
- "@jest/types" "30.0.1"
+ "@jest/types" "30.0.5"
"@jridgewell/trace-mapping" "^0.3.25"
babel-plugin-istanbul "^7.0.0"
chalk "^4.1.2"
convert-source-map "^2.0.0"
fast-json-stable-stringify "^2.1.0"
graceful-fs "^4.2.11"
- jest-haste-map "30.0.2"
+ jest-haste-map "30.0.5"
jest-regex-util "30.0.1"
- jest-util "30.0.2"
+ jest-util "30.0.5"
micromatch "^4.0.8"
pirates "^4.0.7"
slash "^3.0.0"
write-file-atomic "^5.0.1"
-"@jest/types@30.0.1":
- version "30.0.1"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.0.1.tgz#a46df6a99a416fa685740ac4264b9f9cd7da1598"
- integrity sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw==
+"@jest/types@30.0.5":
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.0.5.tgz#29a33a4c036e3904f1cfd94f6fe77f89d2e1cc05"
+ integrity sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==
dependencies:
"@jest/pattern" "30.0.1"
- "@jest/schemas" "30.0.1"
+ "@jest/schemas" "30.0.5"
"@types/istanbul-lib-coverage" "^2.0.6"
"@types/istanbul-reports" "^3.0.4"
"@types/node" "*"
@@ -1336,10 +1314,10 @@
dependencies:
"@sinonjs/commons" "^3.0.1"
-"@stylistic/eslint-plugin@^5.0.0":
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin/-/eslint-plugin-5.2.0.tgz#fd664d2c81544cbe12c35d4af6d79b42814fc57f"
- integrity sha512-RCEdbREv9EBiToUBQTlRhVYKG093I6ZnnQ990j08eJ6uRZh71DXkOnoxtTLfDQ6utVCVQzrhZFHZP0zfrfOIjA==
+"@stylistic/eslint-plugin@^5.2.2":
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin/-/eslint-plugin-5.2.2.tgz#a1cb24f17263e1dcb2d5c94069dc3ae7af1eb9ce"
+ integrity sha512-bE2DUjruqXlHYP3Q2Gpqiuj2bHq7/88FnuaS0FjeGGLCy+X6a07bGVuwtiOYnPSLHR6jmx5Bwdv+j7l8H+G97A==
dependencies:
"@eslint-community/eslint-utils" "^4.7.0"
"@typescript-eslint/types" "^8.37.0"
@@ -1487,10 +1465,10 @@
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78"
integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==
-"@types/node@*", "@types/node@^24.0.13":
- version "24.0.15"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-24.0.15.tgz#f34fbc973e7d64217106e0c59ed8761e6b51381e"
- integrity sha512-oaeTSbCef7U/z7rDeJA138xpG3NuKc64/rZ2qmUFkFJmnMsAPaluIifqyWd8hSSMxyP9oie3dLAqYPblag9KgA==
+"@types/node@*", "@types/node@^24.1.0":
+ version "24.1.0"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-24.1.0.tgz#0993f7dc31ab5cc402d112315b463e383d68a49c"
+ integrity sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==
dependencies:
undici-types "~7.8.0"
@@ -2146,12 +2124,12 @@ axios@^1.4.0:
form-data "^4.0.4"
proxy-from-env "^1.1.0"
-babel-jest@30.0.4:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-30.0.4.tgz#63945c1b27227312fc687689073124dba5b28282"
- integrity sha512-UjG2j7sAOqsp2Xua1mS/e+ekddkSu3wpf4nZUSvXNHuVWdaOUXQ77+uyjJLDE9i0atm5x4kds8K9yb5lRsRtcA==
+babel-jest@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-30.0.5.tgz#7cc7dd03d0d613125d458521f635b8c2361e89cc"
+ integrity sha512-mRijnKimhGDMsizTvBTWotwNpzrkHr+VvZUQBof2AufXKB8NXrL1W69TG20EvOz7aevx6FTJIaBuBkYxS8zolg==
dependencies:
- "@jest/transform" "30.0.4"
+ "@jest/transform" "30.0.5"
"@types/babel__core" "^7.20.5"
babel-plugin-istanbul "^7.0.0"
babel-preset-jest "30.0.1"
@@ -2417,6 +2395,11 @@ chalk@^5.2.0, chalk@^5.4.1:
resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8"
integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==
+change-case@^5.4.4:
+ version "5.4.4"
+ resolved "https://registry.yarnpkg.com/change-case/-/change-case-5.4.4.tgz#0d52b507d8fb8f204343432381d1a6d7bff97a02"
+ integrity sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==
+
char-regex@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
@@ -2451,7 +2434,7 @@ chrome-trace-event@^1.0.2:
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b"
integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==
-ci-info@^4.2.0:
+ci-info@^4.2.0, ci-info@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.0.tgz#c39b1013f8fdbd28cd78e62318357d02da160cd7"
integrity sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==
@@ -2658,7 +2641,7 @@ copy-anything@^2.0.1:
dependencies:
is-what "^3.14.1"
-core-js-compat@^3.41.0:
+core-js-compat@^3.44.0:
version "3.44.0"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.44.0.tgz#62b9165b97e4cbdb8bca16b14818e67428b4a0f8"
integrity sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==
@@ -3311,15 +3294,15 @@ eslint-config-prettier@^10.1.1:
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz#15734ce4af8c2778cc32f0b01b37b0b5cd1ecb97"
integrity sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==
-eslint-config-webpack@^4.4.1:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/eslint-config-webpack/-/eslint-config-webpack-4.4.1.tgz#cfcb77c3295c8f1c3fcbd523d71e2ccc7092e16a"
- integrity sha512-IPerJYT5ErPUbrVUCNVQF5RmCUrnA1Am8D1wJufetmEu4hsZXzigy4wP6uroLv8s9GBpiEPM5NZ0PHmao4tUMw==
+eslint-config-webpack@^4.5.1:
+ version "4.5.1"
+ resolved "https://registry.yarnpkg.com/eslint-config-webpack/-/eslint-config-webpack-4.5.1.tgz#553f591d027bb9a869059ed1d328b6cee104483a"
+ integrity sha512-Qiq0PSjx7P1ncI9PCTvfW8c76OqkXAFr91TQGa+u1FAMHXMur3in8hwL7fXYPi2oF8ytI1Zuoc2TmDzX0ZO4tA==
dependencies:
detect-indent "^7.0.1"
jsonc-eslint-parser "^2.4.0"
semver "^7.7.2"
- sort-package-json "^3.3.1"
+ sort-package-json "^3.4.0"
eslint-import-resolver-node@^0.3.9:
version "0.3.9"
@@ -3417,27 +3400,28 @@ eslint-plugin-prettier@^5.5.0:
prettier-linter-helpers "^1.0.0"
synckit "^0.11.7"
-eslint-plugin-unicorn@^59.0.1:
- version "59.0.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-59.0.1.tgz#e76ca18f6b92633440973e5442923a36544a1422"
- integrity sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q==
+eslint-plugin-unicorn@^60.0.0:
+ version "60.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-60.0.0.tgz#68f712bcb17e94bd176cce7312647ba1d1409c3c"
+ integrity sha512-QUzTefvP8stfSXsqKQ+vBQSEsXIlAiCduS/V1Em+FKgL9c21U/IIm20/e3MFy1jyCf14tHAhqC1sX8OTy6VUCg==
dependencies:
- "@babel/helper-validator-identifier" "^7.25.9"
- "@eslint-community/eslint-utils" "^4.5.1"
- "@eslint/plugin-kit" "^0.2.7"
- ci-info "^4.2.0"
+ "@babel/helper-validator-identifier" "^7.27.1"
+ "@eslint-community/eslint-utils" "^4.7.0"
+ "@eslint/plugin-kit" "^0.3.3"
+ change-case "^5.4.4"
+ ci-info "^4.3.0"
clean-regexp "^1.0.0"
- core-js-compat "^3.41.0"
+ core-js-compat "^3.44.0"
esquery "^1.6.0"
find-up-simple "^1.0.1"
- globals "^16.0.0"
+ globals "^16.3.0"
indent-string "^5.0.0"
is-builtin-module "^5.0.0"
jsesc "^3.1.0"
pluralize "^8.0.0"
regexp-tree "^0.1.27"
regjsparser "^0.12.0"
- semver "^7.7.1"
+ semver "^7.7.2"
strip-indent "^4.0.0"
eslint-scope@5.1.1:
@@ -3467,9 +3451,9 @@ eslint-visitor-keys@^4.2.1:
integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
eslint@^9.29.0:
- version "9.31.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.31.0.tgz#9a488e6da75bbe05785cd62e43c5ea99356d21ba"
- integrity sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==
+ version "9.32.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.32.0.tgz#4ea28df4a8dbc454e1251e0f3aed4bcf4ce50a47"
+ integrity sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.12.1"
@@ -3477,8 +3461,8 @@ eslint@^9.29.0:
"@eslint/config-helpers" "^0.3.0"
"@eslint/core" "^0.15.0"
"@eslint/eslintrc" "^3.3.1"
- "@eslint/js" "9.31.0"
- "@eslint/plugin-kit" "^0.3.1"
+ "@eslint/js" "9.32.0"
+ "@eslint/plugin-kit" "^0.3.4"
"@humanfs/node" "^0.16.6"
"@humanwhocodes/module-importer" "^1.0.1"
"@humanwhocodes/retry" "^0.4.2"
@@ -3622,17 +3606,17 @@ exit-x@^0.2.2:
resolved "https://registry.yarnpkg.com/exit-x/-/exit-x-0.2.2.tgz#1f9052de3b8d99a696b10dad5bced9bdd5c3aa64"
integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==
-expect@30.0.4, expect@^30.0.0:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/expect/-/expect-30.0.4.tgz#23ce0eaa9a1dcd72fcb78a228b9babdbcf9ddeca"
- integrity sha512-dDLGjnP2cKbEppxVICxI/Uf4YemmGMPNy0QytCbfafbpYk9AFQsxb8Uyrxii0RPK7FWgLGlSem+07WirwS3cFQ==
+expect@30.0.5, expect@^30.0.0:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-30.0.5.tgz#c23bf193c5e422a742bfd2990ad990811de41a5a"
+ integrity sha512-P0te2pt+hHI5qLJkIR+iMvS+lYUZml8rKKsohVHAGY+uClp9XVbdyYNJOIjSRpHVp8s8YqxJCiHUkSYZGr8rtQ==
dependencies:
- "@jest/expect-utils" "30.0.4"
+ "@jest/expect-utils" "30.0.5"
"@jest/get-type" "30.0.1"
- jest-matcher-utils "30.0.4"
- jest-message-util "30.0.2"
- jest-mock "30.0.2"
- jest-util "30.0.2"
+ jest-matcher-utils "30.0.5"
+ jest-message-util "30.0.5"
+ jest-mock "30.0.5"
+ jest-util "30.0.5"
exponential-backoff@^3.1.1:
version "3.1.2"
@@ -4096,7 +4080,7 @@ globals@^15.11.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8"
integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==
-globals@^16.0.0:
+globals@^16.0.0, globals@^16.3.0:
version "16.3.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-16.3.0.tgz#66118e765ddaf9e2d880f7e17658543f93f1f667"
integrity sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==
@@ -4745,96 +4729,96 @@ jackspeak@^3.1.2:
optionalDependencies:
"@pkgjs/parseargs" "^0.11.0"
-jest-changed-files@30.0.2:
- version "30.0.2"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-30.0.2.tgz#2c275263037f8f291b71cbb0a4f639c519ab7eb8"
- integrity sha512-Ius/iRST9FKfJI+I+kpiDh8JuUlAISnRszF9ixZDIqJF17FckH5sOzKC8a0wd0+D+8em5ADRHA5V5MnfeDk2WA==
+jest-changed-files@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-30.0.5.tgz#ec448f83bd9caa894dd7da8707f207c356a19924"
+ integrity sha512-bGl2Ntdx0eAwXuGpdLdVYVr5YQHnSZlQ0y9HVDu565lCUAe9sj6JOtBbMmBBikGIegne9piDDIOeiLVoqTkz4A==
dependencies:
execa "^5.1.1"
- jest-util "30.0.2"
+ jest-util "30.0.5"
p-limit "^3.1.0"
-jest-circus@30.0.4, jest-circus@^30.0.3:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-30.0.4.tgz#7bdfc5951eb883283bf0336cc4d624222f09851e"
- integrity sha512-o6UNVfbXbmzjYgmVPtSQrr5xFZCtkDZGdTlptYvGFSN80RuOOlTe73djvMrs+QAuSERZWcHBNIOMH+OEqvjWuw==
+jest-circus@30.0.5, jest-circus@^30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-30.0.5.tgz#9b4d44feb56c7ffe14411ad7fc08af188c5d4da7"
+ integrity sha512-h/sjXEs4GS+NFFfqBDYT7y5Msfxh04EwWLhQi0F8kuWpe+J/7tICSlswU8qvBqumR3kFgHbfu7vU6qruWWBPug==
dependencies:
- "@jest/environment" "30.0.4"
- "@jest/expect" "30.0.4"
- "@jest/test-result" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/environment" "30.0.5"
+ "@jest/expect" "30.0.5"
+ "@jest/test-result" "30.0.5"
+ "@jest/types" "30.0.5"
"@types/node" "*"
chalk "^4.1.2"
co "^4.6.0"
dedent "^1.6.0"
is-generator-fn "^2.1.0"
- jest-each "30.0.2"
- jest-matcher-utils "30.0.4"
- jest-message-util "30.0.2"
- jest-runtime "30.0.4"
- jest-snapshot "30.0.4"
- jest-util "30.0.2"
+ jest-each "30.0.5"
+ jest-matcher-utils "30.0.5"
+ jest-message-util "30.0.5"
+ jest-runtime "30.0.5"
+ jest-snapshot "30.0.5"
+ jest-util "30.0.5"
p-limit "^3.1.0"
- pretty-format "30.0.2"
+ pretty-format "30.0.5"
pure-rand "^7.0.0"
slash "^3.0.0"
stack-utils "^2.0.6"
-jest-cli@30.0.4, jest-cli@^30.0.3:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-30.0.4.tgz#85510c5ebffc4ed31b571b3e166bca3febe7ba4a"
- integrity sha512-3dOrP3zqCWBkjoVG1zjYJpD9143N9GUCbwaF2pFF5brnIgRLHmKcCIw+83BvF1LxggfMWBA0gxkn6RuQVuRhIQ==
+jest-cli@30.0.5, jest-cli@^30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-30.0.5.tgz#c3fbfdabd1a5c428429476f915a1ba6d0774cc50"
+ integrity sha512-Sa45PGMkBZzF94HMrlX4kUyPOwUpdZasaliKN3mifvDmkhLYqLLg8HQTzn6gq7vJGahFYMQjXgyJWfYImKZzOw==
dependencies:
- "@jest/core" "30.0.4"
- "@jest/test-result" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/core" "30.0.5"
+ "@jest/test-result" "30.0.5"
+ "@jest/types" "30.0.5"
chalk "^4.1.2"
exit-x "^0.2.2"
import-local "^3.2.0"
- jest-config "30.0.4"
- jest-util "30.0.2"
- jest-validate "30.0.2"
+ jest-config "30.0.5"
+ jest-util "30.0.5"
+ jest-validate "30.0.5"
yargs "^17.7.2"
-jest-config@30.0.4:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-30.0.4.tgz#a710897373ae2b0ad8db027cb7a06e6d4a903c41"
- integrity sha512-3dzbO6sh34thAGEjJIW0fgT0GA0EVlkski6ZzMcbW6dzhenylXAE/Mj2MI4HonroWbkKc6wU6bLVQ8dvBSZ9lA==
+jest-config@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-30.0.5.tgz#567cf39b595229b786506a496c22e222d5e8d480"
+ integrity sha512-aIVh+JNOOpzUgzUnPn5FLtyVnqc3TQHVMupYtyeURSb//iLColiMIR8TxCIDKyx9ZgjKnXGucuW68hCxgbrwmA==
dependencies:
"@babel/core" "^7.27.4"
"@jest/get-type" "30.0.1"
"@jest/pattern" "30.0.1"
- "@jest/test-sequencer" "30.0.4"
- "@jest/types" "30.0.1"
- babel-jest "30.0.4"
+ "@jest/test-sequencer" "30.0.5"
+ "@jest/types" "30.0.5"
+ babel-jest "30.0.5"
chalk "^4.1.2"
ci-info "^4.2.0"
deepmerge "^4.3.1"
glob "^10.3.10"
graceful-fs "^4.2.11"
- jest-circus "30.0.4"
+ jest-circus "30.0.5"
jest-docblock "30.0.1"
- jest-environment-node "30.0.4"
+ jest-environment-node "30.0.5"
jest-regex-util "30.0.1"
- jest-resolve "30.0.2"
- jest-runner "30.0.4"
- jest-util "30.0.2"
- jest-validate "30.0.2"
+ jest-resolve "30.0.5"
+ jest-runner "30.0.5"
+ jest-util "30.0.5"
+ jest-validate "30.0.5"
micromatch "^4.0.8"
parse-json "^5.2.0"
- pretty-format "30.0.2"
+ pretty-format "30.0.5"
slash "^3.0.0"
strip-json-comments "^3.1.1"
-jest-diff@30.0.4, jest-diff@^30.0.3:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.4.tgz#f6e71d19ed6e8f5c7f1bead9ac406c0dd6abce5a"
- integrity sha512-TSjceIf6797jyd+R64NXqicttROD+Qf98fex7CowmlSn7f8+En0da1Dglwr1AXxDtVizoxXYZBlUQwNhoOXkNw==
+jest-diff@30.0.5, jest-diff@^30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.5.tgz#b40f81e0c0d13e5b81c4d62b0d0dfa6a524ee0fd"
+ integrity sha512-1UIqE9PoEKaHcIKvq2vbibrCog4Y8G0zmOxgQUVEiTqwR5hJVMCoDsN1vFvI5JvwD37hjueZ1C4l2FyGnfpE0A==
dependencies:
"@jest/diff-sequences" "30.0.1"
"@jest/get-type" "30.0.1"
chalk "^4.1.2"
- pretty-format "30.0.2"
+ pretty-format "30.0.5"
jest-docblock@30.0.1:
version "30.0.1"
@@ -4843,43 +4827,43 @@ jest-docblock@30.0.1:
dependencies:
detect-newline "^3.1.0"
-jest-each@30.0.2:
- version "30.0.2"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-30.0.2.tgz#402e189784715f5c76f1bb97c29842e79abe99a1"
- integrity sha512-ZFRsTpe5FUWFQ9cWTMguCaiA6kkW5whccPy9JjD1ezxh+mJeqmz8naL8Fl/oSbNJv3rgB0x87WBIkA5CObIUZQ==
+jest-each@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-30.0.5.tgz#5962264ff246cd757ba44db096c1bc5b4835173e"
+ integrity sha512-dKjRsx1uZ96TVyejD3/aAWcNKy6ajMaN531CwWIsrazIqIoXI9TnnpPlkrEYku/8rkS3dh2rbH+kMOyiEIv0xQ==
dependencies:
"@jest/get-type" "30.0.1"
- "@jest/types" "30.0.1"
+ "@jest/types" "30.0.5"
chalk "^4.1.2"
- jest-util "30.0.2"
- pretty-format "30.0.2"
+ jest-util "30.0.5"
+ pretty-format "30.0.5"
-jest-environment-node@30.0.4, jest-environment-node@^30.0.2:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-30.0.4.tgz#080f2d6e438ef35a4701a09207fd2cfa030cd4a3"
- integrity sha512-p+rLEzC2eThXqiNh9GHHTC0OW5Ca4ZfcURp7scPjYBcmgpR9HG6750716GuUipYf2AcThU3k20B31USuiaaIEg==
+jest-environment-node@30.0.5, jest-environment-node@^30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-30.0.5.tgz#6a98dd80e0384ead67ed05643381395f6cda93c9"
+ integrity sha512-ppYizXdLMSvciGsRsMEnv/5EFpvOdXBaXRBzFUDPWrsfmog4kYrOGWXarLllz6AXan6ZAA/kYokgDWuos1IKDA==
dependencies:
- "@jest/environment" "30.0.4"
- "@jest/fake-timers" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/environment" "30.0.5"
+ "@jest/fake-timers" "30.0.5"
+ "@jest/types" "30.0.5"
"@types/node" "*"
- jest-mock "30.0.2"
- jest-util "30.0.2"
- jest-validate "30.0.2"
+ jest-mock "30.0.5"
+ jest-util "30.0.5"
+ jest-validate "30.0.5"
-jest-haste-map@30.0.2:
- version "30.0.2"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-30.0.2.tgz#83826e7e352fa139dc95100337aff4de58c99453"
- integrity sha512-telJBKpNLeCb4MaX+I5k496556Y2FiKR/QLZc0+MGBYl4k3OO0472drlV2LUe7c1Glng5HuAu+5GLYp//GpdOQ==
+jest-haste-map@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-30.0.5.tgz#fdd0daa322b02eb34267854cff2859fae21e92a6"
+ integrity sha512-dkmlWNlsTSR0nH3nRfW5BKbqHefLZv0/6LCccG0xFCTWcJu8TuEwG+5Cm75iBfjVoockmO6J35o5gxtFSn5xeg==
dependencies:
- "@jest/types" "30.0.1"
+ "@jest/types" "30.0.5"
"@types/node" "*"
anymatch "^3.1.3"
fb-watchman "^2.0.2"
graceful-fs "^4.2.11"
jest-regex-util "30.0.1"
- jest-util "30.0.2"
- jest-worker "30.0.2"
+ jest-util "30.0.5"
+ jest-worker "30.0.5"
micromatch "^4.0.8"
walker "^1.0.8"
optionalDependencies:
@@ -4895,47 +4879,47 @@ jest-junit@^16.0.0:
uuid "^8.3.2"
xml "^1.0.1"
-jest-leak-detector@30.0.2:
- version "30.0.2"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-30.0.2.tgz#da4df660615d170136d2b468af3bf1c9bff0137e"
- integrity sha512-U66sRrAYdALq+2qtKffBLDWsQ/XoNNs2Lcr83sc9lvE/hEpNafJlq2lXCPUBMNqamMECNxSIekLfe69qg4KMIQ==
+jest-leak-detector@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-30.0.5.tgz#00cfd2b323f48d8f4416b0a3e05fcf4c51f18864"
+ integrity sha512-3Uxr5uP8jmHMcsOtYMRB/zf1gXN3yUIc+iPorhNETG54gErFIiUhLvyY/OggYpSMOEYqsmRxmuU4ZOoX5jpRFg==
dependencies:
"@jest/get-type" "30.0.1"
- pretty-format "30.0.2"
+ pretty-format "30.0.5"
-jest-matcher-utils@30.0.4:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.0.4.tgz#1aab71eb7ba401f81d9ef7231feb88392e4a6e54"
- integrity sha512-ubCewJ54YzeAZ2JeHHGVoU+eDIpQFsfPQs0xURPWoNiO42LGJ+QGgfSf+hFIRplkZDkhH5MOvuxHKXRTUU3dUQ==
+jest-matcher-utils@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.0.5.tgz#dff3334be58faea4a5e1becc228656fbbfc2467d"
+ integrity sha512-uQgGWt7GOrRLP1P7IwNWwK1WAQbq+m//ZY0yXygyfWp0rJlksMSLQAA4wYQC3b6wl3zfnchyTx+k3HZ5aPtCbQ==
dependencies:
"@jest/get-type" "30.0.1"
chalk "^4.1.2"
- jest-diff "30.0.4"
- pretty-format "30.0.2"
+ jest-diff "30.0.5"
+ pretty-format "30.0.5"
-jest-message-util@30.0.2:
- version "30.0.2"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.0.2.tgz#9dfdc37570d172f0ffdc42a0318036ff4008837f"
- integrity sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw==
+jest-message-util@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.0.5.tgz#dd12ffec91dd3fa6a59cbd538a513d8e239e070c"
+ integrity sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==
dependencies:
"@babel/code-frame" "^7.27.1"
- "@jest/types" "30.0.1"
+ "@jest/types" "30.0.5"
"@types/stack-utils" "^2.0.3"
chalk "^4.1.2"
graceful-fs "^4.2.11"
micromatch "^4.0.8"
- pretty-format "30.0.2"
+ pretty-format "30.0.5"
slash "^3.0.0"
stack-utils "^2.0.6"
-jest-mock@30.0.2:
- version "30.0.2"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.2.tgz#5e4245f25f6f9532714906cab10a2b9e39eb2183"
- integrity sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA==
+jest-mock@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.5.tgz#ef437e89212560dd395198115550085038570bdd"
+ integrity sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==
dependencies:
- "@jest/types" "30.0.1"
+ "@jest/types" "30.0.5"
"@types/node" "*"
- jest-util "30.0.2"
+ jest-util "30.0.5"
jest-pnp-resolver@^1.2.3:
version "1.2.3"
@@ -4947,157 +4931,157 @@ jest-regex-util@30.0.1:
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b"
integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==
-jest-resolve-dependencies@30.0.4:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.4.tgz#54decdedec040ec0b5b717af43a0b538d638d395"
- integrity sha512-EQBYow19B/hKr4gUTn+l8Z+YLlP2X0IoPyp0UydOtrcPbIOYzJ8LKdFd+yrbwztPQvmlBFUwGPPEzHH1bAvFAw==
+jest-resolve-dependencies@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.5.tgz#53be4c51d296c84a0e75608e7b77b6fe92dbac29"
+ integrity sha512-/xMvBR4MpwkrHW4ikZIWRttBBRZgWK4d6xt3xW1iRDSKt4tXzYkMkyPfBnSCgv96cpkrctfXs6gexeqMYqdEpw==
dependencies:
jest-regex-util "30.0.1"
- jest-snapshot "30.0.4"
+ jest-snapshot "30.0.5"
-jest-resolve@30.0.2:
- version "30.0.2"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-30.0.2.tgz#4b7c826a35e9657189568e4dafc0ba5f05868cf2"
- integrity sha512-q/XT0XQvRemykZsvRopbG6FQUT6/ra+XV6rPijyjT6D0msOyCvR2A5PlWZLd+fH0U8XWKZfDiAgrUNDNX2BkCw==
+jest-resolve@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-30.0.5.tgz#f52f91600070b7073db465dc553eee5471ea8e06"
+ integrity sha512-d+DjBQ1tIhdz91B79mywH5yYu76bZuE96sSbxj8MkjWVx5WNdt1deEFRONVL4UkKLSrAbMkdhb24XN691yDRHg==
dependencies:
chalk "^4.1.2"
graceful-fs "^4.2.11"
- jest-haste-map "30.0.2"
+ jest-haste-map "30.0.5"
jest-pnp-resolver "^1.2.3"
- jest-util "30.0.2"
- jest-validate "30.0.2"
+ jest-util "30.0.5"
+ jest-validate "30.0.5"
slash "^3.0.0"
unrs-resolver "^1.7.11"
-jest-runner@30.0.4:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.0.4.tgz#3647eeb04f2d0b2c0a5769dd73cd861ebc5853f4"
- integrity sha512-mxY0vTAEsowJwvFJo5pVivbCpuu6dgdXRmt3v3MXjBxFly7/lTk3Td0PaMyGOeNQUFmSuGEsGYqhbn7PA9OekQ==
+jest-runner@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.0.5.tgz#5cbaaf85964246da4f65d697f186846f23cd9b5a"
+ integrity sha512-JcCOucZmgp+YuGgLAXHNy7ualBx4wYSgJVWrYMRBnb79j9PD0Jxh0EHvR5Cx/r0Ce+ZBC4hCdz2AzFFLl9hCiw==
dependencies:
- "@jest/console" "30.0.4"
- "@jest/environment" "30.0.4"
- "@jest/test-result" "30.0.4"
- "@jest/transform" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/console" "30.0.5"
+ "@jest/environment" "30.0.5"
+ "@jest/test-result" "30.0.5"
+ "@jest/transform" "30.0.5"
+ "@jest/types" "30.0.5"
"@types/node" "*"
chalk "^4.1.2"
emittery "^0.13.1"
exit-x "^0.2.2"
graceful-fs "^4.2.11"
jest-docblock "30.0.1"
- jest-environment-node "30.0.4"
- jest-haste-map "30.0.2"
- jest-leak-detector "30.0.2"
- jest-message-util "30.0.2"
- jest-resolve "30.0.2"
- jest-runtime "30.0.4"
- jest-util "30.0.2"
- jest-watcher "30.0.4"
- jest-worker "30.0.2"
+ jest-environment-node "30.0.5"
+ jest-haste-map "30.0.5"
+ jest-leak-detector "30.0.5"
+ jest-message-util "30.0.5"
+ jest-resolve "30.0.5"
+ jest-runtime "30.0.5"
+ jest-util "30.0.5"
+ jest-watcher "30.0.5"
+ jest-worker "30.0.5"
p-limit "^3.1.0"
source-map-support "0.5.13"
-jest-runtime@30.0.4:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-30.0.4.tgz#100f31a5f6c4a6586c2ce91a936a10f1aca64749"
- integrity sha512-tUQrZ8+IzoZYIHoPDQEB4jZoPyzBjLjq7sk0KVyd5UPRjRDOsN7o6UlvaGF8ddpGsjznl9PW+KRgWqCNO+Hn7w==
+jest-runtime@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-30.0.5.tgz#d6a7e22687264240d1786d6f7682ac6a2872e552"
+ integrity sha512-7oySNDkqpe4xpX5PPiJTe5vEa+Ak/NnNz2bGYZrA1ftG3RL3EFlHaUkA1Cjx+R8IhK0Vg43RML5mJedGTPNz3A==
dependencies:
- "@jest/environment" "30.0.4"
- "@jest/fake-timers" "30.0.4"
- "@jest/globals" "30.0.4"
+ "@jest/environment" "30.0.5"
+ "@jest/fake-timers" "30.0.5"
+ "@jest/globals" "30.0.5"
"@jest/source-map" "30.0.1"
- "@jest/test-result" "30.0.4"
- "@jest/transform" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/test-result" "30.0.5"
+ "@jest/transform" "30.0.5"
+ "@jest/types" "30.0.5"
"@types/node" "*"
chalk "^4.1.2"
cjs-module-lexer "^2.1.0"
collect-v8-coverage "^1.0.2"
glob "^10.3.10"
graceful-fs "^4.2.11"
- jest-haste-map "30.0.2"
- jest-message-util "30.0.2"
- jest-mock "30.0.2"
+ jest-haste-map "30.0.5"
+ jest-message-util "30.0.5"
+ jest-mock "30.0.5"
jest-regex-util "30.0.1"
- jest-resolve "30.0.2"
- jest-snapshot "30.0.4"
- jest-util "30.0.2"
+ jest-resolve "30.0.5"
+ jest-snapshot "30.0.5"
+ jest-util "30.0.5"
slash "^3.0.0"
strip-bom "^4.0.0"
-jest-snapshot@30.0.4:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-30.0.4.tgz#21fdc1d944bc077a58f5eda88ef77a26dee4c3ee"
- integrity sha512-S/8hmSkeUib8WRUq9pWEb5zMfsOjiYWDWzFzKnjX7eDyKKgimsu9hcmsUEg8a7dPAw8s/FacxsXquq71pDgPjQ==
+jest-snapshot@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-30.0.5.tgz#6600716eef2e6d8ea1dd788ae4385f3a2791b11f"
+ integrity sha512-T00dWU/Ek3LqTp4+DcW6PraVxjk28WY5Ua/s+3zUKSERZSNyxTqhDXCWKG5p2HAJ+crVQ3WJ2P9YVHpj1tkW+g==
dependencies:
"@babel/core" "^7.27.4"
"@babel/generator" "^7.27.5"
"@babel/plugin-syntax-jsx" "^7.27.1"
"@babel/plugin-syntax-typescript" "^7.27.1"
"@babel/types" "^7.27.3"
- "@jest/expect-utils" "30.0.4"
+ "@jest/expect-utils" "30.0.5"
"@jest/get-type" "30.0.1"
- "@jest/snapshot-utils" "30.0.4"
- "@jest/transform" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/snapshot-utils" "30.0.5"
+ "@jest/transform" "30.0.5"
+ "@jest/types" "30.0.5"
babel-preset-current-node-syntax "^1.1.0"
chalk "^4.1.2"
- expect "30.0.4"
+ expect "30.0.5"
graceful-fs "^4.2.11"
- jest-diff "30.0.4"
- jest-matcher-utils "30.0.4"
- jest-message-util "30.0.2"
- jest-util "30.0.2"
- pretty-format "30.0.2"
+ jest-diff "30.0.5"
+ jest-matcher-utils "30.0.5"
+ jest-message-util "30.0.5"
+ jest-util "30.0.5"
+ pretty-format "30.0.5"
semver "^7.7.2"
synckit "^0.11.8"
-jest-util@30.0.2:
- version "30.0.2"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.0.2.tgz#1bd8411f81e6f5e2ca8b31bb2534ebcd7cbac065"
- integrity sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg==
+jest-util@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.0.5.tgz#035d380c660ad5f1748dff71c4105338e05f8669"
+ integrity sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==
dependencies:
- "@jest/types" "30.0.1"
+ "@jest/types" "30.0.5"
"@types/node" "*"
chalk "^4.1.2"
ci-info "^4.2.0"
graceful-fs "^4.2.11"
picomatch "^4.0.2"
-jest-validate@30.0.2:
- version "30.0.2"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-30.0.2.tgz#f62a2f0e014dac94747509ba8c2bcd5d48215b7f"
- integrity sha512-noOvul+SFER4RIvNAwGn6nmV2fXqBq67j+hKGHKGFCmK4ks/Iy1FSrqQNBLGKlu4ZZIRL6Kg1U72N1nxuRCrGQ==
+jest-validate@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-30.0.5.tgz#d26fd218b8d566bff48fd98880b8ea94fd0d8456"
+ integrity sha512-ouTm6VFHaS2boyl+k4u+Qip4TSH7Uld5tyD8psQ8abGgt2uYYB8VwVfAHWHjHc0NWmGGbwO5h0sCPOGHHevefw==
dependencies:
"@jest/get-type" "30.0.1"
- "@jest/types" "30.0.1"
+ "@jest/types" "30.0.5"
camelcase "^6.3.0"
chalk "^4.1.2"
leven "^3.1.0"
- pretty-format "30.0.2"
+ pretty-format "30.0.5"
-jest-watcher@30.0.4:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-30.0.4.tgz#f51b9870760d917851bb5b871e95b3c5f021cb86"
- integrity sha512-YESbdHDs7aQOCSSKffG8jXqOKFqw4q4YqR+wHYpR5GWEQioGvL0BfbcjvKIvPEM0XGfsfJrka7jJz3Cc3gI4VQ==
+jest-watcher@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-30.0.5.tgz#90db6e3f582b88085bde58f7555cbdd3a1beb10d"
+ integrity sha512-z9slj/0vOwBDBjN3L4z4ZYaA+pG56d6p3kTUhFRYGvXbXMWhXmb/FIxREZCD06DYUwDKKnj2T80+Pb71CQ0KEg==
dependencies:
- "@jest/test-result" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/test-result" "30.0.5"
+ "@jest/types" "30.0.5"
"@types/node" "*"
ansi-escapes "^4.3.2"
chalk "^4.1.2"
emittery "^0.13.1"
- jest-util "30.0.2"
+ jest-util "30.0.5"
string-length "^4.0.2"
-jest-worker@30.0.2:
- version "30.0.2"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-30.0.2.tgz#e67bd7debbc9d8445907a17067a89359acedc8c5"
- integrity sha512-RN1eQmx7qSLFA+o9pfJKlqViwL5wt+OL3Vff/A+/cPsmuw7NPwfgl33AP+/agRmHzPOFgXviRycR9kYwlcRQXg==
+jest-worker@30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-30.0.5.tgz#0b85cbab10610303e8d84e214f94d8f052c3cd04"
+ integrity sha512-ojRXsWzEP16NdUuBw/4H/zkZdHOa7MMYCk4E430l+8fELeLg/mqmMlRhjL7UNZvQrDmnovWZV4DxX03fZF48fQ==
dependencies:
"@types/node" "*"
"@ungap/structured-clone" "^1.3.0"
- jest-util "30.0.2"
+ jest-util "30.0.5"
merge-stream "^2.0.0"
supports-color "^8.1.1"
@@ -5110,15 +5094,15 @@ jest-worker@^27.4.5:
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest@^30.0.3:
- version "30.0.4"
- resolved "https://registry.yarnpkg.com/jest/-/jest-30.0.4.tgz#4596879f2af0560d9b1e588b252531cf10148947"
- integrity sha512-9QE0RS4WwTj/TtTC4h/eFVmFAhGNVerSB9XpJh8sqaXlP73ILcPcZ7JWjjEtJJe2m8QyBLKKfPQuK+3F+Xij/g==
+jest@^30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-30.0.5.tgz#ee62729fb77829790d67c660d852350fbde315ce"
+ integrity sha512-y2mfcJywuTUkvLm2Lp1/pFX8kTgMO5yyQGq/Sk/n2mN7XWYp4JsCZ/QXW34M8YScgk8bPZlREH04f6blPnoHnQ==
dependencies:
- "@jest/core" "30.0.4"
- "@jest/types" "30.0.1"
+ "@jest/core" "30.0.5"
+ "@jest/types" "30.0.5"
import-local "^3.2.0"
- jest-cli "30.0.4"
+ jest-cli "30.0.5"
js-stringify@^1.0.2:
version "1.0.2"
@@ -5609,7 +5593,7 @@ mdast-util-gfm-task-list-item@^2.0.0:
mdast-util-from-markdown "^2.0.0"
mdast-util-to-markdown "^2.0.0"
-mdast-util-gfm@^3.0.0:
+mdast-util-gfm@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz#2cdf63b92c2a331406b0fb0db4c077c1b0331751"
integrity sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==
@@ -6705,12 +6689,12 @@ prettier@^3.6.0:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393"
integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==
-pretty-format@30.0.2, pretty-format@^30.0.0, pretty-format@^30.0.2:
- version "30.0.2"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.0.2.tgz#54717b6aa2b4357a2e6d83868e10a2ea8dd647c7"
- integrity sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg==
+pretty-format@30.0.5, pretty-format@^30.0.0, pretty-format@^30.0.5:
+ version "30.0.5"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.0.5.tgz#e001649d472800396c1209684483e18a4d250360"
+ integrity sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==
dependencies:
- "@jest/schemas" "30.0.1"
+ "@jest/schemas" "30.0.5"
ansi-styles "^5.2.0"
react-is "^18.3.1"
@@ -7361,7 +7345,7 @@ sort-object-keys@^1.1.3:
resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45"
integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==
-sort-package-json@^3.3.1:
+sort-package-json@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-3.4.0.tgz#98e42b78848c517736b069f8aa4fa322fae56677"
integrity sha512-97oFRRMM2/Js4oEA9LJhjyMlde+2ewpZQf53pgue27UkbEXfHJnDzHlUxQ/DWUkzqmp7DFwJp8D+wi/TYeQhpA==