@pixelplex/mail-service 0.1.22 → 0.2.1

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 (132) hide show
  1. package/.gitlab-ci.yml +1 -25
  2. package/LICENSE.md +1 -1
  3. package/README.md +83 -137
  4. package/audit-ci.json +4 -0
  5. package/commitlint.config.js +27 -0
  6. package/dist/constants/index.d.ts +1 -0
  7. package/dist/constants/index.js +18 -0
  8. package/dist/constants/index.js.map +1 -0
  9. package/dist/constants/mail.constants.d.ts +11 -0
  10. package/dist/constants/mail.constants.js +17 -0
  11. package/dist/constants/mail.constants.js.map +1 -0
  12. package/dist/decorators/index.d.ts +2 -0
  13. package/dist/decorators/index.js +19 -0
  14. package/dist/decorators/index.js.map +1 -0
  15. package/dist/decorators/inject-gateways.decorator.d.ts +2 -0
  16. package/dist/decorators/inject-gateways.decorator.js +10 -0
  17. package/dist/decorators/inject-gateways.decorator.js.map +1 -0
  18. package/dist/decorators/inject-options.decorator.d.ts +3 -0
  19. package/dist/decorators/inject-options.decorator.js +14 -0
  20. package/dist/decorators/inject-options.decorator.js.map +1 -0
  21. package/dist/factories/gateway.factory.d.ts +4 -0
  22. package/dist/factories/gateway.factory.js +18 -0
  23. package/dist/factories/gateway.factory.js.map +1 -0
  24. package/dist/factories/index.d.ts +1 -0
  25. package/dist/factories/index.js +18 -0
  26. package/dist/factories/index.js.map +1 -0
  27. package/dist/gateways/console.gateway.d.ts +6 -0
  28. package/dist/{connect/app.module.js → gateways/console.gateway.js} +13 -17
  29. package/dist/gateways/console.gateway.js.map +1 -0
  30. package/dist/gateways/index.d.ts +4 -0
  31. package/dist/gateways/index.js +21 -0
  32. package/dist/gateways/index.js.map +1 -0
  33. package/dist/gateways/sendgrid.gateway.d.ts +8 -0
  34. package/dist/gateways/sendgrid.gateway.js +45 -0
  35. package/dist/gateways/sendgrid.gateway.js.map +1 -0
  36. package/dist/gateways/slack.gateway.d.ts +8 -0
  37. package/dist/gateways/slack.gateway.js +40 -0
  38. package/dist/gateways/slack.gateway.js.map +1 -0
  39. package/dist/gateways/smtp.gateway.d.ts +9 -0
  40. package/dist/gateways/smtp.gateway.js +43 -0
  41. package/dist/gateways/smtp.gateway.js.map +1 -0
  42. package/dist/index.d.ts +7 -4
  43. package/dist/index.js +21 -7
  44. package/dist/index.js.map +1 -1
  45. package/dist/interfaces/gateway.interface.d.ts +4 -0
  46. package/dist/interfaces/gateway.interface.js +3 -0
  47. package/dist/interfaces/gateway.interface.js.map +1 -0
  48. package/dist/interfaces/index.d.ts +1 -0
  49. package/dist/interfaces/index.js +18 -0
  50. package/dist/interfaces/index.js.map +1 -0
  51. package/dist/mail.module.d.ts +5 -0
  52. package/dist/mail.module.js +68 -0
  53. package/dist/mail.module.js.map +1 -0
  54. package/dist/services/index.d.ts +1 -0
  55. package/dist/services/index.js +18 -0
  56. package/dist/services/index.js.map +1 -0
  57. package/dist/services/mail-sender.service.d.ts +11 -0
  58. package/dist/services/mail-sender.service.js +91 -0
  59. package/dist/services/mail-sender.service.js.map +1 -0
  60. package/dist/tsconfig.build.tsbuildinfo +1 -8211
  61. package/dist/types/decorators.types.d.ts +2 -0
  62. package/dist/types/decorators.types.js +3 -0
  63. package/dist/types/decorators.types.js.map +1 -0
  64. package/dist/types/gateway.class.d.ts +4 -0
  65. package/dist/types/gateway.class.js +3 -0
  66. package/dist/types/gateway.class.js.map +1 -0
  67. package/dist/types/index.d.ts +7 -0
  68. package/dist/types/index.js +24 -0
  69. package/dist/types/index.js.map +1 -0
  70. package/dist/types/options.types.d.ts +16 -0
  71. package/dist/types/options.types.js +3 -0
  72. package/dist/types/options.types.js.map +1 -0
  73. package/dist/types/sendgrid-options.types.d.ts +4 -0
  74. package/dist/types/sendgrid-options.types.js +3 -0
  75. package/dist/types/sendgrid-options.types.js.map +1 -0
  76. package/dist/types/slack-options.types.d.ts +3 -0
  77. package/dist/types/slack-options.types.js +3 -0
  78. package/dist/types/slack-options.types.js.map +1 -0
  79. package/dist/types/smtp-options.types.d.ts +7 -0
  80. package/dist/types/smtp-options.types.js +3 -0
  81. package/dist/types/smtp-options.types.js.map +1 -0
  82. package/dist/types/templates.types.d.ts +12 -0
  83. package/dist/types/templates.types.js +3 -0
  84. package/dist/types/templates.types.js.map +1 -0
  85. package/dist/utils/connection.utils.d.ts +4 -0
  86. package/dist/utils/connection.utils.js +17 -0
  87. package/dist/utils/connection.utils.js.map +1 -0
  88. package/dist/utils/index.d.ts +3 -0
  89. package/dist/utils/index.js +20 -0
  90. package/dist/utils/index.js.map +1 -0
  91. package/dist/utils/object.utils.d.ts +1 -0
  92. package/dist/utils/object.utils.js +8 -0
  93. package/dist/utils/object.utils.js.map +1 -0
  94. package/dist/utils/types.utils.d.ts +1 -0
  95. package/dist/utils/types.utils.js +3 -0
  96. package/dist/utils/types.utils.js.map +1 -0
  97. package/package.json +51 -45
  98. package/tsconfig.json +4 -1
  99. package/.dockerignore +0 -5
  100. package/.husky/pre-commit +0 -9
  101. package/dist/connect/app.module.d.ts +0 -4
  102. package/dist/connect/app.module.js.map +0 -1
  103. package/dist/connect/retry.d.ts +0 -2
  104. package/dist/connect/retry.js +0 -13
  105. package/dist/connect/retry.js.map +0 -1
  106. package/dist/main.d.ts +0 -1
  107. package/dist/main.js +0 -24
  108. package/dist/main.js.map +0 -1
  109. package/dist/service/app.module.d.ts +0 -4
  110. package/dist/service/app.module.js +0 -29
  111. package/dist/service/app.module.js.map +0 -1
  112. package/dist/service/sender.service.d.ts +0 -7
  113. package/dist/service/sender.service.js +0 -63
  114. package/dist/service/sender.service.js.map +0 -1
  115. package/dist/transports/rmq/app.controller.d.ts +0 -9
  116. package/dist/transports/rmq/app.controller.js +0 -59
  117. package/dist/transports/rmq/app.controller.js.map +0 -1
  118. package/dist/transports/rmq/app.service.d.ts +0 -20
  119. package/dist/transports/rmq/app.service.js +0 -61
  120. package/dist/transports/rmq/app.service.js.map +0 -1
  121. package/dist/transports/rmq/connection.d.ts +0 -3
  122. package/dist/transports/rmq/connection.js +0 -33
  123. package/dist/transports/rmq/connection.js.map +0 -1
  124. package/dist/transports/tcp/app.controller.d.ts +0 -8
  125. package/dist/transports/tcp/app.controller.js +0 -54
  126. package/dist/transports/tcp/app.controller.js.map +0 -1
  127. package/dist/transports/tcp/app.service.d.ts +0 -19
  128. package/dist/transports/tcp/app.service.js +0 -56
  129. package/dist/transports/tcp/app.service.js.map +0 -1
  130. package/dist/transports/tcp/connection.d.ts +0 -8
  131. package/dist/transports/tcp/connection.js +0 -13
  132. package/dist/transports/tcp/connection.js.map +0 -1
