@breadstone/archipel-platform-mailing 0.0.8 → 0.0.9
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/package.json +3 -3
- package/src/MailModule.js +2 -2
- package/src/services/MailService.js +4 -3
- package/src/services/MailVerificationService.js +4 -3
- package/src/services/strategies/MailgunDeliveryStrategy.js +3 -2
- package/src/services/strategies/PostmarkDeliveryStrategy.js +2 -1
- package/src/services/strategies/ResendDeliveryStrategy.js +2 -1
- package/src/services/strategies/SendGridDeliveryStrategy.js +2 -1
- package/src/services/strategies/SmtpDeliveryStrategy.js +6 -5
- package/src/terminus/MailHealthIndicator.d.ts +1 -2
- package/src/terminus/MailHealthIndicator.js +5 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@breadstone/archipel-platform-mailing",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"description": "Email delivery with strategy-based transport and template engines for NestJS applications.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./src/index.js",
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
"README.md"
|
|
76
76
|
],
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"@breadstone/archipel-platform-blob-storage": "0.0.
|
|
79
|
-
"@breadstone/archipel-platform-core": "0.0.
|
|
78
|
+
"@breadstone/archipel-platform-blob-storage": "0.0.9",
|
|
79
|
+
"@breadstone/archipel-platform-core": "0.0.9",
|
|
80
80
|
"form-data": "4.0.5",
|
|
81
81
|
"nodemailer": "8.0.5",
|
|
82
82
|
"tslib": "2.8.1"
|
package/src/MailModule.js
CHANGED
|
@@ -37,7 +37,7 @@ exports.MailModule = MailModule = tslib_1.__decorate([
|
|
|
37
37
|
{
|
|
38
38
|
provide: MailTokens_1.MAIL_TEMPLATE_FETCH_STRATEGY_TOKEN,
|
|
39
39
|
useFactory: (configService, blobService, resourceManager) => {
|
|
40
|
-
const templateStrategy = configService.get(
|
|
40
|
+
const templateStrategy = configService.get(env_1.MAIL_TEMPLATE_STRATEGY.key);
|
|
41
41
|
if (templateStrategy === 'file') {
|
|
42
42
|
return new FileTemplateFetchStrategy_1.FileTemplateFetchStrategy(resourceManager);
|
|
43
43
|
}
|
|
@@ -51,7 +51,7 @@ exports.MailModule = MailModule = tslib_1.__decorate([
|
|
|
51
51
|
{
|
|
52
52
|
provide: MailTokens_1.MAIL_DELIVERY_STRATEGY_TOKEN,
|
|
53
53
|
useFactory: async (configService) => {
|
|
54
|
-
const deliveryStrategy = configService.get(
|
|
54
|
+
const deliveryStrategy = configService.get(env_1.MAIL_DELIVERY_STRATEGY.key);
|
|
55
55
|
if (deliveryStrategy === 'log') {
|
|
56
56
|
const { LogDeliveryStrategy } = await Promise.resolve().then(() => tslib_1.__importStar(require('./services/strategies/LogDeliveryStrategy')));
|
|
57
57
|
return new LogDeliveryStrategy(configService);
|
|
@@ -5,9 +5,10 @@ exports.MailService = void 0;
|
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
const archipel_platform_core_1 = require("@breadstone/archipel-platform-core");
|
|
7
7
|
const common_1 = require("@nestjs/common");
|
|
8
|
+
const env_1 = require("../env");
|
|
9
|
+
const MailTokens_1 = require("../MailTokens");
|
|
8
10
|
const MailTemplateEngine_1 = require("../templating/MailTemplateEngine");
|
|
9
11
|
const DeliveryStrategyBase_1 = require("./strategies/abstracts/DeliveryStrategyBase");
|
|
10
|
-
const MailTokens_1 = require("../MailTokens");
|
|
11
12
|
// #endregion
|
|
12
13
|
/**
|
|
13
14
|
* Represents the `MailService` class.
|
|
@@ -25,8 +26,8 @@ let MailService = class MailService {
|
|
|
25
26
|
constructor(configService, mailTemplateEngine, deliveryStrategy) {
|
|
26
27
|
this._mailTemplateEngine = mailTemplateEngine;
|
|
27
28
|
this._deliveryStrategy = deliveryStrategy;
|
|
28
|
-
this._defaultFrom = configService.get(
|
|
29
|
-
const templateFormat = configService.get(
|
|
29
|
+
this._defaultFrom = configService.get(env_1.MAIL_SENDER_EMAIL.key);
|
|
30
|
+
const templateFormat = configService.get(env_1.MAIL_TEMPLATE_ENGINE_FORMAT.key);
|
|
30
31
|
if (templateFormat !== 'html' && templateFormat !== 'txt') {
|
|
31
32
|
throw new Error(`Invalid email template format: ${templateFormat}. Supported formats are 'html' or 'txt'.`);
|
|
32
33
|
}
|
|
@@ -6,6 +6,7 @@ const tslib_1 = require("tslib");
|
|
|
6
6
|
const archipel_platform_core_1 = require("@breadstone/archipel-platform-core");
|
|
7
7
|
const common_1 = require("@nestjs/common");
|
|
8
8
|
const nodemailer = tslib_1.__importStar(require("nodemailer"));
|
|
9
|
+
const env_1 = require("../env");
|
|
9
10
|
// #endregion
|
|
10
11
|
/**
|
|
11
12
|
* Represents the `MailVerificationService` class.
|
|
@@ -22,12 +23,12 @@ let MailVerificationService = class MailVerificationService {
|
|
|
22
23
|
*/
|
|
23
24
|
constructor(configService) {
|
|
24
25
|
this._transporter = nodemailer.createTransport({
|
|
25
|
-
host: configService.tryGet(
|
|
26
|
+
host: configService.tryGet(env_1.MAIL_SMTP_HOST.key, 'localhost'),
|
|
26
27
|
port: 465,
|
|
27
28
|
secure: true,
|
|
28
29
|
auth: {
|
|
29
|
-
user: configService.tryGet(
|
|
30
|
-
pass: configService.tryGet(
|
|
30
|
+
user: configService.tryGet(env_1.MAIL_SMTP_USER.key, ''),
|
|
31
|
+
pass: configService.tryGet(env_1.MAIL_SMTP_PASSWORD.key, ''),
|
|
31
32
|
},
|
|
32
33
|
});
|
|
33
34
|
}
|
|
@@ -6,6 +6,7 @@ const tslib_1 = require("tslib");
|
|
|
6
6
|
const common_1 = require("@nestjs/common");
|
|
7
7
|
const form_data_1 = tslib_1.__importDefault(require("form-data"));
|
|
8
8
|
const mailgun_js_1 = tslib_1.__importDefault(require("mailgun.js"));
|
|
9
|
+
const env_1 = require("../../env");
|
|
9
10
|
const DeliveryStrategyBase_1 = require("./abstracts/DeliveryStrategyBase");
|
|
10
11
|
// #endregion
|
|
11
12
|
/**
|
|
@@ -28,9 +29,9 @@ class MailgunDeliveryStrategy extends DeliveryStrategyBase_1.DeliveryStrategyBas
|
|
|
28
29
|
const mailgun = new mailgun_js_1.default(form_data_1.default);
|
|
29
30
|
this._mailgunClient = mailgun.client({
|
|
30
31
|
username: 'api',
|
|
31
|
-
key: configService.get(
|
|
32
|
+
key: configService.get(env_1.MAIL_MAILGUN_API_KEY.key),
|
|
32
33
|
});
|
|
33
|
-
this._domain = configService.get(
|
|
34
|
+
this._domain = configService.get(env_1.MAIL_MAILGUN_DOMAIN.key);
|
|
34
35
|
}
|
|
35
36
|
// #endregion
|
|
36
37
|
// #region Methods
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.PostmarkDeliveryStrategy = void 0;
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
6
|
const postmark_1 = require("postmark");
|
|
7
|
+
const env_1 = require("../../env");
|
|
7
8
|
const DeliveryStrategyBase_1 = require("./abstracts/DeliveryStrategyBase");
|
|
8
9
|
// #endregion
|
|
9
10
|
/**
|
|
@@ -23,7 +24,7 @@ class PostmarkDeliveryStrategy extends DeliveryStrategyBase_1.DeliveryStrategyBa
|
|
|
23
24
|
super();
|
|
24
25
|
// #region Fields
|
|
25
26
|
this._logger = new common_1.Logger(PostmarkDeliveryStrategy.name);
|
|
26
|
-
this._postmarkClient = new postmark_1.ServerClient(configService.get(
|
|
27
|
+
this._postmarkClient = new postmark_1.ServerClient(configService.get(env_1.MAIL_POSTMARK_API_KEY.key));
|
|
27
28
|
}
|
|
28
29
|
// #endregion
|
|
29
30
|
// #region Methods
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.ResendDeliveryStrategy = void 0;
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
6
|
const resend_1 = require("resend");
|
|
7
|
+
const env_1 = require("../../env");
|
|
7
8
|
const DeliveryStrategyBase_1 = require("./abstracts/DeliveryStrategyBase");
|
|
8
9
|
// #endregion
|
|
9
10
|
/**
|
|
@@ -23,7 +24,7 @@ class ResendDeliveryStrategy extends DeliveryStrategyBase_1.DeliveryStrategyBase
|
|
|
23
24
|
super();
|
|
24
25
|
// #region Fields
|
|
25
26
|
this._logger = new common_1.Logger(ResendDeliveryStrategy.name);
|
|
26
|
-
this._resendClient = new resend_1.Resend(configService.get(
|
|
27
|
+
this._resendClient = new resend_1.Resend(configService.get(env_1.MAIL_RESEND_API_KEY.key));
|
|
27
28
|
}
|
|
28
29
|
// #endregion
|
|
29
30
|
// #region Methods
|
|
@@ -5,6 +5,7 @@ exports.SendGridDeliveryStrategy = void 0;
|
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
const common_1 = require("@nestjs/common");
|
|
7
7
|
const mail_1 = tslib_1.__importDefault(require("@sendgrid/mail"));
|
|
8
|
+
const env_1 = require("../../env");
|
|
8
9
|
const DeliveryStrategyBase_1 = require("./abstracts/DeliveryStrategyBase");
|
|
9
10
|
// #endregion
|
|
10
11
|
/**
|
|
@@ -24,7 +25,7 @@ class SendGridDeliveryStrategy extends DeliveryStrategyBase_1.DeliveryStrategyBa
|
|
|
24
25
|
super();
|
|
25
26
|
// #region Fields
|
|
26
27
|
this._logger = new common_1.Logger(SendGridDeliveryStrategy.name);
|
|
27
|
-
mail_1.default.setApiKey(configService.get(
|
|
28
|
+
mail_1.default.setApiKey(configService.get(env_1.MAIL_SENDGRID_API_KEY.key));
|
|
28
29
|
}
|
|
29
30
|
// #endregion
|
|
30
31
|
// #region Methods
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.SmtpDeliveryStrategy = void 0;
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
6
|
const nodemailer_1 = require("nodemailer");
|
|
7
|
+
const env_1 = require("../../env");
|
|
7
8
|
const DeliveryStrategyBase_1 = require("./abstracts/DeliveryStrategyBase");
|
|
8
9
|
// #endregion
|
|
9
10
|
/**
|
|
@@ -24,12 +25,12 @@ class SmtpDeliveryStrategy extends DeliveryStrategyBase_1.DeliveryStrategyBase {
|
|
|
24
25
|
// #region Fields
|
|
25
26
|
this._logger = new common_1.Logger(SmtpDeliveryStrategy.name);
|
|
26
27
|
const options = {
|
|
27
|
-
host: configService.tryGet(
|
|
28
|
-
port: configService.tryGet(
|
|
29
|
-
secure: configService.tryGet(
|
|
28
|
+
host: configService.tryGet(env_1.MAIL_SMTP_HOST.key, 'localhost'),
|
|
29
|
+
port: configService.tryGet(env_1.MAIL_SMTP_PORT.key, 587),
|
|
30
|
+
secure: configService.tryGet(env_1.MAIL_SMTP_SECURE.key, false),
|
|
30
31
|
auth: {
|
|
31
|
-
user: configService.tryGet(
|
|
32
|
-
pass: configService.tryGet(
|
|
32
|
+
user: configService.tryGet(env_1.MAIL_SMTP_USER.key, ''),
|
|
33
|
+
pass: configService.tryGet(env_1.MAIL_SMTP_PASSWORD.key, ''),
|
|
33
34
|
},
|
|
34
35
|
};
|
|
35
36
|
this._transporter = (0, nodemailer_1.createTransport)(options);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ConfigService } from '@breadstone/archipel-platform-core';
|
|
1
|
+
import { ConfigService, IHealthIndicator } from '@breadstone/archipel-platform-core';
|
|
2
2
|
import { HealthIndicatorResult } from '@nestjs/terminus';
|
|
3
|
-
import { IHealthIndicator } from '@breadstone/archipel-platform-core';
|
|
4
3
|
/**
|
|
5
4
|
* Health indicator for mail service.
|
|
6
5
|
*
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.MailHealthIndicator = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
|
-
const common_1 = require("@nestjs/common");
|
|
7
6
|
const archipel_platform_core_1 = require("@breadstone/archipel-platform-core");
|
|
7
|
+
const common_1 = require("@nestjs/common");
|
|
8
|
+
const env_1 = require("../env");
|
|
8
9
|
// #endregion
|
|
9
10
|
/**
|
|
10
11
|
* Health indicator for mail service.
|
|
@@ -34,9 +35,9 @@ let MailHealthIndicator = class MailHealthIndicator {
|
|
|
34
35
|
* @returns The health indicator result.
|
|
35
36
|
*/
|
|
36
37
|
check() {
|
|
37
|
-
const mailHost = this._configService.tryGet(
|
|
38
|
-
const mailUser = this._configService.tryGet(
|
|
39
|
-
const mailPort = this._configService.tryGet(
|
|
38
|
+
const mailHost = this._configService.tryGet(env_1.MAIL_HOST.key, '');
|
|
39
|
+
const mailUser = this._configService.tryGet(env_1.MAIL_USER.key, '');
|
|
40
|
+
const mailPort = this._configService.tryGet(env_1.MAIL_PORT.key, 0);
|
|
40
41
|
const isHealthy = mailHost !== '' && mailUser !== '' && mailPort > 0;
|
|
41
42
|
return {
|
|
42
43
|
[this.key]: {
|