redux-form-validators
Version:
Simple validations with redux-form / react-final-form
60 lines (48 loc) • 1.99 kB
JavaScript
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;
}
;