You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							210 lines
						
					
					
						
							4.9 KiB
						
					
					
				
			
		
		
	
	
							210 lines
						
					
					
						
							4.9 KiB
						
					
					
				'use strict'; | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.warning = undefined; | 
						|
 | 
						|
var _extends2 = require('babel-runtime/helpers/extends'); | 
						|
 | 
						|
var _extends3 = _interopRequireDefault(_extends2); | 
						|
 | 
						|
var _typeof2 = require('babel-runtime/helpers/typeof'); | 
						|
 | 
						|
var _typeof3 = _interopRequireDefault(_typeof2); | 
						|
 | 
						|
exports.format = format; | 
						|
exports.isEmptyValue = isEmptyValue; | 
						|
exports.isEmptyObject = isEmptyObject; | 
						|
exports.asyncMap = asyncMap; | 
						|
exports.complementError = complementError; | 
						|
exports.deepMerge = deepMerge; | 
						|
 | 
						|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | 
						|
 | 
						|
var formatRegExp = /%[sdj%]/g; | 
						|
 | 
						|
var warning = exports.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') { | 
						|
  exports.warning = warning = function warning(type, errors) { | 
						|
    if (typeof console !== 'undefined' && console.warn) { | 
						|
      if (errors.every(function (e) { | 
						|
        return typeof e === 'string'; | 
						|
      })) { | 
						|
        console.warn(type, errors); | 
						|
      } | 
						|
    } | 
						|
  }; | 
						|
} | 
						|
 | 
						|
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'; | 
						|
} | 
						|
 | 
						|
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, 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; | 
						|
} | 
						|
 | 
						|
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); | 
						|
    } | 
						|
  }); | 
						|
} | 
						|
 | 
						|
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 | 
						|
    }; | 
						|
  }; | 
						|
} | 
						|
 | 
						|
function deepMerge(target, source) { | 
						|
  if (source) { | 
						|
    for (var s in source) { | 
						|
      if (source.hasOwnProperty(s)) { | 
						|
        var value = source[s]; | 
						|
        if ((typeof value === 'undefined' ? 'undefined' : (0, _typeof3['default'])(value)) === 'object' && (0, _typeof3['default'])(target[s]) === 'object') { | 
						|
          target[s] = (0, _extends3['default'])({}, target[s], value); | 
						|
        } else { | 
						|
          target[s] = value; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
  return target; | 
						|
} |