UNPKG

@croct/cache

Version:

An abstraction layer for caching.

26 lines (25 loc) 905 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DefaultWhileMissCache = void 0; class DefaultWhileMissCache { constructor(config) { this.provider = config.provider; this.defaultValue = config.defaultValue; this.errorHandler = config.errorHandler ?? (() => { }); } get(key, loader) { return this.provider.get(key, innerKey => { // Schedule loading in the next tick avoiding resolving // before the surrounding cache retrieval resolves setImmediate(() => loader(innerKey).catch(error => this.errorHandler(key, error))); return Promise.resolve(this.defaultValue); }); } set(key, value) { return this.provider.set(key, value); } delete(key) { return this.provider.delete(key); } } exports.DefaultWhileMissCache = DefaultWhileMissCache;