import { Cacheable, ICache, MaybePromise } from './shared'; export class InMemoryCache { public enclosedCache: ICache = (function () { let cache: Record = {}; return { set(key: string, entry: T) { cache[key] = entry; }, get(key: string): MaybePromise { const cacheEntry = cache[key] as T; if (!cacheEntry) { return; } return cacheEntry; }, remove(key: string) { delete cache[key]; }, allKeys(): string[] { return Object.keys(cache); } }; })(); }