fakefilter 0.1.97 → 0.1.100
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/README.md +18 -2
- package/assets/img/chart1.png +0 -0
- package/assets/img/chart2.png +0 -0
- package/assets/img/success-rate-10-minute-mail.com.png +0 -0
- package/assets/img/success-rate-10-minuten-mail.de.png +0 -0
- package/assets/img/success-rate-10mails.net.png +0 -0
- package/assets/img/success-rate-10minemail.com.png +0 -0
- package/assets/img/success-rate-10minut.com.pl.png +0 -0
- package/assets/img/success-rate-10minut.xyz.png +0 -0
- package/assets/img/success-rate-10minuteemails.com.png +0 -0
- package/assets/img/success-rate-10minutemail.co.za.png +0 -0
- package/assets/img/success-rate-10minutemail.com.png +0 -0
- package/assets/img/success-rate-10minutemail.info.png +0 -0
- package/assets/img/success-rate-10minutemail.net.png +0 -0
- package/assets/img/success-rate-10minutemail.org.png +0 -0
- package/assets/img/success-rate-10minutesemail.net.png +0 -0
- package/assets/img/success-rate-10minutesmail.us.png +0 -0
- package/assets/img/success-rate-1secmail.com.png +0 -0
- package/assets/img/success-rate-20minutemail.com.png +0 -0
- package/assets/img/success-rate-abandonmail.com.png +0 -0
- package/assets/img/success-rate-airmailbox.website.png +0 -0
- package/assets/img/success-rate-another-temp-mail.com.png +0 -0
- package/assets/img/success-rate-brodilla.email.png +0 -0
- package/assets/img/success-rate-byom.de.png +0 -0
- package/assets/img/success-rate-crazymailing.com.png +0 -0
- package/assets/img/success-rate-cryptogmail.com.png +0 -0
- package/assets/img/success-rate-default.tmail.thehp.in.png +0 -0
- package/assets/img/success-rate-developermail.com.png +0 -0
- package/assets/img/success-rate-dispemail.com.png +0 -0
- package/assets/img/success-rate-disposablemail.com.png +0 -0
- package/assets/img/success-rate-disposeamail.com.png +0 -0
- package/assets/img/success-rate-dispostable.com.png +0 -0
- package/assets/img/success-rate-dodsi.com.png +0 -0
- package/assets/img/success-rate-dropmail.me.png +0 -0
- package/assets/img/success-rate-easytrashmail.com.png +0 -0
- package/assets/img/success-rate-email-fake.com.png +0 -0
- package/assets/img/success-rate-emailfake.com.png +0 -0
- package/assets/img/success-rate-emailondeck.com.png +0 -0
- package/assets/img/success-rate-eyepaste.com.png +0 -0
- package/assets/img/success-rate-fakemail.io.png +0 -0
- package/assets/img/success-rate-fakemail.net.png +0 -0
- package/assets/img/success-rate-fakemailgenerator.com.png +0 -0
- package/assets/img/success-rate-fakermail.com.png +0 -0
- package/assets/img/success-rate-fex.plus.png +0 -0
- package/assets/img/success-rate-findtempmail.com.png +0 -0
- package/assets/img/success-rate-foxiomail.com.png +0 -0
- package/assets/img/success-rate-fyii.de.png +0 -0
- package/assets/img/success-rate-gecicimail.co.png +0 -0
- package/assets/img/success-rate-gecicimail.com.tr.png +0 -0
- package/assets/img/success-rate-generator.email.png +0 -0
- package/assets/img/success-rate-getnada.com.png +0 -0
- package/assets/img/success-rate-gettempmail.com.png +0 -0
- package/assets/img/success-rate-gpa.lu.png +0 -0
- package/assets/img/success-rate-guerrillamail.com.png +0 -0
- package/assets/img/success-rate-harakirimail.com.png +0 -0
- package/assets/img/success-rate-haribu.net.png +0 -0
- package/assets/img/success-rate-hizli.email.png +0 -0
- package/assets/img/success-rate-hottempmail.com.png +0 -0
- package/assets/img/success-rate-instant-email.org.png +0 -0
- package/assets/img/success-rate-instantemailaddress.com.png +0 -0
- package/assets/img/success-rate-linshi-email.com.png +0 -0
- package/assets/img/success-rate-lroid.com.png +0 -0
- package/assets/img/success-rate-luxusmail.org.png +0 -0
- package/assets/img/success-rate-mail-temp.com.png +0 -0
- package/assets/img/success-rate-mail.gen.tr.png +0 -0
- package/assets/img/success-rate-mail.gw.png +0 -0
- package/assets/img/success-rate-mail.tm.png +0 -0
- package/assets/img/success-rate-mail1a.de.png +0 -0
- package/assets/img/success-rate-mail7.io.png +0 -0
- package/assets/img/success-rate-mailcatch.com.png +0 -0
- package/assets/img/success-rate-maildim.com.png +0 -0
- package/assets/img/success-rate-maildrop.cc.png +0 -0
- package/assets/img/success-rate-mailinator.com.png +0 -0
- package/assets/img/success-rate-mailnesia.com.png +0 -0
- package/assets/img/success-rate-mailpoof.com.png +0 -0
- package/assets/img/success-rate-mailsac.com.png +0 -0
- package/assets/img/success-rate-mintemail.com.png +0 -0
- package/assets/img/success-rate-minuteinbox.com.png +0 -0
- package/assets/img/success-rate-moakt.com.png +0 -0
- package/assets/img/success-rate-mohmal.com.png +0 -0
- package/assets/img/success-rate-muellmail.com.png +0 -0
- package/assets/img/success-rate-mytemp.email.png +0 -0
- package/assets/img/success-rate-mytrashmailer.com.png +0 -0
- package/assets/img/success-rate-niepodam.pl.png +0 -0
- package/assets/img/success-rate-nolog.email.png +0 -0
- package/assets/img/success-rate-phaantm.de.png +0 -0
- package/assets/img/success-rate-shitmail.me.png +0 -0
- package/assets/img/success-rate-shitmail.org.png +0 -0
- package/assets/img/success-rate-spamdecoy.net.png +0 -0
- package/assets/img/success-rate-spamgourmet.com.png +0 -0
- package/assets/img/success-rate-spoofmail.de.png +0 -0
- package/assets/img/success-rate-t-mail.org.png +0 -0
- package/assets/img/success-rate-temp-inbox.com.png +0 -0
- package/assets/img/success-rate-temp-mail.io.png +0 -0
- package/assets/img/success-rate-temp-mail.org.png +0 -0
- package/assets/img/success-rate-temp-mails.com.png +0 -0
- package/assets/img/success-rate-temp.cab.png +0 -0
- package/assets/img/success-rate-tempail.com.png +0 -0
- package/assets/img/success-rate-tempinbox.xyz.png +0 -0
- package/assets/img/success-rate-tempmail.cn.png +0 -0
- package/assets/img/success-rate-tempmail.co.png +0 -0
- package/assets/img/success-rate-tempmail.dev.png +0 -0
- package/assets/img/success-rate-tempmail.ninja.png +0 -0
- package/assets/img/success-rate-tempmail.tel.png +0 -0
- package/assets/img/success-rate-tempmailed.com.png +0 -0
- package/assets/img/success-rate-tempmailid.com.png +0 -0
- package/assets/img/success-rate-tempmailo.com.png +0 -0
- package/assets/img/success-rate-tempo-email.com.png +0 -0
- package/assets/img/success-rate-tempo-mail.xyz.png +0 -0
- package/assets/img/success-rate-temporary-mail.net.png +0 -0
- package/assets/img/success-rate-temporarymail.com.png +0 -0
- package/assets/img/success-rate-tempos.email.png +0 -0
- package/assets/img/success-rate-tempr.email.png +0 -0
- package/assets/img/success-rate-temprmail.com.png +0 -0
- package/assets/img/success-rate-tenmail.org.png +0 -0
- package/assets/img/success-rate-throwaway.io.png +0 -0
- package/assets/img/success-rate-throwawaymail.com.png +0 -0
- package/assets/img/success-rate-tmailweb.com.png +0 -0
- package/assets/img/success-rate-trash-mail.com.png +0 -0
- package/assets/img/success-rate-trashmail.com.png +0 -0
- package/assets/img/success-rate-trashmail.de.png +0 -0
- package/assets/img/success-rate-trashmail.org.png +0 -0
- package/assets/img/success-rate-trashmail.ws.png +0 -0
- package/assets/img/success-rate-trashmails.com.png +0 -0
- package/assets/img/success-rate-txen.de.png +0 -0
- package/assets/img/success-rate-wegwerfemailadresse.com.png +0 -0
- package/assets/img/success-rate-yopmail.com.png +0 -0
- package/assets/img/success-rate-yopmail.fr.png +0 -0
- package/assets/img/success-rate-yopmail.net.png +0 -0
- package/examples/online.js +16 -0
- package/index.js +149 -26
- package/json/data.json +1 -1
- package/markdown/README.md +60 -1
- package/package.json +1 -1
- package/txt/data.txt +60 -1
package/README.md
CHANGED
|
@@ -33,11 +33,13 @@ This format supports firstseen,lastseen,randomSubdomain properties
|
|
|
33
33
|
[Txt](txt/data.txt)
|
|
34
34
|
|
|
35
35
|
## Javascript
|
|
36
|
-
We have implemented npm/javascript interface for Javascript Developers
|
|
36
|
+
We have implemented npm/javascript interface for Javascript Developers as demonstration
|
|
37
37
|
|
|
38
38
|
`npm i --save fakefilter`
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
You have to make sure that this npm package is always up2date in order this static implementation to work as designed.
|
|
41
|
+
|
|
42
|
+
Offline Lookup:
|
|
41
43
|
```
|
|
42
44
|
const { isFakeDomain, isFakeEmail } = require('fakefilter')
|
|
43
45
|
|
|
@@ -45,6 +47,20 @@ console.log(isFakeDomain('domain.com'))
|
|
|
45
47
|
console.log(isFakeEmail('user@domain.com'))
|
|
46
48
|
```
|
|
47
49
|
|
|
50
|
+
|
|
51
|
+
Online Lookup:
|
|
52
|
+
|
|
53
|
+
this version does not throw at all. You either get null (which indicates any error) or false or the object as reply
|
|
54
|
+
```
|
|
55
|
+
## also see examples/online.js
|
|
56
|
+
const { isFakeDomainOnline, isFakeEmailOnline } = require('fakefilter')
|
|
57
|
+
|
|
58
|
+
console.log(await isFakeDomainOnline('domain.com'))
|
|
59
|
+
console.log(await isFakeEmailOnline('user@domain.com'))
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
|
|
48
64
|
Test:
|
|
49
65
|
```
|
|
50
66
|
node index.js
|
package/assets/img/chart1.png
CHANGED
|
Binary file
|
package/assets/img/chart2.png
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const { isFakeDomainOnline, isFakeEmailOnline } = require('./../index')
|
|
2
|
+
|
|
3
|
+
async function start() {
|
|
4
|
+
try {
|
|
5
|
+
// not disposable answer
|
|
6
|
+
console.log(await isFakeDomainOnline('domain.com'))
|
|
7
|
+
console.log(await isFakeEmailOnline('user@domain.com'))
|
|
8
|
+
// disposable answer
|
|
9
|
+
console.log(await isFakeDomainOnline('grr.la'))
|
|
10
|
+
console.log(await isFakeEmailOnline('user@grr.la'))
|
|
11
|
+
} catch (err) {
|
|
12
|
+
console.log(err)
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
start()
|
package/index.js
CHANGED
|
@@ -1,62 +1,185 @@
|
|
|
1
|
-
|
|
2
1
|
/*
|
|
2
|
+
|
|
3
3
|
Basic Javascript Interface to lookup by Email or Domain
|
|
4
|
+
|
|
5
|
+
Important: you need to auto update npm package daily to make continious feed
|
|
6
|
+
|
|
4
7
|
*/
|
|
5
8
|
const assert = require('assert');
|
|
6
9
|
const static_json = require('./json/data.json')
|
|
10
|
+
const https = require('https')
|
|
7
11
|
|
|
8
12
|
function hostnameFromEmailAddress(email) {
|
|
9
|
-
if (email && typeof email==='string' && email.search(/@/)>0)
|
|
13
|
+
if (email && typeof email === 'string' && email.search(/@/) > 0)
|
|
10
14
|
return email.split(/@/)[1]
|
|
11
15
|
return null
|
|
12
16
|
}
|
|
13
17
|
|
|
14
|
-
function isFakeDomain(domain,json=false) {
|
|
15
|
-
if (!json) json=static_json
|
|
16
|
-
for(let dom of Object.keys(json.domains)) {
|
|
18
|
+
function isFakeDomain(domain, json = false) {
|
|
19
|
+
if (!json) json = static_json
|
|
20
|
+
for (let dom of Object.keys(json.domains)) {
|
|
17
21
|
// exact match
|
|
18
|
-
if (dom===domain.toLowerCase().trim()) return dom
|
|
22
|
+
if (dom === domain.toLowerCase().trim()) return dom
|
|
19
23
|
// subdomain match
|
|
20
|
-
if (domain.search(new RegExp(`.+\\.${dom}`))===0) return dom
|
|
24
|
+
if (domain.search(new RegExp(`.+\\.${dom}`)) === 0) return dom
|
|
21
25
|
}
|
|
22
26
|
return false
|
|
23
27
|
}
|
|
24
28
|
|
|
25
|
-
function
|
|
26
|
-
return
|
|
29
|
+
function fetch(url, timeout = 5000,json=true) {
|
|
30
|
+
return new Promise(async function (resolve, reject) {
|
|
31
|
+
try {
|
|
32
|
+
let request = https.get(url, (res) => {
|
|
33
|
+
if (res.statusCode !== 200) {
|
|
34
|
+
res.resume()
|
|
35
|
+
return reject('STATUSCODE')
|
|
36
|
+
}
|
|
37
|
+
let data = ''
|
|
38
|
+
res.on('data', (chunk) => { data += chunk })
|
|
39
|
+
res.on('close', () => {
|
|
40
|
+
if (json) {
|
|
41
|
+
try {
|
|
42
|
+
return resolve(JSON.parse(data))
|
|
43
|
+
}catch(err) {
|
|
44
|
+
return resolve(false)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return resolve(data)
|
|
48
|
+
})
|
|
49
|
+
})
|
|
50
|
+
request.setTimeout(timeout, () => {
|
|
51
|
+
request.destroy()
|
|
52
|
+
return reject('TIMEOUT')
|
|
53
|
+
})
|
|
54
|
+
request.end()
|
|
55
|
+
|
|
56
|
+
request.on('error', (err) => {
|
|
57
|
+
return reject(err)
|
|
58
|
+
})
|
|
59
|
+
} catch (err3) {
|
|
60
|
+
// errors like ERR_INVALID_PROTOCOL is thrown here
|
|
61
|
+
reject(err3)
|
|
62
|
+
}
|
|
63
|
+
})
|
|
27
64
|
}
|
|
28
65
|
|
|
29
|
-
|
|
30
|
-
|
|
66
|
+
function isFakeEmail(email, json = false) {
|
|
67
|
+
return isFakeDomain(hostnameFromEmailAddress(email), json)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function isFakeEmailOnline(email, timeout=5000) {
|
|
71
|
+
return isFakeDomainOnline(hostnameFromEmailAddress(email), timeout)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
function isFakeDomainOnline(domain,timeout=5000) {
|
|
76
|
+
// we intentionally do not reject because we do not want to hold
|
|
77
|
+
// the process too long, null indicates error
|
|
78
|
+
return new Promise(async function (resolve, reject) {
|
|
79
|
+
try {
|
|
80
|
+
let answer = await fetch(`https://fakefilter.net/api/is/fakedomain/${domain}`,timeout,true)
|
|
81
|
+
if (answer && answer.hasOwnProperty('retcode') && answer.retcode===200)
|
|
82
|
+
return resolve(answer)
|
|
83
|
+
}catch(err) {
|
|
84
|
+
// error returns null
|
|
85
|
+
return resolve(null)
|
|
86
|
+
}
|
|
87
|
+
})
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async function runTests() {
|
|
91
|
+
// fetch tests
|
|
92
|
+
|
|
93
|
+
// not existing domain
|
|
94
|
+
try {
|
|
95
|
+
await fetch(`https://nonexisting${Date.now()}.com`)
|
|
96
|
+
assert.equal(false, true) // we should never reach this position
|
|
97
|
+
} catch (err) {
|
|
98
|
+
assert.equal(err.code, 'ENOTFOUND')
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// not existing url on existing domain
|
|
102
|
+
try {
|
|
103
|
+
await fetch(`https://fakefilter.net/notexisting`)
|
|
104
|
+
assert.equal(false, true) // we should never reach this position
|
|
105
|
+
} catch (err) {
|
|
106
|
+
assert.equal(err, 'STATUSCODE')
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// invalid protocoll
|
|
110
|
+
try {
|
|
111
|
+
await fetch(`htps://fakefilter.net/notexisting`)
|
|
112
|
+
assert.equal(false, true) // we should never reach this position
|
|
113
|
+
} catch (err) {
|
|
114
|
+
assert.equal(err.code, 'ERR_INVALID_PROTOCOL')
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// invalid url
|
|
118
|
+
try {
|
|
119
|
+
await fetch(`://fakefilter.net/notexisting`)
|
|
120
|
+
assert.equal(false, true) // we should never reach this position
|
|
121
|
+
} catch (err) {
|
|
122
|
+
assert.equal(err.code, 'ERR_INVALID_URL')
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
// 404
|
|
127
|
+
try {
|
|
128
|
+
await fetch(`https://fakefilter.net/api/is/fakedomain/`)
|
|
129
|
+
assert.equal(false, true) // we should never reach this position
|
|
130
|
+
} catch (err) {
|
|
131
|
+
assert.equal(err, 'STATUSCODE')
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// non FakeDomain
|
|
135
|
+
assert.equal((await fetch(`https://fakefilter.net/api/is/fakedomain/fakefilter.net`)).retcode,200)
|
|
136
|
+
// FakeDomain
|
|
137
|
+
assert.equal((await fetch(`https://fakefilter.net/api/is/fakedomain/fakefilte r.net`)).retcode,-50)
|
|
138
|
+
|
|
139
|
+
|
|
31
140
|
let json = static_json
|
|
32
141
|
console.log(`Running tests`)
|
|
33
142
|
let all_domains = Object.keys(json.domains)
|
|
143
|
+
|
|
34
144
|
// all domains we know must be detected as FakeDomain
|
|
35
|
-
for(let domain of all_domains)
|
|
36
|
-
|
|
145
|
+
for (let domain of all_domains) {
|
|
146
|
+
// if (domain!=='www.barryogorman.com') continue
|
|
37
147
|
// console.log((domain),isFakeDomain(domain)===domain.toLowerCase())
|
|
38
148
|
// exact match
|
|
39
|
-
|
|
40
|
-
|
|
149
|
+
// console.log(`>> ${domain}`)
|
|
150
|
+
|
|
151
|
+
assert.notEqual(isFakeDomain(domain), false)
|
|
41
152
|
// subdomain match for example any@sub.test.com should match if test.com is part of the filter
|
|
42
|
-
assert.notEqual(isFakeDomain(`sub.${domain}`),false)
|
|
153
|
+
assert.notEqual(isFakeDomain(`sub.${domain}`), false)
|
|
43
154
|
|
|
44
|
-
assert.notEqual(isFakeDomain(`sub.sub.${domain}`),false)
|
|
45
|
-
assert.notEqual(isFakeDomain(`another.sub.sub.${domain}`),false)
|
|
155
|
+
assert.notEqual(isFakeDomain(`sub.sub.${domain}`), false)
|
|
156
|
+
assert.notEqual(isFakeDomain(`another.sub.sub.${domain}`), false)
|
|
46
157
|
// sub$hostname should not be detected as fakedomain - if we have test.com in the filter, subtest.com should not be detected as fake
|
|
47
|
-
if (domain.search(/^[^.]+\.[^.]+$/)==0)
|
|
48
|
-
{
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
assert.notEqual(isFakeEmail(`any
|
|
53
|
-
|
|
158
|
+
if (domain.search(/^[^.]+\.[^.]+$/) == 0) {
|
|
159
|
+
assert.equal(isFakeEmail(`any@sub${domain}`), false)
|
|
160
|
+
assert.equal(isFakeDomain(`sub${domain}`), false)
|
|
161
|
+
}
|
|
162
|
+
assert.notEqual(isFakeEmail(`any@${domain}`), false)
|
|
163
|
+
assert.notEqual(isFakeEmail(`any@sub.${domain}`), false)
|
|
164
|
+
|
|
165
|
+
// RESTFul API query
|
|
166
|
+
assert.equal((await isFakeDomainOnline(domain)).isFakeDomain,domain)
|
|
167
|
+
assert.equal((await isFakeEmailOnline(`any@${domain}`)).isFakeDomain, domain)
|
|
168
|
+
assert.equal((await isFakeEmailOnline(`any@sub${domain}`)).isFakeDomain, false)
|
|
54
169
|
}
|
|
55
170
|
console.log(`OK`)
|
|
171
|
+
process.exit(0)
|
|
56
172
|
}
|
|
57
173
|
|
|
174
|
+
// basic tests
|
|
175
|
+
if (require.main == module) runTests()
|
|
58
176
|
|
|
59
177
|
module.exports = {
|
|
178
|
+
// offline version
|
|
60
179
|
isFakeDomain,
|
|
61
|
-
isFakeEmail
|
|
180
|
+
isFakeEmail,
|
|
181
|
+
|
|
182
|
+
// online version
|
|
183
|
+
isFakeDomainOnline,
|
|
184
|
+
isFakeEmailOnline
|
|
62
185
|
}
|