2018-09-27 13:22:19 +08:00
|
|
|
/*
|
|
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
|
|
Author Tobias Koppers @sokra
|
|
|
|
*/
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
const { AsyncParallelHook, AsyncSeriesBailHook, SyncHook } = require("tapable");
|
|
|
|
|
|
|
|
class Cache {
|
|
|
|
constructor() {
|
|
|
|
this.hooks = {
|
|
|
|
/** @type {AsyncSeriesBailHook<string, string>} */
|
2018-10-11 16:46:48 +08:00
|
|
|
get: new AsyncSeriesBailHook(["identifier", "etag"]),
|
|
|
|
/** @type {AsyncParallelHook<string, string, any>} */
|
|
|
|
store: new AsyncParallelHook(["identifier", "etag", "data"]),
|
2018-09-27 13:22:19 +08:00
|
|
|
/** @type {SyncHook} */
|
|
|
|
beginIdle: new SyncHook([]),
|
|
|
|
/** @type {AsyncParallelHook} */
|
|
|
|
endIdle: new AsyncParallelHook([]),
|
|
|
|
/** @type {AsyncParallelHook} */
|
|
|
|
shutdown: new AsyncParallelHook([])
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2018-10-11 16:46:48 +08:00
|
|
|
get(identifier, etag, callback) {
|
|
|
|
this.hooks.get.callAsync(identifier, etag, callback);
|
2018-09-27 13:22:19 +08:00
|
|
|
}
|
|
|
|
|
2018-10-09 20:30:59 +08:00
|
|
|
store(identifier, etag, data, callback) {
|
|
|
|
this.hooks.store.callAsync(identifier, etag, data, callback);
|
2018-09-27 13:22:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
beginIdle() {
|
|
|
|
this.hooks.beginIdle.call();
|
|
|
|
}
|
|
|
|
|
|
|
|
endIdle(callback) {
|
|
|
|
this.hooks.endIdle.callAsync(callback);
|
|
|
|
}
|
|
|
|
|
|
|
|
shutdown(callback) {
|
|
|
|
this.hooks.shutdown.callAsync(callback);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = Cache;
|