| 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 runtimeif (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;}
 |