@ackplus/nest-dynamic-templates 1.1.0 → 1.1.2
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.
- package/package.json +2 -2
- package/src/{index.ts → index.d.ts} +2 -14
- package/src/index.d.ts.map +1 -0
- package/src/lib/constant.d.ts +3 -0
- package/src/lib/constant.d.ts.map +1 -0
- package/src/lib/dto/create-template-layout.dto.d.ts +16 -0
- package/src/lib/dto/create-template-layout.dto.d.ts.map +1 -0
- package/src/lib/dto/create-template.dto.d.ts +18 -0
- package/src/lib/dto/create-template.dto.d.ts.map +1 -0
- package/src/lib/dto/render-content-template-layout.dto.d.ts +8 -0
- package/src/lib/dto/render-content-template-layout.dto.d.ts.map +1 -0
- package/src/lib/dto/render-content-template.dto.d.ts +9 -0
- package/src/lib/dto/render-content-template.dto.d.ts.map +1 -0
- package/src/lib/dto/render-template-layout.dto.d.ts +11 -0
- package/src/lib/dto/render-template-layout.dto.d.ts.map +1 -0
- package/src/lib/dto/render-template.dto.d.ts +15 -0
- package/src/lib/dto/render-template.dto.d.ts.map +1 -0
- package/src/lib/dto/template-filter.dto.d.ts +9 -0
- package/src/lib/dto/template-filter.dto.d.ts.map +1 -0
- package/src/lib/dto/template-layout-filter.dto.d.ts +8 -0
- package/src/lib/dto/template-layout-filter.dto.d.ts.map +1 -0
- package/src/lib/engines/language/html.engine.d.ts +10 -0
- package/src/lib/engines/language/html.engine.d.ts.map +1 -0
- package/src/lib/engines/language/{index.ts → index.d.ts} +1 -0
- package/src/lib/engines/language/index.d.ts.map +1 -0
- package/src/lib/engines/language/markdown.engine.d.ts +10 -0
- package/src/lib/engines/language/markdown.engine.d.ts.map +1 -0
- package/src/lib/engines/language/mjml.engine.d.ts +10 -0
- package/src/lib/engines/language/mjml.engine.d.ts.map +1 -0
- package/src/lib/engines/language/text.engine.d.ts +8 -0
- package/src/lib/engines/language/text.engine.d.ts.map +1 -0
- package/src/lib/engines/{language-engine.ts → language-engine.d.ts} +2 -7
- package/src/lib/engines/language-engine.d.ts.map +1 -0
- package/src/lib/engines/template/ejs.engine.d.ts +11 -0
- package/src/lib/engines/template/ejs.engine.d.ts.map +1 -0
- package/src/lib/engines/template/handlebars.engine.d.ts +11 -0
- package/src/lib/engines/template/handlebars.engine.d.ts.map +1 -0
- package/src/lib/engines/template/{index.ts → index.d.ts} +1 -0
- package/src/lib/engines/template/index.d.ts.map +1 -0
- package/src/lib/engines/template/nunjucks.engine.d.ts +17 -0
- package/src/lib/engines/template/nunjucks.engine.d.ts.map +1 -0
- package/src/lib/engines/template/pug.engine.d.ts +13 -0
- package/src/lib/engines/template/pug.engine.d.ts.map +1 -0
- package/src/lib/engines/{template-engine.ts → template-engine.d.ts} +2 -6
- package/src/lib/engines/template-engine.d.ts.map +1 -0
- package/src/lib/entities/template-layout.entity.d.ts +21 -0
- package/src/lib/entities/template-layout.entity.d.ts.map +1 -0
- package/src/lib/entities/template.entity.d.ts +22 -0
- package/src/lib/entities/template.entity.d.ts.map +1 -0
- package/src/lib/errors/template.errors.d.ts +20 -0
- package/src/lib/errors/template.errors.d.ts.map +1 -0
- package/src/lib/interfaces/{module-config.interface.ts → module-config.interface.d.ts} +2 -10
- package/src/lib/interfaces/module-config.interface.d.ts.map +1 -0
- package/src/lib/interfaces/template.types.d.ts +23 -0
- package/src/lib/interfaces/template.types.d.ts.map +1 -0
- package/src/lib/nest-dynamic-templates.module.d.ts +11 -0
- package/src/lib/nest-dynamic-templates.module.d.ts.map +1 -0
- package/src/lib/services/template-config.service.d.ts +55 -0
- package/src/lib/services/template-config.service.d.ts.map +1 -0
- package/src/lib/services/template-engine.registry.d.ts +22 -0
- package/src/lib/services/template-engine.registry.d.ts.map +1 -0
- package/src/lib/services/template-layout.service.d.ts +37 -0
- package/src/lib/services/template-layout.service.d.ts.map +1 -0
- package/src/lib/services/template.service.d.ts +39 -0
- package/src/lib/services/template.service.d.ts.map +1 -0
- package/src/test/helpers.d.ts +5 -0
- package/src/test/helpers.d.ts.map +1 -0
- package/src/test/test-database.config.d.ts +5 -0
- package/src/test/test-database.config.d.ts.map +1 -0
- package/src/test/test.setup.d.ts +4 -0
- package/src/test/test.setup.d.ts.map +1 -0
- package/eslint.config.mjs +0 -22
- package/jest.config.ts +0 -10
- package/project.json +0 -38
- package/src/lib/constant.ts +0 -2
- package/src/lib/dto/create-template-layout.dto.ts +0 -65
- package/src/lib/dto/create-template.dto.ts +0 -80
- package/src/lib/dto/render-content-template-layout.dto.ts +0 -32
- package/src/lib/dto/render-content-template.dto.ts +0 -37
- package/src/lib/dto/render-template-layout.dto.ts +0 -55
- package/src/lib/dto/render-template.dto.ts +0 -74
- package/src/lib/dto/template-filter.dto.ts +0 -52
- package/src/lib/dto/template-layout-filter.dto.ts +0 -51
- package/src/lib/engines/language/html.engine.ts +0 -49
- package/src/lib/engines/language/markdown.engine.ts +0 -37
- package/src/lib/engines/language/mjml.engine.ts +0 -44
- package/src/lib/engines/language/text.engine.ts +0 -15
- package/src/lib/engines/template/ejs.engine.ts +0 -33
- package/src/lib/engines/template/handlebars.engine.ts +0 -35
- package/src/lib/engines/template/nunjucks.engine.ts +0 -70
- package/src/lib/engines/template/pug.engine.ts +0 -43
- package/src/lib/entities/template-layout.entity.ts +0 -99
- package/src/lib/entities/template.entity.ts +0 -105
- package/src/lib/errors/template.errors.ts +0 -73
- package/src/lib/interfaces/template.types.ts +0 -25
- package/src/lib/nest-dynamic-templates.module.ts +0 -143
- package/src/lib/services/template-config.service.ts +0 -112
- package/src/lib/services/template-engine.registry.ts +0 -109
- package/src/lib/services/template-layout.service.ts +0 -407
- package/src/lib/services/template.service.ts +0 -476
- package/src/test/helpers.ts +0 -31
- package/src/test/nunjucks.service.spec.ts +0 -157
- package/src/test/pug.service.spec-temp +0 -254
- package/src/test/template-layout.service.spec.ts +0 -422
- package/src/test/template.service.spec.ts +0 -862
- package/src/test/test-database.config.ts +0 -24
- package/src/test/test-database.d.ts +0 -6
- package/src/test/test.setup.ts +0 -34
- package/src/types/ioredis.d.ts +0 -6
- package/src/types/mjml.d.ts +0 -5
- package/tsconfig.json +0 -17
- package/tsconfig.lib.json +0 -14
- package/tsconfig.spec.json +0 -15
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { NestDynamicTemplatesModuleConfig } from '../interfaces/module-config.interface';
|
|
2
|
+
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
3
|
+
export declare class TemplateConfigService {
|
|
4
|
+
private static config;
|
|
5
|
+
private static readonly defaultConfig;
|
|
6
|
+
/**
|
|
7
|
+
* Set the configuration options
|
|
8
|
+
*/
|
|
9
|
+
static setOptions(config: NestDynamicTemplatesModuleConfig): void;
|
|
10
|
+
/**
|
|
11
|
+
* Get the current configuration options
|
|
12
|
+
*/
|
|
13
|
+
static getOptions(): NestDynamicTemplatesModuleConfig;
|
|
14
|
+
/**
|
|
15
|
+
* Check if configuration has been set
|
|
16
|
+
*/
|
|
17
|
+
static hasConfig(): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Reset configuration to default
|
|
20
|
+
*/
|
|
21
|
+
static reset(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Get a specific configuration value
|
|
24
|
+
*/
|
|
25
|
+
static get<K extends keyof NestDynamicTemplatesModuleConfig>(key: K): NestDynamicTemplatesModuleConfig[K];
|
|
26
|
+
/**
|
|
27
|
+
* Check if a template engine is enabled
|
|
28
|
+
*/
|
|
29
|
+
static isTemplateEngineEnabled(engine: TemplateEngineEnum): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Check if a language engine is enabled
|
|
32
|
+
*/
|
|
33
|
+
static isLanguageEngineEnabled(language: TemplateLanguageEnum): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Get enabled template engines
|
|
36
|
+
*/
|
|
37
|
+
static getEnabledTemplateEngines(): TemplateEngineEnum[];
|
|
38
|
+
/**
|
|
39
|
+
* Get enabled language engines
|
|
40
|
+
*/
|
|
41
|
+
static getEnabledLanguageEngines(): TemplateLanguageEnum[];
|
|
42
|
+
/**
|
|
43
|
+
* Get engine options for a specific template engine
|
|
44
|
+
*/
|
|
45
|
+
static getTemplateEngineOptions(engine: TemplateEngineEnum): any;
|
|
46
|
+
/**
|
|
47
|
+
* Get engine options for a specific language engine
|
|
48
|
+
*/
|
|
49
|
+
static getLanguageEngineOptions(language: TemplateLanguageEnum): any;
|
|
50
|
+
/**
|
|
51
|
+
* Get custom filters
|
|
52
|
+
*/
|
|
53
|
+
static getCustomFilters(): Record<string, Function>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=template-config.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-config.service.d.ts","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/services/template-config.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAExF,qBACa,qBAAqB;IAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAmC;IAExD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAKnC;IAEF;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,gCAAgC,GAAG,IAAI;IAIjE;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,gCAAgC;IAOrD;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,OAAO;IAI3B;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,gCAAgC,EACvD,GAAG,EAAE,CAAC,GACP,gCAAgC,CAAC,CAAC,CAAC;IAKtC;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO;IAKnE;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO;IAKvE;;OAEG;IACH,MAAM,CAAC,yBAAyB,IAAI,kBAAkB,EAAE;IAKxD;;OAEG;IACH,MAAM,CAAC,yBAAyB,IAAI,oBAAoB,EAAE;IAK1D;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,GAAG;IAKhE;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,GAAG;IAKpE;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;CAItD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
2
|
+
import { TemplateEngine } from '../engines/template-engine';
|
|
3
|
+
import { LanguageEngine } from '../engines/language-engine';
|
|
4
|
+
type ClassType<T> = new (...args: any[]) => T;
|
|
5
|
+
export declare class TemplateEngineRegistryService {
|
|
6
|
+
private templateEngines;
|
|
7
|
+
private languageEngines;
|
|
8
|
+
private config;
|
|
9
|
+
constructor();
|
|
10
|
+
registerTemplateEngines(engineClasses: ClassType<TemplateEngine>[]): void;
|
|
11
|
+
registerTemplateEngine(format: TemplateEngineEnum, engine: TemplateEngine): void;
|
|
12
|
+
registerLanguageEngine(format: TemplateLanguageEnum, engine: LanguageEngine): void;
|
|
13
|
+
getTemplateEngine(format: TemplateEngineEnum): TemplateEngine;
|
|
14
|
+
getLanguageEngine(format: TemplateLanguageEnum): LanguageEngine;
|
|
15
|
+
registerLanguageEngines(engineClasses: ClassType<LanguageEngine>[]): void;
|
|
16
|
+
hasTemplateEngine(format: TemplateEngineEnum): boolean;
|
|
17
|
+
hasLanguageEngine(format: TemplateLanguageEnum): boolean;
|
|
18
|
+
getSupportedTemplateFormats(): TemplateEngineEnum[];
|
|
19
|
+
getSupportedLanguageFormats(): TemplateLanguageEnum[];
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=template-engine.registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-engine.registry.d.ts","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/services/template-engine.registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AASxF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,KAAK,SAAS,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAE9C,qBACa,6BAA6B;IACtC,OAAO,CAAC,eAAe,CAAsD;IAC7E,OAAO,CAAC,eAAe,CAAwD;IAC/E,OAAO,CAAC,MAAM,CAAmC;;IAqBjD,uBAAuB,CAAC,aAAa,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI;IAiBzE,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAIhF,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAIlF,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc;IAQ7D,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc;IAQ/D,uBAAuB,CAAC,aAAa,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI;IAWzE,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO;IAItD,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO;IAIxD,2BAA2B,IAAI,kBAAkB,EAAE;IAInD,2BAA2B,IAAI,oBAAoB,EAAE;CAGxD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { NestDynamicTemplateLayout } from '../entities/template-layout.entity';
|
|
3
|
+
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
4
|
+
import { TemplateLayoutFilterDto } from '../dto/template-layout-filter.dto';
|
|
5
|
+
import { TemplateEngineRegistryService } from './template-engine.registry';
|
|
6
|
+
import { RenderTemplateLayoutDto, RenderTemplateLayoutOutput } from '../dto/render-template-layout.dto';
|
|
7
|
+
import { CreateTemplateLayoutDto } from '../dto/create-template-layout.dto';
|
|
8
|
+
import { RenderContentTemplateLayoutDto } from '../dto/render-content-template-layout.dto';
|
|
9
|
+
export declare class TemplateLayoutService {
|
|
10
|
+
private readonly layoutRepository;
|
|
11
|
+
private readonly engineRegistry;
|
|
12
|
+
constructor(layoutRepository: Repository<NestDynamicTemplateLayout>, engineRegistry: TemplateEngineRegistryService);
|
|
13
|
+
render(renderDto: RenderTemplateLayoutDto): Promise<RenderTemplateLayoutOutput>;
|
|
14
|
+
renderContent(input: RenderContentTemplateLayoutDto): Promise<string>;
|
|
15
|
+
renderLanguage(language: TemplateLanguageEnum, content: string, context: Record<string, any>): Promise<string>;
|
|
16
|
+
renderEngine(engine: TemplateEngineEnum, content: string, context: Record<string, any>): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Get all templates, with scoped templates taking precedence over system templates
|
|
19
|
+
*/
|
|
20
|
+
getTemplateLayouts(filter?: TemplateLayoutFilterDto): Promise<NestDynamicTemplateLayout[]>;
|
|
21
|
+
getTemplateLayoutById(id: string): Promise<NestDynamicTemplateLayout | null>;
|
|
22
|
+
findTemplateLayout(name: string, scope?: string, scopeId?: string, locale?: string): Promise<NestDynamicTemplateLayout | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Create a system template. Only system templates can be created directly.
|
|
25
|
+
*/
|
|
26
|
+
createTemplateLayout(data: CreateTemplateLayoutDto): Promise<NestDynamicTemplateLayout>;
|
|
27
|
+
overwriteSystemTemplateLayout(templateId: string, updates: Partial<CreateTemplateLayoutDto>): Promise<NestDynamicTemplateLayout>;
|
|
28
|
+
/**
|
|
29
|
+
* Update a template
|
|
30
|
+
*/
|
|
31
|
+
updateTemplateLayout(id: string, updates: Partial<CreateTemplateLayoutDto>, canUpdateSystemTemplate?: boolean): Promise<NestDynamicTemplateLayout>;
|
|
32
|
+
/**
|
|
33
|
+
* Delete a scoped template
|
|
34
|
+
*/
|
|
35
|
+
deleteTemplateLayout(id: string, canDeleteSystemTemplate?: boolean): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=template-layout.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-layout.service.d.ts","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/services/template-layout.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAoB,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACxG,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAO3F,qBACa,qBAAqB;IAG1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,gBAAgB,EAAE,UAAU,CAAC,yBAAyB,CAAC,EACvD,cAAc,EAAE,6BAA6B;IAI5D,MAAM,CAAC,SAAS,EAAE,uBAAuB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAoD/E,aAAa,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,MAAM,CAAC;IA0CrE,cAAc,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB9G,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB9G;;OAEG;IACG,kBAAkB,CAAC,MAAM,GAAE,uBAA4B,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAyD9F,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAM5E,kBAAkB,CACpB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IA8C5C;;OAEG;IACG,oBAAoB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA4BvF,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA+CtI;;OAEG;IACG,oBAAoB,CACtB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC,EACzC,uBAAuB,GAAE,OAAe,GACzC,OAAO,CAAC,yBAAyB,CAAC;IA0BrC;;OAEG;IACG,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,uBAAuB,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBlG"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { NestDynamicTemplate } from '../entities/template.entity';
|
|
3
|
+
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
4
|
+
import { RenderTemplateDto, RenderTemplateOutputDTO } from '../dto/render-template.dto';
|
|
5
|
+
import { CreateTemplateDto } from '../dto/create-template.dto';
|
|
6
|
+
import { TemplateFilterDto } from '../dto/template-filter.dto';
|
|
7
|
+
import { TemplateLayoutService } from './template-layout.service';
|
|
8
|
+
import { TemplateEngineRegistryService } from './template-engine.registry';
|
|
9
|
+
import { RenderContentTemplateDto } from '../dto/render-content-template.dto';
|
|
10
|
+
export declare class TemplateService {
|
|
11
|
+
private readonly templateRepository;
|
|
12
|
+
private readonly engineRegistry;
|
|
13
|
+
private readonly templateLayoutService;
|
|
14
|
+
constructor(templateRepository: Repository<NestDynamicTemplate>, engineRegistry: TemplateEngineRegistryService, templateLayoutService: TemplateLayoutService);
|
|
15
|
+
render(renderDto: RenderTemplateDto): Promise<RenderTemplateOutputDTO>;
|
|
16
|
+
renderContent(input: RenderContentTemplateDto): Promise<string>;
|
|
17
|
+
renderLanguage(language: TemplateLanguageEnum, content: string, context: Record<string, any>): Promise<string>;
|
|
18
|
+
renderEngine(engine: TemplateEngineEnum, content: string, context: Record<string, any>): Promise<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Get all templates, with scoped templates taking precedence over system templates
|
|
21
|
+
*/
|
|
22
|
+
getTemplates(filter?: TemplateFilterDto): Promise<NestDynamicTemplate[]>;
|
|
23
|
+
getTemplateById(id: string): Promise<NestDynamicTemplate | null>;
|
|
24
|
+
findTemplate(name: string, scope?: string, scopeId?: string, locale?: string): Promise<NestDynamicTemplate | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Create a system template. Only system templates can be created directly.
|
|
27
|
+
*/
|
|
28
|
+
createTemplate(data: CreateTemplateDto): Promise<NestDynamicTemplate>;
|
|
29
|
+
overwriteSystemTemplate(templateId: string, updates: Partial<CreateTemplateDto>): Promise<NestDynamicTemplate>;
|
|
30
|
+
/**
|
|
31
|
+
* Update a template
|
|
32
|
+
*/
|
|
33
|
+
updateTemplate(id: string, updates: Partial<CreateTemplateDto>, canUpdateSystemTemplate?: boolean): Promise<NestDynamicTemplate>;
|
|
34
|
+
/**
|
|
35
|
+
* Delete a scoped template
|
|
36
|
+
*/
|
|
37
|
+
deleteTemplate(id: string, canDeleteSystemTemplate?: boolean): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=template.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.service.d.ts","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/services/template.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,UAAU,EAAkB,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAoB,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAE3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAU9E,qBACa,eAAe;IAGpB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAFrB,kBAAkB,EAAE,UAAU,CAAC,mBAAmB,CAAC,EACnD,cAAc,EAAE,6BAA6B,EAC7C,qBAAqB,EAAE,qBAAqB;IAG3D,MAAM,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAkFtE,aAAa,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IA4E/D,cAAc,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB9G,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB9G;;OAEG;IACG,YAAY,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAyD5E,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAMhE,YAAY,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IA8CtC;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA4BrE,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAgDpH;;OAEG;IACG,cAAc,CAChB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACnC,uBAAuB,GAAE,OAAe,GACzC,OAAO,CAAC,mBAAmB,CAAC;IAyB/B;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,uBAAuB,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB5F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../packages/nest-dynamic-templates/src/test/helpers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;uBACH,IAAI,UAAU,MAAM;6BAoBd,MAAM,YAAY,MAAM;CASpD,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TypeOrmModuleOptions } from '@nestjs/typeorm';
|
|
2
|
+
import { RedisModuleOptions } from '@nestjs-modules/ioredis';
|
|
3
|
+
export declare const testDatabaseConfig: TypeOrmModuleOptions;
|
|
4
|
+
export declare const testRedisConfig: RedisModuleOptions;
|
|
5
|
+
//# sourceMappingURL=test-database.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-database.config.d.ts","sourceRoot":"","sources":["../../../../../packages/nest-dynamic-templates/src/test/test-database.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D,eAAO,MAAM,kBAAkB,EAAE,oBAOhC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,kBAS7B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { NestDynamicTemplatesModuleConfig } from '../lib/interfaces/module-config.interface';
|
|
2
|
+
export declare function createTestModule(options?: Partial<NestDynamicTemplatesModuleConfig>): Promise<import("@nestjs/testing").TestingModule>;
|
|
3
|
+
export declare function createTestApp(options?: Partial<NestDynamicTemplatesModuleConfig>): Promise<import("@nestjs/common").INestApplication<any>>;
|
|
4
|
+
//# sourceMappingURL=test.setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.setup.d.ts","sourceRoot":"","sources":["../../../../../packages/nest-dynamic-templates/src/test/test.setup.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAG7F,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,OAAO,CAAC,gCAAgC,CAAM,oDAY7F;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,OAAO,CAAC,gCAAgC,CAAM,2DAU1F"}
|
package/eslint.config.mjs
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import baseConfig from '../../eslint.base.config';
|
|
2
|
-
|
|
3
|
-
export default [
|
|
4
|
-
...baseConfig,
|
|
5
|
-
{
|
|
6
|
-
files: ['**/*.json'],
|
|
7
|
-
rules: {
|
|
8
|
-
'@nx/dependency-checks': [
|
|
9
|
-
'error',
|
|
10
|
-
{
|
|
11
|
-
ignoredFiles: ['{projectRoot}/eslint.config.{js,cjs,mjs,ts,cts,mts}'],
|
|
12
|
-
},
|
|
13
|
-
],
|
|
14
|
-
},
|
|
15
|
-
languageOptions: {
|
|
16
|
-
parser: await import('jsonc-eslint-parser'),
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
ignores: ['**/out-tsc'],
|
|
21
|
-
},
|
|
22
|
-
];
|
package/jest.config.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
displayName: 'nest-dynamic-templates',
|
|
3
|
-
preset: '../../jest.preset.js',
|
|
4
|
-
testEnvironment: 'node',
|
|
5
|
-
transform: {
|
|
6
|
-
'^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
|
|
7
|
-
},
|
|
8
|
-
moduleFileExtensions: ['ts', 'js', 'html'],
|
|
9
|
-
coverageDirectory: '../../coverage/packages/nest-dynamic-templates',
|
|
10
|
-
};
|
package/project.json
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "nest-dynamic-templates",
|
|
3
|
-
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
|
4
|
-
"sourceRoot": "packages/nest-dynamic-templates/src",
|
|
5
|
-
"projectType": "library",
|
|
6
|
-
"release": {
|
|
7
|
-
"version": {
|
|
8
|
-
"manifestRootsToUpdate": [
|
|
9
|
-
"dist/{projectRoot}"
|
|
10
|
-
],
|
|
11
|
-
"currentVersionResolver": "git-tag",
|
|
12
|
-
"fallbackCurrentVersionResolver": "disk"
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
"tags": [],
|
|
16
|
-
"targets": {
|
|
17
|
-
"build": {
|
|
18
|
-
"executor": "@nx/js:tsc",
|
|
19
|
-
"outputs": [
|
|
20
|
-
"{options.outputPath}"
|
|
21
|
-
],
|
|
22
|
-
"options": {
|
|
23
|
-
"outputPath": "dist/packages/nest-dynamic-templates",
|
|
24
|
-
"tsConfig": "packages/nest-dynamic-templates/tsconfig.lib.json",
|
|
25
|
-
"packageJson": "packages/nest-dynamic-templates/package.json",
|
|
26
|
-
"main": "packages/nest-dynamic-templates/src/index.ts",
|
|
27
|
-
"assets": [
|
|
28
|
-
"packages/nest-dynamic-templates/*.md"
|
|
29
|
-
]
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
"nx-release-publish": {
|
|
33
|
-
"options": {
|
|
34
|
-
"packageRoot": "dist/{projectRoot}"
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
package/src/lib/constant.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { IsString, IsEnum, IsOptional, IsNotEmpty, Matches } from 'class-validator';
|
|
2
|
-
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
3
|
-
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export class CreateTemplateLayoutDto {
|
|
7
|
-
|
|
8
|
-
@ApiProperty({ type: String })
|
|
9
|
-
@IsString()
|
|
10
|
-
@IsNotEmpty()
|
|
11
|
-
@Matches(/^[a-z0-9\-_]+$/, { message: 'Invalid template name format' })
|
|
12
|
-
name: string;
|
|
13
|
-
|
|
14
|
-
@ApiProperty({ type: String })
|
|
15
|
-
@IsString()
|
|
16
|
-
@IsOptional()
|
|
17
|
-
type?: string;
|
|
18
|
-
|
|
19
|
-
@ApiPropertyOptional({ type: String })
|
|
20
|
-
@IsString()
|
|
21
|
-
@IsNotEmpty()
|
|
22
|
-
displayName: string;
|
|
23
|
-
|
|
24
|
-
@ApiProperty({ type: String, nullable: true })
|
|
25
|
-
@IsString()
|
|
26
|
-
@IsOptional()
|
|
27
|
-
description?: string;
|
|
28
|
-
|
|
29
|
-
@ApiProperty({ enum: TemplateEngineEnum, type: String })
|
|
30
|
-
@IsEnum(TemplateEngineEnum)
|
|
31
|
-
@IsOptional()
|
|
32
|
-
engine: TemplateEngineEnum = TemplateEngineEnum.NUNJUCKS;
|
|
33
|
-
|
|
34
|
-
@ApiProperty({ enum: TemplateLanguageEnum, type: String })
|
|
35
|
-
@IsEnum(TemplateLanguageEnum)
|
|
36
|
-
@IsNotEmpty()
|
|
37
|
-
language: TemplateLanguageEnum;
|
|
38
|
-
|
|
39
|
-
@ApiProperty({ type: String, nullable: true })
|
|
40
|
-
@IsString()
|
|
41
|
-
content: string;
|
|
42
|
-
|
|
43
|
-
@ApiPropertyOptional({ type: String, default: 'system' })
|
|
44
|
-
@IsString()
|
|
45
|
-
@IsOptional()
|
|
46
|
-
scope: string = 'system';
|
|
47
|
-
|
|
48
|
-
@ApiPropertyOptional({ type: String })
|
|
49
|
-
@IsString()
|
|
50
|
-
@IsOptional()
|
|
51
|
-
scopeId?: string;
|
|
52
|
-
|
|
53
|
-
@ApiPropertyOptional({ type: String, nullable: true, default: 'en' })
|
|
54
|
-
@IsString()
|
|
55
|
-
@IsOptional()
|
|
56
|
-
locale?: string = 'en';
|
|
57
|
-
|
|
58
|
-
@ApiPropertyOptional({ type: Object, nullable: true })
|
|
59
|
-
@IsOptional()
|
|
60
|
-
previewContext?: Record<string, any>;
|
|
61
|
-
|
|
62
|
-
@ApiPropertyOptional({ type: Boolean, nullable: true })
|
|
63
|
-
@IsOptional()
|
|
64
|
-
isActive?: boolean = true;
|
|
65
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { IsString, IsEnum, IsOptional, IsNotEmpty, Matches, IsBoolean } from 'class-validator';
|
|
2
|
-
import { TemplateEngineEnum, TemplateLanguageEnum, TemplateTypeEnum } from '../interfaces/template.types';
|
|
3
|
-
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
4
|
-
import { Transform } from 'class-transformer';
|
|
5
|
-
|
|
6
|
-
export class CreateTemplateDto {
|
|
7
|
-
|
|
8
|
-
@ApiProperty({ type: String })
|
|
9
|
-
@IsString()
|
|
10
|
-
@IsNotEmpty()
|
|
11
|
-
@Matches(/^[a-z0-9\-_]+$/, { message: 'Invalid template name format' })
|
|
12
|
-
name: string;
|
|
13
|
-
|
|
14
|
-
@ApiPropertyOptional({ type: String, nullable: true })
|
|
15
|
-
@IsString()
|
|
16
|
-
@IsOptional()
|
|
17
|
-
templateLayoutName?: string;
|
|
18
|
-
|
|
19
|
-
@ApiProperty({ type: String })
|
|
20
|
-
@IsString()
|
|
21
|
-
@IsOptional()
|
|
22
|
-
type?: string;
|
|
23
|
-
|
|
24
|
-
@ApiPropertyOptional({ type: String })
|
|
25
|
-
@IsString()
|
|
26
|
-
@IsNotEmpty()
|
|
27
|
-
displayName: string;
|
|
28
|
-
|
|
29
|
-
@ApiProperty({ type: String, nullable: true })
|
|
30
|
-
@IsString()
|
|
31
|
-
@IsOptional()
|
|
32
|
-
description?: string;
|
|
33
|
-
|
|
34
|
-
@ApiProperty({ enum: TemplateEngineEnum, type: String })
|
|
35
|
-
@IsEnum(TemplateEngineEnum)
|
|
36
|
-
@IsOptional()
|
|
37
|
-
engine: TemplateEngineEnum = TemplateEngineEnum.NUNJUCKS;
|
|
38
|
-
|
|
39
|
-
@ApiProperty({ enum: TemplateLanguageEnum, type: String })
|
|
40
|
-
@IsEnum(TemplateLanguageEnum)
|
|
41
|
-
language: TemplateLanguageEnum;
|
|
42
|
-
|
|
43
|
-
@ApiProperty({ type: String, nullable: true })
|
|
44
|
-
@IsString()
|
|
45
|
-
@IsOptional()
|
|
46
|
-
content: string;
|
|
47
|
-
|
|
48
|
-
@ApiPropertyOptional({ type: String, nullable: true })
|
|
49
|
-
@IsString()
|
|
50
|
-
@IsOptional()
|
|
51
|
-
subject?: string;
|
|
52
|
-
|
|
53
|
-
@ApiPropertyOptional({ type: String, default: 'system' })
|
|
54
|
-
@IsString()
|
|
55
|
-
@IsOptional()
|
|
56
|
-
@Transform(({ value }) => value || 'system')
|
|
57
|
-
scope: string = 'system';
|
|
58
|
-
|
|
59
|
-
@ApiPropertyOptional({ type: String })
|
|
60
|
-
@IsString()
|
|
61
|
-
@IsOptional()
|
|
62
|
-
scopeId?: string;
|
|
63
|
-
|
|
64
|
-
@ApiPropertyOptional({ type: String, nullable: true, default: 'en' })
|
|
65
|
-
@IsString()
|
|
66
|
-
@IsOptional()
|
|
67
|
-
@IsNotEmpty()
|
|
68
|
-
@Transform(({ value }) => value || 'en')
|
|
69
|
-
locale?: string = 'en';
|
|
70
|
-
|
|
71
|
-
@ApiPropertyOptional({ type: Object, nullable: true })
|
|
72
|
-
@IsOptional()
|
|
73
|
-
previewContext?: Record<string, any>;
|
|
74
|
-
|
|
75
|
-
@ApiPropertyOptional({ type: Boolean, nullable: true })
|
|
76
|
-
@IsBoolean()
|
|
77
|
-
@IsOptional()
|
|
78
|
-
isActive?: boolean = true;
|
|
79
|
-
|
|
80
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { IsString, IsEnum, IsObject, IsOptional, IsNotEmpty } from 'class-validator';
|
|
2
|
-
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
3
|
-
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
4
|
-
import { Transform } from 'class-transformer';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export class RenderContentTemplateLayoutDto {
|
|
8
|
-
@ApiProperty({ type: String })
|
|
9
|
-
@IsString()
|
|
10
|
-
@IsNotEmpty()
|
|
11
|
-
content?: string;
|
|
12
|
-
|
|
13
|
-
@ApiProperty({ enum: TemplateLanguageEnum, type: String })
|
|
14
|
-
@IsEnum(TemplateLanguageEnum)
|
|
15
|
-
@IsNotEmpty()
|
|
16
|
-
@Transform(({ value }) => value || TemplateLanguageEnum.HTML)
|
|
17
|
-
language?: TemplateLanguageEnum;
|
|
18
|
-
|
|
19
|
-
@ApiProperty({ enum: TemplateEngineEnum, type: String })
|
|
20
|
-
@IsEnum(TemplateEngineEnum)
|
|
21
|
-
@Transform(({ value }) => value || TemplateEngineEnum.NUNJUCKS)
|
|
22
|
-
engine?: TemplateEngineEnum;
|
|
23
|
-
|
|
24
|
-
@ApiPropertyOptional({
|
|
25
|
-
type: String,
|
|
26
|
-
nullable: true,
|
|
27
|
-
description: 'The context of the template'
|
|
28
|
-
})
|
|
29
|
-
@IsObject()
|
|
30
|
-
@IsOptional()
|
|
31
|
-
context?: Record<string, any>;
|
|
32
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { IsString, IsEnum, IsObject, IsOptional, IsNotEmpty } from 'class-validator';
|
|
2
|
-
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
3
|
-
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
4
|
-
import { Transform } from 'class-transformer';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export class RenderContentTemplateDto {
|
|
8
|
-
@ApiProperty({ type: String })
|
|
9
|
-
@IsString()
|
|
10
|
-
@IsNotEmpty()
|
|
11
|
-
content?: string;
|
|
12
|
-
|
|
13
|
-
@ApiProperty({ enum: TemplateLanguageEnum, type: String })
|
|
14
|
-
@IsEnum(TemplateLanguageEnum)
|
|
15
|
-
@IsNotEmpty()
|
|
16
|
-
@Transform(({ value }) => value || TemplateLanguageEnum.HTML)
|
|
17
|
-
language?: TemplateLanguageEnum;
|
|
18
|
-
|
|
19
|
-
@ApiProperty({ enum: TemplateEngineEnum, type: String })
|
|
20
|
-
@IsEnum(TemplateEngineEnum)
|
|
21
|
-
@Transform(({ value }) => value || TemplateEngineEnum.NUNJUCKS)
|
|
22
|
-
engine?: TemplateEngineEnum;
|
|
23
|
-
|
|
24
|
-
@ApiPropertyOptional({
|
|
25
|
-
type: String,
|
|
26
|
-
nullable: true,
|
|
27
|
-
description: 'The context of the template'
|
|
28
|
-
})
|
|
29
|
-
@IsObject()
|
|
30
|
-
@IsOptional()
|
|
31
|
-
context?: Record<string, any>;
|
|
32
|
-
|
|
33
|
-
@ApiPropertyOptional({ type: String })
|
|
34
|
-
@IsString()
|
|
35
|
-
@IsOptional()
|
|
36
|
-
templateLayoutId?: string;
|
|
37
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { IsString, IsEnum, IsObject, IsOptional, IsNotEmpty } from 'class-validator';
|
|
2
|
-
import { TemplateTypeEnum } from '../interfaces/template.types';
|
|
3
|
-
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export class RenderTemplateLayoutDto {
|
|
7
|
-
|
|
8
|
-
@ApiPropertyOptional({
|
|
9
|
-
type: String,
|
|
10
|
-
default: 'en',
|
|
11
|
-
description: 'The locale code, i.e en, fr, es, etc.'
|
|
12
|
-
})
|
|
13
|
-
@IsString()
|
|
14
|
-
@IsOptional()
|
|
15
|
-
locale?: string = 'en';
|
|
16
|
-
|
|
17
|
-
@ApiProperty({ type: String })
|
|
18
|
-
@IsString()
|
|
19
|
-
@IsNotEmpty()
|
|
20
|
-
name: string;
|
|
21
|
-
|
|
22
|
-
@ApiProperty({
|
|
23
|
-
type: String,
|
|
24
|
-
default: 'system',
|
|
25
|
-
description: 'The scope of the template, i.e user, organization, etc.'
|
|
26
|
-
})
|
|
27
|
-
@IsString()
|
|
28
|
-
scope: string;
|
|
29
|
-
|
|
30
|
-
@ApiPropertyOptional({
|
|
31
|
-
type: String,
|
|
32
|
-
default: null,
|
|
33
|
-
description: 'The scope id of the template, i.e user id, organization id, etc.'
|
|
34
|
-
})
|
|
35
|
-
@IsString()
|
|
36
|
-
@IsOptional()
|
|
37
|
-
scopeId?: string;
|
|
38
|
-
|
|
39
|
-
@ApiPropertyOptional({
|
|
40
|
-
type: String,
|
|
41
|
-
nullable: true,
|
|
42
|
-
description: 'The context of the template'
|
|
43
|
-
})
|
|
44
|
-
@IsObject()
|
|
45
|
-
@IsOptional()
|
|
46
|
-
context?: Record<string, any>;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
export class RenderTemplateLayoutOutput {
|
|
51
|
-
@ApiProperty({ type: String })
|
|
52
|
-
@IsString()
|
|
53
|
-
@IsNotEmpty()
|
|
54
|
-
content: string;
|
|
55
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { IsString, IsEnum, IsObject, IsOptional, IsNotEmpty, Matches, ValidateIf } from 'class-validator';
|
|
2
|
-
import { TemplateLanguageEnum, TemplateTypeEnum } from '../interfaces/template.types';
|
|
3
|
-
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export class RenderTemplateDto {
|
|
7
|
-
|
|
8
|
-
@ApiPropertyOptional({
|
|
9
|
-
type: String,
|
|
10
|
-
default: 'en',
|
|
11
|
-
description: 'The locale code, i.e en, fr, es, etc.'
|
|
12
|
-
})
|
|
13
|
-
@IsString()
|
|
14
|
-
@IsOptional()
|
|
15
|
-
locale?: string = 'en';
|
|
16
|
-
|
|
17
|
-
@ApiProperty({ type: String })
|
|
18
|
-
@IsString()
|
|
19
|
-
@IsNotEmpty()
|
|
20
|
-
@ValidateIf((object, value) => !object?.content)
|
|
21
|
-
name?: string;
|
|
22
|
-
|
|
23
|
-
@ApiProperty({ type: String })
|
|
24
|
-
@IsString()
|
|
25
|
-
@IsNotEmpty()
|
|
26
|
-
@ValidateIf((object, value) => !object?.name)
|
|
27
|
-
content?: string;
|
|
28
|
-
|
|
29
|
-
@ApiProperty({ enum: TemplateLanguageEnum, type: String })
|
|
30
|
-
@IsEnum(TemplateLanguageEnum)
|
|
31
|
-
@IsNotEmpty()
|
|
32
|
-
@ValidateIf((object, value) => !object?.name)
|
|
33
|
-
language?: TemplateLanguageEnum;
|
|
34
|
-
|
|
35
|
-
@ApiPropertyOptional({
|
|
36
|
-
type: String,
|
|
37
|
-
default: 'system',
|
|
38
|
-
description: 'The scope of the template, i.e user, organization, etc.'
|
|
39
|
-
})
|
|
40
|
-
@IsString()
|
|
41
|
-
@IsOptional()
|
|
42
|
-
scope?: string = 'system';
|
|
43
|
-
|
|
44
|
-
@ApiPropertyOptional({
|
|
45
|
-
type: String,
|
|
46
|
-
default: null,
|
|
47
|
-
description: 'The scope id of the template, i.e user id, organization id, etc.'
|
|
48
|
-
})
|
|
49
|
-
@IsString()
|
|
50
|
-
@IsOptional()
|
|
51
|
-
scopeId?: string;
|
|
52
|
-
|
|
53
|
-
@ApiPropertyOptional({
|
|
54
|
-
type: String,
|
|
55
|
-
nullable: true,
|
|
56
|
-
description: 'The context of the template'
|
|
57
|
-
})
|
|
58
|
-
@IsObject()
|
|
59
|
-
@IsOptional()
|
|
60
|
-
context?: Record<string, any>;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
export class RenderTemplateOutputDTO {
|
|
65
|
-
@ApiProperty({ type: String })
|
|
66
|
-
@IsString()
|
|
67
|
-
@IsNotEmpty()
|
|
68
|
-
content: string;
|
|
69
|
-
|
|
70
|
-
@ApiProperty({ type: String })
|
|
71
|
-
@IsString()
|
|
72
|
-
@IsNotEmpty()
|
|
73
|
-
subject: string;
|
|
74
|
-
}
|