Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
123456789101112131415161718192021222324import { browser } from "$app/environment";
type Entry = { value: unknown; expires: number };const store = new Map<string, Entry>();
// browser only, a server map would leak viewer-scoped data across requestsexport async function cached<T>(key: string, ttlMs: number, fn: () => Promise<T>): Promise<T> { 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();}