From 3bd962a6d7f61239c020e2dbbeb7341e5b842dd1 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期二, 21 四月 2026 11:46:41 +0800
Subject: [PATCH] 推送
---
node_modules/webpack/lib/ChunkGroup.js | 90 +++++++++++++++++++++++++++++++++++----------
1 files changed, 70 insertions(+), 20 deletions(-)
diff --git a/node_modules/webpack/lib/ChunkGroup.js b/node_modules/webpack/lib/ChunkGroup.js
index 8cb66d7..6f326be 100644
--- a/node_modules/webpack/lib/ChunkGroup.js
+++ b/node_modules/webpack/lib/ChunkGroup.js
@@ -24,6 +24,9 @@
/** @typedef {{ module: Module | null, loc: DependencyLocation, request: string }} OriginRecord */
/**
+ * Describes the scheduling hints that can be attached to a chunk group.
+ * These values influence how child groups are ordered for preload/prefetch
+ * and how their fetch priority is exposed to runtime code.
* @typedef {object} RawChunkGroupOptions
* @property {number=} preloadOrder
* @property {number=} prefetchOrder
@@ -35,6 +38,8 @@
let debugId = 5000;
/**
+ * Materializes a sortable set as an array without changing its current order.
+ * Used with `SortableSet` caches that expect a stable array result.
* @template T
* @param {SortableSet<T>} set set to convert to array.
* @returns {T[]} the array format of existing set
@@ -45,7 +50,7 @@
* A convenience method used to sort chunks based on their id's
* @param {ChunkGroup} a first sorting comparator
* @param {ChunkGroup} b second sorting comparator
- * @returns {1|0|-1} a sorting index to determine order
+ * @returns {1 | 0 | -1} a sorting index to determine order
*/
const sortById = (a, b) => {
if (a.id < b.id) return -1;
@@ -54,9 +59,11 @@
};
/**
+ * Orders origin records by referencing module and then by source location.
+ * This keeps origin metadata deterministic for hashing and diagnostics.
* @param {OriginRecord} a the first comparator in sort
* @param {OriginRecord} b the second comparator in sort
- * @returns {1|-1|0} returns sorting order as index
+ * @returns {1 | -1 | 0} returns sorting order as index
*/
const sortOrigin = (a, b) => {
const aIdent = a.module ? a.module.identifier() : "";
@@ -66,9 +73,14 @@
return compareLocations(a.loc, b.loc);
};
+/**
+ * Represents a connected group of chunks along with the parent/child
+ * relationships, async blocks, and traversal metadata webpack tracks for it.
+ */
class ChunkGroup {
/**
- * Creates an instance of ChunkGroup.
+ * Creates a chunk group and initializes the relationship sets and ordering
+ * metadata used while building and optimizing the chunk graph.
* @param {string | ChunkGroupOptions=} options chunk group options passed to chunkGroup
*/
constructor(options) {
@@ -79,28 +91,33 @@
}
/** @type {number} */
this.groupDebugId = debugId++;
- this.options = /** @type {ChunkGroupOptions} */ (options);
+ /** @type {ChunkGroupOptions} */
+ this.options = options;
/** @type {SortableSet<ChunkGroup>} */
this._children = new SortableSet(undefined, sortById);
/** @type {SortableSet<ChunkGroup>} */
this._parents = new SortableSet(undefined, sortById);
/** @type {SortableSet<ChunkGroup>} */
this._asyncEntrypoints = new SortableSet(undefined, sortById);
+ /** @type {SortableSet<AsyncDependenciesBlock>} */
this._blocks = new SortableSet();
/** @type {Chunk[]} */
this.chunks = [];
/** @type {OriginRecord[]} */
this.origins = [];
+
+ /** @typedef {Map<Module, number>} OrderIndices */
+
/** Indices in top-down order */
/**
* @private
- * @type {Map<Module, number>}
+ * @type {OrderIndices}
*/
this._modulePreOrderIndices = new Map();
/** Indices in bottom-up order */
/**
* @private
- * @type {Map<Module, number>}
+ * @type {OrderIndices}
*/
this._modulePostOrderIndices = new Map();
/** @type {number | undefined} */
@@ -108,7 +125,9 @@
}
/**
- * when a new chunk is added to a chunkGroup, addingOptions will occur.
+ * Merges additional options into the chunk group.
+ * Order-based options are combined by taking the higher priority, while
+ * unsupported conflicts surface as an explicit error.
* @param {ChunkGroupOptions} options the chunkGroup options passed to addOptions
* @returns {void}
*/
@@ -141,7 +160,7 @@
}
/**
- * returns the name of current ChunkGroup
+ * Returns the configured name of the chunk group, if one was assigned.
* @returns {ChunkGroupOptions["name"]} returns the ChunkGroup name
*/
get name() {
@@ -149,7 +168,7 @@
}
/**
- * sets a new name for current ChunkGroup
+ * Updates the configured name of the chunk group.
* @param {string | undefined} value the new name for ChunkGroup
* @returns {void}
*/
@@ -159,7 +178,8 @@
/* istanbul ignore next */
/**
- * get a uniqueId for ChunkGroup, made up of its member Chunk debugId's
+ * Returns a debug-only identifier derived from the group's member chunk
+ * debug ids. This is primarily useful in diagnostics and assertions.
* @returns {string} a unique concatenation of chunk debugId's
*/
get debugId() {
@@ -167,7 +187,8 @@
}
/**
- * get a unique id for ChunkGroup, made up of its member Chunk id's
+ * Returns an identifier derived from the ids of the chunks currently in
+ * the group.
* @returns {string} a unique concatenation of chunk ids
*/
get id() {
@@ -175,7 +196,8 @@
}
/**
- * Performs an unshift of a specific chunk
+ * Moves a chunk to the front of the group or inserts it when it is not
+ * already present.
* @param {Chunk} chunk chunk being unshifted
* @returns {boolean} returns true if attempted chunk shift is accepted
*/
@@ -192,7 +214,8 @@
}
/**
- * inserts a chunk before another existing chunk in group
+ * Inserts a chunk directly before another chunk that already belongs to the
+ * group, preserving the rest of the ordering.
* @param {Chunk} chunk Chunk being inserted
* @param {Chunk} before Placeholder/target chunk marking new chunk insertion point
* @returns {boolean} return true if insertion was successful
@@ -214,7 +237,7 @@
}
/**
- * add a chunk into ChunkGroup. Is pushed on or prepended
+ * Appends a chunk to the group when it is not already a member.
* @param {Chunk} chunk chunk being pushed into ChunkGroupS
* @returns {boolean} returns true if chunk addition was successful.
*/
@@ -228,6 +251,8 @@
}
/**
+ * Replaces one member chunk with another while preserving the group's
+ * ordering and avoiding duplicates.
* @param {Chunk} oldChunk chunk to be replaced
* @param {Chunk} newChunk New chunk that will be replaced with
* @returns {boolean | undefined} returns true if the replacement was successful
@@ -251,6 +276,7 @@
}
/**
+ * Removes a chunk from this group.
* @param {Chunk} chunk chunk to remove
* @returns {boolean} returns true if chunk was removed
*/
@@ -264,6 +290,8 @@
}
/**
+ * Indicates whether this chunk group is loaded as part of the initial page
+ * load instead of being created lazily.
* @returns {boolean} true, when this chunk group will be loaded on initial page load
*/
isInitial() {
@@ -271,6 +299,7 @@
}
/**
+ * Adds a child chunk group to the current group.
* @param {ChunkGroup} group chunk group to add
* @returns {boolean} returns true if chunk group was added
*/
@@ -281,6 +310,7 @@
}
/**
+ * Returns the child chunk groups reachable from this group.
* @returns {ChunkGroup[]} returns the children of this group
*/
getChildren() {
@@ -296,6 +326,8 @@
}
/**
+ * Removes a child chunk group and clears the corresponding parent link on
+ * the removed child.
* @param {ChunkGroup} group the chunk group to remove
* @returns {boolean} returns true if the chunk group was removed
*/
@@ -310,6 +342,7 @@
}
/**
+ * Records a parent chunk group relationship.
* @param {ChunkGroup} parentChunk the parent group to be added into
* @returns {boolean} returns true if this chunk group was added to the parent group
*/
@@ -322,6 +355,7 @@
}
/**
+ * Returns the parent chunk groups that can lead to this group.
* @returns {ChunkGroup[]} returns the parents of this group
*/
getParents() {
@@ -333,6 +367,7 @@
}
/**
+ * Checks whether the provided group is registered as a parent.
* @param {ChunkGroup} parent the parent group
* @returns {boolean} returns true if the parent group contains this group
*/
@@ -345,6 +380,7 @@
}
/**
+ * Removes a parent chunk group and clears the reverse child relationship.
* @param {ChunkGroup} chunkGroup the parent group
* @returns {boolean} returns true if this group has been removed from the parent
*/
@@ -357,6 +393,7 @@
}
/**
+ * Registers an async entrypoint that is rooted in this chunk group.
* @param {Entrypoint} entrypoint entrypoint to add
* @returns {boolean} returns true if entrypoint was added
*/
@@ -371,6 +408,7 @@
}
/**
+ * Returns the async dependency blocks that create or reference this group.
* @returns {AsyncDependenciesBlock[]} an array containing the blocks
*/
getBlocks() {
@@ -382,6 +420,7 @@
}
/**
+ * Checks whether an async dependency block is associated with this group.
* @param {AsyncDependenciesBlock} block block
* @returns {boolean} true, if block exists
*/
@@ -390,6 +429,7 @@
}
/**
+ * Exposes the group's async dependency blocks as an iterable.
* @returns {Iterable<AsyncDependenciesBlock>} blocks
*/
get blocksIterable() {
@@ -397,6 +437,7 @@
}
/**
+ * Associates an async dependency block with this chunk group.
* @param {AsyncDependenciesBlock} block a block
* @returns {boolean} false, if block was already added
*/
@@ -409,6 +450,8 @@
}
/**
+ * Records where this chunk group originated from in user code.
+ * The origin is used for diagnostics, ordering, and reporting.
* @param {Module | null} module origin module
* @param {DependencyLocation} loc location of the reference in the origin module
* @param {string} request request name of the reference
@@ -423,9 +466,11 @@
}
/**
+ * Collects the emitted files produced by every chunk in the group.
* @returns {string[]} the files contained this chunk group
*/
getFiles() {
+ /** @type {Set<string>} */
const files = new Set();
for (const chunk of this.chunks) {
@@ -438,6 +483,9 @@
}
/**
+ * Disconnects this group from its parents, children, and chunks.
+ * Child groups are reconnected to this group's parents so the surrounding
+ * graph remains intact after removal.
* @returns {void}
*/
remove() {
@@ -485,7 +533,7 @@
* Sorting values are based off of number of chunks in ChunkGroup.
* @param {ChunkGraph} chunkGraph the chunk graph
* @param {ChunkGroup} otherGroup the chunkGroup to compare this against
- * @returns {-1|0|1} sort position for comparison
+ * @returns {-1 | 0 | 1} sort position for comparison
*/
compareTo(chunkGraph, otherGroup) {
if (this.chunks.length > otherGroup.chunks.length) return -1;
@@ -497,12 +545,14 @@
}
/**
+ * Groups child chunk groups by their `*Order` options and sorts each group
+ * by descending order and deterministic chunk-group comparison.
* @param {ModuleGraph} moduleGraph the module graph
* @param {ChunkGraph} chunkGraph the chunk graph
* @returns {Record<string, ChunkGroup[]>} mapping from children type to ordered list of ChunkGroups
*/
getChildrenByOrders(moduleGraph, chunkGraph) {
- /** @type {Map<string, {order: number, group: ChunkGroup}[]>} */
+ /** @type {Map<string, { order: number, group: ChunkGroup }[]>} */
const lists = new Map();
for (const childGroup of this._children) {
for (const key of Object.keys(childGroup.options)) {
@@ -537,7 +587,7 @@
}
/**
- * Sets the top-down index of a module in this ChunkGroup
+ * Stores the module's top-down traversal index within this group.
* @param {Module} module module for which the index should be set
* @param {number} index the index of the module
* @returns {void}
@@ -547,7 +597,7 @@
}
/**
- * Gets the top-down index of a module in this ChunkGroup
+ * Returns the module's top-down traversal index within this group.
* @param {Module} module the module
* @returns {number | undefined} index
*/
@@ -556,7 +606,7 @@
}
/**
- * Sets the bottom-up index of a module in this ChunkGroup
+ * Stores the module's bottom-up traversal index within this group.
* @param {Module} module module for which the index should be set
* @param {number} index the index of the module
* @returns {void}
@@ -566,7 +616,7 @@
}
/**
- * Gets the bottom-up index of a module in this ChunkGroup
+ * Returns the module's bottom-up traversal index within this group.
* @param {Module} module the module
* @returns {number | undefined} index
*/
--
Gitblit v1.9.3