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/stats/DefaultStatsFactoryPlugin.js | 102 ++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 84 insertions(+), 18 deletions(-)
diff --git a/node_modules/webpack/lib/stats/DefaultStatsFactoryPlugin.js b/node_modules/webpack/lib/stats/DefaultStatsFactoryPlugin.js
index f62b231..7ac75e7 100644
--- a/node_modules/webpack/lib/stats/DefaultStatsFactoryPlugin.js
+++ b/node_modules/webpack/lib/stats/DefaultStatsFactoryPlugin.js
@@ -49,20 +49,25 @@
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
/** @typedef {import("../ModuleProfile")} ModuleProfile */
/** @typedef {import("../WebpackError")} WebpackError */
+/** @typedef {import("../serialization/AggregateErrorSerializer").AggregateError} AggregateError */
+/** @typedef {import("../serialization/ErrorObjectSerializer").ErrorWithCause} ErrorWithCause */
/** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
/**
+ * Defines the shared type used by this module.
* @template T
* @typedef {import("../util/comparators").Comparator<T>} Comparator<T>
*/
/**
+ * Defines the group config type used by this module.
* @template I, G
* @typedef {import("../util/smartGrouping").GroupConfig<I, G>} GroupConfig
*/
/** @typedef {KnownStatsCompilation & Record<string, EXPECTED_ANY>} StatsCompilation */
/**
+ * Defines the known stats compilation type used by this module.
* @typedef {object} KnownStatsCompilation
* @property {EXPECTED_ANY=} env
* @property {string=} name
@@ -93,6 +98,7 @@
/** @typedef {KnownStatsLogging & Record<string, EXPECTED_ANY>} StatsLogging */
/**
+ * Defines the known stats logging type used by this module.
* @typedef {object} KnownStatsLogging
* @property {StatsLoggingEntry[]} entries
* @property {number} filteredEntries
@@ -101,6 +107,7 @@
/** @typedef {KnownStatsLoggingEntry & Record<string, EXPECTED_ANY>} StatsLoggingEntry */
/**
+ * Defines the known stats logging entry type used by this module.
* @typedef {object} KnownStatsLoggingEntry
* @property {string} type
* @property {string=} message
@@ -113,6 +120,7 @@
/** @typedef {KnownStatsAsset & Record<string, EXPECTED_ANY>} StatsAsset */
/** @typedef {string[]} ChunkIdHints */
/**
+ * Defines the known stats asset type used by this module.
* @typedef {object} KnownStatsAsset
* @property {string} type
* @property {string} name
@@ -134,6 +142,7 @@
/** @typedef {KnownStatsChunkGroup & Record<string, EXPECTED_ANY>} StatsChunkGroup */
/**
+ * Defines the known stats chunk group type used by this module.
* @typedef {object} KnownStatsChunkGroup
* @property {ChunkName=} name
* @property {ChunkId[]=} chunks
@@ -151,6 +160,7 @@
/** @typedef {Module[]} ModuleIssuerPath */
/** @typedef {KnownStatsModule & Record<string, EXPECTED_ANY>} StatsModule */
/**
+ * Defines the known stats module type used by this module.
* @typedef {object} KnownStatsModule
* @property {string=} type
* @property {string=} moduleType
@@ -195,6 +205,7 @@
/** @typedef {KnownStatsProfile & Record<string, EXPECTED_ANY>} StatsProfile */
/**
+ * Defines the known stats profile type used by this module.
* @typedef {object} KnownStatsProfile
* @property {number} total
* @property {number} resolving
@@ -210,6 +221,7 @@
/** @typedef {KnownStatsModuleIssuer & Record<string, EXPECTED_ANY>} StatsModuleIssuer */
/**
+ * Defines the known stats module issuer type used by this module.
* @typedef {object} KnownStatsModuleIssuer
* @property {string} identifier
* @property {string} name
@@ -219,6 +231,7 @@
/** @typedef {KnownStatsModuleReason & Record<string, EXPECTED_ANY>} StatsModuleReason */
/**
+ * Defines the known stats module reason type used by this module.
* @typedef {object} KnownStatsModuleReason
* @property {string | null} moduleIdentifier
* @property {string | null} module
@@ -236,6 +249,7 @@
/** @typedef {KnownStatsChunk & Record<string, EXPECTED_ANY>} StatsChunk */
/**
+ * Defines the known stats chunk type used by this module.
* @typedef {object} KnownStatsChunk
* @property {boolean} rendered
* @property {boolean} initial
@@ -262,6 +276,7 @@
/** @typedef {KnownStatsChunkOrigin & Record<string, EXPECTED_ANY>} StatsChunkOrigin */
/**
+ * Defines the known stats chunk origin type used by this module.
* @typedef {object} KnownStatsChunkOrigin
* @property {string} module
* @property {string} moduleIdentifier
@@ -273,6 +288,7 @@
/** @typedef {KnownStatsModuleTraceItem & Record<string, EXPECTED_ANY>} StatsModuleTraceItem */
/**
+ * Defines the known stats module trace item type used by this module.
* @typedef {object} KnownStatsModuleTraceItem
* @property {string=} originIdentifier
* @property {string=} originName
@@ -285,12 +301,14 @@
/** @typedef {KnownStatsModuleTraceDependency & Record<string, EXPECTED_ANY>} StatsModuleTraceDependency */
/**
+ * Defines the known stats module trace dependency type used by this module.
* @typedef {object} KnownStatsModuleTraceDependency
* @property {string=} loc
*/
/** @typedef {KnownStatsError & Record<string, EXPECTED_ANY>} StatsError */
/**
+ * Defines the known stats error type used by this module.
* @typedef {object} KnownStatsError
* @property {string} message
* @property {string=} chunkName
@@ -313,6 +331,7 @@
/** @typedef {Asset & { type: string, related: PreprocessedAsset[] | undefined }} PreprocessedAsset */
/**
+ * Defines the extractors by option type used by this module.
* @template T
* @template O
* @typedef {Record<string, (object: O, data: T, context: StatsFactoryContext, options: NormalizedStatsOptions, factory: StatsFactory) => void>} ExtractorsByOption
@@ -322,6 +341,7 @@
/** @typedef {{ origin: Module, module: Module }} ModuleTrace */
/**
+ * Defines the simple extractors type used by this module.
* @typedef {object} SimpleExtractors
* @property {ExtractorsByOption<Compilation, StatsCompilation>} compilation
* @property {ExtractorsByOption<PreprocessedAsset, StatsAsset>} asset
@@ -342,6 +362,7 @@
*/
/**
+ * Returns array of values.
* @template T
* @template I
* @param {Iterable<T>} items items to select from
@@ -360,6 +381,7 @@
};
/**
+ * Unique ordered array.
* @template T
* @template I
* @param {Iterable<T>} items items to select from
@@ -370,27 +392,32 @@
const uniqueOrderedArray = (items, selector, comparator) =>
uniqueArray(items, selector).sort(comparator);
-/** @template T @template R @typedef {{ [P in keyof T]: R }} MappedValues<T, R> */
+/**
+ * Defines the shared type used by this module.
+ * @template T
+ * @template R
+ * @typedef {{ [P in keyof T]: R }} MappedValues<T, R>
+ */
/**
+ * Returns mapped object.
* @template {object} T
* @template {object} R
* @param {T} obj object to be mapped
- * @param {function(T[keyof T], keyof T): R} fn mapping function
+ * @param {(value: T[keyof T], key: keyof T) => R} fn mapping function
* @returns {MappedValues<T, R>} mapped object
*/
const mapObject = (obj, fn) => {
+ /** @type {MappedValues<T, R>} */
const newObj = Object.create(null);
- for (const key of Object.keys(obj)) {
- newObj[key] = fn(
- obj[/** @type {keyof T} */ (key)],
- /** @type {keyof T} */ (key)
- );
+ for (const key of /** @type {(keyof T)[]} */ (Object.keys(obj))) {
+ newObj[key] = fn(obj[key], key);
}
return newObj;
};
/**
+ * Count with children.
* @template T
* @param {Compilation} compilation the compilation
* @param {(compilation: Compilation, name: string) => T[]} getItems get items
@@ -405,9 +432,6 @@
}
return count;
};
-
-/** @typedef {Error & { cause?: unknown }} ErrorWithCause */
-/** @typedef {Error & { errors: EXPECTED_ANY[] }} AggregateError */
/** @type {ExtractorsByOption<string | ErrorWithCause | AggregateError | WebpackError, StatsError>} */
const EXTRACT_ERROR = {
@@ -504,8 +528,8 @@
object.details = /** @type {WebpackError} */ (error).details;
}
},
- errorStack: (object, error) => {
- if (typeof error !== "string") {
+ errorStack: (object, error, _context, { errorStack }) => {
+ if (typeof error !== "string" && errorStack) {
object.stack = error.stack;
}
},
@@ -541,6 +565,8 @@
}
}
};
+
+/** @typedef {((value: string) => boolean)} FilterItemTypeFn */
/** @type {SimpleExtractors} */
const SIMPLE_EXTRACTORS = {
@@ -584,6 +610,7 @@
const util = require("util");
object.logging = {};
+ /** @type {Set<keyof LogType>} */
let acceptedTypes;
let collapsedGroups = false;
switch (logging) {
@@ -674,6 +701,7 @@
if (depthInCollapsedGroup > 0) depthInCollapsedGroup--;
continue;
}
+ /** @type {undefined | string} */
let message;
if (entry.type === LogType.time) {
const [label, first, second] =
@@ -993,6 +1021,7 @@
.create(`${type}${childType}.warnings`, cachedGetWarnings(c), context)
.filter(
/**
+ * Handles the warnings count callback for this hook.
* @param {StatsError} warning warning
* @returns {boolean} result
*/
@@ -1117,6 +1146,7 @@
chunkGroupChildren &&
chunkGroup.getChildrenByOrders(moduleGraph, chunkGraph);
/**
+ * Returns } Asset object.
* @param {string} name Name
* @returns {{ name: string, size: number }} Asset object
*/
@@ -1226,7 +1256,7 @@
const codeGenerated = compilation.codeGeneratedModules.has(module);
const buildTimeExecuted =
compilation.buildTimeExecutedModules.has(module);
- /** @type {{[x: string]: number}} */
+ /** @type {{ [x: string]: number }} */
const sizes = {};
for (const sourceType of module.getSourceTypes()) {
sizes[sourceType] = module.size(sourceType);
@@ -1738,6 +1768,7 @@
concatComparators(
compareSelect(
/**
+ * Handles the callback for this hook.
* @param {Dependency} x dependency
* @returns {DependencyLocation} location
*/
@@ -1766,11 +1797,13 @@
};
/**
+ * Defines the children type used by this module.
* @template T
* @typedef {T & { children?: Children<T>[] | undefined, filteredChildren?: number }} Children
*/
/**
+ * Returns item size.
* @template T
* @param {Children<T>} item item
* @returns {number} item size
@@ -1786,6 +1819,7 @@
: 1 + getTotalSize(item.children);
/**
+ * Returns total size.
* @template T
* @param {Children<T>[]} children children
* @returns {number} total size
@@ -1799,6 +1833,7 @@
};
/**
+ * Returns total items.
* @template T
* @param {Children<T>[]} children children
* @returns {number} total items
@@ -1817,12 +1852,14 @@
};
/**
+ * Returns collapsed children.
* @template T
* @param {Children<T>[]} children children
* @returns {Children<T>[]} collapsed children
*/
const collapse = (children) => {
// After collapse each child must take exactly one line
+ /** @type {Children<T>[]} */
const newChildren = [];
for (const child of children) {
if (child.children) {
@@ -1841,6 +1878,7 @@
};
/**
+ * Returns result.
* @template T
* @param {Children<T>[]} itemsAndGroups item and groups
* @param {number} max max
@@ -1869,6 +1907,7 @@
/** @type {number[]} */
const groupSizes = [];
// This are the items, which take 1 line each
+ /** @type {Children<T>[]} */
const items = [];
// The total of group sizes
let groupsSize = 0;
@@ -1904,6 +1943,7 @@
if (limit < max) {
// calculate how much we are over the size limit
// this allows to approach the limit faster
+ /** @type {number} */
let oversize;
// If each group would take 1 line the total would be below the maximum
// collapse some groups, keep items
@@ -1968,6 +2008,7 @@
};
/**
+ * Errors space limit.
* @param {StatsError[]} errors errors
* @param {number} max max
* @returns {[StatsError[], number]} error space limit
@@ -2031,6 +2072,7 @@
};
/**
+ * Returns } asset size.
* @template {{ size: number }} T
* @param {T[]} children children
* @param {T[]} assets assets
@@ -2047,6 +2089,7 @@
/** @typedef {{ size: number, sizes: Record<string, number> }} ModuleGroupBySizeResult */
/**
+ * Returns size and sizes.
* @template {ModuleGroupBySizeResult} T
* @param {Children<T>[]} children children
* @param {KnownStatsModule[]} modules modules
@@ -2069,6 +2112,7 @@
};
/**
+ * Returns } reason group.
* @template {{ active: boolean }} T
* @param {Children<T>[]} children children
* @param {KnownStatsModuleReason[]} reasons reasons
@@ -2090,11 +2134,15 @@
/** @typedef {{ type: string }} BaseGroup */
/**
+ * Defines the base group with children type used by this module.
* @template T
* @typedef {BaseGroup & { children: T[], size: number }} BaseGroupWithChildren
*/
+/** @typedef {(name: string, asset: StatsAsset) => boolean} AssetFilterItemFn */
+
/**
+ * Describes the assets groupers shape.
* @typedef {{
* _: (groupConfigs: GroupConfig<KnownStatsAsset, BaseGroup & { filteredChildren: number, size: number } | BaseGroupWithChildren<KnownStatsAsset>>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
* groupAssetsByInfo: (groupConfigs: GroupConfig<KnownStatsAsset, BaseGroupWithChildren<KnownStatsAsset>>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
@@ -2107,6 +2155,7 @@
const ASSETS_GROUPERS = {
_: (groupConfigs, context, options) => {
/**
+ * Processes the provided name.
* @param {keyof KnownStatsAsset} name name
* @param {boolean=} exclude need exclude?
*/
@@ -2186,6 +2235,7 @@
},
groupAssetsByInfo: (groupConfigs, _context, _options) => {
/**
+ * Group by asset info flag.
* @param {string} name name
*/
const groupByAssetInfoFlag = (name) => {
@@ -2208,6 +2258,7 @@
},
groupAssetsByChunk: (groupConfigs, _context, _options) => {
/**
+ * Processes the provided name.
* @param {keyof KnownStatsAsset} name name
*/
const groupByNames = (name) => {
@@ -2247,11 +2298,14 @@
};
/**
+ * Describes the modules groupers shape.
* @typedef {{
* _: (groupConfigs: GroupConfig<KnownStatsModule, BaseGroup & { filteredChildren?: number, children?: KnownStatsModule[], size: number, sizes: Record<string, number> }>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
* excludeModules: (groupConfigs: GroupConfig<KnownStatsModule, BaseGroup & { filteredChildren: number, size: number, sizes: Record<string, number> }>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
* }} ModulesGroupers
*/
+
+/** @typedef {(name: string, module: StatsModule, type: "module" | "chunk" | "root-of-chunk" | "nested") => boolean} ModuleFilterItemTypeFn */
/**
* @type {(type: ExcludeModulesType) => ModulesGroupers}
@@ -2259,6 +2313,7 @@
const MODULES_GROUPERS = (type) => ({
_: (groupConfigs, context, options) => {
/**
+ * Processes the provided name.
* @param {keyof KnownStatsModule} name name
* @param {string} type type
* @param {boolean=} exclude need exclude?
@@ -2374,6 +2429,7 @@
const pathMatch =
groupModulesByPath && GROUP_PATH_REGEXP.exec(resource);
const path = pathMatch ? pathMatch[1].split(/[/\\]/) : [];
+ /** @type {string[]} */
const keys = [];
if (groupModulesByPath) {
if (extension) {
@@ -2439,9 +2495,8 @@
});
/**
- * @typedef {{
- * groupReasonsByOrigin: (groupConfigs: GroupConfig<KnownStatsModuleReason, BaseGroup & { module: string, children: KnownStatsModuleReason[], active: boolean }>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void
- * }} ModuleReasonsGroupers
+ * Defines the module reasons groupers type used by this module.
+ * @typedef {{ groupReasonsByOrigin: (groupConfigs: GroupConfig<KnownStatsModuleReason, BaseGroup & { module: string, children: KnownStatsModuleReason[], active: boolean }>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void }} ModuleReasonsGroupers
*/
/** @type {ModuleReasonsGroupers} */
@@ -2482,6 +2537,7 @@
// remove a prefixed "!" that can be specified to reverse sort order
/**
+ * Normalizes field key.
* @param {string} field a field name
* @returns {field} normalized field
*/
@@ -2494,6 +2550,7 @@
// if a field is prefixed by a "!" reverse sort order
/**
+ * Sorts order regular.
* @param {string} field a field name
* @returns {boolean} result
*/
@@ -2505,6 +2562,7 @@
};
/**
+ * Returns comparators.
* @template T
* @param {string | false} field field name
* @returns {(a: T, b: T) => 0 | 1 | -1} comparators
@@ -2512,6 +2570,7 @@
const sortByField = (field) => {
if (!field) {
/**
+ * Returns zero.
* @param {T} a first
* @param {T} b second
* @returns {-1 | 0 | 1} zero
@@ -2536,9 +2595,10 @@
};
/**
+ * Describes the asset sorters shape.
* @typedef {{
* assetsSort: (comparators: Comparator<Asset>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
- * _: (comparators: Comparator<Asset>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void
+ * _: (comparators: Comparator<Asset>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
* }} AssetSorters
*/
@@ -2588,11 +2648,13 @@
};
/**
+ * Defines the extract function type used by this module.
* @template T
* @typedef {T extends Record<string, Record<string, infer F>> ? F : never} ExtractFunction
*/
/**
+ * Processes the provided config.
* @template {Record<string, Record<string, EXPECTED_ANY>>} T
* @param {T} config the config see above
* @param {NormalizedStatsOptions} options stats options
@@ -2647,11 +2709,13 @@
};
/**
+ * Defines the named object type used by this module.
* @template T
* @typedef {{ name: T }} NamedObject
*/
/**
+ * Merges the provided values into a single result.
* @template {{ name: string }} T
* @param {T[]} items items to be merged
* @returns {NamedObject<T>} an object
@@ -2677,7 +2741,7 @@
class DefaultStatsFactoryPlugin {
/**
- * Apply the plugin
+ * Applies the plugin by registering its hooks on the compiler.
* @param {Compiler} compiler the compiler instance
* @returns {void}
*/
@@ -2686,6 +2750,7 @@
compilation.hooks.statsFactory.tap(
PLUGIN_NAME,
/**
+ * Handles the callback logic for this hook.
* @param {StatsFactory} stats stats factory
* @param {NormalizedStatsOptions} options stats options
*/
@@ -2747,6 +2812,7 @@
.tap(
PLUGIN_NAME,
/**
+ * Handles the callback logic for this hook.
* @param {Compilation} comp compilation
* @param {StatsFactoryContext} options options
* @returns {StatsFactory | undefined} stats factory
--
Gitblit v1.9.3