UNPKG

@push.rocks/smartcache

Version:

cache things in smart ways

53 lines 4.23 kB
import * as plugins from './smartcache.plugins.js'; import { SmartError } from '@pushrocks/smarterror'; export class CacheManager { constructor() { this._cacheMap = {}; } cacheExists(identifierArg) { if (this._cacheMap[identifierArg]) { return true; } return false; } stillValid(identifierArg) { if (this.cacheExists(identifierArg) && this._cacheMap[identifierArg].timer.startedAt.isYoungerThanMilliSeconds(this._cacheMap[identifierArg].timer.timeInMilliseconds)) { return true; } return false; } // announce the caching of something announceCache(identifierArg, validForArg) { this._cacheMap[identifierArg] = { timer: new plugins.smarttime.Timer(validForArg), cachedDeferred: new plugins.smartpromise.Deferred(), cachedObject: null, }; this._cacheMap[identifierArg].timer.start(); this._cacheMap[identifierArg].timer.completed.then(() => { this.deleteCache(identifierArg); }); } /** * waits for the cache to be ready */ async waitForCacheReady(identifierArg) { await this._cacheMap[identifierArg].cachedDeferred.promise; return true; } setCache(identifierArg, cachedObjectArg, validForArg = 1000) { if (!this.cacheExists(identifierArg)) { console.log(new SmartError(`Cache for ${identifierArg} has not been announced or timed out!`)); } this._cacheMap[identifierArg].cachedObject = cachedObjectArg; this._cacheMap[identifierArg].cachedDeferred.resolve(); } getCache(identifierArg) { return this._cacheMap[identifierArg]; } async deleteCache(identifierArg) { delete this._cacheMap[identifierArg]; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjYWNoZS5jbGFzc2VzLmNhY2hlbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2FjaGUuY2xhc3Nlcy5jYWNoZW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFVbkQsTUFBTSxPQUFPLFlBQVk7SUFBekI7UUFDVSxjQUFTLEdBQWMsRUFBRSxDQUFDO0lBMkRwQyxDQUFDO0lBekRDLFdBQVcsQ0FBQyxhQUFxQjtRQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxhQUFxQjtRQUM5QixJQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1lBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FDckUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQ3ZELEVBQ0Q7WUFDQSxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLGFBQWEsQ0FBQyxhQUFxQixFQUFFLFdBQW1CO1FBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUc7WUFDOUIsS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1lBQy9DLGNBQWMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO1lBQ25ELFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGFBQXFCO1FBQzNDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFFBQVEsQ0FBQyxhQUFxQixFQUFFLGVBQW9CLEVBQUUsV0FBVyxHQUFHLElBQUk7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLFVBQVUsQ0FBQyxhQUFhLGFBQWEsdUNBQXVDLENBQUMsQ0FDbEYsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLEdBQUcsZUFBZSxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRCxRQUFRLENBQUMsYUFBcUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLGFBQXFCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0YifQ==