first commit
This commit is contained in:
259
frontend/node_modules/@rc-component/async-validator/lib/util.js
generated
vendored
Normal file
259
frontend/node_modules/@rc-component/async-validator/lib/util.js
generated
vendored
Normal file
@@ -0,0 +1,259 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.AsyncValidationError = void 0;
|
||||
exports.asyncMap = asyncMap;
|
||||
exports.complementError = complementError;
|
||||
exports.convertFieldsError = convertFieldsError;
|
||||
exports.deepMerge = deepMerge;
|
||||
exports.format = format;
|
||||
exports.isEmptyObject = isEmptyObject;
|
||||
exports.isEmptyValue = isEmptyValue;
|
||||
exports.warning = void 0;
|
||||
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
||||
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
||||
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
||||
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
||||
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
||||
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
||||
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
||||
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
||||
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
||||
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
||||
/* eslint no-console:0 */
|
||||
|
||||
var formatRegExp = /%[sdj%]/g;
|
||||
var warning = exports.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') {
|
||||
exports.warning = 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);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
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;
|
||||
}
|
||||
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' || type === 'tel';
|
||||
}
|
||||
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;
|
||||
}
|
||||
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, (0, _toConsumableArray2.default)(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, (0, _toConsumableArray2.default)(objArr[k] || []));
|
||||
});
|
||||
return ret;
|
||||
}
|
||||
var AsyncValidationError = exports.AsyncValidationError = /*#__PURE__*/function (_Error) {
|
||||
(0, _inherits2.default)(AsyncValidationError, _Error);
|
||||
var _super = (0, _createSuper2.default)(AsyncValidationError);
|
||||
function AsyncValidationError(errors, fields) {
|
||||
var _this;
|
||||
(0, _classCallCheck2.default)(this, AsyncValidationError);
|
||||
_this = _super.call(this, 'Async Validation Error');
|
||||
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "errors", void 0);
|
||||
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fields", void 0);
|
||||
_this.errors = errors;
|
||||
_this.fields = fields;
|
||||
return _this;
|
||||
}
|
||||
return (0, _createClass2.default)(AsyncValidationError);
|
||||
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
|
||||
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;
|
||||
}
|
||||
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
|
||||
};
|
||||
};
|
||||
}
|
||||
function deepMerge(target, source) {
|
||||
if (source) {
|
||||
for (var s in source) {
|
||||
if (source.hasOwnProperty(s)) {
|
||||
var value = source[s];
|
||||
if ((0, _typeof2.default)(value) === 'object' && (0, _typeof2.default)(target[s]) === 'object') {
|
||||
target[s] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, target[s]), value);
|
||||
} else {
|
||||
target[s] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return target;
|
||||
}
|
||||
Reference in New Issue
Block a user