import rateLimit from 'express-rate-limit' // General rate limiter export const rateLimiter = rateLimit({ windowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS || '900000'), // 15 minutes max: parseInt(process.env.RATE_LIMIT_MAX_REQUESTS || '100'), // limit each IP to 100 requests per windowMs message: { success: false, error: 'Too many requests, please try again later', code: 'RATE_LIMIT_EXCEEDED' }, standardHeaders: true, legacyHeaders: false, }) // Strict rate limiter for auth endpoints export const authRateLimiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes max: 5, // limit each IP to 5 requests per windowMs message: { success: false, error: 'Too many authentication attempts, please try again later', code: 'AUTH_RATE_LIMIT_EXCEEDED' }, standardHeaders: true, legacyHeaders: false, }) // Message rate limiter export const messageRateLimiter = rateLimit({ windowMs: 60 * 1000, // 1 minute max: 30, // limit each IP to 30 messages per minute message: { success: false, error: 'Too many messages, please slow down', code: 'MESSAGE_RATE_LIMIT_EXCEEDED' }, standardHeaders: true, legacyHeaders: false, }) // File upload rate limiter export const uploadRateLimiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes max: 10, // limit each IP to 10 uploads per 15 minutes message: { success: false, error: 'Too many file uploads, please try again later', code: 'UPLOAD_RATE_LIMIT_EXCEEDED' }, standardHeaders: true, legacyHeaders: false, })