Spaces:
Runtime error
Runtime error
| // Simple sliding window rate limiter | |
| const windows = new Map(); | |
| export function rateLimiter(key, maxRequests, windowMs) { | |
| const now = Date.now(); | |
| if (!windows.has(key)) { | |
| windows.set(key, { count: 1, resetAt: now + windowMs }); | |
| return true; | |
| } | |
| const entry = windows.get(key); | |
| if (now > entry.resetAt) { | |
| entry.count = 1; | |
| entry.resetAt = now + windowMs; | |
| return true; | |
| } | |
| if (entry.count >= maxRequests) return false; | |
| entry.count++; | |
| return true; | |
| } | |
| // Cleanup every 5 minutes | |
| setInterval(() => { | |
| const now = Date.now(); | |
| for (const [k, v] of windows.entries()) { | |
| if (now > v.resetAt) windows.delete(k); | |
| } | |
| }, 5 * 60 * 1000); | |