UNPKG

@vnmfify/core

Version:

```shell npm i @vnmfify/core -S ```

89 lines (69 loc) 2.14 kB
import _isString from "lodash/isString"; import _isError from "lodash/isError"; import _isBoolean from "lodash/isBoolean"; import _isFunction from "lodash/isFunction"; import { isPromise } from "../utils/promisify"; function isEmptyValue(value) { if (Array.isArray(value)) { return !value.length; } if (value === 0) { return false; } return !value; } function getRuleMessage(value, rule) { var { message } = rule; if (_isFunction(message)) { return message(value, rule); } return message; } function getSyncRule(value, rule) { if (rule.required && isEmptyValue(value)) { return Promise.resolve(getRuleMessage(value, rule)); } if (rule.pattern && !rule.pattern.test(String(value))) { return Promise.resolve(getRuleMessage(value, rule)); } } function getValidatorRule(value, rule) { function obtainInvalidMessage(error) { if (_isBoolean(error) && !error) { return getRuleMessage(value, rule); } if (_isError(error)) { return error.message; } return error; } return new Promise(resolve => { var _rule$validator; var promise = (_rule$validator = rule.validator) === null || _rule$validator === void 0 ? void 0 : _rule$validator.call(rule, value, rule); if (isPromise(promise)) { promise.then(obtainInvalidMessage).catch(obtainInvalidMessage).then(resolve); } else { resolve(obtainInvalidMessage(promise)); } }); } function validateRule(value, rule) { var _getSyncRule; return (_getSyncRule = getSyncRule(value, rule)) !== null && _getSyncRule !== void 0 ? _getSyncRule : getValidatorRule(value, rule); } export function validateRules(value, rules) { return rules.reduce((promise, rule) => promise.then(errors => { if (rule.formatter) { value = rule.formatter(value, rule); } return validateRule(value, rule).then(error => { if (_isString(error)) { errors.push(error); } return errors; }); }), Promise.resolve([])); } //# sourceMappingURL=form.rule.js.map