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/SyncModuleIdsPlugin.js | 54 +++++++++++++++++++++++++++++++++---------------------
1 files changed, 33 insertions(+), 21 deletions(-)
diff --git a/node_modules/webpack/lib/ids/SyncModuleIdsPlugin.js b/node_modules/webpack/lib/ids/SyncModuleIdsPlugin.js
index a3ff095..217e79f 100644
--- a/node_modules/webpack/lib/ids/SyncModuleIdsPlugin.js
+++ b/node_modules/webpack/lib/ids/SyncModuleIdsPlugin.js
@@ -13,9 +13,12 @@
/** @typedef {import("../Module").ModuleId} ModuleId */
/** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
+/** @typedef {{ [key: string]: ModuleId }} JSONContent */
+
const plugin = "SyncModuleIdsPlugin";
/**
+ * Represents the sync module ids plugin runtime component.
* @typedef {object} SyncModuleIdsPluginOptions
* @property {string} path path to file
* @property {string=} context context for module names
@@ -25,20 +28,16 @@
class SyncModuleIdsPlugin {
/**
+ * Creates an instance of SyncModuleIdsPlugin.
* @param {SyncModuleIdsPluginOptions} options options
*/
- constructor({ path, context, test, mode }) {
- this._path = path;
- this._context = context;
- this._test = test || (() => true);
- const readAndWrite = !mode || mode === "merge" || mode === "update";
- this._read = readAndWrite || mode === "read";
- this._write = readAndWrite || mode === "create";
- this._prune = mode === "update";
+ constructor(options) {
+ /** @type {SyncModuleIdsPluginOptions} */
+ this.options = options;
}
/**
- * Apply the plugin
+ * Applies the plugin by registering its hooks on the compiler.
* @param {Compiler} compiler the compiler instance
* @returns {void}
*/
@@ -46,19 +45,31 @@
/** @type {Map<string, ModuleId>} */
let data;
let dataChanged = false;
- if (this._read) {
+
+ const readAndWrite =
+ !this.options.mode ||
+ this.options.mode === "merge" ||
+ this.options.mode === "update";
+
+ const needRead = readAndWrite || this.options.mode === "read";
+ const needWrite = readAndWrite || this.options.mode === "create";
+ const needPrune = this.options.mode === "update";
+
+ if (needRead) {
compiler.hooks.readRecords.tapAsync(plugin, (callback) => {
const fs =
/** @type {IntermediateFileSystem} */
(compiler.intermediateFileSystem);
- fs.readFile(this._path, (err, buffer) => {
+ fs.readFile(this.options.path, (err, buffer) => {
if (err) {
if (err.code !== "ENOENT") {
return callback(err);
}
return callback();
}
+ /** @type {JSONContent} */
const json = JSON.parse(/** @type {Buffer} */ (buffer).toString());
+ /** @type {Map<string, string | number | null>} */
data = new Map();
for (const key of Object.keys(json)) {
data.set(key, json[key]);
@@ -68,10 +79,10 @@
});
});
}
- if (this._write) {
+ if (needWrite) {
compiler.hooks.emitRecords.tapAsync(plugin, (callback) => {
if (!data || !dataChanged) return callback();
- /** @type {{[key: string]: ModuleId}} */
+ /** @type {JSONContent} */
const json = {};
const sorted = [...data].sort(([a], [b]) => (a < b ? -1 : 1));
for (const [key, value] of sorted) {
@@ -80,19 +91,20 @@
const fs =
/** @type {IntermediateFileSystem} */
(compiler.intermediateFileSystem);
- fs.writeFile(this._path, JSON.stringify(json), callback);
+ fs.writeFile(this.options.path, JSON.stringify(json), callback);
});
}
compiler.hooks.thisCompilation.tap(plugin, (compilation) => {
const associatedObjectForCache = compiler.root;
- const context = this._context || compiler.context;
- if (this._read) {
+ const context = this.options.context || compiler.context;
+ const test = this.options.test || (() => true);
+ if (needRead) {
compilation.hooks.reviveModules.tap(plugin, (_1, _2) => {
if (!data) return;
const { chunkGraph } = compilation;
const [usedIds, modules] = getUsedModuleIdsAndModules(
compilation,
- this._test
+ test
);
for (const module of modules) {
const name = module.libIdent({
@@ -104,7 +116,7 @@
const idAsString = `${id}`;
if (usedIds.has(idAsString)) {
const err = new WebpackError(
- `SyncModuleIdsPlugin: Unable to restore id '${id}' from '${this._path}' as it's already used.`
+ `SyncModuleIdsPlugin: Unable to restore id '${id}' from '${this.options.path}' as it's already used.`
);
err.module = module;
compilation.errors.push(err);
@@ -114,17 +126,17 @@
}
});
}
- if (this._write) {
+ if (needWrite) {
compilation.hooks.recordModules.tap(plugin, (modules) => {
const { chunkGraph } = compilation;
let oldData = data;
if (!oldData) {
oldData = data = new Map();
- } else if (this._prune) {
+ } else if (needPrune) {
data = new Map();
}
for (const module of modules) {
- if (this._test(module)) {
+ if (test(module)) {
const name = module.libIdent({
context,
associatedObjectForCache
--
Gitblit v1.9.3