@flusys/nestjs-email 1.0.0-rc

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 (131) hide show
  1. package/README.md +552 -0
  2. package/cjs/config/email-config.service.js +81 -0
  3. package/cjs/config/email.constants.js +22 -0
  4. package/cjs/config/index.js +19 -0
  5. package/cjs/controllers/email-config.controller.js +101 -0
  6. package/cjs/controllers/email-send.controller.js +142 -0
  7. package/cjs/controllers/email-template.controller.js +128 -0
  8. package/cjs/controllers/index.js +20 -0
  9. package/cjs/docs/email-swagger.config.js +176 -0
  10. package/cjs/docs/index.js +11 -0
  11. package/cjs/dtos/email-config.dto.js +238 -0
  12. package/cjs/dtos/email-send.dto.js +444 -0
  13. package/cjs/dtos/email-template.dto.js +283 -0
  14. package/cjs/dtos/index.js +20 -0
  15. package/cjs/entities/email-config-base.entity.js +111 -0
  16. package/cjs/entities/email-config-with-company.entity.js +63 -0
  17. package/cjs/entities/email-config.entity.js +25 -0
  18. package/cjs/entities/email-template-base.entity.js +133 -0
  19. package/cjs/entities/email-template-with-company.entity.js +65 -0
  20. package/cjs/entities/email-template.entity.js +30 -0
  21. package/cjs/entities/index.js +41 -0
  22. package/cjs/enums/email-provider-type.enum.js +18 -0
  23. package/cjs/enums/index.js +18 -0
  24. package/cjs/index.js +28 -0
  25. package/cjs/interfaces/email-config.interface.js +4 -0
  26. package/cjs/interfaces/email-module-options.interface.js +4 -0
  27. package/cjs/interfaces/email-provider.interface.js +4 -0
  28. package/cjs/interfaces/email-template.interface.js +4 -0
  29. package/cjs/interfaces/index.js +21 -0
  30. package/cjs/modules/email.module.js +161 -0
  31. package/cjs/modules/index.js +18 -0
  32. package/cjs/providers/email-factory.service.js +144 -0
  33. package/cjs/providers/email-provider.registry.js +41 -0
  34. package/cjs/providers/index.js +22 -0
  35. package/cjs/providers/mailgun-provider.js +107 -0
  36. package/cjs/providers/sendgrid-provider.js +135 -0
  37. package/cjs/providers/smtp-provider.js +166 -0
  38. package/cjs/services/email-datasource.provider.js +187 -0
  39. package/cjs/services/email-provider-config.service.js +150 -0
  40. package/cjs/services/email-send.service.js +211 -0
  41. package/cjs/services/email-template.service.js +158 -0
  42. package/cjs/services/index.js +21 -0
  43. package/cjs/utils/email-templates.util.js +129 -0
  44. package/cjs/utils/index.js +18 -0
  45. package/config/email-config.service.d.ts +16 -0
  46. package/config/email.constants.d.ts +2 -0
  47. package/config/index.d.ts +2 -0
  48. package/controllers/email-config.controller.d.ts +17 -0
  49. package/controllers/email-send.controller.d.ts +11 -0
  50. package/controllers/email-template.controller.d.ts +25 -0
  51. package/controllers/index.d.ts +3 -0
  52. package/docs/email-swagger.config.d.ts +3 -0
  53. package/docs/index.d.ts +1 -0
  54. package/dtos/email-config.dto.d.ts +30 -0
  55. package/dtos/email-send.dto.d.ts +46 -0
  56. package/dtos/email-template.dto.d.ts +39 -0
  57. package/dtos/index.d.ts +3 -0
  58. package/entities/email-config-base.entity.d.ts +11 -0
  59. package/entities/email-config-with-company.entity.d.ts +4 -0
  60. package/entities/email-config.entity.d.ts +3 -0
  61. package/entities/email-template-base.entity.d.ts +14 -0
  62. package/entities/email-template-with-company.entity.d.ts +4 -0
  63. package/entities/email-template.entity.d.ts +3 -0
  64. package/entities/index.d.ts +7 -0
  65. package/enums/email-provider-type.enum.d.ts +5 -0
  66. package/enums/index.d.ts +1 -0
  67. package/fesm/config/email-config.service.js +71 -0
  68. package/fesm/config/email.constants.js +4 -0
  69. package/fesm/config/index.js +2 -0
  70. package/fesm/controllers/email-config.controller.js +91 -0
  71. package/fesm/controllers/email-send.controller.js +132 -0
  72. package/fesm/controllers/email-template.controller.js +118 -0
  73. package/fesm/controllers/index.js +3 -0
  74. package/fesm/docs/email-swagger.config.js +172 -0
  75. package/fesm/docs/index.js +1 -0
  76. package/fesm/dtos/email-config.dto.js +217 -0
  77. package/fesm/dtos/email-send.dto.js +414 -0
  78. package/fesm/dtos/email-template.dto.js +262 -0
  79. package/fesm/dtos/index.js +3 -0
  80. package/fesm/entities/email-config-base.entity.js +101 -0
  81. package/fesm/entities/email-config-with-company.entity.js +53 -0
  82. package/fesm/entities/email-config.entity.js +15 -0
  83. package/fesm/entities/email-template-base.entity.js +123 -0
  84. package/fesm/entities/email-template-with-company.entity.js +55 -0
  85. package/fesm/entities/email-template.entity.js +20 -0
  86. package/fesm/entities/index.js +20 -0
  87. package/fesm/enums/email-provider-type.enum.js +8 -0
  88. package/fesm/enums/index.js +1 -0
  89. package/fesm/index.js +11 -0
  90. package/fesm/interfaces/email-config.interface.js +1 -0
  91. package/fesm/interfaces/email-module-options.interface.js +1 -0
  92. package/fesm/interfaces/email-provider.interface.js +1 -0
  93. package/fesm/interfaces/email-template.interface.js +1 -0
  94. package/fesm/interfaces/index.js +4 -0
  95. package/fesm/modules/email.module.js +151 -0
  96. package/fesm/modules/index.js +1 -0
  97. package/fesm/providers/email-factory.service.js +93 -0
  98. package/fesm/providers/email-provider.registry.js +31 -0
  99. package/fesm/providers/index.js +5 -0
  100. package/fesm/providers/mailgun-provider.js +97 -0
  101. package/fesm/providers/sendgrid-provider.js +125 -0
  102. package/fesm/providers/smtp-provider.js +115 -0
  103. package/fesm/services/email-datasource.provider.js +136 -0
  104. package/fesm/services/email-provider-config.service.js +140 -0
  105. package/fesm/services/email-send.service.js +201 -0
  106. package/fesm/services/email-template.service.js +148 -0
  107. package/fesm/services/index.js +4 -0
  108. package/fesm/utils/email-templates.util.js +111 -0
  109. package/fesm/utils/index.js +1 -0
  110. package/index.d.ts +10 -0
  111. package/interfaces/email-config.interface.d.ts +34 -0
  112. package/interfaces/email-module-options.interface.d.ts +25 -0
  113. package/interfaces/email-provider.interface.d.ts +34 -0
  114. package/interfaces/email-template.interface.d.ts +64 -0
  115. package/interfaces/index.d.ts +4 -0
  116. package/modules/email.module.d.ts +9 -0
  117. package/modules/index.d.ts +1 -0
  118. package/package.json +105 -0
  119. package/providers/email-factory.service.d.ts +14 -0
  120. package/providers/email-provider.registry.d.ts +10 -0
  121. package/providers/index.d.ts +5 -0
  122. package/providers/mailgun-provider.d.ts +11 -0
  123. package/providers/sendgrid-provider.d.ts +11 -0
  124. package/providers/smtp-provider.d.ts +11 -0
  125. package/services/email-datasource.provider.d.ts +25 -0
  126. package/services/email-provider-config.service.d.ts +32 -0
  127. package/services/email-send.service.d.ts +20 -0
  128. package/services/email-template.service.d.ts +31 -0
  129. package/services/index.d.ts +4 -0
  130. package/utils/email-templates.util.d.ts +2 -0
  131. package/utils/index.d.ts +1 -0
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "EmailConfigController", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return EmailConfigController;
9
+ }
10
+ });
11
+ const _classes = require("@flusys/nestjs-shared/classes");
12
+ const _common = require("@nestjs/common");
13
+ const _swagger = require("@nestjs/swagger");
14
+ const _dtos = require("../dtos");
15
+ const _services = require("../services");
16
+ function _define_property(obj, key, value) {
17
+ if (key in obj) {
18
+ Object.defineProperty(obj, key, {
19
+ value: value,
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true
23
+ });
24
+ } else {
25
+ obj[key] = value;
26
+ }
27
+ return obj;
28
+ }
29
+ function _ts_decorate(decorators, target, key, desc) {
30
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
31
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32
+ 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;
33
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
34
+ }
35
+ function _ts_metadata(k, v) {
36
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
37
+ }
38
+ function _ts_param(paramIndex, decorator) {
39
+ return function(target, key) {
40
+ decorator(target, key, paramIndex);
41
+ };
42
+ }
43
+ let EmailConfigController = class EmailConfigController extends (0, _classes.createApiController)(_dtos.CreateEmailConfigDto, _dtos.UpdateEmailConfigDto, _dtos.EmailConfigResponseDto, {
44
+ security: {
45
+ insert: {
46
+ level: 'permission',
47
+ permissions: [
48
+ _classes.EMAIL_CONFIG_PERMISSIONS.CREATE
49
+ ]
50
+ },
51
+ insertMany: {
52
+ level: 'permission',
53
+ permissions: [
54
+ _classes.EMAIL_CONFIG_PERMISSIONS.CREATE
55
+ ]
56
+ },
57
+ getById: {
58
+ level: 'permission',
59
+ permissions: [
60
+ _classes.EMAIL_CONFIG_PERMISSIONS.READ
61
+ ]
62
+ },
63
+ getAll: {
64
+ level: 'permission',
65
+ permissions: [
66
+ _classes.EMAIL_CONFIG_PERMISSIONS.READ
67
+ ]
68
+ },
69
+ update: {
70
+ level: 'permission',
71
+ permissions: [
72
+ _classes.EMAIL_CONFIG_PERMISSIONS.UPDATE
73
+ ]
74
+ },
75
+ updateMany: {
76
+ level: 'permission',
77
+ permissions: [
78
+ _classes.EMAIL_CONFIG_PERMISSIONS.UPDATE
79
+ ]
80
+ },
81
+ delete: {
82
+ level: 'permission',
83
+ permissions: [
84
+ _classes.EMAIL_CONFIG_PERMISSIONS.DELETE
85
+ ]
86
+ }
87
+ }
88
+ }) {
89
+ constructor(emailConfigService){
90
+ super(emailConfigService), _define_property(this, "emailConfigService", void 0), this.emailConfigService = emailConfigService;
91
+ }
92
+ };
93
+ EmailConfigController = _ts_decorate([
94
+ (0, _swagger.ApiTags)('Email Config'),
95
+ (0, _common.Controller)('email/email-config'),
96
+ _ts_param(0, (0, _common.Inject)(_services.EmailProviderConfigService)),
97
+ _ts_metadata("design:type", Function),
98
+ _ts_metadata("design:paramtypes", [
99
+ typeof _services.EmailProviderConfigService === "undefined" ? Object : _services.EmailProviderConfigService
100
+ ])
101
+ ], EmailConfigController);
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "EmailSendController", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return EmailSendController;
9
+ }
10
+ });
11
+ const _decorators = require("@flusys/nestjs-shared/decorators");
12
+ const _guards = require("@flusys/nestjs-shared/guards");
13
+ const _interfaces = require("@flusys/nestjs-shared/interfaces");
14
+ const _common = require("@nestjs/common");
15
+ const _swagger = require("@nestjs/swagger");
16
+ const _dtos = require("../dtos");
17
+ const _services = require("../services");
18
+ function _define_property(obj, key, value) {
19
+ if (key in obj) {
20
+ Object.defineProperty(obj, key, {
21
+ value: value,
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true
25
+ });
26
+ } else {
27
+ obj[key] = value;
28
+ }
29
+ return obj;
30
+ }
31
+ function _ts_decorate(decorators, target, key, desc) {
32
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
34
+ 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;
35
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
36
+ }
37
+ function _ts_metadata(k, v) {
38
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
39
+ }
40
+ function _ts_param(paramIndex, decorator) {
41
+ return function(target, key) {
42
+ decorator(target, key, paramIndex);
43
+ };
44
+ }
45
+ let EmailSendController = class EmailSendController {
46
+ async sendEmail(dto, user) {
47
+ const result = await this.emailSendService.sendEmail(dto, user);
48
+ return {
49
+ success: result.success,
50
+ message: result.success ? 'Email sent successfully' : 'Failed to send email',
51
+ data: {
52
+ success: result.success,
53
+ messageId: result.messageId,
54
+ error: result.error
55
+ }
56
+ };
57
+ }
58
+ async sendTemplateEmail(dto, user) {
59
+ const result = await this.emailSendService.sendTemplateEmail(dto, user);
60
+ return {
61
+ success: result.success,
62
+ message: result.success ? 'Template email sent successfully' : 'Failed to send template email',
63
+ data: {
64
+ success: result.success,
65
+ messageId: result.messageId,
66
+ error: result.error
67
+ }
68
+ };
69
+ }
70
+ async sendTestEmail(dto, user) {
71
+ const result = await this.emailSendService.sendTestEmail(dto.emailConfigId, dto.recipient, user);
72
+ return {
73
+ success: result.success,
74
+ message: result.success ? 'Test email sent successfully' : 'Failed to send test email',
75
+ data: {
76
+ success: result.success,
77
+ messageId: result.messageId,
78
+ error: result.error
79
+ }
80
+ };
81
+ }
82
+ constructor(emailSendService){
83
+ _define_property(this, "emailSendService", void 0);
84
+ this.emailSendService = emailSendService;
85
+ }
86
+ };
87
+ _ts_decorate([
88
+ (0, _common.Post)('direct'),
89
+ (0, _decorators.RequirePermission)('email.send'),
90
+ (0, _swagger.ApiOperation)({
91
+ summary: 'Send email directly with custom content'
92
+ }),
93
+ _ts_param(0, (0, _common.Body)()),
94
+ _ts_param(1, (0, _decorators.CurrentUser)()),
95
+ _ts_metadata("design:type", Function),
96
+ _ts_metadata("design:paramtypes", [
97
+ typeof _dtos.SendEmailDto === "undefined" ? Object : _dtos.SendEmailDto,
98
+ typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
99
+ ]),
100
+ _ts_metadata("design:returntype", Promise)
101
+ ], EmailSendController.prototype, "sendEmail", null);
102
+ _ts_decorate([
103
+ (0, _common.Post)('template'),
104
+ (0, _decorators.RequirePermission)('email.send'),
105
+ (0, _swagger.ApiOperation)({
106
+ summary: 'Send email using a template with variable interpolation'
107
+ }),
108
+ _ts_param(0, (0, _common.Body)()),
109
+ _ts_param(1, (0, _decorators.CurrentUser)()),
110
+ _ts_metadata("design:type", Function),
111
+ _ts_metadata("design:paramtypes", [
112
+ typeof _dtos.SendTemplateEmailDto === "undefined" ? Object : _dtos.SendTemplateEmailDto,
113
+ typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
114
+ ]),
115
+ _ts_metadata("design:returntype", Promise)
116
+ ], EmailSendController.prototype, "sendTemplateEmail", null);
117
+ _ts_decorate([
118
+ (0, _common.Post)('test'),
119
+ (0, _decorators.RequirePermission)('email.send'),
120
+ (0, _swagger.ApiOperation)({
121
+ summary: 'Send a test email to verify configuration'
122
+ }),
123
+ _ts_param(0, (0, _common.Body)()),
124
+ _ts_param(1, (0, _decorators.CurrentUser)()),
125
+ _ts_metadata("design:type", Function),
126
+ _ts_metadata("design:paramtypes", [
127
+ typeof _dtos.TestEmailDto === "undefined" ? Object : _dtos.TestEmailDto,
128
+ typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
129
+ ]),
130
+ _ts_metadata("design:returntype", Promise)
131
+ ], EmailSendController.prototype, "sendTestEmail", null);
132
+ EmailSendController = _ts_decorate([
133
+ (0, _swagger.ApiTags)('Email Send'),
134
+ (0, _swagger.ApiBearerAuth)(),
135
+ (0, _common.Controller)('email/send'),
136
+ (0, _common.UseGuards)(_guards.JwtAuthGuard),
137
+ _ts_param(0, (0, _common.Inject)(_services.EmailSendService)),
138
+ _ts_metadata("design:type", Function),
139
+ _ts_metadata("design:paramtypes", [
140
+ typeof _services.EmailSendService === "undefined" ? Object : _services.EmailSendService
141
+ ])
142
+ ], EmailSendController);
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "EmailTemplateController", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return EmailTemplateController;
9
+ }
10
+ });
11
+ const _classes = require("@flusys/nestjs-shared/classes");
12
+ const _decorators = require("@flusys/nestjs-shared/decorators");
13
+ const _guards = require("@flusys/nestjs-shared/guards");
14
+ const _interfaces = require("@flusys/nestjs-shared/interfaces");
15
+ const _common = require("@nestjs/common");
16
+ const _swagger = require("@nestjs/swagger");
17
+ const _dtos = require("../dtos");
18
+ const _services = require("../services");
19
+ function _define_property(obj, key, value) {
20
+ if (key in obj) {
21
+ Object.defineProperty(obj, key, {
22
+ value: value,
23
+ enumerable: true,
24
+ configurable: true,
25
+ writable: true
26
+ });
27
+ } else {
28
+ obj[key] = value;
29
+ }
30
+ return obj;
31
+ }
32
+ function _ts_decorate(decorators, target, key, desc) {
33
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
35
+ 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;
36
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
37
+ }
38
+ function _ts_metadata(k, v) {
39
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
40
+ }
41
+ function _ts_param(paramIndex, decorator) {
42
+ return function(target, key) {
43
+ decorator(target, key, paramIndex);
44
+ };
45
+ }
46
+ let EmailTemplateController = class EmailTemplateController extends (0, _classes.createApiController)(_dtos.CreateEmailTemplateDto, _dtos.UpdateEmailTemplateDto, _dtos.EmailTemplateResponseDto, {
47
+ security: {
48
+ insert: {
49
+ level: 'permission',
50
+ permissions: [
51
+ _classes.EMAIL_TEMPLATE_PERMISSIONS.CREATE
52
+ ]
53
+ },
54
+ insertMany: {
55
+ level: 'permission',
56
+ permissions: [
57
+ _classes.EMAIL_TEMPLATE_PERMISSIONS.CREATE
58
+ ]
59
+ },
60
+ getById: {
61
+ level: 'permission',
62
+ permissions: [
63
+ _classes.EMAIL_TEMPLATE_PERMISSIONS.READ
64
+ ]
65
+ },
66
+ getAll: {
67
+ level: 'permission',
68
+ permissions: [
69
+ _classes.EMAIL_TEMPLATE_PERMISSIONS.READ
70
+ ]
71
+ },
72
+ update: {
73
+ level: 'permission',
74
+ permissions: [
75
+ _classes.EMAIL_TEMPLATE_PERMISSIONS.UPDATE
76
+ ]
77
+ },
78
+ updateMany: {
79
+ level: 'permission',
80
+ permissions: [
81
+ _classes.EMAIL_TEMPLATE_PERMISSIONS.UPDATE
82
+ ]
83
+ },
84
+ delete: {
85
+ level: 'permission',
86
+ permissions: [
87
+ _classes.EMAIL_TEMPLATE_PERMISSIONS.DELETE
88
+ ]
89
+ }
90
+ }
91
+ }) {
92
+ async getBySlug(body, user) {
93
+ const template = await this.emailTemplateService.findBySlug(body.slug, user);
94
+ return {
95
+ success: true,
96
+ data: template
97
+ };
98
+ }
99
+ constructor(emailTemplateService){
100
+ super(emailTemplateService), _define_property(this, "emailTemplateService", void 0), this.emailTemplateService = emailTemplateService;
101
+ }
102
+ };
103
+ _ts_decorate([
104
+ (0, _common.Post)('get-by-slug'),
105
+ (0, _common.UseGuards)(_guards.JwtAuthGuard),
106
+ (0, _swagger.ApiBearerAuth)(),
107
+ (0, _decorators.RequirePermission)(_classes.EMAIL_TEMPLATE_PERMISSIONS.READ),
108
+ (0, _swagger.ApiOperation)({
109
+ summary: 'Get email template by slug'
110
+ }),
111
+ _ts_param(0, (0, _common.Body)()),
112
+ _ts_param(1, (0, _decorators.CurrentUser)()),
113
+ _ts_metadata("design:type", Function),
114
+ _ts_metadata("design:paramtypes", [
115
+ Object,
116
+ typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
117
+ ]),
118
+ _ts_metadata("design:returntype", Promise)
119
+ ], EmailTemplateController.prototype, "getBySlug", null);
120
+ EmailTemplateController = _ts_decorate([
121
+ (0, _swagger.ApiTags)('Email Template'),
122
+ (0, _common.Controller)('email/email-template'),
123
+ _ts_param(0, (0, _common.Inject)(_services.EmailTemplateService)),
124
+ _ts_metadata("design:type", Function),
125
+ _ts_metadata("design:paramtypes", [
126
+ typeof _services.EmailTemplateService === "undefined" ? Object : _services.EmailTemplateService
127
+ ])
128
+ ], EmailTemplateController);
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ _export_star(require("./email-config.controller"), exports);
6
+ _export_star(require("./email-template.controller"), exports);
7
+ _export_star(require("./email-send.controller"), exports);
8
+ function _export_star(from, to) {
9
+ Object.keys(from).forEach(function(k) {
10
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
11
+ Object.defineProperty(to, k, {
12
+ enumerable: true,
13
+ get: function() {
14
+ return from[k];
15
+ }
16
+ });
17
+ }
18
+ });
19
+ return from;
20
+ }
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "emailSwaggerConfig", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return emailSwaggerConfig;
9
+ }
10
+ });
11
+ /** Schema properties to exclude when company feature is disabled */ const COMPANY_SCHEMA_EXCLUSIONS = [
12
+ {
13
+ schemaName: 'EmailConfigResponseDto',
14
+ properties: [
15
+ 'companyId'
16
+ ]
17
+ },
18
+ {
19
+ schemaName: 'EmailTemplateResponseDto',
20
+ properties: [
21
+ 'companyId'
22
+ ]
23
+ }
24
+ ];
25
+ function emailSwaggerConfig(bootstrapConfig) {
26
+ const enableCompanyFeature = bootstrapConfig?.enableCompanyFeature ?? true;
27
+ return {
28
+ title: 'Email API',
29
+ description: enableCompanyFeature ? `
30
+ # Email Management API
31
+
32
+ Complete email management system with multi-tenant and company support.
33
+
34
+ ## Features
35
+
36
+ ### 📧 Email Configuration
37
+ - Multiple email providers (SMTP, SendGrid, Mailgun)
38
+ - Provider-specific configurations
39
+ - Default sender settings
40
+ - **Company-level email configs**
41
+
42
+ ### 📝 Email Templates
43
+ - Visual template builder
44
+ - Variable interpolation ({{variable}})
45
+ - HTML and plain text support
46
+ - Template versioning
47
+ - **Company isolation**
48
+
49
+ ### ✉️ Email Sending
50
+ - Direct email sending
51
+ - Template-based sending
52
+ - Attachments support
53
+ - CC/BCC recipients
54
+
55
+ ### 🔒 Security
56
+ - JWT authentication required
57
+ - **Company isolation**
58
+ - Secure credential storage
59
+
60
+ ## Supported Providers
61
+
62
+ ### SMTP
63
+ - Universal email protocol
64
+ - Custom server support
65
+ - TLS/SSL encryption
66
+
67
+ ### SendGrid (optional)
68
+ - Cloud email service
69
+ - High deliverability
70
+ - Install: \`npm install @sendgrid/mail\`
71
+
72
+ ### Mailgun (optional)
73
+ - Developer-friendly API
74
+ - Detailed analytics
75
+ - Install: \`npm install mailgun.js\`
76
+
77
+ ## Template Variables
78
+
79
+ Templates support Handlebars-style variables:
80
+ - \`{{userName}}\` - Simple variable
81
+ - \`{{user.email}}\` - Nested properties
82
+ - Variables are replaced at send time
83
+
84
+ ## Multi-Tenant Support
85
+
86
+ Emails are automatically isolated by:
87
+ - **Company ID**: Company-level templates and configs
88
+
89
+ All queries automatically filter by current user's company context.
90
+
91
+ ## API Endpoints
92
+
93
+ All email endpoints are prefixed with \`/email\`:
94
+ - \`/email/email-config/*\` - Email provider configurations
95
+ - \`/email/email-template/*\` - Email templates
96
+ - \`/email/email-send/*\` - Send emails
97
+
98
+ ## Getting Started
99
+
100
+ 1. **Authenticate**: Obtain JWT token from /auth/login
101
+ 2. **Configure Provider**: Create email config via /email/email-config/insert
102
+ 3. **Create Templates**: Add templates via /email/email-template/insert
103
+ 4. **Send Emails**: Send via /email/email-send/send or /email/email-send/send-template
104
+ ` : `
105
+ # Email Management API
106
+
107
+ Complete email management system.
108
+
109
+ ## Features
110
+
111
+ ### 📧 Email Configuration
112
+ - Multiple email providers (SMTP, SendGrid, Mailgun)
113
+ - Provider-specific configurations
114
+ - Default sender settings
115
+
116
+ ### 📝 Email Templates
117
+ - Visual template builder
118
+ - Variable interpolation ({{variable}})
119
+ - HTML and plain text support
120
+ - Template versioning
121
+
122
+ ### ✉️ Email Sending
123
+ - Direct email sending
124
+ - Template-based sending
125
+ - Attachments support
126
+ - CC/BCC recipients
127
+
128
+ ### 🔒 Security
129
+ - JWT authentication required
130
+ - Secure credential storage
131
+
132
+ ## Supported Providers
133
+
134
+ ### SMTP
135
+ - Universal email protocol
136
+ - Custom server support
137
+ - TLS/SSL encryption
138
+
139
+ ### SendGrid (optional)
140
+ - Cloud email service
141
+ - High deliverability
142
+ - Install: \`npm install @sendgrid/mail\`
143
+
144
+ ### Mailgun (optional)
145
+ - Developer-friendly API
146
+ - Detailed analytics
147
+ - Install: \`npm install mailgun.js\`
148
+
149
+ ## Template Variables
150
+
151
+ Templates support Handlebars-style variables:
152
+ - \`{{userName}}\` - Simple variable
153
+ - \`{{user.email}}\` - Nested properties
154
+ - Variables are replaced at send time
155
+
156
+ ## API Endpoints
157
+
158
+ All email endpoints are prefixed with \`/email\`:
159
+ - \`/email/email-config/*\` - Email provider configurations
160
+ - \`/email/email-template/*\` - Email templates
161
+ - \`/email/email-send/*\` - Send emails
162
+
163
+ ## Getting Started
164
+
165
+ 1. **Authenticate**: Obtain JWT token from /auth/login
166
+ 2. **Configure Provider**: Create email config via /email/email-config/insert
167
+ 3. **Create Templates**: Add templates via /email/email-template/insert
168
+ 4. **Send Emails**: Send via /email/email-send/send or /email/email-send/send-template
169
+ `,
170
+ version: '1.0',
171
+ path: 'api/docs/email',
172
+ bearerAuth: true,
173
+ excludeTags: [],
174
+ excludeSchemaProperties: enableCompanyFeature ? undefined : COMPANY_SCHEMA_EXCLUSIONS
175
+ };
176
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "emailSwaggerConfig", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _emailswaggerconfig.emailSwaggerConfig;
9
+ }
10
+ });
11
+ const _emailswaggerconfig = require("./email-swagger.config");