@inv2/common
Version:
A common module for v2
42 lines (41 loc) • 2.09 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
// We could also use rate-limiter-flexible
const express_rate_limit_1 = require("express-rate-limit");
const rate_limit_redis_1 = require("rate-limit-redis");
function start(client) {
return __awaiter(this, void 0, void 0, function* () {
// Create a `node-redis` client
// const client = createClient({
// // ... (see https://github.com/redis/node-redis/blob/master/docs/client-configuration.md)
// socket: {
// reconnectStrategy: retries => Math.min(retries * 50, 1000)
// }
// });
// // Then connect to the Redis server
// await client.connect();
// Create and use the rate limiter
return (0, express_rate_limit_1.rateLimit)({
// Rate limiter configuration
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100, // Limit each IP to 100 requests per `window` (here, per 15 minutes)
standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers
legacyHeaders: false, // Disable the `X-RateLimit-*` headers
// Redis store configuration
store: new rate_limit_redis_1.RedisStore({
sendCommand: (...args) => client.sendCommand(args),
}),
});
});
}
// const limiter = start()
// export { limiter };