import { browser } from "$app/environment"; type Entry = { value: unknown; expires: number }; const store = new Map(); // browser only, a server map would leak viewer-scoped data across requests export async function cached(key: string, ttlMs: number, fn: () => Promise): Promise { if (!browser) return fn(); const hit = store.get(key); if (hit && hit.expires > Date.now()) return hit.value as T; try { const value = await fn(); store.set(key, { value, expires: Date.now() + ttlMs }); return value; } catch (cause) { store.delete(key); throw cause; } } export function clear(): void { store.clear(); }