summaryrefslogtreecommitdiff
path: root/src/misc/cache.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/misc/cache.ts')
-rw-r--r--src/misc/cache.ts43
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;
- }
-}