{"_id":"@bernierllc/email-validator","_rev":"10-1df9e0901e0c98f68f21d57fda31ec57","name":"@bernierllc/email-validator","dist-tags":{"latest":"3.4.0"},"versions":{"1.0.2":{"name":"@bernierllc/email-validator","version":"1.0.2","keywords":["email","validation","html","css","compliance","accessibility","templates","canspam","gdpr","responsive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/email-validator@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"c199e632c96db06d42413d508dab044eb05ccc3a","tarball":"https://registry.npmjs.org/@bernierllc/email-validator/-/email-validator-1.0.2.tgz","fileCount":11,"integrity":"sha512-A5Dnxsw80bYF0kPFwv+Grdqew0TnhoGyqQpd9P84ua+CZWIOv33xQnjlHId/L273RI/bAsgK4w5HBo3yQXXORw==","signatures":[{"sig":"MEQCICjk/J0Q1ppR8xhjvVmaB/wgubCIKxzj92/D2a58HS5HAiA21dnzjRe0XtV7wrgvOgkjXxLBh746ILwbTXah5UhIGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94362},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"bb24d13084b52c7de1c69c8233cb6c849c1e933e","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/email-validator"},"_npmVersion":"11.4.2","description":"Atomic utility package for validating email content, structure, and compliance","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/email-parser":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/email-validator_1.0.2_1759867862874_0.3760261288378466","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/email-validator","version":"1.0.3","keywords":["email","validation","html","css","compliance","accessibility","templates","canspam","gdpr","responsive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/email-validator@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"bdf792daaec1fc0b5edb2896d183cfbfeb2616c6","tarball":"https://registry.npmjs.org/@bernierllc/email-validator/-/email-validator-1.0.3.tgz","fileCount":11,"integrity":"sha512-7Yg1OIFwrtjnu6f3395rYKYtVVd4D8boS0c5v058UU1JXLShUydyZAJwDce4Yl7rfdQjuhwolQER2KjLWHyz4A==","signatures":[{"sig":"MEUCIQDUbM63M8PxA0lZr/9aUJN9oF5eqzSIkNBsZhZcayNmGQIgO3tCrMOSBZbzVOc802wN7+DGiUE0Sh22ihpjmgC7dOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94362},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"bb24d13084b52c7de1c69c8233cb6c849c1e933e","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/email-validator"},"_npmVersion":"11.4.2","description":"Atomic utility package for validating email content, structure, and compliance","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/email-parser":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/email-validator_1.0.3_1759868069779_0.3394974281758405","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bernierllc/email-validator","version":"1.0.4","keywords":["email","validation","html","css","compliance","accessibility","templates","canspam","gdpr","responsive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/email-validator@1.0.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"789f014db13c3ef87ef5e6634cf7e347d3912722","tarball":"https://registry.npmjs.org/@bernierllc/email-validator/-/email-validator-1.0.4.tgz","fileCount":90,"integrity":"sha512-ME71wKrOLJhb+v4PxkoieZi+b0tkabvUVcWuqoyArho6BYTdRe5StlW1usyvGArczyAREOk8hrKpWU26TYyVhw==","signatures":[{"sig":"MEYCIQCHWwZmNqV1KlWCzpU0GW8uduto1S0TqzgnHKoTVVfb4QIhALtGSWsy1lbYbXr2JgWduUMMejBXLrILqfS/JsbHCJ0a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":470339},"main":"dist/index.js","_from":"file:bernierllc-email-validator-1.0.4.tgz","types":"dist/index.d.ts","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/9450b0c7536ffcbef5be091c68d4a64c/bernierllc-email-validator-1.0.4.tgz","_integrity":"sha512-ME71wKrOLJhb+v4PxkoieZi+b0tkabvUVcWuqoyArho6BYTdRe5StlW1usyvGArczyAREOk8hrKpWU26TYyVhw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/email-validator"},"_npmVersion":"11.7.0","description":"Atomic utility package for validating email content, structure, and compliance","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/email-parser":"0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/email-validator_1.0.4_1766276704322_0.24800426270955467","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@bernierllc/email-validator","version":"1.0.5","keywords":["email","validation","html","css","compliance","accessibility","templates","canspam","gdpr","responsive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/email-validator@1.0.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"f26b259e80c38094746f793979c3b595ddf0ae79","tarball":"https://registry.npmjs.org/@bernierllc/email-validator/-/email-validator-1.0.5.tgz","fileCount":90,"integrity":"sha512-Hesa0P4PLqMuhw3Ll9kuqgZnFvuPSsktcgQDPVirVlHN9h5L62DVKRBDkcIG2dsvzsGfNXZXdsJq/wCS/V4ECA==","signatures":[{"sig":"MEUCIQDjYf7aYlq2iEBAUpQ1BdGo8JvU99fP+ABqnMvbLDL8bQIgC+tdr1mmQRaAP0dJeUl/w28Q6dheIPSWpxa6bvbYn2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":470339},"main":"dist/index.js","_from":"file:bernierllc-email-validator-1.0.5.tgz","types":"dist/index.d.ts","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/bc83e6ff2cc9b9cc224350effce9cd9b/bernierllc-email-validator-1.0.5.tgz","_integrity":"sha512-Hesa0P4PLqMuhw3Ll9kuqgZnFvuPSsktcgQDPVirVlHN9h5L62DVKRBDkcIG2dsvzsGfNXZXdsJq/wCS/V4ECA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/email-validator"},"_npmVersion":"11.7.0","description":"Atomic utility package for validating email content, structure, and compliance","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/email-parser":"0.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/email-validator_1.0.5_1766283485321_0.5098685699220538","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@bernierllc/email-validator","version":"3.0.0","keywords":["email","validation","html","css","compliance","accessibility","templates","canspam","gdpr","responsive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/email-validator@3.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"628e268f3dfc204592c2123b5b3a7738ffed6e8c","tarball":"https://registry.npmjs.org/@bernierllc/email-validator/-/email-validator-3.0.0.tgz","fileCount":90,"integrity":"sha512-psNxsgYAYapmPIf90EqDDmnznEHfO8pDbYVE5fWO6AanryGKjEB4cMGYdYWxyjY8CGdjGHEP6BtxUnY2BRmacw==","signatures":[{"sig":"MEYCIQCex+3my/57VRxuLHJ1B5wPdpL29wvHzKAvBUu1TKfKagIhAJfuflZ/fSR4OyGoShj1lIbN6tnLD3vphDw2RSBmLYNx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":470371},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43fc643b-0f68-4e9b-9903-79c8a605ff92"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/email-validator"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Atomic utility package for validating email content, structure, and compliance","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/email-parser":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/email-validator_3.0.0_1767642391094_0.7751818584231849","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@bernierllc/email-validator","version":"3.0.1","keywords":["email","validation","html","css","compliance","accessibility","templates","canspam","gdpr","responsive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/email-validator@3.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"aa34aad68572fb8b39204595d528aaec098c204a","tarball":"https://registry.npmjs.org/@bernierllc/email-validator/-/email-validator-3.0.1.tgz","fileCount":90,"integrity":"sha512-R/Qh9FAhTfqYXtpCCf49WSowzorzBlmwXw1ciW61LJcScJBrjY5BTNaqmdIJD+F3+zmWzykhZ3KAH/5I5snQuw==","signatures":[{"sig":"MEQCIDBTj/uj7xAfHQG09u+F5Ft0CEmX7RmZv9McQ+dZ4+VuAiBZMukoA2bz7EkUcSTQsv1yoUsbHWAA8tj7kEHyaVQfWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":470313},"main":"dist/index.js","_from":"file:bernierllc-email-validator-3.0.1.tgz","types":"dist/index.d.ts","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/Users/mattbernier/projects/tools/packages/core/email-validator/bernierllc-email-validator-3.0.1.tgz","_integrity":"sha512-R/Qh9FAhTfqYXtpCCf49WSowzorzBlmwXw1ciW61LJcScJBrjY5BTNaqmdIJD+F3+zmWzykhZ3KAH/5I5snQuw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/email-validator"},"_npmVersion":"11.6.2","description":"Atomic utility package for validating email content, structure, and compliance","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@bernierllc/email-parser":"0.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/email-validator_3.0.1_1772569368378_0.38587136434709657","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@bernierllc/email-validator","version":"3.0.2","keywords":["email","validation","html","css","compliance","accessibility","templates","canspam","gdpr","responsive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/email-validator@3.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"3d2b28a3e969d16162896e32f2aa4ef92c1dc4e1","tarball":"https://registry.npmjs.org/@bernierllc/email-validator/-/email-validator-3.0.2.tgz","fileCount":90,"integrity":"sha512-PougiyDsuczs49yU5morZXJQUmEcH8tK97WXoN/0MbWsIphUZfj1VEsdd9VbLynbo2W65Hy9hgyT+m8/tBaEBQ==","signatures":[{"sig":"MEUCIFOlKwQtLuGWqIuTHuc60xK/+aF4ppQxwJghkbNzt2zzAiEAgdk9BMky+apPcnXnEUZJdHs+Wi20tfx0mVc6CVde8o8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":470313},"main":"dist/index.js","_from":"file:bernierllc-email-validator-3.0.2.tgz","types":"dist/index.d.ts","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43fc643b-0f68-4e9b-9903-79c8a605ff92"}},"_resolved":"/home/runner/work/tools/tools/packages/core/email-validator/bernierllc-email-validator-3.0.2.tgz","_integrity":"sha512-PougiyDsuczs49yU5morZXJQUmEcH8tK97WXoN/0MbWsIphUZfj1VEsdd9VbLynbo2W65Hy9hgyT+m8/tBaEBQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/email-validator"},"_npmVersion":"11.11.0","description":"Atomic utility package for validating email content, structure, and compliance","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/email-parser":"0.4.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/email-validator_3.0.2_1773083087582_0.37885784756580176","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@bernierllc/email-validator","version":"3.2.0","keywords":["email","validation","html","css","compliance","accessibility","templates","canspam","gdpr","responsive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/email-validator@3.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"557a70ac97e73320409b1acc7d2609c38b60ac53","tarball":"https://registry.npmjs.org/@bernierllc/email-validator/-/email-validator-3.2.0.tgz","fileCount":62,"integrity":"sha512-Dsh3oEox0YKhnKM4te4+HDE4wUG+14D2z5+IqhxEgzsuGJcelU+ZhDkI874jq2yKRaLduLtveSXMLUJTpSmAoQ==","signatures":[{"sig":"MEUCIQDI4PHX4nETIxQGXwggbwo4J6IATYeY5eRYHY/PJDt2CAIgQ1KtgA/UcAtcwQVjK5ffKsCdPxk3lhWtznQWMplIpAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":250089},"main":"dist/index.js","_from":"file:bernierllc-email-validator-3.2.0.tgz","types":"dist/index.d.ts","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43fc643b-0f68-4e9b-9903-79c8a605ff92"}},"_resolved":"/home/runner/work/tools/tools/packages/core/email-validator/bernierllc-email-validator-3.2.0.tgz","_integrity":"sha512-Dsh3oEox0YKhnKM4te4+HDE4wUG+14D2z5+IqhxEgzsuGJcelU+ZhDkI874jq2yKRaLduLtveSXMLUJTpSmAoQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/email-validator"},"_npmVersion":"11.14.1","description":"Atomic utility package for validating email content, structure, and compliance","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/email-parser":"0.4.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/email-validator_3.2.0_1779221317607_0.35322447792337064","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"@bernierllc/email-validator","version":"3.3.0","keywords":["email","validation","html","css","compliance","accessibility","templates","canspam","gdpr","responsive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/email-validator@3.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"1eedc9cbb87470acfab35909d3f0f8cab79816de","tarball":"https://registry.npmjs.org/@bernierllc/email-validator/-/email-validator-3.3.0.tgz","fileCount":62,"integrity":"sha512-LKLca1M27pbCTV+MFjEOqFZWCpYk4eCzlMl2AmIQMc5XY+H4xQhE2HA3qygjm493A5gLWHCAd1zNrHhxlWwLXg==","signatures":[{"sig":"MEYCIQCImlIwdJCwPgb5jWdXm4ImTZUCCQ6ea2wEK/Kzcw8GjQIhAJbnzyHbEAHNo+HC90hxfrwJ4BSYX9ihc7Ah4Y0LSv3k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":250089},"main":"dist/index.js","_from":"file:bernierllc-email-validator-3.3.0.tgz","types":"dist/index.d.ts","private":false,"scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43fc643b-0f68-4e9b-9903-79c8a605ff92"}},"_resolved":"/home/runner/work/tools/tools/packages/core/email-validator/bernierllc-email-validator-3.3.0.tgz","_integrity":"sha512-LKLca1M27pbCTV+MFjEOqFZWCpYk4eCzlMl2AmIQMc5XY+H4xQhE2HA3qygjm493A5gLWHCAd1zNrHhxlWwLXg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/email-validator"},"_npmVersion":"11.14.1","description":"Atomic utility package for validating email content, structure, and compliance","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/email-parser":"0.6.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/email-validator_3.3.0_1779241155865_0.0815002780645675","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"@bernierllc/email-validator","version":"3.4.0","description":"Atomic utility package for validating email content, structure, and compliance","main":"dist/index.js","types":"dist/index.d.ts","keywords":["email","validation","html","css","compliance","accessibility","templates","canspam","gdpr","responsive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","private":false,"dependencies":{"@bernierllc/email-parser":"0.7.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.37.0","jest":"^29.5.0","ts-jest":"^29.0.5","typescript":"^5.0.0"},"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/core/email-validator"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"jest","test:run":"jest","test:coverage":"jest --coverage","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","clean":"rm -rf dist"},"_id":"@bernierllc/email-validator@3.4.0","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"homepage":"https://github.com/bernierllc/tools#readme","_integrity":"sha512-8E4AcKk3X5A9rI967T8OhJnQ0eTtDL46Bq6Qn0pC3TCf1YBbpPJZ/Yv4TYyhaDjPucybnoC94p5YuAS6N1JLKw==","_resolved":"/home/runner/work/tools/tools/packages/core/email-validator/bernierllc-email-validator-3.4.0.tgz","_from":"file:bernierllc-email-validator-3.4.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-8E4AcKk3X5A9rI967T8OhJnQ0eTtDL46Bq6Qn0pC3TCf1YBbpPJZ/Yv4TYyhaDjPucybnoC94p5YuAS6N1JLKw==","shasum":"4036527cc3713788e658536b4566b03c236b1977","tarball":"https://registry.npmjs.org/@bernierllc/email-validator/-/email-validator-3.4.0.tgz","fileCount":62,"unpackedSize":250089,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICBdhny+I7mzNBpPA4zAkrxtYFRZ1+yuhXsHtV19+SWPAiBR0Q5RYoedH24mG9fWK6xFXJRa3Hkeqvao1/oNwdYHWA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43fc643b-0f68-4e9b-9903-79c8a605ff92"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/email-validator_3.4.0_1779249901045_0.6598127925964394"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-07T20:11:02.778Z","modified":"2026-05-20T04:05:01.301Z","1.0.2":"2025-10-07T20:11:03.101Z","1.0.3":"2025-10-07T20:14:29.969Z","1.0.4":"2025-12-21T00:25:04.472Z","1.0.5":"2025-12-21T02:18:05.471Z","3.0.0":"2026-01-05T19:46:31.248Z","3.0.1":"2026-03-03T20:22:48.536Z","3.0.2":"2026-03-09T19:04:47.739Z","3.2.0":"2026-05-19T20:08:37.747Z","3.3.0":"2026-05-20T01:39:16.043Z","3.4.0":"2026-05-20T04:05:01.182Z"},"bugs":{"url":"https://github.com/bernierllc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"UNLICENSED","homepage":"https://github.com/bernierllc/tools#readme","keywords":["email","validation","html","css","compliance","accessibility","templates","canspam","gdpr","responsive"],"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/core/email-validator"},"description":"Atomic utility package for validating email content, structure, and compliance","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/email-validator\n\nComprehensive email validation utilities for testing email content, headers, structure, and quality.\n\n## Installation\n\n```bash\nnpm install @bernierllc/email-validator\n```\n\n## Quick Start\n\n```typescript\nimport { validateEmail } from '@bernierllc/email-validator';\n\nconst emailContent = `From: sender@example.com\nTo: recipient@example.com\nSubject: Test Email\nDate: Mon, 1 Jan 2025 10:00:00 +0000\nContent-Type: text/plain\n\nThis is a test email.`;\n\nconst result = await validateEmail(emailContent, {\n  maxScore: 85,\n  strictMode: true\n});\n\nif (result.valid) {\n  console.log(`Email validation passed with score: ${result.score}/100`);\n} else {\n  console.log('Email validation failed:');\n  result.errors.forEach(error => {\n    console.log(`- ${error.message}`);\n  });\n}\n```\n\n## Features\n\n- **Comprehensive Validation**: Headers, content, structure, and attachments\n- **Scoring System**: 0-100 quality score with configurable thresholds\n- **Security Checks**: XSS detection, dangerous attachments, suspicious links\n- **Test Assertions**: Flexible assertion framework for email testing\n- **Batch Processing**: Validate multiple emails efficiently\n- **Detailed Reporting**: Categorized issues (errors, warnings, info)\n- **Rule-Based Architecture**: Enable/disable specific validation rules\n\n## API Reference\n\n### validateEmail(content, options?)\n\nValidate a single email and return comprehensive results.\n\n#### Parameters\n\n- `content` (string | Buffer) - Raw email content\n- `options` (EmailValidationOptions) - Validation options\n\n#### Options\n\n```typescript\ninterface EmailValidationOptions {\n  rules?: string[];           // Specific rules to apply\n  skipRules?: string[];       // Rules to skip\n  maxScore?: number;          // Minimum score for valid (default: 70)\n  strictMode?: boolean;       // Strict validation mode\n  contextHints?: {\n    expectedSender?: string;\n    expectedRecipient?: string;\n    expectedSubjectPattern?: string;\n    allowedAttachmentTypes?: string[];\n    maxAttachmentSize?: number;\n  };\n}\n```\n\n#### Returns\n\n```typescript\ninterface ValidationResult {\n  valid: boolean;             // Overall validation result\n  score: number;              // Quality score (0-100)\n  errors: ValidationError[];  // Critical issues\n  warnings: ValidationWarning[]; // Non-critical issues  \n  info: ValidationInfo[];     // Informational notes\n  metadata: {\n    rulesApplied: string[];\n    processingTime: number;\n    emailSize: number;\n  };\n}\n```\n\n### EmailValidator Class\n\nFor advanced usage and batch processing:\n\n```typescript\nimport { EmailValidator } from '@bernierllc/email-validator';\n\nconst validator = new EmailValidator();\n\n// Single email validation\nconst result = await validator.validateEmail(emailContent, options);\n\n// Batch validation\nconst emails = [\n  { id: 'email1', content: email1Content },\n  { id: 'email2', content: email2Content }\n];\nconst results = await validator.validateBatch(emails, options);\n\n// Get available validation rules\nconst rules = validator.getAvailableRules();\n```\n\n## Email Test Assertions\n\nThe package includes a powerful assertion framework for email testing:\n\n```typescript\nimport { assertEmail, runEmailTest } from '@bernierllc/email-validator';\n\n// Single assertion\nconst assertion = {\n  type: 'header',\n  field: 'from',\n  condition: 'equals',\n  expected: 'sender@example.com'\n};\n\nconst result = await assertEmail(emailContent, assertion);\nconsole.log(result.passed); // true/false\n\n// Test suite\nconst testSuite = {\n  name: 'Email Validation Test',\n  email: emailContent,\n  assertions: [\n    {\n      type: 'header',\n      field: 'subject',\n      condition: 'contains',\n      expected: 'Test'\n    },\n    {\n      type: 'content',\n      field: 'text',\n      condition: 'matches',\n      expected: /test email/i\n    },\n    {\n      type: 'attachment',\n      field: 'count',\n      condition: 'equals',\n      expected: 0\n    }\n  ]\n};\n\nconst suiteResult = await runEmailTest(testSuite);\nconsole.log(`${suiteResult.summary.passed}/${suiteResult.summary.total} tests passed`);\n```\n\n### Assertion Types\n\n#### Header Assertions\n```typescript\n{\n  type: 'header',\n  field: 'from' | 'to' | 'subject' | 'date' | string,\n  condition: 'equals' | 'contains' | 'matches' | 'exists' | 'not-exists',\n  expected: any\n}\n```\n\n#### Content Assertions\n```typescript\n{\n  type: 'content',\n  field: 'text' | 'html' | 'raw',\n  condition: 'equals' | 'contains' | 'matches' | 'exists',\n  expected: any\n}\n```\n\n#### Attachment Assertions\n```typescript\n{\n  type: 'attachment',\n  field: 'count' | 'total-size' | 'filename[0]' | 'filename[1]' | ...,\n  condition: 'equals' | 'greater-than' | 'less-than' | 'contains',\n  expected: any\n}\n```\n\n#### Structure Assertions\n```typescript\n{\n  type: 'structure',\n  field: 'size' | 'isMultipart' | 'hasAttachments' | 'encoding',\n  condition: 'equals' | 'greater-than' | 'less-than',\n  expected: any\n}\n```\n\n## Validation Rules\n\n### Header Rules\n\n- **required-headers**: Validates required headers (From, To, Subject, Date)\n- **valid-email-addresses**: Validates email address formats\n- **date-header**: Validates Date header format and reasonableness\n- **message-id-format**: Validates Message-ID header format\n- **content-type-header**: Validates Content-Type header\n- **subject-length**: Validates subject line length (max 78 characters)\n\n### Content Rules\n\n- **content-presence**: Ensures email has content\n- **html-validation**: Validates HTML structure and security\n- **text-content**: Validates plain text quality\n- **link-validation**: Validates links and detects security issues\n\n### Structure Rules\n\n- **email-size**: Validates email size limits\n- **multipart-structure**: Validates multipart email structure\n- **encoding-validation**: Validates character encoding\n- **header-consistency**: Validates consistency between headers and content\n\n### Attachment Rules\n\n- **attachment-size**: Validates attachment sizes\n- **attachment-type**: Validates file types and detects dangerous attachments\n- **attachment-count**: Validates number of attachments\n- **inline-attachments**: Validates inline attachments and embedded images\n\n## Usage Examples\n\n### Security-Focused Validation\n\n```typescript\nconst result = await validateEmail(emailContent, {\n  strictMode: true,\n  maxScore: 90,\n  rules: [\n    'valid-email-addresses',\n    'html-validation',\n    'link-validation',\n    'attachment-type'\n  ]\n});\n\nif (!result.valid) {\n  // Handle security issues\n  const securityIssues = result.errors.filter(e => \n    ['SCRIPT_TAG', 'JAVASCRIPT_URL', 'DANGEROUS_ATTACHMENT_TYPE'].includes(e.code)\n  );\n}\n```\n\n### Content Quality Validation\n\n```typescript\nconst result = await validateEmail(emailContent, {\n  skipRules: ['attachment-size'], // Skip attachment size checks\n  contextHints: {\n    expectedSender: 'noreply@company.com',\n    maxAttachmentSize: 5 * 1024 * 1024 // 5MB limit\n  }\n});\n\n// Review quality score\nif (result.score < 80) {\n  console.log('Email quality could be improved:');\n  result.warnings.forEach(warning => {\n    console.log(`- ${warning.message}`);\n  });\n}\n```\n\n### Email Testing Workflow\n\n```typescript\nimport { EmailAssertions } from '@bernierllc/email-validator';\n\nconst assertions = new EmailAssertions();\n\n// Test multiple emails\nconst testSuites = [\n  {\n    name: 'Welcome Email Test',\n    email: welcomeEmailContent,\n    assertions: [\n      { type: 'header', field: 'from', condition: 'contains', expected: 'welcome' },\n      { type: 'content', field: 'html', condition: 'contains', expected: 'Welcome' }\n    ]\n  },\n  {\n    name: 'Newsletter Test',\n    email: newsletterContent,\n    assertions: [\n      { type: 'header', field: 'subject', condition: 'matches', expected: /newsletter/i },\n      { type: 'attachment', field: 'count', condition: 'equals', expected: 0 }\n    ]\n  }\n];\n\nconst results = await assertions.runTestSuites(testSuites);\nconst allPassed = results.every(r => r.passed);\n```\n\n### Custom Rule Selection\n\n```typescript\n// Only validate headers and content\nconst result = await validateEmail(emailContent, {\n  rules: [\n    'required-headers',\n    'valid-email-addresses',\n    'content-presence',\n    'html-validation'\n  ]\n});\n\n// Skip specific rules\nconst result2 = await validateEmail(emailContent, {\n  skipRules: ['subject-length', 'attachment-count']\n});\n```\n\n## Error Codes Reference\n\n### Header Errors\n- `MISSING_FROM_HEADER`, `MISSING_TO_HEADER`, `MISSING_SUBJECT_HEADER`, `MISSING_DATE_HEADER`\n- `INVALID_EMAIL_ADDRESS`\n- `INVALID_DATE_FORMAT`, `FUTURE_DATE`\n- `INVALID_MESSAGE_ID_FORMAT`\n- `SUBJECT_TOO_LONG`, `EMPTY_SUBJECT`\n\n### Content Errors\n- `NO_CONTENT`\n- `SCRIPT_TAG`, `JAVASCRIPT_URL`, `EVENT_HANDLERS`\n- `INSECURE_LINKS`, `URL_SHORTENERS`\n\n### Structure Errors\n- `LARGE_EMAIL_SIZE`, `EXCESSIVE_EMAIL_SIZE`\n- `MISSING_MULTIPART_BOUNDARY`\n- `REPLACEMENT_CHARACTERS`, `ENCODING_ARTIFACTS`\n\n### Attachment Errors\n- `LARGE_ATTACHMENT`, `EXCESSIVE_ATTACHMENT_SIZE`\n- `DANGEROUS_ATTACHMENT_TYPE`, `SUSPICIOUS_ATTACHMENT_EXTENSION`\n- `MANY_ATTACHMENTS`, `EXCESSIVE_ATTACHMENTS`\n\n## Performance\n\n- **Efficient parsing** using @bernierllc/email-parser\n- **Parallel rule execution** for better performance\n- **Memory-conscious** attachment handling\n- **Processing time tracking** included in results\n\n## Dependencies\n\n- `@bernierllc/email-parser` - Email parsing functionality\n- `zod` - Schema validation\n\n## Integration Status\n\n- **Logger integration**: not-applicable - Pure validation utility with no side effects or logging requirements. The package performs synchronous validation and returns structured results without need for @bernierllc/logger integration.\n- **Docs-Suite**: ready - TypeScript documentation exported via TypeDoc, API reference in README\n- **NeverHub integration**: not-applicable - Core validation utility with no service discovery needs. The package provides atomic validation functions following the core package pattern and does not require @bernierllc/neverhub-adapter or detectNeverHub capabilities.\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.","readmeFilename":"README.md"}