Skip to content

rill-js/rate-limit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rill
@rill/rate-limit
API stability Standard NPM version Downloads Gitter Chat

Rate limit middleware for Rill.

Uses Keyv for persistance. Supports caching in memory, mongodb, redis, sqllite, mysql and postgre.

Installation

npm install @rill/rate-limit

Example

app.js

const app = rill()
const limit = require("@rill/rate-limit")

// Setup the middleware. (1000 req/hr max)
app.use(limit({
  max: 1000,
  duration: '1 hour'
}))

Options

{
  /**
   * Key used for keyv namespace.
   */
  key: '@rill/rate-limit',
  /**
   * The maximum amount of requests from a user per period.
   */
  max: 2500,
  /**
   * The duration of a period. (in ms or as a string).
   */
  duration: '1 hour',
  /**
   * Overrride the identifier for the users (default is their ip addresss).
   */
  id: ctx => ctx.req.ip,
  /**
   * Passed to keyv, do not send this to client.
   * Mongo db example. (must have installed keyv-mongo).
   */
  cache: !process.brower && {
    uri: 'mongodb://user:pass@localhost:27017/dbname' // Default is in memory (see keyv uri).
  }
}

Contributions

  • Use npm test to run tests.

Please feel free to create a PR!

About

RIll middleware to rate-limit an API.

Resources

Stars

Watchers

Forks

Packages

No packages published