@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.
Files changed (113) hide show
  1. package/package.json +2 -2
  2. package/src/{index.ts → index.d.ts} +2 -14
  3. package/src/index.d.ts.map +1 -0
  4. package/src/lib/constant.d.ts +3 -0
  5. package/src/lib/constant.d.ts.map +1 -0
  6. package/src/lib/dto/create-template-layout.dto.d.ts +16 -0
  7. package/src/lib/dto/create-template-layout.dto.d.ts.map +1 -0
  8. package/src/lib/dto/create-template.dto.d.ts +18 -0
  9. package/src/lib/dto/create-template.dto.d.ts.map +1 -0
  10. package/src/lib/dto/render-content-template-layout.dto.d.ts +8 -0
  11. package/src/lib/dto/render-content-template-layout.dto.d.ts.map +1 -0
  12. package/src/lib/dto/render-content-template.dto.d.ts +9 -0
  13. package/src/lib/dto/render-content-template.dto.d.ts.map +1 -0
  14. package/src/lib/dto/render-template-layout.dto.d.ts +11 -0
  15. package/src/lib/dto/render-template-layout.dto.d.ts.map +1 -0
  16. package/src/lib/dto/render-template.dto.d.ts +15 -0
  17. package/src/lib/dto/render-template.dto.d.ts.map +1 -0
  18. package/src/lib/dto/template-filter.dto.d.ts +9 -0
  19. package/src/lib/dto/template-filter.dto.d.ts.map +1 -0
  20. package/src/lib/dto/template-layout-filter.dto.d.ts +8 -0
  21. package/src/lib/dto/template-layout-filter.dto.d.ts.map +1 -0
  22. package/src/lib/engines/language/html.engine.d.ts +10 -0
  23. package/src/lib/engines/language/html.engine.d.ts.map +1 -0
  24. package/src/lib/engines/language/{index.ts → index.d.ts} +1 -0
  25. package/src/lib/engines/language/index.d.ts.map +1 -0
  26. package/src/lib/engines/language/markdown.engine.d.ts +10 -0
  27. package/src/lib/engines/language/markdown.engine.d.ts.map +1 -0
  28. package/src/lib/engines/language/mjml.engine.d.ts +10 -0
  29. package/src/lib/engines/language/mjml.engine.d.ts.map +1 -0
  30. package/src/lib/engines/language/text.engine.d.ts +8 -0
  31. package/src/lib/engines/language/text.engine.d.ts.map +1 -0
  32. package/src/lib/engines/{language-engine.ts → language-engine.d.ts} +2 -7
  33. package/src/lib/engines/language-engine.d.ts.map +1 -0
  34. package/src/lib/engines/template/ejs.engine.d.ts +11 -0
  35. package/src/lib/engines/template/ejs.engine.d.ts.map +1 -0
  36. package/src/lib/engines/template/handlebars.engine.d.ts +11 -0
  37. package/src/lib/engines/template/handlebars.engine.d.ts.map +1 -0
  38. package/src/lib/engines/template/{index.ts → index.d.ts} +1 -0
  39. package/src/lib/engines/template/index.d.ts.map +1 -0
  40. package/src/lib/engines/template/nunjucks.engine.d.ts +17 -0
  41. package/src/lib/engines/template/nunjucks.engine.d.ts.map +1 -0
  42. package/src/lib/engines/template/pug.engine.d.ts +13 -0
  43. package/src/lib/engines/template/pug.engine.d.ts.map +1 -0
  44. package/src/lib/engines/{template-engine.ts → template-engine.d.ts} +2 -6
  45. package/src/lib/engines/template-engine.d.ts.map +1 -0
  46. package/src/lib/entities/template-layout.entity.d.ts +21 -0
  47. package/src/lib/entities/template-layout.entity.d.ts.map +1 -0
  48. package/src/lib/entities/template.entity.d.ts +22 -0
  49. package/src/lib/entities/template.entity.d.ts.map +1 -0
  50. package/src/lib/errors/template.errors.d.ts +20 -0
  51. package/src/lib/errors/template.errors.d.ts.map +1 -0
  52. package/src/lib/interfaces/{module-config.interface.ts → module-config.interface.d.ts} +2 -10
  53. package/src/lib/interfaces/module-config.interface.d.ts.map +1 -0
  54. package/src/lib/interfaces/template.types.d.ts +23 -0
  55. package/src/lib/interfaces/template.types.d.ts.map +1 -0
  56. package/src/lib/nest-dynamic-templates.module.d.ts +11 -0
  57. package/src/lib/nest-dynamic-templates.module.d.ts.map +1 -0
  58. package/src/lib/services/template-config.service.d.ts +55 -0
  59. package/src/lib/services/template-config.service.d.ts.map +1 -0
  60. package/src/lib/services/template-engine.registry.d.ts +22 -0
  61. package/src/lib/services/template-engine.registry.d.ts.map +1 -0
  62. package/src/lib/services/template-layout.service.d.ts +37 -0
  63. package/src/lib/services/template-layout.service.d.ts.map +1 -0
  64. package/src/lib/services/template.service.d.ts +39 -0
  65. package/src/lib/services/template.service.d.ts.map +1 -0
  66. package/src/test/helpers.d.ts +5 -0
  67. package/src/test/helpers.d.ts.map +1 -0
  68. package/src/test/test-database.config.d.ts +5 -0
  69. package/src/test/test-database.config.d.ts.map +1 -0
  70. package/src/test/test.setup.d.ts +4 -0
  71. package/src/test/test.setup.d.ts.map +1 -0
  72. package/eslint.config.mjs +0 -22
  73. package/jest.config.ts +0 -10
  74. package/project.json +0 -38
  75. package/src/lib/constant.ts +0 -2
  76. package/src/lib/dto/create-template-layout.dto.ts +0 -65
  77. package/src/lib/dto/create-template.dto.ts +0 -80
  78. package/src/lib/dto/render-content-template-layout.dto.ts +0 -32
  79. package/src/lib/dto/render-content-template.dto.ts +0 -37
  80. package/src/lib/dto/render-template-layout.dto.ts +0 -55
  81. package/src/lib/dto/render-template.dto.ts +0 -74
  82. package/src/lib/dto/template-filter.dto.ts +0 -52
  83. package/src/lib/dto/template-layout-filter.dto.ts +0 -51
  84. package/src/lib/engines/language/html.engine.ts +0 -49
  85. package/src/lib/engines/language/markdown.engine.ts +0 -37
  86. package/src/lib/engines/language/mjml.engine.ts +0 -44
  87. package/src/lib/engines/language/text.engine.ts +0 -15
  88. package/src/lib/engines/template/ejs.engine.ts +0 -33
  89. package/src/lib/engines/template/handlebars.engine.ts +0 -35
  90. package/src/lib/engines/template/nunjucks.engine.ts +0 -70
  91. package/src/lib/engines/template/pug.engine.ts +0 -43
  92. package/src/lib/entities/template-layout.entity.ts +0 -99
  93. package/src/lib/entities/template.entity.ts +0 -105
  94. package/src/lib/errors/template.errors.ts +0 -73
  95. package/src/lib/interfaces/template.types.ts +0 -25
  96. package/src/lib/nest-dynamic-templates.module.ts +0 -143
  97. package/src/lib/services/template-config.service.ts +0 -112
  98. package/src/lib/services/template-engine.registry.ts +0 -109
  99. package/src/lib/services/template-layout.service.ts +0 -407
  100. package/src/lib/services/template.service.ts +0 -476
  101. package/src/test/helpers.ts +0 -31
  102. package/src/test/nunjucks.service.spec.ts +0 -157
  103. package/src/test/pug.service.spec-temp +0 -254
  104. package/src/test/template-layout.service.spec.ts +0 -422
  105. package/src/test/template.service.spec.ts +0 -862
  106. package/src/test/test-database.config.ts +0 -24
  107. package/src/test/test-database.d.ts +0 -6
  108. package/src/test/test.setup.ts +0 -34
  109. package/src/types/ioredis.d.ts +0 -6
  110. package/src/types/mjml.d.ts +0 -5
  111. package/tsconfig.json +0 -17
  112. package/tsconfig.lib.json +0 -14
  113. package/tsconfig.spec.json +0 -15
