ditto/src/middleware/rateLimitMiddleware.ts
2024-06-18 15:24:44 -05:00

15 lines
507 B
TypeScript

import { MiddlewareHandler } from '@hono/hono';
import { rateLimiter } from 'hono-rate-limiter';
/**
* Rate limit middleware for Hono, based on [`hono-rate-limiter`](https://github.com/rhinobase/hono-rate-limiter).
*/
export function rateLimitMiddleware(limit: number, windowMs: number): MiddlewareHandler {
// @ts-ignore Mismatched hono versions.
return rateLimiter({
limit,
windowMs,
skip: (c) => !c.req.header('x-real-ip'),
keyGenerator: (c) => c.req.header('x-real-ip')!,
});
}