UNPKG

963 BJavaScriptView Raw
1const _ = require('lodash');
2const validator = require('validator');
3
4const { extraSanitizers } = require('../utils/constants');
5const selectFields = require('../check/select-fields');
6
7module.exports = (fields, locations) => {
8 const sanitizers = [];
9 fields = Array.isArray(fields) ? fields : [fields];
10
11 const middleware = (req, res, next) => {
12 const instances = selectFields(req, { fields, locations, sanitizers });
13 instances.forEach(instance => {
14 _.set(req[instance.location], instance.path, instance.value);
15 });
16
17 next();
18 };
19
20 Object.keys(validator)
21 .filter(methodName => methodName.startsWith('to') || extraSanitizers.includes(methodName))
22 .forEach(methodName => {
23 const sanitizerFn = validator[methodName];
24 middleware[methodName] = (...options) => {
25 sanitizers.push({
26 sanitizer: sanitizerFn,
27 options
28 });
29 return middleware;
30 };
31 });
32
33 return middleware;
34};
\No newline at end of file