@@ -0,0 +1,45 @@
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.SendgridGateway = void 0;
19
+ const common_1 = require("@nestjs/common");
20
+ const mail_1 = __importDefault(require("@sendgrid/mail"));
21
+ const constants_1 = require("../constants");
22
+ const decorators_1 = require("../decorators");
23
+ let SendgridGateway = exports.SendgridGateway = class SendgridGateway {
24
+ constructor(sendgridOptions) {
25
+ this.sendgridOptions = sendgridOptions;
26
+ this.logger = new common_1.Logger('Mail::SendgridGateway');
27
+ mail_1.default.setApiKey(sendgridOptions.apiKey);
28
+ }
29
+ async send(to, content) {
30
+ await mail_1.default.send({
31
+ to,
32
+ from: this.sendgridOptions.sender,
33
+ subject: content.subject,
34
+ html: content.html,
35
+ text: content.plain,
36
+ });
37
+ this.logger.debug(`Message to ${to} sent with sendgrid`);
38
+ }
39
+ };
40
+ exports.SendgridGateway = SendgridGateway = __decorate([
41
+ (0, common_1.Injectable)(),
42
+ __param(0, (0, decorators_1.InjectGatewayOptions)(constants_1.GATEWAY.SENDGRID)),
43
+ __metadata("design:paramtypes", [Object])
44
+ ], SendgridGateway);
45
+ //# sourceMappingURL=sendgrid.gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendgrid.gateway.js","sourceRoot":"","sources":["../../src/gateways/sendgrid.gateway.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,0DAAoC;AAEpC,4CAAuC;AACvC,8CAAqD;AAK9C,IAAM,eAAe,6BAArB,MAAM,eAAe;IAG1B,YAAoD,eAAiD;QAAhC,oBAAe,GAAf,eAAe,CAAiB;QAFpF,WAAM,GAAG,IAAI,eAAM,CAAC,uBAAuB,CAAC,CAAC;QAG5D,cAAM,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAU,EAAE,OAAgB;QACrC,MAAM,cAAM,CAAC,IAAI,CAAC;YAChB,EAAE;YACF,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM;YACjC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;IAC3D,CAAC;CACF,CAAA;0BAlBY,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAIE,WAAA,IAAA,iCAAoB,EAAC,mBAAO,CAAC,QAAQ,CAAC,CAAA;;GAHxC,eAAe,CAkB3B"}
@@ -0,0 +1,8 @@
1
+ import { IGateway } from '../interfaces';
2
+ import { Content, SlackOptions } from '../types';
3
+ export declare class SlackGateway implements IGateway {
4
+ private readonly slackOption;
5
+ private readonly logger;
6
+ constructor(slackOption: SlackOptions);
7
+ send(to: string, content: Content): Promise<void>;
8
+ }
@@ -0,0 +1,40 @@
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.SlackGateway = void 0;
19
+ const common_1 = require("@nestjs/common");
20
+ const axios_1 = __importDefault(require("axios"));
21
+ const constants_1 = require("../constants");
22
+ const decorators_1 = require("../decorators");
23
+ let SlackGateway = exports.SlackGateway = class SlackGateway {
24
+ constructor(slackOption) {
25
+ this.slackOption = slackOption;
26
+ this.logger = new common_1.Logger('Mail::SlackGateway');
27
+ }
28
+ async send(to, content) {
29
+ const text = `Message for ${to}: \n${content.plain}`;
30
+ const slackUrl = new URL(this.slackOption.url, 'https://hooks.slack.com');
31
+ await axios_1.default.post(slackUrl.href, { text });
32
+ this.logger.debug(`Slack message to ${to} sent`);
33
+ }
34
+ };
35
+ exports.SlackGateway = SlackGateway = __decorate([
36
+ (0, common_1.Injectable)(),
37
+ __param(0, (0, decorators_1.InjectGatewayOptions)(constants_1.GATEWAY.SLACK)),
38
+ __metadata("design:paramtypes", [Object])
39
+ ], SlackGateway);
40
+ //# sourceMappingURL=slack.gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.gateway.js","sourceRoot":"","sources":["../../src/gateways/slack.gateway.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,kDAA0B;AAE1B,4CAAuC;AACvC,8CAAqD;AAK9C,IAAM,YAAY,0BAAlB,MAAM,YAAY;IAGvB,YAAiD,WAA0C;QAAzB,gBAAW,GAAX,WAAW,CAAc;QAF1E,WAAM,GAAW,IAAI,eAAM,CAAC,oBAAoB,CAAC,CAAC;IAE2B,CAAC;IAE/F,KAAK,CAAC,IAAI,CAAC,EAAU,EAAE,OAAgB;QACrC,MAAM,IAAI,GAAG,eAAe,EAAE,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAC1E,MAAM,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;CACF,CAAA;uBAXY,YAAY;IADxB,IAAA,mBAAU,GAAE;IAIE,WAAA,IAAA,iCAAoB,EAAC,mBAAO,CAAC,KAAK,CAAC,CAAA;;GAHrC,YAAY,CAWxB"}
@@ -0,0 +1,9 @@
1
+ import { IGateway } from '../interfaces';
2
+ import { Content, SmtpOptions } from '../types';
3
+ export declare class SmtpGateway implements IGateway {
4
+ private readonly smtpOptions;
5
+ private readonly logger;
6
+ private readonly transporter;
7
+ constructor(smtpOptions: SmtpOptions);
8
+ send(to: string, content: Content): Promise<void>;
9
+ }
@@ -0,0 +1,43 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SmtpGateway = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const nodemailer_1 = require("nodemailer");
18
+ const constants_1 = require("../constants");
19
+ const decorators_1 = require("../decorators");
20
+ let SmtpGateway = exports.SmtpGateway = class SmtpGateway {
21
+ constructor(smtpOptions) {
22
+ this.smtpOptions = smtpOptions;
23
+ this.logger = new common_1.Logger('Mail::SmtpGateway');
24
+ this.transporter = (0, nodemailer_1.createTransport)({
25
+ host: smtpOptions.host,
26
+ port: smtpOptions.port,
27
+ auth: {
28
+ user: smtpOptions.username,
29
+ pass: smtpOptions.password,
30
+ },
31
+ });
32
+ }
33
+ async send(to, content) {
34
+ const info = await this.transporter.sendMail(Object.assign(Object.assign({ from: this.smtpOptions.sender, to }, content), { text: content.plain }));
35
+ this.logger.debug(`Message sent: ${info.messageId}, ${info.response}`);
36
+ }
37
+ };
38
+ exports.SmtpGateway = SmtpGateway = __decorate([
39
+ (0, common_1.Injectable)(),
40
+ __param(0, (0, decorators_1.InjectGatewayOptions)(constants_1.GATEWAY.SMTP)),
41
+ __metadata("design:paramtypes", [Object])
42
+ ], SmtpGateway);
43
+ //# sourceMappingURL=smtp.gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smtp.gateway.js","sourceRoot":"","sources":["../../src/gateways/smtp.gateway.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,2CAA2E;AAE3E,4CAAuC;AACvC,8CAAqD;AAK9C,IAAM,WAAW,yBAAjB,MAAM,WAAW;IAItB,YAAgD,WAAyC;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAHxE,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAmB,CAAC,CAAC;QAIxD,IAAI,CAAC,WAAW,GAAG,IAAA,4BAAe,EAAC;YACjC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE;gBACJ,IAAI,EAAE,WAAW,CAAC,QAAQ;gBAC1B,IAAI,EAAE,WAAW,CAAC,QAAQ;aAC3B;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAU,EAAE,OAAgB;QACrC,MAAM,IAAI,GAAoB,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,+BAC3D,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAC7B,EAAE,IACC,OAAO,KACV,IAAI,EAAE,OAAO,CAAC,KAAK,IACnB,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzE,CAAC;CACF,CAAA;sBAzBY,WAAW;IADvB,IAAA,mBAAU,GAAE;IAKE,WAAA,IAAA,iCAAoB,EAAC,mBAAO,CAAC,IAAI,CAAC,CAAA;;GAJpC,WAAW,CAyBvB"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
- import { MailModule } from './connect/app.module';
2
- import { MailService as MailRMQService } from './transports/rmq/app.service';
3
- import { MailService as MailTCPService } from './transports/tcp/app.service';
4
- export { MailModule, MailRMQService, MailTCPService };
1
+ export * from './constants';
2
+ export * from './decorators';
3
+ export * from './interfaces';
4
+ export * from './services';
5
+ export * from './types';
6
+ export * from './mail.module';
7
+ export * from './utils/connection.utils';
package/dist/index.js CHANGED
@@ -1,10 +1,24 @@
1
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
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MailTCPService = exports.MailRMQService = exports.MailModule = void 0;
4
- const app_module_1 = require("./connect/app.module");
5
- Object.defineProperty(exports, "MailModule", { enumerable: true, get: function () { return app_module_1.MailModule; } });
6
- const app_service_1 = require("./transports/rmq/app.service");
7
- Object.defineProperty(exports, "MailRMQService", { enumerable: true, get: function () { return app_service_1.MailService; } });
8
- const app_service_2 = require("./transports/tcp/app.service");
9
- Object.defineProperty(exports, "MailTCPService", { enumerable: true, get: function () { return app_service_2.MailService; } });
17
+ __exportStar(require("./constants"), exports);
18
+ __exportStar(require("./decorators"), exports);
19
+ __exportStar(require("./interfaces"), exports);
20
+ __exportStar(require("./services"), exports);
21
+ __exportStar(require("./types"), exports);
22
+ __exportStar(require("./mail.module"), exports);
23
+ __exportStar(require("./utils/connection.utils"), exports);
10
24
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAIzC,2FAJA,uBAAU,OAIA;AAHnB,8DAA6E;AAGxD,+FAHG,yBAAc,OAGH;AAFnC,8DAA6E;AAExC,+FAFb,yBAAc,OAEa"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,0CAAwB;AACxB,gDAA8B;AAE9B,2DAAyC"}
@@ -0,0 +1,4 @@
1
+ import { Content } from '../types';
2
+ export interface IGateway {
3
+ send(to: string, content: Content): Promise<void>;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=gateway.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.interface.js","sourceRoot":"","sources":["../../src/interfaces/gateway.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export * from './gateway.interface';
@@ -0,0 +1,18 @@
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("./gateway.interface"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
@@ -0,0 +1,5 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { Gateway, MailOptions } from './types';
3
+ export declare class MailModule {
4
+ static forRoot<TGateway extends Gateway = never>(options: MailOptions<TGateway>, connection?: string): DynamicModule;
5
+ }
@@ -0,0 +1,68 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ 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;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ var MailModule_1;
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.MailModule = void 0;
34
+ const common_1 = require("@nestjs/common");
35
+ const factories_1 = require("./factories");
36
+ const Services = __importStar(require("./services"));
37
+ const utils_1 = require("./utils");
38
+ let MailModule = exports.MailModule = MailModule_1 = class MailModule {
39
+ static forRoot(options, connection) {
40
+ const mailOptionsProvider = {
41
+ provide: (0, utils_1.getMailOptionsToken)(connection),
42
+ useValue: options,
43
+ };
44
+ const gatewayOptionsProviders = options.gateways.map((gateway) => ({
45
+ provide: (0, utils_1.getGatewayOptionsToken)(gateway, connection),
46
+ useValue: options[gateway],
47
+ }));
48
+ const gateways = options.gateways.map((gateway) => factories_1.GatewayFactory.getGateway(gateway));
49
+ if (options.customGateways) {
50
+ gateways.push(...options.customGateways);
51
+ }
52
+ const gatewaysComposedProvider = {
53
+ provide: (0, utils_1.getGatewaysToken)(connection),
54
+ useFactory: (...args) => args,
55
+ inject: gateways,
56
+ };
57
+ const services = Object.values(Services);
58
+ return {
59
+ module: MailModule_1,
60
+ providers: [mailOptionsProvider, gatewaysComposedProvider, ...gatewayOptionsProviders, ...services, ...gateways],
61
+ exports: services,
62
+ };
63
+ }
64
+ };
65
+ exports.MailModule = MailModule = MailModule_1 = __decorate([
66
+ (0, common_1.Module)({})
67
+ ], MailModule);
68
+ //# sourceMappingURL=mail.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.module.js","sourceRoot":"","sources":["../src/mail.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAiE;AAEjE,2CAA6C;AAC7C,qDAAuC;AAEvC,mCAAwF;AAGjF,IAAM,UAAU,uCAAhB,MAAM,UAAU;IACrB,MAAM,CAAC,OAAO,CAAmC,OAA8B,EAAE,UAAmB;QAClG,MAAM,mBAAmB,GAAa;YACpC,OAAO,EAAE,IAAA,2BAAmB,EAAC,UAAU,CAAC;YACxC,QAAQ,EAAE,OAAO;SAClB,CAAC;QAEF,MAAM,uBAAuB,GAAe,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC7E,OAAO,EAAE,IAAA,8BAAsB,EAAC,OAAO,EAAE,UAAU,CAAC;YACpD,QAAQ,EAAG,OAAe,CAAC,OAAO,CAAC;SACpC,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,0BAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvF,IAAI,OAAO,CAAC,cAAc,EAAE;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;SAC1C;QAED,MAAM,wBAAwB,GAAa;YACzC,OAAO,EAAE,IAAA,wBAAgB,EAAC,UAAU,CAAC;YACrC,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI;YAC7B,MAAM,EAAE,QAAQ;SACjB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO;YACL,MAAM,EAAE,YAAU;YAClB,SAAS,EAAE,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,GAAG,uBAAuB,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC;YAChH,OAAO,EAAE,QAAQ;SAClB,CAAC;IACJ,CAAC;CACF,CAAA;qBA/BY,UAAU;IADtB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,UAAU,CA+BtB"}
@@ -0,0 +1 @@
1
+ export * from './mail-sender.service';
@@ -0,0 +1,18 @@
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("./mail-sender.service"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC"}
@@ -0,0 +1,11 @@
1
+ import { IGateway } from '../interfaces';
2
+ import { TemplatePathsOrContent } from '../types';
3
+ export declare class MailSenderService {
4
+ private readonly gateways;
5
+ private readonly templateDelegatesCache;
6
+ constructor(gateways: IGateway[]);
7
+ sendEmail(to: string, templatePathsOrContent: TemplatePathsOrContent, context?: Record<string, any>): Promise<void>;
8
+ private compileAllTemplates;
9
+ private getTemplateDelegate;
10
+ private compileTemplate;
11
+ }
@@ -0,0 +1,91 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ 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;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ var __metadata = (this && this.__metadata) || function (k, v) {
32
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
+ };
34
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
35
+ return function (target, key) { decorator(target, key, paramIndex); }
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.MailSenderService = void 0;
39
+ const node_fs_1 = require("node:fs");
40
+ const common_1 = require("@nestjs/common");
41
+ const handlebars = __importStar(require("handlebars"));
42
+ const decorators_1 = require("../decorators");
43
+ const utils_1 = require("../utils");
44
+ let MailSenderService = exports.MailSenderService = class MailSenderService {
45
+ constructor(gateways) {
46
+ this.gateways = gateways;
47
+ this.templateDelegatesCache = new Map();
48
+ }
49
+ async sendEmail(to, templatePathsOrContent, context) {
50
+ const content = await this.compileAllTemplates(templatePathsOrContent, context);
51
+ await Promise.all(this.gateways.map(async (gateway) => gateway.send(to, content)));
52
+ }
53
+ async compileAllTemplates(templatePathsOrContent, context) {
54
+ const content = {
55
+ html: await this.compileTemplate(templatePathsOrContent.htmlPath, context),
56
+ };
57
+ if ((0, utils_1.isDefined)(templatePathsOrContent.subject)) {
58
+ content.subject = templatePathsOrContent.subject;
59
+ }
60
+ else if ((0, utils_1.isDefined)(templatePathsOrContent.subjectPath)) {
61
+ content.subject = await this.compileTemplate(templatePathsOrContent.subjectPath, context);
62
+ }
63
+ if ((0, utils_1.isDefined)(templatePathsOrContent.plain)) {
64
+ content.plain = templatePathsOrContent.plain;
65
+ }
66
+ else if ((0, utils_1.isDefined)(templatePathsOrContent.plainPath)) {
67
+ content.plain = await this.compileTemplate(templatePathsOrContent.plainPath, context);
68
+ }
69
+ return content;
70
+ }
71
+ async getTemplateDelegate(templatePath) {
72
+ const templateDelegateInCache = this.templateDelegatesCache.get(templatePath);
73
+ if (templateDelegateInCache) {
74
+ return templateDelegateInCache;
75
+ }
76
+ const template = await node_fs_1.promises.readFile(templatePath, 'utf-8');
77
+ const templateDelegate = handlebars.compile(template);
78
+ this.templateDelegatesCache.set(templatePath, templateDelegate);
79
+ return templateDelegate;
80
+ }
81
+ async compileTemplate(templatePath, context = {}) {
82
+ const templateDelegate = await this.getTemplateDelegate(templatePath);
83
+ return templateDelegate(context);
84
+ }
85
+ };
86
+ exports.MailSenderService = MailSenderService = __decorate([
87
+ (0, common_1.Injectable)(),
88
+ __param(0, (0, decorators_1.InjectGateways)()),
89
+ __metadata("design:paramtypes", [Array])
90
+ ], MailSenderService);
91
+ //# sourceMappingURL=mail-sender.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-sender.service.js","sourceRoot":"","sources":["../../src/services/mail-sender.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyC;AAEzC,2CAA4C;AAC5C,uDAAyC;AAEzC,8CAA+C;AAG/C,oCAAqC;AAG9B,IAAM,iBAAiB,+BAAvB,MAAM,iBAAiB;IAE5B,YAA8B,QAAqC;QAApB,aAAQ,GAAR,QAAQ,CAAY;QADlD,2BAAsB,GAAG,IAAI,GAAG,EAAsC,CAAC;IAClB,CAAC;IAEhE,KAAK,CAAC,SAAS,CACpB,EAAU,EACV,sBAA8C,EAC9C,OAA6B;QAE7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAChF,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,sBAA8C,EAC9C,OAA6B;QAE7B,MAAM,OAAO,GAAY;YACvB,IAAI,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC;SAC3E,CAAC;QAEF,IAAI,IAAA,iBAAS,EAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE;YAC7C,OAAO,CAAC,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC;SAClD;aAAM,IAAI,IAAA,iBAAS,EAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE;YACxD,OAAO,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;SAC3F;QAED,IAAI,IAAA,iBAAS,EAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE;YAC3C,OAAO,CAAC,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC;SAC9C;aAAM,IAAI,IAAA,iBAAS,EAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE;YACtD,OAAO,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;SACvF;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,YAAoB;QACpD,MAAM,uBAAuB,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9E,IAAI,uBAAuB,EAAE;YAC3B,OAAO,uBAAuB,CAAC;SAChC;QAED,MAAM,QAAQ,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QAChE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,YAAoB,EAAE,UAA+B,EAAE;QACnF,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACtE,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;CACF,CAAA;4BApDY,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAGE,WAAA,IAAA,2BAAc,GAAE,CAAA;;GAFlB,iBAAiB,CAoD7B"}