rateli
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

Installation

# Using npm
> npm install rateli
# Using yarn or pnpm
> yarn/pnpm add rateli

Usage

import it in a CommonJS project (type: commonjs or no type field in package.json) as follows:

const { rateLimit } = require("rateli");

Import it in a ESM project (type: module in package.json) as follows:

import { rateLimit } from "rateli";

Methods

rateLimit(config: Config) : Function

RateLimitBanHandler() : Function

Examples

import { rateLimit, RateLimitBanHandler } from "rateli";

const config = {
  windowMs: 60000,             // Time window in milliseconds (1 min)
  max: 5,                      // Max number of requests allowed in a time window
  maxReputation: 1000,         // Max number of reputations allowed (auto insert to blacklist)
  message: 'Too Many Requests',
  headers: true,               // Include the rate limit in the response headers

  // Generate a unique key based on the client's IP or x-api-key header
  keyGenerator: (req: Request) => string
}

const limiter = rateLimit(config);

// Apply the rate limiting middleware to all requests
app.use(limiter);
app.use(RateLimitBanHandler()) // when reputations (of IP) exceed limits, server returns 503

License

Apache 2.0

Readme

Keywords

Package Sidebar

Install

npm i rateli

Weekly Downloads

0

Version

1.0.5

License

Apache License 2.0

Unpacked Size

21.2 kB

Total Files

6

Last publish

Collaborators

  • haikel