@wisemen/nestjs-mail 0.3.0 → 1.1.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.
Files changed (47) hide show
  1. package/README.md +91 -5
  2. package/dist/clients/mail-client.factory.d.ts +2 -1
  3. package/dist/clients/mail-client.factory.js +12 -1
  4. package/dist/clients/mail-client.factory.js.map +1 -1
  5. package/dist/clients/mail-delivery-hooks.client.d.ts +11 -0
  6. package/dist/clients/mail-delivery-hooks.client.js +47 -0
  7. package/dist/clients/mail-delivery-hooks.client.js.map +1 -0
  8. package/dist/clients/mail-delivery-hooks.test.d.ts +1 -0
  9. package/dist/clients/mail-delivery-hooks.test.js +104 -0
  10. package/dist/clients/mail-delivery-hooks.test.js.map +1 -0
  11. package/dist/clients/mail-providers.test.d.ts +1 -0
  12. package/dist/clients/mail-providers.test.js +275 -0
  13. package/dist/clients/mail-providers.test.js.map +1 -0
  14. package/dist/clients/mail.client.d.ts +26 -1
  15. package/dist/clients/mail.client.js +9 -0
  16. package/dist/clients/mail.client.js.map +1 -1
  17. package/dist/clients/mailgun-mail.client.d.ts +12 -0
  18. package/dist/clients/mailgun-mail.client.js +81 -0
  19. package/dist/clients/mailgun-mail.client.js.map +1 -0
  20. package/dist/clients/mailpit-mail.client.js +2 -1
  21. package/dist/clients/mailpit-mail.client.js.map +1 -1
  22. package/dist/clients/scaleway-mail.client.js +1 -1
  23. package/dist/clients/scaleway-mail.client.js.map +1 -1
  24. package/dist/clients/sendgrid-mail.client.js +1 -3
  25. package/dist/clients/sendgrid-mail.client.js.map +1 -1
  26. package/dist/enums/mail-provider.enum.d.ts +2 -1
  27. package/dist/enums/mail-provider.enum.js +1 -0
  28. package/dist/enums/mail-provider.enum.js.map +1 -1
  29. package/dist/index.d.ts +3 -2
  30. package/dist/index.js +1 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/modules/mail.module-options.d.ts +22 -4
  33. package/dist/modules/mail.module.js +1 -1
  34. package/dist/modules/mail.module.js.map +1 -1
  35. package/dist/queue/mail-job-handlers.test.d.ts +1 -0
  36. package/dist/queue/mail-job-handlers.test.js +66 -0
  37. package/dist/queue/mail-job-handlers.test.js.map +1 -0
  38. package/dist/queue/send-html-mail.job-handler.js +2 -1
  39. package/dist/queue/send-html-mail.job-handler.js.map +1 -1
  40. package/dist/queue/send-html-mail.job.d.ts +3 -1
  41. package/dist/queue/send-html-mail.job.js.map +1 -1
  42. package/dist/queue/send-template-mail.job-handler.js +2 -1
  43. package/dist/queue/send-template-mail.job-handler.js.map +1 -1
  44. package/dist/queue/send-template-mail.job.d.ts +3 -1
  45. package/dist/queue/send-template-mail.job.js.map +1 -1
  46. package/package.json +5 -2
  47. package/skills/getting-started/SKILL.md +51 -5
@@ -1,3 +1,4 @@
1
+ import type { MailClientOptions } from '../modules/mail.module-options.js';
1
2
  export declare enum MailFileExtension {
2
3
  PDF = "pdf",
3
4
  CSV = "csv",
@@ -10,16 +11,23 @@ export interface MailAttachment {
10
11
  };
11
12
  buffer: Buffer;
12
13
  }
14
+ export interface MailAddress {
15
+ email: string;
16
+ name?: string;
17
+ }
18
+ export type MailAddressInput = string | MailAddress;
19
+ export type MailClientType = MailClientOptions['type'];
13
20
  export interface SendMailOptions {
14
21
  to: string | string[];
15
22
  cc?: string | string[];
16
23
  bcc?: string | string[];
17
- from?: string;
24
+ from?: MailAddressInput;
18
25
  subject: string;
19
26
  text?: string;
20
27
  html?: string;
21
28
  attachments?: MailAttachment[];
22
29
  replyTo?: string;
30
+ metadata?: Record<string, unknown>;
23
31
  }
