const attempts = new Map() export function checkRateLimit( key: string, maxAttempts = 5, windowMs = 60000, ): { allowed: boolean; remaining: number; resetAt: number } { const now = Date.now() const entry = attempts.get(key) if (!entry || now > entry.resetAt) { attempts.set(key, { count: 1, resetAt: now + windowMs }) return { allowed: true, remaining: maxAttempts - 1, resetAt: now + windowMs } } entry.count++ if (entry.count > maxAttempts) { return { allowed: false, remaining: 0, resetAt: entry.resetAt } } return { allowed: true, remaining: maxAttempts - entry.count, resetAt: entry.resetAt } } // Cleanup stale entries every 5 minutes setInterval(() => { const now = Date.now() for (const [key, entry] of attempts) { if (now > entry.resetAt) attempts.delete(key) } }, 300000)