react-application-core
Version:
A react-based application core for the business applications.
77 lines • 3.2 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ValidatorUtils = void 0;
var R = require("ramda");
var type_1 = require("./type");
var definition_1 = require("../definition");
var multi_field_1 = require("./multi-field");
var object_1 = require("./object");
var password_1 = require("./password");
/**
* @stable [22.01.2021]
* @param value
*/
var notEmptyMultiEntityChecker = function (value) {
return object_1.ObjectUtils.isObjectNotEmpty(multi_field_1.MultiFieldUtils.multiFieldValueAsEntities(value));
};
/**
* @stable [22.01.2021]
*/
var ValidationRules = (_a = {},
_a[definition_1.ValidationRulesEnum.EMAIL] = type_1.TypeUtils.isEmail,
_a[definition_1.ValidationRulesEnum.EMAIL_OPTIONAL] = type_1.TypeUtils.isOptionalEmail,
_a[definition_1.ValidationRulesEnum.NOT_EMPTY_MULTI_ENTITY] = notEmptyMultiEntityChecker,
_a[definition_1.ValidationRulesEnum.NOT_EMPTY_OBJECT] = type_1.TypeUtils.isNotEmptyObject,
_a[definition_1.ValidationRulesEnum.NOT_EMPTY_STRING] = type_1.TypeUtils.isNotEmptyString,
_a[definition_1.ValidationRulesEnum.POSITIVE_NUMBER] = type_1.TypeUtils.isPositiveNumber,
_a[definition_1.ValidationRulesEnum.POSITIVE_NUMBER_LIKE] = type_1.TypeUtils.isPositiveNumberLike,
_a[definition_1.ValidationRulesEnum.POSITIVE_OPTIONAL_NUMBER_LIKE] = type_1.TypeUtils.isPositiveOptionalNumberLike,
_a[definition_1.ValidationRulesEnum.POSITIVE_OR_NEGATIVE_NUMBER] = type_1.TypeUtils.isNumber,
_a[definition_1.ValidationRulesEnum.POSITIVE_OR_NEGATIVE_NUMBER_LIKE] = type_1.TypeUtils.isPositiveOrNegativeNumberLike,
_a[definition_1.ValidationRulesEnum.POSITIVE_OR_NEGATIVE_OPTIONAL_NUMBER_LIKE] = type_1.TypeUtils.isPositiveOrNegativeOptionalNumberLike,
_a[definition_1.ValidationRulesEnum.STRING] = type_1.TypeUtils.isString,
_a[definition_1.ValidationRulesEnum.STRONG_OPTIONAL_PASSWORD] = password_1.PasswordUtils.isStrongOptional,
_a[definition_1.ValidationRulesEnum.STRONG_PASSWORD] = password_1.PasswordUtils.isStrong,
_a);
/**
* @stable [22.01.2021]
* @param payloads
* @param checkedObject
*/
var validate = function (payloads, checkedObject) {
var data = Object.create(null);
var valid = true;
R.forEachObjIndexed(function (rules, fieldName) {
var result = Object.create(null);
data[fieldName] = result;
[].concat(rules)
.forEach(function (ruleId) {
var res = result[ruleId] = ValidationRules[ruleId](checkedObject[fieldName]);
valid = valid && res;
});
}, payloads);
return {
data: data,
valid: valid,
};
};
/**
* @stable [22.01.2021]
* @param rules
*/
var isValid = function (rules) {
return R.reduce(function (a, b) { return a && b; }, true, Object.values(rules));
};
/**
* @stable [22.01.2021]
*/
var ValidatorUtils = /** @class */ (function () {
function ValidatorUtils() {
}
ValidatorUtils.isValid = isValid;
ValidatorUtils.validate = validate;
return ValidatorUtils;
}());
exports.ValidatorUtils = ValidatorUtils;
//# sourceMappingURL=validator.js.map