@daiso-tech/core
Version:
The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.
26 lines (25 loc) • 948 B
TypeScript
/**
* @module RateLimiter
*/
import { type MiddlewareFn } from "../../../middleware/contracts/_module.js";
import { type IRateLimiterFactoryBase } from "../../../rate-limiter/contracts/_module.js";
import { type ErrorPolicy, type Invokable } from "../../../utilities/_module.js";
/**
* @group Middleware
*/
export type RateLimiterMiddlewareSettings<TParameters extends Array<unknown> = Array<unknown>> = ErrorPolicy & {
/**
* @default
* ```ts
* (...args) => JSON.stringify(args)
* ```
*/
key?: Invokable<TParameters, string>;
onlyError?: boolean;
limit: number;
};
/**
* IMPORT_PATH: `"@daiso-tech/core/rate-limiter/middlewares"`
* @group Middleware
*/
export declare function rateLimiterMiddlewareFactory(rateLimiterFactory: IRateLimiterFactoryBase): <TParameters extends Array<unknown>, TReturn>(settings: RateLimiterMiddlewareSettings<TParameters>) => MiddlewareFn<TParameters, Promise<TReturn>>;