24
32
  export interface SentMail {
25
33
  /** Provider-specific identifier used to track the sent email. */
@@ -27,8 +35,25 @@ export interface SentMail {
27
35
  /** Addresses represented by this provider identifier. */
28
36
  recipients: string[];
29
37
  }
38
+ export interface MailDeliverySuccess {
39
+ clientType: MailClientType;
40
+ options: SendMailOptions;
41
+ sentMails: SentMail[];
42
+ }
43
+ export interface MailDeliveryFailure {
44
+ clientType: MailClientType;
45
+ options: SendMailOptions;
46
+ error: unknown;
47
+ }
48
+ export interface MailDeliveryHooks {
49
+ onSuccess?: (delivery: MailDeliverySuccess) => Promise<void>;
50
+ onFailure?: (delivery: MailDeliveryFailure) => Promise<void>;
51
+ }
30
52
  export declare abstract class MailClient {
31
53
  abstract sendMail(sendMailOptions: SendMailOptions): Promise<SentMail[]>;
32
54
  protected getRecipients(options: SendMailOptions): string[];
55
+ protected normalizeMailAddress(address: MailAddressInput): MailAddress;
56
+ /** Resolves the effective sender address, falling back to the client's configured default. */
57
+ protected resolveFrom(options: SendMailOptions, defaultFrom: MailAddressInput): MailAddress;
33
58
  protected getMimeTypeForAttachmentExt(ext: MailFileExtension): string;
34
59
  }
@@ -11,6 +11,15 @@ export class MailClient {
11
11
  .filter((recipients) => recipients !== undefined)
12
12
  .flat();
13
13
  }
14
+ normalizeMailAddress(address) {
15
+ return typeof address === 'string'
16
+ ? { email: address }
17
+ : { email: address.email, name: address.name };
18
+ }
19
+ /** Resolves the effective sender address, falling back to the client's configured default. */
20
+ resolveFrom(options, defaultFrom) {
21
+ return this.normalizeMailAddress(options.from ?? defaultFrom);
22
+ }
14
23
  getMimeTypeForAttachmentExt(ext) {
15
24
  switch (ext) {
16
25
  case MailFileExtension.CSV:
@@ -1 +1 @@
1
- {"version":3,"file":"mail.client.js","sourceRoot":"","sources":["../../lib/clients/mail.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE9D,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,gCAAW,CAAA;IACX,gCAAW,CAAA;IACX,kCAAa,CAAA;AACf,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AA0BD,MAAM,OAAgB,UAAU;IAGpB,aAAa,CAAE,OAAwB;QAC/C,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC;aACzC,MAAM,CAAC,CAAC,UAAU,EAAmC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC;aACjF,IAAI,EAAE,CAAA;IACX,CAAC;IAES,2BAA2B,CAAE,GAAsB;QAC3D,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,iBAAiB,CAAC,GAAG;gBACxB,OAAO,UAAU,CAAA;YACnB,KAAK,iBAAiB,CAAC,GAAG;gBACxB,OAAO,iBAAiB,CAAA;YAC1B,KAAK,iBAAiB,CAAC,IAAI;gBACzB,OAAO,mEAAmE,CAAA;YAC5E;gBACE,eAAe,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"mail.client.js","sourceRoot":"","sources":["../../lib/clients/mail.client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE9D,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,gCAAW,CAAA;IACX,gCAAW,CAAA;IACX,kCAAa,CAAA;AACf,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAqDD,MAAM,OAAgB,UAAU;IAGpB,aAAa,CAAE,OAAwB;QAC/C,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC;aACzC,MAAM,CAAC,CAAC,UAAU,EAAmC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC;aACjF,IAAI,EAAE,CAAA;IACX,CAAC;IAES,oBAAoB,CAAE,OAAyB;QACvD,OAAO,OAAO,OAAO,KAAK,QAAQ;YAChC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;YACpB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA;IAClD,CAAC;IAED,8FAA8F;IACpF,WAAW,CAAE,OAAwB,EAAE,WAA6B;QAC5E,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,CAAA;IAC/D,CAAC;IAES,2BAA2B,CAAE,GAAsB;QAC3D,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,iBAAiB,CAAC,GAAG;gBACxB,OAAO,UAAU,CAAA;YACnB,KAAK,iBAAiB,CAAC,GAAG;gBACxB,OAAO,iBAAiB,CAAA;YAC1B,KAAK,iBAAiB,CAAC,IAAI;gBACzB,OAAO,mEAAmE,CAAA;YAC5E;gBACE,eAAe,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import type { MailgunMailClientOptions } from '../modules/mail.module-options.js';
2
+ import { MailClient, type SendMailOptions, type SentMail } from './mail.client.js';
3
+ export declare class MailgunMailClient extends MailClient {
4
+ private domain;
5
+ private defaultFrom;
6
+ private baseUrl;
7
+ private headers;
8
+ constructor(options: MailgunMailClientOptions);
9
+ sendMail(options: SendMailOptions): Promise<SentMail[]>;
10
+ private buildPayload;
11
+ private formatAddress;
12
+ }
@@ -0,0 +1,81 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Injectable } from '@nestjs/common';
11
+ import { MailApiError } from '../errors/mail-api.error.js';
12
+ import { MailClient } from './mail.client.js';
13
+ let MailgunMailClient = class MailgunMailClient extends MailClient {
14
+ domain;
15
+ defaultFrom;
16
+ baseUrl;
17
+ headers;
18
+ constructor(options) {
19
+ super();
20
+ this.domain = options.domain;
21
+ this.defaultFrom = options.defaultFrom;
22
+ this.baseUrl = options.baseUrl ?? 'https://api.mailgun.net';
23
+ this.headers = {
24
+ 'Authorization': 'Basic ' + Buffer.from(`api:${options.apiKey}`).toString('base64')
25
+ };
26
+ }
27
+ async sendMail(options) {
28
+ const response = await fetch(`${this.baseUrl}/v3/${this.domain}/messages`, {
29
+ method: 'POST',
30
+ headers: this.headers,
31
+ body: this.buildPayload(options)
32
+ });
33
+ if (!response.ok) {
34
+ const body = await response.text();
35
+ throw new MailApiError('Mailgun', response.status, body);
36
+ }
37
+ const body = await response.json();
38
+ return [{ id: body.id, recipients: this.getRecipients(options) }];
39
+ }
40
+ buildPayload(options) {
41
+ if (options.html == null && options.text == null) {
42
+ throw new Error('Either html or text content must be provided');
43
+ }
44
+ const form = new FormData();
45
+ form.append('from', this.formatAddress(this.resolveFrom(options, this.defaultFrom)));
46
+ for (const address of [options.to].flat()) {
47
+ form.append('to', address);
48
+ }
49
+ for (const address of options.cc !== undefined ? [options.cc].flat() : []) {
50
+ form.append('cc', address);
51
+ }
52
+ for (const address of options.bcc !== undefined ? [options.bcc].flat() : []) {
53
+ form.append('bcc', address);
54
+ }
55
+ form.append('subject', options.subject);
56
+ if (options.text !== undefined) {
57
+ form.append('text', options.text);
58
+ }
59
+ if (options.html !== undefined) {
60
+ form.append('html', options.html);
61
+ }
62
+ if (options.replyTo !== undefined) {
63
+ form.append('h:Reply-To', options.replyTo);
64
+ }
65
+ for (const attachment of options.attachments ?? []) {
66
+ const type = this.getMimeTypeForAttachmentExt(attachment.file.ext);
67
+ const blob = new Blob([new Uint8Array(attachment.buffer)], { type });
68
+ form.append('attachment', blob, `${attachment.file.name}.${attachment.file.ext}`);
69
+ }
70
+ return form;
71
+ }
72
+ formatAddress(address) {
73
+ return address.name !== undefined ? `${address.name} <${address.email}>` : address.email;
74
+ }
75
+ };
76
+ MailgunMailClient = __decorate([
77
+ Injectable(),
78
+ __metadata("design:paramtypes", [Object])
79
+ ], MailgunMailClient);
80
+ export { MailgunMailClient };
81
+ //# sourceMappingURL=mailgun-mail.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailgun-mail.client.js","sourceRoot":"","sources":["../../lib/clients/mailgun-mail.client.ts"],"names":[],"mappings":"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"}
@@ -28,8 +28,9 @@ let MailPitMailClient = class MailPitMailClient extends MailClient {
28
28
  return this._client;
29
29
  }
30
30
  async sendMail(options) {
31
+ const from = this.resolveFrom(options, this.defaultFrom);
31
32
  const response = await this.client.sendMessage({
32
- From: { Email: options.from ?? this.defaultFrom },
33
+ From: { Email: from.email, Name: from.name },
33
34
  To: this.mapToEmailAddressRequests(options.to),
34
35
  Cc: options.cc !== undefined ? this.mapToEmailAddressRequests(options.cc) : undefined,
35
36
  Bcc: options.bcc !== undefined ? this.mapToEmails(options.bcc) : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"mailpit-mail.client.js","sourceRoot":"","sources":["../../lib/clients/mailpit-mail.client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mailpit-mail.client.js","sourceRoot":"","sources":["../../lib/clients/mailpit-mail.client.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ let ScalewayMailClient = class ScalewayMailClient extends MailClient {
39
39
  return body.emails.map(email => ({ id: email.id, recipients: [email.mail_rcpt] }));
40
40
  }
41
41
  buildPayload(options) {
42
- const from = { email: options.from ?? this.from };
42
+ const from = this.resolveFrom(options, this.from);
43
43
  const to = [options.to].flat().map(email => ({ email }));
44
44
  const cc = options.cc === undefined
45
45
  ? undefined
@@ -1 +1 @@
1
- {"version":3,"file":"scaleway-mail.client.js","sourceRoot":"","sources":["../../lib/clients/scaleway-mail.client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaleway-mail.client.js","sourceRoot":"","sources":["../../lib/clients/scaleway-mail.client.ts"],"names":[],"mappings":"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"}
@@ -65,9 +65,7 @@ let SendGridMailClient = class SendGridMailClient extends MailClient {
65
65
  subject: options.subject
66
66
  }
67
67
  ],
68
- from: {
69
- email: options.from ?? this.defaultFrom
70
- },
68
+ from: this.resolveFrom(options, this.defaultFrom),
71
69
  reply_to: options.replyTo !== undefined ? { email: options.replyTo } : undefined,
72
70
  content,
73
71
  attachments: options.attachments?.map(attachment => ({
@@ -1 +1 @@
1
- {"version":3,"file":"sendgrid-mail.client.js","sourceRoot":"","sources":["../../lib/clients/sendgrid-mail.client.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yDAAyD;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAuC,MAAM,kBAAkB,CAAA;AAoE3E,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,UAAU;IACxC,WAAW,CAAQ;IACnB,OAAO,CAAwB;IAEvC,YACE,OAAkC;QAElC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG;YACb,eAAe,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ;YAC7C,cAAc,EAAE,kBAAkB;SACnC,CAAA;QACD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,OAAwB;QACtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,uCAAuC,EAAE;YACpE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SACjD,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAClC,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC3D,CAAC;QAGD,uEAAuE;QACvE,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QACtD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QACnE,CAAC;QAED,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACrE,CAAC;IAEO,YAAY,CAAE,OAAwB;QAC5C,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,OAAO,GAAsB,EAAE,CAAA;QAErC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,OAAO,CAAC,IAAI;aACpB,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,OAAO,CAAC,IAAI;aACpB,CAAC,CAAA;QACJ,CAAC;QAED,OAAO;YACL,gBAAgB,EAAE;gBAChB;oBACE,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtC,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtC,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC;oBACxC,OAAO,EAAE,OAAO,CAAC,OAAO;iBACzB;aACF;YACD,IAAI,EAAE;gBACJ,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW;aACxC;YACD,QAAQ,EAAE,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;YAChF,OAAO;YACP,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACnD,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC7C,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1D,IAAI,EAAE,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC3D,WAAW,EAAE,YAAY;aAC1B,CAAC,CAAC;SACJ,CAAA;IACH,CAAC;IAQO,iBAAiB,CACvB,KAAoC;QAEpC,IAAG,KAAK,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACjD,CAAC;CACF,CAAA;AAhGY,kBAAkB;IAD9B,UAAU,EAAE;;GACA,kBAAkB,CAgG9B"}
1
+ {"version":3,"file":"sendgrid-mail.client.js","sourceRoot":"","sources":["../../lib/clients/sendgrid-mail.client.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export declare enum MailProvider {
2
2
  SEND_GRID = "send-grid",
3
- SCALEWAY = "scaleway"
3
+ SCALEWAY = "scaleway",
4
+ MAILGUN = "mailgun"
4
5
  }
@@ -2,5 +2,6 @@ export var MailProvider;
2
2
  (function (MailProvider) {
3
3
  MailProvider["SEND_GRID"] = "send-grid";
4
4
  MailProvider["SCALEWAY"] = "scaleway";
5
+ MailProvider["MAILGUN"] = "mailgun";
5
6
  })(MailProvider || (MailProvider = {}));
6
7
  //# sourceMappingURL=mail-provider.enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mail-provider.enum.js","sourceRoot":"","sources":["../../lib/enums/mail-provider.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;AACvB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB"}
1
+ {"version":3,"file":"mail-provider.enum.js","sourceRoot":"","sources":["../../lib/enums/mail-provider.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;IACrB,mCAAmB,CAAA;AACrB,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { createMailClient, mailClientFactory } from './clients/mail-client.factory.js';
2
- export { MailClient, MailFileExtension, type MailAttachment, type SendMailOptions, type SentMail } from './clients/mail.client.js';
2
+ export { MailClient, MailFileExtension, type MailAddress, type MailAddressInput, type MailAttachment, type MailClientType, type MailDeliveryFailure, type MailDeliveryHooks, type MailDeliverySuccess, type SendMailOptions, type SentMail } from './clients/mail.client.js';
3
+ export { MailgunMailClient } from './clients/mailgun-mail.client.js';
3
4
  export { MailPitMailClient } from './clients/mailpit-mail.client.js';
4
5
  export { MockMailClient } from './clients/mock-mail.client.js';
5
6
  export { ScalewayMailClient } from './clients/scaleway-mail.client.js';
@@ -8,7 +9,7 @@ export { MailApiError } from './errors/mail-api.error.js';
8
9
  export { MailUnavailableError } from './errors/mail-unavailable.error.js';
9
10
  export { MailProvider } from './enums/mail-provider.enum.js';
10
11
  export { MailModule } from './modules/mail.module.js';
11
- export { type MailClientOptions, type MailModuleAsyncOptions, type MailModuleOptions, type MailPitMailClientOptions, type MockMailClientOptions, type ScalewayMailClientOptions, type SendGridMailClientOptions } from './modules/mail.module-options.js';
12
+ export { type MailClientOptions, type MailgunMailClientOptions, type MailModuleAsyncOptions, type MailModuleOptions, type MailPitMailClientOptions, type MockMailClientOptions, type ScalewayMailClientOptions, type SendGridMailClientOptions } from './modules/mail.module-options.js';
12
13
  export { MailQueueModule } from './queue/mail-queue.module.js';
13
14
  export { type MailQueueModuleOptions } from './queue/mail-queue.module-options.js';
14
15
  export { SendHtmlMailJob, type SendHtmlMailJobData } from './queue/send-html-mail.job.js';
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { createMailClient, mailClientFactory } from './clients/mail-client.factory.js';
2
2
  export { MailClient, MailFileExtension } from './clients/mail.client.js';
3
+ export { MailgunMailClient } from './clients/mailgun-mail.client.js';
3
4
  export { MailPitMailClient } from './clients/mailpit-mail.client.js';
4
5
  export { MockMailClient } from './clients/mock-mail.client.js';
5
6
  export { ScalewayMailClient } from './clients/scaleway-mail.client.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACtF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAA4D,MAAM,0BAA0B,CAAA;AAClI,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAUrD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE9D,OAAO,EAAE,eAAe,EAA4B,MAAM,+BAA+B,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAgC,MAAM,mCAAmC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACtF,OAAO,EACL,UAAU,EACV,iBAAiB,EAUlB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAWrD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE9D,OAAO,EAAE,eAAe,EAA4B,MAAM,+BAA+B,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAgC,MAAM,mCAAmC,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import type { FactoryProvider, ModuleMetadata } from '@nestjs/common';
2
+ import type { MailAddressInput, MailDeliveryHooks } from '../clients/mail.client.js';
2
3
  import { MailProvider } from '../enums/mail-provider.enum.js';
3
4
  /**
4
5
  * Options for configuring a MailPit-backed mail client.
@@ -9,7 +10,7 @@ export interface MailPitMailClientOptions {
9
10
  /** Base URL of the MailPit HTTP API. */
10
11
  url: string;
11
12
  /** Default sender address used when `sendMail()` omits `from`. */
12
- defaultFrom?: string;
13
+ defaultFrom?: MailAddressInput;
13
14
  /** Optional HTTP basic auth credentials for protected MailPit instances. */
14
15
  auth?: {
15
16
  /** MailPit username. */
@@ -29,7 +30,7 @@ export interface ScalewayMailClientOptions {
29
30
  /** Scaleway project identifier used for transactional email. */
30
31
  projectId: string;
31
32
  /** Default sender address used when `sendMail()` omits `from`. */
32
- from: string;
33
+ from: MailAddressInput;
33
34
  /** Scaleway API token used for authenticated requests. */
34
35
  apiKey: string;
35
36
  /** Scaleway region. Defaults to `fr-par` when omitted. */
@@ -42,10 +43,25 @@ export interface SendGridMailClientOptions {
42
43
  /** Selects the SendGrid client implementation. */
43
44
  type: MailProvider.SEND_GRID;
44
45
  /** Default sender address used when `sendMail()` omits `from`. */
45
- defaultFrom: string;
46
+ defaultFrom: MailAddressInput;
46
47
  /** SendGrid API token used for authenticated requests. */
47
48
  apiToken: string;
48
49
  }
50
+ /**
51
+ * Options for configuring the Mailgun client.
52
+ */
53
+ export interface MailgunMailClientOptions {
54
+ /** Selects the Mailgun client implementation. */
55
+ type: MailProvider.MAILGUN;
56
+ /** Mailgun sending domain. */
57
+ domain: string;
58
+ /** Default sender address used when `sendMail()` omits `from`. */
59
+ defaultFrom: MailAddressInput;
60
+ /** Mailgun private API key used for authenticated requests. */
61
+ apiKey: string;
62
+ /** Mailgun API base URL. Defaults to `https://api.mailgun.net`. Use `https://api.eu.mailgun.net` for EU-region domains. */
63
+ baseUrl?: string;
64
+ }
49
65
  /**
50
66
  * Options for configuring a no-op test client.
51
67
  */
@@ -56,7 +72,7 @@ export interface MockMailClientOptions {
56
72
  /**
57
73
  * Supported concrete mail client configurations.
58
74
  */
59
- export type MailClientOptions = MailPitMailClientOptions | ScalewayMailClientOptions | SendGridMailClientOptions | MockMailClientOptions;
75
+ export type MailClientOptions = MailPitMailClientOptions | ScalewayMailClientOptions | SendGridMailClientOptions | MailgunMailClientOptions | MockMailClientOptions;
60
76
  /**
61
77
  * Synchronous configuration for `MailModule.forRoot(...)`.
62
78
  */
@@ -69,6 +85,8 @@ export interface MailModuleOptions {
69
85
  templateRootPath?: string;
70
86
  /** Concrete mail client configuration to register in Nest DI. */
71
87
  client: MailClientOptions;
88
+ /** Optional observers invoked after provider delivery succeeds or fails. */
89
+ deliveryHooks?: MailDeliveryHooks;
72
90
  /** The pgboss queue name which is registered on the pgboss jobs that are part of this package */
73
91
  queueName: string;
74
92
  }
@@ -46,7 +46,7 @@ let MailModule = MailModule_1 = class MailModule {
46
46
  static createMailClientProvider() {
47
47
  return {
48
48
  provide: MailClient,
49
- useFactory: (options) => createMailClient(options.client),
49
+ useFactory: (options) => createMailClient(options.client, options.deliveryHooks),
50
50
  inject: [MAIL_MODULE_OPTIONS]
51
51
  };
52
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mail.module.js","sourceRoot":"","sources":["../../lib/modules/mail.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAiB,MAAM,EAAY,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAgC,MAAM,4BAA4B,CAAA;AACxH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAIjE,IAAM,UAAU,kBAAhB,MAAM,UAAU;IACrB,MAAM,CAAC,OAAO,CAAE,OAA0B;QACxC,OAAO,IAAI,CAAC,YAAY,CAAC;YACvB,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAE,OAA+B;QAClD,OAAO;YACL,MAAM,EAAE,YAAU;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE;gBACT,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;gBACnC,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,+BAA+B,EAAE;gBACtC,IAAI,CAAC,+BAA+B,EAAE;gBACtC,kBAAkB;aACnB;YACD,OAAO,EAAE;gBACP,kBAAkB;gBAClB,UAAU;aACX;SACF,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAE,OAA+B;QACnE,OAAO;YACL,OAAO,EAAE,mBAAmB;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,wBAAwB;QACrC,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,UAAU,EAAE,CAAC,OAA0B,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5E,MAAM,EAAE,CAAC,mBAAmB,CAAC;SAC9B,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,+BAA+B;QAC5C,OAAO;YACL,OAAO,EAAE,yBAAyB;YAClC,UAAU,EAAE,CAAC,OAA0B,EAA2B,EAAE,CAAC,CAAC;gBACpE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC3C,CAAC;YACF,MAAM,EAAE,CAAC,mBAAmB,CAAC;SAC9B,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,+BAA+B;QAC5C,OAAO;YACL,OAAO,EAAE,kCAAkC;YAC3C,MAAM,EAAE,CAAC,mBAAmB,CAAC;YAC7B,UAAU,EAAE,CAAC,OAA0B,EAAE,EAAE;gBACzC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAA;gBAC7C,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAA;gBACjD,OAAO,IAAI,CAAA;YACb,CAAC;SACF,CAAA;IACH,CAAC;CACF,CAAA;AA9DY,UAAU;IADtB,MAAM,CAAC,EAAE,CAAC;GACE,UAAU,CA8DtB"}
1
+ {"version":3,"file":"mail.module.js","sourceRoot":"","sources":["../../lib/modules/mail.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAiB,MAAM,EAAY,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAgC,MAAM,4BAA4B,CAAA;AACxH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAIjE,IAAM,UAAU,kBAAhB,MAAM,UAAU;IACrB,MAAM,CAAC,OAAO,CAAE,OAA0B;QACxC,OAAO,IAAI,CAAC,YAAY,CAAC;YACvB,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAE,OAA+B;QAClD,OAAO;YACL,MAAM,EAAE,YAAU;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE;gBACT,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;gBACnC,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,+BAA+B,EAAE;gBACtC,IAAI,CAAC,+BAA+B,EAAE;gBACtC,kBAAkB;aACnB;YACD,OAAO,EAAE;gBACP,kBAAkB;gBAClB,UAAU;aACX;SACF,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAE,OAA+B;QACnE,OAAO;YACL,OAAO,EAAE,mBAAmB;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,wBAAwB;QACrC,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,UAAU,EAAE,CAAC,OAA0B,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC;YACnG,MAAM,EAAE,CAAC,mBAAmB,CAAC;SAC9B,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,+BAA+B;QAC5C,OAAO;YACL,OAAO,EAAE,yBAAyB;YAClC,UAAU,EAAE,CAAC,OAA0B,EAA2B,EAAE,CAAC,CAAC;gBACpE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC3C,CAAC;YACF,MAAM,EAAE,CAAC,mBAAmB,CAAC;SAC9B,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,+BAA+B;QAC5C,OAAO;YACL,OAAO,EAAE,kCAAkC;YAC3C,MAAM,EAAE,CAAC,mBAAmB,CAAC;YAC7B,UAAU,EAAE,CAAC,OAA0B,EAAE,EAAE;gBACzC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAA;gBAC7C,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAA;gBACjD,OAAO,IAAI,CAAA;YACb,CAAC;SACF,CAAA;IACH,CAAC;CACF,CAAA;AA9DY,UAAU;IADtB,MAAM,CAAC,EAAE,CAAC;GACE,UAAU,CA8DtB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,66 @@
1
+ import { describe, it } from 'node:test';
2
+ import { expect } from 'expect';
3
+ import { MailClient } from '../clients/mail.client.js';
4
+ import { SendHtmlMailJobHandler } from './send-html-mail.job-handler.js';
5
+ import { SendTemplateMailJobHandler } from './send-template-mail.job-handler.js';
6
+ class CapturingMailClient extends MailClient {
7
+ options;
8
+ async sendMail(options) {
9
+ this.options = options;
10
+ return Promise.resolve([{ id: 'provider-id', recipients: [options.to].flat() }]);
11
+ }
12
+ }
13
+ describe('mail queue handlers', () => {
14
+ it('forwards structured from and metadata from HTML jobs', async () => {
15
+ const mailClient = new CapturingMailClient();
16
+ const handler = new SendHtmlMailJobHandler(mailClient);
17
+ const from = { email: 'sender@example.com', name: 'Sender Name' };
18
+ const metadata = { deliveryId: 'delivery-id' };
19
+ await handler.run({
20
+ from,
21
+ to: 'recipient@example.com',
22
+ subject: 'Subject',
23
+ data: { name: 'Recipient' },
24
+ text: 'Rendered text',
25
+ html: '<p>Rendered HTML</p>',
26
+ metadata
27
+ });
28
+ expect(mailClient.options).toMatchObject({ from, metadata });
29
+ expect(mailClient.options?.text).toBe('Rendered text');
30
+ expect(mailClient.options?.html).toBe('<p>Rendered HTML</p>');
31
+ });
32
+ it('renders templates and forwards structured from and metadata', async () => {
33
+ const mailClient = new CapturingMailClient();
34
+ const renderCalls = [];
35
+ const renderer = {
36
+ render: (path, data) => {
37
+ renderCalls.push({ path, data });
38
+ return Promise.resolve(`rendered:${path}`);
39
+ }
40
+ };
41
+ const handler = new SendTemplateMailJobHandler(mailClient, renderer);
42
+ const from = { email: 'sender@example.com', name: 'Sender Name' };
43
+ const metadata = { deliveryId: 'delivery-id' };
44
+ const data = { name: 'Recipient' };
45
+ await handler.run({
46
+ from,
47
+ to: 'recipient@example.com',
48
+ subject: 'Subject',
49
+ data,
50
+ textHbsFilePath: 'welcome.text.hbs',
51
+ htmlHbsFilePath: 'welcome.html.hbs',
52
+ metadata
53
+ });
54
+ expect(renderCalls).toEqual([
55
+ { path: 'welcome.html.hbs', data },
56
+ { path: 'welcome.text.hbs', data }
57
+ ]);
58
+ expect(mailClient.options).toMatchObject({
59
+ from,
60
+ metadata,
61
+ text: 'rendered:welcome.text.hbs',
62
+ html: 'rendered:welcome.html.hbs'
63
+ });
64
+ });
65
+ });
66
+ //# sourceMappingURL=mail-job-handlers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-job-handlers.test.js","sourceRoot":"","sources":["../../lib/queue/mail-job-handlers.test.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,8 @@ let SendHtmlMailJobHandler = class SendHtmlMailJobHandler extends JobHandler {
25
25
  replyTo: mail.replyTo,
26
26
  subject: mail.subject,
27
27
  text: mail.text,
28
- html: mail.html
28
+ html: mail.html,
29
+ metadata: mail.metadata
29
30
  });
30
31
  }
31
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"send-html-mail.job-handler.js","sourceRoot":"","sources":["../../lib/queue/send-html-mail.job-handler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAI/C,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,UAA2B;IAE3D;IADV,YACU,UAAsB;QAE9B,KAAK,EAAE,CAAA;QAFC,eAAU,GAAV,UAAU,CAAY;IAGhC,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,IAAyB;QAClC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC7B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAnBY,sBAAsB;IADlC,UAAU,EAAE;qCAGW,UAAU;GAFrB,sBAAsB,CAmBlC"}
1
+ {"version":3,"file":"send-html-mail.job-handler.js","sourceRoot":"","sources":["../../lib/queue/send-html-mail.job-handler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAI/C,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,UAA2B;IAE3D;IADV,YACU,UAAsB;QAE9B,KAAK,EAAE,CAAA;QAFC,eAAU,GAAV,UAAU,CAAY;IAGhC,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,IAAyB;QAClC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC7B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AApBY,sBAAsB;IADlC,UAAU,EAAE;qCAGW,UAAU;GAFrB,sBAAsB,CAoBlC"}
@@ -1,6 +1,7 @@
1
1
  import { BaseJob } from '@wisemen/pgboss-nestjs-job';
2
+ import type { MailAddressInput } from '../clients/mail.client.js';
2
3
  export interface SendHtmlMailJobData {
3
- from?: string;
4
+ from?: MailAddressInput;
4
5
  to: string;
5
6
  cc?: string;
6
7
  bcc?: string;
@@ -9,6 +10,7 @@ export interface SendHtmlMailJobData {
9
10
  data: Record<string, unknown>;
10
11
  text: string;
11
12
  html: string;
13
+ metadata?: Record<string, unknown>;
12
14
  }
13
15
  export declare class SendHtmlMailJob extends BaseJob<SendHtmlMailJobData> {
14
16
  constructor(data: SendHtmlMailJobData);
@@ -1 +1 @@
1
- {"version":3,"file":"send-html-mail.job.js","sourceRoot":"","sources":["../../lib/queue/send-html-mail.job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAcpD,MAAM,OAAO,eAAgB,SAAQ,OAA4B;IAC/D,YAAa,IAAyB;QACpC,KAAK,CAAC,IAAI,CAAC,CAAA;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"send-html-mail.job.js","sourceRoot":"","sources":["../../lib/queue/send-html-mail.job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAgBpD,MAAM,OAAO,eAAgB,SAAQ,OAA4B;IAC/D,YAAa,IAAyB;QACpC,KAAK,CAAC,IAAI,CAAC,CAAA;IACb,CAAC;CACF"}
@@ -32,7 +32,8 @@ let SendTemplateMailJobHandler = class SendTemplateMailJobHandler extends JobHan
32
32
  replyTo: mail.replyTo,
33
33
  subject: mail.subject,
34
34
  text,
35
- html
35
+ html,
36
+ metadata: mail.metadata
36
37
  });
37
38
  }
38
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"send-template-mail.job-handler.js","sourceRoot":"","sources":["../../lib/queue/send-template-mail.job-handler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAI/C,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,UAA+B;IAEnE;IACA;IAFV,YACU,UAAsB,EACtB,kBAAsC;QAE9C,KAAK,EAAE,CAAA;QAHC,eAAU,GAAV,UAAU,CAAY;QACtB,uBAAkB,GAAlB,kBAAkB,CAAoB;IAGhD,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,IAA6B;QACtC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC;YAC/D,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC;SAChE,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC7B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI;YACJ,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAzBY,0BAA0B;IADtC,UAAU,EAAE;qCAGW,UAAU;QACF,kBAAkB;GAHrC,0BAA0B,CAyBtC"}
1
+ {"version":3,"file":"send-template-mail.job-handler.js","sourceRoot":"","sources":["../../lib/queue/send-template-mail.job-handler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAI/C,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,UAA+B;IAEnE;IACA;IAFV,YACU,UAAsB,EACtB,kBAAsC;QAE9C,KAAK,EAAE,CAAA;QAHC,eAAU,GAAV,UAAU,CAAY;QACtB,uBAAkB,GAAlB,kBAAkB,CAAoB;IAGhD,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,IAA6B;QACtC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC;YAC/D,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC;SAChE,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC7B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI;YACJ,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AA1BY,0BAA0B;IADtC,UAAU,EAAE;qCAGW,UAAU;QACF,kBAAkB;GAHrC,0BAA0B,CA0BtC"}
@@ -1,6 +1,7 @@
1
1
  import { BaseJob } from '@wisemen/pgboss-nestjs-job';
2
+ import type { MailAddressInput } from '../clients/mail.client.js';
2
3
  export interface SendTemplateMailJobData {
3
- from?: string;
4
+ from?: MailAddressInput;
4
5
  to: string;
5
6
  cc?: string;
6
7
  bcc?: string;
@@ -9,6 +10,7 @@ export interface SendTemplateMailJobData {
9
10
  data: Record<string, unknown>;
10
11
  textHbsFilePath: string;
11
12
  htmlHbsFilePath: string;
13
+ metadata?: Record<string, unknown>;
12
14
  }
13
15
  export declare class SendTemplateMailJob extends BaseJob<SendTemplateMailJobData> {
14
16
  constructor(data: SendTemplateMailJobData);
@@ -1 +1 @@
1
- {"version":3,"file":"send-template-mail.job.js","sourceRoot":"","sources":["../../lib/queue/send-template-mail.job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAcpD,MAAM,OAAO,mBAAoB,SAAQ,OAAgC;IACvE,YAAa,IAA6B;QACxC,KAAK,CAAC,IAAI,CAAC,CAAA;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"send-template-mail.job.js","sourceRoot":"","sources":["../../lib/queue/send-template-mail.job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAgBpD,MAAM,OAAO,mBAAoB,SAAQ,OAAgC;IACvE,YAAa,IAA6B;QACxC,KAAK,CAAC,IAAI,CAAC,CAAA;IACb,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wisemen/nestjs-mail",
3
- "version": "0.3.0",
3
+ "version": "1.1.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -15,7 +15,7 @@
15
15
  "@nestjs/common": "^11.1.28",
16
16
  "@wisemen/api-error": "^1.1.0",
17
17
  "@wisemen/nestjs-handlebars": "^0.0.3",
18
- "@wisemen/pgboss-nestjs-job": "^5.5.0"
18
+ "@wisemen/pgboss-nestjs-job": "^6.0.1"
19
19
  },
20
20
  "dependencies": {
21
21
  "mailpit-api": "^2.1.0"
@@ -23,6 +23,7 @@
23
23
  "devDependencies": {
24
24
  "@types/node": "25.3.0",
25
25
  "eslint": "10.2.1",
26
+ "expect": "30.4.1",
26
27
  "oxlint": "1.59.0",
27
28
  "oxlint-tsgolint": "0.20.0",
28
29
  "typescript": "^5.9.3",
@@ -42,6 +43,8 @@
42
43
  "prebuild": "rm -rf ./dist",
43
44
  "clean": "rm -rf ./dist",
44
45
  "build": "tsc",
46
+ "pretest": "pnpm build",
47
+ "test": "node --test ./dist/**/*.test.js",
45
48
  "prerelease": "npm run build",
46
49
  "release": "pnpx release-it"
47
50
  }