Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. import express = require("express");
  2. declare namespace RateLimit {
  3. type IncrCallback = (error: any, hit: number, resetTime: Date) => void;
  4. interface Store {
  5. incr(key: string, cb: IncrCallback): void;
  6. decrement(key: string): void;
  7. resetAll(): void;
  8. resetKey(key: string): void;
  9. }
  10. interface Options {
  11. windowMs: number;
  12. max: number | ((req: express.Request, res: express.Response) => number);
  13. message: string;
  14. statusCode: number;
  15. headers: boolean;
  16. skipFailedRequests: boolean;
  17. skipSuccessfulRequests: boolean;
  18. keyGenerator: (req: express.Request, res: express.Response) => string;
  19. skip: (req: express.Request, res: express.Response) => boolean;
  20. handler: express.RequestHandler;
  21. onLimitReached: (req: express.Request, res: express.Response, optionsUsed: Options) => void;
  22. store: Store;
  23. }
  24. interface AugmentedRequest extends express.Request {
  25. rateLimit: {
  26. limit: number;
  27. current: number;
  28. remaining: number;
  29. resetTime: Date;
  30. };
  31. }
  32. }
  33. declare type RateLimit = express.RequestHandler & {
  34. resetKey: RateLimit.Store["resetKey"];
  35. resetIp: RateLimit.Store["resetKey"];
  36. };
  37. declare function RateLimit(incomingOptions: Partial<RateLimit.Options>): RateLimit;
  38. export = RateLimit;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement