Files
qrcode-inventory/src/lib/rateLimit.ts
2025-08-05 09:20:41 -04:00

23 lines
735 B
TypeScript

// src/lib/rateLimit.ts
const rateLimits = new Map<string, { count: number; resetTime: number }>()
export function rateLimit(
ip: string,
limit: number = 100,
windowMs: number = 60000 // 1 minute
): { success: boolean; remaining: number; resetTime: number } {
const now = Date.now()
const record = rateLimits.get(ip)
if (!record || now > record.resetTime) {
rateLimits.set(ip, { count: 1, resetTime: now + windowMs })
return { success: true, remaining: limit - 1, resetTime: now + windowMs }
}
if (record.count >= limit) {
return { success: false, remaining: 0, resetTime: record.resetTime }
}
record.count++
return { success: true, remaining: limit - record.count, resetTime: record.resetTime }
}