@flusys/nestjs-email 1.1.0-beta → 2.0.0

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 (100) hide show
  1. package/README.md +589 -0
  2. package/cjs/config/email.constants.js +0 -18
  3. package/cjs/config/index.js +0 -1
  4. package/cjs/controllers/email-config.controller.js +46 -4
  5. package/cjs/controllers/email-send.controller.js +13 -26
  6. package/cjs/controllers/email-template.controller.js +60 -11
  7. package/cjs/docs/email-swagger.config.js +18 -80
  8. package/cjs/dtos/email-config.dto.js +6 -106
  9. package/cjs/dtos/email-send.dto.js +101 -123
  10. package/cjs/dtos/email-template.dto.js +41 -103
  11. package/cjs/entities/email-config-with-company.entity.js +2 -2
  12. package/cjs/entities/email-config.entity.js +92 -3
  13. package/cjs/entities/email-template-with-company.entity.js +5 -3
  14. package/cjs/entities/email-template.entity.js +119 -3
  15. package/cjs/entities/index.js +34 -19
  16. package/cjs/index.js +1 -0
  17. package/cjs/interfaces/email-provider.interface.js +1 -3
  18. package/cjs/modules/email.module.js +50 -104
  19. package/cjs/providers/email-factory.service.js +37 -109
  20. package/cjs/providers/email-provider.registry.js +5 -15
  21. package/cjs/providers/mailgun-provider.js +54 -58
  22. package/cjs/providers/sendgrid-provider.js +68 -92
  23. package/cjs/providers/smtp-provider.js +58 -69
  24. package/cjs/{config → services}/email-config.service.js +9 -32
  25. package/cjs/services/email-datasource.provider.js +17 -104
  26. package/cjs/services/email-provider-config.service.js +28 -58
  27. package/cjs/services/email-send.service.js +120 -125
  28. package/cjs/services/email-template.service.js +62 -85
  29. package/cjs/services/index.js +2 -1
  30. package/cjs/utils/email-templates.util.js +64 -0
  31. package/cjs/utils/index.js +18 -0
  32. package/config/email.constants.d.ts +0 -9
  33. package/config/index.d.ts +0 -1
  34. package/controllers/email-send.controller.d.ts +5 -12
  35. package/controllers/email-template.controller.d.ts +5 -7
  36. package/dtos/email-config.dto.d.ts +5 -13
  37. package/dtos/email-send.dto.d.ts +17 -21
  38. package/dtos/email-template.dto.d.ts +5 -16
  39. package/entities/email-config-with-company.entity.d.ts +2 -2
  40. package/entities/email-config.entity.d.ts +10 -2
  41. package/entities/email-template-with-company.entity.d.ts +2 -2
  42. package/entities/email-template.entity.d.ts +13 -2
  43. package/entities/index.d.ts +9 -3
  44. package/fesm/config/email.constants.js +0 -9
  45. package/fesm/config/index.js +0 -1
  46. package/fesm/controllers/email-config.controller.js +49 -7
  47. package/fesm/controllers/email-send.controller.js +13 -26
  48. package/fesm/controllers/email-template.controller.js +61 -12
  49. package/fesm/docs/email-swagger.config.js +21 -86
  50. package/fesm/dtos/email-config.dto.js +9 -115
  51. package/fesm/dtos/email-send.dto.js +103 -139
  52. package/fesm/dtos/email-template.dto.js +43 -111
  53. package/fesm/entities/email-config-with-company.entity.js +2 -2
  54. package/fesm/entities/email-config.entity.js +93 -4
  55. package/fesm/entities/email-template-with-company.entity.js +5 -3
  56. package/fesm/entities/email-template.entity.js +120 -4
  57. package/fesm/entities/index.js +22 -16
  58. package/fesm/index.js +1 -0
  59. package/fesm/interfaces/email-config.interface.js +1 -3
  60. package/fesm/interfaces/email-module-options.interface.js +1 -3
  61. package/fesm/interfaces/email-provider.interface.js +1 -5
  62. package/fesm/interfaces/email-template.interface.js +1 -3
  63. package/fesm/modules/email.module.js +52 -106
  64. package/fesm/providers/email-factory.service.js +38 -69
  65. package/fesm/providers/email-provider.registry.js +6 -19
  66. package/fesm/providers/mailgun-provider.js +55 -63
  67. package/fesm/providers/sendgrid-provider.js +69 -97
  68. package/fesm/providers/smtp-provider.js +59 -73
  69. package/fesm/{config → services}/email-config.service.js +9 -32
  70. package/fesm/services/email-datasource.provider.js +18 -64
  71. package/fesm/services/email-provider-config.service.js +26 -56
  72. package/fesm/services/email-send.service.js +118 -123
  73. package/fesm/services/email-template.service.js +60 -83
  74. package/fesm/services/index.js +2 -1
  75. package/fesm/utils/email-templates.util.js +47 -0
  76. package/fesm/utils/index.js +1 -0
  77. package/index.d.ts +1 -0
  78. package/interfaces/email-config.interface.d.ts +6 -0
  79. package/interfaces/email-module-options.interface.d.ts +0 -5
  80. package/modules/email.module.d.ts +1 -2
  81. package/package.json +4 -4
  82. package/providers/email-factory.service.d.ts +4 -7
  83. package/providers/mailgun-provider.d.ts +6 -2
  84. package/providers/sendgrid-provider.d.ts +6 -2
  85. package/providers/smtp-provider.d.ts +7 -2
  86. package/services/email-config.service.d.ts +12 -0
  87. package/services/email-datasource.provider.d.ts +3 -6
  88. package/services/email-provider-config.service.d.ts +3 -3
  89. package/services/email-send.service.d.ts +11 -3
  90. package/services/email-template.service.d.ts +5 -4
  91. package/services/index.d.ts +2 -1
  92. package/utils/email-templates.util.d.ts +2 -0
  93. package/utils/index.d.ts +1 -0
  94. package/cjs/entities/email-config-base.entity.js +0 -111
  95. package/cjs/entities/email-template-base.entity.js +0 -134
  96. package/config/email-config.service.d.ts +0 -13
  97. package/entities/email-config-base.entity.d.ts +0 -11
  98. package/entities/email-template-base.entity.d.ts +0 -14
  99. package/fesm/entities/email-config-base.entity.js +0 -101
  100. package/fesm/entities/email-template-base.entity.js +0 -124
