Cleanup
This commit is contained in:
68
node_modules/validator/es/lib/isEmail.js
generated
vendored
68
node_modules/validator/es/lib/isEmail.js
generated
vendored
@@ -1,15 +1,3 @@
|
||||
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
||||
|
||||
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
||||
|
||||
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
||||
|
||||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
||||
|
||||
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
||||
|
||||
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
||||
|
||||
import assertString from './util/assertString';
|
||||
import merge from './util/merge';
|
||||
import isByteLength from './isByteLength';
|
||||
@@ -19,13 +7,17 @@ var default_email_options = {
|
||||
allow_display_name: false,
|
||||
require_display_name: false,
|
||||
allow_utf8_local_part: true,
|
||||
require_tld: true
|
||||
require_tld: true,
|
||||
blacklisted_chars: '',
|
||||
ignore_max_length: false,
|
||||
host_blacklist: [],
|
||||
host_whitelist: []
|
||||
};
|
||||
/* eslint-disable max-len */
|
||||
|
||||
/* eslint-disable no-control-regex */
|
||||
|
||||
var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)<(.+)>$/i;
|
||||
var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)</i;
|
||||
var emailUserPart = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i;
|
||||
var gmailUserPart = /^[a-z\d]+$/;
|
||||
var quotedEmailUser = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i;
|
||||
@@ -42,8 +34,7 @@ var defaultMaxEmailLength = 254;
|
||||
*/
|
||||
|
||||
function validateDisplayName(display_name) {
|
||||
var trim_quotes = display_name.match(/^"(.+)"$/i);
|
||||
var display_name_without_quotes = trim_quotes ? trim_quotes[1] : display_name; // display name with only spaces is not valid
|
||||
var display_name_without_quotes = display_name.replace(/^"(.+)"$/, '$1'); // display name with only spaces is not valid
|
||||
|
||||
if (!display_name_without_quotes.trim()) {
|
||||
return false;
|
||||
@@ -55,7 +46,7 @@ function validateDisplayName(display_name) {
|
||||
if (contains_illegal) {
|
||||
// if contains illegal characters,
|
||||
// must to be enclosed in double-quotes, otherwise it's not a valid display name
|
||||
if (!trim_quotes) {
|
||||
if (display_name_without_quotes === display_name) {
|
||||
return false;
|
||||
} // the quotes in display name must start with character symbol \
|
||||
|
||||
@@ -78,19 +69,16 @@ export default function isEmail(str, options) {
|
||||
var display_email = str.match(splitNameAddress);
|
||||
|
||||
if (display_email) {
|
||||
var display_name;
|
||||
var display_name = display_email[1]; // Remove display name and angle brackets to get email address
|
||||
// Can be done in the regex but will introduce a ReDOS (See #1597 for more info)
|
||||
|
||||
var _display_email = _slicedToArray(display_email, 3);
|
||||
|
||||
display_name = _display_email[1];
|
||||
str = _display_email[2];
|
||||
|
||||
// sometimes need to trim the last space to get the display name
|
||||
str = str.replace(display_name, '').replace(/(^<|>$)/g, ''); // sometimes need to trim the last space to get the display name
|
||||
// because there may be a space between display name and email address
|
||||
// eg. myname <address@gmail.com>
|
||||
// the display name is `myname` instead of `myname `, so need to trim the last space
|
||||
|
||||
if (display_name.endsWith(' ')) {
|
||||
display_name = display_name.substr(0, display_name.length - 1);
|
||||
display_name = display_name.slice(0, -1);
|
||||
}
|
||||
|
||||
if (!validateDisplayName(display_name)) {
|
||||
@@ -107,9 +95,18 @@ export default function isEmail(str, options) {
|
||||
|
||||
var parts = str.split('@');
|
||||
var domain = parts.pop();
|
||||
var user = parts.join('@');
|
||||
var lower_domain = domain.toLowerCase();
|
||||
|
||||
if (options.host_blacklist.includes(lower_domain)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (options.host_whitelist.length > 0 && !options.host_whitelist.includes(lower_domain)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var user = parts.join('@');
|
||||
|
||||
if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {
|
||||
/*
|
||||
Previously we removed dots for gmail addresses before validating.
|
||||
@@ -122,7 +119,7 @@ export default function isEmail(str, options) {
|
||||
|
||||
var username = user.split('+')[0]; // Dots are not included in gmail length restriction
|
||||
|
||||
if (!isByteLength(username.replace('.', ''), {
|
||||
if (!isByteLength(username.replace(/\./g, ''), {
|
||||
min: 6,
|
||||
max: 30
|
||||
})) {
|
||||
@@ -138,16 +135,17 @@ export default function isEmail(str, options) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!isByteLength(user, {
|
||||
if (options.ignore_max_length === false && (!isByteLength(user, {
|
||||
max: 64
|
||||
}) || !isByteLength(domain, {
|
||||
max: 254
|
||||
})) {
|
||||
}))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isFQDN(domain, {
|
||||
require_tld: options.require_tld
|
||||
require_tld: options.require_tld,
|
||||
ignore_max_length: options.ignore_max_length
|
||||
})) {
|
||||
if (!options.allow_ip_domain) {
|
||||
return false;
|
||||
@@ -158,7 +156,7 @@ export default function isEmail(str, options) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var noBracketdomain = domain.substr(1, domain.length - 2);
|
||||
var noBracketdomain = domain.slice(1, -1);
|
||||
|
||||
if (noBracketdomain.length === 0 || !isIP(noBracketdomain)) {
|
||||
return false;
|
||||
@@ -174,11 +172,15 @@ export default function isEmail(str, options) {
|
||||
var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;
|
||||
var user_parts = user.split('.');
|
||||
|
||||
for (var _i2 = 0; _i2 < user_parts.length; _i2++) {
|
||||
if (!pattern.test(user_parts[_i2])) {
|
||||
for (var _i = 0; _i < user_parts.length; _i++) {
|
||||
if (!pattern.test(user_parts[_i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.blacklisted_chars) {
|
||||
if (user.search(new RegExp("[".concat(options.blacklisted_chars, "]+"), 'g')) !== -1) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user