UNPKG

composite-validation

Version:
74 lines 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("./types"); const composite_validation_options_1 = require("./operators/composite-validation-options"); /** * Validation API helpers. */ class Utils { /** * Replaces tokens ({0}, {1}, etc.) in message respectively with args values and returns transformed string. * @param message Tokenized message. * @param args Values for substitution. */ static evaluateMessage(message, args) { if (!args || !args.length) { return message; } const output = message.replace(/\{\$(\d)\}/, match => { const res = /\d+/.exec(match); if (!res) { return match; } const numb = res[0]; if (!numb) { return match; } const parsed = parseInt(numb, 10); if (isNaN(parsed)) { return match; } if (args[parsed] == null) { return match; } return args[parsed] + ''; }); return output; } /** * Returns instance of error object. * @param error Error string or object. * @param isRequired Value is required. * @param args Values for substitution using token replacer. */ static getErrorObject(error, isRequired = false, args) { if (typeof error === 'string') { if (args && args.length) { error = Utils.evaluateMessage(error, args); } return new types_1.ValueValidationError(error, isRequired); } if (error instanceof types_1.ValueValidationError) { return error; } return new types_1.ValueValidationError(composite_validation_options_1.CompositeValidationOptions.errorMatch('invalid'), isRequired); } /** * Returns instance of value wrapper. * @param value Inner value. * @param isRequired Value is required. */ static getWrappedValue(value, isRequired = false) { return new types_1.WrappedValue(value, isRequired); } /** * If argument is wrapped value (instance of ValueWrapper) returns inner value. * Else returns argument value. * @param value Value wrapper or JS basic type value. */ static tryGetValue(obj) { return obj instanceof types_1.WrappedValue ? obj.value : obj; } } exports.Utils = Utils; //# sourceMappingURL=utils.js.map