@@ -1,11 +1,15 @@
1
1
  import { IEmailProvider, IEmailSendOptions, IEmailSendResult, ISendGridConfig } from '../interfaces';
2
2
  export declare class SendGridProvider implements IEmailProvider {
3
- private logger;
3
+ private readonly logger;
4
4
  private sgMail;
5
- private config;
5
+ private apiKey;
6
6
  initialize(config: ISendGridConfig): Promise<void>;
7
7
  sendEmail(options: IEmailSendOptions): Promise<IEmailSendResult>;
8
8
  sendBulkEmails(options: IEmailSendOptions[]): Promise<IEmailSendResult[]>;
9
9
  healthCheck(): Promise<boolean>;
10
10
  close(): Promise<void>;
11
+ private buildMessage;
12
+ private toArray;
13
+ private extractError;
14
+ private handleError;
11
15
  }
@@ -1,11 +1,16 @@
1
1
  import { IEmailProvider, IEmailSendOptions, IEmailSendResult, ISmtpConfig } from '../interfaces';
2
2
  export declare class SmtpProvider implements IEmailProvider {
3
- private logger;
3
+ private readonly logger;
4
4
  private transporter;
5
- private config;
6
5
  initialize(config: ISmtpConfig): Promise<void>;
7
6
  sendEmail(options: IEmailSendOptions): Promise<IEmailSendResult>;
8
7
  sendBulkEmails(options: IEmailSendOptions[]): Promise<IEmailSendResult[]>;
9
8
  healthCheck(): Promise<boolean>;
10
9
  close(): Promise<void>;
10
+ private verifyConnection;
11
+ private formatFrom;
12
+ private joinAddresses;
13
+ private withTimeout;
14
+ private extractError;
15
+ private handleError;
11
16
  }
