(userId: string)
| 185 | const RATE_LIMIT_INTERVAL = 60000; // Interval in milliseconds (1 minute) |
| 186 | |
| 187 | export const rateLimit = (userId: string): boolean => { |
| 188 | const now = new Date(); |
| 189 | const userLimiter = userRateLimits.get(userId) ?? { timestamps: [] }; |
| 190 | |
| 191 | userLimiter.timestamps = userLimiter.timestamps.filter( |
| 192 | (timestamp) => now.getTime() - timestamp.getTime() < RATE_LIMIT_INTERVAL, |
| 193 | ); |
| 194 | |
| 195 | if (userLimiter.timestamps.length >= RATE_LIMIT_COUNT) { |
| 196 | return false; // Rate limit exceeded |
| 197 | } |
| 198 | |
| 199 | userLimiter.timestamps.push(now); |
| 200 | userRateLimits.set(userId, userLimiter); |
| 201 | return true; |
| 202 | }; |
| 203 | |
| 204 | export const getUpdatedUrl = ( |
| 205 | path: string, |
no test coverage detected