diff options
Diffstat (limited to 'src/misc/cache.ts')
| -rw-r--r-- | src/misc/cache.ts | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/src/misc/cache.ts b/src/misc/cache.ts deleted file mode 100644 index 71fbbd8a4c..0000000000 --- a/src/misc/cache.ts +++ /dev/null @@ -1,43 +0,0 @@ -export class Cache<T> { - private cache: Map<string | null, { date: number; value: T; }>; - private lifetime: number; - - constructor(lifetime: Cache<never>['lifetime']) { - this.cache = new Map(); - this.lifetime = lifetime; - } - - public set(key: string | null, value: T): void { - this.cache.set(key, { - date: Date.now(), - value - }); - } - - public get(key: string | null): T | undefined { - const cached = this.cache.get(key); - if (cached == null) return undefined; - if ((Date.now() - cached.date) > this.lifetime) { - this.cache.delete(key); - return undefined; - } - return cached.value; - } - - public delete(key: string | null) { - this.cache.delete(key); - } - - public async fetch(key: string | null, fetcher: () => Promise<T>): Promise<T> { - const cachedValue = this.get(key); - if (cachedValue !== undefined) { - // Cache HIT - return cachedValue; - } - - // Cache MISS - const value = await fetcher(); - this.set(key, value); - return value; - } -} |