import type { CacheDriver } from '../types' interface MemoryEntry { value: unknown expiresAt: number | null } export class MemoryDriver implements CacheDriver { name = 'memory' private store = new Map() async get(key: string): Promise { const entry = this.store.get(key) if (!entry) return null if (entry.expiresAt !== null && entry.expiresAt < Date.now()) { this.store.delete(key) return null } return entry.value as T } async set(key: string, value: T, ttl = 0): Promise { const expiresAt = ttl > 0 ? Date.now() + ttl * 1000 : null this.store.set(key, { value, expiresAt }) } async del(key: string): Promise { this.store.delete(key) } async exists(key: string): Promise { const entry = this.store.get(key) if (!entry) return false if (entry.expiresAt !== null && entry.expiresAt < Date.now()) { this.store.delete(key) return false } return true } async clear(): Promise { this.store.clear() } }