@flusys/nestjs-email 7.0.0 → 7.0.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.
@@ -80,7 +80,7 @@ let SmtpProvider = class SmtpProvider {
80
80
  minVersion: config.tls?.minVersion ?? 'TLSv1.2'
81
81
  }
82
82
  });
83
- await this.verifyConnection();
83
+ await this.withTimeout(this.transporter.verify(), VERIFY_TIMEOUT_MS, 'SMTP verification timeout');
84
84
  }
85
85
  async sendEmail(options) {
86
86
  if (!this.transporter) return {
@@ -135,9 +135,6 @@ let SmtpProvider = class SmtpProvider {
135
135
  }
136
136
  }
137
137
  // ─── Private Helpers ────────────────────────────────────────────────────────
138
- async verifyConnection() {
139
- await this.withTimeout(this.transporter.verify(), VERIFY_TIMEOUT_MS, 'SMTP verification timeout');
140
- }
141
138
  formatFrom(from, fromName) {
142
139
  return fromName ? `"${fromName}" <${from}>` : from;
143
140
  }
@@ -45,9 +45,6 @@ function _ts_param(paramIndex, decorator) {
45
45
  };
46
46
  }
47
47
  let EmailProviderConfigService = class EmailProviderConfigService extends _classes.ApiService {
48
- resolveEntity() {
49
- return this.emailConfig.isCompanyFeatureEnabled() ? _entities.EmailConfigWithCompany : _entities.EmailConfig;
50
- }
51
48
  async beforeDeleteOperation(dto, _user, _queryRunner) {
52
49
  const ids = Array.isArray(dto.id) ? dto.id : [
53
50
  dto.id
@@ -141,7 +138,7 @@ let EmailProviderConfigService = class EmailProviderConfigService extends _class
141
138
  });
142
139
  }
143
140
  constructor(cacheManager, utilsService, emailConfig, dataSourceProvider){
144
- super('emailConfig', cacheManager, utilsService, EmailProviderConfigService.name, true, 'email', undefined, dataSourceProvider), _define_property(this, "cacheManager", void 0), _define_property(this, "utilsService", void 0), _define_property(this, "emailConfig", void 0), this.cacheManager = cacheManager, this.utilsService = utilsService, this.emailConfig = emailConfig;
141
+ super(_config.EMAIL_EVENT_ENTITIES.CONFIG, cacheManager, utilsService, EmailProviderConfigService.name, true, _config.EMAIL_EVENT_MODULE, dataSourceProvider, emailConfig.isCompanyFeatureEnabled() ? _entities.EmailConfigWithCompany : _entities.EmailConfig), _define_property(this, "cacheManager", void 0), _define_property(this, "utilsService", void 0), _define_property(this, "emailConfig", void 0), this.cacheManager = cacheManager, this.utilsService = utilsService, this.emailConfig = emailConfig;
145
142
  }
146
143
  };
