{"_id":"@launchfirstagency/happy-mail","_rev":"35-f92653e212a73084bc1208ff78132212","name":"@launchfirstagency/happy-mail","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.1":{"name":"@launchfirstagency/happy-mail","version":"0.0.1","_id":"@launchfirstagency/happy-mail@0.0.1","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"4808a4e914fbcfbcde509a84b447ae164646e22f","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.0.1.tgz","fileCount":51,"integrity":"sha512-qWZYEboNiCc3PV+ko8XS1WwegVvcmsuPNWOgb5vflCxN2XRGQ04i/MACFMZKklgdDi5NNCg+L4op4cJsWbSTlQ==","signatures":[{"sig":"MEUCIQDU423xfUC6XFsSBRw3FJ6AcAIQwIcbYU1A/+GfOc5C5wIgLmecDH7zP5OpT4H0VXA6i6vCbp0+Owwuhn/hbESc4z0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99629},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"66503c2208189f8b0baf747c68aeae61e3c57c32","scripts":{"test":"jest","build":"tsc","coverage":"jest --coverage"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.2.3","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","ts-jest":"^29.1.1","prettier":"^2.5.1","typescript":"^5.3.3","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.0.1_1708887312367_0.3294380152646754","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@launchfirstagency/happy-mail","version":"0.0.2","_id":"@launchfirstagency/happy-mail@0.0.2","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"7d1595ffc0e9590180df7961f6ef4e5535f80ee8","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.0.2.tgz","fileCount":9,"integrity":"sha512-cAKhIKKk3JlR93hw4n8r9QZZJ8riYb1RoAGEn5Qt5gVcKO6IDxhPaN7jj50mdrfR6/OLPTOJaDZEMl0Z446YiQ==","signatures":[{"sig":"MEUCIG71dX6k//Du87UNFcUkPbCEq8VAHxr5ym57vlgcS8KqAiEAwDb7cAgK95wQHVAaweWQRrTPsoCS0AWAgLye0SRNld8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14815953},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"c5ba67d782d36e98e6cb9f7e660454f918c706aa","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.2.3","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.1","prettier":"^2.5.1","typescript":"^5.3.3","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.0.2_1708888447928_0.8404320392124365","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@launchfirstagency/happy-mail","version":"0.0.3","_id":"@launchfirstagency/happy-mail@0.0.3","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"f5ff7e87991c3f65c4d68469bdf7ec4def10e1d2","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.0.3.tgz","fileCount":9,"integrity":"sha512-JSuIeG7pufQsMXYXxiMIeupl5lVyQ9giFd36Qh0tohnMxOWxMX3TqNf5cbBio5n5oWsNRDWXvQw/9anXOuy7Yg==","signatures":[{"sig":"MEUCIFDBaZbR0wtXg0+h+iXlGDRkNC9td7+aZrh8+MF+udQSAiEA+/HwYkEpqh1HUx2ODq7l0iFOwpHYx5KB4nwsK//HDJE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14835635},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"a5ccccb1675aa8eff33f02bb9cb7633410c31f22","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.2.3","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.1","prettier":"^2.5.1","typescript":"^5.3.3","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.0.3_1708888773663_0.6739736534289118","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@launchfirstagency/happy-mail","version":"0.0.4","_id":"@launchfirstagency/happy-mail@0.0.4","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"f09eea5d1d357c7a0f885bceb94f70934834440a","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.0.4.tgz","fileCount":9,"integrity":"sha512-taJAn3vzWSjN9ZgPgc8Vq2yZ1OmDdOTEiX+ZT8fSUWEPMZCWAL/KREeHe8/OgsYkSFQVSs/iYNITkX72VsXlyQ==","signatures":[{"sig":"MEUCIG4ZZT3xA3wXd3Iu12wzXosmBIbYIJL6z4KPJleOpZQeAiEAwkNA/rDmekGaH0Ah9/AJFqFAxqNj5e6FDE3JY1cvy5c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14835705},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"56b2032b91e9d357d90551d6b60a7966cebde707","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.2.3","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.1","prettier":"^2.5.1","typescript":"^5.3.3","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.0.4_1708892070104_0.15140482606152195","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@launchfirstagency/happy-mail","version":"0.0.5","_id":"@launchfirstagency/happy-mail@0.0.5","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"8becaa5f395042a394be35ec4cc569bc965f11de","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.0.5.tgz","fileCount":9,"integrity":"sha512-jEj182cLzM+w3FdG8v1DAsi4SFQcWe/TtUAN4NRUbWO48x509Klyz88+et7wdrcp8Eh8Q2Bv4KewKvfj8YFZHA==","signatures":[{"sig":"MEUCIQDM4+hN5xvERIuOUr8uYOLaXsEt0xmSPT6mQCy7DX7rDQIge3g2fCritrHNOOhqmKjbmAsJ7+9SwlXBGNMIm0jZRWY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14835705},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"2ee4bdd851cc37b958b2bda10ee37e1aec23fad8","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.2.3","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.1","prettier":"^2.5.1","typescript":"^5.3.3","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.0.5_1708893081909_0.07006724050966073","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"@launchfirstagency/happy-mail","version":"0.0.6","_id":"@launchfirstagency/happy-mail@0.0.6","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"fcda3f85c870bbe9315b92b8c72732b788999562","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.0.6.tgz","fileCount":9,"integrity":"sha512-Uo02gQuGvNIT7Vmt6L9CkZDtRm2ITV8bBGfLEU8LAtc4NX3LJftioq2YwSMljyXuMDAttHLPBs9vdpLqj6t0xg==","signatures":[{"sig":"MEUCIQDbqAoGYwPSJ74+ww3du2hYS90r7boky7PGDCrfB8rndQIgDTJbIN45OSF+80xjAWlCGPOr9eSV7yORBqjHwlf+1Yg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14837803},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"92f4bbd1a9b33762b0cc3b27a6b3ce46c0ab24aa","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.2.3","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.1","prettier":"^2.5.1","typescript":"^5.3.3","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.0.6_1708946480756_0.40439237216825763","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"@launchfirstagency/happy-mail","version":"0.0.7","_id":"@launchfirstagency/happy-mail@0.0.7","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"18fea13c8c4a75143fd7b8cf0e3d18c2db7700c5","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.0.7.tgz","fileCount":9,"integrity":"sha512-ilWpBxw/qLG51301heNwbWWxSMsFQD4P4iJpix3JVNZ0eM1ILkVua1FBtpoiCx0gd8cZX3fvf1L7/8G5prTLzg==","signatures":[{"sig":"MEYCIQCGQU8LvjsQ/9q/UFh5Vb9TaGjdOxGdrd3Izv5I7TQEVQIhAK/0KLlYP3WES2XFyblxZWBV6DIu3mBQ6SKgWAdIbaqz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14837468},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"f43d74eb51af19172fafda76f400904e794185e5","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.2.3","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.1","prettier":"^2.5.1","typescript":"^5.3.3","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.0.7_1708957692720_0.537872998571163","host":"s3://npm-registry-packages"}},"0.0.8":{"name":"@launchfirstagency/happy-mail","version":"0.0.8","_id":"@launchfirstagency/happy-mail@0.0.8","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"19907e459fda58674269020e6557ade80ad3be45","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.0.8.tgz","fileCount":9,"integrity":"sha512-2hQA3lPASMv730rXAfa5LwP4U6NT+i3H1f8I1XhdI7Qyn+3YdF22zEifUsMHrLFHP9Dcc/a8ljIvyyQLUT9fSw==","signatures":[{"sig":"MEYCIQCD1w6AkO6usRcQDHGNMvIPFtE1aGtk3X586qqBETNBwQIhALNfDNJ4lTp63wzXKOFogxmcEveycReBA+ckHEf/ya+s","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14836474},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"f2588d897effc79c2f404a3e0bcc401af015fb8f","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.2.3","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.1","prettier":"^2.5.1","typescript":"^5.3.3","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.0.8_1708957860569_0.8361962999896038","host":"s3://npm-registry-packages"}},"0.0.9":{"name":"@launchfirstagency/happy-mail","version":"0.0.9","_id":"@launchfirstagency/happy-mail@0.0.9","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"b9f9ba4d1848a530f97f869369b63cf0c9d2a48d","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.0.9.tgz","fileCount":9,"integrity":"sha512-FT7xvcIyvv6qFcdFvIVFzLWrTOj5UWWQY41j5MCTVXPxr5yVYl+SmAx3Sjqv/YTBb+GuCMIRD9rxSRKWtnTPRQ==","signatures":[{"sig":"MEYCIQDrQ70L+9hsKa+W2rJXe724O/oc8XXdYKAv7mCJ8XMwVAIhANv2NwLA5Tz009S130EmXZGlv8NKyht3bSEMxuzla9V8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14836310},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"d113138e2c9e33f4db575fa9e965c7239313ec03","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.2.3","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.1","prettier":"^2.5.1","typescript":"^5.3.3","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.0.9_1708958156307_0.5718965293595002","host":"s3://npm-registry-packages"}},"0.0.10":{"name":"@launchfirstagency/happy-mail","version":"0.0.10","_id":"@launchfirstagency/happy-mail@0.0.10","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"b157735d18a1f00e4a301b7978bc4de90e362a9d","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.0.10.tgz","fileCount":9,"integrity":"sha512-86UxorozKXpwoiGV9Q2+YS5tCmHr4h/LhWGR6YkNpQKDY81FLYElipwGwEGUiRVTUk1thV+rxZ7Zp0JJ/ZjyjA==","signatures":[{"sig":"MEYCIQCAO+LIZ30HKk3zMF3BI7awiLO1Muq1RSnQRBhLbvGggAIhAM1nHsIlwF5OFODRiU4SKv9LFqL1G2RdqCD+AGVLzWBg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14839256},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"769e43852b12d7904146ccc113c8addf8c2d15f1","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.2.3","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.1","prettier":"^2.5.1","typescript":"^5.3.3","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.0.10_1709330770280_0.9747512074055147","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@launchfirstagency/happy-mail","version":"0.1.0","_id":"@launchfirstagency/happy-mail@0.1.0","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"c453627610e9591163d9805e3d8488bd03ffc4e9","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.1.0.tgz","fileCount":9,"integrity":"sha512-2453CPDpzFKsKFMOV+17qQyzYzRXuQqK/e1U9xFlPQAnbDHdlQA3ADAXUFTPs8n8kpgLEf6tQ/W5xL0LEBTOTg==","signatures":[{"sig":"MEUCIQCMAyOUBsXYvRqz310prPEOWd8uW9Q6B5k/xL7lgd27VAIgarQ/kkLLRWyCs6H+JfeJ0NR2Q9Tan+0Wq69hg/X/a4I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14877966},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"d6e377dac95b1b113626f373e782a111b2fd7f99","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.2.3","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.1.0_1710167992371_0.4338028582024076","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@launchfirstagency/happy-mail","version":"0.1.1","_id":"@launchfirstagency/happy-mail@0.1.1","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"4c541f430964133b0a14ef5f05008af1e7e7d177","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.1.1.tgz","fileCount":9,"integrity":"sha512-Z0eVuRO483oE+6/LIHZmz5ATjymLtlyUgOsApLmzWuGB6cDwBFdFJSUnRgtNOWkIpLMkvHvSvEvvtqegNPnFEQ==","signatures":[{"sig":"MEQCIAxP6ieseySD8FbmEJE1h8hrXTUeh6HXT6uLJZN9H76uAiB3fw5sAllCqrkfbXRQrF9sHNuJU2n5OevM1hnV4uP8tQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14881373},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"d6e377dac95b1b113626f373e782a111b2fd7f99","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.1.1_1718888243505_0.4780319202492813","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@launchfirstagency/happy-mail","version":"0.2.0","_id":"@launchfirstagency/happy-mail@0.2.0","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"6f0ff066a5346438660567f39f5585454cfa765b","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.0.tgz","fileCount":9,"integrity":"sha512-hEIFxw98tfBShwNx0B7/Co97Cx0U0guN3XBLpDsHrWh96E9+pxMcK1FOIckAZYKEgXCqJ509VTAWwtJqtMW00g==","signatures":[{"sig":"MEYCIQDF6GBXPZOcwBcYt/aMFVv6kUvi/uykZ37wJwEGcBbzEwIhAMmz8U44IRg40iAO4OJJ74aqEHSPlS0vL8TemsUO1pH7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14887935},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"8eca61ee3545a2e74ac787fa2c4eb6e457b6a96e","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.0_1723481324046_0.8333138006816698","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@launchfirstagency/happy-mail","version":"0.2.1","_id":"@launchfirstagency/happy-mail@0.2.1","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"17211c37054f2618e88169a302e58232406fc2ca","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.1.tgz","fileCount":9,"integrity":"sha512-d1Ic/e1KoyDXt06oZNaBcQWq8uiBZLs/Hfy+wOO8uhKe6a+w/Gd5xN41k0DJd/vqcAMGacqBzfn6xeY6PRWI4g==","signatures":[{"sig":"MEYCIQCGF0bSOKZl/ZEwSkymrPi/68PHqbl2NWiEQlV8h8TZuwIhAJ6ivaZaRQh6rfhL3pa3jD17QHtPUf50bPwIS9Gmg3y2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14887993},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"d94110bea6f44c0f9e00ad11ecc422bc997713ad","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.1_1723485644949_0.8538637739389185","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@launchfirstagency/happy-mail","version":"0.2.2","_id":"@launchfirstagency/happy-mail@0.2.2","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"989f3b2e9a63b0831203766f0fa4ae2d76452808","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.2.tgz","fileCount":9,"integrity":"sha512-DOjA4iA4/tp/fSs1LbXj6Aq/VR6Aj/STEjZOFSfqbbQNofEtDoPwDEB5ltTPIzAV3or3f2UhBK/dBzYPlLNkVQ==","signatures":[{"sig":"MEYCIQCD+wJmmZim7nkwKjtRFcCkuxAZ1olQjO22NgXicYa/ewIhALNe6gYJO/pVZX3xbbEhnitBdTnLe2cpV+8QbCPP94hM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14889095},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"0a8fda16ff5603aa05de897ee862663a2352be51","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.2_1723486552126_0.1107221328676149","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@launchfirstagency/happy-mail","version":"0.2.3","_id":"@launchfirstagency/happy-mail@0.2.3","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"c426868b0a00ec0e2bdefb111e0441196c2257ab","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.3.tgz","fileCount":9,"integrity":"sha512-xcRTXnrt9miMgBxkExru6S1jYR8S3o9mx6kYtXT2UAElRHJGzHUtnn+elwQVBdmLkde6OSIMsEoOwPkJWYFB2A==","signatures":[{"sig":"MEYCIQCC3Ls6BHm709Nd2l7ZAPvGKn2TBiWDruIxNRcQaGH23QIhAM6hTvmPvozOjOebfbMVJizDukUNBSSZWqC/OY/LXzHs","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14902699},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"84ec9a065da5dd066c0c1bd2c88027386b9b4c74","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.3_1723597658202_0.3797923940839447","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"@launchfirstagency/happy-mail","version":"0.2.4","_id":"@launchfirstagency/happy-mail@0.2.4","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"7b70970ca1f3ca499835e799f8d78cdae7c1508a","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.4.tgz","fileCount":9,"integrity":"sha512-fqztitXwsxrGOuCSPc0z0R9U4ksW7XYuJUIuEeZwg04EuUxuAZ5Crg2/JgfJakmD5j386SSES8tkxBCKv7hOQA==","signatures":[{"sig":"MEQCIG/DAUFtrUBbtkrKxdRFO/FfNyK5nDqNcBl25rIVnoZCAiBuRbq1hvWMlX7ewnvzoq9NATwdcN8AOCGhWAmceTeZeg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14903121},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"75ceecc670b0cab0d921af846337c07b9b2132d0","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.4_1723600468358_0.4078990747292921","host":"s3://npm-registry-packages"}},"0.2.5":{"name":"@launchfirstagency/happy-mail","version":"0.2.5","_id":"@launchfirstagency/happy-mail@0.2.5","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"e4165768f6279f9fdb9fcd572422a2a6145bdd85","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.5.tgz","fileCount":9,"integrity":"sha512-BE81PEthLnL8UclZmhJnE5icde0eKPe4h0vb2hBMBGRIL1TK0hfkJHUEca1uCmr6moeb2IFPQGu+0X4ATdHzDg==","signatures":[{"sig":"MEQCIECL/pcix1ye/8huvJMwbmheVNXUrIe3kL99kN0+rmU5AiBaFrbM498sZjXMcAPOpa55G2fquDmzEeeZiIqMs7o+ZQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14902302},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"b3e911b38488b899a3b87efab93f8e5ffdbc7a86","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.5_1723601062080_0.14365345768733007","host":"s3://npm-registry-packages"}},"0.2.6":{"name":"@launchfirstagency/happy-mail","version":"0.2.6","_id":"@launchfirstagency/happy-mail@0.2.6","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"6568f7daff4048a346a78a1c150f991b47edd37d","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.6.tgz","fileCount":9,"integrity":"sha512-Wo2tARUmEQWoA3AcxxP/J00QgWPKqww0xBjS+4vEAX1nllwtieRIclU0/Wt9CVxnDaloFtL2ow+J98Mur/Cxcg==","signatures":[{"sig":"MEUCIFSRh/ZDIPAYfh0+WvDzWrLGrm24Ce+dHUDtcf/Win0bAiEAwxUvSwwmPj7B6K/7vQgACbubTvOqZ5rpl+Pj2x63NUQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14903342},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"00419853fad93e70104d97e59bceb45effcc1509","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.6_1723641882240_0.338830118783751","host":"s3://npm-registry-packages"}},"0.2.7":{"name":"@launchfirstagency/happy-mail","version":"0.2.7","_id":"@launchfirstagency/happy-mail@0.2.7","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"0e24190000b017ef634c093ee51e79fb5eb5e707","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.7.tgz","fileCount":9,"integrity":"sha512-arIGZb/6Mkf7bCP0QImRVzk4ATb11RX0AMs5yGWBdpnYrQ7Nymw+SvS+smUwIBZqVHun3BxAqhbYBUy9fvv+Pw==","signatures":[{"sig":"MEQCIF5YDAhWf3AhSNFZ8wV2SaG6u32VQqRyKlZzgSjTn7N/AiAh+QlVY9AeaSlT5goiikyGDJ4TBsuw6khcxIim1GX7rw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14903894},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"25630f761ea210eef8fc41ccf1c0e528eef7cddc","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.7_1723643421153_0.37448507978312384","host":"s3://npm-registry-packages"}},"0.2.8":{"name":"@launchfirstagency/happy-mail","version":"0.2.8","_id":"@launchfirstagency/happy-mail@0.2.8","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"ab0f41cf30db8eea6976ffe04f315b8def4d7470","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.8.tgz","fileCount":9,"integrity":"sha512-n/nLFAR7VH5srTBU4C5TmKWxEbDJ51CBOla2kQ/wNn3g4jqV8WoDIbRVdUR8wf6i8PCtcpTdvNCRd7dAEZ5A4g==","signatures":[{"sig":"MEUCIHAIzTElcuFBSPy4qZJptyVoCSvOQ0I8FXp/h362+DNAAiEAub7VG8oMjWQ+VjdC81Go6uOfsymZcjIyGm+VDypUZHU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14901024},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"9f4f22f4dab21d9ca7a47628e5eea7d8e35c2554","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.8_1723644386518_0.1211889598943301","host":"s3://npm-registry-packages"}},"0.2.9":{"name":"@launchfirstagency/happy-mail","version":"0.2.9","_id":"@launchfirstagency/happy-mail@0.2.9","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"f51b47c0f151e18dd1e00f49687b080e9f4fabd4","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.9.tgz","fileCount":9,"integrity":"sha512-YT1aFfFAIhTq098hFVxrsPXBP/e10MN1HolFsQ5II2xIbuPCyA4plRQgQ5klCziGvKnZzkv9tfl6/v1TVkM3Fw==","signatures":[{"sig":"MEUCIQD6qRJczjAFHwUwqLUmLFg9TR5SbnCcVThv+Mlzj5rjugIgdaw68guV5Wg7rh/9QoUCNyocEtNJPFXWDCcr5Py5MX4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14901408},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"9f4f22f4dab21d9ca7a47628e5eea7d8e35c2554","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.9_1723680375799_0.3263071259271917","host":"s3://npm-registry-packages"}},"0.2.10":{"name":"@launchfirstagency/happy-mail","version":"0.2.10","_id":"@launchfirstagency/happy-mail@0.2.10","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"62dcae9316195d7fb3c51c08820174fb972d8ced","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.10.tgz","fileCount":9,"integrity":"sha512-HOQFgPezzraXCD4q38X0m9hTV4rX/+g4BAOMvocb3Cb6acbSUcHLZeONPvl8q1ODSzF9k2YpoT+HhvUDYo84GQ==","signatures":[{"sig":"MEYCIQDtpmMrYcsZT7Kh+yLMIf2iMei+aCZirrPVvcWkrbm3XAIhAOu8U7ffzqnueGdQ7f3Odqf4DHNC4NS0ndd8btkT+V4m","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14901836},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"de3c9db4a388159e9b465a3e87fcb32b1e34bd71","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0","esbuild-plugin-alias-path":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.10_1723681886643_0.4790189672423053","host":"s3://npm-registry-packages"}},"0.2.11":{"name":"@launchfirstagency/happy-mail","version":"0.2.11","_id":"@launchfirstagency/happy-mail@0.2.11","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"dist":{"shasum":"04bb6d2a51057438bb7c459b2ba141730a360f6f","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.2.11.tgz","fileCount":9,"integrity":"sha512-lxy6vah7wmq5DjjWhTd1Tf5XTf8zE/FE/QUOHvTFZ2OsVbeL1gxX/NxW3EzX2Rw/baDVHymWbCRGeIBFi5E/sQ==","signatures":[{"sig":"MEYCIQDZgXrBqpyA31PhzFU9NIAhJLJsOagwGXQrUolzXKNk2AIhAOfEaX2iISQZnyjNyhjASPwRjReGDJtlUV/m1mriWxt0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14901793},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=8.1","node":">=18.18"},"gitHead":"dde09fd6b038cc92afd4651ed8bd19d0c8233a3f","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"_npmVersion":"10.5.0","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"18.20.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.11.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^2.5.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^18","@jest/globals":"^29.6.1","@types/validator":"^13.11.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.2.11_1723682300369_0.044832994813505556","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@launchfirstagency/happy-mail","version":"0.3.0","_id":"@launchfirstagency/happy-mail@0.3.0","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"dist":{"shasum":"aead6378ffdd854a033441a4bb3eca4aa5ce5d18","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.3.0.tgz","fileCount":9,"integrity":"sha512-QJDFpYvfwGbQwMaf6Jkmk6H0W8O34j5orLsVtc9NY+2eSVYV9TX3cZ6JZSm5sKIhEHWyB9eNlTSX/mvf8LKesw==","signatures":[{"sig":"MEYCIQD6InToiCCy3ZQYx6RczUhdOHvVUc1zpY1tMnFLN8wm6wIhAKiBfFr4BOzWeBBB/1d7d/WsnFjEeK5oICQYHJXPOSLL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@launchfirstagency%2fhappy-mail@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16353707},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=10","node":">=20"},"gitHead":"dd7f9edde96aa191708bd156932a0b62b5f3a9e4","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"repository":{"url":"git+https://github.com/LaunchFirstAgency/happy-mail.git","type":"git"},"_npmVersion":"10.8.2","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"20.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.15.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^22","@jest/globals":"^29.6.1","@types/validator":"^13.15.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.3.0_1744985040541_0.7218153455312624","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@launchfirstagency/happy-mail","version":"0.3.2","_id":"@launchfirstagency/happy-mail@0.3.2","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"dist":{"shasum":"08fcc228bfc5e3b03d58ccf7a553c6dccb3e3202","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.3.2.tgz","fileCount":9,"integrity":"sha512-hxqxtTiskfG5aoRhh6EcgTV1To9oLNk++f4L3vJLkmdMfprvpUDhoLsmdlftTP4u5Ibv1P29mkvHussY9oKfQQ==","signatures":[{"sig":"MEUCIQC17lllOMJ3y60+Ga8eIQBWAES449Q+EnrGFkr+tr/zlQIgG24xt7Cu4+8N5fip7zHvb80UUjOlzK6oBbu3QrcJV2c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@launchfirstagency%2fhappy-mail@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16360409},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=10","node":">=20"},"gitHead":"49476bff47b17effb365183705e851c279a8c100","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"repository":{"url":"git+https://github.com/LaunchFirstAgency/happy-mail.git","type":"git"},"_npmVersion":"10.8.2","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"20.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.15.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^22","@jest/globals":"^29.6.1","@types/validator":"^13.15.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.3.2_1744988093896_0.7700710791208178","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@launchfirstagency/happy-mail","version":"0.3.3","_id":"@launchfirstagency/happy-mail@0.3.3","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"dist":{"shasum":"b429b441d80375f171e543a53d30778ef293cf39","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.3.3.tgz","fileCount":9,"integrity":"sha512-jMMIHFuthM0niKL/J+EI66XdW8IrlkkRZwZJrkGf57bYnn2Hqp3mCYaZn3OC7hPm56vTAZiIzOxqvgLwAcKpDw==","signatures":[{"sig":"MEQCIBS+jqHR+OvY36M1kTtIzmpK2pFw7xcURCM9MkVoVGgiAiAWcSNDU7+xr8E3Q699NAlfV0rZsCzQZCCfTbDcRJ1A3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@launchfirstagency%2fhappy-mail@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16349846},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=10","node":">=20"},"gitHead":"f5c8bf8e7f1a5910ad7fdc71102381e7d821cd94","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"repository":{"url":"git+https://github.com/LaunchFirstAgency/happy-mail.git","type":"git"},"_npmVersion":"10.8.2","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"20.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.15.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^22","@jest/globals":"^29.6.1","@types/validator":"^13.15.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.3.3_1745255277523_0.6301382907417592","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@launchfirstagency/happy-mail","version":"0.3.4","_id":"@launchfirstagency/happy-mail@0.3.4","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"dist":{"shasum":"87132957a981be6f2dcc01fce1460fb2d92edf17","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.3.4.tgz","fileCount":9,"integrity":"sha512-OG8QmQOGaWmIoKBz9IUVpXl3ebL2OhWxoFdzZ4bi2eM2DRAm+xDTLnNqiD3kBz+ErqU1NuiQf7e+RsYbwJdNSw==","signatures":[{"sig":"MEUCIQDcTI9Xy6DivpU3iH/q4K3OTdA2HLXxqG9cupmDokP7qwIgC0gO0Jy3lpL9R49w3OhYCJYzp1/0ZfWF6WKryOVqvU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@launchfirstagency%2fhappy-mail@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16417395},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=10","node":">=20"},"gitHead":"cde6a0307476479495182aee6be4282ae6726956","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"repository":{"url":"git+https://github.com/LaunchFirstAgency/happy-mail.git","type":"git"},"_npmVersion":"10.8.2","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"20.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.15.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^22","@jest/globals":"^29.6.1","@types/validator":"^13.15.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.3.4_1745259074294_0.14245890257712834","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@launchfirstagency/happy-mail","version":"0.3.5","_id":"@launchfirstagency/happy-mail@0.3.5","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"dist":{"shasum":"aca9d8bd422e2a882e0023180be5f6e72c2e9b18","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.3.5.tgz","fileCount":9,"integrity":"sha512-dNAkzPbvUO2bhFW9c7lQGbmFqaCF3h3pUVO6ySX2OfhnhWJ1xh8FPPJWpY2NkrD3Krr+U6qPTBhTfiqVNDRXaQ==","signatures":[{"sig":"MEUCIQDlbQBsQ8kRHIZZkLkab8Oo55kI0gMiFD0I/AMPIaeqpAIgKAi5lx+zqmSV7I2Lo+WDB+vf44v2HqKBGgJWsXtfJM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@launchfirstagency%2fhappy-mail@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16417413},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=10","node":">=20"},"gitHead":"380ab47194cebf78c9a877b63b68847becd5e99c","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"repository":{"url":"git+https://github.com/LaunchFirstAgency/happy-mail.git","type":"git"},"_npmVersion":"10.8.2","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"20.19.0","dependencies":{"got":"^11.8.5","lodash":"4.17.21","validator":"13.15.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.0.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^22","@jest/globals":"^29.6.1","@types/validator":"^13.15.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.3.5_1745260208880_0.48121327789569746","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@launchfirstagency/happy-mail","version":"0.4.0","_id":"@launchfirstagency/happy-mail@0.4.0","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"dist":{"shasum":"85636c6ba96f1a13d392a9a75d20dadbc3626306","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.4.0.tgz","fileCount":9,"integrity":"sha512-U3y/47PtTshEgNHAAQZoDJkAbTDs18EKJI7tdoxrGv/rwDZSS1bPCNZRwY4rhYFCnNvZYfTbSYE4VpnzLuMSPA==","signatures":[{"sig":"MEUCIQCwhzc2VkPHDGnxt4o8AayyEj3zoSuKb1W1IKb12+L/wwIgYusDP7GvN/Fq6NXFcc/82nTvGB3Tz2X+jqHaxR97owc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@launchfirstagency%2fhappy-mail@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16415282},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=10","node":">=20"},"gitHead":"1d25a0b100d03e8644e0f1c889c1fa1fc9c72be4","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"repository":{"url":"git+https://github.com/LaunchFirstAgency/happy-mail.git","type":"git"},"_npmVersion":"10.8.2","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lodash":"4.17.21","validator":"13.15.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.4.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.8.3","@types/jest":"^29.5.12","@types/node":"^22","@jest/globals":"^29.6.1","@types/validator":"^13.15.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.4.0_1745263724563_0.3152715787314253","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@launchfirstagency/happy-mail","version":"0.4.2","_id":"@launchfirstagency/happy-mail@0.4.2","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"dist":{"shasum":"f1daa2d50c4297125ad7b63af99ef26b40188d7a","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.4.2.tgz","fileCount":9,"integrity":"sha512-9Q40xL/qxYJnx++SwKqdeV78zyNqJE/To1o0VClD0cVfFAT5traYADJRkzaGMrAfidzaDD5vjonnREmjM1HfkA==","signatures":[{"sig":"MEUCIQCeLRu3yK3lYy45mdZLiaKy3PiNLwKxrXXifjnVULLUJwIgCy0MSxugnfJ3DbothnUpfvYNXr0w75QggRl8tvzvPnc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@launchfirstagency%2fhappy-mail@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16415282},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=10","node":">=20"},"gitHead":"a08f6b6feec765bf5e1e4c2ce66afc5a9967ca3b","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"repository":{"url":"git+https://github.com/LaunchFirstAgency/happy-mail.git","type":"git"},"_npmVersion":"10.8.2","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lodash":"4.17.21","validator":"13.15.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.4.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.8.3","@types/jest":"^29.5.12","@types/node":"^22","@jest/globals":"^29.6.1","@types/validator":"^13.15.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.4.2_1745263957708_0.5598392347096095","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@launchfirstagency/happy-mail","version":"0.4.3","_id":"@launchfirstagency/happy-mail@0.4.3","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"dist":{"shasum":"486da466c883c185562f2a21aa67a93de6e0f3d4","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.4.3.tgz","fileCount":9,"integrity":"sha512-X+oYvreeFR+gVy87pce1jttwHGz+jhpeKc20ovC4KdQioCbdmryCg0UsILy9LHN2zOBD96t11m0bpnoYTahXcA==","signatures":[{"sig":"MEYCIQDujv6Z9E26oSBy4lkzxswfb88MXMHJbWxfwkxKWgDWlgIhANvsUv3GJ/qXBGIhtLulrMO2qa6gyuzYcCiqqtzCPXBe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@launchfirstagency%2fhappy-mail@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16420434},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=10","node":">=20"},"gitHead":"e6a2b7161d72237f785ee64b122cc629fc6e1bb6","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"repository":{"url":"git+https://github.com/LaunchFirstAgency/happy-mail.git","type":"git"},"_npmVersion":"10.8.2","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lodash":"4.17.21","validator":"13.15.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.4.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.8.3","@types/jest":"^29.5.12","@types/node":"^22","@jest/globals":"^29.6.1","@types/validator":"^13.15.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.4.3_1745265877720_0.952237078895267","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@launchfirstagency/happy-mail","version":"0.5.0","_id":"@launchfirstagency/happy-mail@0.5.0","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"dist":{"shasum":"9fe05238598df6899845f37631298f2d5d9e28ed","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.5.0.tgz","fileCount":9,"integrity":"sha512-06I15ZdT/efnSek750gnWaZtzfkFtBD6xKl21tz1rSI9fV0OFVdSa8FCpipcReTR6qLaHepmxJtWAoyVAc55ZQ==","signatures":[{"sig":"MEUCIQCxsLWDzBwpE6oMe5pfgfScTXK+hKS2P/rX4ITF0sA3BAIgNbjRRWultd+hMhkYIrDQLEaQuRd8N3atvyoLFBWHqEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@launchfirstagency%2fhappy-mail@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16438490},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=10","node":">=20"},"gitHead":"2008b5e8e3c29222e2d69f5fffba2648a6d718d0","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"repository":{"url":"git+https://github.com/LaunchFirstAgency/happy-mail.git","type":"git"},"_npmVersion":"10.8.2","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lodash":"4.17.21","validator":"13.15.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.4.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.8.3","@types/jest":"^29.5.12","@types/node":"^22","@jest/globals":"^29.6.1","@types/validator":"^13.15.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.5.0_1745350048528_0.703886148405017","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@launchfirstagency/happy-mail","version":"0.5.1","_id":"@launchfirstagency/happy-mail@0.5.1","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"dist":{"shasum":"5becd5772f24dd04868adf7969de1d845edc0578","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-0.5.1.tgz","fileCount":9,"integrity":"sha512-GWNuvhZUt0VtaJOllg+ojlf2kTS1jXNUQ/DHSeoduzuv5ZJSEE2BfhIBuTpgGzCvvq9Ef8BUo2MY+KCFT8MB6Q==","signatures":[{"sig":"MEUCIQCeEIKCgK+Z8UJEQxoHHRzKHkj0Y9c/Gym3p0Ic526brQIgZPVqN4q6Jf88PfPAsJxiDNkHzb2uFj/mLHlRXVOHxlg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@launchfirstagency%2fhappy-mail@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16451184},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">=10","node":">=20"},"gitHead":"c6f43643496532a790df6143537b320d38ebb830","scripts":{"test":"jest","build":"tsup","coverage":"jest --coverage","prepublish":"npm run build"},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"prettier":{"printWidth":120,"singleQuote":false,"trailingComma":"all"},"repository":{"url":"git+https://github.com/LaunchFirstAgency/happy-mail.git","type":"git"},"_npmVersion":"10.8.2","description":"Email verification and validation to make you smile","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lodash":"4.17.21","validator":"13.15.0","tld-extract":"2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","tsup":"^8.4.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.8.3","@types/jest":"^29.5.12","@types/node":"^22","@jest/globals":"^29.6.1","@types/validator":"^13.15.0"},"_npmOperationalInternal":{"tmp":"tmp/happy-mail_0.5.1_1745350509957_0.9863393732305221","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@launchfirstagency/happy-mail","version":"1.0.0","repository":{"type":"git","url":"git+https://github.com/LaunchFirstAgency/happy-mail.git"},"description":"Email verification and validation to make you smile","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./internal":{"types":"./dist/internal.d.ts","import":"./dist/internal.mjs","require":"./dist/internal.js"}},"scripts":{"build":"tsup","test":"jest","prepublish":"npm run build","coverage":"jest --coverage","prettier":"prettier --check .","prettier:fix":"prettier --write ."},"engines":{"node":">=20","npm":">=10"},"dependencies":{"lodash":"4.17.21","tld-extract":"2.1.0","validator":"13.15.0"},"devDependencies":{"@jest/globals":"^29.6.1","@types/jest":"^29.5.12","@types/node":"^22","@types/validator":"^13.15.0","jest":"^29.6.1","prettier":"^3.3.3","ts-jest":"^29.1.2","ts-node":"^10.9.2","tsup":"^8.4.0","typescript":"^5.8.3"},"prettier":{"singleQuote":true,"trailingComma":"es5","semi":true,"arrowParens":"always","printWidth":100,"tabWidth":2,"bracketSpacing":true},"_id":"@launchfirstagency/happy-mail@1.0.0","gitHead":"41c5adc82f92ad755c8b7fd035543e92491ebd0e","bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","_nodeVersion":"20.18.3","_npmVersion":"10.8.2","dist":{"integrity":"sha512-78ywsvGbi/aspO0rKmvT95vsoReKVZTNJYZ8uNLM2/PolHr0OO+jn2Tf/0weSXWuT/2zHxQ+1a7/ewjDDRE4zw==","shasum":"442d4897744928843ad00de28618ff84bb81a6d3","tarball":"https://registry.npmjs.org/@launchfirstagency/happy-mail/-/happy-mail-1.0.0.tgz","fileCount":21,"unpackedSize":16703820,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCV53c6H87C0MkT133esa2pka4lsP+RArpLGOaDVQ0aogIhAJ3wtCvLBZvszQ9h1yjnw0pyyO2WbihH+yX6rFrMCDbL"}]},"_npmUser":{"name":"dan-launch-first","email":"hello@launchfirstagency.com"},"directories":{},"maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/happy-mail_1.0.0_1769359888651_0.133664636876778"},"_hasShrinkwrap":false}},"time":{"created":"2024-02-25T18:55:12.219Z","modified":"2026-01-25T16:51:29.113Z","0.0.1":"2024-02-25T18:55:12.549Z","0.0.2":"2024-02-25T19:14:08.247Z","0.0.3":"2024-02-25T19:19:33.910Z","0.0.4":"2024-02-25T20:14:30.362Z","0.0.5":"2024-02-25T20:31:22.171Z","0.0.6":"2024-02-26T11:21:20.988Z","0.0.7":"2024-02-26T14:28:13.031Z","0.0.8":"2024-02-26T14:31:00.822Z","0.0.9":"2024-02-26T14:35:56.562Z","0.0.10":"2024-03-01T22:06:10.525Z","0.1.0":"2024-03-11T14:39:52.609Z","0.1.1":"2024-06-20T12:57:23.774Z","0.2.0":"2024-08-12T16:48:44.411Z","0.2.1":"2024-08-12T18:00:45.252Z","0.2.2":"2024-08-12T18:15:52.482Z","0.2.3":"2024-08-14T01:07:38.438Z","0.2.4":"2024-08-14T01:54:28.591Z","0.2.5":"2024-08-14T02:04:22.355Z","0.2.6":"2024-08-14T13:24:42.587Z","0.2.7":"2024-08-14T13:50:21.427Z","0.2.8":"2024-08-14T14:06:26.851Z","0.2.9":"2024-08-15T00:06:16.091Z","0.2.10":"2024-08-15T00:31:27.065Z","0.2.11":"2024-08-15T00:38:20.736Z","0.3.0":"2025-04-18T14:04:00.820Z","0.3.2":"2025-04-18T14:54:54.169Z","0.3.3":"2025-04-21T17:07:57.958Z","0.3.4":"2025-04-21T18:11:14.590Z","0.3.5":"2025-04-21T18:30:09.316Z","0.4.0":"2025-04-21T19:28:44.934Z","0.4.2":"2025-04-21T19:32:38.113Z","0.4.3":"2025-04-21T20:04:38.039Z","0.5.0":"2025-04-22T19:27:28.745Z","0.5.1":"2025-04-22T19:35:10.282Z","1.0.0":"2026-01-25T16:51:28.921Z"},"bugs":{"url":"https://github.com/LaunchFirstAgency/happy-mail/issues"},"homepage":"https://github.com/LaunchFirstAgency/happy-mail#readme","repository":{"type":"git","url":"git+https://github.com/LaunchFirstAgency/happy-mail.git"},"description":"Email verification and validation to make you smile","maintainers":[{"name":"dan-launch-first","email":"hello@launchfirstagency.com"}],"readme":"# Happy Mail\n\nEasy to use email validation and deliverability checking for Node.js applications.\n\n[![npm version](https://img.shields.io/npm/v/@launchfirstagency/happy-mail.svg)](https://www.npmjs.com/package/@launchfirstagency/happy-mail)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## Features\n\n- ✅ **Email Validation** - Syntax validation, disposable domain detection, random email detection\n- 🔍 **Deliverability Checking** - Verify if email addresses can receive mail\n- 📊 **Inbox Health** - Check MX, SPF, DMARC, DKIM records, SSL certificates, and domain age\n- 🚀 **Batch Processing** - Validate multiple emails efficiently with concurrency control\n- 📈 **Result Interpretation** - Easy-to-use helpers for understanding validation results\n- 🎯 **Configuration Presets** - Production, development, strict, and lenient presets\n- 🛡️ **Error Handling** - Custom error classes with retry strategies\n- 🔌 **NeverBounce Integration** - Optional enhanced validation and bulk verification\n- 💪 **TypeScript First** - Full type safety with strict mode and branded types\n- 📦 **Dual Package** - Works with both CommonJS and ESM\n\n---\n\n## Installation\n\n```bash\nnpm install @launchfirstagency/happy-mail\n```\n\n---\n\n## Quick Start\n\n```typescript\nimport { HappyEmailClient, isValid, isSafeToSend } from '@launchfirstagency/happy-mail';\n\n// Create a client with a preset configuration\nconst client = new HappyEmailClient({ preset: 'production' });\n\n// Validate an email\nconst result = await client.validateEmail('user@example.com');\n\n// Check if valid using helper functions\nif (isSafeToSend(result)) {\n  console.log('✅ Email is safe to use!');\n  console.log(`Quality Score: ${getScore(result)}/100`);\n} else {\n  console.log('❌ Email should not be used');\n  console.log(getRejectionReasons(result));\n}\n```\n\n---\n\n## Table of Contents\n\n- [Core Features](#core-features)\n  - [Email Validation](#1-email-validation)\n  - [Result Interpretation](#2-result-interpretation-helpers)\n  - [Batch Validation](#3-batch-validation)\n  - [Convenience Methods](#4-convenience-methods)\n  - [Inbox Health](#5-inbox-health-checking)\n  - [Domain Health Score](#6-domain-health-aggregate)\n  - [Bulk Verification](#7-bulk-verification-with-neverbounce)\n- [Configuration](#configuration)\n  - [Presets](#configuration-presets)\n  - [Custom Configuration](#custom-configuration)\n  - [Error Handling](#error-handling)\n- [TypeScript Support](#typescript-support)\n- [API Reference](#api-reference)\n- [Examples](#examples)\n- [Common Use Cases](#common-use-cases)\n\n---\n\n## Core Features\n\n### 1. Email Validation\n\nValidate email syntax, check for disposable domains, detect randomly generated addresses, and verify deliverability.\n\n```typescript\nimport { HappyEmailClient } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient();\n\nconst result = await client.validateEmail('user@example.com');\n\nconsole.log(result);\n// {\n//   email: 'user@example.com',\n//   normalizedEmail: 'user@example.com',\n//   domain: { domain: 'example', tld: 'com', sub: '' },\n//   provider: 'OTHER',\n//   type: 'PERSONAL',\n//   risks: {\n//     validSyntax: true,\n//     disposableDomain: false,\n//     canReceive: 'SAFE',\n//     likelyRandomlyGenerated: false\n//   }\n// }\n```\n\n### 2. Result Interpretation Helpers\n\nUse built-in helper functions to easily understand and act on validation results.\n\n```typescript\nimport {\n  HappyEmailClient,\n  isValid,\n  isSafeToSend,\n  shouldReject,\n  getRiskLevel,\n  getScore,\n  getRejectionReasons,\n  getRecommendations,\n} from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient();\nconst result = await client.validateEmail('test@example.com');\n\n// Simple checks\nconsole.log(isValid(result)); // true/false\nconsole.log(isSafeToSend(result)); // true/false (stricter)\nconsole.log(shouldReject(result)); // true/false\nconsole.log(getRiskLevel(result)); // 'low' | 'medium' | 'high'\nconsole.log(getScore(result)); // 0-100\n\n// Get specific reasons and recommendations\nconsole.log(getRejectionReasons(result));\n// ['disposable_domain', 'invalid_syntax', 'cannot_receive', ...]\n\nconsole.log(getRecommendations(result));\n// ['Email appears valid and safe to use']\n```\n\n**Or use the wrapper class for a fluent API:**\n\n```typescript\nimport { EmailValidationResult } from '@launchfirstagency/happy-mail';\n\nconst enhanced = new EmailValidationResult(result);\n\nif (enhanced.isSafeToSend()) {\n  console.log(`Score: ${enhanced.getScore()}/100`);\n  console.log(`Risk: ${enhanced.getRiskLevel()}`);\n  console.log(enhanced.getRecommendations());\n}\n```\n\n### 3. Batch Validation\n\nEfficiently validate multiple emails with concurrency control and progress tracking.\n\n```typescript\nimport { HappyEmailClient } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient();\n\nconst emails = ['user1@example.com', 'user2@gmail.com', 'user3@test.com'];\n\nconst results = await client.validateBatch(emails, {\n  concurrency: 5, // Process 5 at a time\n  skipBounceCheck: true, // Skip bounce checks for speed\n  onProgress: (done, total) => {\n    console.log(`Progress: ${done}/${total}`);\n  },\n  continueOnError: true, // Keep going if some fail\n});\n\n// Process results\nresults.forEach((result) => {\n  if (result.success && result.result) {\n    console.log(`✅ ${result.email}`);\n  } else {\n    console.log(`❌ ${result.email}: ${result.error?.message}`);\n  }\n});\n```\n\n### 4. Convenience Methods\n\nHappy Mail provides convenient methods for common validation workflows.\n\n#### Quick Check (Fast Validation)\n\nIdeal for real-time form validation - skips bounce checking for speed.\n\n```typescript\nimport { HappyEmailClient } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient();\n\n// Fast validation without bounce check\nconst result = await client.quickCheck('user@example.com');\n\nif (!result.risks.validSyntax) {\n  return 'Invalid email format';\n}\nif (result.risks.disposableDomain) {\n  return 'Disposable emails not allowed';\n}\n```\n\n#### Full Check (Comprehensive Validation)\n\nIdeal for high-value signups - performs all checks including bounce verification.\n\n```typescript\nimport { HappyEmailClient, isSafeToSend } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient();\n\n// Comprehensive validation with all checks\nconst result = await client.fullCheck('user@example.com');\n\nif (isSafeToSend(result)) {\n  await createAccount(result.email);\n}\n```\n\n#### Validate and Normalize\n\nCombines validation and normalization in one call - useful for duplicate detection.\n\n```typescript\nimport { HappyEmailClient } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient();\n\nconst result = await client.validateAndNormalize('John.Doe+tag@Gmail.com');\n\nif (result.isValid && result.normalized) {\n  // Check for duplicates using normalized email\n  const exists = await database.findByEmail(result.normalized);\n  // normalized: \"johndoe@gmail.com\"\n}\n```\n\n### 5. Inbox Health Checking\n\nCheck domain health metrics including MX records, SPF, DMARC, DKIM, SSL certificates, and domain age.\n\n```typescript\nimport { HappyEmailClient } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient();\n\n// Check MX records\nconst mx = await client.checkMX('user@example.com');\nconsole.log('MX Records:', mx.exists ? 'Found' : 'Not Found');\n\n// Check SPF records\nconst spf = await client.checkSPF('user@example.com');\nconsole.log('SPF:', spf.exists ? 'Configured' : 'Missing');\n\n// Check DMARC records\nconst dmarc = await client.checkDMARC('user@example.com');\nconsole.log('DMARC:', dmarc.exists ? 'Configured' : 'Missing');\n\n// Check DKIM records\nconst dkim = await client.checkDKIM('user@example.com');\nconsole.log('DKIM:', dkim.exists ? 'Configured' : 'Missing');\n\n// Check SSL certificate\nconst ssl = await client.checkSSL('user@example.com');\nconsole.log('SSL Valid:', ssl.exists);\n\n// Get domain age\nconst age = await client.getDomainAge('user@example.com');\nconsole.log('Domain Age:', age.age, 'years');\n```\n\n### 6. Domain Health Aggregate\n\nGet comprehensive domain health information with a single call.\n\n```typescript\nimport { HappyEmailClient } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient();\n\nconst info = await client.getDomainInfo('user@example.com');\n\nconsole.log(`Domain: ${info.domain}`);\nconsole.log(`Health Score: ${info.healthScore}/100`);\nconsole.log(`Assessment: ${info.assessment}`); // 'excellent' | 'good' | 'fair' | 'poor'\n\nconsole.log(`Has MX: ${info.hasMX}`);\nconsole.log(`MX Provider: ${info.mxProvider}`);\nconsole.log(`Has SPF: ${info.hasSPF}`);\nconsole.log(`Has DMARC: ${info.hasDMARC}`);\nconsole.log(`Has SSL: ${info.hasSSL}`);\nconsole.log(`Domain Age: ${info.domainAge} years`);\n\nif (info.assessment === 'poor') {\n  console.log('Domain may have deliverability issues');\n}\n```\n\n### 7. Bulk Verification with NeverBounce\n\nFor large-scale email verification, use NeverBounce's bulk API.\n\n```typescript\nimport { HappyEmailClient, InputLocationType } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient({\n  neverBounceApiKey: 'your-api-key',\n});\n\n// Create a bulk verification job\nconst job = await client.createBulkJob({\n  input: [\n    { uid: '1', email: 'user1@example.com' },\n    { uid: '2', email: 'user2@example.com' },\n  ],\n  inputLocation: InputLocationType.SUPPLIED,\n  autoParse: true,\n  autoStart: true,\n});\n\n// Check job status\nconst status = await client.getJobStatus(job.jobId);\n\n// Get results when complete\nif (status.jobStatus === 'complete') {\n  const results = await client.getJobResults(job.jobId);\n  console.log(results);\n}\n```\n\n---\n\n## Configuration\n\n### Configuration Presets\n\nHappy Mail provides four built-in presets for common use cases:\n\n#### Production Preset\n\nOptimized for production environments with strict validation and high accuracy.\n\n```typescript\nconst client = new HappyEmailClient({ preset: 'production' });\n```\n\n**Settings:**\n\n- Bounce checks: **Enabled**\n- Entropy threshold: **4.0** (stricter)\n- Min length for random check: **6**\n- Logging: **Disabled**\n\n**Use for:** Production environments, high-value emails, critical signups\n\n---\n\n#### Development Preset\n\nOptimized for development with fast validation and detailed logging.\n\n```typescript\nconst client = new HappyEmailClient({ preset: 'development' });\n```\n\n**Settings:**\n\n- Bounce checks: **Disabled** (faster)\n- Entropy threshold: **5.5** (lenient)\n- Min length for random check: **10**\n- Logging: **Enabled**\n\n**Use for:** Development, testing, rapid iteration\n\n---\n\n#### Strict Preset\n\nMaximum accuracy with zero tolerance for risky emails.\n\n```typescript\nconst client = new HappyEmailClient({ preset: 'strict' });\n```\n\n**Settings:**\n\n- Bounce checks: **Enabled**\n- Entropy threshold: **3.5** (very strict)\n- Min length for random check: **5**\n- Logging: **Disabled**\n\n**Use for:** High-value campaigns, critical email validation, zero tolerance scenarios\n\n---\n\n#### Lenient Preset\n\nHigh acceptance rate with minimal false positives.\n\n```typescript\nconst client = new HappyEmailClient({ preset: 'lenient' });\n```\n\n**Settings:**\n\n- Bounce checks: **Disabled**\n- Entropy threshold: **6.0** (very lenient)\n- Min length for random check: **12**\n- Logging: **Enabled**\n\n**Use for:** Quick signup flows, minimal friction, maximum acceptance\n\n---\n\n### Custom Configuration\n\nOverride preset values or create completely custom configurations:\n\n```typescript\nimport { HappyEmailClient } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient({\n  // Start with a preset\n  preset: 'production',\n\n  // Override specific values\n  loggingEnabled: true,\n  neverBounceApiKey: 'your-api-key',\n\n  // Or configure from scratch\n  skipBounceCheckByDefault: false,\n  entropyThreshold: 4.5,\n  minLengthForRandomCheck: 8,\n});\n```\n\n**All Configuration Options:**\n\n- `preset?: 'production' | 'development' | 'strict' | 'lenient'` - Use a preset configuration\n- `neverBounceApiKey?: string` - NeverBounce API key for enhanced validation\n- `skipBounceCheckByDefault?: boolean` - Skip bounce checks by default (default: false)\n- `entropyThreshold?: number` - Entropy threshold for random email detection (default: 4.5)\n- `minLengthForRandomCheck?: number` - Minimum length for random email check (default: 8)\n- `loggingEnabled?: boolean` - Enable/disable logging (default: true)\n- `emailVerificationService?: IEmailVerificationService` - Custom email verification service\n\n---\n\n### Error Handling\n\nHappy Mail provides custom error classes for better error handling and recovery.\n\n#### Error Classes\n\n```typescript\nimport {\n  HappyMailError,\n  ValidationError,\n  NetworkError,\n  APIError,\n  ConfigurationError,\n  ErrorCode,\n  isHappyMailError,\n  isRecoverableError,\n} from '@launchfirstagency/happy-mail';\n\ntry {\n  const result = await client.validateEmail('user@example.com');\n} catch (error) {\n  if (error instanceof NetworkError) {\n    // Network errors are recoverable - retry\n    console.log('Network issue, retrying...');\n  } else if (error instanceof APIError) {\n    // Check specific error codes\n    if (error.code === ErrorCode.RATE_LIMIT_EXCEEDED) {\n      console.log('Rate limited, waiting...');\n    }\n  } else if (error instanceof ValidationError) {\n    // Validation errors are not recoverable\n    console.log('Invalid input:', error.message);\n  } else if (error instanceof ConfigurationError) {\n    // Configuration errors need fixing\n    console.log('Configuration issue:', error.message);\n  }\n}\n```\n\n#### Error Properties\n\nAll Happy Mail errors include:\n\n- `code: ErrorCode` - Programmatic error code\n- `message: string` - Human-readable error message\n- `isRecoverable: boolean` - Whether the error can be retried\n- `timestamp: Date` - When the error occurred\n- `cause?: Error` - Original error (if any)\n- `context?: Record<string, unknown>` - Additional context\n\n#### Error Codes\n\n**Validation Errors:**\n\n- `INVALID_EMAIL_SYNTAX`\n- `INVALID_DOMAIN`\n- `DISPOSABLE_DOMAIN`\n- `VALIDATION_FAILED`\n\n**Network Errors:**\n\n- `NETWORK_ERROR`\n- `TIMEOUT`\n- `CONNECTION_REFUSED`\n- `DNS_LOOKUP_FAILED`\n\n**API Errors:**\n\n- `API_ERROR`\n- `API_KEY_MISSING`\n- `API_KEY_INVALID`\n- `RATE_LIMIT_EXCEEDED`\n- `QUOTA_EXCEEDED`\n- `API_UNAVAILABLE`\n\n**Configuration Errors:**\n\n- `INVALID_CONFIGURATION`\n- `MISSING_REQUIRED_OPTION`\n\n#### Retry with Exponential Backoff\n\nAutomatically retry failed operations with configurable backoff strategy:\n\n```typescript\nimport { retryWithBackoff } from '@launchfirstagency/happy-mail';\n\nconst result = await retryWithBackoff(async () => client.validateEmail('user@example.com'), {\n  maxAttempts: 3,\n  initialDelay: 1000, // 1 second\n  maxDelay: 10000, // 10 seconds max\n  backoffMultiplier: 2, // Double delay each time\n  jitter: true, // Add randomness to prevent thundering herd\n});\n```\n\nThe retry utility:\n\n- ✅ Automatically retries recoverable errors (Network, API rate limits)\n- ✅ Does not retry non-recoverable errors (Validation, Configuration)\n- ✅ Uses exponential backoff to avoid overwhelming servers\n- ✅ Adds jitter to prevent synchronized retries\n\n---\n\n## TypeScript Support\n\nHappy Mail is written in TypeScript with full strict mode and provides comprehensive type definitions.\n\n### Branded Types for Type Safety\n\nUse branded types to ensure emails are validated at compile time:\n\n```typescript\nimport type { ValidatedEmail, SafeEmail, NormalizedEmail } from '@launchfirstagency/happy-mail';\n\n// Type-safe function that only accepts validated emails\nfunction sendEmail(email: ValidatedEmail) {\n  // TypeScript guarantees this email has been validated\n  emailService.send(email);\n}\n\n// Type-safe function for marketing emails (stricter)\nfunction sendMarketingEmail(email: SafeEmail) {\n  // TypeScript guarantees this email is safe to send to\n  marketingService.send(email);\n}\n\n// Usage with type assertions (after validation)\nconst result = await client.validateEmail('user@example.com');\nif (isValid(result)) {\n  await sendEmail(result.email as ValidatedEmail);\n}\n\nif (isSafeToSend(result)) {\n  await sendMarketingEmail(result.email as SafeEmail);\n}\n```\n\n### Type Guards and Assertions\n\n```typescript\nimport {\n  isValidatedEmail,\n  isSafeEmail,\n  assertValidatedEmail,\n  assertSafeEmail,\n} from '@launchfirstagency/happy-mail';\n\n// Type guards (runtime checks)\nif (isValidatedEmail(email)) {\n  // TypeScript knows email is ValidatedEmail\n}\n\n// Assertions (throws if invalid)\nassertValidatedEmail(email); // Throws if not validated\nawait sendEmail(email as ValidatedEmail); // Safe after assertion\n```\n\n### All Available Types\n\n```typescript\nimport type {\n  // Client types\n  HappyEmailClientOptions,\n  BatchValidationOptions,\n  BatchValidationResult,\n  ValidateAndNormalizeResult,\n  DomainInfo,\n\n  // Response types\n  MailValidatorResponse,\n  MailBoxCanReceiveStatus,\n  EmailType,\n  MXHostType,\n  DomainParts,\n\n  // Result helper types\n  RiskLevel,\n  RejectionReason,\n\n  // Branded types\n  ValidatedEmail,\n  SafeEmail,\n  NormalizedEmail,\n\n  // Error types\n  ErrorCode,\n  RetryConfig,\n\n  // Bulk verification types\n  BulkJobRequest,\n  BulkJobResponse,\n  BulkJobStatus,\n  BulkJobResults,\n  InputLocationType,\n\n  // Preset types\n  PresetName,\n} from '@launchfirstagency/happy-mail';\n```\n\n---\n\n## API Reference\n\n### HappyEmailClient\n\n#### Constructor\n\n```typescript\nnew HappyEmailClient(options?: HappyEmailClientOptions)\n```\n\n#### Validation Methods\n\n- `validateEmail(email: string, skipBounceCheck?: boolean): Promise<MailValidatorResponse>`\n\n  - Validate a single email address\n\n- `validateBatch(emails: string[], options?: BatchValidationOptions): Promise<BatchValidationResult[]>`\n\n  - Validate multiple emails with concurrency control\n\n- `quickCheck(email: string): Promise<MailValidatorResponse>`\n\n  - Fast validation without bounce checking\n\n- `fullCheck(email: string): Promise<MailValidatorResponse>`\n\n  - Comprehensive validation with all checks\n\n- `validateAndNormalize(email: string, skipBounceCheck?: boolean): Promise<ValidateAndNormalizeResult>`\n  - Validate and normalize in one call\n\n#### Inbox Health Methods\n\n- `checkMX(email: string): Promise<RecordLookup>`\n- `checkSPF(email: string): Promise<RecordLookup>`\n- `checkDMARC(email: string): Promise<RecordLookup>`\n- `checkDKIM(email: string, dkimDomain?: string): Promise<RecordLookup>`\n- `checkSSL(email: string): Promise<SSLCheckResult>`\n- `getDomainAge(email: string): Promise<DomainAgeResult>`\n- `getDomainInfo(email: string): Promise<DomainInfo>`\n  - Get aggregate domain health information\n\n#### Bulk Verification Methods (NeverBounce)\n\n- `createBulkJob(request: BulkJobRequest): Promise<BulkJobResponse>`\n- `listJobs(): Promise<BulkJobStatus[]>`\n- `getJobStatus(jobId: number): Promise<BulkJobStatus>`\n- `getJobResults(jobId: string, query?: JobResultsQuery): Promise<BulkJobResults>`\n- `downloadJobResults(jobId: string, query?: JobResultsQuery): Promise<Buffer>`\n- `deleteJob(jobId: string): Promise<{ status: string }>`\n- `searchJobs(query?: JobSearchQuery): Promise<SearchResults>`\n\n### Result Helper Functions\n\n- `isValid(result: MailValidatorResponse): boolean`\n\n  - Check if email passed basic validation\n\n- `isSafeToSend(result: MailValidatorResponse): boolean`\n\n  - Check if email is safe to send to (stricter)\n\n- `shouldReject(result: MailValidatorResponse): boolean`\n\n  - Check if email should be rejected\n\n- `getRiskLevel(result: MailValidatorResponse): RiskLevel`\n\n  - Get risk classification: 'low' | 'medium' | 'high'\n\n- `getScore(result: MailValidatorResponse): number`\n\n  - Get quality score (0-100)\n\n- `getRejectionReasons(result: MailValidatorResponse): RejectionReason[]`\n\n  - Get specific rejection reasons\n\n- `getRecommendations(result: MailValidatorResponse): string[]`\n  - Get actionable recommendations\n\n### EmailValidationResult Class\n\nWrapper class providing a fluent API:\n\n```typescript\nconst result = new EmailValidationResult(rawResult);\n\nresult.isValid(); // boolean\nresult.isSafeToSend(); // boolean\nresult.shouldReject(); // boolean\nresult.getRiskLevel(); // 'low' | 'medium' | 'high'\nresult.getScore(); // 0-100\nresult.getRejectionReasons(); // string[]\nresult.getRecommendations(); // string[]\nresult.raw; // Access original response\n```\n\n### Utility Functions\n\n- `isValidEmail(email: string): boolean`\n\n  - Quick syntax validation\n\n- `normalizeEmailAddress(email: string, provider: MXHostType): string`\n\n  - Normalize email based on provider rules\n\n- `splitEmailDomain(email: string): DomainParts | false`\n\n  - Parse domain parts from email\n\n- `calculateStringEntropy(str: string): number`\n\n  - Calculate string randomness\n\n- `checkSpamList(domainOrIp: string): Promise<boolean>`\n\n  - Check if domain/IP is on spam lists\n\n- `resolveMxRecords(domain: string): Promise<MxRecord[]>`\n\n  - Resolve MX records for domain\n\n- `checkSSLCertificate(domain: string, port?: number): Promise<CertificateInfo>`\n\n  - Check SSL certificate\n\n- `whois(domain: string): Promise<WhoisResult>`\n  - Get WHOIS information\n\n### Error Utilities\n\n- `retryWithBackoff<T>(fn: () => Promise<T>, config?: RetryConfig): Promise<T>`\n\n  - Retry function with exponential backoff\n\n- `isHappyMailError(error: unknown): boolean`\n\n  - Check if error is a Happy Mail error\n\n- `isRecoverableError(error: unknown): boolean`\n  - Check if error can be retried\n\n### Preset Functions\n\n- `getPreset(name: PresetName): Partial<HappyEmailClientOptions>`\n\n  - Get configuration preset by name\n\n- `PRESETS: Record<PresetName, Partial<HappyEmailClientOptions>>`\n\n  - All available presets\n\n- `PRESET_DESCRIPTIONS: Record<PresetName, string>`\n  - Descriptions of all presets\n\n---\n\n## Common Use Cases\n\n### Form Validation\n\nValidate email addresses during user signup or registration:\n\n```typescript\nimport { HappyEmailClient, isValidEmail, isValid } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient({ preset: 'development' });\n\nasync function validateFormEmail(email: string) {\n  // Quick syntax check first\n  if (!isValidEmail(email)) {\n    return { valid: false, message: 'Invalid email format' };\n  }\n\n  // Fast validation without bounce check\n  const result = await client.quickCheck(email);\n\n  if (!isValid(result)) {\n    return { valid: false, message: 'Email cannot be used' };\n  }\n\n  if (result.risks.disposableDomain) {\n    return { valid: false, message: 'Disposable emails not allowed' };\n  }\n\n  return { valid: true };\n}\n```\n\n### Email List Cleanup\n\nClean and validate existing email lists:\n\n```typescript\nimport { HappyEmailClient, isSafeToSend, getScore } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient({ preset: 'production' });\n\nconst results = await client.validateBatch(emailList, {\n  concurrency: 10,\n  onProgress: (done, total) => console.log(`${done}/${total}`),\n});\n\nconst safeEmails = results\n  .filter((r) => r.success && r.result && isSafeToSend(r.result))\n  .map((r) => ({\n    email: r.email,\n    score: getScore(r.result!),\n  }));\n\nconsole.log(`${safeEmails.length} safe emails out of ${emailList.length}`);\n```\n\n### Pre-Send Validation\n\nValidate emails before sending marketing campaigns:\n\n```typescript\nimport { HappyEmailClient, getRiskLevel, getScore } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient({ preset: 'strict' });\n\nfor (const email of campaignList) {\n  const result = await client.fullCheck(email);\n  const risk = getRiskLevel(result);\n  const score = getScore(result);\n\n  if (risk === 'low' && score >= 80) {\n    // Safe to send\n    await sendMarketingEmail(email);\n  } else {\n    console.log(`Skipping ${email}: ${risk} risk, score ${score}`);\n  }\n}\n```\n\n### Domain Reputation Checking\n\nCheck if a domain is properly configured for email:\n\n```typescript\nimport { HappyEmailClient } from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient();\n\nconst info = await client.getDomainInfo('user@example.com');\n\nconsole.log(`Domain: ${info.domain}`);\nconsole.log(`Health Score: ${info.healthScore}/100`);\nconsole.log(`Assessment: ${info.assessment}`);\n\nif (info.healthScore >= 75) {\n  console.log('✅ Domain is well configured');\n} else {\n  console.log('⚠️  Domain may have issues:');\n  if (!info.hasMX) console.log('  - Missing MX records');\n  if (!info.hasSPF) console.log('  - Missing SPF record');\n  if (!info.hasDMARC) console.log('  - Missing DMARC record');\n}\n```\n\n### Error Handling with Retry\n\nHandle errors gracefully with automatic retries:\n\n```typescript\nimport {\n  HappyEmailClient,\n  retryWithBackoff,\n  NetworkError,\n  APIError,\n  ErrorCode,\n} from '@launchfirstagency/happy-mail';\n\nconst client = new HappyEmailClient({ preset: 'production' });\n\ntry {\n  const result = await retryWithBackoff(async () => client.validateEmail('user@example.com'), {\n    maxAttempts: 3,\n    initialDelay: 1000,\n    backoffMultiplier: 2,\n  });\n\n  console.log('Validation successful:', result);\n} catch (error) {\n  if (error instanceof NetworkError) {\n    console.error('Network issue persists after retries');\n  } else if (error instanceof APIError) {\n    if (error.code === ErrorCode.RATE_LIMIT_EXCEEDED) {\n      console.error('Rate limit exceeded');\n    } else if (error.code === ErrorCode.API_KEY_INVALID) {\n      console.error('Invalid API key');\n    }\n  }\n}\n```\n\n---\n\n## Examples\n\nComplete working examples are available in the [examples](./examples/) directory:\n\n- **[Quick Start](./examples/01-quick-start.ts)** - Basic email validation\n- **[Configuration Presets](./examples/02-presets.ts)** - Using configuration presets\n- **[Result Interpretation](./examples/03-result-interpretation.ts)** - Using helper functions\n- **[Batch Validation](./examples/04-batch-validation.ts)** - Validating multiple emails\n- **[Convenience Methods](./examples/05-convenience-methods.ts)** - quickCheck, fullCheck, etc.\n- **[Error Handling](./examples/06-error-handling.ts)** - Custom errors and retry strategies\n- **[Inbox Health](./examples/07-inbox-health.ts)** - Domain health checking\n- **[Branded Types](./examples/08-branded-types.ts)** - Type-safe email handling\n- **[Utilities](./examples/09-utilities.ts)** - Using utility functions\n- **[Bulk Verification](./examples/10-bulk-verification.ts)** - NeverBounce bulk API\n\nRun any example with:\n\n```bash\nnpx ts-node examples/01-quick-start.ts\n```\n\n---\n\n## Requirements\n\n- Node.js >= 20\n- npm >= 10\n\n---\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n### Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Run tests with coverage\nnpm run coverage\n\n# Build\nnpm run build\n\n# View coverage report\nopen coverage/lcov-report/index.html\n```\n\n---\n\n## License\n\nAGPL License - see [LICENSE](./LICENSE) file for details\n\n---\n\n## Support\n\nFor issues, questions, or contributions, please visit our [GitHub repository](https://github.com/LaunchFirstAgency/happy-mail).\n\n---\n\n**Made with ❤️ by Launch First Agency**\n","readmeFilename":"README.md"}