@breadstone/archipel-platform-mailing 0.0.33 → 0.0.35

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 (76) hide show
  1. package/package.json +75 -40
  2. package/src/MailModule.d.ts +75 -0
  3. package/src/MailModule.js +80 -0
  4. package/src/{services/strategies → delivering/strategies/logger}/LogDeliveryStrategy.d.ts +2 -2
  5. package/src/{services/strategies → delivering/strategies/logger}/LogDeliveryStrategy.js +1 -1
  6. package/src/delivering/strategies/logger/index.d.ts +1 -0
  7. package/src/{logger → delivering/strategies/logger}/index.js +1 -1
  8. package/src/{services/strategies → delivering/strategies/mailgun}/MailgunDeliveryStrategy.d.ts +2 -2
  9. package/src/{services/strategies → delivering/strategies/mailgun}/MailgunDeliveryStrategy.js +3 -3
  10. package/src/delivering/strategies/mailgun/index.d.ts +2 -0
  11. package/src/{mailgun → delivering/strategies/mailgun}/index.js +3 -3
  12. package/src/{services/strategies → delivering/strategies/postmark}/PostmarkDeliveryStrategy.d.ts +2 -2
  13. package/src/{services/strategies → delivering/strategies/postmark}/PostmarkDeliveryStrategy.js +3 -3
  14. package/src/delivering/strategies/postmark/index.d.ts +2 -0
  15. package/src/{postmark → delivering/strategies/postmark}/index.js +3 -3
  16. package/src/{services/strategies → delivering/strategies/resend}/ResendDeliveryStrategy.d.ts +2 -2
  17. package/src/{services/strategies → delivering/strategies/resend}/ResendDeliveryStrategy.js +3 -3
  18. package/src/delivering/strategies/resend/index.d.ts +2 -0
  19. package/src/{resend → delivering/strategies/resend}/index.js +3 -3
  20. package/src/{services/strategies → delivering/strategies/sendgrid}/SendGridDeliveryStrategy.d.ts +2 -2
  21. package/src/{services/strategies → delivering/strategies/sendgrid}/SendGridDeliveryStrategy.js +3 -3
  22. package/src/delivering/strategies/sendgrid/index.d.ts +2 -0
  23. package/src/{sendgrid → delivering/strategies/sendgrid}/index.js +3 -3
  24. package/src/{services/strategies → delivering/strategies/smtp}/SmtpDeliveryStrategy.d.ts +2 -2
  25. package/src/{services/strategies → delivering/strategies/smtp}/SmtpDeliveryStrategy.js +3 -3
  26. package/src/{smtp → delivering/strategies/smtp}/index.d.ts +1 -1
  27. package/src/{smtp → delivering/strategies/smtp}/index.js +3 -3
  28. package/src/env.d.ts +0 -4
  29. package/src/env.js +3 -13
  30. package/src/events/IMailEvents.d.ts +12 -1
  31. package/src/events/listeners/MailEventSubscriber.js +2 -1
  32. package/src/index.d.ts +5 -5
  33. package/src/index.js +5 -4
  34. package/src/models/IMailTemplateVariants.d.ts +10 -0
  35. package/src/models/IMailTemplateVariants.js +3 -0
  36. package/src/models/MailTemplateFormat.d.ts +6 -0
  37. package/src/models/MailTemplateFormat.js +3 -0
  38. package/src/services/MailService.d.ts +8 -4
  39. package/src/services/MailService.js +15 -8
  40. package/src/templating/MailTemplateEngine.d.ts +10 -1
  41. package/src/templating/MailTemplateEngine.js +17 -7
  42. package/src/templating/strategies/abstracts/TemplateFetchStrategyBase.d.ts +2 -4
  43. package/src/templating/strategies/{BlobTemplateFetchStrategy.d.ts → blob/BlobTemplateFetchStrategy.d.ts} +2 -2
  44. package/src/templating/strategies/{BlobTemplateFetchStrategy.js → blob/BlobTemplateFetchStrategy.js} +1 -1
  45. package/src/templating/strategies/blob/index.d.ts +1 -0
  46. package/src/templating/strategies/blob/index.js +6 -0
  47. package/src/templating/strategies/{DatabaseTemplateFetchStrategy.d.ts → database/DatabaseTemplateFetchStrategy.d.ts} +3 -3
  48. package/src/templating/strategies/{DatabaseTemplateFetchStrategy.js → database/DatabaseTemplateFetchStrategy.js} +5 -2
  49. package/src/templating/strategies/database/index.d.ts +1 -0
  50. package/src/templating/strategies/database/index.js +6 -0
  51. package/src/templating/strategies/file/FileTemplateFetchStrategy.d.ts +23 -0
  52. package/src/templating/strategies/{FileTemplateFetchStrategy.js → file/FileTemplateFetchStrategy.js} +11 -16
  53. package/src/templating/strategies/file/index.d.ts +1 -0
  54. package/src/templating/strategies/file/index.js +6 -0
  55. package/src/{MailTokens.d.ts → tokens/MailTokens.d.ts} +1 -11
  56. package/src/{MailTokens.js → tokens/MailTokens.js} +2 -1
  57. package/src/logger/index.d.ts +0 -1
  58. package/src/mailgun/index.d.ts +0 -2
  59. package/src/postmark/index.d.ts +0 -2
  60. package/src/resend/index.d.ts +0 -2
  61. package/src/sendgrid/index.d.ts +0 -2
  62. package/src/templating/strategies/FileTemplateFetchStrategy.d.ts +0 -25
  63. package/src/tokens/MailModule.d.ts +0 -54
  64. package/src/tokens/MailModule.js +0 -125
  65. /package/src/{services → delivering}/strategies/abstracts/DeliveryStrategyBase.d.ts +0 -0
  66. /package/src/{services → delivering}/strategies/abstracts/DeliveryStrategyBase.js +0 -0
  67. /package/src/{mailgun → delivering/strategies/mailgun}/env.d.ts +0 -0
  68. /package/src/{mailgun → delivering/strategies/mailgun}/env.js +0 -0
  69. /package/src/{postmark → delivering/strategies/postmark}/env.d.ts +0 -0
  70. /package/src/{postmark → delivering/strategies/postmark}/env.js +0 -0
  71. /package/src/{resend → delivering/strategies/resend}/env.d.ts +0 -0
  72. /package/src/{resend → delivering/strategies/resend}/env.js +0 -0
  73. /package/src/{sendgrid → delivering/strategies/sendgrid}/env.d.ts +0 -0
  74. /package/src/{sendgrid → delivering/strategies/sendgrid}/env.js +0 -0
  75. /package/src/{smtp → delivering/strategies/smtp}/env.d.ts +0 -0
  76. /package/src/{smtp → delivering/strategies/smtp}/env.js +0 -0
