All files / src/cache cache-memory.ts

100% Statements 11/11
100% Branches 1/1
100% Functions 6/6
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 30 31 32 33 34 35          2x 11x 11x   11x   11x       7x   7x 3x     4x       5x       5x          
import { Cacheable, ICache } from './shared'
 
/**
 * Implementation of caching that uses in-memory storage
 * */
export class InMemoryCache {
  public enclosedCache: ICache = (function () {
    const cache: Record<string, unknown> = {}
 
    return {
      set<T = Cacheable>(key: string, entry: T) {
        cache[key] = entry
      },
 
      get<T = Cacheable>(key: string) {
        const cacheEntry = cache[key] as T
 
        if (!cacheEntry) {
          return
        }
 
        return cacheEntry
      },
 
      remove(key: string) {
        delete cache[key]
      },
 
      allKeys(): string[] {
        return Object.keys(cache)
      },
    }
  })()
}