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

View File

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