UNPKG

@txdfe/at

Version:

一个设计体系组件库

148 lines (143 loc) 6.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _util = require("./util"); var _validator = require("./validator"); var _messages2 = _interopRequireDefault(require("./messages")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* eslint-disable callback-return */ function noop() {} var Schema = /*#__PURE__*/function () { function Schema(rules) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; _classCallCheck(this, Schema); this._rules = rules; this._options = _objectSpread(_objectSpread({}, options), {}, { messages: _objectSpread(_objectSpread({}, _messages2["default"]), options.messages) }); this.complete = []; } return _createClass(Schema, [{ key: "abort", value: function abort() { for (var i = 0; i < this.complete.length; i++) { this.complete[i] = noop; } } }, { key: "messages", value: function messages(_messages) { this._options.messages = _extends({}, this._options.messages, _messages); } }, { key: "validate", value: function validate(source, callback) { var _this = this; if (!this._rules || Object.keys(this._rules).length === 0) { if (callback) { callback(null); } return; } // serialize rules var arr; var value; var series = {}; var names = Object.keys(this._rules); names.forEach(function (name) { arr = _this._rules[name]; value = source[name]; if (!Array.isArray(arr)) { arr = [arr]; } arr.forEach(function (rule) { rule.validator = (0, _validator.getValidationMethod)(rule); rule.field = name; if (!rule.validator) { return; } series[name] = series[name] || []; series[name].push({ rule: rule, value: value, source: source, field: name }); }); }); if (Object.keys(series).length === 0) { callback(null); } // callback function for all rules return function complete(results) { var i; var field; var errors = []; var fields = {}; function add(e) { if (Array.isArray(e)) { errors = errors.concat(e); } else { errors.push(e); } } for (i = 0; i < results.length; i++) { add(results[i]); } if (!errors.length) { errors = null; fields = null; } else { for (i = 0; i < errors.length; i++) { field = errors[i].field; fields[field] = fields[field] || []; fields[field].push(errors[i]); } } callback(errors, fields); } this.complete.push(complete); var idx = this.complete.length; // async validate (0, _util.asyncMap)(series, this._options, function (data, doIt) { var rule = data.rule; rule.field = data.field; function cb() { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var errors = e; if (!Array.isArray(errors)) { errors = [errors]; } // 自定义错误 if (errors.length && rule.message) { errors = [].concat(rule.message); } errors = errors.map((0, _util.complementError)(rule)); doIt(errors); } var res = rule.validator(rule, data.value, cb, _this._options); if (res && res.then) { res.then(function () { return cb(); }, function (e) { return cb(e); }); } }, function (results) { _this.complete[idx - 1](results); }); } }]); }(); var _default = exports["default"] = Schema;