UNPKG

1.83 kBJavaScriptView Raw
1import { getIn, setInMutable } from "@radial/helpers";
2var setIn = setInMutable;
3var ValidationException = /** @class */ (function () {
4 function ValidationException(errors) {
5 this.errors = errors;
6 }
7 return ValidationException;
8}());
9export { ValidationException };
10function validateValue(value, path, validators, data) {
11 var result = validators.map(function (validator) {
12 var isNil = value === undefined || value === null || value === NaN;
13 if (isNil && validator['allowNil'] !== true)
14 return Promise.resolve();
15 return Promise.resolve(validator(value, path, data, {}));
16 });
17 return Promise.all(result).then(function (errors) {
18 return errors.filter(function (error) {
19 return error !== undefined && error !== null;
20 });
21 }).then(function (err) {
22 return err.length == 0 ? Promise.resolve() : Promise.reject(err);
23 });
24}
25export function validate(data, rules) {
26 if (data === void 0) { data = {}; }
27 if (rules === void 0) { rules = {}; }
28 if (Array.isArray(rules)) {
29 return validateValue(data, '', rules, data).then(function () {
30 return null;
31 })
32 .catch(function (err) {
33 return Promise.reject(new ValidationException(err));
34 });
35 }
36 var errors = {};
37 var results = Object.keys(rules).map(function (key) {
38 var val = getIn(data, key);
39 return validateValue(val, key, rules[key], data).catch(function (err) {
40 setIn(errors, key, err);
41 });
42 });
43 return new Promise(function (resolve, reject) {
44 Promise.all(results).then(function () {
45 if (Object.keys(errors).length == 0) {
46 return resolve();
47 }
48 reject(new ValidationException(errors));
49 });
50 });
51}