@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.
@@ -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,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}