import { defineMiddleware } from "astro:middleware";
import { createRateLimitMiddleware } from "./middleware/rate-limit";
// Define tiers for different routes
const apiLimiter = createRateLimitMiddleware("api");
const authLimiter = createRateLimitMiddleware("auth");
export const onRequest = defineMiddleware(async (context, next) => {
const { request, url } = context;
// Apply rate limiting to API routes
if (url.pathname.startsWith("/api/")) {
// Use stricter auth limits for auth routes
if (url.pathname.startsWith("/api/auth")) {
const response = await authLimiter(request, context);
if (response) return response;
} else {
const response = await apiLimiter(request, context);
if (response) return response;
}
}
// Continue to next middleware/route
const response = await next();
return response;
});