@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.
- package/README.md +91 -5
- package/dist/clients/mail-client.factory.d.ts +2 -1
- package/dist/clients/mail-client.factory.js +12 -1
- package/dist/clients/mail-client.factory.js.map +1 -1
- package/dist/clients/mail-delivery-hooks.client.d.ts +11 -0
- package/dist/clients/mail-delivery-hooks.client.js +47 -0
- package/dist/clients/mail-delivery-hooks.client.js.map +1 -0
- package/dist/clients/mail-delivery-hooks.test.d.ts +1 -0
- package/dist/clients/mail-delivery-hooks.test.js +104 -0
- package/dist/clients/mail-delivery-hooks.test.js.map +1 -0
- package/dist/clients/mail-providers.test.d.ts +1 -0
- package/dist/clients/mail-providers.test.js +275 -0
- package/dist/clients/mail-providers.test.js.map +1 -0
- package/dist/clients/mail.client.d.ts +26 -1
- package/dist/clients/mail.client.js +9 -0
- package/dist/clients/mail.client.js.map +1 -1
- package/dist/clients/mailgun-mail.client.d.ts +12 -0
- package/dist/clients/mailgun-mail.client.js +81 -0
- package/dist/clients/mailgun-mail.client.js.map +1 -0
- package/dist/clients/mailpit-mail.client.js +2 -1
- package/dist/clients/mailpit-mail.client.js.map +1 -1
- package/dist/clients/scaleway-mail.client.js +1 -1
- package/dist/clients/scaleway-mail.client.js.map +1 -1
- package/dist/clients/sendgrid-mail.client.js +1 -3
- package/dist/clients/sendgrid-mail.client.js.map +1 -1
- package/dist/enums/mail-provider.enum.d.ts +2 -1
- package/dist/enums/mail-provider.enum.js +1 -0
- package/dist/enums/mail-provider.enum.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/mail.module-options.d.ts +22 -4
- package/dist/modules/mail.module.js +1 -1
- package/dist/modules/mail.module.js.map +1 -1
- package/dist/queue/mail-job-handlers.test.d.ts +1 -0
- package/dist/queue/mail-job-handlers.test.js +66 -0
- package/dist/queue/mail-job-handlers.test.js.map +1 -0
- package/dist/queue/send-html-mail.job-handler.js +2 -1
- package/dist/queue/send-html-mail.job-handler.js.map +1 -1
- package/dist/queue/send-html-mail.job.d.ts +3 -1
- package/dist/queue/send-html-mail.job.js.map +1 -1
- package/dist/queue/send-template-mail.job-handler.js +2 -1
- package/dist/queue/send-template-mail.job-handler.js.map +1 -1
- package/dist/queue/send-template-mail.job.d.ts +3 -1
- package/dist/queue/send-template-mail.job.js.map +1 -1
- package/package.json +5 -2
- 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?:
|
|
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":"
|
|
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:
|
|
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":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAkE,MAAM,aAAa,CAAA;AAC3G,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAE1E,OAAO,EAAE,UAAU,
|
|
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 =
|
|
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":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE1D,OAAO,EAAE,UAAU,
|
|
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,
|
|
1
|
+
{"version":3,"file":"sendgrid-mail.client.js","sourceRoot":"","sources":["../../lib/clients/sendgrid-mail.client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail-provider.enum.js","sourceRoot":"","sources":["../../lib/enums/mail-provider.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
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,
|
|
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?:
|
|
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:
|
|
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:
|
|
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;
|
|
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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"}
|
|
@@ -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;
|
|
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?:
|
|
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;
|
|
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"}
|
|
@@ -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;
|
|
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?:
|
|
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;
|
|
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": "
|
|
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": "^
|
|
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
|
}
|