Skip to main content
Module

x/value_schema/src/libs/adjust.es

simple, easy-to-use, and declarative input validator; supports Node.js, TypeScript, and Deno
Go to Latest
File
export default adjust;
import AdjusterBase from "./AdjusterBase";
/** * adjust multiple variables (as object) * @param {Object<string, *>} data * @param {Object<string, AdjusterBase>} constraints * @param {AdjusterBase.OnError} [onError] */function adjust(data, constraints, onError = AdjusterBase.onErrorDefault){ const result = {}; let hasError = false; for(const key of Object.keys(constraints)) { const adjustedValue = constraints[key].adjust(data[key], generateErrorHandler(key)); if(adjustedValue !== undefined) { result[key] = adjustedValue; } }
if(hasError) { onError(null); } return result;
/** * error handler generator (to avoid "no-loop-fun" error on eslint) * @param {string} key key */ function generateErrorHandler(key) { return (err) => { hasError = true;
err.key = key; return onError(err); }; }}