147
144
  EmailProviderConfigService = _ts_decorate([
@@ -40,6 +40,7 @@ function buildQuery() {
40
40
  }
41
41
  describe('EmailProviderConfigService', ()=>{
42
42
  let service;
43
+ let module;
43
44
  let mockRepo;
44
45
  let mockEmailConfig;
45
46
  beforeEach(async ()=>{
@@ -48,7 +49,7 @@ describe('EmailProviderConfigService', ()=>{
48
49
  mockEmailConfig = {
49
50
  isCompanyFeatureEnabled: jest.fn().mockReturnValue(false)
50
51
  };
51
- const module = await _testing.Test.createTestingModule({
52
+ module = await _testing.Test.createTestingModule({
52
53
  providers: [
53
54
  _emailproviderconfigservice.EmailProviderConfigService,
54
55
  {
@@ -71,13 +72,16 @@ describe('EmailProviderConfigService', ()=>{
71
72
  }).compile();
72
73
  service = await module.resolve(_emailproviderconfigservice.EmailProviderConfigService);
73
74
  });
74
- describe('resolveEntity', ()=>{
75
- it('resolves the plain EmailConfig entity when the company feature is disabled', ()=>{
76
- expect(service.resolveEntity()).toBe(_entities.EmailConfig);
75
+ describe('entity selection', ()=>{
76
+ it('uses EmailConfig when the company feature is disabled', async ()=>{
77
+ mockEmailConfig.isCompanyFeatureEnabled.mockReturnValue(false);
78
+ const built = await module.resolve(_emailproviderconfigservice.EmailProviderConfigService);
79
+ expect(built['_entity']).toBe(_entities.EmailConfig);
77
80
  });
78
- it('resolves EmailConfigWithCompany when the company feature is enabled', ()=>{
81
+ it('uses EmailConfigWithCompany when the company feature is enabled', async ()=>{
79
82
  mockEmailConfig.isCompanyFeatureEnabled.mockReturnValue(true);
80
- expect(service.resolveEntity()).toBe(_entities.EmailConfigWithCompany);
83
+ const built = await module.resolve(_emailproviderconfigservice.EmailProviderConfigService);
84
+ expect(built['_entity']).toBe(_entities.EmailConfigWithCompany);
81
85
  });
82
86
  });
83
87
  describe('convertSingleDtoToEntity', ()=>{
@@ -12,6 +12,7 @@ const _classes = require("@flusys/nestjs-shared/classes");
12
12
  const _modules = require("@flusys/nestjs-shared/modules");
13
13
  const _utils = require("@flusys/nestjs-shared/utils");
14
14
  const _common = require("@nestjs/common");
15
+ const _config = require("../config");
15
16
  const _entities = require("../entities");
16
17
  const _emailconfigservice = require("./email-config.service");
17
18
  const _emaildatasourceprovider = require("./email-datasource.provider");
@@ -58,9 +59,6 @@ const DEFAULT_SELECT_FIELDS = [
58
59
  'updatedAt'
59
60
  ];
60
61
  let EmailTemplateService = class EmailTemplateService extends _classes.ApiService {
61
- resolveEntity() {
62
- return this.emailConfig.isCompanyFeatureEnabled() ? _entities.EmailTemplateWithCompany : _entities.EmailTemplate;
63
- }
64
62
  async convertSingleDtoToEntity(dto, user) {
65
63
  const entity = await super.convertSingleDtoToEntity(dto, user);
66
64
  await this.incrementSchemaVersionIfChanged(dto, entity);
@@ -125,7 +123,7 @@ let EmailTemplateService = class EmailTemplateService extends _classes.ApiServic
125
123
  }
126
124
  }
127
125
  constructor(cacheManager, utilsService, emailConfig, dataSourceProvider){
128
- super('emailTemplate', cacheManager, utilsService, EmailTemplateService.name, true, 'email', undefined, dataSourceProvider), _define_property(this, "cacheManager", void 0), _define_property(this, "utilsService", void 0), _define_property(this, "emailConfig", void 0), this.cacheManager = cacheManager, this.utilsService = utilsService, this.emailConfig = emailConfig;
126
+ super(_config.EMAIL_EVENT_ENTITIES.TEMPLATE, cacheManager, utilsService, EmailTemplateService.name, true, _config.EMAIL_EVENT_MODULE, dataSourceProvider, emailConfig.isCompanyFeatureEnabled() ? _entities.EmailTemplateWithCompany : _entities.EmailTemplate), _define_property(this, "cacheManager", void 0), _define_property(this, "utilsService", void 0), _define_property(this, "emailConfig", void 0), this.cacheManager = cacheManager, this.utilsService = utilsService, this.emailConfig = emailConfig;
129
127
  }
130
128
  };
131
129
  EmailTemplateService = _ts_decorate([
@@ -43,6 +43,7 @@ function buildQuery() {
43
43
  }
44
44
  describe('EmailTemplateService', ()=>{
45
45
  let service;
46
+ let module;
46
47
  let mockRepo;
47
48
  let mockEmailConfig;
48
49
  beforeEach(async ()=>{
@@ -51,7 +52,7 @@ describe('EmailTemplateService', ()=>{
51
52
  mockEmailConfig = {
52
53
  isCompanyFeatureEnabled: jest.fn().mockReturnValue(false)
53
54
  };
54
- const module = await _testing.Test.createTestingModule({
55
+ module = await _testing.Test.createTestingModule({
55
56
  providers: [
56
57
  _emailtemplateservice.EmailTemplateService,
57
58
  {
@@ -77,13 +78,16 @@ describe('EmailTemplateService', ()=>{
77
78
  // lazily initialized by insert()/update() via ensureDataSourceRepository() first.
78
79
  await service.ensureDataSourceRepository();
79
80
  });
80
- describe('resolveEntity', ()=>{
81
- it('resolves the plain EmailTemplate entity when the company feature is disabled', ()=>{
82
- expect(service.resolveEntity()).toBe(_entities.EmailTemplate);
81
+ describe('entity selection', ()=>{
82
+ it('uses EmailTemplate when the company feature is disabled', async ()=>{
83
+ mockEmailConfig.isCompanyFeatureEnabled.mockReturnValue(false);
84
+ const built = await module.resolve(_emailtemplateservice.EmailTemplateService);
85
+ expect(built['_entity']).toBe(_entities.EmailTemplate);
83
86
  });
84
- it('resolves EmailTemplateWithCompany when the company feature is enabled', ()=>{
87
+ it('uses EmailTemplateWithCompany when the company feature is enabled', async ()=>{
85
88
  mockEmailConfig.isCompanyFeatureEnabled.mockReturnValue(true);
86
- expect(service.resolveEntity()).toBe(_entities.EmailTemplateWithCompany);
89
+ const built = await module.resolve(_emailtemplateservice.EmailTemplateService);
90
+ expect(built['_entity']).toBe(_entities.EmailTemplateWithCompany);
87
91
  });
88
92
  });
89
93
  describe('convertSingleDtoToEntity', ()=>{
@@ -29,7 +29,7 @@ export class SmtpProvider {
29
29
  minVersion: config.tls?.minVersion ?? 'TLSv1.2'
30
30
  }
31
31
  });
32
- await this.verifyConnection();
32
+ await this.withTimeout(this.transporter.verify(), VERIFY_TIMEOUT_MS, 'SMTP verification timeout');
33
33
  }
34
34
  async sendEmail(options) {
35
35
  if (!this.transporter) return {
@@ -84,9 +84,6 @@ export class SmtpProvider {
84
84
  }
85
85
  }
86
86
  // ─── Private Helpers ────────────────────────────────────────────────────────
87
- async verifyConnection() {
88
- await this.withTimeout(this.transporter.verify(), VERIFY_TIMEOUT_MS, 'SMTP verification timeout');
89
- }
90
87
  formatFrom(from, fromName) {
91
88
  return fromName ? `"${fromName}" <${from}>` : from;
92
89
  }
@@ -30,14 +30,11 @@ import { UtilsService } from '@flusys/nestjs-shared/modules';
30
30
  import { applyCompanyFilter, buildCompanyWhereCondition } from '@flusys/nestjs-shared/utils';
31
31
  import { ForbiddenException, Inject, Injectable, Scope } from '@nestjs/common';
32
32
  import { In, IsNull } from 'typeorm';
33
- import { EMAIL_CONFIG_MESSAGES } from '../config';
33
+ import { EMAIL_CONFIG_MESSAGES, EMAIL_EVENT_ENTITIES, EMAIL_EVENT_MODULE } from '../config';
34
34
  import { EmailConfig, EmailConfigWithCompany } from '../entities';
35
35
  import { EmailConfigService } from './email-config.service';
36
36
  import { EmailDataSourceProvider } from './email-datasource.provider';
37
37
  export class EmailProviderConfigService extends ApiService {
38
- resolveEntity() {
39
- return this.emailConfig.isCompanyFeatureEnabled() ? EmailConfigWithCompany : EmailConfig;
40
- }
41
38
  async beforeDeleteOperation(dto, _user, _queryRunner) {
42
39
  const ids = Array.isArray(dto.id) ? dto.id : [
43
40
  dto.id
@@ -131,7 +128,7 @@ export class EmailProviderConfigService extends ApiService {
131
128
  });
132
129
  }
133
130
  constructor(cacheManager, utilsService, emailConfig, dataSourceProvider){
134
- super('emailConfig', cacheManager, utilsService, EmailProviderConfigService.name, true, 'email', undefined, dataSourceProvider), _define_property(this, "cacheManager", void 0), _define_property(this, "utilsService", void 0), _define_property(this, "emailConfig", void 0), this.cacheManager = cacheManager, this.utilsService = utilsService, this.emailConfig = emailConfig;
131
+ super(EMAIL_EVENT_ENTITIES.CONFIG, cacheManager, utilsService, EmailProviderConfigService.name, true, EMAIL_EVENT_MODULE, dataSourceProvider, emailConfig.isCompanyFeatureEnabled() ? EmailConfigWithCompany : EmailConfig), _define_property(this, "cacheManager", void 0), _define_property(this, "utilsService", void 0), _define_property(this, "emailConfig", void 0), this.cacheManager = cacheManager, this.utilsService = utilsService, this.emailConfig = emailConfig;
135
132
  }
136
133
  }
137
134
  EmailProviderConfigService = _ts_decorate([
@@ -36,6 +36,7 @@ function buildQuery() {
36
36
  }
37
37
  describe('EmailProviderConfigService', ()=>{
38
38
  let service;
39
+ let module;
39
40
  let mockRepo;
40
41
  let mockEmailConfig;
41
42
  beforeEach(async ()=>{
@@ -44,7 +45,7 @@ describe('EmailProviderConfigService', ()=>{
44
45
  mockEmailConfig = {
45
46
  isCompanyFeatureEnabled: jest.fn().mockReturnValue(false)
46
47
  };
47
- const module = await Test.createTestingModule({
48
+ module = await Test.createTestingModule({
48
49
  providers: [
49
50
  EmailProviderConfigService,
50
51
  {
@@ -67,13 +68,16 @@ describe('EmailProviderConfigService', ()=>{
67
68
  }).compile();
68
69
  service = await module.resolve(EmailProviderConfigService);
69
70
  });
70
- describe('resolveEntity', ()=>{
71
- it('resolves the plain EmailConfig entity when the company feature is disabled', ()=>{
72
- expect(service.resolveEntity()).toBe(EmailConfig);
71
+ describe('entity selection', ()=>{
72
+ it('uses EmailConfig when the company feature is disabled', async ()=>{
73
+ mockEmailConfig.isCompanyFeatureEnabled.mockReturnValue(false);
74
+ const built = await module.resolve(EmailProviderConfigService);
75
+ expect(built['_entity']).toBe(EmailConfig);
73
76
  });
74
- it('resolves EmailConfigWithCompany when the company feature is enabled', ()=>{
77
+ it('uses EmailConfigWithCompany when the company feature is enabled', async ()=>{
75
78
  mockEmailConfig.isCompanyFeatureEnabled.mockReturnValue(true);
76
- expect(service.resolveEntity()).toBe(EmailConfigWithCompany);
79
+ const built = await module.resolve(EmailProviderConfigService);
80
+ expect(built['_entity']).toBe(EmailConfigWithCompany);
77
81
  });
78
82
  });
79
83
  describe('convertSingleDtoToEntity', ()=>{
@@ -29,6 +29,7 @@ import { HybridCache, ApiService } from '@flusys/nestjs-shared/classes';
29
29
  import { UtilsService } from '@flusys/nestjs-shared/modules';
30
30
  import { applyCompanyFilter, buildCompanyWhereCondition } from '@flusys/nestjs-shared/utils';
31
31
  import { Inject, Injectable, Scope } from '@nestjs/common';
32
+ import { EMAIL_EVENT_ENTITIES, EMAIL_EVENT_MODULE } from '../config';
32
33
  import { EmailTemplate, EmailTemplateWithCompany } from '../entities';
33
34
  import { EmailConfigService } from './email-config.service';
34
35
  import { EmailDataSourceProvider } from './email-datasource.provider';
@@ -48,9 +49,6 @@ const DEFAULT_SELECT_FIELDS = [
48
49
  'updatedAt'
49
50
  ];
50
51
  export class EmailTemplateService extends ApiService {
51
- resolveEntity() {
52
- return this.emailConfig.isCompanyFeatureEnabled() ? EmailTemplateWithCompany : EmailTemplate;
53
- }
54
52
  async convertSingleDtoToEntity(dto, user) {
55
53
  const entity = await super.convertSingleDtoToEntity(dto, user);
56
54
  await this.incrementSchemaVersionIfChanged(dto, entity);
@@ -115,7 +113,7 @@ export class EmailTemplateService extends ApiService {
115
113
  }
116
114
  }
117
115
  constructor(cacheManager, utilsService, emailConfig, dataSourceProvider){
118
- super('emailTemplate', cacheManager, utilsService, EmailTemplateService.name, true, 'email', undefined, dataSourceProvider), _define_property(this, "cacheManager", void 0), _define_property(this, "utilsService", void 0), _define_property(this, "emailConfig", void 0), this.cacheManager = cacheManager, this.utilsService = utilsService, this.emailConfig = emailConfig;
116
+ super(EMAIL_EVENT_ENTITIES.TEMPLATE, cacheManager, utilsService, EmailTemplateService.name, true, EMAIL_EVENT_MODULE, dataSourceProvider, emailConfig.isCompanyFeatureEnabled() ? EmailTemplateWithCompany : EmailTemplate), _define_property(this, "cacheManager", void 0), _define_property(this, "utilsService", void 0), _define_property(this, "emailConfig", void 0), this.cacheManager = cacheManager, this.utilsService = utilsService, this.emailConfig = emailConfig;
119
117
  }
120
118
  }
121
119
  EmailTemplateService = _ts_decorate([
@@ -39,6 +39,7 @@ function buildQuery() {
39
39
  }
40
40
  describe('EmailTemplateService', ()=>{
41
41
  let service;
42
+ let module;
42
43
  let mockRepo;
43
44
  let mockEmailConfig;
44
45
  beforeEach(async ()=>{
@@ -47,7 +48,7 @@ describe('EmailTemplateService', ()=>{
47
48
  mockEmailConfig = {
48
49
  isCompanyFeatureEnabled: jest.fn().mockReturnValue(false)
49
50
  };
50
- const module = await Test.createTestingModule({
51
+ module = await Test.createTestingModule({
51
52
  providers: [
52
53
  EmailTemplateService,
53
54
  {
@@ -73,13 +74,16 @@ describe('EmailTemplateService', ()=>{
73
74
  // lazily initialized by insert()/update() via ensureDataSourceRepository() first.
74
75
  await service.ensureDataSourceRepository();
75
76
  });
76
- describe('resolveEntity', ()=>{
77
- it('resolves the plain EmailTemplate entity when the company feature is disabled', ()=>{
78
- expect(service.resolveEntity()).toBe(EmailTemplate);
77
+ describe('entity selection', ()=>{
78
+ it('uses EmailTemplate when the company feature is disabled', async ()=>{
79
+ mockEmailConfig.isCompanyFeatureEnabled.mockReturnValue(false);
80
+ const built = await module.resolve(EmailTemplateService);
81
+ expect(built['_entity']).toBe(EmailTemplate);
79
82
  });
80
- it('resolves EmailTemplateWithCompany when the company feature is enabled', ()=>{
83
+ it('uses EmailTemplateWithCompany when the company feature is enabled', async ()=>{
81
84
  mockEmailConfig.isCompanyFeatureEnabled.mockReturnValue(true);
82
- expect(service.resolveEntity()).toBe(EmailTemplateWithCompany);
85
+ const built = await module.resolve(EmailTemplateService);
86
+ expect(built['_entity']).toBe(EmailTemplateWithCompany);
83
87
  });
84
88
  });
85
89
  describe('convertSingleDtoToEntity', ()=>{
@@ -1,4 +1,4 @@
1
- import { IBootstrapAppConfig, IDataSourceServiceOptions, IDynamicModuleConfig, IModuleOptionsFactory } from '@flusys/nestjs-core';
1
+ import { IBootstrapAppConfig, IDataSourceServiceOptions, IDynamicModuleConfig } from '@flusys/nestjs-core';
2
2
  import { IModuleEventsConfig } from '@flusys/nestjs-shared/interfaces';
3
3
  import { ModuleMetadata, Type } from '@nestjs/common';
4
4
  export interface IEmailModuleConfig extends IDataSourceServiceOptions {
@@ -11,7 +11,7 @@ export interface EmailModuleOptions extends IDynamicModuleConfig {
11
11
  bootstrapAppConfig?: IBootstrapAppConfig;
12
12
  config?: IEmailModuleConfig;
13
13
  }
14
- export interface EmailOptionsFactory extends IModuleOptionsFactory<IEmailModuleConfig> {
14
+ export interface EmailOptionsFactory {
15
15
  createEmailOptions(): Promise<IEmailModuleConfig> | IEmailModuleConfig;
16
16
  }
17
17
  export interface EmailModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'>, IDynamicModuleConfig {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flusys/nestjs-email",
3
- "version": "7.0.0",
3
+ "version": "7.0.1",
4
4
  "description": "Modular email package with SMTP, SendGrid, and Mailgun providers",
5
5
  "main": "cjs/index.js",
6
6
  "module": "fesm/index.js",
@@ -105,7 +105,7 @@
105
105
  }
106
106
  },
107
107
  "dependencies": {
108
- "@flusys/nestjs-core": "7.0.0",
109
- "@flusys/nestjs-shared": "7.0.0"
108
+ "@flusys/nestjs-core": "7.0.1",
109
+ "@flusys/nestjs-shared": "7.0.1"
110
110
  }
111
111
  }
@@ -6,7 +6,6 @@ export declare class SmtpProvider implements IEmailProvider {
6
6
  sendBulkEmails(options: IEmailSendOptions[]): Promise<IEmailSendResult[]>;
7
7
  healthCheck(): Promise<boolean>;
8
8
  close(): Promise<void>;
9
- private verifyConnection;
10
9
  private formatFrom;
11
10
  private joinAddresses;
12
11
  private withTimeout;
@@ -2,7 +2,7 @@ import { HybridCache, ApiService } from '@flusys/nestjs-shared/classes';
2
2
  import { DeleteDto, 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
- import { EntityTarget, QueryRunner, SelectQueryBuilder } from 'typeorm';
5
+ import { QueryRunner, SelectQueryBuilder } from 'typeorm';
6
6
  import { CreateEmailConfigDto, UpdateEmailConfigDto } from '../dtos';
7
7
  import { EmailConfig, EmailConfigBase } from '../entities';
8
8
  import { IEmailConfig } from '../interfaces';
@@ -13,7 +13,6 @@ export declare class EmailProviderConfigService extends ApiService<CreateEmailCo
13
13
  protected utilsService: UtilsService;
14
14
  private readonly emailConfig;
15
15
  constructor(cacheManager: HybridCache, utilsService: UtilsService, emailConfig: EmailConfigService, dataSourceProvider: EmailDataSourceProvider);
16
- protected resolveEntity(): EntityTarget<EmailConfigBase>;
17
16
  protected beforeDeleteOperation(dto: DeleteDto, _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
18
17
  convertSingleDtoToEntity(dto: CreateEmailConfigDto | UpdateEmailConfigDto, user: ILoggedUserInfo | null): Promise<EmailConfigBase>;
19
18
  getSelectQuery(query: SelectQueryBuilder<EmailConfigBase>, _user: ILoggedUserInfo | null, select?: string[]): Promise<{
@@ -2,7 +2,7 @@ import { HybridCache, ApiService } from '@flusys/nestjs-shared/classes';
2
2
  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
- import { EntityTarget, SelectQueryBuilder } from 'typeorm';
5
+ import { SelectQueryBuilder } from 'typeorm';
6
6
  import { CreateEmailTemplateDto, UpdateEmailTemplateDto } from '../dtos';
7
7
  import { EmailTemplate, EmailTemplateBase } from '../entities';
8
8
  import { IEmailTemplate } from '../interfaces';
@@ -13,7 +13,6 @@ export declare class EmailTemplateService extends ApiService<CreateEmailTemplate
13
13
  protected utilsService: UtilsService;
14
14
  private readonly emailConfig;
15
15
  constructor(cacheManager: HybridCache, utilsService: UtilsService, emailConfig: EmailConfigService, dataSourceProvider: EmailDataSourceProvider);
16
- protected resolveEntity(): EntityTarget<EmailTemplateBase>;
17
16
  convertSingleDtoToEntity(dto: CreateEmailTemplateDto | UpdateEmailTemplateDto, user: ILoggedUserInfo | null): Promise<EmailTemplateBase>;
18
17
  getSelectQuery(query: SelectQueryBuilder<EmailTemplateBase>, _user: ILoggedUserInfo | null, select?: string[]): Promise<{
19
18
  query: SelectQueryBuilder<EmailTemplate>;