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/ids/OccurrenceModuleIdsPlugin.js |   59 +++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 37 insertions(+), 22 deletions(-)

diff --git a/node_modules/webpack/lib/ids/OccurrenceModuleIdsPlugin.js b/node_modules/webpack/lib/ids/OccurrenceModuleIdsPlugin.js
index 3ea78af..c50183b 100644
--- a/node_modules/webpack/lib/ids/OccurrenceModuleIdsPlugin.js
+++ b/node_modules/webpack/lib/ids/OccurrenceModuleIdsPlugin.js
@@ -8,7 +8,6 @@
 const {
 	compareModulesByPreOrderIndexOrIdentifier
 } = require("../util/comparators");
-const createSchemaValidation = require("../util/create-schema-validation");
 const {
 	assignAscendingModuleIds,
 	getUsedModuleIdsAndModules
@@ -18,33 +17,39 @@
 /** @typedef {import("../Compiler")} Compiler */
 /** @typedef {import("../Module")} Module */
 
-const validate = createSchemaValidation(
-	require("../../schemas/plugins/ids/OccurrenceModuleIdsPlugin.check"),
-	() => require("../../schemas/plugins/ids/OccurrenceModuleIdsPlugin.json"),
-	{
-		name: "Occurrence Order Module Ids Plugin",
-		baseDataPath: "options"
-	}
-);
-
 const PLUGIN_NAME = "OccurrenceModuleIdsPlugin";
 
 class OccurrenceModuleIdsPlugin {
 	/**
+	 * Creates an instance of OccurrenceModuleIdsPlugin.
 	 * @param {OccurrenceModuleIdsPluginOptions=} options options object
 	 */
 	constructor(options = {}) {
-		validate(options);
+		/** @type {OccurrenceModuleIdsPluginOptions} */
 		this.options = options;
 	}
 
 	/**
-	 * Apply the plugin
+	 * Applies the plugin by registering its hooks on the compiler.
 	 * @param {Compiler} compiler the compiler instance
 	 * @returns {void}
 	 */
 	apply(compiler) {
-		const prioritiseInitial = this.options.prioritiseInitial;
+		compiler.hooks.validate.tap(PLUGIN_NAME, () => {
+			compiler.validate(
+				() =>
+					require("../../schemas/plugins/ids/OccurrenceModuleIdsPlugin.json"),
+				this.options,
+				{
+					name: "Occurrence Order Module Ids Plugin",
+					baseDataPath: "options"
+				},
+				(options) =>
+					require("../../schemas/plugins/ids/OccurrenceModuleIdsPlugin.check")(
+						options
+					)
+			);
+		});
 		compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
 			const moduleGraph = compilation.moduleGraph;
 
@@ -54,10 +59,14 @@
 				const [usedIds, modulesInOccurrenceOrder] =
 					getUsedModuleIdsAndModules(compilation);
 
+				/** @type {Map<Module, number>} */
 				const occursInInitialChunksMap = new Map();
+				/** @type {Map<Module, number>} */
 				const occursInAllChunksMap = new Map();
 
+				/** @type {Map<Module, number>} */
 				const initialChunkChunkMap = new Map();
+				/** @type {Map<Module, number>} */
 				const entryCountMap = new Map();
 				for (const m of modulesInOccurrenceOrder) {
 					let initial = 0;
@@ -71,6 +80,7 @@
 				}
 
 				/**
+				 * Count occurs in entry.
 				 * @param {Module} module module
 				 * @returns {number} count of occurs
 				 */
@@ -88,6 +98,7 @@
 				};
 
 				/**
+				 * Returns count of occurs.
 				 * @param {Module} module module
 				 * @returns {number} count of occurs
 				 */
@@ -111,12 +122,12 @@
 					return sum;
 				};
 
-				if (prioritiseInitial) {
+				if (this.options.prioritiseInitial) {
 					for (const m of modulesInOccurrenceOrder) {
 						const result =
 							countOccursInEntry(m) +
-							initialChunkChunkMap.get(m) +
-							entryCountMap.get(m);
+							/** @type {number} */ (initialChunkChunkMap.get(m)) +
+							/** @type {number} */ (entryCountMap.get(m));
 						occursInInitialChunksMap.set(m, result);
 					}
 				}
@@ -125,7 +136,7 @@
 					const result =
 						countOccurs(m) +
 						chunkGraph.getNumberOfModuleChunks(m) +
-						entryCountMap.get(m);
+						/** @type {number} */ (entryCountMap.get(m));
 					occursInAllChunksMap.set(m, result);
 				}
 
@@ -134,14 +145,18 @@
 				);
 
 				modulesInOccurrenceOrder.sort((a, b) => {
-					if (prioritiseInitial) {
-						const aEntryOccurs = occursInInitialChunksMap.get(a);
-						const bEntryOccurs = occursInInitialChunksMap.get(b);
+					if (this.options.prioritiseInitial) {
+						const aEntryOccurs =
+							/** @type {number} */
+							(occursInInitialChunksMap.get(a));
+						const bEntryOccurs =
+							/** @type {number} */
+							(occursInInitialChunksMap.get(b));
 						if (aEntryOccurs > bEntryOccurs) return -1;
 						if (aEntryOccurs < bEntryOccurs) return 1;
 					}
-					const aOccurs = occursInAllChunksMap.get(a);
-					const bOccurs = occursInAllChunksMap.get(b);
+					const aOccurs = /** @type {number} */ (occursInAllChunksMap.get(a));
+					const bOccurs = /** @type {number} */ (occursInAllChunksMap.get(b));
 					if (aOccurs > bOccurs) return -1;
 					if (aOccurs < bOccurs) return 1;
 					return naturalCompare(a, b);

--
Gitblit v1.9.3