pummmp.fun/lib/rate-limit.ts
2026-07-04 12:49:09 -07:00

19 lines
534 B
TypeScript

const rateLimitMap = new Map<string, number[]>();
export function checkRateLimit(identifier: string, action: string, limit: number, windowMs: number): boolean {
const now = Date.now();
const key = `${identifier}:${action}`; // Make rate limits per-action
const timestamps = rateLimitMap.get(key) || [];
const windowStart = now - windowMs;
const recent = timestamps.filter(t => t > windowStart);
if (recent.length >= limit) {
return true;
}
recent.push(now);
rateLimitMap.set(key, recent);
return false;
}