Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import express = require("express");
- declare namespace RateLimit {
- type IncrCallback = (error: any, hit: number, resetTime: Date) => void;
- interface Store {
- incr(key: string, cb: IncrCallback): void;
- decrement(key: string): void;
- resetAll(): void;
- resetKey(key: string): void;
- }
- interface Options {
- windowMs: number;
- max: number | ((req: express.Request, res: express.Response) => number);
- message: string;
- statusCode: number;
- headers: boolean;
- skipFailedRequests: boolean;
- skipSuccessfulRequests: boolean;
- keyGenerator: (req: express.Request, res: express.Response) => string;
- skip: (req: express.Request, res: express.Response) => boolean;
- handler: express.RequestHandler;
- onLimitReached: (req: express.Request, res: express.Response, optionsUsed: Options) => void;
- store: Store;
- }
- interface AugmentedRequest extends express.Request {
- rateLimit: {
- limit: number;
- current: number;
- remaining: number;
- resetTime: Date;
- };
- }
- }
- declare type RateLimit = express.RequestHandler & {
- resetKey: RateLimit.Store["resetKey"];
- resetIp: RateLimit.Store["resetKey"];
- };
- declare function RateLimit(incomingOptions: Partial<RateLimit.Options>): RateLimit;
- export = RateLimit;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement