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/cache/PackFileCacheStrategy.js | 89 ++++++++++++++++++++++++++++++++++++++------
1 files changed, 76 insertions(+), 13 deletions(-)
diff --git a/node_modules/webpack/lib/cache/PackFileCacheStrategy.js b/node_modules/webpack/lib/cache/PackFileCacheStrategy.js
index e88cee5..9984536 100644
--- a/node_modules/webpack/lib/cache/PackFileCacheStrategy.js
+++ b/node_modules/webpack/lib/cache/PackFileCacheStrategy.js
@@ -18,6 +18,7 @@
} = require("../util/serialization");
/** @typedef {import("../../declarations/WebpackOptions").SnapshotOptions} SnapshotOptions */
+/** @typedef {import("../Compilation").FileSystemDependencies} FileSystemDependencies */
/** @typedef {import("../Cache").Data} Data */
/** @typedef {import("../Cache").Etag} Etag */
/** @typedef {import("../Compiler")} Compiler */
@@ -27,7 +28,7 @@
/** @typedef {import("../logging/Logger").Logger} Logger */
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
-/** @typedef {typeof import("../util/Hash")} Hash */
+/** @typedef {import("../util/Hash").HashFunction} HashFunction */
/** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
/** @typedef {Set<string>} Items */
@@ -36,6 +37,7 @@
class PackContainer {
/**
+ * Creates an instance of PackContainer.
* @param {Pack} data stored data
* @param {string} version version identifier
* @param {Snapshot} buildSnapshot snapshot of all build dependencies
@@ -51,7 +53,7 @@
resolveResults,
resolveBuildDependenciesSnapshot
) {
- /** @type {Pack | (() => Pack) } */
+ /** @type {Pack | (() => Pack)} */
this.data = data;
/** @type {string} */
this.version = version;
@@ -66,6 +68,7 @@
}
/**
+ * Serializes this instance into the provided serializer context.
* @param {ObjectSerializerContext} context context
*/
serialize({ write, writeLazy }) {
@@ -79,6 +82,7 @@
}
/**
+ * Restores this instance from the provided deserializer context.
* @param {ObjectDeserializerContext} context context
*/
deserialize({ read }) {
@@ -105,6 +109,7 @@
class PackItemInfo {
/**
+ * Creates an instance of PackItemInfo.
* @param {string} identifier identifier of item
* @param {string | null | undefined} etag etag of item
* @param {Data} value fresh value of item
@@ -125,6 +130,7 @@
class Pack {
/**
+ * Creates an instance of Pack.
* @param {Logger} logger a logger
* @param {number} maxAge max age of cache items
*/
@@ -133,17 +139,22 @@
this.itemInfo = new Map();
/** @type {(string | undefined)[]} */
this.requests = [];
+ /** @type {undefined | NodeJS.Timeout} */
this.requestsTimeout = undefined;
/** @type {ItemInfo} */
this.freshContent = new Map();
/** @type {(undefined | PackContent)[]} */
this.content = [];
+ /** @type {boolean} */
this.invalid = false;
+ /** @type {Logger} */
this.logger = logger;
+ /** @type {number} */
this.maxAge = maxAge;
}
/**
+ * Adds the provided identifier to the pack.
* @param {string} identifier identifier
*/
_addRequest(identifier) {
@@ -165,6 +176,7 @@
}
/**
+ * Returns cached content.
* @param {string} identifier unique name for the resource
* @param {string | null} etag etag of the resource
* @returns {Data} cached content
@@ -188,6 +200,7 @@
}
/**
+ * Updates value using the provided identifier.
* @param {string} identifier unique name for the resource
* @param {string | null} etag etag of the resource
* @param {Data} data cached content
@@ -239,15 +252,18 @@
}
/**
+ * Returns new location of data entries.
* @returns {number} new location of data entries
*/
_findLocation() {
+ /** @type {number} */
let i;
for (i = 0; i < this.content.length && this.content[i] !== undefined; i++);
return i;
}
/**
+ * Gc and update location.
* @private
* @param {Items} items items
* @param {Items} usedItems used items
@@ -255,6 +271,7 @@
*/
_gcAndUpdateLocation(items, usedItems, newLoc) {
let count = 0;
+ /** @type {undefined | string} */
let lastGC;
const now = Date.now();
for (const identifier of items) {
@@ -380,6 +397,7 @@
}
// 2. Check if minimum number is reached
+ /** @type {number[]} */
let mergedIndices;
if (
smallUsedContents.length >= CONTENT_COUNT_TO_MERGE ||
@@ -395,7 +413,7 @@
return;
}
- /** @type {PackContent[] } */
+ /** @type {PackContent[]} */
const mergedContent = [];
// 3. Remove old content entries
@@ -504,6 +522,7 @@
// 5. Determine items for the unused content file
const unusedItems = new Set(content.items);
+ /** @type {Items} */
const usedOfUnusedItems = new Set();
for (const identifier of usedItems) {
unusedItems.delete(identifier);
@@ -520,6 +539,7 @@
await content.unpack(
"it should be splitted into used and unused items"
);
+ /** @type {Content} */
const map = new Map();
for (const identifier of unusedItems) {
map.set(
@@ -578,6 +598,7 @@
await content.unpack(
"it contains old items that should be garbage collected"
);
+ /** @type {Content} */
const map = new Map();
for (const identifier of items) {
map.set(
@@ -593,6 +614,7 @@
}
/**
+ * Serializes this instance into the provided serializer context.
* @param {ObjectSerializerContext} context context
*/
serialize({ write, writeSeparate }) {
@@ -626,6 +648,7 @@
}
/**
+ * Restores this instance from the provided deserializer context.
* @param {ObjectDeserializerContext & { logger: Logger }} context context
*/
deserialize({ read, logger }) {
@@ -683,6 +706,7 @@
class PackContentItems {
/**
+ * Creates an instance of PackContentItems.
* @param {Content} map items
*/
constructor(map) {
@@ -690,7 +714,8 @@
}
/**
- * @param {ObjectSerializerContext & { logger: Logger, profile: boolean | undefined }} context context
+ * Serializes this instance into the provided serializer context.
+ * @param {ObjectSerializerContext & { logger: Logger, profile: boolean | undefined }} context context
*/
serialize({ write, snapshot, rollback, logger, profile }) {
if (profile) {
@@ -767,12 +792,14 @@
}
/**
+ * Restores this instance from the provided deserializer context.
* @param {ObjectDeserializerContext & { logger: Logger, profile: boolean | undefined }} context context
*/
deserialize({ read, logger, profile }) {
if (read()) {
this.map = read();
} else if (profile) {
+ /** @type {Map<EXPECTED_ANY, EXPECTED_ANY>} */
const map = new Map();
let key = read();
while (key !== null) {
@@ -798,6 +825,7 @@
}
this.map = map;
} else {
+ /** @type {Map<EXPECTED_ANY, EXPECTED_ANY>} */
const map = new Map();
let key = read();
while (key !== null) {
@@ -815,7 +843,7 @@
"PackContentItems"
);
-/** @typedef {(() => Promise<PackContentItems> | PackContentItems) & Partial<{ options: { size?: number }}>} LazyFunction */
+/** @typedef {(() => Promise<PackContentItems> | PackContentItems) & Partial<{ options: { size?: number } }>} LazyFunction */
class PackContent {
/*
@@ -838,6 +866,7 @@
*/
/**
+ * Creates an instance of PackContent.
* @param {Items} items keys
* @param {Items} usedItems used keys
* @param {PackContentItems | (() => Promise<PackContentItems>)} dataOrFn sync or async content
@@ -845,18 +874,24 @@
* @param {string=} lazyName name of dataOrFn for logging
*/
constructor(items, usedItems, dataOrFn, logger, lazyName) {
+ /** @type {Items} */
this.items = items;
/** @type {LazyFunction | undefined} */
this.lazy = typeof dataOrFn === "function" ? dataOrFn : undefined;
/** @type {Content | undefined} */
this.content = typeof dataOrFn === "function" ? undefined : dataOrFn.map;
+ /** @type {boolean} */
this.outdated = false;
+ /** @type {Items} */
this.used = usedItems;
+ /** @type {Logger | undefined} */
this.logger = logger;
+ /** @type {string | undefined} */
this.lazyName = lazyName;
}
/**
+ * Returns result.
* @param {string} identifier identifier
* @returns {string | Promise<string>} result
*/
@@ -909,6 +944,7 @@
}
/**
+ * Returns maybe a promise if lazy.
* @param {string} reason explanation why unpack is necessary
* @returns {void | Promise<void>} maybe a promise if lazy
*/
@@ -953,6 +989,7 @@
}
/**
+ * Returns the estimated size for the requested source type.
* @returns {number} size of the content or -1 if not known
*/
getSize() {
@@ -967,6 +1004,7 @@
}
/**
+ * Processes the provided identifier.
* @param {string} identifier identifier
*/
delete(identifier) {
@@ -976,6 +1014,7 @@
}
/**
+ * Processes the provided write.
* @param {(lazy: LazyFunction) => (() => PackContentItems | Promise<PackContentItems>)} write write function
* @returns {void}
*/
@@ -1068,6 +1107,7 @@
}
/**
+ * Allow collecting memory.
* @param {Buffer} buf buffer
* @returns {Buffer} buffer that can be collected
*/
@@ -1081,6 +1121,7 @@
class PackFileCacheStrategy {
/**
+ * Creates an instance of PackFileCacheStrategy.
* @param {object} options options
* @param {Compiler} options.compiler the compiler
* @param {IntermediateFileSystem} options.fs the filesystem
@@ -1090,10 +1131,10 @@
* @param {Logger} options.logger a logger
* @param {SnapshotOptions} options.snapshot options regarding snapshotting
* @param {number} options.maxAge max age of cache items
- * @param {boolean | undefined} options.profile track and log detailed timing information for individual cache items
- * @param {boolean | undefined} options.allowCollectingMemory allow to collect unused memory created during deserialization
- * @param {false | "gzip" | "brotli" | undefined} options.compression compression used
- * @param {boolean | undefined} options.readonly disable storing cache into filesystem
+ * @param {boolean=} options.profile track and log detailed timing information for individual cache items
+ * @param {boolean=} options.allowCollectingMemory allow to collect unused memory created during deserialization
+ * @param {false | "gzip" | "brotli"=} options.compression compression used
+ * @param {boolean=} options.readonly disable storing cache into filesystem
*/
constructor({
compiler,
@@ -1109,38 +1150,51 @@
compression,
readonly
}) {
- /** @type {import("../serialization/Serializer")<PackContainer, null, {}>} */
+ /** @type {import("../serialization/Serializer")<PackContainer, null, EXPECTED_OBJECT>} */
this.fileSerializer = createFileSerializer(
fs,
- /** @type {string | Hash} */
+ /** @type {HashFunction} */
(compiler.options.output.hashFunction)
);
+ /** @type {FileSystemInfo} */
this.fileSystemInfo = new FileSystemInfo(fs, {
managedPaths: snapshot.managedPaths,
immutablePaths: snapshot.immutablePaths,
logger: logger.getChildLogger("webpack.FileSystemInfo"),
hashFunction: compiler.options.output.hashFunction
});
+ /** @type {Compiler} */
this.compiler = compiler;
+ /** @type {string} */
this.context = context;
+ /** @type {string} */
this.cacheLocation = cacheLocation;
+ /** @type {string} */
this.version = version;
+ /** @type {Logger} */
this.logger = logger;
+ /** @type {number} */
this.maxAge = maxAge;
+ /** @type {boolean | undefined} */
this.profile = profile;
+ /** @type {boolean | undefined} */
this.readonly = readonly;
+ /** @type {boolean | undefined} */
this.allowCollectingMemory = allowCollectingMemory;
+ /** @type {false | "gzip" | "brotli" | undefined} */
this.compression = compression;
+ /** @type {string} */
this._extension =
compression === "brotli"
? ".pack.br"
: compression === "gzip"
? ".pack.gz"
: ".pack";
+ /** @type {SnapshotOptions} */
this.snapshot = snapshot;
/** @type {BuildDependencies} */
this.buildDependencies = new Set();
- /** @type {LazySet<string>} */
+ /** @type {FileSystemDependencies} */
this.newBuildDependencies = new LazySet();
/** @type {Snapshot | undefined} */
this.resolveBuildDependenciesSnapshot = undefined;
@@ -1150,10 +1204,12 @@
this.buildSnapshot = undefined;
/** @type {Promise<Pack> | undefined} */
this.packPromise = this._openPack();
+ /** @type {Promise<void>} */
this.storePromise = Promise.resolve();
}
/**
+ * Returns pack.
* @returns {Promise<Pack>} pack
*/
_getPack() {
@@ -1164,6 +1220,7 @@
}
/**
+ * Returns the pack.
* @returns {Promise<Pack>} the pack
*/
_openPack() {
@@ -1330,6 +1387,7 @@
}
/**
+ * Returns promise.
* @param {string} identifier unique name for the resource
* @param {Etag | null} etag etag of the resource
* @param {Data} data cached content
@@ -1344,6 +1402,7 @@
}
/**
+ * Returns promise to the cached content.
* @param {string} identifier unique name for the resource
* @param {Etag | null} etag etag of the resource
* @returns {Promise<Data>} promise to the cached content
@@ -1364,7 +1423,8 @@
}
/**
- * @param {LazySet<string> | Iterable<string>} dependencies dependencies to store
+ * Stores build dependencies.
+ * @param {FileSystemDependencies | Iterable<string>} dependencies dependencies to store
*/
storeBuildDependencies(dependencies) {
if (this.readonly) return;
@@ -1381,7 +1441,9 @@
if (!pack.invalid) return;
this.packPromise = undefined;
this.logger.log("Storing pack...");
+ /** @type {undefined | Promise<void>} */
let promise;
+ /** @type {Set<string>} */
const newBuildDependencies = new Set();
for (const dep of this.newBuildDependencies) {
if (!this.buildDependencies.has(dep)) {
@@ -1395,6 +1457,7 @@
);
promise = new Promise(
/**
+ * Handles the callback logic for this hook.
* @param {(value?: undefined) => void} resolve resolve
* @param {(reason?: Error) => void} reject reject
*/
--
Gitblit v1.9.3