@@ -0,0 +1,12 @@
1
+ import { DatabaseMode } from '@flusys/nestjs-core';
2
+ import { IModuleConfigService } from '@flusys/nestjs-shared/interfaces';
3
+ import { EmailModuleOptions } from '../interfaces';
4
+ export declare class EmailConfigService implements IModuleConfigService {
5
+ private readonly options;
6
+ constructor(options: EmailModuleOptions);
7
+ isCompanyFeatureEnabled(): boolean;
8
+ getDatabaseMode(): DatabaseMode;
9
+ isMultiTenant(): boolean;
10
+ getDefaultFromName(): string;
11
+ getOptions(): EmailModuleOptions;
12
+ }
@@ -3,9 +3,9 @@ import { IDatabaseConfig, ITenantDatabaseConfig } from '@flusys/nestjs-core';
3
3
  import { Logger } from '@nestjs/common';
4
4
  import { Request } from 'express';
5
5
  import { DataSource } from 'typeorm';
6
- import { EmailModuleOptions } from '../interfaces';
6
+ import { EmailConfigService } from './email-config.service';
7
7
  export declare class EmailDataSourceProvider extends MultiTenantDataSourceService {
8
- private readonly emailOptions;
8
+ private readonly configService;
9
9
  protected readonly logger: Logger;
10
10
  protected static readonly tenantConnections: Map<string, DataSource>;
11
11
  protected static singleDataSource: DataSource | null;
@@ -13,12 +13,9 @@ export declare class EmailDataSourceProvider extends MultiTenantDataSourceServic
13
13
  protected static initialized: boolean;
14
14
  protected static readonly connectionLocks: Map<string, Promise<DataSource>>;
15
15
  protected static singleConnectionLock: Promise<DataSource> | null;
16
- constructor(emailOptions: EmailModuleOptions, request?: Request);
16
+ constructor(configService: EmailConfigService, request?: Request);
17
17
  private static buildParentOptions;
18
- getEnableCompanyFeature(): boolean;
19
18
  getEnableCompanyFeatureForTenant(tenant?: ITenantDatabaseConfig): boolean;
20
- getEnableCompanyFeatureForCurrentTenant(): boolean;
21
- getEmailEntities(enableCompanyFeature?: boolean): Promise<any[]>;
22
19
  protected createDataSourceFromConfig(config: IDatabaseConfig): Promise<DataSource>;
23
20
  protected getSingleDataSource(): Promise<DataSource>;
24
21
  protected getOrCreateTenantConnection(tenant: ITenantDatabaseConfig): Promise<DataSource>;
@@ -3,9 +3,9 @@ import { FilterAndPaginationDto } from '@flusys/nestjs-shared/dtos';
3
3
  import { ILoggedUserInfo } from '@flusys/nestjs-shared/interfaces';
4
4
  import { UtilsService } from '@flusys/nestjs-shared/modules';
5
5
  import { EntityTarget, Repository, SelectQueryBuilder } from 'typeorm';
6
- import { EmailConfigService } from '../config';
6
+ import { EmailConfigService } from './email-config.service';
7
7
  import { CreateEmailConfigDto, UpdateEmailConfigDto } from '../dtos';
8
- import { EmailConfigBase } from '../entities';
8
+ import { EmailConfig, EmailConfigBase } from '../entities';
9
9
  import { EmailProviderTypeEnum } from '../enums';
10
10
  import { IEmailConfig } from '../interfaces';
11
11
  import { EmailDataSourceProvider } from './email-datasource.provider';
@@ -19,7 +19,7 @@ export declare class EmailProviderConfigService extends RequestScopedApiService<
19
19
  protected getDataSourceProvider(): EmailDataSourceProvider;
20
20
  convertSingleDtoToEntity(dto: CreateEmailConfigDto | UpdateEmailConfigDto, user: ILoggedUserInfo | null): Promise<EmailConfigBase>;
21
21
  getSelectQuery(query: SelectQueryBuilder<EmailConfigBase>, _user: ILoggedUserInfo | null, select?: string[]): Promise<{
22
- query: SelectQueryBuilder<EmailConfigBase>;
22
+ query: SelectQueryBuilder<EmailConfig>;
23
23
  isRaw: boolean;
24
24
  }>;
25
25
  protected getExtraManipulateQuery(query: SelectQueryBuilder<EmailConfigBase>, filterDto: FilterAndPaginationDto, user: ILoggedUserInfo | null): Promise<{
@@ -1,5 +1,5 @@
1
1
  import { ILoggedUserInfo } from '@flusys/nestjs-shared/interfaces';
2
- import { EmailConfigService } from '../config';
2
+ import { EmailConfigService } from './email-config.service';
3
3
  import { SendEmailDto, SendTemplateEmailDto } from '../dtos';
4
4
  import { IEmailSendResult } from '../interfaces';
5
5
  import { EmailFactoryService } from '../providers';
@@ -12,9 +12,17 @@ export declare class EmailSendService {
12
12
  private readonly emailTemplateService;
13
13
  private readonly logger;
14
14
  constructor(emailFactory: EmailFactoryService, emailConfigService: EmailConfigService, emailProviderConfigService: EmailProviderConfigService, emailTemplateService: EmailTemplateService);
15
- private getEmailProviderWithConfig;
16
- private interpolateVariables;
17
15
  sendEmail(dto: SendEmailDto, user?: ILoggedUserInfo): Promise<IEmailSendResult>;
18
16
  sendTemplateEmail(dto: SendTemplateEmailDto, user?: ILoggedUserInfo): Promise<IEmailSendResult>;
19
17
  sendTestEmail(emailConfigId: string, recipient: string, user?: ILoggedUserInfo): Promise<IEmailSendResult>;
18
+ private getEmailProviderWithConfig;
19
+ private resolveConfigById;
20
+ private resolveDefaultConfig;
21
+ private resolveTemplate;
22
+ private buildTemplateContent;
23
+ private resolveSender;
24
+ private buildAttachments;
25
+ private interpolateVariables;
26
+ private logResult;
27
+ private buildTestEmailHtml;
20
28
  }
@@ -3,9 +3,9 @@ import { FilterAndPaginationDto } from '@flusys/nestjs-shared/dtos';
3
3
  import { ILoggedUserInfo } from '@flusys/nestjs-shared/interfaces';
4
4
  import { UtilsService } from '@flusys/nestjs-shared/modules';
5
5
  import { EntityTarget, Repository, SelectQueryBuilder } from 'typeorm';
6
- import { EmailConfigService } from '../config';
6
+ import { EmailConfigService } from './email-config.service';
7
7
  import { CreateEmailTemplateDto, UpdateEmailTemplateDto } from '../dtos';
8
- import { EmailTemplateBase } from '../entities';
8
+ import { EmailTemplate, EmailTemplateBase } from '../entities';
9
9
  import { IEmailTemplate } from '../interfaces';
10
10
  import { EmailDataSourceProvider } from './email-datasource.provider';
11
11
  export declare class EmailTemplateService extends RequestScopedApiService<CreateEmailTemplateDto, UpdateEmailTemplateDto, IEmailTemplate, EmailTemplateBase, Repository<EmailTemplateBase>> {
@@ -18,14 +18,15 @@ export declare class EmailTemplateService extends RequestScopedApiService<Create
18
18
  protected getDataSourceProvider(): EmailDataSourceProvider;
19
19
  convertSingleDtoToEntity(dto: CreateEmailTemplateDto | UpdateEmailTemplateDto, user: ILoggedUserInfo | null): Promise<EmailTemplateBase>;
20
20
  getSelectQuery(query: SelectQueryBuilder<EmailTemplateBase>, _user: ILoggedUserInfo | null, select?: string[]): Promise<{
21
- query: SelectQueryBuilder<EmailTemplateBase>;
21
+ query: SelectQueryBuilder<EmailTemplate>;
22
22
  isRaw: boolean;
23
23
  }>;
24
24
  protected getExtraManipulateQuery(query: SelectQueryBuilder<EmailTemplateBase>, filterDto: FilterAndPaginationDto, user: ILoggedUserInfo | null): Promise<{
25
- query: SelectQueryBuilder<EmailTemplateBase>;
25
+ query: SelectQueryBuilder<EmailTemplate>;
26
26
  isRaw: boolean;
27
27
  }>;
28
28
  findByIdDirect(id: string): Promise<EmailTemplateBase | null>;
29
29
  findBySlug(slug: string, user?: ILoggedUserInfo): Promise<EmailTemplateBase | null>;
30
30
  getActiveTemplates(user?: ILoggedUserInfo): Promise<EmailTemplateBase[]>;
31
+ private incrementSchemaVersionIfChanged;
31
32
  }
@@ -1,4 +1,5 @@
1
+ export * from './email-config.service';
1
2
  export * from './email-datasource.provider';
2
3
  export * from './email-provider-config.service';
3
- export * from './email-template.service';
4
4
  export * from './email-send.service';
5
+ export * from './email-template.service';
@@ -0,0 +1,2 @@
1
+ export declare function getOtpEmailFormat(otp: number, userName?: string | null): string;
2
+ export declare function getResetPasswordEmailFormat(resetLink: string, userName?: string | null): string;
@@ -0,0 +1 @@
1
+ export * from './email-templates.util';
@@ -1,111 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "EmailConfigBase", {
6
- enumerable: true,
7
- get: function() {
8
- return EmailConfigBase;
9
- }
10
- });
11
- const _entities = require("@flusys/nestjs-shared/entities");
12
- const _typeorm = require("typeorm");
13
- const _enums = require("../enums");
14
- function _define_property(obj, key, value) {
15
- if (key in obj) {
16
- Object.defineProperty(obj, key, {
17
- value: value,
18
- enumerable: true,
19
- configurable: true,
20
- writable: true
21
- });
22
- } else {
23
- obj[key] = value;
24
- }
25
- return obj;
26
- }
27
- function _ts_decorate(decorators, target, key, desc) {
28
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30
- 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;
31
- return c > 3 && r && Object.defineProperty(target, key, r), r;
32
- }
33
- function _ts_metadata(k, v) {
34
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
35
- }
36
- let EmailConfigBase = class EmailConfigBase extends _entities.Identity {
37
- constructor(...args){
38
- super(...args), _define_property(this, "name", void 0), _define_property(this, "provider", void 0), _define_property(this, "config", void 0), _define_property(this, "fromEmail", void 0), _define_property(this, "fromName", void 0), _define_property(this, "isActive", void 0), _define_property(this, "isDefault", void 0);
39
- }
40
- };
41
- _ts_decorate([
42
- (0, _typeorm.Column)({
43
- type: 'varchar',
44
- length: 255,
45
- nullable: false
46
- }),
47
- _ts_metadata("design:type", String)
48
- ], EmailConfigBase.prototype, "name", void 0);
49
- _ts_decorate([
50
- (0, _typeorm.Column)({
51
- type: 'enum',
52
- enum: _enums.EmailProviderTypeEnum,
53
- nullable: false
54
- }),
55
- _ts_metadata("design:type", typeof _enums.EmailProviderTypeEnum === "undefined" ? Object : _enums.EmailProviderTypeEnum)
56
- ], EmailConfigBase.prototype, "provider", void 0);
57
- _ts_decorate([
58
- (0, _typeorm.Column)({
59
- type: 'json',
60
- nullable: false
61
- }),
62
- _ts_metadata("design:type", typeof Record === "undefined" ? Object : Record)
63
- ], EmailConfigBase.prototype, "config", void 0);
64
- _ts_decorate([
65
- (0, _typeorm.Column)({
66
- type: 'varchar',
67
- length: 255,
68
- nullable: true,
69
- name: 'from_email'
70
- }),
71
- _ts_metadata("design:type", Object)
72
- ], EmailConfigBase.prototype, "fromEmail", void 0);
73
- _ts_decorate([
74
- (0, _typeorm.Column)({
75
- type: 'varchar',
76
- length: 255,
77
- nullable: true,
78
- name: 'from_name'
79
- }),
80
- _ts_metadata("design:type", Object)
81
- ], EmailConfigBase.prototype, "fromName", void 0);
82
- _ts_decorate([
83
- (0, _typeorm.Column)({
84
- type: 'boolean',
85
- default: true,
86
- name: 'is_active'
87
- }),
88
- _ts_metadata("design:type", Boolean)
89
- ], EmailConfigBase.prototype, "isActive", void 0);
90
- _ts_decorate([
91
- (0, _typeorm.Column)({
92
- type: 'boolean',
93
- default: false,
94
- name: 'is_default'
95
- }),
96
- _ts_metadata("design:type", Boolean)
97
- ], EmailConfigBase.prototype, "isDefault", void 0);
98
- EmailConfigBase = _ts_decorate([
99
- (0, _typeorm.Index)([
100
- 'name'
101
- ]),
102
- (0, _typeorm.Index)([
103
- 'provider'
104
- ]),
105
- (0, _typeorm.Index)([
106
- 'isActive'
107
- ]),
108
- (0, _typeorm.Index)([
109
- 'isDefault'
110
- ])
111
- ], EmailConfigBase);
@@ -1,134 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "EmailTemplateBase", {
6
- enumerable: true,
7
- get: function() {
8
- return EmailTemplateBase;
9
- }
10
- });
11
- const _entities = require("@flusys/nestjs-shared/entities");
12
- const _typeorm = require("typeorm");
13
- function _define_property(obj, key, value) {
14
- if (key in obj) {
15
- Object.defineProperty(obj, key, {
16
- value: value,
17
- enumerable: true,
18
- configurable: true,
19
- writable: true
20
- });
21
- } else {
22
- obj[key] = value;
23
- }
24
- return obj;
25
- }
26
- function _ts_decorate(decorators, target, key, desc) {
27
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
28
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29
- 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;
30
- return c > 3 && r && Object.defineProperty(target, key, r), r;
31
- }
32
- function _ts_metadata(k, v) {
33
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
34
- }
35
- let EmailTemplateBase = class EmailTemplateBase extends _entities.Identity {
36
- constructor(...args){
37
- super(...args), _define_property(this, "name", void 0), _define_property(this, "slug", void 0), _define_property(this, "description", void 0), _define_property(this, "subject", void 0), _define_property(this, "schema", void 0), _define_property(this, "htmlContent", void 0), _define_property(this, "textContent", void 0), _define_property(this, "schemaVersion", void 0), _define_property(this, "isActive", void 0), _define_property(this, "isHtml", void 0), _define_property(this, "metadata", void 0);
38
- }
39
- };
40
- _ts_decorate([
41
- (0, _typeorm.Column)({
42
- type: 'varchar',
43
- length: 255,
44
- nullable: false
45
- }),
46
- _ts_metadata("design:type", String)
47
- ], EmailTemplateBase.prototype, "name", void 0);
48
- _ts_decorate([
49
- (0, _typeorm.Column)({
50
- type: 'varchar',
51
- length: 255,
52
- nullable: false,
53
- unique: true
54
- }),
55
- _ts_metadata("design:type", String)
56
- ], EmailTemplateBase.prototype, "slug", void 0);
57
- _ts_decorate([
58
- (0, _typeorm.Column)({
59
- type: 'varchar',
60
- length: 500,
61
- nullable: true
62
- }),
63
- _ts_metadata("design:type", Object)
64
- ], EmailTemplateBase.prototype, "description", void 0);
65
- _ts_decorate([
66
- (0, _typeorm.Column)({
67
- type: 'varchar',
68
- length: 500,
69
- nullable: false
70
- }),
71
- _ts_metadata("design:type", String)
72
- ], EmailTemplateBase.prototype, "subject", void 0);
73
- _ts_decorate([
74
- (0, _typeorm.Column)({
75
- type: 'json',
76
- nullable: false
77
- }),
78
- _ts_metadata("design:type", typeof Record === "undefined" ? Object : Record)
79
- ], EmailTemplateBase.prototype, "schema", void 0);
80
- _ts_decorate([
81
- (0, _typeorm.Column)({
82
- type: 'text',
83
- nullable: false,
84
- name: 'html_content'
85
- }),
86
- _ts_metadata("design:type", String)
87
- ], EmailTemplateBase.prototype, "htmlContent", void 0);
88
- _ts_decorate([
89
- (0, _typeorm.Column)({
90
- type: 'text',
91
- nullable: true,
92
- name: 'text_content'
93
- }),
94
- _ts_metadata("design:type", Object)
95
- ], EmailTemplateBase.prototype, "textContent", void 0);
96
- _ts_decorate([
97
- (0, _typeorm.Column)({
98
- type: 'int',
99
- nullable: false,
100
- default: 1,
101
- name: 'schema_version'
102
- }),
103
- _ts_metadata("design:type", Number)
104
- ], EmailTemplateBase.prototype, "schemaVersion", void 0);
105
- _ts_decorate([
106
- (0, _typeorm.Column)({
107
- type: 'boolean',
108
- default: true,
109
- name: 'is_active'
110
- }),
111
- _ts_metadata("design:type", Boolean)
112
- ], EmailTemplateBase.prototype, "isActive", void 0);
113
- _ts_decorate([
114
- (0, _typeorm.Column)({
115
- type: 'boolean',
116
- default: true,
117
- name: 'is_html'
118
- }),
119
- _ts_metadata("design:type", Boolean)
120
- ], EmailTemplateBase.prototype, "isHtml", void 0);
121
- _ts_decorate([
122
- (0, _typeorm.Column)('simple-json', {
123
- nullable: true
124
- }),
125
- _ts_metadata("design:type", Object)
126
- ], EmailTemplateBase.prototype, "metadata", void 0);
127
- EmailTemplateBase = _ts_decorate([
128
- (0, _typeorm.Index)([
129
- 'name'
130
- ]),
131
- (0, _typeorm.Index)([
132
- 'isActive'
133
- ])
134
- ], EmailTemplateBase);
@@ -1,13 +0,0 @@
1
- import { EmailModuleOptions } from '../interfaces';
2
- export declare class EmailConfigService {
3
- private readonly options;
4
- constructor(options: EmailModuleOptions);
5
- isCompanyFeatureEnabled(): boolean;
6
- getDatabaseMode(): 'single' | 'multi-tenant';
7
- getRateLimitPerMinute(): number;
8
- isLoggingEnabled(): boolean;
9
- getDefaultProvider(): string | undefined;
10
- getDefaultFromName(): string;
11
- getDefaultDatabaseConfig(): import("@flusys/nestjs-core").IDatabaseConfig;
12
- getOptions(): EmailModuleOptions;
13
- }
@@ -1,11 +0,0 @@
1
- import { Identity } from '@flusys/nestjs-shared/entities';
2
- import { EmailProviderTypeEnum } from '../enums';
3
- export declare abstract class EmailConfigBase extends Identity {
4
- name: string;
5
- provider: EmailProviderTypeEnum;
6
- config: Record<string, any>;
7
- fromEmail: string | null;
8
- fromName: string | null;
9
- isActive: boolean;
10
- isDefault: boolean;
11
- }
@@ -1,14 +0,0 @@
1
- import { Identity } from '@flusys/nestjs-shared/entities';
2
- export declare abstract class EmailTemplateBase extends Identity {
3
- name: string;
4
- slug: string;
5
- description: string | null;
6
- subject: string;
7
- schema: Record<string, unknown>;
8
- htmlContent: string;
9
- textContent: string | null;
10
- schemaVersion: number;
11
- isActive: boolean;
12
- isHtml: boolean;
13
- metadata: Record<string, unknown> | null;
14
- }
@@ -1,101 +0,0 @@
1
- function _define_property(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
5
- enumerable: true,
6
- configurable: true,
7
- writable: true
8
- });
9
- } else {
10
- obj[key] = value;
11
- }
12
- return obj;
13
- }
14
- function _ts_decorate(decorators, target, key, desc) {
15
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
- 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;
18
- return c > 3 && r && Object.defineProperty(target, key, r), r;
19
- }
20
- function _ts_metadata(k, v) {
21
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
22
- }
23
- import { Identity } from '@flusys/nestjs-shared/entities';
24
- import { Column, Index } from 'typeorm';
25
- import { EmailProviderTypeEnum } from '../enums';
26
- export class EmailConfigBase extends Identity {
27
- constructor(...args){
28
- super(...args), _define_property(this, "name", void 0), _define_property(this, "provider", void 0), _define_property(this, "config", void 0), _define_property(this, "fromEmail", void 0), _define_property(this, "fromName", void 0), _define_property(this, "isActive", void 0), _define_property(this, "isDefault", void 0);
29
- }
30
- }
31
- _ts_decorate([
32
- Column({
33
- type: 'varchar',
34
- length: 255,
35
- nullable: false
36
- }),
37
- _ts_metadata("design:type", String)
38
- ], EmailConfigBase.prototype, "name", void 0);
39
- _ts_decorate([
40
- Column({
41
- type: 'enum',
42
- enum: EmailProviderTypeEnum,
43
- nullable: false
44
- }),
45
- _ts_metadata("design:type", typeof EmailProviderTypeEnum === "undefined" ? Object : EmailProviderTypeEnum)
46
- ], EmailConfigBase.prototype, "provider", void 0);
47
- _ts_decorate([
48
- Column({
49
- type: 'json',
50
- nullable: false
51
- }),
52
- _ts_metadata("design:type", typeof Record === "undefined" ? Object : Record)
53
- ], EmailConfigBase.prototype, "config", void 0);
54
- _ts_decorate([
55
- Column({
56
- type: 'varchar',
57
- length: 255,
58
- nullable: true,
59
- name: 'from_email'
60
- }),
61
- _ts_metadata("design:type", Object)
62
- ], EmailConfigBase.prototype, "fromEmail", void 0);
63
- _ts_decorate([
64
- Column({
65
- type: 'varchar',
66
- length: 255,
67
- nullable: true,
68
- name: 'from_name'
69
- }),
70
- _ts_metadata("design:type", Object)
71
- ], EmailConfigBase.prototype, "fromName", void 0);
72
- _ts_decorate([
73
- Column({
74
- type: 'boolean',
75
- default: true,
76
- name: 'is_active'
77
- }),
78
- _ts_metadata("design:type", Boolean)
79
- ], EmailConfigBase.prototype, "isActive", void 0);
80
- _ts_decorate([
81
- Column({
82
- type: 'boolean',
83
- default: false,
84
- name: 'is_default'
85
- }),
86
- _ts_metadata("design:type", Boolean)
87
- ], EmailConfigBase.prototype, "isDefault", void 0);
88
- EmailConfigBase = _ts_decorate([
89
- Index([
90
- 'name'
91
- ]),
92
- Index([
93
- 'provider'
94
- ]),
95
- Index([
96
- 'isActive'
97
- ]),
98
- Index([
99
- 'isDefault'
100
- ])
101
- ], EmailConfigBase);