@emailverifier/sdk 0.1.1
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 +88 -0
- package/THIRD_PARTY_NOTICES.md +28 -0
- package/dist/cjs/cli.js +69 -0
- package/dist/cjs/client.js +76 -0
- package/dist/cjs/data/disposable-domains.generated.js +22028 -0
- package/dist/cjs/data/domains.js +256 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/offline.js +175 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/role-addresses.js +292 -0
- package/dist/esm/cli.js +67 -0
- package/dist/esm/client.js +71 -0
- package/dist/esm/data/disposable-domains.generated.js +22025 -0
- package/dist/esm/data/domains.js +253 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/offline.js +162 -0
- package/dist/esm/role-addresses.js +289 -0
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/client.d.ts +41 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/data/disposable-domains.generated.d.ts +3 -0
- package/dist/types/data/disposable-domains.generated.d.ts.map +1 -0
- package/dist/types/data/domains.d.ts +8 -0
- package/dist/types/data/domains.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/offline.d.ts +25 -0
- package/dist/types/offline.d.ts.map +1 -0
- package/dist/types/role-addresses.d.ts +2 -0
- package/dist/types/role-addresses.d.ts.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { disposableDataUpdatedAt, upstreamDisposableDomainList } from './disposable-domains.generated.js';
|
|
2
|
+
export { disposableDataUpdatedAt };
|
|
3
|
+
export const customDisposableDomainList = [
|
|
4
|
+
'10minutemail.com',
|
|
5
|
+
'10minutemail.net',
|
|
6
|
+
'10minutemail.org',
|
|
7
|
+
'1secmail.com',
|
|
8
|
+
'1secmail.net',
|
|
9
|
+
'1secmail.org',
|
|
10
|
+
'20minutemail.com',
|
|
11
|
+
'33mail.com',
|
|
12
|
+
'anonbox.net',
|
|
13
|
+
'burner.kiwi',
|
|
14
|
+
'byom.de',
|
|
15
|
+
'cool.fr.nf',
|
|
16
|
+
'correo-temp.com',
|
|
17
|
+
'courriel.fr.nf',
|
|
18
|
+
'dispostable.com',
|
|
19
|
+
'dropmail.me',
|
|
20
|
+
'emailfake.com',
|
|
21
|
+
'emailondeck.com',
|
|
22
|
+
'fakeinbox.com',
|
|
23
|
+
'fakemail.net',
|
|
24
|
+
'getairmail.com',
|
|
25
|
+
'getnada.com',
|
|
26
|
+
'grr.la',
|
|
27
|
+
'guerrillamail.biz',
|
|
28
|
+
'guerrillamail.com',
|
|
29
|
+
'guerrillamail.de',
|
|
30
|
+
'guerrillamail.info',
|
|
31
|
+
'guerrillamail.net',
|
|
32
|
+
'guerrillamail.org',
|
|
33
|
+
'guerrillamailblock.com',
|
|
34
|
+
'harakirimail.com',
|
|
35
|
+
'inboxkitten.com',
|
|
36
|
+
'jetable.fr.nf',
|
|
37
|
+
'mail-temporaire.fr',
|
|
38
|
+
'mail.tm',
|
|
39
|
+
'mail7.io',
|
|
40
|
+
'mailcatch.com',
|
|
41
|
+
'maildrop.cc',
|
|
42
|
+
'mailforspam.com',
|
|
43
|
+
'mailgen.biz',
|
|
44
|
+
'mailinator.com',
|
|
45
|
+
'mailinator.net',
|
|
46
|
+
'mailinator.org',
|
|
47
|
+
'mailinator2.com',
|
|
48
|
+
'mailnesia.com',
|
|
49
|
+
'mailnull.com',
|
|
50
|
+
'mailpoof.com',
|
|
51
|
+
'mega.zik.dj',
|
|
52
|
+
'mintemail.com',
|
|
53
|
+
'minuteinbox.com',
|
|
54
|
+
'moakt.com',
|
|
55
|
+
'mohmal.com',
|
|
56
|
+
'moncourrier.fr.nf',
|
|
57
|
+
'monemail.fr.nf',
|
|
58
|
+
'monmail.fr.nf',
|
|
59
|
+
'mytemp.email',
|
|
60
|
+
'nomail.xl.cx',
|
|
61
|
+
'nospam.ze.tc',
|
|
62
|
+
'pokemail.net',
|
|
63
|
+
'sharklasers.com',
|
|
64
|
+
'spam.la',
|
|
65
|
+
'spam4.me',
|
|
66
|
+
'spamgourmet.com',
|
|
67
|
+
'spamhereplease.com',
|
|
68
|
+
'speed.1s.fr',
|
|
69
|
+
'temp-mail.io',
|
|
70
|
+
'temp-mail.org',
|
|
71
|
+
'tempinbox.com',
|
|
72
|
+
'tempmail.com',
|
|
73
|
+
'tempmail.io',
|
|
74
|
+
'tempmail.net',
|
|
75
|
+
'tempmail.plus',
|
|
76
|
+
'tempmail.us',
|
|
77
|
+
'tempmailo.com',
|
|
78
|
+
'tempmailo.org',
|
|
79
|
+
'tempr.email',
|
|
80
|
+
'throwam.com',
|
|
81
|
+
'throwawaymail.com',
|
|
82
|
+
'tmpmail.org',
|
|
83
|
+
'trashmail.com',
|
|
84
|
+
'trashmail.de',
|
|
85
|
+
'trashmail.net',
|
|
86
|
+
'wegwerfmail.de',
|
|
87
|
+
'yopmail.com',
|
|
88
|
+
'yopmail.fr',
|
|
89
|
+
'yopmail.net'
|
|
90
|
+
];
|
|
91
|
+
export const freeEmailDomainList = [
|
|
92
|
+
'126.com',
|
|
93
|
+
'139.com',
|
|
94
|
+
'163.com',
|
|
95
|
+
'21cn.com',
|
|
96
|
+
'abv.bg',
|
|
97
|
+
'aim.com',
|
|
98
|
+
'alice.it',
|
|
99
|
+
'aol.com',
|
|
100
|
+
'arcor.de',
|
|
101
|
+
'atlas.cz',
|
|
102
|
+
'att.net',
|
|
103
|
+
'azet.sk',
|
|
104
|
+
'bellsouth.net',
|
|
105
|
+
'bigpond.com',
|
|
106
|
+
'bk.ru',
|
|
107
|
+
'blueyonder.co.uk',
|
|
108
|
+
'bol.com.br',
|
|
109
|
+
'btinternet.com',
|
|
110
|
+
'btopenworld.com',
|
|
111
|
+
'centrum.cz',
|
|
112
|
+
'centrum.sk',
|
|
113
|
+
'centurylink.net',
|
|
114
|
+
'charter.net',
|
|
115
|
+
'citromail.hu',
|
|
116
|
+
'comcast.net',
|
|
117
|
+
'cox.net',
|
|
118
|
+
'daum.net',
|
|
119
|
+
'disroot.org',
|
|
120
|
+
'duck.com',
|
|
121
|
+
'earthlink.net',
|
|
122
|
+
'eclipso.de',
|
|
123
|
+
'email.cz',
|
|
124
|
+
'email.it',
|
|
125
|
+
'fastmail.com',
|
|
126
|
+
'fastmail.fm',
|
|
127
|
+
'free.fr',
|
|
128
|
+
'freemail.gr',
|
|
129
|
+
'freemail.hu',
|
|
130
|
+
'freenet.de',
|
|
131
|
+
'frontier.com',
|
|
132
|
+
'gazeta.pl',
|
|
133
|
+
'gmail.com',
|
|
134
|
+
'gmx.at',
|
|
135
|
+
'gmx.ch',
|
|
136
|
+
'gmx.co.uk',
|
|
137
|
+
'gmx.com',
|
|
138
|
+
'gmx.de',
|
|
139
|
+
'gmx.net',
|
|
140
|
+
'gmx.us',
|
|
141
|
+
'googlemail.com',
|
|
142
|
+
'hanmail.net',
|
|
143
|
+
'hey.com',
|
|
144
|
+
'hotmail.co.uk',
|
|
145
|
+
'hotmail.com',
|
|
146
|
+
'hotmail.com.br',
|
|
147
|
+
'hotmail.de',
|
|
148
|
+
'hotmail.es',
|
|
149
|
+
'hotmail.fr',
|
|
150
|
+
'hotmail.it',
|
|
151
|
+
'hushmail.com',
|
|
152
|
+
'i.ua',
|
|
153
|
+
'icloud.com',
|
|
154
|
+
'inbox.lv',
|
|
155
|
+
'inbox.ru',
|
|
156
|
+
'indiatimes.com',
|
|
157
|
+
'interia.pl',
|
|
158
|
+
'laposte.net',
|
|
159
|
+
'libero.it',
|
|
160
|
+
'list.ru',
|
|
161
|
+
'live.co.uk',
|
|
162
|
+
'live.com',
|
|
163
|
+
'live.com.au',
|
|
164
|
+
'live.fr',
|
|
165
|
+
'mac.com',
|
|
166
|
+
'mail.bg',
|
|
167
|
+
'mail.com',
|
|
168
|
+
'mail.ee',
|
|
169
|
+
'mail.ru',
|
|
170
|
+
'mailbox.org',
|
|
171
|
+
'mailfence.com',
|
|
172
|
+
'mailo.com',
|
|
173
|
+
'mailo.fr',
|
|
174
|
+
'me.com',
|
|
175
|
+
'mozmail.com',
|
|
176
|
+
'msn.com',
|
|
177
|
+
'naver.com',
|
|
178
|
+
'o2.pl',
|
|
179
|
+
'onet.pl',
|
|
180
|
+
'optonline.net',
|
|
181
|
+
'optusnet.com.au',
|
|
182
|
+
'orange.fr',
|
|
183
|
+
'outlook.co.uk',
|
|
184
|
+
'outlook.com',
|
|
185
|
+
'outlook.com.au',
|
|
186
|
+
'outlook.de',
|
|
187
|
+
'outlook.es',
|
|
188
|
+
'outlook.fr',
|
|
189
|
+
'outlook.in',
|
|
190
|
+
'pm.me',
|
|
191
|
+
'poczta.fm',
|
|
192
|
+
'post.cz',
|
|
193
|
+
'posteo.de',
|
|
194
|
+
'privaterelay.appleid.com',
|
|
195
|
+
'proton.me',
|
|
196
|
+
'protonmail.ch',
|
|
197
|
+
'protonmail.com',
|
|
198
|
+
'qq.com',
|
|
199
|
+
'rambler.ru',
|
|
200
|
+
'rediffmail.com',
|
|
201
|
+
'riseup.net',
|
|
202
|
+
'rocketmail.com',
|
|
203
|
+
'rogers.com',
|
|
204
|
+
'runbox.com',
|
|
205
|
+
'sapo.pt',
|
|
206
|
+
'sbcglobal.net',
|
|
207
|
+
'seznam.cz',
|
|
208
|
+
'shaw.ca',
|
|
209
|
+
'simplelogin.com',
|
|
210
|
+
'sina.com',
|
|
211
|
+
'sympatico.ca',
|
|
212
|
+
't-online.de',
|
|
213
|
+
'talktalk.net',
|
|
214
|
+
'terra.com.br',
|
|
215
|
+
'tiscali.co.uk',
|
|
216
|
+
'tiscali.it',
|
|
217
|
+
'tlen.pl',
|
|
218
|
+
'tuta.com',
|
|
219
|
+
'tuta.io',
|
|
220
|
+
'tutamail.com',
|
|
221
|
+
'tutanota.com',
|
|
222
|
+
'tutanota.de',
|
|
223
|
+
'tutanota.io',
|
|
224
|
+
'ukr.net',
|
|
225
|
+
'uol.com.br',
|
|
226
|
+
'verizon.net',
|
|
227
|
+
'virgilio.it',
|
|
228
|
+
'virginmedia.com',
|
|
229
|
+
'volny.cz',
|
|
230
|
+
'wanadoo.fr',
|
|
231
|
+
'web.de',
|
|
232
|
+
'windstream.net',
|
|
233
|
+
'wp.pl',
|
|
234
|
+
'ya.ru',
|
|
235
|
+
'yahoo.co.in',
|
|
236
|
+
'yahoo.co.jp',
|
|
237
|
+
'yahoo.co.uk',
|
|
238
|
+
'yahoo.com',
|
|
239
|
+
'yahoo.com.br',
|
|
240
|
+
'yahoo.fr',
|
|
241
|
+
'yandex.com',
|
|
242
|
+
'yandex.ru',
|
|
243
|
+
'yeah.net',
|
|
244
|
+
'ymail.com',
|
|
245
|
+
'zoho.com',
|
|
246
|
+
'zohomail.com'
|
|
247
|
+
];
|
|
248
|
+
export const freeEmailDomains = new Set(freeEmailDomainList);
|
|
249
|
+
export const disposableDomainList = [...new Set([
|
|
250
|
+
...upstreamDisposableDomainList,
|
|
251
|
+
...customDisposableDomainList
|
|
252
|
+
])].filter(domain => !freeEmailDomains.has(domain)).sort();
|
|
253
|
+
export const disposableDomains = new Set(disposableDomainList);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { EmailVerifier, EmailVerifierError } from './client.js';
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { disposableDomains, freeEmailDomainList, freeEmailDomains } from './data/domains.js';
|
|
2
|
+
import { roleLocalParts } from './role-addresses.js';
|
|
3
|
+
const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/;
|
|
4
|
+
const domainPattern = /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/i;
|
|
5
|
+
const localPartPattern = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*$/i;
|
|
6
|
+
export const maxEmailLength = 254;
|
|
7
|
+
const maxLocalPartLength = 64;
|
|
8
|
+
function getRoleLocalPartAliases(localPart) {
|
|
9
|
+
const canonicalLocalPart = localPart.split('+')[0] ?? '';
|
|
10
|
+
const compactLocalPart = canonicalLocalPart.replace(/[._-]+/g, '');
|
|
11
|
+
return canonicalLocalPart === compactLocalPart
|
|
12
|
+
? [canonicalLocalPart]
|
|
13
|
+
: [canonicalLocalPart, compactLocalPart];
|
|
14
|
+
}
|
|
15
|
+
function hasValidLocalPartDots(localPart) {
|
|
16
|
+
return Boolean(localPart) && !localPart.startsWith('.') && !localPart.endsWith('.') && !localPart.includes('..');
|
|
17
|
+
}
|
|
18
|
+
function normalizeEmailDomain(domain) {
|
|
19
|
+
if (!domain || /[/?:#[\]@]/.test(domain))
|
|
20
|
+
return '';
|
|
21
|
+
try {
|
|
22
|
+
const url = new URL(`http://${domain}`);
|
|
23
|
+
return url.username || url.password || url.port || url.pathname !== '/' || url.search || url.hash
|
|
24
|
+
? ''
|
|
25
|
+
: url.hostname.toLowerCase();
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function isSingleEditAway(value, target) {
|
|
32
|
+
if (value === target || Math.abs(value.length - target.length) > 1)
|
|
33
|
+
return false;
|
|
34
|
+
if (value.length === target.length) {
|
|
35
|
+
const differences = [];
|
|
36
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
37
|
+
if (value[index] !== target[index])
|
|
38
|
+
differences.push(index);
|
|
39
|
+
if (differences.length > 2)
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
return differences.length === 1 || (differences.length === 2
|
|
43
|
+
&& differences[1] === differences[0] + 1
|
|
44
|
+
&& value[differences[0]] === target[differences[1]]
|
|
45
|
+
&& value[differences[1]] === target[differences[0]]);
|
|
46
|
+
}
|
|
47
|
+
const [shorter, longer] = value.length < target.length ? [value, target] : [target, value];
|
|
48
|
+
let shorterIndex = 0;
|
|
49
|
+
let longerIndex = 0;
|
|
50
|
+
let skipped = false;
|
|
51
|
+
while (shorterIndex < shorter.length && longerIndex < longer.length) {
|
|
52
|
+
if (shorter[shorterIndex] === longer[longerIndex]) {
|
|
53
|
+
shorterIndex += 1;
|
|
54
|
+
longerIndex += 1;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
if (skipped)
|
|
58
|
+
return false;
|
|
59
|
+
skipped = true;
|
|
60
|
+
longerIndex += 1;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
function getSuggestedDomain(domain) {
|
|
66
|
+
let suggestion = null;
|
|
67
|
+
for (const providerDomain of freeEmailDomainList) {
|
|
68
|
+
if (!isSingleEditAway(domain, providerDomain))
|
|
69
|
+
continue;
|
|
70
|
+
// Multiple possible corrections are more confusing than no suggestion.
|
|
71
|
+
if (suggestion)
|
|
72
|
+
return null;
|
|
73
|
+
suggestion = providerDomain;
|
|
74
|
+
}
|
|
75
|
+
return suggestion;
|
|
76
|
+
}
|
|
77
|
+
export function getDisposableDomainMatch(domain) {
|
|
78
|
+
const normalizedDomain = domain.trim().toLowerCase();
|
|
79
|
+
if (disposableDomains.has(normalizedDomain))
|
|
80
|
+
return normalizedDomain;
|
|
81
|
+
const labels = normalizedDomain.split('.');
|
|
82
|
+
for (let index = 1; index < labels.length - 1; index += 1) {
|
|
83
|
+
const parentDomain = labels.slice(index).join('.');
|
|
84
|
+
if (disposableDomains.has(parentDomain))
|
|
85
|
+
return parentDomain;
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
export function getFreeEmailDomainMatch(domain) {
|
|
90
|
+
const normalizedDomain = domain.trim().toLowerCase();
|
|
91
|
+
return freeEmailDomains.has(normalizedDomain) ? normalizedDomain : null;
|
|
92
|
+
}
|
|
93
|
+
export function isDisposableDomain(domain) {
|
|
94
|
+
return getDisposableDomainMatch(domain) !== null;
|
|
95
|
+
}
|
|
96
|
+
export function isFreeEmailProvider(domain) {
|
|
97
|
+
return getFreeEmailDomainMatch(domain) !== null;
|
|
98
|
+
}
|
|
99
|
+
export function isRoleAddress(email) {
|
|
100
|
+
const atIndex = email.lastIndexOf('@');
|
|
101
|
+
if (atIndex <= 0 || email.indexOf('@') !== atIndex)
|
|
102
|
+
return false;
|
|
103
|
+
const localPart = email.slice(0, atIndex).toLowerCase();
|
|
104
|
+
return getRoleLocalPartAliases(localPart).some(alias => roleLocalParts.has(alias));
|
|
105
|
+
}
|
|
106
|
+
export function analyzeEmail(input) {
|
|
107
|
+
const email = typeof input === 'string' ? input.trim() : '';
|
|
108
|
+
const atIndex = email.lastIndexOf('@');
|
|
109
|
+
const localPart = atIndex > 0 ? email.slice(0, atIndex) : '';
|
|
110
|
+
const rawDomain = atIndex > 0 && email.indexOf('@') === atIndex ? email.slice(atIndex + 1) : '';
|
|
111
|
+
const domain = normalizeEmailDomain(rawDomain);
|
|
112
|
+
const normalizedEmail = email ? `${localPart}@${domain || rawDomain.toLowerCase()}` : null;
|
|
113
|
+
const localPartLength = Boolean(localPart && localPart.length <= maxLocalPartLength);
|
|
114
|
+
const syntax = emailPattern.test(email)
|
|
115
|
+
&& hasValidLocalPartDots(localPart)
|
|
116
|
+
&& localPartLength
|
|
117
|
+
&& localPartPattern.test(localPart);
|
|
118
|
+
const emailLength = Boolean(email
|
|
119
|
+
&& normalizedEmail
|
|
120
|
+
&& email.length <= maxEmailLength
|
|
121
|
+
&& normalizedEmail.length <= maxEmailLength);
|
|
122
|
+
const domainFormat = Boolean(domain && domainPattern.test(domain));
|
|
123
|
+
const disposable = domain ? isDisposableDomain(domain) : false;
|
|
124
|
+
const freeProvider = domain ? isFreeEmailProvider(domain) : false;
|
|
125
|
+
const roleBased = syntax && isRoleAddress(email);
|
|
126
|
+
const suggestedDomain = freeProvider ? null : getSuggestedDomain(domain);
|
|
127
|
+
const suggestion = syntax && suggestedDomain ? `${localPart}@${suggestedDomain}` : null;
|
|
128
|
+
const reasons = [];
|
|
129
|
+
if (!syntax)
|
|
130
|
+
reasons.push('Email syntax is invalid.');
|
|
131
|
+
if (emailPattern.test(email) && !localPartLength)
|
|
132
|
+
reasons.push('Email local part exceeds the maximum length of 64 characters.');
|
|
133
|
+
if (email && !emailLength)
|
|
134
|
+
reasons.push('Email exceeds the maximum length of 254 characters.');
|
|
135
|
+
if (syntax && emailLength && !domainFormat)
|
|
136
|
+
reasons.push('Email domain format is invalid.');
|
|
137
|
+
if (disposable)
|
|
138
|
+
reasons.push('Domain is a known disposable email provider.');
|
|
139
|
+
if (freeProvider)
|
|
140
|
+
reasons.push('Domain is a mainstream free mailbox provider.');
|
|
141
|
+
if (roleBased)
|
|
142
|
+
reasons.push('Address is role-based and may not identify one person.');
|
|
143
|
+
if (suggestion)
|
|
144
|
+
reasons.push(`Did you mean ${suggestion}?`);
|
|
145
|
+
return {
|
|
146
|
+
email,
|
|
147
|
+
normalizedEmail: syntax && emailLength ? normalizedEmail : null,
|
|
148
|
+
domain: emailLength && domainFormat ? domain : null,
|
|
149
|
+
suggestion,
|
|
150
|
+
checks: {
|
|
151
|
+
syntax,
|
|
152
|
+
emailLength,
|
|
153
|
+
localPartLength,
|
|
154
|
+
domainFormat,
|
|
155
|
+
disposable,
|
|
156
|
+
freeProvider,
|
|
157
|
+
roleBased
|
|
158
|
+
},
|
|
159
|
+
reasons
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
export { customDisposableDomainList, disposableDataUpdatedAt, disposableDomainList, freeEmailDomainList } from './data/domains.js';
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
export const roleLocalParts = new Set([
|
|
2
|
+
'abuse',
|
|
3
|
+
'access',
|
|
4
|
+
'account',
|
|
5
|
+
'accounting',
|
|
6
|
+
'accounts',
|
|
7
|
+
'ap',
|
|
8
|
+
'accountspayable',
|
|
9
|
+
'accountsreceivable',
|
|
10
|
+
'ar',
|
|
11
|
+
'affiliate',
|
|
12
|
+
'affiliates',
|
|
13
|
+
'ambassador',
|
|
14
|
+
'ambassadors',
|
|
15
|
+
'admin',
|
|
16
|
+
'adminteam',
|
|
17
|
+
'administration',
|
|
18
|
+
'ads',
|
|
19
|
+
'advertising',
|
|
20
|
+
'academy',
|
|
21
|
+
'alerts',
|
|
22
|
+
'all',
|
|
23
|
+
'api',
|
|
24
|
+
'appointments',
|
|
25
|
+
'autoreply',
|
|
26
|
+
'autoresponder',
|
|
27
|
+
'automated',
|
|
28
|
+
'automation',
|
|
29
|
+
'audit',
|
|
30
|
+
'benefits',
|
|
31
|
+
'beta',
|
|
32
|
+
'betatest',
|
|
33
|
+
'betatesters',
|
|
34
|
+
'billing',
|
|
35
|
+
'bursar',
|
|
36
|
+
'bizdev',
|
|
37
|
+
'bookings',
|
|
38
|
+
'businessdevelopment',
|
|
39
|
+
'campaigns',
|
|
40
|
+
'bounce',
|
|
41
|
+
'bounces',
|
|
42
|
+
'brand',
|
|
43
|
+
'branding',
|
|
44
|
+
'careers',
|
|
45
|
+
'channel',
|
|
46
|
+
'clients',
|
|
47
|
+
'clientcare',
|
|
48
|
+
'clientrelations',
|
|
49
|
+
'clientservice',
|
|
50
|
+
'clientservices',
|
|
51
|
+
'clientsuccess',
|
|
52
|
+
'chargebacks',
|
|
53
|
+
'claims',
|
|
54
|
+
'collections',
|
|
55
|
+
'compliance',
|
|
56
|
+
'complianceteam',
|
|
57
|
+
'contact',
|
|
58
|
+
'contactus',
|
|
59
|
+
'contract',
|
|
60
|
+
'contracting',
|
|
61
|
+
'contracts',
|
|
62
|
+
'community',
|
|
63
|
+
'communications',
|
|
64
|
+
'comms',
|
|
65
|
+
'content',
|
|
66
|
+
'concierge',
|
|
67
|
+
'controller',
|
|
68
|
+
'counsel',
|
|
69
|
+
'ceo',
|
|
70
|
+
'cfo',
|
|
71
|
+
'coo',
|
|
72
|
+
'creator',
|
|
73
|
+
'creators',
|
|
74
|
+
'cto',
|
|
75
|
+
'customercare',
|
|
76
|
+
'customerengagement',
|
|
77
|
+
'customerhelp',
|
|
78
|
+
'customersupport',
|
|
79
|
+
'customerservice',
|
|
80
|
+
'customersuccess',
|
|
81
|
+
'customerexperience',
|
|
82
|
+
'customerrelations',
|
|
83
|
+
'cx',
|
|
84
|
+
'data',
|
|
85
|
+
'dataprotection',
|
|
86
|
+
'deliverability',
|
|
87
|
+
'delivery',
|
|
88
|
+
'dispatch',
|
|
89
|
+
'disputes',
|
|
90
|
+
'admissions',
|
|
91
|
+
'alumni',
|
|
92
|
+
'developers',
|
|
93
|
+
'devops',
|
|
94
|
+
'dns',
|
|
95
|
+
'donations',
|
|
96
|
+
'donotreply',
|
|
97
|
+
'donotrespond',
|
|
98
|
+
'dpo',
|
|
99
|
+
'editor',
|
|
100
|
+
'editorial',
|
|
101
|
+
'email',
|
|
102
|
+
'enablement',
|
|
103
|
+
'engineering',
|
|
104
|
+
'enquiries',
|
|
105
|
+
'enquiry',
|
|
106
|
+
'ecommerce',
|
|
107
|
+
'escalation',
|
|
108
|
+
'escalations',
|
|
109
|
+
'events',
|
|
110
|
+
'everyone',
|
|
111
|
+
'facilities',
|
|
112
|
+
'financialaid',
|
|
113
|
+
'fulfillment',
|
|
114
|
+
'finance',
|
|
115
|
+
'founder',
|
|
116
|
+
'founders',
|
|
117
|
+
'feedback',
|
|
118
|
+
'fundraising',
|
|
119
|
+
'giving',
|
|
120
|
+
'grant',
|
|
121
|
+
'grants',
|
|
122
|
+
'fraud',
|
|
123
|
+
'frontdesk',
|
|
124
|
+
'gdpr',
|
|
125
|
+
'growth',
|
|
126
|
+
'hello',
|
|
127
|
+
'help',
|
|
128
|
+
'helpcenter',
|
|
129
|
+
'helpdesk',
|
|
130
|
+
'hostmaster',
|
|
131
|
+
'hr',
|
|
132
|
+
'identity',
|
|
133
|
+
'info',
|
|
134
|
+
'invoices',
|
|
135
|
+
'insurance',
|
|
136
|
+
'infosec',
|
|
137
|
+
'incident',
|
|
138
|
+
'incidentresponse',
|
|
139
|
+
'incidents',
|
|
140
|
+
'inventory',
|
|
141
|
+
'investorrelations',
|
|
142
|
+
'investors',
|
|
143
|
+
'it',
|
|
144
|
+
'jobs',
|
|
145
|
+
'legal',
|
|
146
|
+
'legalteam',
|
|
147
|
+
'leasing',
|
|
148
|
+
'leadership',
|
|
149
|
+
'learning',
|
|
150
|
+
'leads',
|
|
151
|
+
'licensing',
|
|
152
|
+
'list',
|
|
153
|
+
'mailinglist',
|
|
154
|
+
'login',
|
|
155
|
+
'logistics',
|
|
156
|
+
'mail',
|
|
157
|
+
'mailerdaemon',
|
|
158
|
+
'management',
|
|
159
|
+
'marketing',
|
|
160
|
+
'media',
|
|
161
|
+
'medicalrecords',
|
|
162
|
+
'memberservices',
|
|
163
|
+
'messages',
|
|
164
|
+
'network',
|
|
165
|
+
'newsletter',
|
|
166
|
+
'noc',
|
|
167
|
+
'noreply',
|
|
168
|
+
'no-reply',
|
|
169
|
+
'noresponse',
|
|
170
|
+
'notifications',
|
|
171
|
+
'office',
|
|
172
|
+
'officeadmin',
|
|
173
|
+
'onboarding',
|
|
174
|
+
'onboardingteam',
|
|
175
|
+
'operations',
|
|
176
|
+
'ops',
|
|
177
|
+
'orders',
|
|
178
|
+
'owner',
|
|
179
|
+
'partners',
|
|
180
|
+
'partnerships',
|
|
181
|
+
'payments',
|
|
182
|
+
'payables',
|
|
183
|
+
'patients',
|
|
184
|
+
'people',
|
|
185
|
+
'peopleops',
|
|
186
|
+
'payroll',
|
|
187
|
+
'paralegal',
|
|
188
|
+
'preferencecenter',
|
|
189
|
+
'preferences',
|
|
190
|
+
'podcast',
|
|
191
|
+
'postmaster',
|
|
192
|
+
'press',
|
|
193
|
+
'product',
|
|
194
|
+
'productfeedback',
|
|
195
|
+
'privacy',
|
|
196
|
+
'privacyteam',
|
|
197
|
+
'procurement',
|
|
198
|
+
'promotions',
|
|
199
|
+
'purchasing',
|
|
200
|
+
'propertymanagement',
|
|
201
|
+
'pr',
|
|
202
|
+
'quotes',
|
|
203
|
+
'qa',
|
|
204
|
+
'quality',
|
|
205
|
+
'qualityassurance',
|
|
206
|
+
'r&d',
|
|
207
|
+
'recruiting',
|
|
208
|
+
'registrar',
|
|
209
|
+
'research',
|
|
210
|
+
'researchteam',
|
|
211
|
+
'reply',
|
|
212
|
+
'replyto',
|
|
213
|
+
'referrals',
|
|
214
|
+
'repairs',
|
|
215
|
+
'reservations',
|
|
216
|
+
'receipts',
|
|
217
|
+
'records',
|
|
218
|
+
'reception',
|
|
219
|
+
'receptiondesk',
|
|
220
|
+
'receivables',
|
|
221
|
+
'refunds',
|
|
222
|
+
'resellers',
|
|
223
|
+
'reliability',
|
|
224
|
+
'renewal',
|
|
225
|
+
'renewals',
|
|
226
|
+
'retail',
|
|
227
|
+
'risk',
|
|
228
|
+
'returns',
|
|
229
|
+
'rentals',
|
|
230
|
+
'sales',
|
|
231
|
+
'salesteam',
|
|
232
|
+
'salesops',
|
|
233
|
+
'scheduling',
|
|
234
|
+
'scholarship',
|
|
235
|
+
'scholarships',
|
|
236
|
+
'security',
|
|
237
|
+
'securityalerts',
|
|
238
|
+
'securityteam',
|
|
239
|
+
'service',
|
|
240
|
+
'servicedesk',
|
|
241
|
+
'shipping',
|
|
242
|
+
'social',
|
|
243
|
+
'socialmedia',
|
|
244
|
+
'sponsorship',
|
|
245
|
+
'sponsorships',
|
|
246
|
+
'staff',
|
|
247
|
+
'status',
|
|
248
|
+
'store',
|
|
249
|
+
'subscriptions',
|
|
250
|
+
'success',
|
|
251
|
+
'support',
|
|
252
|
+
'supportdesk',
|
|
253
|
+
'supportteam',
|
|
254
|
+
'supplychain',
|
|
255
|
+
'sysadmin',
|
|
256
|
+
'system',
|
|
257
|
+
'soc2',
|
|
258
|
+
'talent',
|
|
259
|
+
'team',
|
|
260
|
+
'test',
|
|
261
|
+
'testing',
|
|
262
|
+
'technicalsupport',
|
|
263
|
+
'techsupport',
|
|
264
|
+
'trust',
|
|
265
|
+
'trustandsafety',
|
|
266
|
+
'trustsafety',
|
|
267
|
+
'transactional',
|
|
268
|
+
'training',
|
|
269
|
+
'trials',
|
|
270
|
+
'updates',
|
|
271
|
+
'uptime',
|
|
272
|
+
'unsubscribe',
|
|
273
|
+
'userresearch',
|
|
274
|
+
'vendor',
|
|
275
|
+
'vendors',
|
|
276
|
+
'vip',
|
|
277
|
+
'vipsupport',
|
|
278
|
+
'warehouse',
|
|
279
|
+
'uxresearch',
|
|
280
|
+
'verification',
|
|
281
|
+
'verify',
|
|
282
|
+
'volunteer',
|
|
283
|
+
'volunteers',
|
|
284
|
+
'webinar',
|
|
285
|
+
'webinars',
|
|
286
|
+
'workshops',
|
|
287
|
+
'webmaster',
|
|
288
|
+
'workplace'
|
|
289
|
+
]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
|