seralization class for resolver cache

This commit is contained in:
Tobias Koppers 2020-01-28 11:01:36 +01:00
parent d834475d33
commit cb543a444c
2 changed files with 40 additions and 13 deletions

View File

@ -6,6 +6,7 @@
"use strict";
const LazySet = require("../util/LazySet");
const makeSerializable = require("../util/makeSerializable");
/** @typedef {import("enhanced-resolve/lib/Resolver")} Resolver */
/** @typedef {import("../Compiler")} Compiler */
@ -13,14 +14,39 @@ const LazySet = require("../util/LazySet");
/** @typedef {import("../FileSystemInfo").Snapshot} Snapshot */
/** @template T @typedef {import("../util/LazySet")<T>} LazySet<T> */
/**
* @typedef {Object} CacheEntry
* @property {Object} result
* @property {LazySet<string>} fileDependencies
* @property {LazySet<string>} contextDependencies
* @property {LazySet<string>} missingDependencies
* @property {Snapshot} snapshot
*/
class CacheEntry {
constructor(
result,
fileDependencies,
contextDependencies,
missingDependencies,
snapshot
) {
this.result = result;
this.fileDependencies = fileDependencies;
this.contextDependencies = contextDependencies;
this.missingDependencies = missingDependencies;
this.snapshot = snapshot;
}
serialize({ write }) {
write(this.result);
write(this.fileDependencies);
write(this.contextDependencies);
write(this.missingDependencies);
write(this.snapshot);
}
deserialize({ read }) {
this.result = read();
this.fileDependencies = read();
this.contextDependencies = read();
this.missingDependencies = read();
this.snapshot = read();
}
}
makeSerializable(CacheEntry, "webpack/lib/cache/ResolverCachePlugin");
/**
* @template T
@ -146,13 +172,13 @@ class ResolverCachePlugin {
cache.store(
identifier,
null,
/** @type {CacheEntry} */ {
new CacheEntry(
result,
fileDependencies: newResolveContext.fileDependencies,
contextDependencies: newResolveContext.contextDependencies,
missingDependencies: newResolveContext.missingDependencies,
newResolveContext.fileDependencies,
newResolveContext.contextDependencies,
newResolveContext.missingDependencies,
snapshot
},
),
storeErr => {
if (storeErr) return callback(storeErr);
if (result) return callback(null, result);

View File

@ -16,6 +16,7 @@ module.exports = {
ContextModule: () => require("../ContextModule"),
"cache/PackFileCacheStrategy": () =>
require("../cache/PackFileCacheStrategy"),
"cache/ResolverCachePlugin": () => require("../cache/ResolverCachePlugin"),
"dependencies/AMDDefineDependency": () =>
require("../dependencies/AMDDefineDependency"),
"dependencies/AMDRequireArrayDependency": () =>