tree-house
Version:
NodeJS utilities and handy helpers extending ExpressJS functionalities
52 lines (51 loc) • 2.22 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRateLimiter = exports.setBodyParser = exports.setBasicSecurity = void 0;
const cors = require("cors");
const helmet = require("helmet");
const bodyParser = require("body-parser");
const RateLimit = require("express-rate-limit");
const defaults = require("../config/app.config");
const redisStore = require('rate-limit-redis');
function setBasicSecurity(app, route, options = {}) {
app.use(route, helmet(Object.assign({}, defaults.helmetOptions, options.helmet)));
app.use(route, cors(Object.assign({}, defaults.corsOptions, options.cors)));
app.use((_req, res, next) => {
res.set('credentials', 'include');
next();
});
}
exports.setBasicSecurity = setBasicSecurity;
function setBodyParser(app, route, options = {}) {
const allOptions = Object.assign({}, defaults.bodyParserOptions, options);
if (allOptions.json)
app.use(route, bodyParser.json(allOptions.json));
if (allOptions.raw)
app.use(route, bodyParser.raw(allOptions.raw));
if (allOptions.text)
app.use(route, bodyParser.text(allOptions.text));
if (allOptions.urlEncoded)
app.use(route, bodyParser.urlencoded(allOptions.urlEncoded));
}
exports.setBodyParser = setBodyParser;
function getRateLimiter(options = {}) {
let store;
const allOptions = Object.assign({}, defaults.rateLimiterOptions, options);
if (allOptions.redis) {
store = new redisStore(allOptions.redis);
}
const { redis } = allOptions, rateOptions = __rest(allOptions, ["redis"]);
return RateLimit(Object.assign(Object.assign({}, rateOptions), { store }));
}
exports.getRateLimiter = getRateLimiter;