{"version":3,"file":"index.mjs","sources":["../../../../node_modules/async-validator/dist-web/index.js"],"sourcesContent":["function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n\n  _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _construct(Parent, args, Class) {\n  if (_isNativeReflectConstruct()) {\n    _construct = Reflect.construct;\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) _setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n\n  return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n  _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !_isNativeFunction(Class)) return Class;\n\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n\n      _cache.set(Class, Wrapper);\n    }\n\n    function Wrapper() {\n      return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n    }\n\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return _setPrototypeOf(Wrapper, Class);\n  };\n\n  return _wrapNativeSuper(Class);\n}\n\n/* eslint no-console:0 */\nvar formatRegExp = /%[sdj%]/g;\nvar warning = function warning() {}; // don't print warning message when in production env or node runtime\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n  warning = function warning(type, errors) {\n    if (typeof console !== 'undefined' && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {\n      if (errors.every(function (e) {\n        return typeof e === 'string';\n      })) {\n        console.warn(type, errors);\n      }\n    }\n  };\n}\n\nfunction convertFieldsError(errors) {\n  if (!errors || !errors.length) return null;\n  var fields = {};\n  errors.forEach(function (error) {\n    var field = error.field;\n    fields[field] = fields[field] || [];\n    fields[field].push(error);\n  });\n  return fields;\n}\nfunction format(template) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  var i = 0;\n  var len = args.length;\n\n  if (typeof template === 'function') {\n    return template.apply(null, args);\n  }\n\n  if (typeof template === 'string') {\n    var str = template.replace(formatRegExp, function (x) {\n      if (x === '%%') {\n        return '%';\n      }\n\n      if (i >= len) {\n        return x;\n      }\n\n      switch (x) {\n        case '%s':\n          return String(args[i++]);\n\n        case '%d':\n          return Number(args[i++]);\n\n        case '%j':\n          try {\n            return JSON.stringify(args[i++]);\n          } catch (_) {\n            return '[Circular]';\n          }\n\n          break;\n\n        default:\n          return x;\n      }\n    });\n    return str;\n  }\n\n  return template;\n}\n\nfunction isNativeStringType(type) {\n  return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';\n}\n\nfunction isEmptyValue(value, type) {\n  if (value === undefined || value === null) {\n    return true;\n  }\n\n  if (type === 'array' && Array.isArray(value) && !value.length) {\n    return true;\n  }\n\n  if (isNativeStringType(type) && typeof value === 'string' && !value) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n  var results = [];\n  var total = 0;\n  var arrLength = arr.length;\n\n  function count(errors) {\n    results.push.apply(results, errors || []);\n    total++;\n\n    if (total === arrLength) {\n      callback(results);\n    }\n  }\n\n  arr.forEach(function (a) {\n    func(a, count);\n  });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n  var index = 0;\n  var arrLength = arr.length;\n\n  function next(errors) {\n    if (errors && errors.length) {\n      callback(errors);\n      return;\n    }\n\n    var original = index;\n    index = index + 1;\n\n    if (original < arrLength) {\n      func(arr[original], next);\n    } else {\n      callback([]);\n    }\n  }\n\n  next([]);\n}\n\nfunction flattenObjArr(objArr) {\n  var ret = [];\n  Object.keys(objArr).forEach(function (k) {\n    ret.push.apply(ret, objArr[k] || []);\n  });\n  return ret;\n}\n\nvar AsyncValidationError = /*#__PURE__*/function (_Error) {\n  _inheritsLoose(AsyncValidationError, _Error);\n\n  function AsyncValidationError(errors, fields) {\n    var _this;\n\n    _this = _Error.call(this, 'Async Validation Error') || this;\n    _this.errors = errors;\n    _this.fields = fields;\n    return _this;\n  }\n\n  return AsyncValidationError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nfunction asyncMap(objArr, option, func, callback, source) {\n  if (option.first) {\n    var _pending = new Promise(function (resolve, reject) {\n      var next = function next(errors) {\n        callback(errors);\n        return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);\n      };\n\n      var flattenArr = flattenObjArr(objArr);\n      asyncSerialArray(flattenArr, func, next);\n    });\n\n    _pending[\"catch\"](function (e) {\n      return e;\n    });\n\n    return _pending;\n  }\n\n  var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];\n  var objArrKeys = Object.keys(objArr);\n  var objArrLength = objArrKeys.length;\n  var total = 0;\n  var results = [];\n  var pending = new Promise(function (resolve, reject) {\n    var next = function next(errors) {\n      results.push.apply(results, errors);\n      total++;\n\n      if (total === objArrLength) {\n        callback(results);\n        return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);\n      }\n    };\n\n    if (!objArrKeys.length) {\n      callback(results);\n      resolve(source);\n    }\n\n    objArrKeys.forEach(function (key) {\n      var arr = objArr[key];\n\n      if (firstFields.indexOf(key) !== -1) {\n        asyncSerialArray(arr, func, next);\n      } else {\n        asyncParallelArray(arr, func, next);\n      }\n    });\n  });\n  pending[\"catch\"](function (e) {\n    return e;\n  });\n  return pending;\n}\n\nfunction isErrorObj(obj) {\n  return !!(obj && obj.message !== undefined);\n}\n\nfunction getValue(value, path) {\n  var v = value;\n\n  for (var i = 0; i < path.length; i++) {\n    if (v == undefined) {\n      return v;\n    }\n\n    v = v[path[i]];\n  }\n\n  return v;\n}\n\nfunction complementError(rule, source) {\n  return function (oe) {\n    var fieldValue;\n\n    if (rule.fullFields) {\n      fieldValue = getValue(source, rule.fullFields);\n    } else {\n      fieldValue = source[oe.field || rule.fullField];\n    }\n\n    if (isErrorObj(oe)) {\n      oe.field = oe.field || rule.fullField;\n      oe.fieldValue = fieldValue;\n      return oe;\n    }\n\n    return {\n      message: typeof oe === 'function' ? oe() : oe,\n      fieldValue: fieldValue,\n      field: oe.field || rule.fullField\n    };\n  };\n}\nfunction deepMerge(target, source) {\n  if (source) {\n    for (var s in source) {\n      if (source.hasOwnProperty(s)) {\n        var value = source[s];\n\n        if (typeof value === 'object' && typeof target[s] === 'object') {\n          target[s] = _extends({}, target[s], value);\n        } else {\n          target[s] = value;\n        }\n      }\n    }\n  }\n\n  return target;\n}\n\nvar required$1 = function required(rule, value, source, errors, options, type) {\n  if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {\n    errors.push(format(options.messages.required, rule.fullField));\n  }\n};\n\n/**\n *  Rule for validating whitespace.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param source The source object being validated.\n *  @param errors An array of errors that this rule may add\n *  validation errors to.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\n\nvar whitespace = function whitespace(rule, value, source, errors, options) {\n  if (/^\\s+$/.test(value) || value === '') {\n    errors.push(format(options.messages.whitespace, rule.fullField));\n  }\n};\n\n/* eslint max-len:0 */\n\nvar pattern$2 = {\n  // http://emailregex.com/\n  email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n  url: new RegExp(\"^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$\", 'i'),\n  hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\nvar types = {\n  integer: function integer(value) {\n    return types.number(value) && parseInt(value, 10) === value;\n  },\n  \"float\": function float(value) {\n    return types.number(value) && !types.integer(value);\n  },\n  array: function array(value) {\n    return Array.isArray(value);\n  },\n  regexp: function regexp(value) {\n    if (value instanceof RegExp) {\n      return true;\n    }\n\n    try {\n      return !!new RegExp(value);\n    } catch (e) {\n      return false;\n    }\n  },\n  date: function date(value) {\n    return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime());\n  },\n  number: function number(value) {\n    if (isNaN(value)) {\n      return false;\n    }\n\n    return typeof value === 'number';\n  },\n  object: function object(value) {\n    return typeof value === 'object' && !types.array(value);\n  },\n  method: function method(value) {\n    return typeof value === 'function';\n  },\n  email: function email(value) {\n    return typeof value === 'string' && value.length <= 320 && !!value.match(pattern$2.email);\n  },\n  url: function url(value) {\n    return typeof value === 'string' && value.length <= 2048 && !!value.match(pattern$2.url);\n  },\n  hex: function hex(value) {\n    return typeof value === 'string' && !!value.match(pattern$2.hex);\n  }\n};\n\nvar type$1 = function type(rule, value, source, errors, options) {\n  if (rule.required && value === undefined) {\n    required$1(rule, value, source, errors, options);\n    return;\n  }\n\n  var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n  var ruleType = rule.type;\n\n  if (custom.indexOf(ruleType) > -1) {\n    if (!types[ruleType](value)) {\n      errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n    } // straight typeof check\n\n  } else if (ruleType && typeof value !== rule.type) {\n    errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n  }\n};\n\nvar range = function range(rule, value, source, errors, options) {\n  var len = typeof rule.len === 'number';\n  var min = typeof rule.min === 'number';\n  var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字（补充平面Supplementary Plane）\n\n  var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n  var val = value;\n  var key = null;\n  var num = typeof value === 'number';\n  var str = typeof value === 'string';\n  var arr = Array.isArray(value);\n\n  if (num) {\n    key = 'number';\n  } else if (str) {\n    key = 'string';\n  } else if (arr) {\n    key = 'array';\n  } // if the value is not of a supported type for range validation\n  // the validation rule rule should use the\n  // type property to also test for a particular type\n\n\n  if (!key) {\n    return false;\n  }\n\n  if (arr) {\n    val = value.length;\n  }\n\n  if (str) {\n    // 处理码点大于U+010000的文字length属性不准确的bug，如\"𠮷𠮷𠮷\".lenght !== 3\n    val = value.replace(spRegexp, '_').length;\n  }\n\n  if (len) {\n    if (val !== rule.len) {\n      errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n    }\n  } else if (min && !max && val < rule.min) {\n    errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n  } else if (max && !min && val > rule.max) {\n    errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n  } else if (min && max && (val < rule.min || val > rule.max)) {\n    errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n  }\n};\n\nvar ENUM$1 = 'enum';\n\nvar enumerable$1 = function enumerable(rule, value, source, errors, options) {\n  rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];\n\n  if (rule[ENUM$1].indexOf(value) === -1) {\n    errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(', ')));\n  }\n};\n\nvar pattern$1 = function pattern(rule, value, source, errors, options) {\n  if (rule.pattern) {\n    if (rule.pattern instanceof RegExp) {\n      // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n      // flag is accidentally set to `true`, which in a validation scenario\n      // is not necessary and the result might be misleading\n      rule.pattern.lastIndex = 0;\n\n      if (!rule.pattern.test(value)) {\n        errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n      }\n    } else if (typeof rule.pattern === 'string') {\n      var _pattern = new RegExp(rule.pattern);\n\n      if (!_pattern.test(value)) {\n        errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n      }\n    }\n  }\n};\n\nvar rules = {\n  required: required$1,\n  whitespace: whitespace,\n  type: type$1,\n  range: range,\n  \"enum\": enumerable$1,\n  pattern: pattern$1\n};\n\nvar string = function string(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value, 'string') && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options, 'string');\n\n    if (!isEmptyValue(value, 'string')) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n      rules.pattern(rule, value, source, errors, options);\n\n      if (rule.whitespace === true) {\n        rules.whitespace(rule, value, source, errors, options);\n      }\n    }\n  }\n\n  callback(errors);\n};\n\nvar method = function method(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar number = function number(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (value === '') {\n      value = undefined;\n    }\n\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar _boolean = function _boolean(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar regexp = function regexp(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (!isEmptyValue(value)) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar integer = function integer(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar floatFn = function floatFn(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar array = function array(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if ((value === undefined || value === null) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options, 'array');\n\n    if (value !== undefined && value !== null) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar object = function object(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar ENUM = 'enum';\n\nvar enumerable = function enumerable(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (value !== undefined) {\n      rules[ENUM](rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar pattern = function pattern(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value, 'string') && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (!isEmptyValue(value, 'string')) {\n      rules.pattern(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar date = function date(rule, value, callback, source, options) {\n  // console.log('integer rule called %j', rule);\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); // console.log('validate on %s value', value);\n\n  if (validate) {\n    if (isEmptyValue(value, 'date') && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n\n    if (!isEmptyValue(value, 'date')) {\n      var dateObject;\n\n      if (value instanceof Date) {\n        dateObject = value;\n      } else {\n        dateObject = new Date(value);\n      }\n\n      rules.type(rule, dateObject, source, errors, options);\n\n      if (dateObject) {\n        rules.range(rule, dateObject.getTime(), source, errors, options);\n      }\n    }\n  }\n\n  callback(errors);\n};\n\nvar required = function required(rule, value, callback, source, options) {\n  var errors = [];\n  var type = Array.isArray(value) ? 'array' : typeof value;\n  rules.required(rule, value, source, errors, options, type);\n  callback(errors);\n};\n\nvar type = function type(rule, value, callback, source, options) {\n  var ruleType = rule.type;\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value, ruleType) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options, ruleType);\n\n    if (!isEmptyValue(value, ruleType)) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n\n  callback(errors);\n};\n\nvar any = function any(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n\n    rules.required(rule, value, source, errors, options);\n  }\n\n  callback(errors);\n};\n\nvar validators = {\n  string: string,\n  method: method,\n  number: number,\n  \"boolean\": _boolean,\n  regexp: regexp,\n  integer: integer,\n  \"float\": floatFn,\n  array: array,\n  object: object,\n  \"enum\": enumerable,\n  pattern: pattern,\n  date: date,\n  url: type,\n  hex: type,\n  email: type,\n  required: required,\n  any: any\n};\n\nfunction newMessages() {\n  return {\n    \"default\": 'Validation error on field %s',\n    required: '%s is required',\n    \"enum\": '%s must be one of %s',\n    whitespace: '%s cannot be empty',\n    date: {\n      format: '%s date %s is invalid for format %s',\n      parse: '%s date could not be parsed, %s is invalid ',\n      invalid: '%s date %s is invalid'\n    },\n    types: {\n      string: '%s is not a %s',\n      method: '%s is not a %s (function)',\n      array: '%s is not an %s',\n      object: '%s is not an %s',\n      number: '%s is not a %s',\n      date: '%s is not a %s',\n      \"boolean\": '%s is not a %s',\n      integer: '%s is not an %s',\n      \"float\": '%s is not a %s',\n      regexp: '%s is not a valid %s',\n      email: '%s is not a valid %s',\n      url: '%s is not a valid %s',\n      hex: '%s is not a valid %s'\n    },\n    string: {\n      len: '%s must be exactly %s characters',\n      min: '%s must be at least %s characters',\n      max: '%s cannot be longer than %s characters',\n      range: '%s must be between %s and %s characters'\n    },\n    number: {\n      len: '%s must equal %s',\n      min: '%s cannot be less than %s',\n      max: '%s cannot be greater than %s',\n      range: '%s must be between %s and %s'\n    },\n    array: {\n      len: '%s must be exactly %s in length',\n      min: '%s cannot be less than %s in length',\n      max: '%s cannot be greater than %s in length',\n      range: '%s must be between %s and %s in length'\n    },\n    pattern: {\n      mismatch: '%s value %s does not match pattern %s'\n    },\n    clone: function clone() {\n      var cloned = JSON.parse(JSON.stringify(this));\n      cloned.clone = this.clone;\n      return cloned;\n    }\n  };\n}\nvar messages = newMessages();\n\n/**\n *  Encapsulates a validation schema.\n *\n *  @param descriptor An object declaring validation rules\n *  for this schema.\n */\n\nvar Schema = /*#__PURE__*/function () {\n  // ========================= Static =========================\n  // ======================== Instance ========================\n  function Schema(descriptor) {\n    this.rules = null;\n    this._messages = messages;\n    this.define(descriptor);\n  }\n\n  var _proto = Schema.prototype;\n\n  _proto.define = function define(rules) {\n    var _this = this;\n\n    if (!rules) {\n      throw new Error('Cannot configure a schema with no rules');\n    }\n\n    if (typeof rules !== 'object' || Array.isArray(rules)) {\n      throw new Error('Rules must be an object');\n    }\n\n    this.rules = {};\n    Object.keys(rules).forEach(function (name) {\n      var item = rules[name];\n      _this.rules[name] = Array.isArray(item) ? item : [item];\n    });\n  };\n\n  _proto.messages = function messages(_messages) {\n    if (_messages) {\n      this._messages = deepMerge(newMessages(), _messages);\n    }\n\n    return this._messages;\n  };\n\n  _proto.validate = function validate(source_, o, oc) {\n    var _this2 = this;\n\n    if (o === void 0) {\n      o = {};\n    }\n\n    if (oc === void 0) {\n      oc = function oc() {};\n    }\n\n    var source = source_;\n    var options = o;\n    var callback = oc;\n\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    if (!this.rules || Object.keys(this.rules).length === 0) {\n      if (callback) {\n        callback(null, source);\n      }\n\n      return Promise.resolve(source);\n    }\n\n    function complete(results) {\n      var errors = [];\n      var fields = {};\n\n      function add(e) {\n        if (Array.isArray(e)) {\n          var _errors;\n\n          errors = (_errors = errors).concat.apply(_errors, e);\n        } else {\n          errors.push(e);\n        }\n      }\n\n      for (var i = 0; i < results.length; i++) {\n        add(results[i]);\n      }\n\n      if (!errors.length) {\n        callback(null, source);\n      } else {\n        fields = convertFieldsError(errors);\n        callback(errors, fields);\n      }\n    }\n\n    if (options.messages) {\n      var messages$1 = this.messages();\n\n      if (messages$1 === messages) {\n        messages$1 = newMessages();\n      }\n\n      deepMerge(messages$1, options.messages);\n      options.messages = messages$1;\n    } else {\n      options.messages = this.messages();\n    }\n\n    var series = {};\n    var keys = options.keys || Object.keys(this.rules);\n    keys.forEach(function (z) {\n      var arr = _this2.rules[z];\n      var value = source[z];\n      arr.forEach(function (r) {\n        var rule = r;\n\n        if (typeof rule.transform === 'function') {\n          if (source === source_) {\n            source = _extends({}, source);\n          }\n\n          value = source[z] = rule.transform(value);\n        }\n\n        if (typeof rule === 'function') {\n          rule = {\n            validator: rule\n          };\n        } else {\n          rule = _extends({}, rule);\n        } // Fill validator. Skip if nothing need to validate\n\n\n        rule.validator = _this2.getValidationMethod(rule);\n\n        if (!rule.validator) {\n          return;\n        }\n\n        rule.field = z;\n        rule.fullField = rule.fullField || z;\n        rule.type = _this2.getType(rule);\n        series[z] = series[z] || [];\n        series[z].push({\n          rule: rule,\n          value: value,\n          source: source,\n          field: z\n        });\n      });\n    });\n    var errorFields = {};\n    return asyncMap(series, options, function (data, doIt) {\n      var rule = data.rule;\n      var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField === 'object');\n      deep = deep && (rule.required || !rule.required && data.value);\n      rule.field = data.field;\n\n      function addFullField(key, schema) {\n        return _extends({}, schema, {\n          fullField: rule.fullField + \".\" + key,\n          fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key]\n        });\n      }\n\n      function cb(e) {\n        if (e === void 0) {\n          e = [];\n        }\n\n        var errorList = Array.isArray(e) ? e : [e];\n\n        if (!options.suppressWarning && errorList.length) {\n          Schema.warning('async-validator:', errorList);\n        }\n\n        if (errorList.length && rule.message !== undefined) {\n          errorList = [].concat(rule.message);\n        } // Fill error info\n\n\n        var filledErrors = errorList.map(complementError(rule, source));\n\n        if (options.first && filledErrors.length) {\n          errorFields[rule.field] = 1;\n          return doIt(filledErrors);\n        }\n\n        if (!deep) {\n          doIt(filledErrors);\n        } else {\n          // if rule is required but the target object\n          // does not exist fail at the rule level and don't\n          // go deeper\n          if (rule.required && !data.value) {\n            if (rule.message !== undefined) {\n              filledErrors = [].concat(rule.message).map(complementError(rule, source));\n            } else if (options.error) {\n              filledErrors = [options.error(rule, format(options.messages.required, rule.field))];\n            }\n\n            return doIt(filledErrors);\n          }\n\n          var fieldsSchema = {};\n\n          if (rule.defaultField) {\n            Object.keys(data.value).map(function (key) {\n              fieldsSchema[key] = rule.defaultField;\n            });\n          }\n\n          fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);\n          var paredFieldsSchema = {};\n          Object.keys(fieldsSchema).forEach(function (field) {\n            var fieldSchema = fieldsSchema[field];\n            var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];\n            paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));\n          });\n          var schema = new Schema(paredFieldsSchema);\n          schema.messages(options.messages);\n\n          if (data.rule.options) {\n            data.rule.options.messages = options.messages;\n            data.rule.options.error = options.error;\n          }\n\n          schema.validate(data.value, data.rule.options || options, function (errs) {\n            var finalErrors = [];\n\n            if (filledErrors && filledErrors.length) {\n              finalErrors.push.apply(finalErrors, filledErrors);\n            }\n\n            if (errs && errs.length) {\n              finalErrors.push.apply(finalErrors, errs);\n            }\n\n            doIt(finalErrors.length ? finalErrors : null);\n          });\n        }\n      }\n\n      var res;\n\n      if (rule.asyncValidator) {\n        res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n      } else if (rule.validator) {\n        try {\n          res = rule.validator(rule, data.value, cb, data.source, options);\n        } catch (error) {\n          cb(error.message);\n        }\n\n        if (res === true) {\n          cb();\n        } else if (res === false) {\n          cb(typeof rule.message === 'function' ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + \" fails\");\n        } else if (res instanceof Array) {\n          cb(res);\n        } else if (res instanceof Error) {\n          cb(res.message);\n        }\n      }\n\n      if (res && res.then) {\n        res.then(function () {\n          return cb();\n        }, function (e) {\n          return cb(e);\n        });\n      }\n    }, function (results) {\n      complete(results);\n    }, source);\n  };\n\n  _proto.getType = function getType(rule) {\n    if (rule.type === undefined && rule.pattern instanceof RegExp) {\n      rule.type = 'pattern';\n    }\n\n    if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n      throw new Error(format('Unknown rule type %s', rule.type));\n    }\n\n    return rule.type || 'string';\n  };\n\n  _proto.getValidationMethod = function getValidationMethod(rule) {\n    if (typeof rule.validator === 'function') {\n      return rule.validator;\n    }\n\n    var keys = Object.keys(rule);\n    var messageIndex = keys.indexOf('message');\n\n    if (messageIndex !== -1) {\n      keys.splice(messageIndex, 1);\n    }\n\n    if (keys.length === 1 && keys[0] === 'required') {\n      return validators.required;\n    }\n\n    return validators[this.getType(rule)] || undefined;\n  };\n\n  return Schema;\n}();\n\nSchema.register = function register(type, validator) {\n  if (typeof validator !== 'function') {\n    throw new Error('Cannot register a validator by type, validator is not a function');\n  }\n\n  validators[type] = validator;\n};\n\nSchema.warning = warning;\nSchema.messages = messages;\nSchema.validators = validators;\n\nexport { Schema as default };\n//# sourceMappingURL=index.js.map\n"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_construct","Parent","args","Class","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","e","a","push","instance","Function","bind","_wrapNativeSuper","_cache","Map","undefined","_isNativeFunction","fn","toString","indexOf","TypeError","has","get","set","Wrapper","constructor","create","value","enumerable","writable","configurable","formatRegExp","warning","convertFieldsError","errors","fields","forEach","error","field","format","template","_len","Array","_key","len","replace","x","String","Number","JSON","stringify","_","isEmptyValue","type","isArray","isNativeStringType","asyncSerialArray","arr","func","callback","index","arrLength","next","original","process","env","NODE_ENV","window","document","console","warn","ASYNC_VALIDATOR_NO_WARNING","every","AsyncValidationError","_Error","_this","_inheritsLoose","subClass","superClass","Error","asyncMap","objArr","option","first","_pending","Promise","resolve","reject","flattenArr","flattenObjArr","ret","keys","k","firstFields","objArrKeys","objArrLength","total","results","pending","asyncParallelArray","count","complementError","rule","oe","fieldValue","fullFields","getValue","path","v","fullField","isErrorObj","obj","message","deepMerge","s","required$1","required","options","messages","pattern$2","email","url","RegExp","hex","types","integer","number","parseInt","float","array","regexp","date","getTime","getMonth","getYear","isNaN","object","method","match","ENUM$1","rules","whitespace","test","ruleType","range","min","max","val","num","str","enum","join","pattern","lastIndex","mismatch","validators","string","boolean","_boolean","floatFn","dateObject","Date","any","newMessages","default","parse","invalid","clone","cloned","Schema","descriptor","_messages","define","_proto","name","item","validate","source_","oc","_this2","messages$1","series","z","r","transform","validator","getValidationMethod","getType","errorFields","data","doIt","res","deep","defaultField","addFullField","schema","concat","cb","errorList","suppressWarning","filledErrors","map","fieldsSchema","paredFieldsSchema","fieldSchema","fieldSchemaList","errs","finalErrors","asyncValidator","then","complete","_errors","messageIndex","splice","register"],"mappings":"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","x_google_ignoreList":[0]}