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/util/deterministicGrouping.js |   41 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 38 insertions(+), 3 deletions(-)

diff --git a/node_modules/webpack/lib/util/deterministicGrouping.js b/node_modules/webpack/lib/util/deterministicGrouping.js
index a34357c..975ca25 100644
--- a/node_modules/webpack/lib/util/deterministicGrouping.js
+++ b/node_modules/webpack/lib/util/deterministicGrouping.js
@@ -25,6 +25,7 @@
 // 3.2% that 5 or more groups are invalidated
 
 /**
+ * Returns the similarity as number.
  * @param {string} a key
  * @param {string} b key
  * @returns {number} the similarity as number
@@ -41,6 +42,7 @@
 };
 
 /**
+ * Returns the common part and a single char for the difference.
  * @param {string} a key
  * @param {string} b key
  * @param {Set<string>} usedNames set of already used names
@@ -73,6 +75,7 @@
 /** @typedef {Record<string, number>} Sizes */
 
 /**
+ * Adds the provided total to this object.
  * @param {Sizes} total total size
  * @param {Sizes} size single size
  * @returns {void}
@@ -84,6 +87,7 @@
 };
 
 /**
+ * Subtract size from.
  * @param {Sizes} total total size
  * @param {Sizes} size single size
  * @returns {void}
@@ -95,11 +99,13 @@
 };
 
 /**
+ * Returns total size.
  * @template T
  * @param {Iterable<Node<T>>} nodes some nodes
  * @returns {Sizes} total size
  */
 const sumSize = (nodes) => {
+	/** @type {Sizes} */
 	const sum = Object.create(null);
 	for (const node of nodes) {
 		addSizeTo(sum, node.size);
@@ -108,6 +114,7 @@
 };
 
 /**
+ * Checks whether this object is too big.
  * @param {Sizes} size size
  * @param {Sizes} maxSize minimum size
  * @returns {boolean} true, when size is too big
@@ -123,6 +130,7 @@
 };
 
 /**
+ * Checks whether this object is too small.
  * @param {Sizes} size size
  * @param {Sizes} minSize minimum size
  * @returns {boolean} true, when size is too small
@@ -137,12 +145,16 @@
 	return false;
 };
 
+/** @typedef {Set<string>} Types */
+
 /**
+ * Gets too small types.
  * @param {Sizes} size size
  * @param {Sizes} minSize minimum size
- * @returns {Set<string>} set of types that are too small
+ * @returns {Types} set of types that are too small
  */
 const getTooSmallTypes = (size, minSize) => {
+	/** @type {Types} */
 	const types = new Set();
 	for (const key of Object.keys(size)) {
 		const s = size[key];
@@ -154,9 +166,10 @@
 };
 
 /**
+ * Gets number of matching size types.
  * @template {object} T
  * @param {T} size size
- * @param {Set<string>} types types
+ * @param {Types} types types
  * @returns {number} number of matching size types
  */
 const getNumberOfMatchingSizeTypes = (size, types) => {
@@ -168,8 +181,9 @@
 };
 
 /**
+ * Selective size sum.
  * @param {Sizes} size size
- * @param {Set<string>} types types
+ * @param {Types} types types
  * @returns {number} selective size sum
  */
 const selectiveSizeSum = (size, types) => {
@@ -181,10 +195,12 @@
 };
 
 /**
+ * Represents the node runtime component.
  * @template T
  */
 class Node {
 	/**
+	 * Creates an instance of Node.
 	 * @param {T} item item
 	 * @param {string} key key
 	 * @param {Sizes} size size
@@ -199,10 +215,12 @@
 /** @typedef {number[]} Similarities */
 
 /**
+ * Represents the group runtime component.
  * @template T
  */
 class Group {
 	/**
+	 * Creates an instance of Group.
 	 * @param {Node<T>[]} nodes nodes
 	 * @param {Similarities | null} similarities similarities between the nodes (length = nodes.length - 1)
 	 * @param {Sizes=} size size of the group
@@ -216,13 +234,18 @@
 	}
 
 	/**
+	 * Returns removed nodes.
 	 * @param {(node: Node<T>) => boolean} filter filter function
 	 * @returns {Node<T>[] | undefined} removed nodes
 	 */
 	popNodes(filter) {
+		/** @type {Node<T>[]} */
 		const newNodes = [];
+		/** @type {Similarities} */
 		const newSimilarities = [];
+		/** @type {Node<T>[]} */
 		const resultNodes = [];
+		/** @type {undefined | Node<T>} */
 		let lastNode;
 		for (let i = 0; i < this.nodes.length; i++) {
 			const node = this.nodes[i];
@@ -249,6 +272,7 @@
 }
 
 /**
+ * Returns similarities.
  * @template T
  * @param {Iterable<Node<T>>} nodes nodes
  * @returns {Similarities} similarities
@@ -257,6 +281,7 @@
 	// calculate similarities between lexically adjacent nodes
 	/** @type {Similarities} */
 	const similarities = [];
+	/** @type {undefined | Node<T>} */
 	let last;
 	for (const node of nodes) {
 		if (last !== undefined) {
@@ -268,6 +293,7 @@
 };
 
 /**
+ * Defines the shared type used by this module.
  * @template T
  * @typedef {object} GroupedItems<T>
  * @property {string} key
@@ -276,6 +302,7 @@
  */
 
 /**
+ * Defines the options type used by this module.
  * @template T
  * @typedef {object} Options
  * @property {Sizes} maxSize maximum size of a group
@@ -286,6 +313,7 @@
  */
 
 /**
+ * Returns grouped items.
  * @template T
  * @param {Options<T>} options options object
  * @returns {GroupedItems<T>[]} grouped items
@@ -323,6 +351,7 @@
 		const initialGroup = new Group(initialNodes, getSimilarities(initialNodes));
 
 		/**
+		 * Removes problematic nodes.
 		 * @param {Group<T>} group group
 		 * @param {Sizes} consideredSize size of the group to consider
 		 * @returns {boolean} true, if the group was modified
@@ -396,6 +425,7 @@
 				// going minSize from left and right
 				// at least one node need to be included otherwise we get stuck
 				let left = 1;
+				/** @type {Sizes} */
 				const leftSize = Object.create(null);
 				addSizeTo(leftSize, group.nodes[0].size);
 				while (left < group.nodes.length && isTooSmall(leftSize, minSize)) {
@@ -403,6 +433,7 @@
 					left++;
 				}
 				let right = group.nodes.length - 2;
+				/** @type {Sizes} */
 				const rightSize = Object.create(null);
 				addSizeTo(rightSize, group.nodes[group.nodes.length - 1].size);
 				while (right >= 0 && isTooSmall(rightSize, minSize)) {
@@ -422,6 +453,7 @@
 
 				if (left - 1 > right) {
 					// We try to remove some problematic nodes to "fix" that
+					/** @type {Sizes} */
 					let prevSize;
 					if (right < group.nodes.length - left) {
 						subtractSizeFrom(rightSize, group.nodes[right + 1].size);
@@ -487,6 +519,7 @@
 
 				// create two new groups for left and right area
 				// and queue them up
+				/** @type {Node<T>[]} */
 				const rightNodes = [group.nodes[right + 1]];
 				/** @type {Similarities} */
 				const rightSimilarities = [];
@@ -498,6 +531,7 @@
 				}
 				queue.push(new Group(rightNodes, rightSimilarities));
 
+				/** @type {Node<T>[]} */
 				const leftNodes = [group.nodes[0]];
 				/** @type {Similarities} */
 				const leftSimilarities = [];
@@ -520,6 +554,7 @@
 	});
 
 	// give every group a name
+	/** @type {Set<string>} */
 	const usedNames = new Set();
 	for (let i = 0; i < result.length; i++) {
 		const group = result[i];

--
Gitblit v1.9.3