123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- import _extends from 'babel-runtime/helpers/extends';
- import _typeof from 'babel-runtime/helpers/typeof';
- var formatRegExp = /%[sdj%]/g;
- export var warning = function warning() {};
- // don't print warning message when in production env or node runtime
- if (process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {
- warning = function warning(type, errors) {
- if (typeof console !== 'undefined' && console.warn) {
- if (errors.every(function (e) {
- return typeof e === 'string';
- })) {
- console.warn(type, errors);
- }
- }
- };
- }
- export function format() {
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- var i = 1;
- var f = args[0];
- var len = args.length;
- if (typeof f === 'function') {
- return f.apply(null, args.slice(1));
- }
- if (typeof f === 'string') {
- var str = String(f).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;
- }
- });
- for (var arg = args[i]; i < len; arg = args[++i]) {
- str += ' ' + arg;
- }
- return str;
- }
- return f;
- }
- function isNativeStringType(type) {
- return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || 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, 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, objArr[k]);
- });
- return ret;
- }
- export function asyncMap(objArr, option, func, callback) {
- if (option.first) {
- var flattenArr = flattenObjArr(objArr);
- return asyncSerialArray(flattenArr, func, callback);
- }
- var firstFields = option.firstFields || [];
- if (firstFields === true) {
- firstFields = Object.keys(objArr);
- }
- var objArrKeys = Object.keys(objArr);
- var objArrLength = objArrKeys.length;
- var total = 0;
- var results = [];
- var next = function next(errors) {
- results.push.apply(results, errors);
- total++;
- if (total === objArrLength) {
- callback(results);
- }
- };
- objArrKeys.forEach(function (key) {
- var arr = objArr[key];
- if (firstFields.indexOf(key) !== -1) {
- asyncSerialArray(arr, func, next);
- } else {
- asyncParallelArray(arr, func, next);
- }
- });
- }
- export function complementError(rule) {
- return function (oe) {
- if (oe && oe.message) {
- oe.field = oe.field || rule.fullField;
- return oe;
- }
- return {
- message: oe,
- 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 === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(target[s]) === 'object') {
- target[s] = _extends({}, target[s], value);
- } else {
- target[s] = value;
- }
- }
- }
- }
- return target;
- }
|