@jfungus/ratelimit
v0.0.2
Published
Framework-agnostic rate limiting library with sliding window algorithm
Maintainers
Readme
@jfungus/ratelimit
Framework-agnostic rate limiting library with sliding window algorithm. Zero dependencies.
Installation
npm install @jfungus/ratelimitUsage
import { RateLimiter, MemoryStore } from "@jfungus/ratelimit";
const store = new MemoryStore();
store.init(60 * 1000); // 1 minute window
const limiter = new RateLimiter({
limit: 100,
windowMs: 60 * 1000, // 1 minute
store,
});
// Check rate limit
const result = await limiter.check("user-123");
if (!result.allowed) {
console.log(`Rate limited. Retry after ${result.retryAfter}ms`);
}Algorithms
Sliding Window (default)
Cloudflare-style weighted sliding window for smoother rate limiting:
const limiter = new RateLimiter({
algorithm: "sliding-window",
limit: 100,
windowMs: 60 * 1000, // 1 minute
store,
});Fixed Window
Simple counter that resets at fixed intervals:
const limiter = new RateLimiter({
algorithm: "fixed-window",
limit: 100,
windowMs: 60 * 1000, // 1 minute
store,
});Framework Middleware
For framework-specific middleware, see:
@jfungus/ratelimit-hono- Hono@jfungus/ratelimit-express- Express@jfungus/ratelimit-h3- H3/Nitro@jfungus/ratelimit-nuxt- Nuxt
Documentation
License
MIT
