0.2.0 • Published 7 months ago

nanolimit v0.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

Nanorate

Ultra-fast, zero-dependency rate limiting for Node.js.

Nanorate Speed Chart

Features

  • Zero dependencies
  • Extremely high performance (>1M ops/sec)
  • Minimal memory footprint
  • Efficient garbage collection
  • Express middleware support
  • Customizable windows and limits
  • Rate limit headers

Installation

npm install nanorate

Usage

Basic Usage

const NanoRate = require("nanorate");

const limiter = new NanoRate({
  windowMs: 60000, // 1 minute
  maxRequests: 100, // limit each key to 100 requests per window
  errorMessage: "Too many requests",
  headers: true, // Send rate limit headers
});

// Check rate limit
const result = limiter.check("user-123");
if (result.status === "error") {
  console.log("Rate limit exceeded");
}

Express Middleware

const express = require("express");
const NanoRate = require("nanorate");

const app = express();

app.use(
  new NanoRate({
    windowMs: 900000, // 15 minutes
    maxRequests: 100, // limit each IP to 100 requests per window
  }).middleware()
);

Performance

Run the benchmark:

node benchmark.js

Typical results:

  • Single key: ~2M ops/sec
  • Multiple keys: ~1.5M ops/sec
  • Memory usage: <1MB for 10k active keys

Configuration

OptionTypeDefaultDescription
windowMsnumber61440Time window in milliseconds
maxRequestsnumber128Max requests per window
errorMessagestring'Rate limit exceeded'Error message
headersbooleantrueEnable rate limit headers

License

MIT

0.2.0

7 months ago

0.1.0

7 months ago