UNPKG

shineout

Version:

Shein 前端组件库

124 lines (96 loc) 3.41 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _Datum = _interopRequireDefault(require("../../Datum")); var _errors = require("../errors"); var _strings = require("../strings"); var _flat = require("../flat"); var _range = _interopRequireDefault(require("./range")); var _rangeLength = _interopRequireDefault(require("./rangeLength")); var _required = _interopRequireDefault(require("./required")); var _type = _interopRequireDefault(require("./type")); var _regExp = _interopRequireDefault(require("./regExp")); function getRule(rules, props) { if (props === void 0) { props = {}; } if (typeof rules === 'function') { if (rules.isInnerValidator) rules = rules();else return rules; } if (typeof props === 'string') props = { type: props }; var _rules = rules, _rules$type = _rules.type, type = _rules$type === void 0 ? props.type : _rules$type, message = _rules.message, regExp = _rules.regExp, func = _rules.func, other = (0, _objectWithoutPropertiesLoose2.default)(_rules, ["type", "message", "regExp", "func"]); props = Object.assign({}, props, other); props.message = typeof message === 'function' ? message(props) : (0, _strings.substitute)(message, props); if (func) return function (value, formData, callback) { return func(value, formData, callback, props); }; if (other.required !== undefined) return (0, _required.default)({ message: props.message, required: !!props.required }); if (regExp) return (0, _regExp.default)(regExp, { message: props.message }); if (other.min !== undefined || other.max !== undefined) { if (type === 'number' || type === 'integer') { return (0, _range.default)({ message: props.message, min: other.min, max: other.max }); } return (0, _rangeLength.default)({ message: props.message, min: other.min, max: other.max }); } if (type) return (0, _type.default)(type, props.message); var err = new Error("Rule " + JSON.stringify(rules) + " is not valid."); console.error(err); throw err; } var validate = function validate(value, formdata, rules, props) { return new Promise(function (resolve, reject) { var $rules = (0, _flat.flattenArray)(rules); var rule = $rules.shift(); if (rule === undefined) { resolve(true); return; } if (!rule) { validate(value, formdata, $rules, props).then(resolve, reject); return; } var callback = function callback(result) { if (result !== true) { reject((0, _errors.wrapFormError)(result)); return; } validate(value, formdata, $rules, props).then(resolve, reject); }; var fn = getRule(rule, props); var val = value; if (fn === rule && (value instanceof _Datum.default.List || value instanceof _Datum.default.Form)) { val = value.getValue(); } var cb = fn(val, formdata, callback); if (cb && cb.then) { cb.then(callback.bind(null, true)).catch(function (e) { reject((0, _errors.wrapFormError)(e)); }); } }); }; var _default = validate; exports.default = _default;