@@ -1,73 +0,0 @@
1
- import { BadRequestException, InternalServerErrorException } from '@nestjs/common';
2
-
3
- export class TemplateRenderError extends InternalServerErrorException {
4
- constructor(operation: string, originalError: Error, templateName?: string) {
5
- const message = templateName
6
- ? `Failed to render template '${templateName}' during ${operation}: ${originalError.message}`
7
- : `Failed to render content during ${operation}: ${originalError.message}`;
8
-
9
- super({
10
- message,
11
- error: 'TEMPLATE_RENDER_ERROR',
12
- operation,
13
- templateName,
14
- originalError: originalError.message,
15
- });
16
- }
17
- }
18
-
19
- export class TemplateEngineError extends InternalServerErrorException {
20
- constructor(engine: string, originalError: Error) {
21
- super({
22
- message: `Template engine '${engine}' failed to render content: ${originalError.message}`,
23
- error: 'TEMPLATE_ENGINE_ERROR',
24
- engine,
25
- originalError: originalError.message,
26
- });
27
- }
28
- }
29
-
30
- export class TemplateLanguageError extends InternalServerErrorException {
31
- constructor(language: string, originalError: Error) {
32
- super({
33
- message: `Language processor '${language}' failed to render content: ${originalError.message}`,
34
- error: 'TEMPLATE_LANGUAGE_ERROR',
35
- language,
36
- originalError: originalError.message,
37
- });
38
- }
39
- }
40
-
41
- export class TemplateLayoutError extends InternalServerErrorException {
42
- constructor(layoutName: string, originalError: Error) {
43
- super({
44
- message: `Template layout '${layoutName}' failed to render: ${originalError.message}`,
45
- error: 'TEMPLATE_LAYOUT_ERROR',
46
- layoutName,
47
- originalError: originalError.message,
48
- });
49
- }
50
- }
51
-
52
- export class TemplateContentError extends InternalServerErrorException {
53
- constructor(contentType: string, originalError: Error) {
54
- super({
55
- message: `Failed to process ${contentType} content: ${originalError.message}`,
56
- error: 'TEMPLATE_CONTENT_ERROR',
57
- contentType,
58
- originalError: originalError.message,
59
- });
60
- }
61
- }
62
-
63
- export class TemplateValidationError extends BadRequestException {
64
- constructor(field: string, value: any, reason: string) {
65
- super({
66
- message: `Template validation failed for field '${field}': ${reason}`,
67
- error: 'TEMPLATE_VALIDATION_ERROR',
68
- field,
69
- value,
70
- reason,
71
- });
72
- }
73
- }
@@ -1,25 +0,0 @@
1
- export enum TemplateTypeEnum {
2
- EMAIL = 'email',
3
- SMS = 'sms',
4
- PUSH = 'push',
5
- PDF = 'pdf',
6
- }
7
-
8
- export enum TemplateEngineEnum {
9
- NUNJUCKS = 'njk',
10
- HANDLEBARS = 'hbs',
11
- EJS = 'ejs',
12
- PUG = 'pug',
13
- }
14
-
15
- export enum TemplateLanguageEnum {
16
- MJML = 'mjml',
17
- HTML = 'html',
18
- MARKDOWN = 'md',
19
- TEXT = 'txt',
20
- }
21
-
22
- export interface Scope {
23
- scope: string;
24
- id: string;
25
- }
@@ -1,143 +0,0 @@
1
- import { Module, DynamicModule, Provider } from '@nestjs/common';
2
- import { TypeOrmModule } from '@nestjs/typeorm';
3
- import { NestDynamicTemplate } from './entities/template.entity';
4
- import { NestDynamicTemplateLayout } from './entities/template-layout.entity';
5
- import {
6
- NestDynamicTemplatesModuleConfig,
7
- NestDynamicTemplatesModuleAsyncOptions,
8
- NestDynamicTemplatesModuleOptionsFactory
9
- } from './interfaces/module-config.interface';
10
- import deepmerge from 'deepmerge';
11
- import { TemplateEngineRegistryService } from './services/template-engine.registry';
12
- import { TemplateLayoutService } from './services/template-layout.service';
13
- import { TemplateService } from './services/template.service';
14
- import { TemplateConfigService } from './services/template-config.service';
15
- import { NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER } from './constant';
16
- import { TemplateEngineEnum } from './interfaces/template.types';
17
- import { TemplateLanguageEnum } from './interfaces/template.types';
18
-
19
-
20
- const defaultConfig: NestDynamicTemplatesModuleConfig = {
21
- engines: {
22
- template: [TemplateEngineEnum.NUNJUCKS],
23
- language: [TemplateLanguageEnum.HTML, TemplateLanguageEnum.MJML, TemplateLanguageEnum.TEXT]
24
- }
25
- }
26
-
27
- @Module({
28
- imports: [TypeOrmModule.forFeature([NestDynamicTemplate, NestDynamicTemplateLayout])],
29
- providers: [
30
- TemplateConfigService,
31
- TemplateEngineRegistryService,
32
- TemplateLayoutService,
33
- TemplateService,
34
- ],
35
- exports: [
36
- TemplateConfigService,
37
- TemplateService,
38
- TemplateLayoutService,
39
- ],
40
- })
41
- export class NestDynamicTemplatesModule {
42
- static moduleDefaultOptions: Partial<NestDynamicTemplatesModuleConfig> = defaultConfig;
43
-
44
- static forRoot(config: NestDynamicTemplatesModuleConfig = {}): DynamicModule {
45
- const mergedConfig = this.getOptions(config);
46
-
47
- // Set options in static service
48
- TemplateConfigService.setOptions(mergedConfig);
49
-
50
- return {
51
- module: NestDynamicTemplatesModule,
52
- global: mergedConfig.isGlobal,
53
- imports: [
54
- TypeOrmModule.forFeature([NestDynamicTemplate, NestDynamicTemplateLayout]),
55
- ],
56
- providers: [
57
- TemplateConfigService,
58
- TemplateEngineRegistryService,
59
- TemplateLayoutService,
60
- TemplateService,
61
- ],
62
- exports: [
63
- TemplateConfigService,
64
- TemplateService,
65
- TemplateLayoutService,
66
- ],
67
- };
68
- }
69
-
70
- static forRootAsync(options: NestDynamicTemplatesModuleAsyncOptions): DynamicModule {
71
- const asyncProviders = this.createAsyncProviders(options);
72
-
73
- return {
74
- module: NestDynamicTemplatesModule,
75
- global: options.isGlobal,
76
- imports: [
77
- TypeOrmModule.forFeature([NestDynamicTemplate, NestDynamicTemplateLayout]),
78
- ...(options.imports || []),
79
- ],
80
- providers: [
81
- ...asyncProviders,
82
- TemplateConfigService,
83
- TemplateEngineRegistryService,
84
- TemplateLayoutService,
85
- TemplateService,
86
- ],
87
- exports: [
88
- TemplateConfigService,
89
- TemplateService,
90
- TemplateLayoutService,
91
- ],
92
- };
93
- }
94
-
95
- private static createAsyncProviders(options: NestDynamicTemplatesModuleAsyncOptions): Provider[] {
96
- if (options.useExisting || options.useFactory) {
97
- return [this.createAsyncOptionsProvider(options)];
98
- }
99
-
100
- if (options.useClass) {
101
- return [
102
- this.createAsyncOptionsProvider(options),
103
- {
104
- provide: options.useClass,
105
- useClass: options.useClass,
106
- },
107
- ];
108
- }
109
-
110
- return [];
111
- }
112
-
113
- private static createAsyncOptionsProvider(options: NestDynamicTemplatesModuleAsyncOptions): Provider {
114
- if (options.useFactory) {
115
- return {
116
- provide: NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER,
117
- useFactory: async (...args: any[]) => {
118
- const userOptions = options.useFactory ? await options.useFactory(...args) : {};
119
- const mergedOptions = this.getOptions(userOptions);
120
- TemplateConfigService.setOptions(mergedOptions);
121
- return mergedOptions;
122
- },
123
- inject: options.inject || [],
124
- };
125
- }
126
-
127
- return {
128
- provide: NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER,
129
- useFactory: async (optionsFactory: NestDynamicTemplatesModuleOptionsFactory) => {
130
- const userOptions = await optionsFactory.createNestDynamicTemplatesModuleOptions();
131
- const mergedOptions = this.getOptions(userOptions);
132
- TemplateConfigService.setOptions(mergedOptions);
133
- return mergedOptions;
134
- },
135
- inject: [options.useExisting || options.useClass!],
136
- };
137
- }
138
-
139
- private static getOptions(options: NestDynamicTemplatesModuleConfig): NestDynamicTemplatesModuleConfig {
140
- return deepmerge(this.moduleDefaultOptions, options);
141
- }
142
-
143
- }
@@ -1,112 +0,0 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { NestDynamicTemplatesModuleConfig } from '../interfaces/module-config.interface';
3
- import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
4
-
5
- @Injectable()
6
- export class TemplateConfigService {
7
- private static config: NestDynamicTemplatesModuleConfig;
8
-
9
- private static readonly defaultConfig: NestDynamicTemplatesModuleConfig = {
10
- engines: {
11
- template: [TemplateEngineEnum.NUNJUCKS],
12
- language: [TemplateLanguageEnum.HTML, TemplateLanguageEnum.MJML, TemplateLanguageEnum.TEXT]
13
- }
14
- };
15
-
16
- /**
17
- * Set the configuration options
18
- */
19
- static setOptions(config: NestDynamicTemplatesModuleConfig): void {
20
- this.config = { ...this.defaultConfig, ...config };
21
- }
22
-
23
- /**
24
- * Get the current configuration options
25
- */
26
- static getOptions(): NestDynamicTemplatesModuleConfig {
27
- if (!this.config) {
28
- return this.defaultConfig;
29
- }
30
- return this.config;
31
- }
32
-
33
- /**
34
- * Check if configuration has been set
35
- */
36
- static hasConfig(): boolean {
37
- return !!this.config;
38
- }
39
-
40
- /**
41
- * Reset configuration to default
42
- */
43
- static reset(): void {
44
- this.config = { ...this.defaultConfig };
45
- }
46
-
47
- /**
48
- * Get a specific configuration value
49
- */
50
- static get<K extends keyof NestDynamicTemplatesModuleConfig>(
51
- key: K
52
- ): NestDynamicTemplatesModuleConfig[K] {
53
- const config = this.getOptions();
54
- return config[key];
55
- }
56
-
57
- /**
58
- * Check if a template engine is enabled
59
- */
60
- static isTemplateEngineEnabled(engine: TemplateEngineEnum): boolean {
61
- const config = this.getOptions();
62
- return config.engines?.template?.includes(engine) ?? false;
63
- }
64
-
65
- /**
66
- * Check if a language engine is enabled
67
- */
68
- static isLanguageEngineEnabled(language: TemplateLanguageEnum): boolean {
69
- const config = this.getOptions();
70
- return config.engines?.language?.includes(language) ?? false;
71
- }
72
-
73
- /**
74
- * Get enabled template engines
75
- */
76
- static getEnabledTemplateEngines(): TemplateEngineEnum[] {
77
- const config = this.getOptions();
78
- return config.engines?.template ?? this.defaultConfig.engines!.template!;
79
- }
80
-
81
- /**
82
- * Get enabled language engines
83
- */
84
- static getEnabledLanguageEngines(): TemplateLanguageEnum[] {
85
- const config = this.getOptions();
86
- return config.engines?.language ?? this.defaultConfig.engines!.language!;
87
- }
88
-
89
- /**
90
- * Get engine options for a specific template engine
91
- */
92
- static getTemplateEngineOptions(engine: TemplateEngineEnum): any {
93
- const config = this.getOptions();
94
- return config.enginesOptions?.template?.[engine];
95
- }
96
-
97
- /**
98
- * Get engine options for a specific language engine
99
- */
100
- static getLanguageEngineOptions(language: TemplateLanguageEnum): any {
101
- const config = this.getOptions();
102
- return config.enginesOptions?.language?.[language];
103
- }
104
-
105
- /**
106
- * Get custom filters
107
- */
108
- static getCustomFilters(): Record<string, Function> {
109
- const config = this.getOptions();
110
- return config.enginesOptions?.filters ?? {};
111
- }
112
- }
@@ -1,109 +0,0 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
3
- import { NunjucksEngine } from '../engines/template/nunjucks.engine';
4
- import { MjmlEngine } from '../engines/language/mjml.engine';
5
- import { HtmlEngine } from '../engines/language/html.engine';
6
- import { MarkdownEngine, TextEngine } from '../engines/language';
7
- import { EjsEngine } from '../engines/template/ejs.engine';
8
- import { HandlebarsEngine } from '../engines/template/handlebars.engine';
9
- import { PugEngine } from '../engines/template/pug.engine';
10
- import { TemplateConfigService } from './template-config.service';
11
- import { TemplateEngine } from '../engines/template-engine';
12
- import { LanguageEngine } from '../engines/language-engine';
13
- import { NestDynamicTemplatesModuleConfig } from '../interfaces/module-config.interface';
14
-
15
- type ClassType<T> = new (...args: any[]) => T;
16
-
17
- @Injectable()
18
- export class TemplateEngineRegistryService {
19
- private templateEngines: Map<TemplateEngineEnum, TemplateEngine> = new Map();
20
- private languageEngines: Map<TemplateLanguageEnum, LanguageEngine> = new Map();
21
- private config: NestDynamicTemplatesModuleConfig;
22
-
23
- constructor() {
24
- this.config = TemplateConfigService.getOptions();
25
-
26
- this.registerTemplateEngines([
27
- NunjucksEngine,
28
- HandlebarsEngine,
29
- EjsEngine,
30
- PugEngine
31
- ]);
32
-
33
-
34
- this.registerLanguageEngines([
35
- MjmlEngine,
36
- HtmlEngine,
37
- TextEngine,
38
- MarkdownEngine
39
- ]);
40
- }
41
-
42
- registerTemplateEngines(engineClasses: ClassType<TemplateEngine>[]): void {
43
- engineClasses.forEach(EngineClass => {
44
- const engineName = (EngineClass as any).engineName;
45
- if (!engineName) {
46
- throw new Error(`Engine class ${EngineClass.name} must define static engineName property`);
47
- }
48
- const options = (this.config.enginesOptions?.template as any)?.[engineName];
49
-
50
- const customOptions = {
51
- filters: this.config.enginesOptions?.filters,
52
- globalValues: this.config.enginesOptions?.globalValues
53
- }
54
-
55
- this.registerTemplateEngine(engineName, new EngineClass(options, customOptions));
56
- });
57
- }
58
-
59
- registerTemplateEngine(format: TemplateEngineEnum, engine: TemplateEngine): void {
60
- this.templateEngines.set(format, engine);
61
- }
62
-
63
- registerLanguageEngine(format: TemplateLanguageEnum, engine: LanguageEngine): void {
64
- this.languageEngines.set(format, engine);
65
- }
66
-
67
- getTemplateEngine(format: TemplateEngineEnum): TemplateEngine {
68
- const engine = this.templateEngines.get(format);
69
- if (!engine) {
70
- throw new Error(`Template engine not found for format: ${format}`);
71
- }
72
- return engine;
73
- }
74
-
75
- getLanguageEngine(format: TemplateLanguageEnum): LanguageEngine {
76
- const engine = this.languageEngines.get(format);
77
- if (!engine) {
78
- throw new Error(`Language engine not found for format: ${format}`);
79
- }
80
- return engine;
81
- }
82
-
83
- registerLanguageEngines(engineClasses: ClassType<LanguageEngine>[]): void {
84
- engineClasses.forEach(EngineClass => {
85
- const engineName = (EngineClass as any).engineName;
86
- if (!engineName) {
87
- throw new Error(`Engine class ${EngineClass.name} must define static engineName property`);
88
- }
89
- const options = (this.config.enginesOptions?.language as any)?.[engineName];
90
- this.registerLanguageEngine(engineName, new EngineClass(options));
91
- });
92
- }
93
-
94
- hasTemplateEngine(format: TemplateEngineEnum): boolean {
95
- return this.templateEngines.has(format);
96
- }
97
-
98
- hasLanguageEngine(format: TemplateLanguageEnum): boolean {
99
- return this.languageEngines.has(format);
100
- }
101
-
102
- getSupportedTemplateFormats(): TemplateEngineEnum[] {
103
- return Array.from(this.templateEngines.keys());
104
- }
105
-
106
- getSupportedLanguageFormats(): TemplateLanguageEnum[] {
107
- return Array.from(this.languageEngines.keys());
108
- }
109
- }