123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
- import _typeof from "@babel/runtime/helpers/esm/typeof";
- import _createClass from "@babel/runtime/helpers/esm/createClass";
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
- import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
- import _inherits from "@babel/runtime/helpers/esm/inherits";
- import _createSuper from "@babel/runtime/helpers/esm/createSuper";
- import _wrapNativeSuper from "@babel/runtime/helpers/esm/wrapNativeSuper";
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
- /* eslint no-console:0 */
- var formatRegExp = /%[sdj%]/g;
- export var warning = function warning() {};
- // don't print warning message when in production env or node runtime
- if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {
- warning = function warning(type, errors) {
- if (typeof console !== 'undefined' && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {
- if (errors.every(function (e) {
- return typeof e === 'string';
- })) {
- console.warn(type, errors);
- }
- }
- };
- }
- export function convertFieldsError(errors) {
- if (!errors || !errors.length) return null;
- var fields = {};
- errors.forEach(function (error) {
- var field = error.field;
- fields[field] = fields[field] || [];
- fields[field].push(error);
- });
- return fields;
- }
- export function format(template) {
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- args[_key - 1] = arguments[_key];
- }
- var i = 0;
- var len = args.length;
- if (typeof template === 'function') {
- // eslint-disable-next-line prefer-spread
- return template.apply(null, args);
- }
- if (typeof template === 'string') {
- var str = template.replace(formatRegExp, function (x) {
- if (x === '%%') {
- return '%';
- }
- if (i >= len) {
- return x;
- }
- switch (x) {
- case '%s':
- return String(args[i++]);
- case '%d':
- return Number(args[i++]);
- case '%j':
- try {
- return JSON.stringify(args[i++]);
- } catch (_) {
- return '[Circular]';
- }
- break;
- default:
- return x;
- }
- });
- return str;
- }
- return template;
- }
- function isNativeStringType(type) {
- return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';
- }
- export function isEmptyValue(value, type) {
- if (value === undefined || value === null) {
- return true;
- }
- if (type === 'array' && Array.isArray(value) && !value.length) {
- return true;
- }
- if (isNativeStringType(type) && typeof value === 'string' && !value) {
- return true;
- }
- return false;
- }
- export function isEmptyObject(obj) {
- return Object.keys(obj).length === 0;
- }
- function asyncParallelArray(arr, func, callback) {
- var results = [];
- var total = 0;
- var arrLength = arr.length;
- function count(errors) {
- results.push.apply(results, _toConsumableArray(errors || []));
- total++;
- if (total === arrLength) {
- callback(results);
- }
- }
- arr.forEach(function (a) {
- func(a, count);
- });
- }
- function asyncSerialArray(arr, func, callback) {
- var index = 0;
- var arrLength = arr.length;
- function next(errors) {
- if (errors && errors.length) {
- callback(errors);
- return;
- }
- var original = index;
- index = index + 1;
- if (original < arrLength) {
- func(arr[original], next);
- } else {
- callback([]);
- }
- }
- next([]);
- }
- function flattenObjArr(objArr) {
- var ret = [];
- Object.keys(objArr).forEach(function (k) {
- ret.push.apply(ret, _toConsumableArray(objArr[k] || []));
- });
- return ret;
- }
- export var AsyncValidationError = /*#__PURE__*/function (_Error) {
- _inherits(AsyncValidationError, _Error);
- var _super = _createSuper(AsyncValidationError);
- function AsyncValidationError(errors, fields) {
- var _this;
- _classCallCheck(this, AsyncValidationError);
- _this = _super.call(this, 'Async Validation Error');
- _defineProperty(_assertThisInitialized(_this), "errors", void 0);
- _defineProperty(_assertThisInitialized(_this), "fields", void 0);
- _this.errors = errors;
- _this.fields = fields;
- return _this;
- }
- return _createClass(AsyncValidationError);
- }( /*#__PURE__*/_wrapNativeSuper(Error));
- export function asyncMap(objArr, option, func, callback, source) {
- if (option.first) {
- var _pending = new Promise(function (resolve, reject) {
- var next = function next(errors) {
- callback(errors);
- return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);
- };
- var flattenArr = flattenObjArr(objArr);
- asyncSerialArray(flattenArr, func, next);
- });
- _pending.catch(function (e) {
- return e;
- });
- return _pending;
- }
- var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];
- var objArrKeys = Object.keys(objArr);
- var objArrLength = objArrKeys.length;
- var total = 0;
- var results = [];
- var pending = new Promise(function (resolve, reject) {
- var next = function next(errors) {
- // eslint-disable-next-line prefer-spread
- results.push.apply(results, errors);
- total++;
- if (total === objArrLength) {
- callback(results);
- return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);
- }
- };
- if (!objArrKeys.length) {
- callback(results);
- resolve(source);
- }
- objArrKeys.forEach(function (key) {
- var arr = objArr[key];
- if (firstFields.indexOf(key) !== -1) {
- asyncSerialArray(arr, func, next);
- } else {
- asyncParallelArray(arr, func, next);
- }
- });
- });
- pending.catch(function (e) {
- return e;
- });
- return pending;
- }
- function isErrorObj(obj) {
- return !!(obj && obj.message !== undefined);
- }
- function getValue(value, path) {
- var v = value;
- for (var i = 0; i < path.length; i++) {
- if (v == undefined) {
- return v;
- }
- v = v[path[i]];
- }
- return v;
- }
- export function complementError(rule, source) {
- return function (oe) {
- var fieldValue;
- if (rule.fullFields) {
- fieldValue = getValue(source, rule.fullFields);
- } else {
- fieldValue = source[oe.field || rule.fullField];
- }
- if (isErrorObj(oe)) {
- oe.field = oe.field || rule.fullField;
- oe.fieldValue = fieldValue;
- return oe;
- }
- return {
- message: typeof oe === 'function' ? oe() : oe,
- fieldValue: fieldValue,
- field: oe.field || rule.fullField
- };
- };
- }
- export function deepMerge(target, source) {
- if (source) {
- for (var s in source) {
- if (source.hasOwnProperty(s)) {
- var value = source[s];
- if (_typeof(value) === 'object' && _typeof(target[s]) === 'object') {
- target[s] = _objectSpread(_objectSpread({}, target[s]), value);
- } else {
- target[s] = value;
- }
- }
- }
- }
- return target;
- }
|