second commit

This commit is contained in:
2025-08-05 09:20:41 -04:00
parent 1755c28ecd
commit 21effd183b
105 changed files with 26041 additions and 0 deletions

23
src/lib/rateLimit.ts Normal file
View File

@ -0,0 +1,23 @@
// 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 }
}