"use strict"; 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); // FIXME: Document this option! let finalContext = (process.env.VALIDATEM_NO_HEURISTICS === "1") ? { ...context, __validatemNoHeuristics: true } : context; let { errors, newValue } = validator(value, finalContext); // 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: (newValue !== undefined) ? newValue : value }); };