@impruthvi/nodemail 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![npm version](https://badge.fury.io/js/@impruthvi%2Fnodemail.svg)](https://www.npmjs.com/package/@impruthvi/nodemail)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.6-blue.svg)](https://www.typescriptlang.org/)
6
- [![Tests](https://img.shields.io/badge/tests-195%20passing-brightgreen)](https://github.com/impruthvi/nodemail)
6
+ [![Tests](https://img.shields.io/badge/tests-246%20passing-brightgreen)](https://github.com/impruthvi/nodemail)
7
7
  [![Coverage](https://img.shields.io/badge/coverage-85%25-brightgreen)](https://github.com/impruthvi/nodemail)
8
8
 
9
9
  **@impruthvi/nodemail** brings the simplicity and elegance of Laravel's Mail system to the Node.js ecosystem with full TypeScript support.
@@ -12,7 +12,7 @@
12
12
 
13
13
  A lightweight, developer-friendly email library where you can:
14
14
  - Switch email providers by just changing environment variables
15
- - Use elegant, class-based Mailable patterns
15
+ - Use elegant, class-based Mailable patterns
16
16
  - Keep your package lightweight (install only what you need)
17
17
  - Write clean, maintainable email code
18
18
 
@@ -20,10 +20,12 @@ Inspired by [Laravel's Mail system](https://laravel.com/docs/mail).
20
20
 
21
21
  ## ✨ Features
22
22
 
23
- ### ✅ Available Now (v0.5.0)
23
+ ### ✅ Available Now (v0.7.0)
24
24
  - 🎯 **Multiple Providers** - SMTP (Nodemailer), SendGrid, AWS SES, Mailgun, Resend, Postmark
25
25
  - 🎨 **Template Engines** - Handlebars, EJS, Pug support with dynamic loading
26
26
  - 📝 **Mailable Classes** - Reusable email definitions with template support
27
+ - 📋 **Markdown Mail** - Write emails in Markdown with components (button, panel, table)
28
+ - 📦 **Queue Support** - Background email sending with Bull/BullMQ
27
29
  - 🧪 **Testing Utilities** - Mail::fake() for testing (Laravel-style assertions)
28
30
  - 🪶 **Lightweight** - Only ~25MB with SMTP, install additional providers as needed
29
31
  - 🔒 **Type-Safe** - Full TypeScript support with strict typing
@@ -33,10 +35,9 @@ Inspired by [Laravel's Mail system](https://laravel.com/docs/mail).
33
35
 
34
36
  ### 🚧 Coming Soon
35
37
  - 🔔 **Notifications** - Multi-channel notification system
36
- - 📋 **Markdown Mail** - Beautiful emails from markdown
37
- - 📦 **Queue Support** - Background email sending (Bull/BullMQ)
38
38
  - 🌍 **i18n Support** - Multi-language emails
39
39
  - 🚀 **More Providers** - Mailtrap and others
40
+ - 🎨 **Enhanced CLI** - Command-line tools for queue management
40
41
 
41
42
  ## 📦 Installation
42
43
 
@@ -46,7 +47,7 @@ npm install @impruthvi/nodemail
46
47
 
47
48
  Or install a specific version:
48
49
  ```bash
49
- npm install @impruthvi/nodemail@0.5.0
50
+ npm install @impruthvi/nodemail@0.7.0
50
51
  ```
51
52
 
52
53
  **Lightweight by default!** Only includes SMTP support (~25MB).
@@ -85,6 +86,12 @@ npm install ejs
85
86
  npm install pug
86
87
  ```
87
88
 
89
+ ### Adding Markdown Mail Support (Optional)
90
+
91
+ ```bash
92
+ npm install marked juice
93
+ ```
94
+
88
95
  ## 🚀 Quick Start
89
96
 
90
97
  ### SMTP (Nodemailer)
@@ -284,6 +291,132 @@ await Mail.to('user@example.com')
284
291
  .send();
285
292
  ```
286
293
 
294
+ ## 📋 Markdown Mail
295
+
296
+ Write beautiful emails in Markdown with built-in components. Requires `npm install marked juice`.
297
+
298
+ ### MarkdownMailable
299
+
300
+ ```typescript
301
+ import { MarkdownMailable, Mail } from '@impruthvi/nodemail';
302
+
303
+ class WelcomeEmail extends MarkdownMailable {
304
+ constructor(
305
+ private user: { name: string },
306
+ private appName: string
307
+ ) {
308
+ super();
309
+ }
310
+
311
+ build(): this {
312
+ return this
313
+ .subject(`Welcome to ${this.appName}!`)
314
+ .from('noreply@example.com')
315
+ .markdown(`# Welcome, {{name}}!
316
+
317
+ Thank you for joining **{{appName}}**.
318
+
319
+ [button url="https://example.com/start" color="primary"]Get Started[/button]
320
+
321
+ [panel]Need help? Contact support@example.com[/panel]`, {
322
+ name: this.user.name,
323
+ appName: this.appName,
324
+ });
325
+ }
326
+ }
327
+
328
+ await Mail.to('user@example.com').send(new WelcomeEmail(user, 'My App'));
329
+ ```
330
+
331
+ ### Components
332
+
333
+ **Button** - Call-to-action buttons with color variants:
334
+ ```markdown
335
+ [button url="https://example.com" color="primary"]Click Here[/button]
336
+ [button url="https://example.com" color="success"]Confirm[/button]
337
+ [button url="https://example.com" color="error"]Delete[/button]
338
+ ```
339
+
340
+ **Panel** - Bordered callout sections:
341
+ ```markdown
342
+ [panel]
343
+ **Important:** This is a highlighted notice.
344
+ [/panel]
345
+ ```
346
+
347
+ **Table** - Styled table wrapper:
348
+ ```markdown
349
+ [table]
350
+ | Name | Price |
351
+ |-------|--------|
352
+ | Item | $9.99 |
353
+ [/table]
354
+ ```
355
+
356
+ ### Custom Themes
357
+
358
+ ```typescript
359
+ class BrandedEmail extends MarkdownMailable {
360
+ build(): this {
361
+ return this
362
+ .subject('Update')
363
+ .markdown('# News\n\nLatest updates...')
364
+ .theme({
365
+ css: 'h1 { color: #e94560; } .button-primary { background: #e94560; }',
366
+ headerHtml: '<img src="https://example.com/logo.png" alt="Logo">',
367
+ footerHtml: '<p>&copy; 2026 Company</p>',
368
+ });
369
+ }
370
+ }
371
+ ```
372
+
373
+ ### Markdown Configuration
374
+
375
+ ```typescript
376
+ Mail.configure({
377
+ // ... mailer config
378
+ markdown: {
379
+ theme: {
380
+ css: '/* custom global CSS */',
381
+ headerHtml: '<img src="logo.png">',
382
+ footerHtml: '<p>Footer</p>',
383
+ },
384
+ customCss: '.button { border-radius: 8px; }',
385
+ },
386
+ });
387
+ ```
388
+
389
+ ## 📦 Queue Support
390
+
391
+ Send emails in the background with Bull or BullMQ. Requires `npm install bullmq` (or `bull`).
392
+
393
+ ```typescript
394
+ Mail.configure({
395
+ // ... mailer config
396
+ queue: {
397
+ driver: 'bullmq',
398
+ connection: { host: 'localhost', port: 6379 },
399
+ retries: 3,
400
+ backoff: { type: 'exponential', delay: 1000 },
401
+ },
402
+ });
403
+
404
+ // Queue immediately
405
+ await Mail.to('user@example.com')
406
+ .subject('Welcome!')
407
+ .html('<h1>Welcome!</h1>')
408
+ .queue();
409
+
410
+ // Delayed sending (60 seconds)
411
+ await Mail.to('user@example.com').later(60, new WelcomeEmail(user));
412
+
413
+ // Scheduled delivery
414
+ await Mail.to('user@example.com').at(new Date('2026-12-25'), new ChristmasEmail());
415
+
416
+ // Process queued emails (in worker)
417
+ await Mail.processQueue();
418
+ ```
419
+
287
420
  ## 📨 Complete Fluent API
288
421
 
289
422
  ```typescript
@@ -427,6 +560,11 @@ sent.subjectContains('Welcome'); // Subject contains
427
560
  sent.htmlContains('Hello'); // HTML contains
428
561
  sent.textContains('Hello'); // Plain text contains
429
562
 
563
+ // Check markdown
564
+ sent.isMarkdown(); // Was built from markdown
565
+ sent.getMarkdown(); // Get raw markdown source
566
+ sent.markdownContains('[button'); // Markdown source contains
567
+
430
568
  // Check attachments
431
569
  sent.hasAttachments(); // Has any attachments
432
570
  sent.hasAttachment('file.pdf'); // Has specific attachment
@@ -478,15 +616,27 @@ sent.getHtml(); // Get HTML content
478
616
  - ✅ assertSent(), assertNotSent(), assertNothingSent()
479
617
  - ✅ assertQueued(), assertNothingQueued()
480
618
  - ✅ AssertableMessage with inspection methods
481
- - ✅ Comprehensive test suite (172 tests)
482
- - ✅ 85%+ code coverage
483
619
 
484
- **Phase 6: Advanced Features** 🚧 Coming Soon
485
- - Queue integration (Bull/BullMQ)
486
- - CLI tools
487
- - Markdown mail support
488
- - Multi-channel notifications
489
- - i18n support
620
+ **Phase 6: Queue Management** Complete (v0.6.0)
621
+ - QueueManager with Bull and BullMQ drivers
622
+ - Immediate, delayed, and scheduled sending
623
+ - Automatic retries with configurable backoff
624
+ - MailFake queue assertion support
625
+
626
+ **Phase 7: Markdown Mail** ✅ Complete (v0.7.0)
627
+ - ✅ MarkdownMailable base class
628
+ - ✅ MarkdownRenderer with CSS inlining
629
+ - ✅ Components: button, panel, table
630
+ - ✅ Default responsive email theme
631
+ - ✅ Custom themes and CSS support
632
+ - ✅ AssertableMessage markdown assertions
633
+ - ✅ 246 passing tests
634
+
635
+ **Phase 8+** 🚧 Coming Soon
636
+ - 🔔 Notifications - Multi-channel notification system
637
+ - 🌍 i18n Support - Multi-language emails
638
+ - 🎨 Enhanced CLI - Command-line tools
639
+ - 🚀 More Providers - Mailtrap and others
490
640
 
491
641
  ## 🤝 Contributing
492
642
 
@@ -549,7 +699,7 @@ Unlike other packages that bundle everything:
549
699
  - **Type-Safe**: Full TypeScript support with strict typing
550
700
  - **Developer-Friendly**: Clean, intuitive API
551
701
  - **Production-Ready**: Built with best practices
552
- - **Well-Tested**: 172 passing tests with 85%+ coverage
702
+ - **Well-Tested**: 246 passing tests with 85%+ coverage
553
703
 
554
704
  ## 📄 License
555
705
 
@@ -1 +1 @@
1
- {"version":3,"file":"MailManager.d.ts","sourceRoot":"","sources":["../../src/core/MailManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAEX,YAAY,EAEZ,UAAU,EACV,cAAc,EACf,MAAM,UAAU,CAAC;AAWlB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAe;gBAExB,MAAM,EAAE,UAAU;IAU9B,OAAO,CAAC,wBAAwB;IA0ChC,OAAO,CAAC,sBAAsB;IAU9B,eAAe,IAAI,YAAY,GAAG,SAAS;IAOrC,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAUpD,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAU1E,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC;IAU7D,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,WAAW;IAyBnB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAO7B,MAAM,CAAC,IAAI,EAAE,MAAM;IAab,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAiBvD,gBAAgB,IAAI,MAAM;CAG3B;AAKD,qBAAa,cAAc;IAIvB,OAAO,CAAC,OAAO;IAHV,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAM;gBAGhC,OAAO,EAAE,WAAW,EAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAKvB,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAKxB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAK1B,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE;IAKrC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAKvC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAKzB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAK5B,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAwBrE,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAQxE,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAQ9F,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAQvF,OAAO,CAAC,cAAc;CAgBvB"}
1
+ {"version":3,"file":"MailManager.d.ts","sourceRoot":"","sources":["../../src/core/MailManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAEX,YAAY,EAEZ,UAAU,EACV,cAAc,EACf,MAAM,UAAU,CAAC;AAWlB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAe;gBAExB,MAAM,EAAE,UAAU;IAU9B,OAAO,CAAC,wBAAwB;IA0ChC,OAAO,CAAC,sBAAsB;IAU9B,eAAe,IAAI,YAAY,GAAG,SAAS;IAOrC,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAUpD,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAU1E,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC;IAU7D,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,WAAW;IAyBnB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAO7B,MAAM,CAAC,IAAI,EAAE,MAAM;IAab,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAkFvD,gBAAgB,IAAI,MAAM;CAG3B;AAKD,qBAAa,cAAc;IAIvB,OAAO,CAAC,OAAO;IAHV,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAM;gBAGhC,OAAO,EAAE,WAAW,EAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAKvB,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAKxB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAK1B,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE;IAKrC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAKvC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAKzB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAK5B,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAwBrE,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAQxE,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAQ9F,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAQvF,OAAO,CAAC,cAAc;CAgBvB"}
@@ -11,6 +11,7 @@ const HandlebarsEngine_1 = require("../templates/HandlebarsEngine");
11
11
  const EjsEngine_1 = require("../templates/EjsEngine");
12
12
  const PugEngine_1 = require("../templates/PugEngine");
13
13
  const QueueManager_1 = require("../queue/QueueManager");
14
+ const MarkdownRenderer_1 = require("../markdown/MarkdownRenderer");
14
15
  class MailManager {
15
16
  config;
16
17
  providers = new Map();
@@ -134,6 +135,52 @@ class MailManager {
134
135
  return new MailManager(newConfig);
135
136
  }
136
137
  async send(options) {
138
+ if (options.data?.['__markdown']) {
139
+ const markdownContent = options.data['__markdown'];
140
+ const mailableOverrides = (options.data['__markdownRendererOptions'] || {});
141
+ const rendererOptions = {};
142
+ if (this.config.markdown?.theme) {
143
+ const themeCfg = this.config.markdown.theme;
144
+ rendererOptions.theme = {
145
+ css: themeCfg.css || '',
146
+ ...(themeCfg.headerHtml !== undefined ? { headerHtml: themeCfg.headerHtml } : {}),
147
+ ...(themeCfg.footerHtml !== undefined ? { footerHtml: themeCfg.footerHtml } : {}),
148
+ };
149
+ }
150
+ if (this.config.markdown?.customCss) {
151
+ rendererOptions.customCss = this.config.markdown.customCss;
152
+ }
153
+ if (mailableOverrides['theme'] !== undefined) {
154
+ rendererOptions.theme = mailableOverrides['theme'];
155
+ }
156
+ if (mailableOverrides['customCss']) {
157
+ rendererOptions.customCss = mailableOverrides['customCss'];
158
+ }
159
+ const renderer = new MarkdownRenderer_1.MarkdownRenderer(rendererOptions);
160
+ const userData = {};
161
+ for (const [key, value] of Object.entries(options.data)) {
162
+ if (key !== '__markdown' && key !== '__markdownRendererOptions') {
163
+ userData[key] = value;
164
+ }
165
+ }
166
+ const { html, text } = await renderer.render(markdownContent, Object.keys(userData).length > 0 ? userData : undefined);
167
+ options = {
168
+ ...options,
169
+ html: options.html || html,
170
+ text: options.text || text,
171
+ };
172
+ const cleanData = { ...options.data };
173
+ delete cleanData['__markdown'];
174
+ delete cleanData['__markdownRendererOptions'];
175
+ const hasRemainingData = Object.keys(cleanData).length > 0;
176
+ options = {
177
+ ...options,
178
+ ...(hasRemainingData ? { data: cleanData } : {}),
179
+ };
180
+ if (!hasRemainingData) {
181
+ delete options['data'];
182
+ }
183
+ }
137
184
  if (options.template && this.templateEngine) {
138
185
  const html = await this.templateEngine.renderFile(options.template, options.data);
139
186
  options = { ...options, html };
@@ -1 +1 @@
1
- {"version":3,"file":"MailManager.js","sourceRoot":"","sources":["../../src/core/MailManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MailManager.js","sourceRoot":"","sources":["../../src/core/MailManager.ts"],"names":[],"mappings":";;;AAcA,4DAAyD;AACzD,oEAAiE;AACjE,0DAAuD;AACvD,kEAA+D;AAC/D,gEAA6D;AAC7D,oEAAiE;AAEjE,oEAAiE;AACjE,sDAAmD;AACnD,sDAAmD;AACnD,wDAAqD;AACrD,mEAAgE;AAGhE,MAAa,WAAW;IACd,MAAM,CAAa;IACnB,SAAS,GAA8B,IAAI,GAAG,EAAE,CAAC;IACjD,cAAc,CAAkB;IAChC,YAAY,CAAgB;IAEpC,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAMO,wBAAwB;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAE/E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAA0B;YAC3C,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;YAC/B,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;YAC/B,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC;YACrC,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;SAC5B,CAAC;QAEF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,YAAY;oBACf,IAAI,CAAC,cAAc,GAAG,IAAI,mCAAgB,CAAC,aAAa,CAAC,CAAC;oBAC1D,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,CAAC,cAAc,GAAG,IAAI,qBAAS,CAAC,aAAa,CAAC,CAAC;oBACnD,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,CAAC,cAAc,GAAG,IAAI,qBAAS,CAAC,aAAa,CAAC,CAAC;oBACnD,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC/B,CAAC;IACH,CAAC;IAMO,sBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAKD,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAKD,KAAK,CAAC,KAAK,CAAC,OAAoB;QAC9B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAKD,KAAK,CAAC,KAAK,CAAC,OAAoB,EAAE,YAAoB;QACpD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAKD,KAAK,CAAC,EAAE,CAAC,OAAoB,EAAE,IAAU;QACvC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAKD,KAAK,CAAC,YAAY,CAAC,SAAkB;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC;IAKO,cAAc,CAAC,YAA0B;QAC/C,QAAQ,YAAY,CAAC,MAAM,EAAE,CAAC;YAC5B,KAAK,MAAM;gBACT,OAAO,IAAI,2BAAY,CAAC,YAA6C,CAAC,CAAC;YACzE,KAAK,UAAU;gBACb,OAAO,IAAI,mCAAgB,CAAC,YAAiD,CAAC,CAAC;YACjF,KAAK,KAAK;gBACR,OAAO,IAAI,yBAAW,CAAC,YAA4C,CAAC,CAAC;YACvE,KAAK,SAAS;gBACZ,OAAO,IAAI,iCAAe,CAAC,YAAgD,CAAC,CAAC;YAC/E,KAAK,QAAQ;gBACX,OAAO,IAAI,+BAAc,CAAC,YAA+C,CAAC,CAAC;YAC7E,KAAK,UAAU;gBACb,OAAO,IAAI,mCAAgB,CAAC,YAAiD,CAAC,CAAC;YACjF;gBACE,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAKO,WAAW,CAAC,IAAa;QAC/B,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,qBAAqB,CAAC,CAAC;QAC9D,CAAC;QAGD,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEd,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,2BAA2B,CAAC,CAAC;YACpE,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAKD,EAAE,CAAC,OAA0B;QAC3B,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAKD,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,qBAAqB,CAAC,CAAC;QACxD,CAAC;QAGD,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACpD,OAAO,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAKD,KAAK,CAAC,IAAI,CAAC,OAAoB;QAE7B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAW,CAAC;YAC7D,MAAM,iBAAiB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAA4B,CAAC;YAGvG,MAAM,eAAe,GAA4B,EAAE,CAAC;YAGpD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC5C,eAAe,CAAC,KAAK,GAAG;oBACtB,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,EAAE;oBACvB,GAAG,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjF,GAAG,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAClF,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;gBACpC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC7D,CAAC;YAGD,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC7C,eAAe,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAkD,CAAC;YACtG,CAAC;YACD,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,eAAe,CAAC,SAAS,GAAG,iBAAiB,CAAC,WAAW,CAAW,CAAC;YACvE,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,mCAAgB,CAAC,eAAe,CAAC,CAAC;YAGvD,MAAM,QAAQ,GAA4B,EAAE,CAAC;YAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,2BAA2B,EAAE,CAAC;oBAChE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAC1C,eAAe,EACf,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CACxD,CAAC;YAGF,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;aAC3B,CAAC;YAGF,MAAM,SAAS,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC;YAC/B,OAAO,SAAS,CAAC,2BAA2B,CAAC,CAAC;YAC9C,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3D,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjD,CAAC;YACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAQ,OAA8C,CAAC,MAAM,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAGD,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAC/C,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,IAAI,CACb,CAAC;YACF,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAKD,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;CACF;AA7QD,kCA6QC;AAKD,MAAa,cAAc;IAIf;IAHH,OAAO,GAAyB,EAAE,CAAC;IAE1C,YACU,OAAoB,EAC5B,EAAqB;QADb,YAAO,GAAP,OAAO,CAAa;QAG5B,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,EAAE,CAAC,EAAqB;QACtB,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,GAAsB;QACxB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,WAAyB;QACnC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAA+B;QACrC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAA6B;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAwC;QAEjD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;YAG9C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACvB,GAAG,WAAW;gBACd,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAG;aACN,CAAC,CAAC;QACpB,CAAC;QAGD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAsB,CAAC,CAAC;IACxD,CAAC;IAKD,KAAK,CAAC,KAAK,CAAC,QAAwC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAKD,KAAK,CAAC,KAAK,CAAC,YAAoB,EAAE,QAAwC;QACxE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;IAKD,KAAK,CAAC,EAAE,CAAC,IAAU,EAAE,QAAwC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAKO,cAAc,CAAC,QAAwC;QAC7D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC9C,OAAO;gBACL,GAAG,WAAW;gBACd,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAG;aACN,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,OAAsB,CAAC;IACrC,CAAC;CACF;AAjID,wCAiIC"}
package/dist/index.d.ts CHANGED
@@ -11,8 +11,10 @@ export { PostmarkProvider } from './providers/PostmarkProvider';
11
11
  export type { TemplateEngine, TemplateEngineOptions } from './templates';
12
12
  export { HandlebarsEngine, EjsEngine, PugEngine } from './templates';
13
13
  export { QueueManager, BullMQDriver, BullDriver } from './queue';
14
+ export { MarkdownRenderer, MarkdownMailable, getDefaultTheme } from './markdown';
15
+ export type { MarkdownRendererOptions, MarkdownTheme } from './markdown';
14
16
  export { MailFake, AssertableMessage } from './testing';
15
17
  export type { SentMessage } from './testing';
16
18
  export * from './types';
17
- export declare const VERSION = "0.6.0";
19
+ export declare const VERSION = "0.7.0";
18
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGjE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,cAAc,SAAS,CAAC;AAGxB,eAAO,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGjE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjF,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGzE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,cAAc,SAAS,CAAC;AAGxB,eAAO,MAAM,OAAO,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.VERSION = exports.AssertableMessage = exports.MailFake = exports.BullDriver = exports.BullMQDriver = exports.QueueManager = exports.PugEngine = exports.EjsEngine = exports.HandlebarsEngine = exports.PostmarkProvider = exports.ResendProvider = exports.MailgunProvider = exports.SesProvider = exports.SendGridProvider = exports.SmtpProvider = exports.Message = exports.Mailable = exports.MailManager = exports.Mail = void 0;
17
+ exports.VERSION = exports.AssertableMessage = exports.MailFake = exports.getDefaultTheme = exports.MarkdownMailable = exports.MarkdownRenderer = exports.BullDriver = exports.BullMQDriver = exports.QueueManager = exports.PugEngine = exports.EjsEngine = exports.HandlebarsEngine = exports.PostmarkProvider = exports.ResendProvider = exports.MailgunProvider = exports.SesProvider = exports.SendGridProvider = exports.SmtpProvider = exports.Message = exports.Mailable = exports.MailManager = exports.Mail = void 0;
18
18
  var MailFacade_1 = require("./core/MailFacade");
19
19
  Object.defineProperty(exports, "Mail", { enumerable: true, get: function () { return MailFacade_1.Mail; } });
20
20
  var MailManager_1 = require("./core/MailManager");
@@ -43,9 +43,13 @@ var queue_1 = require("./queue");
43
43
  Object.defineProperty(exports, "QueueManager", { enumerable: true, get: function () { return queue_1.QueueManager; } });
44
44
  Object.defineProperty(exports, "BullMQDriver", { enumerable: true, get: function () { return queue_1.BullMQDriver; } });
45
45
  Object.defineProperty(exports, "BullDriver", { enumerable: true, get: function () { return queue_1.BullDriver; } });
46
+ var markdown_1 = require("./markdown");
47
+ Object.defineProperty(exports, "MarkdownRenderer", { enumerable: true, get: function () { return markdown_1.MarkdownRenderer; } });
48
+ Object.defineProperty(exports, "MarkdownMailable", { enumerable: true, get: function () { return markdown_1.MarkdownMailable; } });
49
+ Object.defineProperty(exports, "getDefaultTheme", { enumerable: true, get: function () { return markdown_1.getDefaultTheme; } });
46
50
  var testing_1 = require("./testing");
47
51
  Object.defineProperty(exports, "MailFake", { enumerable: true, get: function () { return testing_1.MailFake; } });
48
52
  Object.defineProperty(exports, "AssertableMessage", { enumerable: true, get: function () { return testing_1.AssertableMessage; } });
49
53
  __exportStar(require("./types"), exports);
50
- exports.VERSION = '0.6.0';
54
+ exports.VERSION = '0.7.0';
51
55
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAKA,gDAAyC;AAAhC,kGAAA,IAAI,OAAA;AACb,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AACpB,4CAA2C;AAAlC,oGAAA,QAAQ,OAAA;AACjB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAGhB,yDAAwD;AAA/C,4GAAA,YAAY,OAAA;AACrB,iEAAgE;AAAvD,oHAAA,gBAAgB,OAAA;AACzB,uDAAsD;AAA7C,0GAAA,WAAW,OAAA;AACpB,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AACxB,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AACvB,iEAAgE;AAAvD,oHAAA,gBAAgB,OAAA;AAIzB,yCAAqE;AAA5D,6GAAA,gBAAgB,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAE,sGAAA,SAAS,OAAA;AAG/C,iCAAiE;AAAxD,qGAAA,YAAY,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,mGAAA,UAAU,OAAA;AAG/C,qCAAwD;AAA/C,mGAAA,QAAQ,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AAIpC,0CAAwB;AAGX,QAAA,OAAO,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAKA,gDAAyC;AAAhC,kGAAA,IAAI,OAAA;AACb,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AACpB,4CAA2C;AAAlC,oGAAA,QAAQ,OAAA;AACjB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAGhB,yDAAwD;AAA/C,4GAAA,YAAY,OAAA;AACrB,iEAAgE;AAAvD,oHAAA,gBAAgB,OAAA;AACzB,uDAAsD;AAA7C,0GAAA,WAAW,OAAA;AACpB,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AACxB,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AACvB,iEAAgE;AAAvD,oHAAA,gBAAgB,OAAA;AAIzB,yCAAqE;AAA5D,6GAAA,gBAAgB,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAE,sGAAA,SAAS,OAAA;AAG/C,iCAAiE;AAAxD,qGAAA,YAAY,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,mGAAA,UAAU,OAAA;AAG/C,uCAAiF;AAAxE,4GAAA,gBAAgB,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAAE,2GAAA,eAAe,OAAA;AAI5D,qCAAwD;AAA/C,mGAAA,QAAQ,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AAIpC,0CAAwB;AAGX,QAAA,OAAO,GAAG,OAAO,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Mailable } from '../core/Mailable';
2
+ import type { MailOptions } from '../types';
3
+ import type { MarkdownTheme } from './themes/default';
4
+ export declare abstract class MarkdownMailable extends Mailable {
5
+ protected markdown(content: string, data?: Record<string, unknown>): this;
6
+ protected theme(theme: MarkdownTheme): this;
7
+ protected customCss(css: string): this;
8
+ getMailOptions(): Partial<MailOptions>;
9
+ }
10
+ //# sourceMappingURL=MarkdownMailable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownMailable.d.ts","sourceRoot":"","sources":["../../src/markdown/MarkdownMailable.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,8BAAsB,gBAAiB,SAAQ,QAAQ;IAIrD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAezE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAc3C,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAe7B,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;CAIhD"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MarkdownMailable = void 0;
4
+ const Mailable_1 = require("../core/Mailable");
5
+ class MarkdownMailable extends Mailable_1.Mailable {
6
+ markdown(content, data) {
7
+ if (!this.options.data) {
8
+ this.options.data = {};
9
+ }
10
+ this.options.data['__markdown'] = content;
11
+ if (data) {
12
+ Object.assign(this.options.data, data);
13
+ }
14
+ return this;
15
+ }
16
+ theme(theme) {
17
+ if (!this.options.data) {
18
+ this.options.data = {};
19
+ }
20
+ if (!this.options.data['__markdownRendererOptions']) {
21
+ this.options.data['__markdownRendererOptions'] = {};
22
+ }
23
+ this.options.data['__markdownRendererOptions']['theme'] = theme;
24
+ return this;
25
+ }
26
+ customCss(css) {
27
+ if (!this.options.data) {
28
+ this.options.data = {};
29
+ }
30
+ if (!this.options.data['__markdownRendererOptions']) {
31
+ this.options.data['__markdownRendererOptions'] = {};
32
+ }
33
+ this.options.data['__markdownRendererOptions']['customCss'] = css;
34
+ return this;
35
+ }
36
+ getMailOptions() {
37
+ this.build();
38
+ return this.options;
39
+ }
40
+ }
41
+ exports.MarkdownMailable = MarkdownMailable;
42
+ //# sourceMappingURL=MarkdownMailable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownMailable.js","sourceRoot":"","sources":["../../src/markdown/MarkdownMailable.ts"],"names":[],"mappings":";;;AAKA,+CAA4C;AAI5C,MAAsB,gBAAiB,SAAQ,mBAAQ;IAI3C,QAAQ,CAAC,OAAe,EAAE,IAA8B;QAChE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;QAC1C,IAAI,IAAI,EAAE,CAAC;YAET,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAKS,KAAK,CAAC,KAAoB;QAClC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,CAAC;QACtD,CAAC;QACA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAA6B,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QAC7F,OAAO,IAAI,CAAC;IACd,CAAC;IAKS,SAAS,CAAC,GAAW;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,CAAC;QACtD,CAAC;QACA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAA6B,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;QAC/F,OAAO,IAAI,CAAC;IACd,CAAC;IAMQ,cAAc;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AApDD,4CAoDC"}
@@ -0,0 +1,26 @@
1
+ import type { MarkdownTheme } from './themes/default';
2
+ export interface MarkdownRendererOptions {
3
+ theme?: MarkdownTheme;
4
+ customCss?: string;
5
+ juiceOptions?: Record<string, unknown>;
6
+ }
7
+ export declare class MarkdownRenderer {
8
+ private marked;
9
+ private juice;
10
+ private theme;
11
+ private customCss;
12
+ private juiceOptions;
13
+ constructor(options?: MarkdownRendererOptions);
14
+ private loadDependencies;
15
+ render(markdown: string, data?: Record<string, unknown>): Promise<{
16
+ html: string;
17
+ text: string;
18
+ }>;
19
+ private interpolate;
20
+ private processComponents;
21
+ private wrapInLayout;
22
+ private generatePlainText;
23
+ setTheme(theme: MarkdownTheme): void;
24
+ getTheme(): MarkdownTheme;
25
+ }
26
+ //# sourceMappingURL=MarkdownRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownRenderer.d.ts","sourceRoot":"","sources":["../../src/markdown/MarkdownRenderer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAGD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAA0B;gBAElC,OAAO,GAAE,uBAA4B;IAOjD,OAAO,CAAC,gBAAgB;IAqBlB,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IA8B1C,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,YAAY;IAiCpB,OAAO,CAAC,iBAAiB;IA0CzB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAOpC,QAAQ,IAAI,aAAa;CAG1B"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MarkdownRenderer = void 0;
4
+ const default_1 = require("./themes/default");
5
+ class MarkdownRenderer {
6
+ marked;
7
+ juice;
8
+ theme;
9
+ customCss;
10
+ juiceOptions;
11
+ constructor(options = {}) {
12
+ this.theme = options.theme || (0, default_1.getDefaultTheme)();
13
+ this.customCss = options.customCss || '';
14
+ this.juiceOptions = options.juiceOptions || {};
15
+ this.loadDependencies();
16
+ }
17
+ loadDependencies() {
18
+ try {
19
+ this.marked = require('marked');
20
+ }
21
+ catch {
22
+ throw new Error('marked is not installed. Please install it: npm install marked');
23
+ }
24
+ try {
25
+ this.juice = require('juice');
26
+ }
27
+ catch {
28
+ throw new Error('juice is not installed. Please install it: npm install juice');
29
+ }
30
+ }
31
+ async render(markdown, data) {
32
+ let content = markdown;
33
+ if (data) {
34
+ content = this.interpolate(content, data);
35
+ }
36
+ content = this.processComponents(content);
37
+ const htmlContent = await this.marked.parse(content);
38
+ const fullHtml = this.wrapInLayout(htmlContent);
39
+ const css = this.theme.css + (this.customCss ? '\n' + this.customCss : '');
40
+ const inlinedHtml = this.juice.inlineContent(fullHtml, css, this.juiceOptions);
41
+ const text = this.generatePlainText(markdown, data);
42
+ return { html: inlinedHtml, text };
43
+ }
44
+ interpolate(content, data) {
45
+ return content.replace(/\{\{(\w+)\}\}/g, (_, key) => {
46
+ if (data[key] !== undefined) {
47
+ const val = data[key];
48
+ return typeof val === 'object' && val !== null ? JSON.stringify(val) : String(val);
49
+ }
50
+ return `{{${key}}}`;
51
+ });
52
+ }
53
+ processComponents(content) {
54
+ content = content.replace(/\[button\s+url="([^"]+)"(?:\s+color="([^"]*)")?\]([\s\S]*?)\[\/button\]/g, (_match, url, color, label) => {
55
+ const colorClass = `button-${color || 'primary'}`;
56
+ return `<a href="${url}" class="button ${colorClass}">${label.trim()}</a>`;
57
+ });
58
+ content = content.replace(/\[panel\]([\s\S]*?)\[\/panel\]/g, (_match, inner) => {
59
+ return `<div class="panel">\n\n${inner.trim()}\n\n</div>`;
60
+ });
61
+ content = content.replace(/\[table\]([\s\S]*?)\[\/table\]/g, (_match, inner) => {
62
+ return `<div class="table-wrapper">\n\n${inner.trim()}\n\n</div>`;
63
+ });
64
+ return content;
65
+ }
66
+ wrapInLayout(htmlContent) {
67
+ const header = this.theme.headerHtml
68
+ ? `<div class="email-header">${this.theme.headerHtml}</div>`
69
+ : '';
70
+ const footer = this.theme.footerHtml
71
+ ? `<div class="email-footer">${this.theme.footerHtml}</div>`
72
+ : '';
73
+ return `<!DOCTYPE html>
74
+ <html>
75
+ <head>
76
+ <meta charset="utf-8">
77
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
78
+ </head>
79
+ <body>
80
+ <div class="email-wrapper">
81
+ <div class="email-content">
82
+ ${header}
83
+ <div class="email-body">
84
+ <div class="email-body-inner">
85
+ ${htmlContent}
86
+ </div>
87
+ </div>
88
+ ${footer}
89
+ </div>
90
+ </div>
91
+ </body>
92
+ </html>`;
93
+ }
94
+ generatePlainText(markdown, data) {
95
+ let text = markdown;
96
+ if (data) {
97
+ text = this.interpolate(text, data);
98
+ }
99
+ text = text.replace(/\[button\s+url="([^"]+)"(?:\s+color="[^"]*")?\]([\s\S]*?)\[\/button\]/g, (_match, url, label) => `${label.trim()} (${url})`);
100
+ text = text.replace(/\[panel\]([\s\S]*?)\[\/panel\]/g, (_match, inner) => inner.trim());
101
+ text = text.replace(/\[table\]([\s\S]*?)\[\/table\]/g, (_match, inner) => inner.trim());
102
+ text = text.replace(/#{1,6}\s+/g, '');
103
+ text = text.replace(/\*\*([^*]+)\*\*/g, '$1');
104
+ text = text.replace(/\*([^*]+)\*/g, '$1');
105
+ text = text.replace(/`([^`]+)`/g, '$1');
106
+ text = text.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '$1 ($2)');
107
+ text = text.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '$1');
108
+ text = text.replace(/^---+$/gm, '---');
109
+ text = text.replace(/^>\s*/gm, '');
110
+ text = text.replace(/\n{3,}/g, '\n\n');
111
+ return text.trim();
112
+ }
113
+ setTheme(theme) {
114
+ this.theme = theme;
115
+ }
116
+ getTheme() {
117
+ return this.theme;
118
+ }
119
+ }
120
+ exports.MarkdownRenderer = MarkdownRenderer;
121
+ //# sourceMappingURL=MarkdownRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownRenderer.js","sourceRoot":"","sources":["../../src/markdown/MarkdownRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { MarkdownRenderer } from './MarkdownRenderer';
2
+ export type { MarkdownRendererOptions } from './MarkdownRenderer';
3
+ export { MarkdownMailable } from './MarkdownMailable';
4
+ export { getDefaultTheme } from './themes/default';
5
+ export type { MarkdownTheme } from './themes/default';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/markdown/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultTheme = exports.MarkdownMailable = exports.MarkdownRenderer = void 0;
4
+ var MarkdownRenderer_1 = require("./MarkdownRenderer");
5
+ Object.defineProperty(exports, "MarkdownRenderer", { enumerable: true, get: function () { return MarkdownRenderer_1.MarkdownRenderer; } });
6
+ var MarkdownMailable_1 = require("./MarkdownMailable");
7
+ Object.defineProperty(exports, "MarkdownMailable", { enumerable: true, get: function () { return MarkdownMailable_1.MarkdownMailable; } });
8
+ var default_1 = require("./themes/default");
9
+ Object.defineProperty(exports, "getDefaultTheme", { enumerable: true, get: function () { return default_1.getDefaultTheme; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/markdown/index.ts"],"names":[],"mappings":";;;AAIA,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAEzB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,4CAAmD;AAA1C,0GAAA,eAAe,OAAA"}
@@ -0,0 +1,7 @@
1
+ export interface MarkdownTheme {
2
+ css: string;
3
+ headerHtml?: string;
4
+ footerHtml?: string;
5
+ }
6
+ export declare function getDefaultTheme(): MarkdownTheme;
7
+ //# sourceMappingURL=default.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../src/markdown/themes/default.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,eAAe,IAAI,aAAa,CAmP/C"}
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultTheme = getDefaultTheme;
4
+ function getDefaultTheme() {
5
+ return {
6
+ css: `
7
+ /* Base Styles */
8
+ body {
9
+ margin: 0;
10
+ padding: 0;
11
+ width: 100%;
12
+ background-color: #f4f4f7;
13
+ -webkit-text-size-adjust: none;
14
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
15
+ }
16
+
17
+ .email-wrapper {
18
+ width: 100%;
19
+ margin: 0;
20
+ padding: 0;
21
+ background-color: #f4f4f7;
22
+ }
23
+
24
+ .email-content {
25
+ width: 100%;
26
+ max-width: 570px;
27
+ margin: 0 auto;
28
+ }
29
+
30
+ /* Header */
31
+ .email-header {
32
+ padding: 25px 0;
33
+ text-align: center;
34
+ }
35
+
36
+ /* Body */
37
+ .email-body {
38
+ width: 100%;
39
+ margin: 0;
40
+ padding: 0;
41
+ background-color: #ffffff;
42
+ border-radius: 4px;
43
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
44
+ }
45
+
46
+ .email-body-inner {
47
+ width: 570px;
48
+ max-width: 570px;
49
+ margin: 0 auto;
50
+ padding: 32px;
51
+ }
52
+
53
+ /* Footer */
54
+ .email-footer {
55
+ width: 570px;
56
+ max-width: 570px;
57
+ margin: 0 auto;
58
+ padding: 32px;
59
+ text-align: center;
60
+ }
61
+
62
+ .email-footer p {
63
+ color: #aeaeae;
64
+ font-size: 12px;
65
+ line-height: 1.5;
66
+ }
67
+
68
+ /* Typography */
69
+ h1 {
70
+ margin-top: 0;
71
+ color: #333333;
72
+ font-size: 22px;
73
+ font-weight: bold;
74
+ line-height: 1.4;
75
+ }
76
+
77
+ h2 {
78
+ margin-top: 0;
79
+ color: #333333;
80
+ font-size: 18px;
81
+ font-weight: bold;
82
+ line-height: 1.4;
83
+ }
84
+
85
+ h3 {
86
+ margin-top: 0;
87
+ color: #333333;
88
+ font-size: 16px;
89
+ font-weight: bold;
90
+ line-height: 1.4;
91
+ }
92
+
93
+ p {
94
+ margin-top: 0;
95
+ color: #51545e;
96
+ font-size: 16px;
97
+ line-height: 1.625;
98
+ }
99
+
100
+ a {
101
+ color: #3869d4;
102
+ text-decoration: underline;
103
+ }
104
+
105
+ /* Lists */
106
+ ul, ol {
107
+ margin-top: 0;
108
+ color: #51545e;
109
+ font-size: 16px;
110
+ line-height: 1.625;
111
+ }
112
+
113
+ /* Code */
114
+ code {
115
+ background-color: #e8e8eb;
116
+ border-radius: 3px;
117
+ padding: 2px 6px;
118
+ font-size: 14px;
119
+ color: #333333;
120
+ }
121
+
122
+ pre {
123
+ background-color: #333333;
124
+ color: #e8e8eb;
125
+ border-radius: 4px;
126
+ padding: 16px;
127
+ overflow-x: auto;
128
+ font-size: 14px;
129
+ line-height: 1.5;
130
+ }
131
+
132
+ pre code {
133
+ background-color: transparent;
134
+ padding: 0;
135
+ color: inherit;
136
+ }
137
+
138
+ /* Blockquote */
139
+ blockquote {
140
+ margin: 0 0 16px;
141
+ padding: 0 0 0 16px;
142
+ border-left: 4px solid #e8e8eb;
143
+ color: #6e6e73;
144
+ font-style: italic;
145
+ }
146
+
147
+ /* Horizontal Rule */
148
+ hr {
149
+ border: none;
150
+ border-top: 1px solid #e8e8eb;
151
+ margin: 24px 0;
152
+ }
153
+
154
+ /* Images */
155
+ img {
156
+ max-width: 100%;
157
+ height: auto;
158
+ }
159
+
160
+ /* Button Component */
161
+ .button {
162
+ display: inline-block;
163
+ width: auto;
164
+ padding: 12px 36px;
165
+ border-radius: 4px;
166
+ font-size: 16px;
167
+ font-weight: bold;
168
+ text-align: center;
169
+ text-decoration: none;
170
+ -webkit-text-size-adjust: none;
171
+ mso-hide: all;
172
+ }
173
+
174
+ .button-primary {
175
+ background-color: #3869d4;
176
+ color: #ffffff;
177
+ }
178
+
179
+ .button-success {
180
+ background-color: #22bc66;
181
+ color: #ffffff;
182
+ }
183
+
184
+ .button-error {
185
+ background-color: #ff6136;
186
+ color: #ffffff;
187
+ }
188
+
189
+ /* Panel Component */
190
+ .panel {
191
+ margin: 16px 0;
192
+ padding: 16px;
193
+ background-color: #f4f4f7;
194
+ border-left: 4px solid #3869d4;
195
+ border-radius: 0 4px 4px 0;
196
+ }
197
+
198
+ .panel p {
199
+ color: #51545e;
200
+ font-size: 14px;
201
+ line-height: 1.625;
202
+ }
203
+
204
+ .panel p:last-child {
205
+ margin-bottom: 0;
206
+ }
207
+
208
+ /* Table Component */
209
+ .table-wrapper {
210
+ margin: 16px 0;
211
+ width: 100%;
212
+ overflow-x: auto;
213
+ }
214
+
215
+ .table-wrapper table {
216
+ width: 100%;
217
+ border-collapse: collapse;
218
+ }
219
+
220
+ .table-wrapper th {
221
+ padding: 10px 12px;
222
+ background-color: #f4f4f7;
223
+ border-bottom: 2px solid #e8e8eb;
224
+ text-align: left;
225
+ font-size: 14px;
226
+ font-weight: bold;
227
+ color: #333333;
228
+ }
229
+
230
+ .table-wrapper td {
231
+ padding: 10px 12px;
232
+ border-bottom: 1px solid #e8e8eb;
233
+ font-size: 14px;
234
+ color: #51545e;
235
+ }
236
+
237
+ /* Responsive */
238
+ @media only screen and (max-width: 600px) {
239
+ .email-body-inner,
240
+ .email-footer {
241
+ width: 100% !important;
242
+ padding: 16px !important;
243
+ }
244
+ }
245
+ `,
246
+ };
247
+ }
248
+ //# sourceMappingURL=default.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/markdown/themes/default.ts"],"names":[],"mappings":";;AAWA,0CAmPC;AAnPD,SAAgB,eAAe;IAC7B,OAAO;QACL,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+OR;KACE,CAAC;AACJ,CAAC"}
@@ -34,6 +34,9 @@ export declare class AssertableMessage {
34
34
  getHtml(): string | undefined;
35
35
  getText(): string | undefined;
36
36
  getTemplate(): string | undefined;
37
+ isMarkdown(): boolean;
38
+ getMarkdown(): string | undefined;
39
+ markdownContains(text: string): boolean;
37
40
  private hasRecipient;
38
41
  private normalizeRecipients;
39
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AssertableMessage.d.ts","sourceRoot":"","sources":["../../src/testing/AssertableMessage.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAe,UAAU,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBADT,OAAO,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,QAAQ,YAAA;IAMtC,UAAU,IAAI,WAAW;IAOzB,WAAW,IAAI,QAAQ,GAAG,SAAS;IAOnC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAO7B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ7B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ9B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAW/B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOpC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOtC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAWlC,OAAO,IAAI,OAAO;IAOlB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQnC,OAAO,IAAI,OAAO;IAOlB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQnC,cAAc,IAAI,OAAO;IAOzB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUxC,cAAc,IAAI,UAAU,EAAE;IAO9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAgBhD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO3C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAOtC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO;IAa9C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAO7B,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAOjD,KAAK,IAAI,MAAM,EAAE;IAOjB,KAAK,IAAI,MAAM,EAAE;IAQjB,MAAM,IAAI,MAAM,EAAE;IAQlB,UAAU,IAAI,MAAM;IAOpB,OAAO,IAAI,MAAM,GAAG,SAAS;IAS7B,OAAO,IAAI,MAAM,GAAG,SAAS;IAO7B,OAAO,IAAI,MAAM,GAAG,SAAS;IAO7B,WAAW,IAAI,MAAM,GAAG,SAAS;IAOjC,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,mBAAmB;CAW5B"}
1
+ {"version":3,"file":"AssertableMessage.d.ts","sourceRoot":"","sources":["../../src/testing/AssertableMessage.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAe,UAAU,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBADT,OAAO,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,QAAQ,YAAA;IAMtC,UAAU,IAAI,WAAW;IAOzB,WAAW,IAAI,QAAQ,GAAG,SAAS;IAOnC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAO7B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ7B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ9B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAW/B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOpC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOtC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAWlC,OAAO,IAAI,OAAO;IAOlB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQnC,OAAO,IAAI,OAAO;IAOlB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQnC,cAAc,IAAI,OAAO;IAOzB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUxC,cAAc,IAAI,UAAU,EAAE;IAO9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAgBhD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO3C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAOtC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO;IAa9C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAO7B,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAOjD,KAAK,IAAI,MAAM,EAAE;IAOjB,KAAK,IAAI,MAAM,EAAE;IAQjB,MAAM,IAAI,MAAM,EAAE;IAQlB,UAAU,IAAI,MAAM;IAOpB,OAAO,IAAI,MAAM,GAAG,SAAS;IAS7B,OAAO,IAAI,MAAM,GAAG,SAAS;IAO7B,OAAO,IAAI,MAAM,GAAG,SAAS;IAO7B,WAAW,IAAI,MAAM,GAAG,SAAS;IASjC,UAAU,IAAI,OAAO;IAOrB,WAAW,IAAI,MAAM,GAAG,SAAS;IAOjC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASvC,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,mBAAmB;CAW5B"}
@@ -139,6 +139,18 @@ class AssertableMessage {
139
139
  getTemplate() {
140
140
  return this.options.template;
141
141
  }
142
+ isMarkdown() {
143
+ return !!this.options.data?.['__markdown'];
144
+ }
145
+ getMarkdown() {
146
+ return this.options.data?.['__markdown'];
147
+ }
148
+ markdownContains(text) {
149
+ const markdown = this.getMarkdown();
150
+ if (!markdown)
151
+ return false;
152
+ return markdown.includes(text);
153
+ }
142
154
  hasRecipient(recipients, email) {
143
155
  const normalizedEmail = email.toLowerCase();
144
156
  const recipientList = this.normalizeRecipients(recipients);
@@ -1 +1 @@
1
- {"version":3,"file":"AssertableMessage.js","sourceRoot":"","sources":["../../src/testing/AssertableMessage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssertableMessage.js","sourceRoot":"","sources":["../../src/testing/AssertableMessage.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,12 @@
1
1
  import type { TemplateEngine } from '../templates/TemplateEngine';
2
+ export interface MarkdownConfig {
3
+ theme?: {
4
+ css?: string;
5
+ headerHtml?: string;
6
+ footerHtml?: string;
7
+ };
8
+ customCss?: string;
9
+ }
2
10
  export interface MailConfig {
3
11
  default: string;
4
12
  from: {
@@ -8,6 +16,7 @@ export interface MailConfig {
8
16
  mailers: Record<string, MailerConfig>;
9
17
  templates?: TemplateConfig;
10
18
  queue?: QueueConfig;
19
+ markdown?: MarkdownConfig;
11
20
  }
12
21
  export interface TemplateConfig {
13
22
  engine?: 'handlebars' | 'ejs' | 'pug' | TemplateEngine;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Markdown Mail Example
3
+ *
4
+ * Demonstrates using MarkdownMailable to send beautifully formatted
5
+ * emails written in Markdown with components (button, panel, table).
6
+ *
7
+ * Prerequisites:
8
+ * npm install marked juice
9
+ *
10
+ * Run:
11
+ * npx tsx examples/markdown-mail.ts
12
+ */
13
+
14
+ import { Mail, MarkdownMailable } from '../src';
15
+
16
+ // ============================================================
17
+ // 1. Simple Markdown Mailable
18
+ // ============================================================
19
+
20
+ class WelcomeEmail extends MarkdownMailable {
21
+ constructor(
22
+ private user: { name: string; email: string },
23
+ private appName: string
24
+ ) {
25
+ super();
26
+ }
27
+
28
+ build(): this {
29
+ return this
30
+ .subject(`Welcome to ${this.appName}!`)
31
+ .from('noreply@example.com')
32
+ .markdown(`# Welcome, {{name}}!
33
+
34
+ Thank you for joining **{{appName}}**. We're excited to have you on board.
35
+
36
+ [button url="https://example.com/dashboard" color="primary"]Go to Dashboard[/button]
37
+
38
+ ## Getting Started
39
+
40
+ Here are a few things you can do right away:
41
+
42
+ 1. Complete your profile
43
+ 2. Explore our features
44
+ 3. Connect with other users
45
+
46
+ [panel]
47
+ **Need help?** Our support team is available 24/7.
48
+ Reply to this email or visit our [help center](https://example.com/help).
49
+ [/panel]
50
+
51
+ Best regards,
52
+ The {{appName}} Team`, {
53
+ name: this.user.name,
54
+ appName: this.appName,
55
+ });
56
+ }
57
+ }
58
+
59
+ // ============================================================
60
+ // 2. Markdown Mailable with Table Component
61
+ // ============================================================
62
+
63
+ class InvoiceEmail extends MarkdownMailable {
64
+ constructor(
65
+ private invoice: {
66
+ id: string;
67
+ items: { name: string; qty: number; price: number }[];
68
+ total: number;
69
+ }
70
+ ) {
71
+ super();
72
+ }
73
+
74
+ build(): this {
75
+ const tableRows = this.invoice.items
76
+ .map((item) => `| ${item.name} | ${item.qty} | $${item.price.toFixed(2)} |`)
77
+ .join('\n');
78
+
79
+ const totalStr = '$' + this.invoice.total.toFixed(2);
80
+
81
+ return this
82
+ .subject('Invoice #' + this.invoice.id)
83
+ .from('billing@example.com')
84
+ .markdown(
85
+ '# Invoice #{{invoiceId}}\n\n' +
86
+ "Thank you for your purchase! Here's a summary of your order:\n\n" +
87
+ '[table]\n' +
88
+ '| Item | Qty | Price |\n' +
89
+ '|------|-----|-------|\n' +
90
+ tableRows + '\n' +
91
+ '[/table]\n\n' +
92
+ '**Total: {{total}}**\n\n' +
93
+ '[button url="https://example.com/invoices/{{invoiceId}}" color="success"]View Invoice[/button]\n\n' +
94
+ '[panel]\n' +
95
+ 'Payment has been processed. You will receive a receipt within 24 hours.\n' +
96
+ '[/panel]', {
97
+ invoiceId: this.invoice.id,
98
+ total: totalStr,
99
+ });
100
+ }
101
+ }
102
+
103
+ // ============================================================
104
+ // 3. Markdown Mailable with Custom Theme
105
+ // ============================================================
106
+
107
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
108
+ class BrandedEmail extends MarkdownMailable {
109
+ constructor(private message: string) {
110
+ super();
111
+ }
112
+
113
+ build(): this {
114
+ return this
115
+ .subject('Company Update')
116
+ .from('updates@example.com')
117
+ .markdown(`# Company Update
118
+
119
+ ${this.message}
120
+
121
+ [button url="https://example.com/news"]Read More[/button]`)
122
+ .theme({
123
+ css: `
124
+ body { font-family: Georgia, serif; }
125
+ h1 { color: #1a1a2e; }
126
+ .button-primary { background-color: #e94560; }
127
+ .panel { border-left-color: #e94560; }
128
+ `,
129
+ headerHtml: '<img src="https://example.com/logo.png" alt="Company Logo" width="150">',
130
+ footerHtml: '<p>&copy; 2026 Example Corp. All rights reserved.</p>',
131
+ });
132
+ }
133
+ }
134
+
135
+ // ============================================================
136
+ // Main: Demonstrate sending markdown emails
137
+ // ============================================================
138
+
139
+ async function main() {
140
+ // Configure Mail (using Ethereal for testing)
141
+ Mail.configure({
142
+ default: 'smtp',
143
+ from: {
144
+ address: 'noreply@example.com',
145
+ name: 'Example App',
146
+ },
147
+ mailers: {
148
+ smtp: {
149
+ driver: 'smtp',
150
+ host: process.env.SMTP_HOST || 'smtp.ethereal.email',
151
+ port: Number(process.env.SMTP_PORT) || 587,
152
+ auth: {
153
+ user: process.env.SMTP_USER || '',
154
+ pass: process.env.SMTP_PASS || '',
155
+ },
156
+ },
157
+ },
158
+ // Optional: global markdown configuration
159
+ markdown: {
160
+ customCss: '.button { border-radius: 8px; }',
161
+ },
162
+ });
163
+
164
+ // --- Example 1: Welcome Email ---
165
+ console.log('Sending welcome email...');
166
+ const user = { name: 'John Doe', email: 'john@example.com' };
167
+
168
+ try {
169
+ const result = await Mail.to(user.email).send(
170
+ new WelcomeEmail(user, 'Awesome App')
171
+ );
172
+ console.log('Welcome email sent:', result.messageId);
173
+ } catch {
174
+ console.log('Welcome email example (skipped - no SMTP configured)');
175
+ }
176
+
177
+ // --- Example 2: Invoice Email ---
178
+ console.log('\nSending invoice email...');
179
+ const invoice = {
180
+ id: 'INV-2026-001',
181
+ items: [
182
+ { name: 'Pro Plan (Monthly)', qty: 1, price: 29.99 },
183
+ { name: 'Extra Storage (50GB)', qty: 2, price: 9.99 },
184
+ ],
185
+ total: 49.97,
186
+ };
187
+
188
+ try {
189
+ const result = await Mail.to('billing@example.com').send(
190
+ new InvoiceEmail(invoice)
191
+ );
192
+ console.log('Invoice email sent:', result.messageId);
193
+ } catch {
194
+ console.log('Invoice email example (skipped - no SMTP configured)');
195
+ }
196
+
197
+ // --- Example 3: Using Mail.fake() for testing ---
198
+ console.log('\n--- Testing with Mail.fake() ---');
199
+ Mail.fake();
200
+
201
+ await Mail.to('test@example.com').send(
202
+ new WelcomeEmail({ name: 'Test User', email: 'test@example.com' }, 'TestApp')
203
+ );
204
+
205
+ // Assertions
206
+ Mail.assertSent(WelcomeEmail);
207
+
208
+ const sent = Mail.sent(WelcomeEmail)[0];
209
+ console.log('isMarkdown:', sent.isMarkdown());
210
+ console.log('markdownContains "Welcome":', sent.markdownContains('Welcome'));
211
+ console.log('markdownContains "[button":', sent.markdownContains('[button'));
212
+ console.log('subject:', sent.getSubject());
213
+ console.log('to:', sent.getTo());
214
+
215
+ Mail.restore();
216
+ console.log('\nAll markdown mail examples completed!');
217
+ }
218
+
219
+ main().catch(console.error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@impruthvi/nodemail",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "A unified mail service for Node.js/TypeScript with Laravel-like simplicity. Support for multiple providers (SMTP, SendGrid, AWS SES, Mailgun, Resend, Postmark) and template engines (Handlebars, EJS, Pug) - just change environment variables, no code changes needed.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",