123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- "use strict";
- const Cache = require("../Cache");
- class MemoryCachePlugin {
-
- apply(compiler) {
-
- const cache = new Map();
- compiler.cache.hooks.store.tap(
- { name: "MemoryCachePlugin", stage: Cache.STAGE_MEMORY },
- (identifier, etag, data) => {
- cache.set(identifier, { etag, data });
- }
- );
- compiler.cache.hooks.get.tap(
- { name: "MemoryCachePlugin", stage: Cache.STAGE_MEMORY },
- (identifier, etag, gotHandlers) => {
- const cacheEntry = cache.get(identifier);
- if (cacheEntry === null) {
- return null;
- } else if (cacheEntry !== undefined) {
- return cacheEntry.etag === etag ? cacheEntry.data : null;
- }
- gotHandlers.push((result, callback) => {
- if (result === undefined) {
- cache.set(identifier, null);
- } else {
- cache.set(identifier, { etag, data: result });
- }
- return callback();
- });
- }
- );
- compiler.cache.hooks.shutdown.tap(
- { name: "MemoryCachePlugin", stage: Cache.STAGE_MEMORY },
- () => {
- cache.clear();
- }
- );
- }
- }
- module.exports = MemoryCachePlugin;
|