free-email-domains 1.12.20
“Comprehensive list of free email provider domains for signup validation and disposable filtering.”
Install hook fetches branch-tip remote contentBasename is uppercase README.md
SHA-25691e3884b4bf31272784fd0d4c7f677b216c35e7577e6406d25c97201872780cc
Evidence
1{
2 "name": "free-email-domains",
3 "description": "Comprehensive list of free email provider domains for signup validation and disposable filtering.",
4 "homepage": "https://github.com/Kikobeats/free-email-domains",
5 "version": "1.12.20",
6 "main": "domains.js",
7 "author": {
8 "email": "josefrancisco.verdu@gmail.com",
9 "name": "Kiko Beats",
10 "url": "https://kikobeats.com"
⋯17 lines
62:37…
63 "email": "[email protected]"
64 }
65 ],
66 "repository": {
67 "type": "git",
68 "url": "git+https://github.com/kikobeats/free-email-domains.git"
69 },
70 "bugs": {
⋯12 lines
83 "validation"
84 ],
85 "dependencies": {},
86 "devDependencies": {
87 "@commitlint/cli": "latest",
88 "@commitlint/config-conventional": "latest",
⋯5 lines
94 "nano-staged": "latest",
95 "should": "latest",
96 "simple-git-hooks": "latest",
97 "standard": "latest",
98 "standard-version": "latest"
99 },
100 "engines": {
101 "node": ">= 18"
102 },
103 "files": [
104 "domains.js",
105 "domains.json",
106 "index.d.ts",
107 "scripts"
108 ],
109 "scripts": {
1import { writeFile } from 'node:fs/promises'
2
3const SOURCES = [
4 {
5 name: 'HubSpot blocked domains',
6 url: 'https://f.hubspotusercontent40.net/hubfs/2832391/Marketing/Lead-Capture/free-domains-2.csv'
7 },
8 {
9 name: 'Castle disposable email domains',
10 url: 'https://raw.githubusercontent.com/castle/disposable-email-domains/master/disposable-email-domains.txt'
11 },
12 {
13 name: 'Disposable email domains blocklist',
14 url: 'https://raw.githubusercontent.com/disposable-email-domains/disposable-email-domains/main/disposable_email_blocklist.conf'
15 }
16]
17
18/** Additional domains not present in the URL */
19const DOMAINS = [
20 '2iij.net',
⋯11 lines
⋯11 lines
256
257async function fetchSource (source) {
258 const res = await fetch(source.url)
259
260 if (!res.ok) {
261 throw new Error(`Unable to fetch ${source.name} (${res.status})`)
262 }
263
264 const text = await res.text()
265
266 if (text.startsWith('<!DOCTYPE html') || text.includes('<html')) {
267 throw new Error(`Received HTML instead of domain list for ${source.name}`)
268 }
269
⋯6 lines
276 for (const domain of DOMAINS) domains.add(domain)
277 const sorted = Array.from(domains).sort()
278 await writeFile('domains.json', JSON.stringify(sorted, null, 2))
279}
280
281main().catch(error => console.warn('free-email-domains: unable to refresh domains, using the bundled list', error))
1module.exports = require('./domains.json')
Showing the top 5 files — 1 more file (3 regions) not shown.
No evidence locations were recorded for this file. Raw result