UNPKG

tree-house

Version:

NodeJS utilities and handy helpers extending ExpressJS functionalities

52 lines (51 loc) 2.22 kB
"use strict"; 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;