rate-limiter-custom
Version:
A fast, customizable, and efficient rate-limiting middleware for Express in TypeScript.
21 lines (20 loc) • 818 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.rateLimiter = rateLimiter;
const slidingWindow_1 = require("./slidingWindow");
const fixedWindow_1 = require("./fixedWindow");
const leakyBucket_1 = require("./leakyBucket");
const tokenBucket_1 = require("./tokenBucket");
function rateLimiter(options) {
const algorithm = options.algo || "sliding"; // Default to sliding window
switch (algorithm) {
case "fixed":
return (0, fixedWindow_1.fixedWindowRateLimiter)(options);
case "token":
return (0, tokenBucket_1.tokenBucketRateLimiter)(options);
case "leaky":
return (0, leakyBucket_1.leakyBucketLimiter)(options);
default:
return (0, slidingWindow_1.slidingWindowRateLimiter)(options);
}
}