ccashfrontend/views/node_modules/express-validator/lib/legacy-runner.js
2021-06-18 09:20:09 +10:00

47 lines
No EOL
1.5 KiB
JavaScript

const _ = require('lodash');
const selectFields = require('../utils/select-fields');
const utils = require('./utils');
module.exports = function(contexts, req) {
_(contexts)
.filter(context => !context.ran)
.flatMap(context => {
return _(selectFields(req, context))
.map(field => ({ field, context }))
.groupBy(pair => pair.field.path)
.map(pairs => pairs[0])
.value();
})
.forEach(pairs => {
const { field, context } = pairs;
context.validators.map(validatorCfg => {
const result = validatorCfg.validator(
validatorCfg.custom ? field.value : utils.toString(field.value),
...validatorCfg.options
);
const errorObj = {
location: field.location,
value: field.value,
param: utils.formatParamOutput(field.path),
msg: utils.replaceArgs(
validatorCfg.message || context.message || 'Invalid value',
[field.value, ...validatorCfg.options]
)
};
if (result && result.then) {
req._asyncValidationErrors.push(result.then(() => {
validatorCfg.negated && req._validationErrors.push(errorObj);
}, () => {
!validatorCfg.negated && req._validationErrors.push(errorObj);
}));
} else if ((!validatorCfg.negated && !result) || (validatorCfg.negated && result)) {
req._validationErrors.push(errorObj);
}
});
context.ran = true;
});
};