Bin
2025-12-16 9e0b2ba2c317b1a86212f24cbae3195ad1f3dbfa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
export class Cacheable {
  private cache = new Map<string, any>();
 
  createKey(...args: any[]) {
    if (args.length === 1) {
      return args[0].toString();
    }
 
    return args.join(":");
  }
 
  clearCache() {
    this.cache.clear();
  }
 
  cached(key: number | string | Array<string | number>, fn: () => any) {
    const cacheKey = this.createKey(key);
 
    if (this.cache.has(cacheKey)) {
      return this.cache.get(cacheKey);
    }
 
    const result = fn();
 
    this.cache.set(cacheKey, result);
 
    return result;
  }
}