"use strict"; const defaultValue = require("default-value"); const normalizeRules = require("@validatem/normalize-rules"); const matchValidationError = require("@validatem/match-validation-error"); const validationResult = require("@validatem/validation-result"); const composeRules = require("./compose-rules"); module.exports = function applyValidators(value, rules, context = {}) { let normalizedRules = normalizeRules(rules, { normalizeObjects: true }); let validator = composeRules.compose(normalizedRules); let { errors, newValue } = validator(value, context); // NOTE: We mutate the error here, because Error objects are not safely cloneable for (let error of errors) { if (matchValidationError(error) && error.value == null) { error.value = value; } } return validationResult({ errors: errors, newValue: defaultValue(newValue, value) }); };