UNPKG

redux-form-validators

Version:

Simple validations with redux-form / react-final-form

60 lines (48 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _validators = _interopRequireDefault(require("./validators")); var _helpers = require("./helpers"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } // eslint-disable-next-line no-useless-escape var 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; var email = (0, _helpers.memoize)(function () { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, domainWhitelist = _ref.domainWhitelist, domainBlacklist = _ref.domainBlacklist, message = _ref.message, msg = _ref.msg, ifCond = _ref["if"], unless = _ref.unless, allowBlank = _ref.allowBlank; msg = msg || message; domainWhitelist = prepareList(domainWhitelist); domainBlacklist = prepareList(domainBlacklist); return (0, _helpers.prepare)(ifCond, unless, allowBlank, function (value) { var match = value.match(REG_EMAIL); if (!match) { return _validators["default"].formatMessage((0, _helpers.prepareMsg)(msg, 'email', 'invalid')); } var domain = match[1].toLowerCase(); if (domainWhitelist && !domainInList(domain, domainWhitelist) || domainBlacklist && domainInList(domain, domainBlacklist)) { return _validators["default"].formatMessage((0, _helpers.prepareMsg)(msg, 'emailDomain', 'domain', { domain: domain })); } }); }); email.REG_EMAIL = REG_EMAIL; var _default = email; // private exports["default"] = _default; function domainInList(domain, list) { return list.some(function (d) { return typeof d === 'string' ? d === domain : d.test(domain); }); } function prepareList(list) { return list ? list.map(function (d) { return d.indexOf('*') < 0 ? d.toLowerCase() : (0, _helpers.stringToReg)(d); }) : list; }