redux-form-validators
Version:
Simple validations with redux-form / react-final-form
112 lines (108 loc) • 47.7 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["ReduxFormValidators"] = factory();
else
root["ReduxFormValidators"] = factory();
})(window, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./src/index.js":
/*!***********************************!*\
!*** ./src/index.js + 20 modules ***!
\***********************************/
/*! exports provided: default, absence, acceptance, addValidator, confirmation, date, email, exclusion, file, format, inclusion, length, numericality, presence, required, url, combine, validateForm */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./src/redux-form-validators.js\n// This simply returns what's passed-in because it's meant to be a hook for\n// babel-plugin-react-intl.\nfunction defineMessages(messageDescriptors) {\n return messageDescriptors;\n}\n// CONCATENATED MODULE: ./src/messages.js\n\nvar messages = defineMessages({\n absence: {\n id: 'form.errors.absence',\n defaultMessage: 'must be blank'\n },\n acceptance: {\n id: 'form.errors.acceptance',\n defaultMessage: 'must be accepted'\n },\n confirmation: {\n id: 'form.errors.confirmation',\n defaultMessage: \"doesn't match `{fieldLabel}`\"\n },\n dateFormat: {\n id: 'form.errors.dateFormat',\n defaultMessage: 'expected format: {format}'\n },\n dateInvalid: {\n id: 'form.errors.dateInvalid',\n defaultMessage: 'is not a valid date'\n },\n dateRange: {\n id: 'form.errors.dateRange',\n defaultMessage: 'shoud be {op} {date}'\n },\n email: {\n id: 'form.errors.email',\n defaultMessage: 'is not a valid email'\n },\n emailDomain: {\n id: 'form.errors.emailDomain',\n defaultMessage: '{domain} is not an accepted domain'\n },\n equalTo: {\n id: 'form.errors.equalTo',\n defaultMessage: 'must be equal to {count, number}'\n },\n even: {\n id: 'form.errors.even',\n defaultMessage: 'must be even'\n },\n exclusion: {\n id: 'form.errors.exclusion',\n defaultMessage: 'is reserved'\n },\n file: {\n id: 'form.errors.file',\n defaultMessage: 'is not a file'\n },\n fileAccept: {\n id: 'form.errors.fileAccept',\n defaultMessage: 'invalid file {count, plural, one {type} other {types ({count})}}'\n },\n fileTooBig: {\n id: 'form.errors.fileTooBig',\n defaultMessage: '{count, plural, one {is} other {{count} files are}} too big (maximum is {count, plural, one {{size}} other {{size} each}})'\n },\n fileTooFew: {\n id: 'form.errors.fileTooFew',\n defaultMessage: 'invalid number of files (minimum is {count})'\n },\n fileTooMany: {\n id: 'form.errors.fileTooMany',\n defaultMessage: 'invalid number of files (maximum is {count})'\n },\n fileTooSmall: {\n id: 'form.errors.fileTooSmall',\n defaultMessage: '{count, plural, one {is} other {{count} files are}} too small (minimum is {count, plural, one {{size}} other {{size} each}})'\n },\n greaterThan: {\n id: 'form.errors.greaterThan',\n defaultMessage: 'must be greater than {count, number}'\n },\n greaterThanOrEqualTo: {\n id: 'form.errors.greaterThanOrEqualTo',\n defaultMessage: 'must be greater than or equal to {count, number}'\n },\n inclusion: {\n id: 'form.errors.inclusion',\n defaultMessage: 'is not included in the list'\n },\n invalid: {\n id: 'form.errors.invalid',\n defaultMessage: 'is invalid'\n },\n lessThan: {\n id: 'form.errors.lessThan',\n defaultMessage: 'must be less than {count, number}'\n },\n lessThanOrEqualTo: {\n id: 'form.errors.lessThanOrEqualTo',\n defaultMessage: 'must be less than or equal to {count, number}'\n },\n notAnInteger: {\n id: 'form.errors.notAnInteger',\n defaultMessage: 'is not an integer'\n },\n notANumber: {\n id: 'form.errors.notANumber',\n defaultMessage: 'is not a number'\n },\n odd: {\n id: 'form.errors.odd',\n defaultMessage: 'must be odd'\n },\n otherThan: {\n id: 'form.errors.otherThan',\n defaultMessage: 'must be other than {count, number}'\n },\n presence: {\n id: 'form.errors.presence',\n defaultMessage: 'is required'\n },\n tooLong: {\n id: 'form.errors.tooLong',\n defaultMessage: 'is too long (maximum is {count, number} {count, plural, one {character} other {characters}})'\n },\n tooShort: {\n id: 'form.errors.tooShort',\n defaultMessage: 'is too short (minimum is {count, number} {count, plural, one {character} other {characters}})'\n },\n url: {\n id: 'form.errors.url',\n defaultMessage: 'is not a valid URL'\n },\n wrongLength: {\n id: 'form.errors.wrongLength',\n defaultMessage: 'is the wrong length (should be {count, number} {count, plural, one {character} other {characters}})'\n }\n});\n/* harmony default export */ var src_messages = (messages);\n// CONCATENATED MODULE: ./src/validators.js\n\nvar DEFAULT_OPTIONS = {\n memoize: true,\n allowBlank: false,\n urlProtocols: ['http', 'https'],\n dateFormat: 'yyyy-mm-dd',\n // ISO\n dateYmd: 'ymd',\n accept: ['1', 'true'],\n caseSensitive: true // confirmation, inclusion, exclusion\n\n};\nvar Validators = {\n formatMessage: formatMessage,\n formatSize: formatSize,\n defaultOptions: DEFAULT_OPTIONS,\n messages: src_messages,\n pluralRules: {\n 0: 'zero',\n 1: 'one'\n }\n};\n/* harmony default export */ var validators = (Validators);\n\nfunction formatSize(size, unit) {\n return size + ' ' + unit;\n}\n\nfunction formatMessage(msg) {\n if (msg.props) {\n msg = msg.props;\n }\n\n var text = msg.defaultMessage || msg.id ||\n /* istanbul ignore next */\n '';\n var rules = Validators.pluralRules;\n return !msg.values ? text : parseMsg(text, function (part) {\n var parts = part.split(',');\n var count = msg.values[parts[0]]; // {value} OR {count, number}\n\n if (parts.length <= 2) {\n return count == null ? '' : '' + count;\n } // plural\n\n\n var plural = parts.slice(2).join(',').trim();\n var info = {};\n var result = parseMsg(plural, null, rules[+count] || 'other', info);\n return info.found ? result : parseMsg(plural, null, 'other', {});\n });\n}\n\nfunction parseMsg(msg, func, pattern, info) {\n var start = msg.indexOf('{');\n if (start < 0) return pattern ? '' : msg;\n var index = start;\n var count = 1;\n var len = msg.length;\n\n while (count > 0 && index < len) {\n ++index;\n\n if (msg.charAt(index) === '{') {\n ++count;\n }\n\n if (msg.charAt(index) === '}') {\n --count;\n }\n }\n\n if (pattern) {\n if (pattern === msg.slice(0, start).trim()) {\n info.found = true;\n return msg.slice(start + 1, index).trim();\n }\n\n return parseMsg(msg.slice(index + 1), null, pattern, info);\n } // func gets all '{.*}' parts\n // e.g:\n // - {count}\n // - {count, plural, one {1 thing} other {many things}}\n // - ...\n\n\n return msg.slice(0, start) + parseMsg(func(msg.slice(start + 1, index).trim()), func) + parseMsg(msg.slice(index + 1), func);\n}\n// CONCATENATED MODULE: ./src/helpers.js\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\nvar HAS_PROP = {}.hasOwnProperty;\nvar TO_STRING = {}.toString; // eslint-disable-next-line no-useless-escape\n\nvar ESCAPE_REG = /([.+?^=!:${}()|[\\]\\/\\\\])/g; // Removed star char\n\nvar ANY_REG = /\\*/g; // string with \"*\" => RegExp\n\nfunction stringToReg(str) {\n return new RegExp('^' + str.replace(ESCAPE_REG, '\\\\$1').replace(ANY_REG, '.*') + '$', 'i');\n}\nfunction regFormat(func, messageType) {\n return helpers_memoize(function (options) {\n options = options || {};\n var msg = options.msg || options.message;\n return prepare(options['if'], options.unless, options.allowBlank, function (value) {\n if (!value.match(func(options))) {\n return validators.formatMessage(prepareMsg(msg, messageType));\n }\n });\n });\n}\nfunction prepare(ifCond, unlessCond, allowBlank, func) {\n return function (value) {\n var allValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!value || _typeof(value) !== 'object') {\n value = value == null ? '' : '' + value;\n\n if ((allowBlank != null ? allowBlank : validators.defaultOptions.allowBlank) && !value.trim()) {\n return;\n }\n }\n\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n if ((typeof ifCond !== 'function' || ifCond.apply(void 0, [allValues, value].concat(args))) && (typeof unlessCond !== 'function' || !unlessCond.apply(void 0, [allValues, value].concat(args)))) {\n return func.apply(void 0, [value, allValues].concat(args));\n }\n };\n}\nvar trunc = Math.trunc ||\n/* istanbul ignore next */\nfunction trunc(num) {\n return num < 0 ? Math.ceil(num) : Math.floor(num);\n};\nvar helpers_assign = Object.assign ||\n/* istanbul ignore next */\nfunction (obj) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var source = arguments[i];\n if (source != null) for (var key in source) {\n if (HAS_PROP.call(source, key)) obj[key] = source[key];\n }\n }\n\n return obj;\n};\nfunction selectNum(var1, var2) {\n return isNumber(var1) ? +var1 : arguments.length > 1 && isNumber(var2) ? +var2 : null;\n}\nfunction isNumber(num) {\n // eslint-disable-next-line\n return !isNaN(num) && (0 != num || '' !== ('' + num).trim());\n}\nfunction isObject(obj) {\n return _typeof(obj) === 'object' && TO_STRING.call(obj) === '[object Object]' && obj !== null;\n} // Immutable.js compatibility\n\nfunction getIn(h, keys) {\n /* istanbul ignore next */\n if (typeof h.getIn === 'function') return h.getIn(keys);\n\n for (var i = 0, len = keys.length; i < len; ++i) {\n h = (h ||\n /* istanbul ignore next */\n {})[keys[i]];\n }\n\n return h;\n}\nfunction prepareMsg(msg, type) {\n var args = arguments;\n var lastIndex = args.length - 1;\n var values = args[lastIndex];\n\n if (typeof values === 'string') {\n values = void 0;\n ++lastIndex;\n }\n\n if (msg == null) {\n return helpers_defaultMessage(type, values);\n }\n\n if (HAS_PROP.call(msg, 'props') && isReactElement(msg)) {\n msg = msg.props;\n }\n\n for (var i = lastIndex - 1; i >= 1; --i) {\n if (msg[args[i]] != null) {\n msg = msg[args[i]];\n break;\n }\n }\n\n if (isObject(msg)) {\n if (HAS_PROP.call(msg, 'id') || HAS_PROP.call(msg, 'defaultMessage')) {\n return helpers_assign({}, msg, {\n values: values\n });\n }\n\n return helpers_defaultMessage(type, values);\n }\n\n return {\n id: msg,\n defaultMessage: msg,\n values: values\n };\n}\nfunction toObjectMsg(msg) {\n if (msg == null) return null;\n return isObject(msg) ? msg : {\n id: msg,\n defaultMessage: msg\n };\n}\nfunction helpers_memoize(func) {\n func.cache = {};\n return function (options) {\n var memoize = options ? options.memoize : null;\n if (memoize == null) memoize = validators.defaultOptions.memoize;\n if (memoize != null && !memoize) return func(options);\n var key = typeof memoize === 'function' ? memoize(options, stringify) : stringify(options);\n return HAS_PROP.call(func.cache, key) ? func.cache[key] : func.cache[key] = func(options);\n };\n} // private\n\nfunction helpers_defaultMessage(type, values) {\n var msg = validators.messages[type];\n return typeof msg === 'string' ? {\n defaultMessage: msg,\n values: values\n } : helpers_assign({}, msg, {\n values: values\n });\n}\n\nfunction stringify(options) {\n var arr = [];\n var value;\n\n for (var k in options) {\n /* istanbul ignore else */\n if (HAS_PROP.call(options, k)) {\n value = options[k];\n arr.push(k, isReactElement(value) ? stringify(value.props) : isObject(value) ? stringify(value) : value.toString());\n }\n }\n\n return JSON.stringify(arr);\n}\n\nfunction isReactElement(object) {\n return _typeof(object) === 'object' && object !== null && '$$typeof' in object;\n}\n// CONCATENATED MODULE: ./src/file.js\n\n\nvar ACCEPT_SEP_REG = ',';\nvar file = helpers_memoize(function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n message = _ref.message,\n msg = _ref.msg,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n minFiles = _ref.minFiles,\n maxFiles = _ref.maxFiles,\n ifCond = _ref[\"if\"],\n unless = _ref.unless,\n allowBlank = _ref.allowBlank;\n\n msg = msg || message;\n minFiles = selectNum(minFiles);\n maxFiles = selectNum(maxFiles);\n\n if (maxFiles < 0) {\n maxFiles = null;\n }\n\n if (minFiles === null) {\n minFiles = 1;\n }\n\n if (typeof accept === 'string' && accept.trim()) {\n accept = accept.trim().toLowerCase().split(ACCEPT_SEP_REG).map(function (type) {\n type = type.trim();\n return type.charAt(0) === '.' || type.indexOf('*') < 0 ? type : stringToReg(type);\n });\n } else {\n accept = null;\n }\n\n var min = minSize != null ? sizeToInt(minSize) : null;\n var max = maxSize != null ? sizeToInt(maxSize) : null;\n return prepare(ifCond, unless, false, function (value) {\n var isAFileList = isFileList(value); // special blank check\n\n if ((allowBlank != null ? allowBlank : validators.defaultOptions.allowBlank) && (typeof value === 'string' ? value.trim() === '' : isAFileList && value.length === 0)) {\n return;\n }\n\n if (!isAFileList) {\n return validators.formatMessage(prepareMsg(msg, 'file'));\n }\n\n if (isNaN(value.length)) {\n value = [value];\n }\n\n if (value.length < minFiles) {\n return validators.formatMessage(prepareMsg(msg, 'fileTooFew', 'tooFew', 'minFiles', {\n count: minFiles\n }));\n }\n\n if (maxFiles !== null && value.length > maxFiles) {\n return validators.formatMessage(prepareMsg(msg, 'fileTooMany', 'tooMany', 'maxFiles', {\n count: maxFiles\n }));\n }\n\n var acceptError = [];\n var tooSmallError = [];\n var tooBigError = [];\n\n var _loop = function _loop(i, len, _val, _ftype, _fext) {\n _val = value[i];\n\n if (accept) {\n _ftype = _val.type ||\n /* istanbul ignore next */\n '';\n _fext = fileExt(_val.name ||\n /* istanbul ignore next */\n '');\n\n if (!accept.some(function (type) {\n val = _val;\n ftype = _ftype;\n fext = _fext;\n return typeof type === 'string' ? type === (type.charAt(0) === '.' ? _fext : _ftype) : type.test(_ftype);\n })) {\n acceptError.push(_val);\n }\n }\n\n if (min != null && _val.size < min) {\n tooSmallError.push(_val);\n }\n\n if (max != null && _val.size > max) {\n tooBigError.push(_val);\n }\n\n val = _val;\n ftype = _ftype;\n fext = _fext;\n };\n\n for (var i = 0, len = value.length, val, ftype, fext; i < len; ++i) {\n _loop(i, len, val, ftype, fext);\n }\n\n if (acceptError.length) {\n return validators.formatMessage(prepareMsg(msg, 'fileAccept', 'accept', {\n files: acceptError,\n count: acceptError.length\n }));\n }\n\n if (tooSmallError.length) {\n var pair = file_parse(minSize);\n return validators.formatMessage(prepareMsg(msg, 'fileTooSmall', 'tooSmall', 'minSize', {\n files: tooSmallError,\n count: tooSmallError.length,\n size: validators.formatSize(pair[1], pair[2] || 'B')\n }));\n }\n\n if (tooBigError.length) {\n var _pair = file_parse(maxSize);\n\n return validators.formatMessage(prepareMsg(msg, 'fileTooBig', 'tooBig', 'maxSize', {\n files: tooBigError,\n count: tooBigError.length,\n size: validators.formatSize(_pair[1], _pair[2] || 'B')\n }));\n }\n });\n});\n/* harmony default export */ var src_file = (file);\nfunction isFileList(value) {\n if (typeof FileList !== 'undefined' && value instanceof FileList || typeof File !== 'undefined' && (value instanceof File || value[0] instanceof File)) {\n return true;\n }\n\n var str = TO_STRING.call(value);\n return str === '[object FileList]' || str === '[object File]' || TO_STRING.call(value[0]) === '[object File]';\n} // private\n// eslint-disable-next-line no-useless-escape\n\nvar SIZE_REG = /^([\\d\\.]+)\\s*([KMGTPE]?B)?$/;\nvar SIZE_UNITS = {\n B: 1,\n KB: 1024,\n MB: 1048576,\n GB: 1073741824,\n TB: 1099511627776,\n PB: 1125899906842624,\n EB: 1152921504606847000\n};\n\nfunction file_parse(size) {\n return SIZE_REG.exec(('' + size).trim());\n}\n\nfunction sizeToInt(size) {\n var pair = file_parse(size);\n if (pair) return pair[1] * (SIZE_UNITS[pair[2]] || 1);\n /* istanbul ignore else */\n\n if (typeof console !== 'undefined') {\n console.error(\"file validator: size \\\"\".concat(size, \"\\\" unknown\"));\n }\n\n return null;\n}\n\nfunction fileExt(filename) {\n return filename.slice((filename.lastIndexOf('.') - 1 >>> 0) + 1).toLowerCase();\n}\n// CONCATENATED MODULE: ./src/absence.js\n\n\n\nvar absence = helpers_memoize(function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n message = _ref.message,\n msg = _ref.msg,\n ifCond = _ref[\"if\"],\n unless = _ref.unless;\n\n msg = msg || message;\n return prepare(ifCond, unless, false, function (value) {\n if (typeof value === 'string' ? value.trim() : isFileList(value) && !isNaN(value.length) ? value.length : value) {\n return validators.formatMessage(prepareMsg(msg, 'absence'));\n }\n });\n});\n/* harmony default export */ var src_absence = (absence);\n// CONCATENATED MODULE: ./src/acceptance.js\n\n\nvar acceptance = helpers_memoize(function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n accept = _ref.accept,\n message = _ref.message,\n msg = _ref.msg,\n ifCond = _ref[\"if\"],\n unless = _ref.unless;\n\n msg = msg || message;\n return prepare(ifCond, unless, false, function (value) {\n if ([].concat(accept || validators.defaultOptions.accept).map(String).indexOf(value) < 0) {\n return validators.formatMessage(prepareMsg(msg, 'acceptance'));\n }\n });\n});\n/* harmony default export */ var src_acceptance = (acceptance);\n// CONCATENATED MODULE: ./src/add-validator.js\n\n\n\nfunction addValidator(_ref) {\n var validator = _ref.validator,\n defaultMessage = _ref.defaultMessage,\n defaultMsg = _ref.defaultMsg;\n defaultMsg = toObjectMsg(defaultMsg || defaultMessage) || src_messages.invalid;\n return helpers_memoize(function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var msg = toObjectMsg(options.msg || options.message) || defaultMsg;\n return prepare(options[\"if\"], options.unless, options.allowBlank, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var result = validator.apply(void 0, [options].concat(args));\n\n if (typeof result !== 'boolean') {\n return result ? validators.formatMessage(result) : null;\n }\n\n if (!result) {\n return validators.formatMessage(msg);\n }\n });\n });\n}\n// CONCATENATED MODULE: ./src/confirmation.js\n\n\nvar confirmation = helpers_memoize(function (_ref) {\n var field = _ref.field,\n fieldLabel = _ref.fieldLabel,\n caseSensitive = _ref.caseSensitive,\n message = _ref.message,\n msg = _ref.msg,\n ifCond = _ref[\"if\"],\n unless = _ref.unless;\n msg = msg || message;\n var fieldKeys = field.split('.');\n fieldLabel = fieldLabel || fieldKeys[fieldKeys.length - 1];\n return prepare(ifCond, unless, false, function (value, allValues) {\n var fieldValue = '' + (getIn(allValues, fieldKeys) || '');\n var cs = caseSensitive != null ? caseSensitive : validators.defaultOptions.caseSensitive;\n\n if (cs ? value !== fieldValue : value.toLowerCase() !== fieldValue.toLowerCase()) {\n return validators.formatMessage(prepareMsg(msg, 'confirmation', {\n fieldLabel: fieldLabel\n }));\n }\n });\n});\n/* harmony default export */ var src_confirmation = (confirmation);\n// CONCATENATED MODULE: ./src/date.js\n\n\nvar DATE_METHODS = {\n y: function y(d) {\n return d.getFullYear();\n },\n m: function m(d) {\n return d.getMonth() + 1;\n },\n d: function d(_d) {\n return _d.getDate();\n }\n};\nvar PARSE_REG = /(y+|m+|d+)/g;\nvar date_TO_STRING = {}.toString;\nvar date_date = helpers_memoize(function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n format = _ref.format,\n ymd = _ref.ymd,\n eq = _ref['='],\n diff = _ref['!='],\n gt = _ref['>'],\n gte = _ref['>='],\n lt = _ref['<'],\n lte = _ref['<='],\n message = _ref.message,\n msg = _ref.msg,\n ifCond = _ref[\"if\"],\n unless = _ref.unless,\n allowBlank = _ref.allowBlank;\n\n msg = msg || message;\n return prepare(ifCond, unless, allowBlank, function (value) {\n var normFormat = normalizeFormat(format, ymd);\n var date = normParseDate(value, normFormat, false);\n\n if (date === 'wrongFormat') {\n return validators.formatMessage(prepareMsg(msg, 'dateFormat', 'format', {\n format: format\n }));\n }\n\n if (date === 'invalid') {\n return validators.formatMessage(prepareMsg(msg, 'dateInvalid', 'invalid'));\n }\n\n if (date) {\n var date2;\n\n if (eq && +date !== +(date2 = getDate(eq))) {\n return validators.formatMessage(prepareMsg(msg, 'dateRange', 'range', '=', date_values('=', date2, normFormat)));\n }\n\n if (diff && +date === +(date2 = getDate(diff))) {\n return validators.formatMessage(prepareMsg(msg, 'dateRange', 'range', '!=', date_values('!=', date2, normFormat)));\n }\n\n if (gt && date <= (date2 = getDate(gt))) {\n return validators.formatMessage(prepareMsg(msg, 'dateRange', 'range', '>', date_values('>', date2, normFormat)));\n }\n\n if (gte && date < (date2 = getDate(gte))) {\n return validators.formatMessage(prepareMsg(msg, 'dateRange', 'range', '>=', date_values('>=', date2, normFormat)));\n }\n\n if (lt && date >= (date2 = getDate(lt))) {\n return validators.formatMessage(prepareMsg(msg, 'dateRange', 'range', '<', date_values('<', date2, normFormat)));\n }\n\n if (lte && date > (date2 = getDate(lte))) {\n return validators.formatMessage(prepareMsg(msg, 'dateRange', 'range', '<=', date_values('<=', date2, normFormat)));\n }\n }\n });\n});\ndate_date.parseDate = parseDate;\ndate_date.formatDate = formatDate;\n/* harmony default export */ var src_date = (date_date);\n\nfunction parseDate(strDate, format, ymd) {\n return normParseDate(strDate, normalizeFormat(format, ymd), true);\n}\n\nfunction formatDate(date, format, ymd) {\n if (!(date instanceof Date) && date_TO_STRING.call(date) !== '[object Date]') {\n return null;\n }\n\n var t = new Date(date).getTime(); // eslint-disable-next-line no-self-compare\n\n return t !== t ? null : normFormatDate(date, normalizeFormat(format, ymd));\n}\n\nfunction date_values(op, date, format) {\n return {\n op: op,\n date: normFormatDate(date, format),\n dateObject: date\n };\n}\n\nfunction getDate(d) {\n if (typeof d === 'function') {\n return new Date(+d());\n }\n\n if (isNaN(d) && ('' + d).toLowerCase() === 'today') {\n var today = new Date();\n today.setHours(0, 0, 0, 0);\n return today;\n }\n\n return new Date(+d);\n} // FORMAT\n\n\nfunction normFormatDate(date, format) {\n return format.replace(PARSE_REG, function (m) {\n var sym = m.charAt(0);\n var len = m.length;\n var padded = padding(DATE_METHODS[sym](date), len);\n return sym === 'y' ? padded.slice(padded.length - len, padded.length) : padded;\n });\n}\n\nfunction normalizeFormat(format, ymd) {\n if (format == null) {\n format = validators.defaultOptions.dateFormat;\n }\n\n if (!ymd) {\n ymd = validators.defaultOptions.dateYmd;\n }\n\n if (!ymd || ymd === 'ymd') {\n return format;\n }\n\n var reverseMapping = {};\n reverseMapping[ymd.charAt(0)] = 'y';\n reverseMapping[ymd.charAt(1)] = 'm';\n reverseMapping[ymd.charAt(2)] = 'd';\n return format.replace(new RegExp(\"[\".concat(ymd, \"]\"), 'g'), function (sym) {\n return reverseMapping[sym];\n });\n}\n\nfunction padding(num, pad) {\n return '0'.repeat(Math.max(0, pad - ('' + num).length)) + num;\n} // PARSE\n\n\nfunction normParseDate(value, format, parse) {\n var order = [];\n var reg = new RegExp('^' + format.replace(PARSE_REG, function (m) {\n order.push(m.charAt(0));\n return \"([0-9]{\".concat(m.length, \"})\");\n }) + '$');\n var match = value.match(reg);\n\n if (match) {\n var flags = {};\n order.forEach(function (token, index) {\n flags[token] = +match[index + 1];\n });\n var comparable = flags.y != null ? flags.m != null ? true : flags.d == null : false;\n flags = helpers_assign({\n y: 1970,\n m: 1,\n d: 1\n }, flags);\n\n if (flags.y < 100) {\n flags.y = currentCentury(flags.y >= 69 ? -1 : 0) * 100 + flags.y;\n }\n\n var _date = new Date(flags.y, flags.m - 1, flags.d);\n\n return checkFlags(_date, flags) ? comparable || parse ? _date : null : parse ? new Date(NaN) : 'invalid';\n }\n\n return parse ? new Date(NaN) : 'wrongFormat';\n}\n\nfunction checkFlags(date, flags) {\n var _ref2 = [date.getFullYear(), date.getMonth() + 1, date.getDate()],\n year = _ref2[0],\n month = _ref2[1],\n day = _ref2[2];\n return year === flags.y && month === flags.m && day === flags.d;\n}\n\nfunction currentCentury(add) {\n return trunc(new Date().getFullYear() / 100) + add;\n}\n// CONCATENATED MODULE: ./src/email.js\n\n // eslint-disable-next-line no-useless-escape\n\nvar REG_EMAIL = /^[a-z0-9!#$%&\\'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&\\'*+/=?^_`{|}~-]+)*@((?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)$/i;\nvar email = helpers_memoize(function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n domainWhitelist = _ref.domainWhitelist,\n domainBlacklist = _ref.domainBlacklist,\n message = _ref.message,\n msg = _ref.msg,\n ifCond = _ref[\"if\"],\n unless = _ref.unless,\n allowBlank = _ref.allowBlank;\n\n msg = msg || message;\n domainWhitelist = prepareList(domainWhitelist);\n domainBlacklist = prepareList(domainBlacklist);\n return prepare(ifCond, unless, allowBlank, function (value) {\n var match = value.match(REG_EMAIL);\n\n if (!match) {\n return validators.formatMessage(prepareMsg(msg, 'email', 'invalid'));\n }\n\n var domain = match[1].toLowerCase();\n\n if (domainWhitelist && !domainInList(domain, domainWhitelist) || domainBlacklist && domainInList(domain, domainBlacklist)) {\n return validators.formatMessage(prepareMsg(msg, 'emailDomain', 'domain', {\n domain: domain\n }));\n }\n });\n});\nemail.REG_EMAIL = REG_EMAIL;\n/* harmony default export */ var src_email = (email); // private\n\nfunction domainInList(domain, list) {\n return list.some(function (d) {\n return typeof d === 'string' ? d === domain : d.test(domain);\n });\n}\n\nfunction prepareList(list) {\n return list ? list.map(function (d) {\n return d.indexOf('*') < 0 ? d.toLowerCase() : stringToReg(d);\n }) : list;\n}\n// CONCATENATED MODULE: ./src/format.js\n\n\nvar format_format = helpers_memoize(function (_ref) {\n var wit = _ref[\"with\"],\n without = _ref.without,\n message = _ref.message,\n msg = _ref.msg,\n ifCond = _ref[\"if\"],\n unless = _ref.unless,\n allowBlank = _ref.allowBlank;\n msg = msg || message;\n return prepare(ifCond, unless, allowBlank, function (value) {\n if (wit && !value.match(wit) || without && value.match(without)) {\n return validators.formatMessage(prepareMsg(msg, 'invalid'));\n }\n });\n});\n/* harmony default export */ var src_format = (format_format);\n// CONCATENATED MODULE: ./src/inclusion.js\n\n\nvar inclusion_inclusion = helpers_memoize(function (options) {\n return inclusionExclusion(true, options);\n});\n/* harmony default export */ var src_inclusion = (inclusion_inclusion);\nfunction inclusionExclusion(inclusion, _ref) {\n var inc = _ref[\"in\"],\n within = _ref.within,\n caseSensitive = _ref.caseSensitive,\n message = _ref.message,\n msg = _ref.msg,\n ifCond = _ref[\"if\"],\n unless = _ref.unless,\n allowBlank = _ref.allowBlank;\n msg = msg || message;\n within = [].concat(within || inc).map(function (val) {\n return '' + val;\n });\n return prepare(ifCond, unless, allowBlank, function (value) {\n var cs = caseSensitive != null ? caseSensitive : validators.defaultOptions.caseSensitive;\n var array = within;\n\n if (!cs) {\n value = value.toLowerCase();\n array = array.map(function (val) {\n return val.toLowerCase();\n });\n }\n\n if (inclusion) {\n if (array.indexOf(value) < 0) {\n return validators.formatMessage(prepareMsg(msg, 'inclusion'));\n }\n } else {\n if (array.indexOf(value) >= 0) {\n return validators.formatMessage(prepareMsg(msg, 'exclusion'));\n }\n }\n });\n}\n// CONCATENATED MODULE: ./src/exclusion.js\n\n\nvar exclusion = helpers_memoize(function (options) {\n return inclusionExclusion(false, options);\n});\n/* harmony default export */ var src_exclusion = (exclusion);\n// CONCATENATED MODULE: ./src/length.js\n\n\nvar length_length = helpers_memoize(function (_ref) {\n var equal = _ref['='],\n is = _ref.is,\n max = _ref.max,\n maximum = _ref.maximum,\n min = _ref.min,\n minimum = _ref.minimum,\n range = _ref[\"in\"],\n within = _ref.within,\n message = _ref.message,\n msg = _ref.msg,\n ifCond = _ref[\"if\"],\n unless = _ref.unless,\n allowBlank = _ref.allowBlank;\n msg = msg || message;\n equal = selectNum(equal, is);\n min = selectNum(min, minimum);\n max = selectNum(max, maximum);\n range = range || within;\n\n if (range && isNumber(range[0]) && isNumber(range[1])) {\n min = range[0];\n max = range[1];\n }\n\n return prepare(ifCond, unless, allowBlank, function (value) {\n if (equal !== null && value.length !== equal) {\n return validators.formatMessage(prepareMsg(msg, 'wrongLength', 'is', '=', {\n count: equal\n }));\n }\n\n if (max !== null && value.length > max) {\n return validators.formatMessage(prepareMsg(msg, 'tooLong', 'maximum', 'max', {\n count: max\n }));\n }\n\n if (min !== null && value.length < min) {\n return validators.formatMessage(prepareMsg(msg, 'tooShort', 'minimum', 'min', {\n count: min\n }));\n }\n });\n});\n/* harmony default export */ var src_length = (length_length);\n// CONCATENATED MODULE: ./src/numericality.js\n\n\nvar numericality = helpers_memoize(function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _int = _ref[\"int\"],\n integer = _ref.integer,\n even = _ref.even,\n odd = _ref.odd,\n equal = _ref['='],\n equalTo = _ref.equalTo,\n diff = _ref['!='],\n otherThan = _ref.otherThan,\n greater = _ref['>'],\n greaterThan = _ref.greaterThan,\n less = _ref['<'],\n lessThan = _ref.lessThan,\n greaterOrEqual = _ref['>='],\n greaterThanOrEqualTo = _ref.greaterThanOrEqualTo,\n lessOrEqual = _ref['<='],\n lessThanOrEqualTo = _ref.lessThanOrEqualTo,\n message = _ref.message,\n msg = _ref.msg,\n ifCond = _ref[\"if\"],\n unless = _ref.unless,\n allowBlank = _ref.allowBlank;\n\n msg = msg || message;\n _int = _int || integer;\n equal = selectNum(equal, equalTo);\n diff = selectNum(diff, otherThan);\n greater = selectNum(greater, greaterThan);\n greaterOrEqual = selectNum(greaterOrEqual, greaterThanOrEqualTo);\n less = selectNum(less, lessThan);\n lessOrEqual = selectNum(lessOrEqual, lessThanOrEqualTo);\n return prepare(ifCond, unless, allowBlank, function (value) {\n if (!isNumber(value)) {\n return validators.formatMessage(prepareMsg(msg, 'notANumber', 'NaN'));\n }\n\n if (_int && +value % 1) {\n return validators.formatMessage(prepareMsg(msg, 'notAnInteger', 'int'));\n }\n\n if (equal !== null && +value !== equal) {\n return validators.formatMessage(prepareMsg(msg, 'equalTo', '=', {\n count: equal\n }));\n }\n\n if (diff !== null && +value === diff) {\n return validators.formatMessage(prepareMsg(msg, 'otherThan', '!=', {\n count: diff\n }));\n }\n\n if (greater !== null && +value <= greater) {\n return validators.formatMessage(prepareMsg(msg, 'greaterThan', '>', {\n count: greater\n }));\n }\n\n if (greaterOrEqual !== null && +value < greaterOrEqual) {\n return validators.formatMessage(prepareMsg(msg, 'greaterThanOrEqualTo', '>=', {\n count: greaterOrEqual\n }));\n }\n\n if (less !== null && +value >= less) {\n return validators.formatMessage(prepareMsg(msg, 'lessThan', '<', {\n count: less\n }));\n }\n\n if (lessOrEqual !== null && +value > lessOrEqual) {\n return validators.formatMessage(prepareMsg(msg, 'lessThanOrEqualTo', '<=', {\n count: lessOrEqual\n }));\n }\n\n if (even && trunc(+value) % 2) {\n return validators.formatMessage(prepareMsg(msg, 'even'));\n }\n\n if (odd && !(trunc(+value) % 2)) {\n return validators.formatMessage(prepareMsg(msg, 'odd'));\n }\n });\n});\n/* harmony default export */ var src_numericality = (numericality);\n// CONCATENATED MODULE: ./src/presence.js\n\n\n\nvar presence = helpers_memoize(function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n message = _ref.message,\n msg = _ref.msg,\n ifCond = _ref[\"if\"],\n unless = _ref.unless;\n\n msg = msg || message;\n return prepare(ifCond, unless, false, function (value) {\n if (typeof value === 'string' ? !value.trim() : isFileList(value) && !isNaN(value.length) ? !value.length : !value) {\n return validators.formatMessage(prepareMsg(msg, 'presence'));\n }\n });\n});\n/* harmony default export */ var src_presence = (presence);\n// CONCATENATED MODULE: ./src/url.js\n\n // user:pass BasicAuth (optional)\n\nvar BASIC_AUTH = '(?:\\\\S+(?::\\\\S*)?@)?'; // IP address dotted notation octets\n\nvar IPV4 = '(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)'; // the IPv6 matching part is from here: https://gist.github.com/syzdek/6086792\n// IPv6 address in URLs are wrapped with []s\n\nvar IPV6 = \"\\\\[(?:\" + [// 1:2:3:4:5:6:7:8\n'(?:[\\\\da-f]{1,4}:){7,7}[\\\\da-f]{1,4}', // 2001:db8:3:4::192.0.2.33 64:ff9b::192.0.2.33 (IPv4-Embedded IPv6 Address)\n'(?:[\\\\da-f]{1,4}:){1,4}:' + IPV4, // ::255.255.255.255 ::ffff:255.255.255.255 ::ffff:0:255.255.255.255 (IPv4-mapped IPv6 addresses)\n'::(?:ffff(?::0{1,4}){0,1}:){0,1}' + IPV4, // 1::3:4:5:6:7:8 1::3:4:5:6:7:8 1::8\n'[\\\\da-f]{1,4}:(?:(?::[\\\\da-f]{1,4}){1,6})', // 1::4:5:6:7:8 1:2::4:5:6:7:8 1:2::8\n'(?:[\\\\da-f]{1,4}:){1,2}(?::[\\\\da-f]{1,4}){1,5}', // 1::5:6:7:8 1:2:3::5:6:7:8 1:2:3::8\n'(?:[\\\\da-f]{1,4}:){1,3}(?::[\\\\da-f]{1,4}){1,4}', // 1::6:7:8 1:2:3:4::6:7:8 1:2:3:4::8\n'(?:[\\\\da-f]{1,4}:){1,4}(?::[\\\\da-f]{1,4}){1,3}', // 1::7:8 1:2:3:4:5::7:8 1:2:3:4:5::8\n'(?:[\\\\da-f]{1,4}:){1,5}(?::[\\\\da-f]{1,4}){1,2}', // 1::8 1:2:3:4:5:6::8 1:2:3:4:5:6::8\n'(?:[\\\\da-f]{1,4}:){1,6}:[\\\\da-f]{1,4}', // 1::\n'(?:[\\\\da-f]{1,4}:){1,7}:', // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::\n':(?:(?::[\\\\da-f]{1,4}){1,7}|:)'].join('|') + ')\\\\]'; // host & domain names, may end with dot\n\nvar HOST = // can be replaced by\n// '(?:(?:[a-z0-9\\\\u00a1-\\\\uffff][a-z0-9\\\\u00a1-\\\\uffff_-]{0,62})?[a-z0-9\\\\u00a1-\\\\uffff]\\\\.)+' +\n\"(?![-_])(?:[-\\\\w\\\\u00a1-\\\\uffff]{0,63}[^-_]\\\\.)+\" + // TLD identifier name, may end with dot\n\"(?:[a-z\\\\u00a1-\\\\uffff]{2,}\\\\.?)\"; // port number (optional)\n\nvar PORT = '(?::\\\\d{2,5})?'; // resource path (optional)\n\nvar PATH = '(?:[/][^\\\\s?#]*)?';\nvar SEARCH = '(?:[?][^\\\\s#]*)?';\nvar HASH = '(?:[#]\\\\S*)?';\nvar url_DEFAULT_OPTIONS = {\n emptyProtocol: true,\n protocolIdentifier: true,\n basicAuth: true,\n local: true,\n ipv4: true,\n ipv6: true,\n host: true,\n port: true,\n path: true,\n search: true,\n hash: true\n};\nvar STRIP_PROTOCOL_REG = /:?\\/\\/$/;\nvar CLEAN_UP_PROPS = ['protocol', 'ipv4', 'host', 'path', 'search', 'hash'];\n\nfunction parseURL(url, options) {\n options = defaultOptions(options);\n var parts = url.match(buildReg(options, true));\n if (!parts) return null;\n var group = 1;\n var h = {\n protocol: parts[group++].replace(STRIP_PROTOCOL_REG, '')\n };\n\n if (options.basicAuth) {\n var auth = parts[group++];\n\n if (auth) {\n var password = auth.slice(0, -1).split(':');\n var username = password.shift();\n h.basicAuth = {\n username: username,\n password: password.length ? password.join(':') : void 0\n };\n }\n }\n\n if (options.ipv4) h.ipv4 = parts[group++];\n\n if (options.ipv6) {\n var ipv6 = parts[group++];\n if (ipv6) h.ipv6 = ipv6.slice(1, -1);\n }\n\n if (options.host) h.host = parts[group++];\n if (options.local) h.host = parts[group++] || h.host;\n\n if (options.port) {\n var port = parts[group++];\n if (port) h.port = +port.slice(1);\n }\n\n if (options.path) h.path = parts[group++];\n if (options.search) h.search = parts[group++];\n if (options.hash) h.hash = parts[group++]; // Clean up\n\n CLEAN_UP_PROPS.forEach(function (k) {\n if (!h[k]) delete h[k];\n });\n return h;\n} // Uses \"format\" internally which is already memoized\n\n\nvar url = regFormat(function (options) {\n return buildReg(defaultOptions(options), false);\n}, 'url');\nurl.parseURL = parseURL;\n/* harmony default export */ var src_url = (url);\n\nfunction defaultOptions(options) {\n options = helpers_assign({}, url_DEFAULT_OPTIONS, options);\n options.protocols = [].concat(options.protocol || options.protocols || validators.defaultOptions.urlProtocols).join('|');\n return options;\n}\n\nfunction group(option, regPart, capture) {\n return option ? capture ? \"(\".concat(regPart, \")\") : regPart : '';\n}\n\nfunction buildReg(options, capture) {\n return new RegExp('^' + group(true, \"(?:(?:(?:\".concat(options.protocols, \"):)\").concat(options.emptyProtocol ? '?' : '', \"\\\\/\\\\/)\").concat(options.protocolIdentifier ? '' : '?'), capture) + group(options.basicAuth, BASIC_AUTH, capture) + \"(?:\".concat([group(options.ipv4, IPV4, capture), group(options.ipv6, IPV6, capture), group(options.host, HOST, capture), group(options.local, 'localhost', capture)].filter(function (g) {\n return g;\n }).join('|'), \")\") + group(options.port, PORT, capture) + group(options.path, PATH, capture) + group(options.search, SEARCH, capture) + group(options.hash, HASH, capture) + '$', 'i');\n}\n// CONCATENATED MODULE: ./src/combine.js\n\n\nvar CACHE = {};\nvar VALIDATOR_ID = 0;\nfunction combine() {\n var args = arguments;\n if (!validators.defaultOptions.memoize) return firstErr(args);\n var keys = [];\n\n for (var i = 0, len = args.length; i < len; ++i) {\n keys.push(args[i]._validatorId || (args[i]._validatorId = ++VALIDATOR_ID));\n }\n\n var key = keys.sort().join('-');\n return HAS_PROP.call(CACHE, key) ? CACHE[key] : CACHE[key] = firstErr(args);\n}\nfunction firstErr(arr) {\n return function () {\n for (var i = 0, len = arr.length, err; i < len; ++i) {\n if (err = arr[i].apply(null, arguments)) return err;\n }\n };\n}\n// CONCATENATED MODULE: ./src/validate-form.js\n\n\nfunction validateForm(validations) {\n /* istanbul ignore next */\n return function () {\n return process(validations, arguments);\n };\n}\n\nfunction process(validations, args, keys) {\n var errors = {};\n\n for (var attr in validations) {\n if (HAS_PROP.call(validations, attr) && validations[attr]) {\n var attrKeys = keys ? keys.concat(attr) : [attr];\n errors[attr] = isObject(validations[attr]) ? process(validations[attr], args, attrKeys) : firstErr([].concat(validations[attr])).apply(null, [].concat(getIn(args[0], attrKeys), args));\n }\n }\n\n return errors;\n}\n// CONCATENATED MODULE: ./src/index.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"required\", function() { return required; });\n/* concated harmony reexport absence */__webpack_require__.d(__webpack_exports__, \"absence\", function() { return src_absence; });\n/* concated harmony reexport acceptance */__webpack_require__.d(__webpack_exports__, \"acceptance\", function() { return src_acceptance; });\n/* concated harmony reexport addValidator */__webpack_require__.d(__webpack_exports__, \"addValidator\", function() { return addValidator; });\n/* concated harmony reexport confirmation */__webpack_require__.d(__webpack_exports__, \"confirmation\", function() { return src_confirmation; });\n/* concated harmony reexport date */__webpack_require__.d(__webpack_exports__, \"date\", function() { return src_date; });\n/* concated harmony reexport email */__webpack_require__.d(__webpack_exports__, \"email\", function() { return src_email; });\n/* concated harmony reexport exclusion */__webpack_require__.d(__webpack_exports__, \"exclusion\", function() { return src_exclusion; });\n/* concated harmony reexport file */__webpack_require__.d(__webpack_exports__, \"file\", function() { return src_file; });\n/* concated harmony reexport format */__webpack_require__.d(__webpack_exports__, \"format\", function() { return src_format; });\n/* concated harmony reexport inclusion */__webpack_require__.d(__webpack_exports__, \"inclusion\", function() { return src_inclusion; });\n/* concated harmony reexport length */__webpack_require__.d(__webpack_exports__, \"length\", function() { return src_length; });\n/* concated harmony reexport numericality */__webpack_require__.d(__webpack_exports__, \"numericality\", function() { return src_numericality; });\n/* concated harmony reexport presence */__webpack_require__.d(__webpack_exports__, \"presence\", function() { return src_presence; });\n/* concated harmony reexport url */__webpack_require__.d(__webpack_exports__, \"url\", function() { return src_url; });\n/* concated harmony reexport combine */__webpack_require__.d(__webpack_exports__, \"combine\", function() { return combine; });\n/* concated harmony reexport validateForm */__webpack_require__.d(__webpack_exports__, \"validateForm\", function() { return validateForm; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar required = src_presence; // alias\n\n/* harmony default export */ var src = __webpack_exports__[\"default\"] = (validators);\n\n\n//# sourceURL=webpack://ReduxFormValidators/./src/index.js_+_20_modules?");
/***/ })
/******/ });
});