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/ProgressPlugin.js | 91 ++++++++++++++++++++++++++++++---------------
1 files changed, 61 insertions(+), 30 deletions(-)
diff --git a/node_modules/webpack/lib/ProgressPlugin.js b/node_modules/webpack/lib/ProgressPlugin.js
index 82d26bb..f99bdec 100644
--- a/node_modules/webpack/lib/ProgressPlugin.js
+++ b/node_modules/webpack/lib/ProgressPlugin.js
@@ -8,15 +8,16 @@
const Compiler = require("./Compiler");
const MultiCompiler = require("./MultiCompiler");
const NormalModule = require("./NormalModule");
-const createSchemaValidation = require("./util/create-schema-validation");
const { contextify } = require("./util/identifier");
/** @typedef {import("tapable").Tap} Tap */
/**
+ * Defines the hook type used by this module.
* @template T, R, AdditionalOptions
* @typedef {import("tapable").Hook<T, R, AdditionalOptions>} Hook
*/
/** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginArgument} ProgressPluginArgument */
+/** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginOptions} ProgressPluginOptions */
/** @typedef {import("./Compilation").FactorizeModuleOptions} FactorizeModuleOptions */
/** @typedef {import("./Dependency")} Dependency */
/** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
@@ -25,26 +26,20 @@
/** @typedef {import("./logging/Logger").Logger} Logger */
/**
+ * Defines the async queue type used by this module.
* @template T, K, R
* @typedef {import("./util/AsyncQueue")<T, K, R>} AsyncQueue
*/
/**
+ * Defines the counts data type used by this module.
* @typedef {object} CountsData
* @property {number} modulesCount modules count
* @property {number} dependenciesCount dependencies count
*/
-const validate = createSchemaValidation(
- require("../schemas/plugins/ProgressPlugin.check"),
- () => require("../schemas/plugins/ProgressPlugin.json"),
- {
- name: "Progress Plugin",
- baseDataPath: "options"
- }
-);
-
/**
+ * Returns median.
* @param {number} a a
* @param {number} b b
* @param {number} c c
@@ -55,6 +50,7 @@
/** @typedef {(percentage: number, msg: string, ...args: string[]) => void} HandlerFn */
/**
+ * Creates a default handler.
* @param {boolean | null | undefined} profile need profile
* @param {Logger} logger logger
* @returns {HandlerFn} default handler
@@ -131,6 +127,7 @@
const SKIPPED_QUEUE_CONTEXTS = ["import-module", "load-module"];
/**
+ * Defines the report progress callback.
* @callback ReportProgress
* @param {number} p percentage
* @param {...string} args additional arguments
@@ -142,8 +139,21 @@
const PLUGIN_NAME = "ProgressPlugin";
+/** @type {Required<Omit<ProgressPluginOptions, "handler">>} */
+const DEFAULT_OPTIONS = {
+ profile: false,
+ modulesCount: 5000,
+ dependenciesCount: 10000,
+ modules: true,
+ dependencies: true,
+ activeModules: false,
+ entries: true,
+ percentBy: null
+};
+
class ProgressPlugin {
/**
+ * Returns a progress reporter, if any.
* @param {Compiler} compiler the current compiler
* @returns {ReportProgress | undefined} a progress reporter, if any
*/
@@ -152,6 +162,7 @@
}
/**
+ * Creates an instance of ProgressPlugin.
* @param {ProgressPluginArgument} options options
*/
constructor(options = {}) {
@@ -161,21 +172,23 @@
};
}
- validate(options);
- options = { ...ProgressPlugin.defaultOptions, ...options };
+ /** @type {ProgressPluginOptions} */
+ this.options = options;
- this.profile = options.profile;
- this.handler = options.handler;
- this.modulesCount = options.modulesCount;
- this.dependenciesCount = options.dependenciesCount;
- this.showEntries = options.entries;
- this.showModules = options.modules;
- this.showDependencies = options.dependencies;
- this.showActiveModules = options.activeModules;
- this.percentBy = options.percentBy;
+ const merged = { ...DEFAULT_OPTIONS, ...options };
+ this.profile = merged.profile;
+ this.handler = merged.handler;
+ this.modulesCount = merged.modulesCount;
+ this.dependenciesCount = merged.dependenciesCount;
+ this.showEntries = merged.entries;
+ this.showModules = merged.modules;
+ this.showDependencies = merged.dependencies;
+ this.showActiveModules = merged.activeModules;
+ this.percentBy = merged.percentBy;
}
/**
+ * Applies the plugin by registering its hooks on the compiler.
* @param {Compiler | MultiCompiler} compiler webpack compiler
* @returns {void}
*/
@@ -194,6 +207,7 @@
}
/**
+ * Apply on multi compiler.
* @param {MultiCompiler} compiler webpack multi-compiler
* @param {HandlerFn} handler function that executes for every progress step
* @returns {void}
@@ -213,11 +227,24 @@
}
/**
+ * Processes the provided compiler.
* @param {Compiler} compiler webpack compiler
* @param {HandlerFn} handler function that executes for every progress step
* @returns {void}
*/
_applyOnCompiler(compiler, handler) {
+ compiler.hooks.validate.tap(PLUGIN_NAME, () => {
+ compiler.validate(
+ () => require("../schemas/plugins/ProgressPlugin.json"),
+ this.options,
+ {
+ name: "Progress Plugin",
+ baseDataPath: "options"
+ },
+ (options) => require("../schemas/plugins/ProgressPlugin.check")(options)
+ );
+ });
+
const showEntries = this.showEntries;
const showModules = this.showModules;
const showDependencies = this.showDependencies;
@@ -235,6 +262,7 @@
let doneModules = 0;
let doneDependencies = 0;
let doneEntries = 0;
+ /** @type {Set<string>} */
const activeModules = new Set();
let lastUpdate = 0;
@@ -254,6 +282,7 @@
const percentByDependencies =
doneDependencies /
Math.max(lastDependenciesCount || 1, dependenciesCount);
+ /** @type {number} */
let percentageFactor;
switch (this.percentBy) {
@@ -285,6 +314,7 @@
)}`
);
} else {
+ /** @type {string[]} */
const statItems = [];
if (showEntries) {
statItems.push(`${doneEntries}/${entriesCount} entries`);
@@ -312,6 +342,7 @@
};
/**
+ * Processes the provided factorize queue.
* @template T
* @param {AsyncQueue<FactorizeModuleOptions, string, Module | ModuleFactoryResult>} factorizeQueue async queue
* @param {T} _item item
@@ -334,6 +365,7 @@
};
/**
+ * Processes the provided add module queue.
* @template T
* @param {AsyncQueue<Module, string, Module>} addModuleQueue async queue
* @param {T} _item item
@@ -348,6 +380,7 @@
// only used when showActiveModules is set
/**
+ * Processes the provided module.
* @param {Module} module the module
*/
const moduleBuild = (module) => {
@@ -360,6 +393,7 @@
};
/**
+ * Processes the provided entry.
* @param {Dependency} entry entry dependency
* @param {EntryOptions} options options object
*/
@@ -369,6 +403,7 @@
};
/**
+ * Processes the provided module.
* @param {Module} module the module
*/
const moduleDone = (module) => {
@@ -391,6 +426,7 @@
};
/**
+ * Processes the provided entry.
* @param {Dependency} entry entry dependency
* @param {EntryOptions} options options object
*/
@@ -480,6 +516,7 @@
// @ts-expect-error avoid dynamic require if bundled with webpack
if (typeof __webpack_require__ !== "function") {
+ /** @type {Set<string>} */
const requiredLoaders = new Set();
NormalModule.getCompilationHooks(compilation).beforeLoaders.tap(
PLUGIN_NAME,
@@ -584,6 +621,7 @@
}
});
/**
+ * Processes the provided hook.
* @template {Hook<EXPECTED_ANY, EXPECTED_ANY, EXPECTED_ANY>} T
* @param {T} hook hook
* @param {number} progress progress from 0 to 1
@@ -607,6 +645,7 @@
handler(progress, category, name);
},
/**
+ * Processes the provided tap.
* @param {Tap} tap tap
*/
tap(tap) {
@@ -693,15 +732,7 @@
}
}
-ProgressPlugin.defaultOptions = {
- profile: false,
- modulesCount: 5000,
- dependenciesCount: 10000,
- modules: true,
- dependencies: true,
- activeModules: false,
- entries: true
-};
+ProgressPlugin.defaultOptions = DEFAULT_OPTIONS;
ProgressPlugin.createDefaultHandler = createDefaultHandler;
--
Gitblit v1.9.3