@@ -1,54 +0,0 @@
1
- import type { IConfigRegistryEntry } from '@breadstone/archipel-platform-configuration';
2
- import { type DynamicModule, type Provider } from '@nestjs/common';
3
- import type { IMailTemplateRepository } from '../ports/IMailTemplateRepository';
4
- /**
5
- * Options for configuring the {@link MailModule}.
6
- *
7
- * @public
8
- */
9
- export interface IMailModuleOptions {
10
- /**
11
- * Whether to register the module globally.
12
- * Defaults to `true`.
13
- */
14
- readonly isGlobal?: boolean;
15
- /**
16
- * Additional or overriding configuration entries.
17
- * Merged with the platform default entries.
18
- */
19
- readonly configEntries?: ReadonlyArray<Omit<IConfigRegistryEntry, 'module'>>;
20
- /**
21
- * Provider for the `IMailTemplateRepository` port.
22
- * Required when `MAIL_TEMPLATE_STRATEGY` is set to `'database'`.
23
- *
24
- * Example:
25
- * ```typescript
26
- * MailModule.register({
27
- * templateRepositoryProvider: {
28
- * provide: MAIL_TEMPLATE_REPOSITORY_TOKEN,
29
- * useClass: PrismaMailTemplateRepository,
30
- * }
31
- * })
32
- * ```
33
- */
34
- readonly templateRepositoryProvider?: Provider<IMailTemplateRepository>;
35
- }
36
- /**
37
- * Represents the mail module.
38
- *
39
- * Delivery and template strategies are resolved at runtime based on
40
- * configuration keys `MAIL_DELIVERY_STRATEGY` and `MAIL_TEMPLATE_STRATEGY`.
41
- *
42
- * @public
43
- */
44
- export declare class MailModule {
45
- /**
46
- * Registers the mail module with optional configuration.
47
- *
48
- * @param options - Module registration options.
49
- * @returns A configured `DynamicModule`.
50
- *
51
- * @public
52
- */
53
- static register(options?: IMailModuleOptions): DynamicModule;
54
- }
@@ -1,125 +0,0 @@
1
- "use strict";
2
- // #region Imports
3
- var MailModule_1;
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.MailModule = void 0;
6
- const tslib_1 = require("tslib");
7
- const archipel_platform_blob_storage_1 = require("@breadstone/archipel-platform-blob-storage");
8
- const archipel_platform_configuration_1 = require("@breadstone/archipel-platform-configuration");
9
- const archipel_platform_core_1 = require("@breadstone/archipel-platform-core");
10
- const archipel_platform_resources_1 = require("@breadstone/archipel-platform-resources");
11
- const common_1 = require("@nestjs/common");
12
- const env_1 = require("../env");
13
- const MailEventSubscriber_1 = require("../events/listeners/MailEventSubscriber");
14
- const MailTokens_1 = require("../MailTokens");
15
- const MailService_1 = require("../services/MailService");
16
- const MailVerificationService_1 = require("../services/MailVerificationService");
17
- const SmtpConnectionVerifier_1 = require("../services/SmtpConnectionVerifier");
18
- const MailTemplateEngine_1 = require("../templating/MailTemplateEngine");
19
- /**
20
- * Represents the mail module.
21
- *
22
- * Delivery and template strategies are resolved at runtime based on
23
- * configuration keys `MAIL_DELIVERY_STRATEGY` and `MAIL_TEMPLATE_STRATEGY`.
24
- *
25
- * @public
26
- */
27
- let MailModule = MailModule_1 = class MailModule {
28
- /**
29
- * Registers the mail module with optional configuration.
30
- *
31
- * @param options - Module registration options.
32
- * @returns A configured `DynamicModule`.
33
- *
34
- * @public
35
- */
36
- static register(options) {
37
- const isGlobal = options?.isGlobal ?? true;
38
- const configEntries = options?.configEntries ?? env_1.PLATFORM_MAILING_CONFIG_ENTRIES;
39
- const additionalProviders = [];
40
- if (options?.templateRepositoryProvider) {
41
- additionalProviders.push(options.templateRepositoryProvider);
42
- }
43
- return {
44
- module: MailModule_1,
45
- global: isGlobal,
46
- imports: [archipel_platform_configuration_1.ConfigModule.register('platform-mailing', configEntries), archipel_platform_blob_storage_1.BlobModule, archipel_platform_core_1.EventModule],
47
- providers: [
48
- ...additionalProviders,
49
- {
50
- provide: MailTokens_1.MAIL_TEMPLATE_FETCH_STRATEGY_TOKEN,
51
- useFactory: async (configService, blobService, resourceManager, ...extra) => {
52
- const templateStrategy = configService.get(env_1.MAIL_TEMPLATE_STRATEGY.key);
53
- if (templateStrategy === 'file') {
54
- const { FileTemplateFetchStrategy } = await Promise.resolve().then(() => tslib_1.__importStar(require('../templating/strategies/FileTemplateFetchStrategy')));
55
- return new FileTemplateFetchStrategy(resourceManager);
56
- }
57
- if (templateStrategy === 'blob') {
58
- const { BlobTemplateFetchStrategy } = await Promise.resolve().then(() => tslib_1.__importStar(require('../templating/strategies/BlobTemplateFetchStrategy')));
59
- return new BlobTemplateFetchStrategy(blobService);
60
- }
61
- if (templateStrategy === 'database') {
62
- const repository = extra[0];
63
- if (!repository) {
64
- throw new Error("Template strategy 'database' requires a templateRepositoryProvider in MailModule.register() options.");
65
- }
66
- const { DatabaseTemplateFetchStrategy } = await Promise.resolve().then(() => tslib_1.__importStar(require('../templating/strategies/DatabaseTemplateFetchStrategy')));
67
- return new DatabaseTemplateFetchStrategy(repository);
68
- }
69
- throw new Error(`Unknown template strategy: ${templateStrategy}`);
70
- },
71
- inject: [
72
- archipel_platform_configuration_1.ConfigService,
73
- archipel_platform_blob_storage_1.BlobService,
74
- archipel_platform_resources_1.ResourceManager,
75
- ...(options?.templateRepositoryProvider ? [MailTokens_1.MAIL_TEMPLATE_REPOSITORY_TOKEN] : []),
76
- ],
77
- },
78
- {
79
- provide: MailTokens_1.MAIL_DELIVERY_STRATEGY_TOKEN,
80
- useFactory: async (configService) => {
81
- const deliveryStrategy = configService.get(env_1.MAIL_DELIVERY_STRATEGY.key);
82
- if (deliveryStrategy === 'log') {
83
- const { LogDeliveryStrategy } = await Promise.resolve().then(() => tslib_1.__importStar(require('../services/strategies/LogDeliveryStrategy')));
84
- return new LogDeliveryStrategy();
85
- }
86
- if (deliveryStrategy === 'smtp') {
87
- const { SmtpDeliveryStrategy } = await Promise.resolve().then(() => tslib_1.__importStar(require('../services/strategies/SmtpDeliveryStrategy')));
88
- return new SmtpDeliveryStrategy(configService);
89
- }
90
- if (deliveryStrategy === 'postmark') {
91
- const { PostmarkDeliveryStrategy } = await Promise.resolve().then(() => tslib_1.__importStar(require('../services/strategies/PostmarkDeliveryStrategy')));
92
- return new PostmarkDeliveryStrategy(configService);
93
- }
94
- if (deliveryStrategy === 'resend') {
95
- const { ResendDeliveryStrategy } = await Promise.resolve().then(() => tslib_1.__importStar(require('../services/strategies/ResendDeliveryStrategy')));
96
- return new ResendDeliveryStrategy(configService);
97
- }
98
- if (deliveryStrategy === 'sendgrid') {
99
- const { SendGridDeliveryStrategy } = await Promise.resolve().then(() => tslib_1.__importStar(require('../services/strategies/SendGridDeliveryStrategy')));
100
- return new SendGridDeliveryStrategy(configService);
101
- }
102
- if (deliveryStrategy === 'mailgun') {
103
- const { MailgunDeliveryStrategy } = await Promise.resolve().then(() => tslib_1.__importStar(require('../services/strategies/MailgunDeliveryStrategy')));
104
- return new MailgunDeliveryStrategy(configService);
105
- }
106
- throw new Error(`Unknown delivery strategy: ${deliveryStrategy}`);
107
- },
108
- inject: [archipel_platform_configuration_1.ConfigService],
109
- },
110
- archipel_platform_core_1.ContentTemplateEngine,
111
- MailService_1.MailService,
112
- MailTemplateEngine_1.MailTemplateEngine,
113
- MailVerificationService_1.MailVerificationService,
114
- SmtpConnectionVerifier_1.SmtpConnectionVerifier,
115
- MailEventSubscriber_1.MailEventSubscriber,
116
- ],
117
- exports: [MailService_1.MailService, MailVerificationService_1.MailVerificationService, SmtpConnectionVerifier_1.SmtpConnectionVerifier],
118
- };
119
- }
120
- };
121
- exports.MailModule = MailModule;
122
- exports.MailModule = MailModule = MailModule_1 = tslib_1.__decorate([
123
- (0, common_1.Module)({})
124
- ], MailModule);
125
- //# sourceMappingURL=MailModule.js.map
File without changes