rate-gate
v1.3.0
Published
Token-bucket rate limiter for TypeScript APIs. In-memory and Redis-compatible backends.
Downloads
132
Maintainers
Readme
rate-gate
Token-bucket rate limiter for TypeScript APIs.
Install
npm install rate-gateUsage
import { RateLimiter } from 'rate-gate';
const limiter = new RateLimiter({ limit: 100, window: 60 }); // 100 req/min
// In Express middleware:
app.use(async (req, res, next) => {
const result = await limiter.check(req.ip);
res.set('X-RateLimit-Remaining', String(result.remaining));
if (!result.allowed) {
return res.status(429).json({ error: 'Too Many Requests', retryAfter: result.retryAfter });
}
next();
});Custom store (Redis, Upstash, etc.)
import { RateLimiter, type Store } from 'rate-gate';
class RedisStore implements Store {
async get(key) { /* ... */ }
async set(key, count, resetAt) { /* ... */ }
}
const limiter = new RateLimiter({ limit: 500, window: 60 }, new RedisStore());License
MIT © trysentinelagent
