Files
kochwas/src/lib/server/ai/rate-limit.ts
2026-04-21 10:41:16 +02:00

22 lines
587 B
TypeScript

export type RateLimiter = { check: (key: string) => boolean };
export function createRateLimiter(opts: {
windowMs: number;
max: number;
}): RateLimiter {
const store = new Map<string, { count: number; resetAt: number }>();
return {
check(key: string): boolean {
const now = Date.now();
const entry = store.get(key);
if (!entry || entry.resetAt <= now) {
store.set(key, { count: 1, resetAt: now + opts.windowMs });
return true;
}
if (entry.count >= opts.max) return false;
entry.count += 1;
return true;
}
};
}