From 9bce51f651aad297ef9eb6df832bfdaf1de05d84 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 22 四月 2026 14:27:54 +0800
Subject: [PATCH] 青岛推送
---
node_modules/webpack/lib/optimize/ModuleConcatenationPlugin.js | 59 +++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 49 insertions(+), 10 deletions(-)
diff --git a/node_modules/webpack/lib/optimize/ModuleConcatenationPlugin.js b/node_modules/webpack/lib/optimize/ModuleConcatenationPlugin.js
index 39716e9..03feeac 100644
--- a/node_modules/webpack/lib/optimize/ModuleConcatenationPlugin.js
+++ b/node_modules/webpack/lib/optimize/ModuleConcatenationPlugin.js
@@ -8,7 +8,7 @@
const asyncLib = require("neo-async");
const ChunkGraph = require("../ChunkGraph");
const ModuleGraph = require("../ModuleGraph");
-const { JS_TYPE } = require("../ModuleSourceTypesConstants");
+const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
const { STAGE_DEFAULT } = require("../OptimizationStages");
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
const { compareModulesByIdentifier } = require("../util/comparators");
@@ -28,7 +28,10 @@
/** @typedef {import("../RequestShortener")} RequestShortener */
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
+/** @typedef {Module | ((requestShortener: RequestShortener) => string)} Problem */
+
/**
+ * Defines the statistics type used by this module.
* @typedef {object} Statistics
* @property {number} cached
* @property {number} alreadyInConfig
@@ -43,6 +46,7 @@
*/
/**
+ * Format bailout reason.
* @param {string} msg message
* @returns {string} formatted message
*/
@@ -52,7 +56,7 @@
class ModuleConcatenationPlugin {
/**
- * Apply the plugin
+ * Applies the plugin by registering its hooks on the compiler.
* @param {Compiler} compiler the compiler instance
* @returns {void}
*/
@@ -69,6 +73,7 @@
const bailoutReasonMap = new Map();
/**
+ * Sets bailout reason.
* @param {Module} module the module
* @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
*/
@@ -84,6 +89,7 @@
};
/**
+ * Sets inner bailout reason.
* @param {Module} module the module
* @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
*/
@@ -92,6 +98,7 @@
};
/**
+ * Gets inner bailout reason.
* @param {Module} module the module
* @param {RequestShortener} requestShortener the request shortener
* @returns {string | ((requestShortener: RequestShortener) => string) | undefined} the reason
@@ -103,8 +110,9 @@
};
/**
+ * Format bailout warning.
* @param {Module} module the module
- * @param {Module | ((requestShortener: RequestShortener) => string)} problem the problem
+ * @param {Problem} problem the problem
* @returns {(requestShortener: RequestShortener) => string} the reason
*/
const formatBailoutWarning = (module, problem) => (requestShortener) => {
@@ -143,7 +151,9 @@
"webpack.ModuleConcatenationPlugin"
);
const { chunkGraph, moduleGraph } = compilation;
+ /** @type {Module[]} */
const relevantModules = [];
+ /** @type {Set<Module>} */
const possibleInners = new Set();
const context = {
chunkGraph,
@@ -265,7 +275,9 @@
let statsEmptyConfigurations = 0;
logger.time("find modules to concatenate");
+ /** @type {ConcatConfiguration[]} */
const concatConfigurations = [];
+ /** @type {Set<Module>} */
const usedAsInner = new Set();
for (const currentRoot of relevantModules) {
// when used by another configuration as inner:
@@ -273,6 +285,7 @@
// TODO reconsider that when it's only used in a different runtime
if (usedAsInner.has(currentRoot)) continue;
+ /** @type {RuntimeSpec} */
let chunkRuntime;
for (const r of chunkGraph.getModuleRuntimes(currentRoot)) {
chunkRuntime = mergeRuntimeOwned(chunkRuntime, r);
@@ -295,6 +308,7 @@
);
// cache failures to add modules
+ /** @type {Map<Module, Problem>} */
const failureCache = new Map();
// potential optional import candidates
@@ -311,6 +325,7 @@
}
for (const imp of candidates) {
+ /** @type {Set<Module>} */
const impCandidates = new Set();
const problem = this._tryToAdd(
compilation,
@@ -373,6 +388,7 @@
logger.time("sort concat configurations");
concatConfigurations.sort((a, b) => b.modules.size - a.modules.size);
logger.timeEnd("sort concat configurations");
+ /** @type {Set<Module>} */
const usedModules = new Set();
logger.time("create concatenated modules");
@@ -456,11 +472,14 @@
chunk,
m
);
- if (sourceTypes.size === 1) {
+ if (
+ sourceTypes.size === 1 &&
+ sourceTypes.has(JAVASCRIPT_TYPE)
+ ) {
chunkGraph.disconnectChunkAndModule(chunk, m);
} else {
const newSourceTypes = new Set(sourceTypes);
- newSourceTypes.delete(JS_TYPE);
+ newSourceTypes.delete(JAVASCRIPT_TYPE);
chunkGraph.setChunkModuleSourceTypes(
chunk,
m,
@@ -508,6 +527,7 @@
}
/**
+ * Returns the imported modules.
* @param {Compilation} compilation the compilation
* @param {Module} module the module to be added
* @param {RuntimeSpec} runtime the runtime scope
@@ -515,6 +535,7 @@
*/
_getImports(compilation, module, runtime) {
const moduleGraph = compilation.moduleGraph;
+ /** @type {Set<Module>} */
const set = new Set();
for (const dep of module.dependencies) {
// Get reference info only for harmony Dependencies
@@ -548,6 +569,7 @@
}
/**
+ * Returns the problematic module.
* @param {Compilation} compilation webpack compilation
* @param {ConcatConfiguration} config concat configuration (will be modified when added)
* @param {Module} module the module to be added
@@ -555,11 +577,11 @@
* @param {RuntimeSpec} activeRuntime the runtime scope of the root module
* @param {Set<Module>} possibleModules modules that are candidates
* @param {Set<Module>} candidates list of potential candidates (will be added to)
- * @param {Map<Module, Module | ((requestShortener: RequestShortener) => string)>} failureCache cache for problematic modules to be more performant
+ * @param {Map<Module, Problem>} failureCache cache for problematic modules to be more performant
* @param {ChunkGraph} chunkGraph the chunk graph
* @param {boolean} avoidMutateOnFailure avoid mutating the config when adding fails
* @param {Statistics} statistics gathering metrics
- * @returns {null | Module | ((requestShortener: RequestShortener) => string)} the problematic module
+ * @returns {null | Problem} the problematic module
*/
_tryToAdd(
compilation,
@@ -599,6 +621,7 @@
].filter((chunk) => !chunkGraph.isModuleInChunk(module, chunk));
if (missingChunks.length > 0) {
/**
+ * Returns problem description.
* @param {RequestShortener} requestShortener request shortener
* @returns {string} problem description
*/
@@ -642,10 +665,12 @@
);
if (activeNonModulesConnections.length > 0) {
/**
+ * Returns problem description.
* @param {RequestShortener} requestShortener request shortener
* @returns {string} problem description
*/
const problem = (requestShortener) => {
+ /** @type {Set<string>} */
const importingExplanations = new Set(
activeNonModulesConnections
.map((c) => c.explanation)
@@ -674,6 +699,7 @@
if (chunkGraph.getNumberOfModuleChunks(originModule) === 0) continue;
// We don't care for connections from other runtimes
+ /** @type {RuntimeSpec} */
let originRuntime;
for (const r of chunkGraph.getModuleRuntimes(originModule)) {
originRuntime = mergeRuntimeOwned(originRuntime, r);
@@ -706,6 +732,7 @@
});
if (otherChunkModules.length > 0) {
/**
+ * Returns problem description.
* @param {RequestShortener} requestShortener request shortener
* @returns {string} problem description
*/
@@ -738,6 +765,7 @@
}
if (nonHarmonyConnections.size > 0) {
/**
+ * Returns problem description.
* @param {RequestShortener} requestShortener request shortener
* @returns {string} problem description
*/
@@ -799,6 +827,7 @@
}
if (otherRuntimeConnections.length > 0) {
/**
+ * Returns problem description.
* @param {RequestShortener} requestShortener request shortener
* @returns {string} problem description
*/
@@ -822,6 +851,7 @@
}
}
+ /** @type {undefined | number} */
let backup;
if (avoidMutateOnFailure) {
backup = config.snapshot();
@@ -864,24 +894,28 @@
}
}
-/** @typedef {Module | ((requestShortener: RequestShortener) => string)} Problem */
+/** @typedef {Map<Module, Problem>} Warnings */
class ConcatConfiguration {
/**
+ * Creates an instance of ConcatConfiguration.
* @param {Module} rootModule the root module
* @param {RuntimeSpec} runtime the runtime
*/
constructor(rootModule, runtime) {
+ /** @type {Module} */
this.rootModule = rootModule;
+ /** @type {RuntimeSpec} */
this.runtime = runtime;
/** @type {Set<Module>} */
this.modules = new Set();
this.modules.add(rootModule);
- /** @type {Map<Module, Problem>} */
+ /** @type {Warnings} */
this.warnings = new Map();
}
/**
+ * Processes the provided module.
* @param {Module} module the module
*/
add(module) {
@@ -889,6 +923,7 @@
}
/**
+ * Returns true, when the module is in the module set.
* @param {Module} module the module
* @returns {boolean} true, when the module is in the module set
*/
@@ -901,6 +936,7 @@
}
/**
+ * Adds the provided module to the concat configuration.
* @param {Module} module the module
* @param {Problem} problem the problem
*/
@@ -909,7 +945,8 @@
}
/**
- * @returns {Map<Module, Problem>} warnings
+ * Gets warnings sorted.
+ * @returns {Warnings} warnings
*/
getWarningsSorted() {
return new Map(
@@ -924,6 +961,7 @@
}
/**
+ * Returns modules as set.
* @returns {Set<Module>} modules as set
*/
getModules() {
@@ -935,6 +973,7 @@
}
/**
+ * Processes the provided snapshot.
* @param {number} snapshot snapshot
*/
rollback(snapshot) {
--
Gitblit v1.9.3