{"_id":"@anarchitects/common-nest-mailer","_rev":"11-b7e1f73002b2d2ab01f631667eb33d7b","name":"@anarchitects/common-nest-mailer","dist-tags":{"latest":"0.3.3"},"versions":{"0.0.10":{"name":"@anarchitects/common-nest-mailer","version":"0.0.10","_id":"@anarchitects/common-nest-mailer@0.0.10","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"dist":{"shasum":"2a66d90785ac237563f36bfc5a1dc5c2754f12fd","tarball":"https://registry.npmjs.org/@anarchitects/common-nest-mailer/-/common-nest-mailer-0.0.10.tgz","fileCount":26,"integrity":"sha512-qbeWogLY54NsgEpqUmxd2yKr5ubCwuR29ClBK8o52z6R0FKIDAuN5z5w/8o6dnnN5TleADlKJSXOkfKuJuTWSA==","signatures":[{"sig":"MEUCIQCtppTuR2DAwSj3atT3dPBEOUnLKDBjcTxc317CE+WYhgIgaB8bPYgfpiEV8ne1fpCcHOAlA1eanbHDMCNAc5XfSwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17217},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"9a0c3452f8d6e6fe083fa6d11a4286ca58c64395","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"deprecated":"Accidental major release due to misconfigured conventionalCommits. Use 0.1.0.","_npmVersion":"10.8.2","description":"Shared typed mailer configuration and root mail transport setup for NestJS apps.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"tslib":"^2.3.0","@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.2","@nestjs-modules/mailer":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/common-nest-mailer_0.0.10_1773252412438_0.5439632817854705","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@anarchitects/common-nest-mailer","version":"1.0.0","_id":"@anarchitects/common-nest-mailer@1.0.0","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"dist":{"shasum":"e67e823e5d679697ae5df7766856ca2a9aa2e95e","tarball":"https://registry.npmjs.org/@anarchitects/common-nest-mailer/-/common-nest-mailer-1.0.0.tgz","fileCount":26,"integrity":"sha512-op0Af9BvsycH7Rrj3aedqYMHP8QI0A+FjCuDtxvOQx+cdDjMNZi8ZmmiilNB3TrGHQSsjMezhPfcE2VRhDSp4w==","signatures":[{"sig":"MEUCIQCFQUTN3H8Wa/bz7JgQVctcq/aDq1rlpwaZWhVe7FVFCQIgSIISGhVAVaITkJqAAOX2Z+u9s04MVlguIRq/K+vEcRE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17216},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"dd5729b6736e35ee91fbe84a8c778b4d9fa90108","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"deprecated":"Accidental major release due to misconfigured conventionalCommits. Use 0.1.0.","_npmVersion":"10.8.2","description":"Shared typed mailer configuration and root mail transport setup for NestJS apps.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"tslib":"^2.3.0","@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.2","@nestjs-modules/mailer":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/common-nest-mailer_1.0.0_1773322044981_0.47334112676815265","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@anarchitects/common-nest-mailer","version":"1.0.1","_id":"@anarchitects/common-nest-mailer@1.0.1","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"dist":{"shasum":"9383ab2cfbb897424a1e3287e3d8feca9abb139b","tarball":"https://registry.npmjs.org/@anarchitects/common-nest-mailer/-/common-nest-mailer-1.0.1.tgz","fileCount":26,"integrity":"sha512-DZ8fCyhsHn4VLI3HcCvIyHlfqzf/8a0YFrAEYmpUCZ6QWzpF/Rli35ENaDHHSaTw+/8YwPkA/jkF3V88dbJx1g==","signatures":[{"sig":"MEQCIAkCvIV3DPC+gyg8Dr4gKR83aqNpzvwqDsoBVpNShlonAiAPb+ASiyPMPKLOrBFyQjUlYMKuqzSlEk9CoTRfNOR11Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17216},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"dc222380b992799dbf63a402a49eb18cc27afd9f","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"deprecated":"Accidental major release due to misconfigured conventionalCommits. Use 0.1.0.","_npmVersion":"10.9.4","description":"Shared typed mailer configuration and root mail transport setup for NestJS apps.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"tslib":"^2.3.0","@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.2","@nestjs-modules/mailer":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/common-nest-mailer_1.0.1_1773324212931_0.02222583522908228","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@anarchitects/common-nest-mailer","version":"2.0.0","_id":"@anarchitects/common-nest-mailer@2.0.0","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"dist":{"shasum":"96f681e10672095bd496aa9ba4d774befa48bedb","tarball":"https://registry.npmjs.org/@anarchitects/common-nest-mailer/-/common-nest-mailer-2.0.0.tgz","fileCount":23,"integrity":"sha512-7bXptbFpAnGIqrBqXOMyu5JyiD1nGqfN+Y7C3foTCpjOR3h1qOOHqG5/iYld13mXYI1UEu3PyFp6gat3ZaaPgQ==","signatures":[{"sig":"MEYCIQDzL0bOYsU87pf8MdDcy1y3qKOsSpKdsQ9C2PIAk35H+QIhAI2xLETh4NDhXYftdjzm2REa6Lmxd6tamxfOsxEAgFpD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22043},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"c5ce7432f2a15784d9c6e51a65adaa20c06606c0","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"deprecated":"Accidental major release due to misconfigured conventionalCommits. Use 0.1.0.","_npmVersion":"10.9.4","description":"Shared typed mailer configuration, transport setup, and provider wiring for NestJS apps.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"tslib":"^2.3.0","@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.2","@nestjs-modules/mailer":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/common-nest-mailer_2.0.0_1773420187097_0.8801888189297431","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@anarchitects/common-nest-mailer","version":"0.1.0","_id":"@anarchitects/common-nest-mailer@0.1.0","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"dist":{"shasum":"3b55ef3670b4228c478f70dee2ac5004f1e0ed4c","tarball":"https://registry.npmjs.org/@anarchitects/common-nest-mailer/-/common-nest-mailer-0.1.0.tgz","fileCount":23,"integrity":"sha512-P375EfOGVyzKJV4y72kg86xYnn1cSmi/kP7+WaZfI2bOAUA9SA9xycEUKMHlNERdD+XkJk3OnbE3MqY5OHFs2Q==","signatures":[{"sig":"MEUCIQCCyjEcqgKKE3S5QQUO65CQilUTYtysFRQotbZ5ejx7vQIgHdg6lLPV8KU6DN6cuROUpSqTsqswWc0H2kYPbxd4buE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23517},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"abadbb7beabc03ecfb3576160ae973f2061c3e6b","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"_npmVersion":"10.9.4","description":"Shared typed mailer configuration, transport setup, and provider wiring for NestJS apps.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"tslib":"^2.3.0","@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.2","@nestjs-modules/mailer":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/common-nest-mailer_0.1.0_1774103766486_0.6418988733386302","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@anarchitects/common-nest-mailer","version":"0.3.0","_id":"@anarchitects/common-nest-mailer@0.3.0","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/common/nest/mailer","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"c0f0ab649174dd8a2f823e9d893f25c4aaf2e677","tarball":"https://registry.npmjs.org/@anarchitects/common-nest-mailer/-/common-nest-mailer-0.3.0.tgz","fileCount":23,"integrity":"sha512-dDMrEaLsyDig7XxgSszbXplyqyJOGkWwIs5N09aivOcB9Yx67uCof+UTHZksx82vVduzZ+8XW7aZR3HlsNlpBA==","signatures":[{"sig":"MEUCIQDnGGMXCenGMokiDZowW1zIutej4ttlUrUGTSPDZbXEIQIgQgVfS/kWbxJn1c1aarbE9hLQlBT9dAWTEjxUcu9gMjY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fcommon-nest-mailer@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24066},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"a1ec3086ac8b4b429038a177bf52fcc9f2848f89","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/common/nest/mailer"},"_npmVersion":"10.9.4","description":"Shared typed mailer configuration, transport setup, and provider wiring for NestJS apps.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.2","@nestjs-modules/mailer":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/common-nest-mailer_0.3.0_1774201234905_0.28304364667886794","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@anarchitects/common-nest-mailer","version":"0.3.1","_id":"@anarchitects/common-nest-mailer@0.3.1","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/common/nest/mailer","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"86e12fb728bec08415151192623c631e095b55aa","tarball":"https://registry.npmjs.org/@anarchitects/common-nest-mailer/-/common-nest-mailer-0.3.1.tgz","fileCount":23,"integrity":"sha512-5ub1gVDviVKIejGCSdl43tt7/oS6EQimKFRu9jYwa8c7OYK31qvv3pHUr17jdCjry1t0v5enaC2pTjrroX1H/A==","signatures":[{"sig":"MEUCIEyc3HE9DSCgL5443hc1oSlpslSVtw08LIsyH9uFEmq9AiEAs8S2PkyRmCMDmZ/bo6/0W6WiXiyiY06/7n/waXY5v1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fcommon-nest-mailer@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24062},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"ec365290ab5f59c8b8d7190c1c92b4c8188041f6","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/common/nest/mailer"},"_npmVersion":"10.9.4","description":"Shared typed mailer configuration, transport setup, and provider wiring for NestJS apps.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.2","@nestjs-modules/mailer":"^2.3.4"},"_npmOperationalInternal":{"tmp":"tmp/common-nest-mailer_0.3.1_1774607935556_0.7969130143027838","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@anarchitects/common-nest-mailer","version":"0.3.2","_id":"@anarchitects/common-nest-mailer@0.3.2","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/common/nest/mailer","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"dist":{"shasum":"67032b9e02aa8ca05ed39f817d73ba2c336753d9","tarball":"https://registry.npmjs.org/@anarchitects/common-nest-mailer/-/common-nest-mailer-0.3.2.tgz","fileCount":23,"integrity":"sha512-mGSlMdYpeGpUYVqBdYUqu7iGYYcanhMdmy/+rxTF3+RajlWEdUVN0ybYT/BThpFvMBbC5gbrfF+Gl52dgVWAaQ==","signatures":[{"sig":"MEUCIF1gUDgjCUbZzmDRvRTzL2m8rr8r7z2LGCmEI1e/t3idAiEAhoA4mVGPQEjh+8ap9Q5w3JQZwuLfJ5uTW6QOig4RuGE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fcommon-nest-mailer@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24062},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"b517f35d18965302e17711e107bd16309abf3ef1","_npmUser":{"name":"vrxj81","email":"johan@anarchitects.dev"},"repository":{"url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","type":"git","directory":"libs/common/nest/mailer"},"_npmVersion":"10.9.4","description":"Shared typed mailer configuration, transport setup, and provider wiring for NestJS apps.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.2","@nestjs-modules/mailer":"^2.3.4"},"_npmOperationalInternal":{"tmp":"tmp/common-nest-mailer_0.3.2_1774814856207_0.005914400886075866","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@anarchitects/common-nest-mailer","version":"0.3.3","type":"commonjs","main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"tslib":"^2.3.0"},"peerDependencies":{"@nestjs-modules/mailer":"^2.3.4","@nestjs/common":"^11.0.0","@nestjs/config":"^4.0.2"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","directory":"libs/common/nest/mailer"},"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/common/nest/mailer","bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"gitHead":"2d6a4b3ada94f466ae25aa0f78c308f34f232b90","_id":"@anarchitects/common-nest-mailer@0.3.3","description":"Shared typed mailer configuration, transport setup, and provider wiring for NestJS apps.","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-/Le1H5pShWSuG/qmKEQg0PflQMPl5sm4dGWckp5fwzWm2KmVaWxgxbrx2qtwP9CY5w5/J66+OG+C6HpwgyxZSw==","shasum":"06a430ecfbd007bf932d9f898f6da33bd77f6662","tarball":"https://registry.npmjs.org/@anarchitects/common-nest-mailer/-/common-nest-mailer-0.3.3.tgz","fileCount":23,"unpackedSize":24061,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anarchitects%2fcommon-nest-mailer@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFnHn6C8OC3SCNGwrwO0VROeDEs2Z6fIURnqAZzMRI00AiBqY83U4d0QcR5GzrWC0299Vi5hzO2tJwpMwjETP7Pusg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca1ab19b-10b8-433e-975b-e430323c260f"}},"directories":{},"maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/common-nest-mailer_0.3.3_1788352840982_0.7568774343492375"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-11T18:06:52.255Z","modified":"2026-09-02T12:40:41.507Z","0.0.10":"2026-03-11T18:06:52.613Z","1.0.0":"2026-03-12T13:27:25.118Z","1.0.1":"2026-03-12T14:03:33.090Z","2.0.0":"2026-03-13T16:43:07.246Z","0.1.0":"2026-03-21T14:36:06.635Z","0.3.0":"2026-03-22T17:40:35.065Z","0.3.1":"2026-03-27T10:38:55.718Z","0.3.2":"2026-03-29T20:07:36.350Z","0.3.3":"2026-09-02T12:40:41.128Z"},"bugs":{"url":"https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"},"homepage":"https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/common/nest/mailer","repository":{"type":"git","url":"git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git","directory":"libs/common/nest/mailer"},"description":"Shared typed mailer configuration, transport setup, and provider wiring for NestJS apps.","maintainers":[{"name":"vrxj81","email":"johan@anarchitects.dev"}],"readme":"# @anarchitects/common-nest-mailer\n\nShared typed mailer configuration, transport setup, and provider wiring for NestJS apps.\n\n## Developer + AI Agent Start Here\n\n- Read this README before generating mailer integration code with `@anarchitects/common-nest-mailer`.\n- Configure transport once at app root (`CommonMailerModule.forRootFromConfig()`), then use provider wiring for domain adapters.\n- Treat `MailerPort` as the cross-domain contract; keep domain modules decoupled from concrete mailer implementations.\n- Use only public exports from this package and keep provider selection explicit (`node` or `noop`).\n\n## Features\n\n- Shared mailer config namespace + typed injection helpers\n- Adapter wiring (`node` and `noop`) behind a common `MailerPort` contract\n- Root transport setup helpers for deterministic app-level configuration\n\n## Installation\n\n```bash\nnpm install @anarchitects/common-nest-mailer @nestjs/common @nestjs/config @nestjs-modules/mailer\n# or\nyarn add @anarchitects/common-nest-mailer @nestjs/common @nestjs/config @nestjs-modules/mailer\n```\n\nPeer requirements:\n\n- `@nestjs/common`\n- `@nestjs/config`\n- `@nestjs-modules/mailer`\n\n## Entry points and exports\n\n- `mailerConfig`: `registerAs(...)` config namespace for `@nestjs/config`\n- `MailerConfig`: inferred config type (`ConfigType<typeof mailerConfig>`)\n- `InjectMailerConfig()`: decorator helper for injecting config values\n- `CommonMailerProvider`: provider mode union (`'node' | 'noop'`)\n- `CommonMailerModuleOptions`: provider wiring options (`provider?: CommonMailerProvider`)\n- `CommonMailerModule.forRoot(options?)`: provider wiring (`MailerPort -> NodeMailerAdapter|NoopMailerAdapter`)\n- `CommonMailerModule.forProviderFromConfig(overrides?)`: config-driven provider wiring from `MAILER_PROVIDER`\n- `CommonMailerModule.forRootFromConfig()`: config-driven root mail transport setup\n- `CommonMailerModule.forRootAsync(...)`: pass-through setup for custom transports\n- `MailerPort`: shared mailer port token/contract for domain adapters\n- `NodeMailerAdapter`: shared concrete adapter using Nest `MailerService`\n- `NoopMailerAdapter`: shared no-op implementation\n\n## Environment Variables\n\n```env\nMAILER_PROVIDER=node\nMAILER_HOST=smtp.example.com\nMAILER_PORT=587\nMAILER_SECURE=false\nMAILER_USER=user@example.com\nMAILER_PASS=super-secret\nMAILER_DEFAULT=noreply@example.com\nMAILER_IGNORE_TLS=false\nMAILER_TEMPLATE_DIR=templates\n```\n\n## Configuration\n\nConfigure `mailerConfig` in `ConfigModule.forRoot({ load: [mailerConfig] })` and then choose provider wiring with either:\n\n- `CommonMailerModule.forProviderFromConfig()` for env-driven provider selection\n- `CommonMailerModule.forRoot({ provider: 'node' | 'noop' })` for explicit provider selection\n\n## Usage (Preferred)\n\nConfigure mail transport once at app root, then let domain mailer modules consume `MailerService`.\n\n```ts\nimport { Module } from '@nestjs/common';\nimport { ConfigModule } from '@nestjs/config';\nimport {\n  CommonMailerModule,\n  mailerConfig,\n} from '@anarchitects/common-nest-mailer';\n\n@Module({\n  imports: [\n    ConfigModule.forRoot({\n      isGlobal: true,\n      load: [mailerConfig],\n    }),\n    CommonMailerModule.forRootFromConfig(),\n    CommonMailerModule.forProviderFromConfig(),\n  ],\n})\nexport class AppModule {}\n```\n\n## Explicit Provider Wiring\n\n```ts\nimport { Module } from '@nestjs/common';\nimport { CommonMailerModule } from '@anarchitects/common-nest-mailer';\n\n@Module({\n  imports: [CommonMailerModule.forRoot({ provider: 'noop' })],\n})\nexport class AppModule {}\n```\n\n## Custom Transport Setup\n\n```ts\nimport { Module } from '@nestjs/common';\nimport { CommonMailerModule } from '@anarchitects/common-nest-mailer';\n\n@Module({\n  imports: [\n    CommonMailerModule.forRootAsync({\n      useFactory: () => ({\n        transport: { jsonTransport: true },\n        defaults: { from: 'noreply@example.com' },\n        template: { dir: 'templates' },\n      }),\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n## Injecting Typed Config\n\n```ts\nimport { Injectable } from '@nestjs/common';\nimport {\n  InjectMailerConfig,\n  MailerConfig,\n} from '@anarchitects/common-nest-mailer';\n\n@Injectable()\nexport class MailerSetupService {\n  constructor(@InjectMailerConfig() private readonly config: MailerConfig) {}\n}\n```\n\n## Development notes\n\n- Configure transport once at app root and keep domain modules adapter-focused.\n- Use `MailerPort` as the cross-domain contract to avoid tight coupling to concrete providers.\n- Keep shared module defaults safe for local/dev environments.\n\n## License\n\nReleased under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).\n","readmeFilename":"README.md"}