{"_id":"@bernierllc/vite-email-testing","_rev":"6-5adf9b0c2beaa9d7e86d01d3eda5b16e","name":"@bernierllc/vite-email-testing","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.2":{"name":"@bernierllc/vite-email-testing","version":"1.0.2","keywords":["vite","plugin","email","testing","development","smtp","hmr","mock"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE.md","_id":"@bernierllc/vite-email-testing@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":"9edf84a4e72b004f1f426cbb3fe2ca64ba246619","tarball":"https://registry.npmjs.org/@bernierllc/vite-email-testing/-/vite-email-testing-1.0.2.tgz","fileCount":39,"integrity":"sha512-Qkq/rH3bsQ0pCVcdEB79NV7zvJxr+hXTi9P/b+2ODyLponDNV4oofae3P1kJ0JosB0nvqvmjBdoSpFdh/JqBAQ==","signatures":[{"sig":"MEQCIGEQIhDvkxwyh7jsw0aqS7LRHpHOSg1xH4qq7OpyuJ/kAiALtTdwRGOMHhfLm5/U42wOj2WPpIdLLnQYf1JZYc9qCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127712},"main":"dist/index.js","type":"module","_from":"file:bernierllc-vite-email-testing-1.0.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"vitest","build":"tsc","test:run":"vitest run","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/fc53aba0058d5ed937af85711c1374bf/bernierllc-vite-email-testing-1.0.2.tgz","_integrity":"sha512-Qkq/rH3bsQ0pCVcdEB79NV7zvJxr+hXTi9P/b+2ODyLponDNV4oofae3P1kJ0JosB0nvqvmjBdoSpFdh/JqBAQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/integration/vite-email-testing"},"_npmVersion":"11.6.2","description":"Vite plugin for email testing in development environments with mock SMTP server and HMR support","directories":{},"_nodeVersion":"25.2.1","dependencies":{"chokidar":"^4.0.3","mailparser":"^3.8.0","smtp-server":"^3.15.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","eslint":"^9.17.0","vitest":"^2.1.8","nodemailer":"^6.9.16","typescript":"^5.7.2","@types/node":"^22.10.2","@types/chokidar":"^1.7.5","@types/mailparser":"^3.4.6","@types/nodemailer":"^7.0.4","@vitest/coverage-v8":"^2.1.8","@typescript-eslint/parser":"^8.18.2","@typescript-eslint/eslint-plugin":"^8.18.2"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-email-testing_1.0.2_1764692565639_0.3520988560230003","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bernierllc/vite-email-testing","version":"1.0.4","keywords":["vite","plugin","email","testing","development","smtp","hmr","mock"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE.md","_id":"@bernierllc/vite-email-testing@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":"3cacb26d85fb37a880bc3b34e88d42b63ecf6e2e","tarball":"https://registry.npmjs.org/@bernierllc/vite-email-testing/-/vite-email-testing-1.0.4.tgz","fileCount":27,"integrity":"sha512-UNJmdOY4U1iQX5L3g0XEIEQrq+voH1UUfiB+xDQdxLTD1VOOzqj9xtC5zd9JCNZ0JuVVizbyBXDUXwYnpngRcw==","signatures":[{"sig":"MEQCIH9X2JzbKi9lINl1eUlE6n+d/0gU0u9BWYT2NeAFwmJpAiBPdJNAWcy9PdhAc6yVp+eRmmywttCwFUk8BWzr5cJCMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72312},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts","test":"vitest","build":"tsc","test:run":"vitest run","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4a5f7c2-18b8-49cd-ae1b-799eb7a41a47"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/integration/vite-email-testing"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Vite plugin for email testing in development environments with mock SMTP server and HMR support","directories":{},"_nodeVersion":"20.19.6","dependencies":{"chokidar":"^4.0.3","mailparser":"^3.8.0","smtp-server":"^3.15.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","eslint":"^9.17.0","vitest":"^2.1.8","nodemailer":"^6.9.16","typescript":"^5.7.2","@types/node":"^22.10.2","@types/chokidar":"^1.7.5","@types/mailparser":"^3.4.6","@types/nodemailer":"^7.0.4","@vitest/coverage-v8":"^2.1.8","@typescript-eslint/parser":"^8.18.2","@typescript-eslint/eslint-plugin":"^8.18.2"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-email-testing_1.0.4_1767642341403_0.7421794984441283","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@bernierllc/vite-email-testing","version":"1.0.5","keywords":["vite","plugin","email","testing","development","smtp","hmr","mock"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE.md","_id":"@bernierllc/vite-email-testing@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":"e2f3fe8ad9fb1e1a879b1aa49c2e986c2b77d9fc","tarball":"https://registry.npmjs.org/@bernierllc/vite-email-testing/-/vite-email-testing-1.0.5.tgz","fileCount":27,"integrity":"sha512-hRKIfyNXM1mDVQUJMyxHVoS2cKJh8z13rqvYNFn92l/jYQBpAXrQ3GQebd7wE9yNt1bSx610vBJ/kdO7CaPyvw==","signatures":[{"sig":"MEUCIFlS4DjUaYn0t+Mxbmmdjp2FdscMHFokFsYnwebGJoz7AiEA9dUngqdOHj4HoW6PgYWByueRaJOvdN/8LpWzAlszgaI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72254},"main":"dist/index.js","type":"module","_from":"file:bernierllc-vite-email-testing-1.0.5.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"vitest","build":"tsc","test:run":"vitest run","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4a5f7c2-18b8-49cd-ae1b-799eb7a41a47"}},"_resolved":"/tmp/1d52ddc618dec16bbdb35339e40dba3c/bernierllc-vite-email-testing-1.0.5.tgz","_integrity":"sha512-hRKIfyNXM1mDVQUJMyxHVoS2cKJh8z13rqvYNFn92l/jYQBpAXrQ3GQebd7wE9yNt1bSx610vBJ/kdO7CaPyvw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/integration/vite-email-testing"},"_npmVersion":"11.11.0","description":"Vite plugin for email testing in development environments with mock SMTP server and HMR support","directories":{},"_nodeVersion":"20.20.0","dependencies":{"chokidar":"^4.0.3","mailparser":"^3.8.0","smtp-server":"^3.15.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","eslint":"^9.17.0","vitest":"^2.1.8","nodemailer":"^6.9.16","typescript":"^5.7.2","@types/node":"^22.10.2","@types/chokidar":"^1.7.5","@types/mailparser":"^3.4.6","@types/nodemailer":"^7.0.4","@vitest/coverage-v8":"^2.1.8","@typescript-eslint/parser":"^8.18.2","@typescript-eslint/eslint-plugin":"^8.18.2"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-email-testing_1.0.5_1773078102906_0.9547134436253455","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@bernierllc/vite-email-testing","version":"1.0.6","keywords":["vite","plugin","email","testing","development","smtp","hmr","mock"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE.md","_id":"@bernierllc/vite-email-testing@1.0.6","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":"fda954858cac1976eaea366602222f0c0a908e10","tarball":"https://registry.npmjs.org/@bernierllc/vite-email-testing/-/vite-email-testing-1.0.6.tgz","fileCount":27,"integrity":"sha512-ziTTxMDkYlmHo2dfV1bJgq6IJd4mYqf+BOxDp6u3K1vm0ZJeLrZtiIl39sU/cXF29hNAFr82HRzvukweRldOIg==","signatures":[{"sig":"MEQCIEa4blfq6U+QApQnnVEzaJB/i46DUb8tObi2Tbqd0ElEAiAkTF8rCbKterSBdzQohW/0m/f8SVP08urlxLo5N/0VZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72254},"main":"dist/index.js","type":"module","_from":"file:bernierllc-vite-email-testing-1.0.6.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"vitest","build":"tsc","test:run":"vitest run","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4a5f7c2-18b8-49cd-ae1b-799eb7a41a47"}},"_resolved":"/home/runner/work/tools/tools/packages/integration/vite-email-testing/bernierllc-vite-email-testing-1.0.6.tgz","_integrity":"sha512-ziTTxMDkYlmHo2dfV1bJgq6IJd4mYqf+BOxDp6u3K1vm0ZJeLrZtiIl39sU/cXF29hNAFr82HRzvukweRldOIg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/integration/vite-email-testing"},"_npmVersion":"11.11.0","description":"Vite plugin for email testing in development environments with mock SMTP server and HMR support","directories":{},"_nodeVersion":"20.20.0","dependencies":{"chokidar":"^4.0.3","mailparser":"^3.8.0","smtp-server":"^3.15.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","eslint":"^9.17.0","vitest":"^2.1.8","nodemailer":"^6.9.16","typescript":"^5.7.2","@types/node":"^22.10.2","@types/chokidar":"^1.7.5","@types/mailparser":"^3.4.6","@types/nodemailer":"^7.0.4","@vitest/coverage-v8":"^2.1.8","@typescript-eslint/parser":"^8.18.2","@typescript-eslint/eslint-plugin":"^8.18.2"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-email-testing_1.0.6_1773163391654_0.5803238738472538","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bernierllc/vite-email-testing","version":"1.1.0","keywords":["vite","plugin","email","testing","development","smtp","hmr","mock"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE.md","_id":"@bernierllc/vite-email-testing@1.1.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":"ae4eb12117c9f04d98a7222c71ed860a67bcaf9a","tarball":"https://registry.npmjs.org/@bernierllc/vite-email-testing/-/vite-email-testing-1.1.0.tgz","fileCount":27,"integrity":"sha512-jbAgNVl+0MNPsUybi7iOgfcYl6Tsd1MaljS7JrIdwhonQIdyH4jfbc/6s9tkpqaUI/jEyOvBEx03OmnJvqoTGg==","signatures":[{"sig":"MEUCIElo/ZhCC2gVLytY5+LxTBq0ysIhYw8M6X4bRIYtwOF9AiEA9EcUppmq8lLJh5x72p/iCSanU6IFjaFXNTAKAdL8we0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72254},"main":"dist/index.js","type":"module","_from":"file:bernierllc-vite-email-testing-1.1.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"vitest","build":"tsc","test:run":"vitest run","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4a5f7c2-18b8-49cd-ae1b-799eb7a41a47"}},"_resolved":"/home/runner/work/tools/tools/packages/integration/vite-email-testing/bernierllc-vite-email-testing-1.1.0.tgz","_integrity":"sha512-jbAgNVl+0MNPsUybi7iOgfcYl6Tsd1MaljS7JrIdwhonQIdyH4jfbc/6s9tkpqaUI/jEyOvBEx03OmnJvqoTGg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/integration/vite-email-testing"},"_npmVersion":"11.14.1","description":"Vite plugin for email testing in development environments with mock SMTP server and HMR support","directories":{},"_nodeVersion":"20.20.2","dependencies":{"chokidar":"^4.0.3","mailparser":"^3.8.0","smtp-server":"^3.15.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","eslint":"^9.17.0","vitest":"^2.1.8","nodemailer":"^6.9.16","typescript":"^5.7.2","@types/node":"^22.10.2","@types/chokidar":"^1.7.5","@types/mailparser":"^3.4.6","@types/nodemailer":"^7.0.4","@vitest/coverage-v8":"^2.1.8","@typescript-eslint/parser":"^8.18.2","@typescript-eslint/eslint-plugin":"^8.18.2"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-email-testing_1.1.0_1779241522424_0.331115043347046","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/vite-email-testing","version":"1.2.0","description":"Vite plugin for email testing in development environments with mock SMTP server and HMR support","main":"dist/index.js","types":"dist/index.d.ts","type":"module","keywords":["vite","plugin","email","testing","development","smtp","hmr","mock"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE.md","repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/integration/vite-email-testing"},"dependencies":{"chokidar":"^4.0.3","mailparser":"^3.8.0","smtp-server":"^3.15.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0"},"devDependencies":{"@types/chokidar":"^1.7.5","@types/mailparser":"^3.4.6","@types/node":"^22.10.2","@types/nodemailer":"^7.0.4","@typescript-eslint/eslint-plugin":"^8.18.2","@typescript-eslint/parser":"^8.18.2","@vitest/coverage-v8":"^2.1.8","eslint":"^9.17.0","nodemailer":"^6.9.16","typescript":"^5.7.2","vite":"^6.0.7","vitest":"^2.1.8"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","test":"vitest","test:run":"vitest run","test:coverage":"vitest run --coverage","lint":"eslint src --ext .ts"},"_id":"@bernierllc/vite-email-testing@1.2.0","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"homepage":"https://github.com/bernierllc/tools#readme","_integrity":"sha512-ZRv/C0fYbjw35utVIPTXACPfd0jemHx/l3vunou4OY+BoMC8EUv5hv2RdWRdj/5fuDnfc2COBSxnMff6rotSlQ==","_resolved":"/home/runner/work/tools/tools/packages/integration/vite-email-testing/bernierllc-vite-email-testing-1.2.0.tgz","_from":"file:bernierllc-vite-email-testing-1.2.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-ZRv/C0fYbjw35utVIPTXACPfd0jemHx/l3vunou4OY+BoMC8EUv5hv2RdWRdj/5fuDnfc2COBSxnMff6rotSlQ==","shasum":"843ad70a1cc1cc446a2b6fb093b030779ef0a1d5","tarball":"https://registry.npmjs.org/@bernierllc/vite-email-testing/-/vite-email-testing-1.2.0.tgz","fileCount":27,"unpackedSize":72254,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE5ULuw96jAa887W/vfsXoYUGdaTgXKxPdiypcnzyVQqAiEA0tplbF1r7//anoxgIMc9YaBZ+5bOO+zBpOuFIpsIbQw="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c4a5f7c2-18b8-49cd-ae1b-799eb7a41a47"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vite-email-testing_1.2.0_1779250268768_0.17781949612432935"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-02T16:22:45.509Z","modified":"2026-05-20T04:11:09.029Z","1.0.2":"2025-12-02T16:22:45.820Z","1.0.4":"2026-01-05T19:45:41.549Z","1.0.5":"2026-03-09T17:41:43.055Z","1.0.6":"2026-03-10T17:23:11.823Z","1.1.0":"2026-05-20T01:45:22.589Z","1.2.0":"2026-05-20T04:11:08.910Z"},"bugs":{"url":"https://github.com/bernierllc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE.md","homepage":"https://github.com/bernierllc/tools#readme","keywords":["vite","plugin","email","testing","development","smtp","hmr","mock"],"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/integration/vite-email-testing"},"description":"Vite plugin for email testing in development environments with mock SMTP server and HMR support","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/vite-email-testing\n\nVite plugin for email testing in development environments with mock SMTP server and HMR support.\n\n## Features\n\n- **Mock SMTP Server**: Auto-start SMTP server during development\n- **Email Capture**: Capture all emails sent during development\n- **Development UI**: Web interface for viewing captured emails\n- **Hot Module Replacement**: HMR support for email template changes\n- **Template Watching**: Automatic recompilation on template changes\n- **Zero Configuration**: Works out of the box with sensible defaults\n\n## Installation\n\n```bash\nnpm install --save-dev @bernierllc/vite-email-testing\n```\n\n## Usage\n\n### Basic Setup\n\nAdd the plugin to your `vite.config.ts`:\n\n```typescript\nimport { defineConfig } from 'vite';\nimport { emailTesting } from '@bernierllc/vite-email-testing';\n\nexport default defineConfig({\n  plugins: [\n    emailTesting()\n  ]\n});\n```\n\n### Configuration\n\n```typescript\nimport { defineConfig } from 'vite';\nimport { emailTesting } from '@bernierllc/vite-email-testing';\n\nexport default defineConfig({\n  plugins: [\n    emailTesting({\n      // SMTP server configuration\n      smtp: {\n        port: 2525,\n        host: 'localhost'\n      },\n\n      // Development UI configuration\n      ui: {\n        port: 3001,\n        path: '/__email-testing',\n        autoOpen: true\n      },\n\n      // Template watching\n      templates: {\n        dir: './src/templates',\n        extensions: ['.html', '.liquid', '.hbs'],\n        hotReload: true\n      }\n    })\n  ]\n});\n```\n\n## Development UI\n\nThe development UI is automatically available at `http://localhost:5173/__email-testing` (or your configured path).\n\n### Features\n\n- **Email List**: View all captured emails\n- **Email Detail**: Full email preview with HTML rendering\n- **Search & Filter**: Find specific emails\n- **Clear Emails**: Delete individual or all emails\n- **Real-time Updates**: Auto-refreshes when new emails arrive\n\n## SMTP Server\n\nThe mock SMTP server automatically starts with your Vite dev server.\n\n### Sending Emails\n\nConfigure your application to send emails to the mock server:\n\n```typescript\nconst transporter = nodemailer.createTransport({\n  host: 'localhost',\n  port: 2525,\n  secure: false\n});\n\nawait transporter.sendMail({\n  from: 'sender@example.com',\n  to: 'recipient@example.com',\n  subject: 'Test Email',\n  html: '<p>This is a test email</p>'\n});\n```\n\n## Template Hot Reloading\n\nThe plugin watches template files and triggers HMR updates:\n\n```typescript\nemailTesting({\n  templates: {\n    dir: './src/templates',\n    extensions: ['.html', '.liquid', '.hbs'],\n    hotReload: true\n  }\n})\n```\n\nWhen a template file changes:\n1. File change is detected\n2. Template is recompiled\n3. Browser is notified via WebSocket\n4. Preview is automatically updated\n\n## API\n\n### Plugin Options\n\n```typescript\ninterface EmailTestingOptions {\n  smtp?: SMTPConfig;\n  ui?: UIConfig;\n  templates?: TemplateConfig;\n  preview?: PreviewConfig;\n}\n```\n\n#### SMTPConfig\n\n```typescript\ninterface SMTPConfig {\n  port?: number;        // Default: 2525\n  host?: string;        // Default: 'localhost'\n  secure?: boolean;     // Default: false\n  authOptional?: boolean; // Default: true\n}\n```\n\n#### UIConfig\n\n```typescript\ninterface UIConfig {\n  port?: number;        // Default: 3001\n  path?: string;        // Default: '/__email-testing'\n  autoOpen?: boolean;   // Default: false\n  cors?: boolean;       // Default: true\n}\n```\n\n#### TemplateConfig\n\n```typescript\ninterface TemplateConfig {\n  dir?: string;         // Default: './src/templates'\n  extensions?: string[]; // Default: ['.html', '.liquid', '.hbs']\n  hotReload?: boolean;  // Default: true\n  excludePatterns?: string[]; // Default: ['**/node_modules/**']\n}\n```\n\n## Use Cases\n\n### Email Development\n\nPerfect for developing email templates with instant feedback:\n\n1. Start Vite dev server\n2. Edit email templates\n3. Send test emails\n4. View results instantly in UI\n5. Iterate quickly with HMR\n\n### Integration Testing\n\nTest email functionality without external services:\n\n```typescript\n// Send email in your code\nawait sendWelcomeEmail(user);\n\n// Check in development UI\n// Navigate to http://localhost:5173/__email-testing\n// Verify email was sent correctly\n```\n\n### Email Template Testing\n\nTest different email templates with various data:\n\n```typescript\n// templates/welcome.html changes automatically reload\n// Test with different data sets\n// Preview responsive layouts\n```\n\n## Advanced Usage\n\n### Programmatic Access\n\n```typescript\nimport { MockSMTPServer } from '@bernierllc/vite-email-testing';\n\nconst server = new MockSMTPServer({ port: 2525 });\nawait server.start();\n\nserver.on('email', (email) => {\n  console.log('Email captured:', email.subject);\n});\n\nconst emails = server.getCapturedEmails();\n```\n\n### Custom Template Watcher\n\n```typescript\nimport { TemplateWatcher } from '@bernierllc/vite-email-testing';\n\nconst watcher = new TemplateWatcher({\n  dir: './my-templates',\n  extensions: ['.html', '.ejs']\n});\n\nwatcher.on('change', (change) => {\n  console.log('Template changed:', change.path);\n});\n\nwatcher.start();\n```\n\n## Browser Support\n\nWorks with all modern browsers that support:\n- WebSocket (for HMR)\n- ES6+ JavaScript\n- Fetch API\n\n## Performance\n\n- Minimal overhead in development\n- Auto-cleanup on server shutdown\n- Efficient file watching with debouncing\n- Lightweight UI with no external dependencies\n\n## Security\n\n**Note**: This package is for **development only**. Never use in production.\n\n- No authentication required\n- SMTP server accepts all connections\n- UI accessible without credentials\n- Not designed for security-sensitive environments\n\n## Troubleshooting\n\n### SMTP Server Won't Start\n\nCheck if port is already in use:\n\n```bash\nlsof -i :2525\n```\n\nChange port in configuration:\n\n```typescript\nemailTesting({\n  smtp: { port: 3000 }\n})\n```\n\n### Template Changes Not Detected\n\nVerify template directory exists and has correct path:\n\n```typescript\nemailTesting({\n  templates: {\n    dir: './src/email-templates', // Absolute or relative to project root\n    hotReload: true\n  }\n})\n```\n\n### UI Not Loading\n\nCheck Vite dev server is running and visit correct URL:\n\n```\nhttp://localhost:5173/__email-testing\n```\n\n## Integration Documentation\n\n### Logger Integration\n\nThis package is a development tool for email testing and does not require logger integration since:\n- All logging is console-based for development visibility\n- No production logging requirements apply\n- Logs are meant for developer debugging during Vite development\n\nIf you need structured logging, you can manually integrate `@bernierllc/logger`:\n\n```typescript\nimport { detectLogger } from '@bernierllc/logger';\n\n// Optional logger detection for your application\nconst logger = detectLogger();\n```\n\n### NeverHub Integration\n\nThis package does not include NeverHub integration as it's a development-only tool:\n- Not intended for production deployment\n- No server-side persistence needed\n- Emails are stored in memory during development\n\nFor production email handling, consider using `@bernierllc/email-service` which includes full NeverHub integration.\n\n### Graceful Degradation\n\nThe plugin handles missing dependencies gracefully:\n- Works without any @bernierllc dependencies\n- SMTP server starts independently\n- UI functions with minimal configuration\n\n## License\n\nCopyright (c) 2025 Bernier LLC - See LICENSE.md\n\n## Contributing\n\nThis package is part of the BernierLLC tools monorepo. See repository guidelines for contribution details.\n","readmeFilename":"README.md"}