@minimaltech/node-infra 0.5.10-2 → 0.5.10-21

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 (189) hide show
  1. package/configs/tsconfig.common.json +4 -7
  2. package/dist/base/controllers/crud.controller.d.ts +1 -0
  3. package/dist/base/controllers/crud.controller.d.ts.map +1 -1
  4. package/dist/base/controllers/crud.controller.js +17 -7
  5. package/dist/base/controllers/crud.controller.js.map +1 -1
  6. package/dist/base/repositories/base.repository.d.ts +17 -0
  7. package/dist/base/repositories/base.repository.d.ts.map +1 -1
  8. package/dist/base/repositories/base.repository.js +30 -0
  9. package/dist/base/repositories/base.repository.js.map +1 -1
  10. package/dist/base/repositories/relations/has-many-polymorphic/factory.d.ts +3 -3
  11. package/dist/base/repositories/relations/has-many-polymorphic/factory.d.ts.map +1 -1
  12. package/dist/base/repositories/relations/has-many-polymorphic/types.d.ts +2 -2
  13. package/dist/base/repositories/relations/has-many-polymorphic/types.d.ts.map +1 -1
  14. package/dist/base/repositories/relations/has-many-through-polymorphic/decorator.d.ts +12 -0
  15. package/dist/base/repositories/relations/has-many-through-polymorphic/decorator.d.ts.map +1 -0
  16. package/dist/base/repositories/relations/has-many-through-polymorphic/decorator.js +25 -0
  17. package/dist/base/repositories/relations/has-many-through-polymorphic/decorator.js.map +1 -0
  18. package/dist/base/repositories/relations/has-many-through-polymorphic/factory.d.ts +39 -0
  19. package/dist/base/repositories/relations/has-many-through-polymorphic/factory.d.ts.map +1 -0
  20. package/dist/base/repositories/relations/has-many-through-polymorphic/factory.js +194 -0
  21. package/dist/base/repositories/relations/has-many-through-polymorphic/factory.js.map +1 -0
  22. package/dist/base/repositories/relations/has-many-through-polymorphic/index.d.ts +4 -0
  23. package/dist/base/repositories/relations/has-many-through-polymorphic/index.d.ts.map +1 -0
  24. package/dist/base/repositories/relations/has-many-through-polymorphic/index.js +20 -0
  25. package/dist/base/repositories/relations/has-many-through-polymorphic/index.js.map +1 -0
  26. package/dist/base/repositories/relations/has-many-through-polymorphic/types.d.ts +11 -0
  27. package/dist/base/repositories/relations/has-many-through-polymorphic/types.d.ts.map +1 -0
  28. package/dist/base/repositories/relations/has-many-through-polymorphic/types.js +3 -0
  29. package/dist/base/repositories/relations/has-many-through-polymorphic/types.js.map +1 -0
  30. package/dist/base/repositories/relations/index.d.ts +1 -0
  31. package/dist/base/repositories/relations/index.d.ts.map +1 -1
  32. package/dist/base/repositories/relations/index.js +1 -0
  33. package/dist/base/repositories/relations/index.js.map +1 -1
  34. package/dist/base/repositories/searchable-tz-crud.repository.d.ts +7 -0
  35. package/dist/base/repositories/searchable-tz-crud.repository.d.ts.map +1 -1
  36. package/dist/base/repositories/searchable-tz-crud.repository.js +77 -23
  37. package/dist/base/repositories/searchable-tz-crud.repository.js.map +1 -1
  38. package/dist/base/repositories/tz-crud.repository.d.ts +4 -1
  39. package/dist/base/repositories/tz-crud.repository.d.ts.map +1 -1
  40. package/dist/base/repositories/tz-crud.repository.js +2 -2
  41. package/dist/base/repositories/tz-crud.repository.js.map +1 -1
  42. package/dist/components/authenticate/common/types.d.ts +9 -1
  43. package/dist/components/authenticate/common/types.d.ts.map +1 -1
  44. package/dist/components/authenticate/common/types.js +50 -9
  45. package/dist/components/authenticate/common/types.js.map +1 -1
  46. package/dist/components/authenticate/component.d.ts.map +1 -1
  47. package/dist/components/authenticate/component.js +1 -0
  48. package/dist/components/authenticate/component.js.map +1 -1
  49. package/dist/components/authenticate/controllers/oauth2.controller.d.ts +5 -3
  50. package/dist/components/authenticate/controllers/oauth2.controller.d.ts.map +1 -1
  51. package/dist/components/authenticate/controllers/oauth2.controller.js +44 -13
  52. package/dist/components/authenticate/controllers/oauth2.controller.js.map +1 -1
  53. package/dist/components/authenticate/index.d.ts +1 -0
  54. package/dist/components/authenticate/index.d.ts.map +1 -1
  55. package/dist/components/authenticate/index.js +1 -0
  56. package/dist/components/authenticate/index.js.map +1 -1
  57. package/dist/components/authenticate/services/oauth2.service.d.ts +4 -1
  58. package/dist/components/authenticate/services/oauth2.service.d.ts.map +1 -1
  59. package/dist/components/authenticate/services/oauth2.service.js +18 -7
  60. package/dist/components/authenticate/services/oauth2.service.js.map +1 -1
  61. package/dist/components/index.d.ts +1 -0
  62. package/dist/components/index.d.ts.map +1 -1
  63. package/dist/components/index.js +1 -0
  64. package/dist/components/index.js.map +1 -1
  65. package/dist/components/mail/common/constants.d.ts +26 -0
  66. package/dist/components/mail/common/constants.d.ts.map +1 -0
  67. package/dist/components/mail/common/constants.js +37 -0
  68. package/dist/components/mail/common/constants.js.map +1 -0
  69. package/dist/components/mail/common/index.d.ts +4 -0
  70. package/dist/components/mail/common/index.d.ts.map +1 -0
  71. package/dist/components/mail/common/index.js +20 -0
  72. package/dist/components/mail/common/index.js.map +1 -0
  73. package/dist/components/mail/common/keys.d.ts +17 -0
  74. package/dist/components/mail/common/keys.d.ts.map +1 -0
  75. package/dist/components/mail/common/keys.js +24 -0
  76. package/dist/components/mail/common/keys.js.map +1 -0
  77. package/dist/components/mail/common/types.d.ts +168 -0
  78. package/dist/components/mail/common/types.d.ts.map +1 -0
  79. package/dist/components/mail/common/types.js +10 -0
  80. package/dist/components/mail/common/types.js.map +1 -0
  81. package/dist/components/mail/component.d.ts +12 -0
  82. package/dist/components/mail/component.d.ts.map +1 -0
  83. package/dist/components/mail/component.js +90 -0
  84. package/dist/components/mail/component.js.map +1 -0
  85. package/dist/components/mail/controllers/index.d.ts +2 -0
  86. package/dist/components/mail/controllers/index.d.ts.map +1 -0
  87. package/dist/components/mail/controllers/index.js +18 -0
  88. package/dist/components/mail/controllers/index.js.map +1 -0
  89. package/dist/components/mail/controllers/mail.controller.d.ts +24 -0
  90. package/dist/components/mail/controllers/mail.controller.d.ts.map +1 -0
  91. package/dist/components/mail/controllers/mail.controller.js +330 -0
  92. package/dist/components/mail/controllers/mail.controller.js.map +1 -0
  93. package/dist/components/mail/helpers/executors/bullmq-executor.helper.d.ts +48 -0
  94. package/dist/components/mail/helpers/executors/bullmq-executor.helper.d.ts.map +1 -0
  95. package/dist/components/mail/helpers/executors/bullmq-executor.helper.js +159 -0
  96. package/dist/components/mail/helpers/executors/bullmq-executor.helper.js.map +1 -0
  97. package/dist/components/mail/helpers/executors/direct-executor.helper.d.ts +14 -0
  98. package/dist/components/mail/helpers/executors/direct-executor.helper.d.ts.map +1 -0
  99. package/dist/components/mail/helpers/executors/direct-executor.helper.js +27 -0
  100. package/dist/components/mail/helpers/executors/direct-executor.helper.js.map +1 -0
  101. package/dist/components/mail/helpers/executors/index.d.ts +4 -0
  102. package/dist/components/mail/helpers/executors/index.d.ts.map +1 -0
  103. package/dist/components/mail/helpers/executors/index.js +20 -0
  104. package/dist/components/mail/helpers/executors/index.js.map +1 -0
  105. package/dist/components/mail/helpers/executors/internal-queue-executor.helper.d.ts +22 -0
  106. package/dist/components/mail/helpers/executors/internal-queue-executor.helper.d.ts.map +1 -0
  107. package/dist/components/mail/helpers/executors/internal-queue-executor.helper.js +103 -0
  108. package/dist/components/mail/helpers/executors/internal-queue-executor.helper.js.map +1 -0
  109. package/dist/components/mail/helpers/index.d.ts +3 -0
  110. package/dist/components/mail/helpers/index.d.ts.map +1 -0
  111. package/dist/components/mail/helpers/index.js +19 -0
  112. package/dist/components/mail/helpers/index.js.map +1 -0
  113. package/dist/components/mail/helpers/transports/index.d.ts +3 -0
  114. package/dist/components/mail/helpers/transports/index.d.ts.map +1 -0
  115. package/dist/components/mail/helpers/transports/index.js +19 -0
  116. package/dist/components/mail/helpers/transports/index.js.map +1 -0
  117. package/dist/components/mail/helpers/transports/mailgun-transport.helper.d.ts +11 -0
  118. package/dist/components/mail/helpers/transports/mailgun-transport.helper.d.ts.map +1 -0
  119. package/dist/components/mail/helpers/transports/mailgun-transport.helper.js +88 -0
  120. package/dist/components/mail/helpers/transports/mailgun-transport.helper.js.map +1 -0
  121. package/dist/components/mail/helpers/transports/nodemailer-transport.helper.d.ts +11 -0
  122. package/dist/components/mail/helpers/transports/nodemailer-transport.helper.d.ts.map +1 -0
  123. package/dist/components/mail/helpers/transports/nodemailer-transport.helper.js +67 -0
  124. package/dist/components/mail/helpers/transports/nodemailer-transport.helper.js.map +1 -0
  125. package/dist/components/mail/index.d.ts +8 -0
  126. package/dist/components/mail/index.d.ts.map +1 -0
  127. package/dist/components/mail/index.js +24 -0
  128. package/dist/components/mail/index.js.map +1 -0
  129. package/dist/components/mail/providers/index.d.ts +3 -0
  130. package/dist/components/mail/providers/index.d.ts.map +1 -0
  131. package/dist/components/mail/providers/index.js +19 -0
  132. package/dist/components/mail/providers/index.js.map +1 -0
  133. package/dist/components/mail/providers/mail-queue-executor.provider.d.ts +9 -0
  134. package/dist/components/mail/providers/mail-queue-executor.provider.d.ts.map +1 -0
  135. package/dist/components/mail/providers/mail-queue-executor.provider.js +41 -0
  136. package/dist/components/mail/providers/mail-queue-executor.provider.js.map +1 -0
  137. package/dist/components/mail/providers/mail-transport.provider.d.ts +15 -0
  138. package/dist/components/mail/providers/mail-transport.provider.d.ts.map +1 -0
  139. package/dist/components/mail/providers/mail-transport.provider.js +93 -0
  140. package/dist/components/mail/providers/mail-transport.provider.js.map +1 -0
  141. package/dist/components/mail/services/generator.service.d.ts +14 -0
  142. package/dist/components/mail/services/generator.service.d.ts.map +1 -0
  143. package/dist/components/mail/services/generator.service.js +70 -0
  144. package/dist/components/mail/services/generator.service.js.map +1 -0
  145. package/dist/components/mail/services/index.d.ts +4 -0
  146. package/dist/components/mail/services/index.d.ts.map +1 -0
  147. package/dist/components/mail/services/index.js +20 -0
  148. package/dist/components/mail/services/index.js.map +1 -0
  149. package/dist/components/mail/services/mail.service.d.ts +23 -0
  150. package/dist/components/mail/services/mail.service.d.ts.map +1 -0
  151. package/dist/components/mail/services/mail.service.js +178 -0
  152. package/dist/components/mail/services/mail.service.js.map +1 -0
  153. package/dist/components/mail/services/template-engine.service.d.ts +36 -0
  154. package/dist/components/mail/services/template-engine.service.d.ts.map +1 -0
  155. package/dist/components/mail/services/template-engine.service.js +126 -0
  156. package/dist/components/mail/services/template-engine.service.js.map +1 -0
  157. package/dist/components/mail/utilities/index.d.ts +3 -0
  158. package/dist/components/mail/utilities/index.d.ts.map +1 -0
  159. package/dist/components/mail/utilities/index.js +19 -0
  160. package/dist/components/mail/utilities/index.js.map +1 -0
  161. package/dist/components/mail/utilities/type.utility.d.ts +5 -0
  162. package/dist/components/mail/utilities/type.utility.d.ts.map +1 -0
  163. package/dist/components/mail/utilities/type.utility.js +34 -0
  164. package/dist/components/mail/utilities/type.utility.js.map +1 -0
  165. package/dist/components/mail/utilities/verification.utility.d.ts +3 -0
  166. package/dist/components/mail/utilities/verification.utility.d.ts.map +1 -0
  167. package/dist/components/mail/utilities/verification.utility.js +11 -0
  168. package/dist/components/mail/utilities/verification.utility.js.map +1 -0
  169. package/dist/helpers/queue/mqtt.helper.d.ts +4 -0
  170. package/dist/helpers/queue/mqtt.helper.d.ts.map +1 -1
  171. package/dist/helpers/queue/mqtt.helper.js +18 -0
  172. package/dist/helpers/queue/mqtt.helper.js.map +1 -1
  173. package/dist/helpers/testing/describe.d.ts +1 -1
  174. package/dist/helpers/testing/describe.d.ts.map +1 -1
  175. package/dist/helpers/testing/describe.js +9 -8
  176. package/dist/helpers/testing/describe.js.map +1 -1
  177. package/dist/helpers/testing/test-handler.d.ts +1 -1
  178. package/dist/helpers/testing/test-handler.d.ts.map +1 -1
  179. package/dist/helpers/testing/test-handler.js +1 -1
  180. package/dist/helpers/testing/test-handler.js.map +1 -1
  181. package/dist/utilities/index.d.ts +1 -0
  182. package/dist/utilities/index.d.ts.map +1 -1
  183. package/dist/utilities/index.js +1 -0
  184. package/dist/utilities/index.js.map +1 -1
  185. package/dist/utilities/module.utility.d.ts +5 -0
  186. package/dist/utilities/module.utility.d.ts.map +1 -0
  187. package/dist/utilities/module.utility.js +21 -0
  188. package/dist/utilities/module.utility.js.map +1 -0
  189. package/package.json +31 -24
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MailTransportProvider = void 0;
4
+ const base_provider_1 = require("../../../base/base.provider");
5
+ const mail_1 = require("../../../components/mail");
6
+ const helpers_1 = require("../../../components/mail/helpers");
7
+ const utilities_1 = require("../../../utilities");
8
+ class MailTransportProvider extends base_provider_1.BaseProvider {
9
+ constructor() {
10
+ super({ scope: MailTransportProvider.name });
11
+ }
12
+ value() {
13
+ return (options) => {
14
+ this.logger.info('[value] Creating mail transport for provider: %s', options.provider);
15
+ switch (options.provider) {
16
+ case mail_1.EMailProvider.NODEMAILER: {
17
+ return this.createNodemailerTransport(options);
18
+ }
19
+ case mail_1.EMailProvider.MAILGUN: {
20
+ return this.createMailgunTransport(options);
21
+ }
22
+ case mail_1.EMailProvider.CUSTOM: {
23
+ return this.createCustomTransport(options);
24
+ }
25
+ default: {
26
+ throw (0, utilities_1.getError)({
27
+ statusCode: 500,
28
+ messageCode: mail_1.MailErrorCodes.INVALID_CONFIGURATION,
29
+ message: `Unsupported mail provider: ${options.provider}`,
30
+ });
31
+ }
32
+ }
33
+ };
34
+ }
35
+ createNodemailerTransport(options) {
36
+ if (this.isNodemailerOptions(options)) {
37
+ this.logger.info('[createNodemailerTransport] Initializing Nodemailer transport');
38
+ return new helpers_1.NodemailerTransportHelper(options.config);
39
+ }
40
+ throw (0, utilities_1.getError)({
41
+ statusCode: 500,
42
+ messageCode: mail_1.MailErrorCodes.INVALID_CONFIGURATION,
43
+ message: 'Invalid Nodemailer configuration',
44
+ });
45
+ }
46
+ createMailgunTransport(options) {
47
+ if (this.isMailgunOptions(options)) {
48
+ this.logger.info('[createMailgunTransport] Initializing Mailgun transport');
49
+ return new helpers_1.MailgunTransportHelper(options.config);
50
+ }
51
+ throw (0, utilities_1.getError)({
52
+ statusCode: 500,
53
+ messageCode: mail_1.MailErrorCodes.INVALID_CONFIGURATION,
54
+ message: 'Invalid Mailgun configuration',
55
+ });
56
+ }
57
+ createCustomTransport(options) {
58
+ if (!this.isCustomOptions(options)) {
59
+ throw (0, utilities_1.getError)({
60
+ statusCode: 500,
61
+ messageCode: mail_1.MailErrorCodes.INVALID_CONFIGURATION,
62
+ message: 'Invalid custom mail provider configuration',
63
+ });
64
+ }
65
+ if (!(0, mail_1.isMailTransport)(options.config)) {
66
+ const missingMethods = [];
67
+ if (typeof options.config.send !== 'function') {
68
+ missingMethods.push('send');
69
+ }
70
+ if (typeof options.config.verify !== 'function') {
71
+ missingMethods.push('verify');
72
+ }
73
+ throw (0, utilities_1.getError)({
74
+ statusCode: 500,
75
+ messageCode: mail_1.MailErrorCodes.INVALID_CONFIGURATION,
76
+ message: `Custom mail provider must implement IMailTransport interface. Missing methods: ${missingMethods.join(', ')}`,
77
+ });
78
+ }
79
+ this.logger.info('[createCustomTransport] Using custom mail transport');
80
+ return options.config;
81
+ }
82
+ isNodemailerOptions(options) {
83
+ return options.provider === mail_1.EMailProvider.NODEMAILER && 'config' in options;
84
+ }
85
+ isMailgunOptions(options) {
86
+ return options.provider === mail_1.EMailProvider.MAILGUN && 'config' in options;
87
+ }
88
+ isCustomOptions(options) {
89
+ return options.provider === mail_1.EMailProvider.CUSTOM && 'config' in options;
90
+ }
91
+ }
92
+ exports.MailTransportProvider = MailTransportProvider;
93
+ //# sourceMappingURL=mail-transport.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-transport.provider.js","sourceRoot":"","sources":["../../../../src/components/mail/providers/mail-transport.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { IVerificationCodeGenerator, IVerificationData, IVerificationDataGenerator, IVerificationGenerationOptions, IVerificationTokenGenerator } from '../../../components/mail';
2
+ export declare class NumericCodeGenerator implements IVerificationCodeGenerator {
3
+ generateCode(length: number): string;
4
+ }
5
+ export declare class RandomTokenGenerator implements IVerificationTokenGenerator {
6
+ generateToken(bytes: number): string;
7
+ }
8
+ export declare class DefaultVerificationDataGenerator implements IVerificationDataGenerator {
9
+ private codeGenerator;
10
+ private tokenGenerator;
11
+ constructor(codeGenerator: IVerificationCodeGenerator, tokenGenerator: IVerificationTokenGenerator);
12
+ generateVerificationData(options: IVerificationGenerationOptions): IVerificationData;
13
+ }
14
+ //# sourceMappingURL=generator.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.service.d.ts","sourceRoot":"","sources":["../../../../src/components/mail/services/generator.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,0BAA0B,EAC1B,iBAAiB,EACjB,0BAA0B,EAC1B,8BAA8B,EAC9B,2BAA2B,EAE5B,MAAM,mBAAmB,CAAC;AAI3B,qBACa,oBAAqB,YAAW,0BAA0B;IACrE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAKrC;AAED,qBACa,oBAAqB,YAAW,2BAA2B;IACtE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAGrC;AAED,qBACa,gCAAiC,YAAW,0BAA0B;IAG/E,OAAO,CAAC,aAAa;IAGrB,OAAO,CAAC,cAAc;gBAHd,aAAa,EAAE,0BAA0B,EAGzC,cAAc,EAAE,2BAA2B;IAGrD,wBAAwB,CAAC,OAAO,EAAE,8BAA8B,GAAG,iBAAiB;CAkBrF"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.DefaultVerificationDataGenerator = exports.RandomTokenGenerator = exports.NumericCodeGenerator = void 0;
19
+ const mail_1 = require("../../../components/mail");
20
+ const lb_core_1 = require("@minimaltech/node-infra/lb-core");
21
+ const node_crypto_1 = __importDefault(require("node:crypto"));
22
+ let NumericCodeGenerator = class NumericCodeGenerator {
23
+ generateCode(length) {
24
+ const max = Math.pow(10, length);
25
+ const code = node_crypto_1.default.randomInt(0, max);
26
+ return code.toString().padStart(length, '0');
27
+ }
28
+ };
29
+ exports.NumericCodeGenerator = NumericCodeGenerator;
30
+ exports.NumericCodeGenerator = NumericCodeGenerator = __decorate([
31
+ (0, lb_core_1.injectable)()
32
+ ], NumericCodeGenerator);
33
+ let RandomTokenGenerator = class RandomTokenGenerator {
34
+ generateToken(bytes) {
35
+ return node_crypto_1.default.randomBytes(bytes).toString('base64url');
36
+ }
37
+ };
38
+ exports.RandomTokenGenerator = RandomTokenGenerator;
39
+ exports.RandomTokenGenerator = RandomTokenGenerator = __decorate([
40
+ (0, lb_core_1.injectable)()
41
+ ], RandomTokenGenerator);
42
+ let DefaultVerificationDataGenerator = class DefaultVerificationDataGenerator {
43
+ constructor(codeGenerator, tokenGenerator) {
44
+ this.codeGenerator = codeGenerator;
45
+ this.tokenGenerator = tokenGenerator;
46
+ }
47
+ generateVerificationData(options) {
48
+ const code = this.codeGenerator.generateCode(options.codeLength);
49
+ const token = this.tokenGenerator.generateToken(options.tokenBytes);
50
+ const now = new Date().toISOString();
51
+ return {
52
+ verificationCode: code,
53
+ codeGeneratedAt: now,
54
+ codeExpiresAt: (0, mail_1.getExpiryTime)(options.codeExpiryMinutes).toISOString(),
55
+ codeAttempts: 0,
56
+ verificationToken: token,
57
+ tokenGeneratedAt: now,
58
+ tokenExpiresAt: (0, mail_1.getExpiryTimeInHours)(options.tokenExpiryHours).toISOString(),
59
+ lastCodeSentAt: now,
60
+ };
61
+ }
62
+ };
63
+ exports.DefaultVerificationDataGenerator = DefaultVerificationDataGenerator;
64
+ exports.DefaultVerificationDataGenerator = DefaultVerificationDataGenerator = __decorate([
65
+ (0, lb_core_1.injectable)(),
66
+ __param(0, (0, lb_core_1.inject)(mail_1.MailKeys.MAIL_VERIFICATION_CODE_GENERATOR)),
67
+ __param(1, (0, lb_core_1.inject)(mail_1.MailKeys.MAIL_VERIFICATION_TOKEN_GENERATOR)),
68
+ __metadata("design:paramtypes", [Object, Object])
69
+ ], DefaultVerificationDataGenerator);
70
+ //# sourceMappingURL=generator.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.service.js","sourceRoot":"","sources":["../../../../src/components/mail/services/generator.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,4CAS2B;AAC3B,6DAAqE;AACrE,8DAAiC;AAG1B,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAAY,CAAC,MAAc;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,qBAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;CACF,CAAA;AANY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,oBAAU,GAAE;GACA,oBAAoB,CAMhC;AAGM,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,aAAa,CAAC,KAAa;QACzB,OAAO,qBAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;CACF,CAAA;AAJY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,oBAAU,GAAE;GACA,oBAAoB,CAIhC;AAGM,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC;IAC3C,YAEU,aAAyC,EAGzC,cAA2C;QAH3C,kBAAa,GAAb,aAAa,CAA4B;QAGzC,mBAAc,GAAd,cAAc,CAA6B;IAClD,CAAC;IAEJ,wBAAwB,CAAC,OAAuC;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,OAAO;YACL,gBAAgB,EAAE,IAAI;YACtB,eAAe,EAAE,GAAG;YACpB,aAAa,EAAE,IAAA,oBAAa,EAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE;YACrE,YAAY,EAAE,CAAC;YAEf,iBAAiB,EAAE,KAAK;YACxB,gBAAgB,EAAE,GAAG;YACrB,cAAc,EAAE,IAAA,2BAAoB,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE;YAE5E,cAAc,EAAE,GAAG;SACpB,CAAC;IACJ,CAAC;CACF,CAAA;AA3BY,4EAAgC;2CAAhC,gCAAgC;IAD5C,IAAA,oBAAU,GAAE;IAGR,WAAA,IAAA,gBAAM,EAAC,eAAQ,CAAC,gCAAgC,CAAC,CAAA;IAGjD,WAAA,IAAA,gBAAM,EAAC,eAAQ,CAAC,iCAAiC,CAAC,CAAA;;GAL1C,gCAAgC,CA2B5C"}
@@ -0,0 +1,4 @@
1
+ export * from './generator.service';
2
+ export * from './mail.service';
3
+ export * from './template-engine.service';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/mail/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./generator.service"), exports);
18
+ __exportStar(require("./mail.service"), exports);
19
+ __exportStar(require("./template-engine.service"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/mail/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,iDAA+B;AAC/B,4DAA0C"}
@@ -0,0 +1,23 @@
1
+ import { BaseService } from '../../../base/services';
2
+ import { IMailMessage, IMailSendResult, IMailService, IMailTemplateEngine, IMailTransport, TMailOptions } from '../common';
3
+ import { AnyType } from '../../../common';
4
+ export declare class MailService extends BaseService implements IMailService {
5
+ protected options: TMailOptions;
6
+ protected transport: IMailTransport;
7
+ protected templateEngine?: IMailTemplateEngine;
8
+ constructor(options: TMailOptions, transport: IMailTransport, templateEngine?: IMailTemplateEngine);
9
+ send(message: IMailMessage): Promise<IMailSendResult>;
10
+ sendBatch(messages: IMailMessage[], options?: {
11
+ concurrency?: number;
12
+ }): Promise<IMailSendResult[]>;
13
+ sendTemplate(opts: {
14
+ templateName: string;
15
+ data: Record<string, AnyType>;
16
+ recipients: string | string[];
17
+ options?: Partial<IMailMessage>;
18
+ }): Promise<IMailSendResult>;
19
+ verify(): Promise<boolean>;
20
+ protected validateMessage(message: IMailMessage): void;
21
+ protected getDefaultFrom(): string;
22
+ }
23
+ //# sourceMappingURL=mail.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.service.d.ts","sourceRoot":"","sources":["../../../../src/components/mail/services/mail.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EAId,YAAY,EACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,qBACa,WAAY,SAAQ,WAAY,YAAW,YAAY;IAGhE,SAAS,CAAC,OAAO,EAAE,YAAY;IAE/B,SAAS,CAAC,SAAS,EAAE,cAAc;IAEnC,SAAS,CAAC,cAAc,CAAC,EAAE,mBAAmB;gBAJpC,OAAO,EAAE,YAAY,EAErB,SAAS,EAAE,cAAc,EAEzB,cAAc,CAAC,EAAE,mBAAmB;IAS1C,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IA6BrD,SAAS,CACb,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACjC,OAAO,CAAC,eAAe,EAAE,CAAC;IA2CvB,YAAY,CAAC,IAAI,EAAE;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;KACjC,GAAG,OAAO,CAAC,eAAe,CAAC;IA2CtB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBhC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IA0BtD,SAAS,CAAC,cAAc,IAAI,MAAM;CAOnC"}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var MailService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.MailService = void 0;
17
+ const services_1 = require("../../../base/services");
18
+ const utilities_1 = require("../../../utilities");
19
+ const core_1 = require("@loopback/core");
20
+ const common_1 = require("../common");
21
+ let MailService = MailService_1 = class MailService extends services_1.BaseService {
22
+ constructor(options, transport, templateEngine) {
23
+ super({ scope: MailService_1.name });
24
+ this.options = options;
25
+ this.transport = transport;
26
+ this.templateEngine = templateEngine;
27
+ this.logger.info('[constructor] Mail service initialized with provider: %s', this.options.provider);
28
+ }
29
+ async send(message) {
30
+ try {
31
+ this.validateMessage(message);
32
+ const emailMessage = {
33
+ ...message,
34
+ from: message.from ?? this.getDefaultFrom(),
35
+ };
36
+ this.logger.debug('[send] Sending email to: %s', emailMessage.to);
37
+ const result = await this.transport.send(emailMessage);
38
+ if (result.success) {
39
+ this.logger.debug('[send] Email sent successfully. MessageId: %s', result.messageId);
40
+ }
41
+ else {
42
+ this.logger.debug('[send] Email send failed: %s', result.error);
43
+ }
44
+ return result;
45
+ }
46
+ catch (error) {
47
+ this.logger.error('[send] Error sending email: %s', error);
48
+ throw (0, utilities_1.getError)({
49
+ statusCode: 500,
50
+ messageCode: common_1.MailErrorCodes.SEND_FAILED,
51
+ message: `Failed to send email: ${error instanceof Error ? error.message : 'Unknown error'}`,
52
+ });
53
+ }
54
+ }
55
+ async sendBatch(messages, options) {
56
+ try {
57
+ const concurrency = options?.concurrency ?? common_1.MailDefaults.BATCH_CONCURRENCY;
58
+ this.logger.info('[sendBatch] Sending batch of %d emails with concurrency: %d', messages.length, concurrency);
59
+ const tasks = messages.map(message => async () => {
60
+ try {
61
+ return await this.send(message);
62
+ }
63
+ catch (error) {
64
+ return {
65
+ success: false,
66
+ error: error instanceof Error ? error.message : 'Unknown error',
67
+ };
68
+ }
69
+ });
70
+ const results = await (0, utilities_1.executePromiseWithLimit)({
71
+ tasks,
72
+ limit: concurrency,
73
+ });
74
+ const successCount = results.filter(r => r.success).length;
75
+ this.logger.info('[sendBatch] Batch send completed. Success: %d, Failed: %d', successCount, results.length - successCount);
76
+ return results;
77
+ }
78
+ catch (error) {
79
+ this.logger.error('[sendBatch] Error sending batch emails: %s', error);
80
+ throw (0, utilities_1.getError)({
81
+ statusCode: 500,
82
+ messageCode: common_1.MailErrorCodes.BATCH_SEND_FAILED,
83
+ message: `Failed to send batch emails: ${error instanceof Error ? error.message : 'Unknown error'}`,
84
+ });
85
+ }
86
+ }
87
+ async sendTemplate(opts) {
88
+ const { templateName, data, recipients, options } = opts;
89
+ try {
90
+ if (!this.templateEngine) {
91
+ throw (0, utilities_1.getError)({
92
+ statusCode: 500,
93
+ messageCode: common_1.MailErrorCodes.INVALID_CONFIGURATION,
94
+ message: 'Template engine not configured',
95
+ });
96
+ }
97
+ this.logger.debug('[sendTemplate] Rendering template: %s', templateName);
98
+ const html = this.templateEngine.render({
99
+ templateName,
100
+ data,
101
+ requireValidate: options?.requireValidate,
102
+ });
103
+ const templateData = this.templateEngine.getTemplate(templateName);
104
+ const message = {
105
+ to: recipients,
106
+ subject: options?.subject ??
107
+ (templateData?.subject !== undefined
108
+ ? this.templateEngine.render({
109
+ templateData: templateData.subject,
110
+ data,
111
+ requireValidate: options?.requireValidate,
112
+ })
113
+ : 'No Subject'),
114
+ html,
115
+ ...options,
116
+ };
117
+ return await this.send(message);
118
+ }
119
+ catch (error) {
120
+ this.logger.error('[sendTemplate] Error sending template email: %s', error);
121
+ throw error;
122
+ }
123
+ }
124
+ async verify() {
125
+ try {
126
+ this.logger.debug('[verify] Verifying mail transport connection');
127
+ const isValid = await this.transport.verify();
128
+ this.logger.debug('[verify] Verification result: %s', isValid);
129
+ return isValid;
130
+ }
131
+ catch (error) {
132
+ this.logger.error('[verify] Verification failed: %s', error);
133
+ throw (0, utilities_1.getError)({
134
+ statusCode: 500,
135
+ messageCode: common_1.MailErrorCodes.VERIFICATION_FAILED,
136
+ message: `Mail transport verification failed: ${error instanceof Error ? error.message : 'Unknown error'}`,
137
+ });
138
+ }
139
+ }
140
+ validateMessage(message) {
141
+ if (!message.to || (Array.isArray(message.to) && message.to.length === 0)) {
142
+ throw (0, utilities_1.getError)({
143
+ statusCode: 400,
144
+ messageCode: common_1.MailErrorCodes.INVALID_RECIPIENT,
145
+ message: 'Recipient email address is required',
146
+ });
147
+ }
148
+ if (!message.subject) {
149
+ throw (0, utilities_1.getError)({
150
+ statusCode: 400,
151
+ messageCode: common_1.MailErrorCodes.INVALID_CONFIGURATION,
152
+ message: 'Email subject is required',
153
+ });
154
+ }
155
+ if (!message.text && !message.html) {
156
+ throw (0, utilities_1.getError)({
157
+ statusCode: 400,
158
+ messageCode: common_1.MailErrorCodes.INVALID_CONFIGURATION,
159
+ message: 'Email must have either text or html content',
160
+ });
161
+ }
162
+ }
163
+ getDefaultFrom() {
164
+ if (this.options.fromName) {
165
+ return `"${this.options.fromName}" <${this.options.from}>`;
166
+ }
167
+ return this.options.from ?? 'noreply@example.com';
168
+ }
169
+ };
170
+ exports.MailService = MailService;
171
+ exports.MailService = MailService = MailService_1 = __decorate([
172
+ (0, core_1.injectable)({ scope: core_1.BindingScope.SINGLETON }),
173
+ __param(0, (0, core_1.inject)(common_1.MailKeys.MAIL_OPTIONS)),
174
+ __param(1, (0, core_1.inject)(common_1.MailKeys.MAIL_TRANSPORT_INSTANCE)),
175
+ __param(2, (0, core_1.inject)(common_1.MailKeys.MAIL_TEMPLATE_ENGINE, { optional: true })),
176
+ __metadata("design:paramtypes", [Object, Object, Object])
177
+ ], MailService);
178
+ //# sourceMappingURL=mail.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.service.js","sourceRoot":"","sources":["../../../../src/components/mail/services/mail.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { BaseService } from '../../../base/services';
2
+ import { AnyType } from '../../../common';
3
+ import { IMailTemplateEngine, ITemplate } from '../common';
4
+ export declare class TemplateEngineService extends BaseService implements IMailTemplateEngine {
5
+ private templates;
6
+ constructor();
7
+ registerTemplate(opts: {
8
+ name: string;
9
+ content: string;
10
+ options?: Partial<ITemplate>;
11
+ }): void;
12
+ render(opts: {
13
+ templateData?: string;
14
+ templateName?: string;
15
+ data: Record<string, AnyType>;
16
+ requireValidate?: boolean;
17
+ }): string;
18
+ getTemplate(name: string): ITemplate | undefined;
19
+ listTemplates(): ITemplate[];
20
+ hasTemplate(name: string): boolean;
21
+ removeTemplate(name: string): boolean;
22
+ clearTemplates(): void;
23
+ validateTemplateData(opts: {
24
+ template: string;
25
+ data: Record<string, AnyType>;
26
+ }): {
27
+ isValid: boolean;
28
+ missingKeys: string[];
29
+ allKeys: string[];
30
+ };
31
+ renderSimpleTemplate(template: string, data: Record<string, AnyType>, opts?: {
32
+ requireValidate?: boolean;
33
+ }): string;
34
+ private getNestedValue;
35
+ }
36
+ //# sourceMappingURL=template-engine.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-engine.service.d.ts","sourceRoot":"","sources":["../../../../src/components/mail/services/template-engine.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAkB,MAAM,WAAW,CAAC;AAE3E,qBACa,qBAAsB,SAAQ,WAAY,YAAW,mBAAmB;IACnF,OAAO,CAAC,SAAS,CAAqC;;IAOtD,gBAAgB,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;KAAE,GAAG,IAAI;IAc7F,MAAM,CAAC,IAAI,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GAAG,MAAM;IA4BV,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIhD,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKrC,cAAc,IAAI,IAAI;IAKtB,oBAAoB,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG;QAC/E,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB;IA8BD,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACnC,MAAM;IAyBT,OAAO,CAAC,cAAc;CAKvB"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var TemplateEngineService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.TemplateEngineService = void 0;
14
+ const services_1 = require("../../../base/services");
15
+ const utilities_1 = require("../../../utilities");
16
+ const core_1 = require("@loopback/core");
17
+ const common_1 = require("../common");
18
+ let TemplateEngineService = TemplateEngineService_1 = class TemplateEngineService extends services_1.BaseService {
19
+ constructor() {
20
+ super({ scope: TemplateEngineService_1.name });
21
+ this.templates = new Map();
22
+ this.logger.info('[constructor] Template engine initialized');
23
+ }
24
+ registerTemplate(opts) {
25
+ const { name, content, options } = opts;
26
+ this.logger.info('[registerTemplate] Registering template: %s', name);
27
+ const template = {
28
+ name,
29
+ content,
30
+ subject: options?.subject,
31
+ description: options?.description,
32
+ };
33
+ this.templates.set(name, template);
34
+ }
35
+ render(opts) {
36
+ const { templateData, templateName, data, requireValidate } = opts;
37
+ if (!templateData && !templateName) {
38
+ throw (0, utilities_1.getError)({ message: 'Either templateName or templateData must be provided' });
39
+ }
40
+ let content = templateData;
41
+ if (!content && templateName) {
42
+ const template = this.templates.get(templateName);
43
+ if (!template) {
44
+ throw (0, utilities_1.getError)({
45
+ statusCode: 404,
46
+ messageCode: common_1.MailErrorCodes.TEMPLATE_NOT_FOUND,
47
+ message: `Template not found: ${templateName}`,
48
+ });
49
+ }
50
+ this.logger.debug('[render] Rendering template: %s', templateName);
51
+ content = template.content;
52
+ }
53
+ return this.renderSimpleTemplate(content, data, { requireValidate });
54
+ }
55
+ getTemplate(name) {
56
+ return this.templates.get(name);
57
+ }
58
+ listTemplates() {
59
+ return Array.from(this.templates.values());
60
+ }
61
+ hasTemplate(name) {
62
+ return this.templates.has(name);
63
+ }
64
+ removeTemplate(name) {
65
+ this.logger.info('[removeTemplate] Removing template: %s', name);
66
+ return this.templates.delete(name);
67
+ }
68
+ clearTemplates() {
69
+ this.logger.info('[clearTemplates] Clearing all templates');
70
+ this.templates.clear();
71
+ }
72
+ validateTemplateData(opts) {
73
+ const { template, data } = opts;
74
+ const placeholderRegex = /\{\{(\s*[\w.]+\s*)\}\}/g;
75
+ const allKeys = [];
76
+ const missingKeys = [];
77
+ let match;
78
+ while ((match = placeholderRegex.exec(template)) !== null) {
79
+ const key = match[1].trim();
80
+ if (!allKeys.includes(key)) {
81
+ allKeys.push(key);
82
+ const value = this.getNestedValue(data, key);
83
+ if (value === undefined || value === null) {
84
+ missingKeys.push(key);
85
+ }
86
+ }
87
+ }
88
+ const isValid = missingKeys.length === 0;
89
+ if (!isValid) {
90
+ this.logger.warn('[validateTemplateData] Template validation failed | Missing keys: %s', missingKeys.join(', '));
91
+ }
92
+ return { isValid, missingKeys, allKeys };
93
+ }
94
+ renderSimpleTemplate(template, data, opts) {
95
+ if (opts?.requireValidate) {
96
+ const validation = this.validateTemplateData({ template, data });
97
+ if (!validation.isValid) {
98
+ throw (0, utilities_1.getError)({
99
+ statusCode: 400,
100
+ messageCode: common_1.MailErrorCodes.INVALID_CONFIGURATION,
101
+ message: `Missing template data for keys: ${validation.missingKeys.join(', ')}`,
102
+ });
103
+ }
104
+ }
105
+ return template.replace(/\{\{(\s*[\w.]+\s*)\}\}/g, (match, key) => {
106
+ const trimmedKey = key.trim();
107
+ const value = this.getNestedValue(data, trimmedKey);
108
+ if (value === undefined || value === null) {
109
+ this.logger.warn('[renderSimpleTemplate] Missing value for key: %s', trimmedKey);
110
+ return match;
111
+ }
112
+ return String(value);
113
+ });
114
+ }
115
+ getNestedValue(obj, path) {
116
+ return path.split('.').reduce((current, key) => {
117
+ return current?.[key];
118
+ }, obj);
119
+ }
120
+ };
121
+ exports.TemplateEngineService = TemplateEngineService;
122
+ exports.TemplateEngineService = TemplateEngineService = TemplateEngineService_1 = __decorate([
123
+ (0, core_1.injectable)({ scope: core_1.BindingScope.SINGLETON }),
124
+ __metadata("design:paramtypes", [])
125
+ ], TemplateEngineService);
126
+ //# sourceMappingURL=template-engine.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-engine.service.js","sourceRoot":"","sources":["../../../../src/components/mail/services/template-engine.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,8CAA8C;AAE9C,2CAAuC;AACvC,yCAA0D;AAC1D,sCAA2E;AAGpE,IAAM,qBAAqB,6BAA3B,MAAM,qBAAsB,SAAQ,sBAAW;IAGpD;QACE,KAAK,CAAC,EAAE,KAAK,EAAE,uBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC;QAHvC,cAAS,GAA2B,IAAI,GAAG,EAAE,CAAC;QAIpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAChE,CAAC;IAED,gBAAgB,CAAC,IAAqE;QACpF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAc;YAC1B,IAAI;YACJ,OAAO;YACP,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,WAAW,EAAE,OAAO,EAAE,WAAW;SAClC,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,IAKN;QACC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAEnE,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;YACnC,MAAM,IAAA,oBAAQ,EAAC,EAAE,OAAO,EAAE,sDAAsD,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,OAAO,GAAG,YAAY,CAAC;QAE3B,IAAI,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAA,oBAAQ,EAAC;oBACb,UAAU,EAAE,GAAG;oBACf,WAAW,EAAE,uBAAc,CAAC,kBAAkB;oBAC9C,OAAO,EAAE,uBAAuB,YAAY,EAAE;iBAC/C,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,YAAY,CAAC,CAAC;YAEnE,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,oBAAoB,CAAC,IAAyD;QAK5E,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAChC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;QACnD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC7C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAC1C,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,sEAAsE,EACtE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CACvB,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC3C,CAAC;IAED,oBAAoB,CAClB,QAAgB,EAChB,IAA6B,EAC7B,IAAoC;QAEpC,IAAI,IAAI,EAAE,eAAe,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAA,oBAAQ,EAAC;oBACb,UAAU,EAAE,GAAG;oBACf,WAAW,EAAE,uBAAc,CAAC,qBAAqB;oBACjD,OAAO,EAAE,mCAAmC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAChF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAChE,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAEpD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,UAAU,CAAC,CAAC;gBACjF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,GAAY,EAAE,IAAY;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;YAC7C,OAAO,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;CACF,CAAA;AAjJY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,iBAAU,EAAC,EAAE,KAAK,EAAE,mBAAY,CAAC,SAAS,EAAE,CAAC;;GACjC,qBAAqB,CAiJjC"}
@@ -0,0 +1,3 @@
1
+ export * from './type.utility';
2
+ export * from './verification.utility';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/mail/utilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC"}