{"_id":"@bernierllc/email-test-assertions","_rev":"8-df57117d2c5468dbc0c7eb2b92cde9cd","name":"@bernierllc/email-test-assertions","dist-tags":{"latest":"1.6.0"},"versions":{"1.0.2":{"name":"@bernierllc/email-test-assertions","version":"1.0.2","keywords":["email","testing","assertions","jest","vitest","mocha","chai","test-assertions","fluent-api","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/email-test-assertions@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"82f822f49ad18f1486a42c8f6f7fc4a4f9c1838d","tarball":"https://registry.npmjs.org/@bernierllc/email-test-assertions/-/email-test-assertions-1.0.2.tgz","fileCount":24,"integrity":"sha512-38vrdt+it9WdjsMhvFLRzQDu3xm5aeCvyzbHWWU//en1L+0K+dN4XSZ715hJsL43XXBDS/KGccip5sMbJJDJ1w==","signatures":[{"sig":"MEYCIQDEN1fotre414fdzVCgYIrXrS+/Pps4mqo+IvoM7lEj2QIhAIMziTKNigw50q2ZxOInYwbLG3CDAYYRLOhrYaZvrGYi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63529},"main":"dist/index.js","type":"commonjs","_from":"file:bernierllc-email-test-assertions-1.0.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/baab2211b83a2e36a9028bb41ee57f3e/bernierllc-email-test-assertions-1.0.2.tgz","_integrity":"sha512-38vrdt+it9WdjsMhvFLRzQDu3xm5aeCvyzbHWWU//en1L+0K+dN4XSZ715hJsL43XXBDS/KGccip5sMbJJDJ1w==","bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/email-test-assertions"},"_npmVersion":"11.6.2","description":"Testing framework-agnostic assertions for email testing with fluent API and async support","directories":{"test":"tests"},"_nodeVersion":"25.2.0","dependencies":{"@bernierllc/email-parser":"^0.1.1","@bernierllc/email-template-engine":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@typescript-eslint/parser":"^6.7.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"peerDependencies":{"@bernierllc/logger":"^1.0.0 || ^2.0.0","@bernierllc/neverhub-adapter":"^0.1.0 || ^1.0.0"},"peerDependenciesMeta":{"@bernierllc/neverhub-adapter":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/email-test-assertions_1.0.2_1763336444495_0.522249820519302","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/email-test-assertions","version":"1.0.3","keywords":["email","testing","assertions","jest","vitest","mocha","chai","test-assertions","fluent-api","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/email-test-assertions@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"112ba7d344cb95f75ce78e8259bb8a8e0fc73bdb","tarball":"https://registry.npmjs.org/@bernierllc/email-test-assertions/-/email-test-assertions-1.0.3.tgz","fileCount":24,"integrity":"sha512-fNGFF1lWCvcM2Xj99kgZjFNWk5Qyd8tO39zf9pJZUcPZ9wHoFZeS/rslrgwRmjA8fcH9TC+8M+5as+KUX4quuA==","signatures":[{"sig":"MEYCIQDXoP+o7LodEFSuSDMVXeMQZeT0Euma/oJYMMCM79sKAgIhAPZ/YrH1f9+1XiqutMfDzWrzQRRKH7yF/LgfGoEsatK8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63623},"main":"dist/index.js","type":"commonjs","_from":"file:bernierllc-email-test-assertions-1.0.3.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/5472443cc5e9c5235e5ddcbf5e65a40f/bernierllc-email-test-assertions-1.0.3.tgz","_integrity":"sha512-fNGFF1lWCvcM2Xj99kgZjFNWk5Qyd8tO39zf9pJZUcPZ9wHoFZeS/rslrgwRmjA8fcH9TC+8M+5as+KUX4quuA==","bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/email-test-assertions"},"_npmVersion":"11.7.0","description":"Testing framework-agnostic assertions for email testing with fluent API and async support","directories":{"test":"tests"},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/email-parser":"0.1.2","@bernierllc/email-template-engine":"1.0.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@typescript-eslint/parser":"^6.7.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"peerDependencies":{"@bernierllc/logger":"^1.0.0 || ^2.0.0","@bernierllc/neverhub-adapter":"^0.1.0 || ^1.0.0"},"peerDependenciesMeta":{"@bernierllc/neverhub-adapter":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/email-test-assertions_1.0.3_1766276739651_0.5335610960882875","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bernierllc/email-test-assertions","version":"1.0.4","keywords":["email","testing","assertions","jest","vitest","mocha","chai","test-assertions","fluent-api","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/email-test-assertions@1.0.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"7e110f2fbae005db1058813023229aaf73b6b724","tarball":"https://registry.npmjs.org/@bernierllc/email-test-assertions/-/email-test-assertions-1.0.4.tgz","fileCount":24,"integrity":"sha512-AhgJfSR04KJ1A5ZOlFcY6QVqkX/+IJLMY+uVsl1sr4RjynxXW+kRZoLRXHUn4KdA0KayqUElQateBPc+YZtGuA==","signatures":[{"sig":"MEUCIHLzkQWy2zPBhos8LPfi3ARDXYs8PY0+u0I8JPygLerHAiEAk1j98OB63YBibUZ/ZKW/yNVlbqiq5gNjvOZ0le8/2uU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63623},"main":"dist/index.js","type":"commonjs","_from":"file:bernierllc-email-test-assertions-1.0.4.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/a740150355c13c46689b1deee6f47c15/bernierllc-email-test-assertions-1.0.4.tgz","_integrity":"sha512-AhgJfSR04KJ1A5ZOlFcY6QVqkX/+IJLMY+uVsl1sr4RjynxXW+kRZoLRXHUn4KdA0KayqUElQateBPc+YZtGuA==","bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/email-test-assertions"},"_npmVersion":"11.7.0","description":"Testing framework-agnostic assertions for email testing with fluent API and async support","directories":{"test":"tests"},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/email-parser":"0.1.3","@bernierllc/email-template-engine":"1.0.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@typescript-eslint/parser":"^6.7.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"peerDependencies":{"@bernierllc/logger":"^1.0.0 || ^2.0.0","@bernierllc/neverhub-adapter":"^0.1.0 || ^1.0.0"},"peerDependenciesMeta":{"@bernierllc/neverhub-adapter":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/email-test-assertions_1.0.4_1766283520759_0.9503072364377962","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/email-test-assertions","version":"1.2.0","keywords":["email","testing","assertions","jest","vitest","mocha","chai","test-assertions","fluent-api","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/email-test-assertions@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"be3f00a364fe124cd55993fab50db10ff0f31ad3","tarball":"https://registry.npmjs.org/@bernierllc/email-test-assertions/-/email-test-assertions-1.2.0.tgz","fileCount":24,"integrity":"sha512-e/G9s6q7n/WvxwPKUBT00lwgrduHswVSX2Hx6TCF76edar6/frtL5AuJPnm1jvqWdRLdKFJlDdCFfT52Aoaotg==","signatures":[{"sig":"MEQCIBqxde+CN8in78G7wOX51t8gh5AIdHdsbhl6pn4IQRIpAiBd3vLEPZGYPkbu+wBWwmf8zdOOvw8aAcvs+46Oa3HqOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63681},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"dev":"tsc --watch","lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:23b5285a-227a-4c25-beff-3f4db6ac51b5"}},"bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/email-test-assertions"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Testing framework-agnostic assertions for email testing with fluent API and async support","directories":{"test":"tests"},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/email-parser":"0.3.0","@bernierllc/email-template-engine":"1.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@typescript-eslint/parser":"^6.7.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"peerDependencies":{"@bernierllc/logger":"^1.0.0 || ^2.0.0","@bernierllc/neverhub-adapter":"^0.1.0 || ^1.0.0"},"peerDependenciesMeta":{"@bernierllc/neverhub-adapter":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/email-test-assertions_1.2.0_1767642393364_0.3281545285878593","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/email-test-assertions","version":"1.2.2","keywords":["email","testing","assertions","jest","vitest","mocha","chai","test-assertions","fluent-api","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/email-test-assertions@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"8ad9d0bd22bc688afd3ef52b2d28224ed1b0784e","tarball":"https://registry.npmjs.org/@bernierllc/email-test-assertions/-/email-test-assertions-1.2.2.tgz","fileCount":24,"integrity":"sha512-VkeR/o1kTCEgLE6xA7de/EdiWty4P3nxJCwP186EZhhTSAoU7iPpbjJ45Fhav6B17cczhaR6vmp8+5SfBTvy3Q==","signatures":[{"sig":"MEUCIQDh6gBqhzxN6D4v0tgOHRubSE/xJMVSPsjxKg4WaUQQRwIgAbXmCOJDZQzjd4FSNs+SjCsXUkGxYHGX9woW8+ph68U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63623},"main":"dist/index.js","type":"commonjs","_from":"file:bernierllc-email-test-assertions-1.2.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:23b5285a-227a-4c25-beff-3f4db6ac51b5"}},"_resolved":"/home/runner/work/tools/tools/packages/service/email-test-assertions/bernierllc-email-test-assertions-1.2.2.tgz","_integrity":"sha512-VkeR/o1kTCEgLE6xA7de/EdiWty4P3nxJCwP186EZhhTSAoU7iPpbjJ45Fhav6B17cczhaR6vmp8+5SfBTvy3Q==","bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/email-test-assertions"},"_npmVersion":"11.11.0","description":"Testing framework-agnostic assertions for email testing with fluent API and async support","directories":{"test":"tests"},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/email-parser":"0.4.1","@bernierllc/email-template-engine":"1.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@typescript-eslint/parser":"^6.7.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"peerDependencies":{"@bernierllc/logger":"^1.0.0 || ^2.0.0","@bernierllc/neverhub-adapter":"^0.1.0 || ^1.0.0"},"peerDependenciesMeta":{"@bernierllc/neverhub-adapter":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/email-test-assertions_1.2.2_1773163569160_0.3327268176994891","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/email-test-assertions","version":"1.3.0","keywords":["email","testing","assertions","jest","vitest","mocha","chai","test-assertions","fluent-api","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/email-test-assertions@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"ac9d52538bfa6c6e9a14b73ad8212af2338ef1d8","tarball":"https://registry.npmjs.org/@bernierllc/email-test-assertions/-/email-test-assertions-1.3.0.tgz","fileCount":24,"integrity":"sha512-IK7TZoDNdJ+JhCFXa0jaFiT8r36pmmdmuzbgvJQ1YLk+p5mmGwXH1BjEBFS2tJd4uYXhvG/vvm6v3vgAeFXxjg==","signatures":[{"sig":"MEUCIBmCAzzKiWdpOuy8HssiCR8kZ0wDe+rd3kgTeO3t0uhhAiEAnpckRaTpg51unQYM0ikgx4v/0gJi/yLiqRPAL1/5k4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63623},"main":"dist/index.js","type":"commonjs","_from":"file:bernierllc-email-test-assertions-1.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:23b5285a-227a-4c25-beff-3f4db6ac51b5"}},"_resolved":"/home/runner/work/tools/tools/packages/service/email-test-assertions/bernierllc-email-test-assertions-1.3.0.tgz","_integrity":"sha512-IK7TZoDNdJ+JhCFXa0jaFiT8r36pmmdmuzbgvJQ1YLk+p5mmGwXH1BjEBFS2tJd4uYXhvG/vvm6v3vgAeFXxjg==","bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/email-test-assertions"},"_npmVersion":"11.14.1","description":"Testing framework-agnostic assertions for email testing with fluent API and async support","directories":{"test":"tests"},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/email-parser":"0.6.0","@bernierllc/email-template-engine":"1.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@typescript-eslint/parser":"^6.7.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"peerDependencies":{"@bernierllc/logger":"^1.0.0 || ^2.0.0","@bernierllc/neverhub-adapter":"^0.1.0 || ^1.0.0"},"peerDependenciesMeta":{"@bernierllc/neverhub-adapter":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/email-test-assertions_1.3.0_1779241685939_0.21644424458495992","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bernierllc/email-test-assertions","version":"1.5.0","keywords":["email","testing","assertions","jest","vitest","mocha","chai","test-assertions","fluent-api","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/email-test-assertions@1.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"5500761212bb0aa5282f56a35b59d1af6a4d63a0","tarball":"https://registry.npmjs.org/@bernierllc/email-test-assertions/-/email-test-assertions-1.5.0.tgz","fileCount":26,"integrity":"sha512-2v0wMqbfHdnSASzXese2GmVrFGE1xpR7jVBXxbcDL+U6HluD2l3o4vyNtO29j1PbDBG+uELu+p8sW54oS8s7XQ==","signatures":[{"sig":"MEQCIFxTnGKC3F4K3vLabyBPpspZ2kbBcgG9Wr3D3HxbEdgaAiAuXVcZoN6EIJPp27e/CzKG1uWbrtz+3MA6iOg96FSxjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65509},"main":"dist/index.js","type":"commonjs","_from":"file:bernierllc-email-test-assertions-1.5.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint 'src/**/*.ts'","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:23b5285a-227a-4c25-beff-3f4db6ac51b5"}},"_resolved":"/home/runner/work/tools/tools/packages/service/email-test-assertions/bernierllc-email-test-assertions-1.5.0.tgz","_integrity":"sha512-2v0wMqbfHdnSASzXese2GmVrFGE1xpR7jVBXxbcDL+U6HluD2l3o4vyNtO29j1PbDBG+uELu+p8sW54oS8s7XQ==","bernierllc":{"integration":{"neverhub":"optional"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git","directory":"packages/service/email-test-assertions"},"_npmVersion":"11.14.1","description":"Testing framework-agnostic assertions for email testing with fluent API and async support","directories":{"test":"tests"},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/email-parser":"0.6.0","@bernierllc/email-template-engine":"1.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","eslint":"^8.50.0","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","@typescript-eslint/parser":"^6.7.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"peerDependencies":{"@bernierllc/logger":"^1.0.0 || ^2.0.0","@bernierllc/neverhub-adapter":"^0.1.0 || ^1.0.0"},"peerDependenciesMeta":{"@bernierllc/neverhub-adapter":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/email-test-assertions_1.5.0_1779246009195_0.7394388469430839","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/email-test-assertions","version":"1.6.0","description":"Testing framework-agnostic assertions for email testing with fluent API and async support","main":"dist/index.js","types":"dist/index.d.ts","keywords":["email","testing","assertions","jest","vitest","mocha","chai","test-assertions","fluent-api","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git","directory":"packages/service/email-test-assertions"},"dependencies":{"@bernierllc/email-template-engine":"1.5.0","@bernierllc/email-parser":"0.7.0"},"peerDependencies":{"@bernierllc/logger":"^1.0.0 || ^2.0.0","@bernierllc/neverhub-adapter":"^0.1.0 || ^1.0.0"},"peerDependenciesMeta":{"@bernierllc/neverhub-adapter":{"optional":true}},"devDependencies":{"@types/jest":"^29.5.5","@types/node":"^20.6.0","@typescript-eslint/eslint-plugin":"^6.7.0","@typescript-eslint/parser":"^6.7.0","eslint":"^8.50.0","jest":"^29.6.4","rimraf":"^5.0.0","ts-jest":"^29.1.1","typescript":"^5.2.2"},"engines":{"node":">=18.0.0"},"directories":{"test":"tests"},"type":"commonjs","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"homepage":"https://github.com/bernier-llc/tools#readme","bernierllc":{"integration":{"neverhub":"optional"}},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:run":"jest --passWithNoTests","lint":"eslint 'src/**/*.ts'","clean":"rimraf dist"},"_id":"@bernierllc/email-test-assertions@1.6.0","_integrity":"sha512-9BNr2guo5AZE6b/hLqRCPXrLs+OXqUnIvfAo5lhcEfsalX2kSXQDWpMgvBd1I3dxYHMmNtOrLoiLPGFl0NdI9w==","_resolved":"/home/runner/work/tools/tools/packages/service/email-test-assertions/bernierllc-email-test-assertions-1.6.0.tgz","_from":"file:bernierllc-email-test-assertions-1.6.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-9BNr2guo5AZE6b/hLqRCPXrLs+OXqUnIvfAo5lhcEfsalX2kSXQDWpMgvBd1I3dxYHMmNtOrLoiLPGFl0NdI9w==","shasum":"a9b1edd290dcb93121d980fd1dd1c87ccc57b6d7","tarball":"https://registry.npmjs.org/@bernierllc/email-test-assertions/-/email-test-assertions-1.6.0.tgz","fileCount":26,"unpackedSize":65509,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG8gyvvA72p97wZPfD2u469h6YqIRXTyq7ORiDKgA9UOAiBGjKvKT0Anue0g1Pzzw9dh4RNUte9QxkIpCgzzZrpjBw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:23b5285a-227a-4c25-beff-3f4db6ac51b5"}},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/email-test-assertions_1.6.0_1779250432370_0.13923492705606244"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-16T23:40:44.329Z","modified":"2026-05-20T04:13:52.631Z","1.0.2":"2025-11-16T23:40:44.704Z","1.0.3":"2025-12-21T00:25:39.811Z","1.0.4":"2025-12-21T02:18:40.894Z","1.2.0":"2026-01-05T19:46:33.491Z","1.2.2":"2026-03-10T17:26:09.316Z","1.3.0":"2026-05-20T01:48:06.098Z","1.5.0":"2026-05-20T03:00:09.355Z","1.6.0":"2026-05-20T04:13:52.514Z"},"bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"MIT","homepage":"https://github.com/bernier-llc/tools#readme","keywords":["email","testing","assertions","jest","vitest","mocha","chai","test-assertions","fluent-api","bernierllc"],"repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git","directory":"packages/service/email-test-assertions"},"description":"Testing framework-agnostic assertions for email testing with fluent API and async support","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/email-test-assertions\n\nTesting framework-agnostic assertions for email testing with fluent API and async support.\n\n## Installation\n\n```bash\nnpm install @bernierllc/email-test-assertions\n```\n\n## Features\n\n- **Rich Assertion Library** - Comprehensive assertions for email properties\n- **Fluent API** - Readable, chainable test assertions\n- **Framework Agnostic** - Works with Jest, Vitest, Mocha/Chai\n- **Async Testing Support** - Handle asynchronous email delivery testing\n- **Template Validation** - Assert template variables are properly replaced\n- **Compliance Checking** - Verify CAN-SPAM, GDPR compliance\n- **SMTP Validation** - Check SPF, DKIM, and delivery status\n- **Attachment Assertions** - Validate email attachments\n- **Clear Error Messages** - Actionable test failure reporting\n\n## Usage\n\n### Basic Assertions (Framework Agnostic)\n\n```typescript\nimport { expect, ParsedEmail } from '@bernierllc/email-test-assertions';\n\nconst email: ParsedEmail = {\n  from: 'noreply@example.com',\n  to: 'user@example.com',\n  subject: 'Welcome to our service',\n  html: '<h1>Welcome John!</h1><p>Content</p><a href=\"/unsubscribe\">Unsubscribe</a>'\n};\n\n// Use fluent API for assertions\nexpect(email)\n  .toHaveSender('noreply@example.com')\n  .toHaveRecipient('user@example.com')\n  .toHaveSubject(/Welcome to/)\n  .toContainText('Welcome John')\n  .toHaveReplacedAllVariables()\n  .toHaveUnsubscribeLink();\n```\n\n### Jest Integration\n\n```typescript\nimport { setupJestMatchers } from '@bernierllc/email-test-assertions/matchers/jest';\n\n// In Jest setup file (e.g., jest.setup.js)\nsetupJestMatchers();\n\n// In test files\ntest('should send welcome email', async () => {\n  const email = await captureEmail();\n\n  expect(email).toHaveEmailRecipient('user@example.com');\n  expect(email).toHaveEmailSubject(/Welcome/);\n  expect(email).toHaveValidEmailTemplate();\n  expect(email).toBeCompliantEmail('US');\n});\n```\n\n### Vitest Integration\n\n```typescript\nimport { setupVitestMatchers } from '@bernierllc/email-test-assertions/matchers/vitest';\n\n// In Vitest setup file\nsetupVitestMatchers();\n\n// In test files\ntest('should send notification email', async () => {\n  const email = await captureEmail();\n\n  expect(email).toHaveEmailSender('notifications@example.com');\n  expect(email).toContainEmailText('Important update');\n  expect(email).toHaveEmailAttachment('report.pdf');\n});\n```\n\n### Async Email Waiting\n\n```typescript\nimport { waitForEmail, waitForEmails, EmailWaiter } from '@bernierllc/email-test-assertions';\n\n// Wait for a single email matching criteria\nconst welcomeEmail = await waitForEmail({\n  recipient: 'user@example.com',\n  subject: /Welcome/,\n  timeout: 5000\n});\n\n// Wait for multiple emails\nconst notifications = await waitForEmails(3, {\n  recipient: 'user@example.com',\n  timeout: 5000\n});\n\n// Wait by subject\nconst resetEmail = await waitForEmailWithSubject(/Password Reset/);\n\n// Custom waiter instance\nconst waiter = new EmailWaiter({\n  defaultTimeout: 10000,\n  defaultRetryInterval: 100\n});\n\n// Add emails to waiter (for testing)\nwaiter.addEmail(parsedEmail);\n\n// Wait for email\nconst email = await waiter.waitForEmail({\n  recipient: 'user@example.com'\n});\n```\n\n## API Reference\n\n### Assertion Methods\n\n#### Basic Properties\n\n- `toHaveRecipient(email: string)` - Assert email has specific recipient\n- `toHaveSender(email: string)` - Assert email has specific sender\n- `toHaveSubject(subject: string | RegExp)` - Assert email has subject\n\n#### Content\n\n- `toHaveTextContent(content: string | RegExp)` - Assert text content\n- `toHaveHtmlContent(html: string | RegExp)` - Assert HTML content\n- `toContainText(text: string)` - Assert email contains text\n\n#### Template Variables\n\n- `toHaveReplacedAllVariables()` - Assert all variables replaced\n- `toHaveVariable(name: string, value: string)` - Assert variable has value\n- `toNotContainUnreplacedVariables()` - Alias for toHaveReplacedAllVariables\n\n#### Compliance\n\n- `toHaveUnsubscribeLink()` - Assert unsubscribe link present\n- `toHavePhysicalAddress()` - Assert physical address present\n- `toBeCompliant(region: 'US' | 'EU' | 'GLOBAL')` - Assert compliance with regulations\n\n#### Attachments\n\n- `toHaveAttachment(filename: string)` - Assert specific attachment\n- `toHaveAttachmentCount(count: number)` - Assert attachment count\n\n#### SMTP\n\n- `toHaveBeenDelivered()` - Assert email was delivered\n- `toHavePassedSPF()` - Assert SPF validation passed\n- `toHaveValidDKIM()` - Assert DKIM signature valid\n\n#### Timing\n\n- `toHaveBeenSentWithin(timespan: number)` - Assert sent within timespan (ms)\n- `toHaveBeenReceivedAfter(date: Date)` - Assert received after date\n\n### Jest Matchers\n\n- `toHaveEmailRecipient(email: string)`\n- `toHaveEmailSender(email: string)`\n- `toHaveEmailSubject(subject: string | RegExp)`\n- `toHaveValidEmailTemplate()`\n- `toBeCompliantEmail(region?: 'US' | 'EU' | 'GLOBAL')`\n- `toContainEmailText(text: string)`\n- `toHaveEmailAttachment(filename: string)`\n\n### Email Waiter API\n\n```typescript\ninterface EmailWaiterConfig {\n  defaultTimeout?: number;          // Default: 5000ms\n  defaultRetryInterval?: number;    // Default: 100ms\n  emailStore?: CapturedEmail[];     // Pre-populate email store\n}\n\ninterface EmailCriteria {\n  recipient?: string;\n  sender?: string;\n  subject?: string | RegExp;\n  timeout?: number;\n  retryInterval?: number;\n}\n\nclass EmailWaiter {\n  waitForEmail(criteria: EmailCriteria): Promise<CapturedEmail>;\n  waitForEmails(count: number, criteria?: EmailCriteria): Promise<CapturedEmail[]>;\n  waitForEmailWithSubject(subject: string | RegExp): Promise<CapturedEmail>;\n  addEmail(email: ParsedEmail, metadata?: Record<string, unknown>): void;\n  clearEmails(): void;\n  getAllEmails(): CapturedEmail[];\n}\n```\n\n## Examples\n\n### Welcome Email Test\n\n```typescript\ntest('welcome email is compliant and personalized', async () => {\n  const email = await waitForEmail({\n    recipient: 'newuser@example.com',\n    subject: /Welcome/\n  });\n\n  expect(email.email)\n    .toHaveSender('noreply@example.com')\n    .toHaveSubject('Welcome to Our Service')\n    .toHaveReplacedAllVariables()\n    .toContainText('newuser@example.com')\n    .toHaveUnsubscribeLink()\n    .toHavePhysicalAddress()\n    .toBeCompliant('US');\n});\n```\n\n### Password Reset Email Test\n\n```typescript\ntest('password reset email has valid token', async () => {\n  await triggerPasswordReset('user@example.com');\n\n  const email = await waitForEmailWithSubject(/Password Reset/);\n\n  expect(email.email)\n    .toHaveSender('security@example.com')\n    .toHaveRecipient('user@example.com')\n    .toContainText('reset your password')\n    .toContainText('expires in 1 hour')\n    .toHaveBeenSentWithin(5000);\n});\n```\n\n### Notification Email with Attachment\n\n```typescript\ntest('daily report email has attachment', async () => {\n  await generateDailyReport();\n\n  const email = await waitForEmail({\n    recipient: 'admin@example.com',\n    subject: /Daily Report/\n  });\n\n  expect(email.email)\n    .toHaveAttachment('report.pdf')\n    .toHaveAttachmentCount(1)\n    .toContainText('attached');\n});\n```\n\n### Template Variable Validation\n\n```typescript\ntest('marketing email has all variables replaced', async () => {\n  const email = await waitForEmail({\n    recipient: 'customer@example.com',\n    subject: /Special Offer/\n  });\n\n  expect(email.email)\n    .toHaveReplacedAllVariables()\n    .toHaveVariable('customerName', 'John Doe')\n    .toHaveVariable('offerPrice', '$19.99')\n    .toNotContainUnreplacedVariables();\n});\n```\n\n### Compliance Testing\n\n```typescript\ndescribe('Email Compliance', () => {\n  test('US CAN-SPAM compliance', async () => {\n    const email = await waitForEmail({ recipient: 'user@example.com' });\n\n    expect(email.email).toBeCompliantEmail('US');\n  });\n\n  test('EU GDPR compliance', async () => {\n    const email = await waitForEmail({ recipient: 'eu-user@example.com' });\n\n    expect(email.email).toBeCompliantEmail('EU');\n  });\n\n  test('has required compliance elements', async () => {\n    const email = await waitForEmail({ recipient: 'user@example.com' });\n\n    expect(email.email)\n      .toHaveUnsubscribeLink()\n      .toHavePhysicalAddress();\n  });\n});\n```\n\n### SMTP Validation\n\n```typescript\ntest('email passes SMTP validation', async () => {\n  const email = await waitForEmail({\n    recipient: 'user@example.com'\n  });\n\n  expect(email.email)\n    .toHaveBeenDelivered()\n    .toHavePassedSPF()\n    .toHaveValidDKIM();\n});\n```\n\n## Integration Status\n\n- **Logger integration**: Not applicable - Testing package uses console for warnings only\n- **Docs-Suite**: Ready - Complete markdown documentation and TypeScript definitions\n- **NeverHub**: Not applicable - No NeverHub integration needed for testing package\n\n## TypeScript Support\n\nFull TypeScript support with strict type checking:\n\n```typescript\nimport type {\n  ParsedEmail,\n  EmailAttachment,\n  AssertionResult,\n  EmailCriteria,\n  CapturedEmail,\n  ComplianceRegion,\n  EmailWaiterConfig\n} from '@bernierllc/email-test-assertions';\n```\n\n## Dependencies\n\n- `@bernierllc/email-parser` - Email parsing functionality\n- `@bernierllc/email-template-engine` - Template validation support\n\n## Error Messages\n\nThe package provides clear, actionable error messages:\n\n```\nExpected email to have recipient 'user@example.com', but found 'admin@example.com'\n\nExpected email template to have all variables replaced, but found unreplaced variables: {{userName}}, {{productName}}\n\nExpected email to be compliant with US regulations, but missing:\n  - Unsubscribe link\n  - Physical address in footer\n\nExpected email to be captured within 5000ms, but timeout was reached\n```\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n\n## See Also\n\n- [@bernierllc/email-parser](../email-parser) - Parse email content\n- [@bernierllc/email-template-engine](../email-template-engine) - Template rendering\n","readmeFilename":"README.md"}