UNPKG

java-bean-validation.js

Version:
76 lines 3.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("../core/core"); function registerStricterEmailValidator(punycodeToASCII) { core_1.VALIDATORS['Email'] = function EmailValidator(value) { if (value === null || value === undefined) { return true; } if (typeof value === 'number') { value = value + ''; } if (value instanceof Date) { value = value + ''; } if (typeof value !== 'string') { return true; } return isValid(value); }; var CASE_INSENSITIVE = "i"; var LOCAL_PART_ATOM = "[a-z0-9!#$%&'*+/=?^_`{|}~\u0080-\uFFFF-]"; var LOCAL_PART_INSIDE_QUOTES_ATOM = "([a-z0-9!#$%&'*.(),<>\\[\\]:; @+/=?^_`{|}~\u0080-\uFFFF-]|\\\\\\\\|\\\\\\\")"; var DOMAIN_LABEL = "[a-z0-9!#$%&'*+/=?^_`{|}~-]"; var DOMAIN = DOMAIN_LABEL + "+(\\." + DOMAIN_LABEL + "+)*"; var IP_DOMAIN = "\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\]"; var IP_V6_DOMAIN = "(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))"; var MAX_LOCAL_PART_LENGTH = 64; var MAX_DOMAIN_PART_LENGTH = 255; var LOCAL_PART_PATTERN = new RegExp("^" + "(" + LOCAL_PART_ATOM + "+|\"" + LOCAL_PART_INSIDE_QUOTES_ATOM + "+\")" + "(\\." + "(" + LOCAL_PART_ATOM + "+|\"" + LOCAL_PART_INSIDE_QUOTES_ATOM + "+\")" + ")*" + "$", CASE_INSENSITIVE); var DOMAIN_PATTERN = new RegExp("^" + DOMAIN + "|" + IP_DOMAIN + "|" + "\\[IPv6:" + IP_V6_DOMAIN + "\\]" + "$", CASE_INSENSITIVE); function isValid(value) { if (value === null || value === undefined || value.length === 0) { return true; } var stringValue = value; var splitPosition = stringValue.lastIndexOf("@"); if (splitPosition < 0) { return false; } var localPart = stringValue.substring(0, splitPosition); var domainPart = stringValue.substring(splitPosition + 1); if (!matchLocalPart(localPart)) { return false; } return matchDomain(domainPart); } function matchLocalPart(localPart) { if (localPart.length > MAX_LOCAL_PART_LENGTH) { return false; } return LOCAL_PART_PATTERN.test(localPart); } function matchDomain(domain) { if (domain.lastIndexOf(".") === domain.length) { return false; } var asciiString; try { asciiString = punycodeToASCII(domain); } catch (e) { return false; } if (asciiString.length > MAX_DOMAIN_PART_LENGTH) { return false; } return DOMAIN_PATTERN.test(asciiString); } } exports.registerStricterEmailValidator = registerStricterEmailValidator; //# sourceMappingURL=stricterEmailValidator.js.map