import { CacheStorage, StorageValue } from './types'; export class MemoryStorage implements CacheStorage { private readonly storage: Map = new Map(); get = async (key: string): Promise => { const value = this.storage.get(key); if (!value) { return { state: 'empty' }; } if (value.state === 'cached' && value.createdAt + value.ttl < Date.now()) { this.remove(key); return { state: 'empty' }; } return value; }; set = async (key: string, value: StorageValue): Promise => { this.storage.set(key, value); }; remove = async (key: string): Promise => { this.storage.delete(key); }; }