@email-utils/validator-syntax 0.0.1-9 → 1.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/Readme.md +1 -1
- package/THIRD_PARTY_NOTICES.md +37 -0
- package/dist/fixtures.cjs +2229 -0
- package/dist/fixtures.cjs.map +1 -0
- package/dist/fixtures.d.cts +247 -0
- package/dist/fixtures.d.mts +247 -0
- package/dist/fixtures.mjs +2220 -0
- package/dist/fixtures.mjs.map +1 -0
- package/dist/index.cjs +2310 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +96 -0
- package/dist/index.d.mts +96 -0
- package/dist/index.mjs +2307 -0
- package/dist/index.mjs.map +1 -0
- package/dist/result-CNbJ54oT.d.cts +116 -0
- package/dist/result-CNbJ54oT.d.mts +116 -0
- package/package.json +66 -73
- package/.babelrc +0 -8
- package/.eslintignore +0 -5
- package/.nvmrc +0 -1
- package/.nycrc.json +0 -11
- package/@types/index.d.ts +0 -30
- package/Readme.old.md +0 -103
- package/bin/tag.sh +0 -21
- package/dist/index.js +0 -272
- package/dist/index.js.map +0 -1
- package/src/index.ts +0 -342
- package/test/index.test.ts +0 -1612
- package/tsconfig.json +0 -22
package/Readme.old.md
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
# Email Syntax Validator
|
|
2
|
-
|
|
3
|
-
## A Robust Tool for Validating Emails
|
|
4
|
-
|
|
5
|
-
[ ](https://app.codeship.com/projects/297684)
|
|
6
|
-
[](https://codecov.io/gh/ssmith-wombatweb/is-valid-email/branch/master)
|
|
7
|
-
[](https://david-dm.org/ssmith-wombatweb/is-valid-email.svg)
|
|
8
|
-
[](https://badge.fury.io/js/ssmith-is-valid-email)
|
|
9
|
-
|
|
10
|
-
[Project Repo](https://github.com/ssmith-wombatweb/is-valid-email)
|
|
11
|
-
|
|
12
|
-
This script checks the validity of a wide range of email types. It follows most of the rules outlined here: [Email Address - Wikipedia](https://en.wikipedia.org/wiki/Email_address). It was created because of performance issues with RegEx when working with emails in React.
|
|
13
|
-
|
|
14
|
-
### Author
|
|
15
|
-
Written by Simeon Smith.
|
|
16
|
-
|
|
17
|
-
[Portfolio](https://www.simeonsmith.me) | [Resume](https://resume.simeonsmith.me) | [Github](https://github.com/ssmith-wombatweb)
|
|
18
|
-
|
|
19
|
-
## Installation
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
npm i -S ssmith-is-valid-email
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Using the Function
|
|
26
|
-
|
|
27
|
-
This function supports all modern browser including IE9+.
|
|
28
|
-
|
|
29
|
-
### Importing
|
|
30
|
-
|
|
31
|
-
#### ES6 JS
|
|
32
|
-
|
|
33
|
-
```javascript
|
|
34
|
-
import isValidEmail from 'ssmith-is-valid-email';
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
#### Common JS Import
|
|
38
|
-
```javascript
|
|
39
|
-
const isValidEmail = require('ssmith-is-valid-email');
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Calling the Function
|
|
43
|
-
|
|
44
|
-
```javascript
|
|
45
|
-
isValidEmail('test@google.com');
|
|
46
|
-
// Returns true or false.
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Testing
|
|
50
|
-
|
|
51
|
-
The following emails were tested. It follows most of the rules outlined here: [Email Address - Wikipedia](https://en.wikipedia.org/wiki/Email_address).
|
|
52
|
-
|
|
53
|
-
### Valid Emails
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
simple@example.com
|
|
57
|
-
very.common@example.com
|
|
58
|
-
disposable.style.email.with+symbol@example.com
|
|
59
|
-
other.email-with-hyphen@example.com
|
|
60
|
-
user.name+tag+sorting@example.com
|
|
61
|
-
x@example.com
|
|
62
|
-
example-indeed@strange-example.com
|
|
63
|
-
example@s.example
|
|
64
|
-
admin@test.co
|
|
65
|
-
" "@example.org
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Invalid Emails
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
Abc.example.com
|
|
72
|
-
@Abc.example.com
|
|
73
|
-
james@google
|
|
74
|
-
james@google.c
|
|
75
|
-
james richards@google.com
|
|
76
|
-
james" richards@google.com
|
|
77
|
-
james@cb$.com
|
|
78
|
-
A@b@c@example.com
|
|
79
|
-
a"b(c)d,e:f;g<h>i[j\\k]l@example.com
|
|
80
|
-
just"not"right@example.com
|
|
81
|
-
just."not"right@example.com
|
|
82
|
-
1234567890123456789012345678901234567890123456789012345678901234+x@example.com
|
|
83
|
-
john..doe@example.com
|
|
84
|
-
john.doe@example..com
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Not Yet Supported
|
|
88
|
-
|
|
89
|
-
#### Should Be Valid
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
#### Not Useful to Support
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
admin@mailserver1
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Performance
|
|
102
|
-
|
|
103
|
-
This script will run 1000 times on a valid or invalid email in less than 20 milliseconds.
|
package/bin/tag.sh
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
if [ $1 ]; then
|
|
4
|
-
echo "Creating a new $1 version."
|
|
5
|
-
|
|
6
|
-
npm version $1
|
|
7
|
-
version=`node -e "console.log(require('./package.json').version);"`
|
|
8
|
-
|
|
9
|
-
npm run build
|
|
10
|
-
git add -A
|
|
11
|
-
git commit -m "Build for $version."
|
|
12
|
-
|
|
13
|
-
echo "Publishing version $version."
|
|
14
|
-
|
|
15
|
-
git push
|
|
16
|
-
git push --tags
|
|
17
|
-
npm publish --access public
|
|
18
|
-
else
|
|
19
|
-
echo "No version type provided. (ie. ./bin/tag.sh version)";
|
|
20
|
-
fi
|
|
21
|
-
|
package/dist/index.js
DELETED
|
@@ -1,272 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const tlds = require("tlds/index.json");
|
|
13
|
-
class EmailSyntaxValidator {
|
|
14
|
-
constructor(configParam = {}) {
|
|
15
|
-
this.defaultConfig = {
|
|
16
|
-
local: {
|
|
17
|
-
alphaUpper: true,
|
|
18
|
-
alphaLower: true,
|
|
19
|
-
numeric: true,
|
|
20
|
-
period: true,
|
|
21
|
-
printable: true,
|
|
22
|
-
quote: true,
|
|
23
|
-
hyphen: true,
|
|
24
|
-
spaces: true,
|
|
25
|
-
},
|
|
26
|
-
domain: {
|
|
27
|
-
alphaUpper: true,
|
|
28
|
-
alphaLower: true,
|
|
29
|
-
numeric: true,
|
|
30
|
-
period: true,
|
|
31
|
-
hyphen: true,
|
|
32
|
-
tld: true,
|
|
33
|
-
localhost: false,
|
|
34
|
-
charsBeforeDot: 1,
|
|
35
|
-
charsAfterDot: 2,
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
this.config = this.defaultConfig;
|
|
39
|
-
this.chars = {
|
|
40
|
-
alphaLower: 'abcdefghijklmnopqrstuvwxyz',
|
|
41
|
-
alphaUpper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
|
|
42
|
-
numeric: '0123456789',
|
|
43
|
-
dot: ',',
|
|
44
|
-
printable: "!#$%&'*+/=?^_`{|}~",
|
|
45
|
-
space: ' ',
|
|
46
|
-
quote: '"',
|
|
47
|
-
hyphen: '-',
|
|
48
|
-
period: '.',
|
|
49
|
-
};
|
|
50
|
-
this.email = '';
|
|
51
|
-
this.originalEmail = '';
|
|
52
|
-
let key;
|
|
53
|
-
for (key in configParam) {
|
|
54
|
-
const configGroup = configParam[key];
|
|
55
|
-
for (const subKey in configGroup) {
|
|
56
|
-
const subKeyType = subKey;
|
|
57
|
-
this.config[key][subKeyType] = configGroup[subKeyType];
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
gatherChars(charConfig) {
|
|
62
|
-
let characters = '';
|
|
63
|
-
if (charConfig.alphaUpper === true) {
|
|
64
|
-
characters += this.chars.alphaUpper;
|
|
65
|
-
}
|
|
66
|
-
if (charConfig.alphaLower === true) {
|
|
67
|
-
characters += this.chars.alphaLower;
|
|
68
|
-
}
|
|
69
|
-
if (charConfig.numeric === true) {
|
|
70
|
-
characters += this.chars.numeric;
|
|
71
|
-
}
|
|
72
|
-
if (charConfig.hyphen === true) {
|
|
73
|
-
characters += this.chars.hyphen;
|
|
74
|
-
}
|
|
75
|
-
if ('printable' in charConfig && charConfig.printable === true) {
|
|
76
|
-
characters += this.chars.printable;
|
|
77
|
-
}
|
|
78
|
-
if ('spaces' in charConfig && charConfig.spaces === true) {
|
|
79
|
-
characters += this.chars.space;
|
|
80
|
-
}
|
|
81
|
-
if ('quote' in charConfig && charConfig.quote === true) {
|
|
82
|
-
characters += this.chars.quote;
|
|
83
|
-
}
|
|
84
|
-
if (charConfig.period === true) {
|
|
85
|
-
characters += this.chars.period;
|
|
86
|
-
}
|
|
87
|
-
return characters.split('');
|
|
88
|
-
}
|
|
89
|
-
validateGeneral() {
|
|
90
|
-
const atSymbolIndex = this.email.indexOf('@');
|
|
91
|
-
if (atSymbolIndex < 1) {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
validateChars(chars, charsToValidate) {
|
|
97
|
-
let quoteOpen = false;
|
|
98
|
-
for (let l = 0; l < charsToValidate.length; l++) {
|
|
99
|
-
const letter = charsToValidate[l];
|
|
100
|
-
if (this.config.local.quote) {
|
|
101
|
-
if (letter === '"') {
|
|
102
|
-
quoteOpen = !quoteOpen;
|
|
103
|
-
if (l !== 0 && l !== charsToValidate.length - 1) {
|
|
104
|
-
if (quoteOpen && !(charsToValidate[l - 1] === '.')) {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
else if (!quoteOpen && !(charsToValidate[l + 1] === '.')) {
|
|
108
|
-
return false;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
const letterInAllowed = chars.indexOf(letter) !== -1;
|
|
114
|
-
if (!letterInAllowed) {
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return true;
|
|
119
|
-
}
|
|
120
|
-
validateLocal() {
|
|
121
|
-
const validChars = this.gatherChars(this.config.local);
|
|
122
|
-
let localLetters = this.email.slice(0, this.email.indexOf('@')).split('');
|
|
123
|
-
if (this.config.local.printable) {
|
|
124
|
-
const percentInLocalIndex = localLetters.indexOf('%');
|
|
125
|
-
if (percentInLocalIndex !== -1) {
|
|
126
|
-
localLetters = localLetters.slice(0, percentInLocalIndex);
|
|
127
|
-
}
|
|
128
|
-
const bangInLocalIndex = localLetters.indexOf('!');
|
|
129
|
-
if (bangInLocalIndex !== -1) {
|
|
130
|
-
localLetters = localLetters.slice(bangInLocalIndex);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
if (localLetters.length > 64) {
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
const charsValid = this.validateChars(validChars, localLetters);
|
|
137
|
-
if (!charsValid) {
|
|
138
|
-
return false;
|
|
139
|
-
}
|
|
140
|
-
const indexOfDoublePeriods = this.email.indexOf('..');
|
|
141
|
-
if (indexOfDoublePeriods !== -1) {
|
|
142
|
-
const atSymbolIndex = this.email.indexOf('@');
|
|
143
|
-
if (indexOfDoublePeriods > atSymbolIndex) {
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
const indexOfFirstQuoteInLocal = localLetters.indexOf('"');
|
|
147
|
-
const indexOfLastQuoteInLocal = localLetters.length -
|
|
148
|
-
`${localLetters}`.split('').reverse().join('').indexOf('"') -
|
|
149
|
-
1;
|
|
150
|
-
if (indexOfFirstQuoteInLocal < 0 || indexOfLastQuoteInLocal < 0) {
|
|
151
|
-
return false;
|
|
152
|
-
}
|
|
153
|
-
if (indexOfFirstQuoteInLocal >= indexOfDoublePeriods ||
|
|
154
|
-
indexOfDoublePeriods >= indexOfLastQuoteInLocal) {
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
const indexOfSpace = localLetters.indexOf(' ');
|
|
159
|
-
if (indexOfSpace !== -1 &&
|
|
160
|
-
(localLetters[indexOfSpace + 1] !== '"' ||
|
|
161
|
-
localLetters[indexOfSpace - 1] !== '"')) {
|
|
162
|
-
return false;
|
|
163
|
-
}
|
|
164
|
-
return true;
|
|
165
|
-
}
|
|
166
|
-
validateDomainParts(domain) {
|
|
167
|
-
const dotIndex = domain.lastIndexOf('.');
|
|
168
|
-
if (dotIndex === -1 && this.config.domain.localhost === false) {
|
|
169
|
-
return false;
|
|
170
|
-
}
|
|
171
|
-
if (dotIndex !== -1) {
|
|
172
|
-
if (this.config.domain.charsBeforeDot !== -1) {
|
|
173
|
-
if (dotIndex <= this.config.domain.charsBeforeDot) {
|
|
174
|
-
return false;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
if (this.config.domain.charsAfterDot !== -1) {
|
|
178
|
-
if (dotIndex === domain.length - this.config.domain.charsAfterDot) {
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
if (this.config.domain.tld) {
|
|
183
|
-
const tld = domain.slice(dotIndex + 1);
|
|
184
|
-
let tldExists = false;
|
|
185
|
-
for (let t = 0; t < tlds.length; t++) {
|
|
186
|
-
const currentTld = tlds[t];
|
|
187
|
-
if (tld.toLowerCase() === currentTld) {
|
|
188
|
-
tldExists = true;
|
|
189
|
-
}
|
|
190
|
-
if (tldExists) {
|
|
191
|
-
break;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
if (!tldExists) {
|
|
195
|
-
return false;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return true;
|
|
200
|
-
}
|
|
201
|
-
validateDomain() {
|
|
202
|
-
const domain = this.email.slice(this.email.indexOf('@') + 1);
|
|
203
|
-
const domainPartsValid = this.validateDomainParts(domain);
|
|
204
|
-
if (!domainPartsValid) {
|
|
205
|
-
return false;
|
|
206
|
-
}
|
|
207
|
-
const validChars = this.gatherChars(this.config.domain);
|
|
208
|
-
const domainLetters = domain.split('');
|
|
209
|
-
if (this.config.local.printable) {
|
|
210
|
-
const localLetters = this.email
|
|
211
|
-
.slice(0, this.email.indexOf('@'))
|
|
212
|
-
.split('');
|
|
213
|
-
const percentInLocalIndex = localLetters.indexOf('%');
|
|
214
|
-
if (percentInLocalIndex !== -1) {
|
|
215
|
-
const relayDomain = localLetters.slice(percentInLocalIndex + 1);
|
|
216
|
-
const relayDomainPartsValid = this.validateDomainParts(relayDomain.join(''));
|
|
217
|
-
if (!relayDomainPartsValid) {
|
|
218
|
-
return false;
|
|
219
|
-
}
|
|
220
|
-
const charsValid = this.validateChars(validChars, relayDomain);
|
|
221
|
-
if (!charsValid) {
|
|
222
|
-
return false;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
const bangInLocalIndex = localLetters.indexOf('!');
|
|
226
|
-
if (bangInLocalIndex !== -1) {
|
|
227
|
-
const relayDomain = localLetters.slice(0, bangInLocalIndex);
|
|
228
|
-
const relayDomainPartsValid = this.validateDomainParts(relayDomain.join(''));
|
|
229
|
-
if (!relayDomainPartsValid) {
|
|
230
|
-
return false;
|
|
231
|
-
}
|
|
232
|
-
const charsValid = this.validateChars(validChars, relayDomain);
|
|
233
|
-
if (!charsValid) {
|
|
234
|
-
return false;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
const charsValid = this.validateChars(validChars, domainLetters);
|
|
239
|
-
if (!charsValid) {
|
|
240
|
-
return false;
|
|
241
|
-
}
|
|
242
|
-
return true;
|
|
243
|
-
}
|
|
244
|
-
validate(email) {
|
|
245
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
246
|
-
if (typeof email !== 'string') {
|
|
247
|
-
console.error('Email not a string.', email);
|
|
248
|
-
return false;
|
|
249
|
-
}
|
|
250
|
-
else if (!email) {
|
|
251
|
-
console.error('Email not provided.', email);
|
|
252
|
-
return false;
|
|
253
|
-
}
|
|
254
|
-
this.email = email;
|
|
255
|
-
const generalValid = this.validateGeneral();
|
|
256
|
-
if (!generalValid) {
|
|
257
|
-
return false;
|
|
258
|
-
}
|
|
259
|
-
const localValid = this.validateLocal();
|
|
260
|
-
if (!localValid) {
|
|
261
|
-
return false;
|
|
262
|
-
}
|
|
263
|
-
const domainValid = this.validateDomain();
|
|
264
|
-
if (!domainValid) {
|
|
265
|
-
return false;
|
|
266
|
-
}
|
|
267
|
-
return true;
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
exports.default = EmailSyntaxValidator;
|
|
272
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|