NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/async-validator/dist-web/index.js.map
2023-09-14 14:47:11 +08:00

1 line
76 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"index.js","sources":["../../src/util.js","../../src/rule/required.js","../../src/rule/whitespace.js","../../src/rule/type.js","../../src/rule/range.js","../../src/rule/enum.js","../../src/rule/pattern.js","../../src/rule/index.js","../../src/validator/string.js","../../src/validator/method.js","../../src/validator/number.js","../../src/validator/boolean.js","../../src/validator/regexp.js","../../src/validator/integer.js","../../src/validator/float.js","../../src/validator/array.js","../../src/validator/object.js","../../src/validator/enum.js","../../src/validator/pattern.js","../../src/validator/date.js","../../src/validator/required.js","../../src/validator/type.js","../../src/validator/any.js","../../src/validator/index.js","../../src/messages.js","../../src/index.js"],"sourcesContent":["/* eslint no-console:0 */\n\nconst formatRegExp = /%[sdj%]/g;\n\nexport let warning = () => {\n};\n\n// don't print warning message when in production env or node runtime\nif (\n typeof process !== 'undefined' &&\n process.env &&\n process.env.NODE_ENV !== 'production' &&\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n) {\n warning = (type, errors) => {\n if (typeof console !== 'undefined' && console.warn) {\n if (errors.every(e => typeof e === 'string')) {\n console.warn(type, errors);\n }\n }\n };\n}\n\nexport function convertFieldsError(errors) {\n if (!errors || !errors.length) return null;\n const fields = {};\n errors.forEach(error => {\n const field = error.field;\n fields[field] = fields[field] || [];\n fields[field].push(error);\n });\n return fields;\n}\n\nexport function format(...args) {\n let i = 1;\n const f = args[0];\n const len = args.length;\n if (typeof f === 'function') {\n return f.apply(null, args.slice(1));\n }\n if (typeof f === 'string') {\n let str = String(f).replace(formatRegExp, x => {\n if (x === '%%') {\n return '%';\n }\n if (i >= len) {\n return x;\n }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n break;\n default:\n return x;\n }\n });\n for (let arg = args[i]; i < len; arg = args[++i]) {\n str += ` ${arg}`;\n }\n return str;\n }\n return f;\n}\n\nfunction isNativeStringType(type) {\n return (\n type === 'string' ||\n type === 'url' ||\n type === 'hex' ||\n type === 'email' ||\n type === 'pattern'\n );\n}\n\nexport function isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n return false;\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n const results = [];\n let total = 0;\n const arrLength = arr.length;\n\n function count(errors) {\n results.push.apply(results, errors);\n total++;\n if (total === arrLength) {\n callback(results);\n }\n }\n\n arr.forEach(a => {\n func(a, count);\n });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n let index = 0;\n const arrLength = arr.length;\n\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n const original = index;\n index = index + 1;\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n\n next([]);\n}\n\nfunction flattenObjArr(objArr) {\n const ret = [];\n Object.keys(objArr).forEach(k => {\n ret.push.apply(ret, objArr[k]);\n });\n return ret;\n}\n\nexport class AsyncValidationError extends Error {\n constructor(errors, fields) {\n super('Async Validation Error');\n this.errors = errors;\n this.fields = fields;\n }\n}\n\nexport function asyncMap(objArr, option, func, callback) {\n if (option.first) {\n const pending = new Promise((resolve, reject) => {\n const next = errors => {\n callback(errors);\n return errors.length\n ? reject(new AsyncValidationError(\n errors,\n convertFieldsError(errors)\n ))\n : resolve();\n };\n const flattenArr = flattenObjArr(objArr);\n asyncSerialArray(flattenArr, func, next);\n });\n pending.catch(e => e);\n return pending;\n }\n let firstFields = option.firstFields || [];\n if (firstFields === true) {\n firstFields = Object.keys(objArr);\n }\n const objArrKeys = Object.keys(objArr);\n const objArrLength = objArrKeys.length;\n let total = 0;\n const results = [];\n const pending = new Promise((resolve, reject) => {\n const next = errors => {\n results.push.apply(results, errors);\n total++;\n if (total === objArrLength) {\n callback(results);\n return results.length\n ? reject(new AsyncValidationError(\n results,\n convertFieldsError(results)\n ))\n : resolve();\n }\n };\n if (!objArrKeys.length) {\n callback(results)\n resolve()\n }\n objArrKeys.forEach(key => {\n const arr = objArr[key];\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n });\n pending.catch(e => e);\n return pending;\n}\n\nexport function complementError(rule) {\n return oe => {\n if (oe && oe.message) {\n oe.field = oe.field || rule.fullField;\n return oe;\n }\n return {\n message: typeof oe === 'function' ? oe() : oe,\n field: oe.field || rule.fullField,\n };\n };\n}\n\nexport function deepMerge(target, source) {\n if (source) {\n for (const s in source) {\n if (source.hasOwnProperty(s)) {\n const value = source[s];\n if (typeof value === 'object' && typeof target[s] === 'object') {\n target[s] = {\n ...target[s],\n ...value,\n };\n } else {\n target[s] = value;\n }\n }\n }\n }\n return target;\n}\n","import * as util from '../util';\n\n/**\n * Rule for validating required fields.\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 */\nfunction required(rule, value, source, errors, options, type) {\n if (\n rule.required &&\n (!source.hasOwnProperty(rule.field) ||\n util.isEmptyValue(value, type || rule.type))\n ) {\n errors.push(util.format(options.messages.required, rule.fullField));\n }\n}\n\nexport default required;\n","import * as util from '../util';\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 */\nfunction whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(util.format(options.messages.whitespace, rule.fullField));\n }\n}\n\nexport default whitespace;\n","import * as util from '../util';\nimport required from './required';\n\n/* eslint max-len:0 */\n\nconst pattern = {\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]+\\.)+[a-zA-Z]{2,}))$/,\n url: new RegExp(\n '^(?!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]*)?$',\n 'i',\n ),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,\n};\n\nconst types = {\n integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n float(value) {\n return types.number(value) && !types.integer(value);\n },\n array(value) {\n return Array.isArray(value);\n },\n regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date(value) {\n return (\n typeof value.getTime === 'function' &&\n typeof value.getMonth === 'function' &&\n typeof value.getYear === 'function'\n );\n },\n number(value) {\n if (isNaN(value)) {\n return false;\n }\n return typeof value === 'number';\n },\n object(value) {\n return typeof value === 'object' && !types.array(value);\n },\n method(value) {\n return typeof value === 'function';\n },\n email(value) {\n return (\n typeof value === 'string' &&\n !!value.match(pattern.email) &&\n value.length < 255\n );\n },\n url(value) {\n return typeof value === 'string' && !!value.match(pattern.url);\n },\n hex(value) {\n return typeof value === 'string' && !!value.match(pattern.hex);\n },\n};\n\n/**\n * Rule for validating the type of a value.\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 */\nfunction type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n required(rule, value, source, errors, options);\n return;\n }\n const custom = [\n 'integer',\n 'float',\n 'array',\n 'regexp',\n 'object',\n 'method',\n 'email',\n 'number',\n 'date',\n 'url',\n 'hex',\n ];\n const ruleType = rule.type;\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(\n util.format(\n options.messages.types[ruleType],\n rule.fullField,\n rule.type,\n ),\n );\n }\n // straight typeof check\n } else if (ruleType && typeof value !== rule.type) {\n errors.push(\n util.format(options.messages.types[ruleType], rule.fullField, rule.type),\n );\n }\n}\n\nexport default type;\n","import * as util from '../util';\n\n/**\n * Rule for validating minimum and maximum allowed values.\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 */\nfunction range(rule, value, source, errors, options) {\n const len = typeof rule.len === 'number';\n const min = typeof rule.min === 'number';\n const max = typeof rule.max === 'number';\n // 正则匹配码点范围从U+010000一直到U+10FFFF的文字补充平面Supplementary Plane\n const spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n let val = value;\n let key = null;\n const num = typeof value === 'number';\n const str = typeof value === 'string';\n const arr = Array.isArray(value);\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n }\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 if (!key) {\n return false;\n }\n if (arr) {\n val = value.length;\n }\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n if (len) {\n if (val !== rule.len) {\n errors.push(\n util.format(options.messages[key].len, rule.fullField, rule.len),\n );\n }\n } else if (min && !max && val < rule.min) {\n errors.push(\n util.format(options.messages[key].min, rule.fullField, rule.min),\n );\n } else if (max && !min && val > rule.max) {\n errors.push(\n util.format(options.messages[key].max, rule.fullField, rule.max),\n );\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(\n util.format(\n options.messages[key].range,\n rule.fullField,\n rule.min,\n rule.max,\n ),\n );\n }\n}\n\nexport default range;\n","import * as util from '../util';\n\nconst ENUM = 'enum';\n\n/**\n * Rule for validating a value exists in an enumerable list.\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 */\nfunction enumerable(rule, value, source, errors, options) {\n rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];\n if (rule[ENUM].indexOf(value) === -1) {\n errors.push(\n util.format(\n options.messages[ENUM],\n rule.fullField,\n rule[ENUM].join(', '),\n ),\n );\n }\n}\n\nexport default enumerable;\n","import * as util from '../util';\n\n/**\n * Rule for validating a regular expression pattern.\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 */\nfunction 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 if (!rule.pattern.test(value)) {\n errors.push(\n util.format(\n options.messages.pattern.mismatch,\n rule.fullField,\n value,\n rule.pattern,\n ),\n );\n }\n } else if (typeof rule.pattern === 'string') {\n const _pattern = new RegExp(rule.pattern);\n if (!_pattern.test(value)) {\n errors.push(\n util.format(\n options.messages.pattern.mismatch,\n rule.fullField,\n value,\n rule.pattern,\n ),\n );\n }\n }\n }\n}\n\nexport default pattern;\n","import required from './required';\nimport whitespace from './whitespace';\nimport type from './type';\nimport range from './range';\nimport enumRule from './enum';\nimport pattern from './pattern';\n\nexport default {\n required,\n whitespace,\n type,\n range,\n enum: enumRule,\n pattern,\n};\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Performs validation for string types.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction string(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'string');\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 if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n callback(errors);\n}\n\nexport default string;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a function.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction method(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default method;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction number(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (value === '') {\n value = undefined;\n }\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default number;\n","import { isEmptyValue } from '../util';\nimport rules from '../rule/index.js';\n\n/**\n * Validates a boolean.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction boolean(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default boolean;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates the regular expression type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction regexp(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default regexp;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number is an integer.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction integer(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default integer;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number is a floating point number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction floatFn(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default floatFn;\n","import rules from '../rule/index';\nimport { isEmptyValue } from '../util';\n/**\n * Validates an array.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction array(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, 'array') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'array');\n if (!isEmptyValue(value, 'array')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default array;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates an object.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction object(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default object;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\nconst ENUM = 'enum';\n\n/**\n * Validates an enumerable list.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction enumerable(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules[ENUM](rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default enumerable;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a regular expression pattern.\n *\n * Performs validation when a rule only contains\n * a pattern property but is not declared as a string type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction pattern(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default pattern;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\nfunction date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n // console.log('validate on %s value', value);\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value)) {\n let dateObject;\n\n if (typeof value === 'number') {\n dateObject = new Date(value);\n } else {\n dateObject = value;\n }\n\n rules.type(rule, dateObject, source, errors, options);\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n callback(errors);\n}\n\nexport default date;\n","import rules from '../rule/index.js';\n\nfunction required(rule, value, callback, source, options) {\n const errors = [];\n const type = Array.isArray(value) ? 'array' : typeof value;\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n}\n\nexport default required;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\nfunction type(rule, value, callback, source, options) {\n const ruleType = rule.type;\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, ruleType);\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default type;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Performs validation for any type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction any(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n }\n callback(errors);\n}\n\nexport default any;\n","import string from './string';\nimport method from './method';\nimport number from './number';\nimport boolean from './boolean';\nimport regexp from './regexp';\nimport integer from './integer';\nimport float from './float';\nimport array from './array';\nimport object from './object';\nimport enumValidator from './enum';\nimport pattern from './pattern';\nimport date from './date';\nimport required from './required';\nimport type from './type';\nimport any from './any';\n\nexport default {\n string,\n method,\n number,\n boolean,\n regexp,\n integer,\n float,\n array,\n object,\n enum: enumValidator,\n pattern,\n date,\n url: type,\n hex: type,\n email: type,\n required,\n any,\n};\n","export function 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() {\n const cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n },\n };\n}\n\nexport const messages = newMessages();\n","import {\n format,\n complementError,\n asyncMap,\n warning,\n deepMerge,\n convertFieldsError,\n} from './util';\nimport validators from './validator/index';\nimport { messages as defaultMessages, newMessages } from './messages';\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\nfunction Schema(descriptor) {\n this.rules = null;\n this._messages = defaultMessages;\n this.define(descriptor);\n}\n\nSchema.prototype = {\n messages(messages) {\n if (messages) {\n this._messages = deepMerge(newMessages(), messages);\n }\n return this._messages;\n },\n define(rules) {\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n if (typeof rules !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n this.rules = {};\n let z;\n let item;\n for (z in rules) {\n if (rules.hasOwnProperty(z)) {\n item = rules[z];\n this.rules[z] = Array.isArray(item) ? item : [item];\n }\n }\n },\n validate(source_, o = {}, oc = () => {}) {\n let source = source_;\n let options = o;\n let callback = oc;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback();\n }\n return Promise.resolve();\n }\n\n function complete(results) {\n let i;\n let errors = [];\n let fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n errors = errors.concat(...e);\n } else {\n errors.push(e);\n }\n }\n\n for (i = 0; i < results.length; i++) {\n add(results[i]);\n }\n if (!errors.length) {\n errors = null;\n fields = null;\n } else {\n fields = convertFieldsError(errors);\n }\n callback(errors, fields);\n }\n\n if (options.messages) {\n let messages = this.messages();\n if (messages === defaultMessages) {\n messages = newMessages();\n }\n deepMerge(messages, options.messages);\n options.messages = messages;\n } else {\n options.messages = this.messages();\n }\n let arr;\n let value;\n const series = {};\n const keys = options.keys || Object.keys(this.rules);\n keys.forEach(z => {\n arr = this.rules[z];\n value = source[z];\n arr.forEach(r => {\n let rule = r;\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = { ...source };\n }\n value = source[z] = rule.transform(value);\n }\n if (typeof rule === 'function') {\n rule = {\n validator: rule,\n };\n } else {\n rule = { ...rule };\n }\n rule.validator = this.getValidationMethod(rule);\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = this.getType(rule);\n if (!rule.validator) {\n return;\n }\n series[z] = series[z] || [];\n series[z].push({\n rule,\n value,\n source,\n field: z,\n });\n });\n });\n const errorFields = {};\n return asyncMap(\n series,\n options,\n (data, doIt) => {\n const rule = data.rule;\n let deep =\n (rule.type === 'object' || rule.type === 'array') &&\n (typeof rule.fields === 'object' ||\n 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 {\n ...schema,\n fullField: `${rule.fullField}.${key}`,\n };\n }\n\n function cb(e = []) {\n let errors = e;\n if (!Array.isArray(errors)) {\n errors = [errors];\n }\n if (!options.suppressWarning && errors.length) {\n Schema.warning('async-validator:', errors);\n }\n if (errors.length && rule.message) {\n errors = [].concat(rule.message);\n }\n\n errors = errors.map(complementError(rule));\n\n if (options.first && errors.length) {\n errorFields[rule.field] = 1;\n return doIt(errors);\n }\n if (!deep) {\n doIt(errors);\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) {\n errors = [].concat(rule.message).map(complementError(rule));\n } else if (options.error) {\n errors = [\n options.error(\n rule,\n format(options.messages.required, rule.field),\n ),\n ];\n }\n return doIt(errors);\n }\n\n let fieldsSchema = {};\n if (rule.defaultField) {\n for (const k in data.value) {\n if (data.value.hasOwnProperty(k)) {\n fieldsSchema[k] = rule.defaultField;\n }\n }\n }\n fieldsSchema = {\n ...fieldsSchema,\n ...data.rule.fields,\n };\n for (const f in fieldsSchema) {\n if (fieldsSchema.hasOwnProperty(f)) {\n const fieldSchema = Array.isArray(fieldsSchema[f])\n ? fieldsSchema[f]\n : [fieldsSchema[f]];\n fieldsSchema[f] = fieldSchema.map(addFullfield.bind(null, f));\n }\n }\n const schema = new Schema(fieldsSchema);\n schema.messages(options.messages);\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n schema.validate(data.value, data.rule.options || options, errs => {\n const finalErrors = [];\n if (errors && errors.length) {\n finalErrors.push(...errors);\n }\n if (errs && errs.length) {\n finalErrors.push(...errs);\n }\n doIt(finalErrors.length ? finalErrors : null);\n });\n }\n }\n\n let res;\n if (rule.asyncValidator) {\n res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n } else if (rule.validator) {\n res = rule.validator(rule, data.value, cb, data.source, options);\n if (res === true) {\n cb();\n } else if (res === false) {\n cb(rule.message || `${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 if (res && res.then) {\n res.then(\n () => cb(),\n e => cb(e),\n );\n }\n },\n results => {\n complete(results);\n },\n );\n },\n getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n if (\n typeof rule.validator !== 'function' &&\n rule.type && !validators.hasOwnProperty(rule.type)\n ) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n return rule.type || 'string';\n },\n getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n const keys = Object.keys(rule);\n const messageIndex = keys.indexOf('message');\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n return validators[this.getType(rule)] || false;\n },\n};\n\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error(\n 'Cannot register a validator by type, validator is not a function',\n );\n }\n validators[type] = validator;\n};\n\nSchema.warning = warning;\n\nSchema.messages = defaultMessages;\n\nSchema.validators = validators;\n\n\nexport default Schema;\n"],"names":["formatRegExp","warning","process","env","NODE_ENV","window","document","type","errors","console","warn","every","e","convertFieldsError","length","fields","forEach","error","field","push","format","args","i","f","len","apply","slice","str","String","replace","x","Number","JSON","stringify","_","arg","isNativeStringType","isEmptyValue","value","undefined","Array","isArray","asyncParallelArray","arr","func","callback","results","total","arrLength","count","a","asyncSerialArray","index","next","original","flattenObjArr","objArr","ret","Object","keys","k","AsyncValidationError","Error","asyncMap","option","first","pending","Promise","resolve","reject","flattenArr","firstFields","objArrKeys","objArrLength","key","indexOf","complementError","rule","oe","message","fullField","deepMerge","target","source","s","hasOwnProperty","required","options","util","messages","whitespace","test","pattern","email","url","RegExp","hex","types","integer","number","parseInt","array","regexp","date","getTime","getMonth","getYear","isNaN","object","method","match","custom","ruleType","range","min","max","spRegexp","val","num","ENUM","enumerable","join","lastIndex","mismatch","_pattern","enumRule","string","validate","rules","boolean","floatFn","dateObject","Date","any","float","enumValidator","newMessages","parse","invalid","clone","cloned","Schema","descriptor","_messages","defaultMessages","define","prototype","z","item","source_","o","oc","complete","add","concat","series","r","transform","validator","getValidationMethod","getType","errorFields","data","doIt","deep","defaultField","addFullfield","schema","cb","suppressWarning","map","fieldsSchema","fieldSchema","bind","errs","finalErrors","res","asyncValidator","then","validators","messageIndex","splice","register"],"mappings":"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"}