const timers = new Map(); export const debounce = async (fn, delayMs) => { const timer = timers.get(fn); if (timer) { return timer.result; } const result = await fn(); timers.set(fn, { result }); setTimeout(() => { timers.delete(fn); }, delayMs); return result; }; export const delay = async (delayMs) => { await new Promise((resolve) => { setTimeout(resolve, delayMs); }); };