@replyke/express
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
24 lines (23 loc) • 882 B
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.rateLimiter = void 0;
const express_rate_limit_1 = __importDefault(require("express-rate-limit"));
const ms_1 = __importDefault(require("ms"));
const rateLimiter = (window, max, message) => {
const windowMs = (0, ms_1.default)(window); // Convert human-readable time to milliseconds
if (!windowMs) {
throw new Error(`Invalid time format: ${window}`);
}
return (0, express_rate_limit_1.default)({
windowMs,
max,
message: message ?? "Too many attempts, please try again shortly",
skip: (req) => {
return req.isMaster || req.isService;
},
});
};
exports.rateLimiter = rateLimiter;