@ackplus/nest-dynamic-templates 1.1.15 → 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.
- package/CHANGELOG.md +32 -0
- package/MIGRATION.md +97 -0
- package/README.md +201 -116
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/config/resolve-config.d.ts +7 -0
- package/dist/lib/config/resolve-config.js +50 -0
- package/dist/lib/config/resolve-config.js.map +1 -0
- package/dist/lib/constant.d.ts +1 -0
- package/dist/lib/constant.js +2 -1
- package/dist/lib/constant.js.map +1 -1
- package/dist/lib/dto/create-template-layout.dto.js +49 -12
- package/dist/lib/dto/create-template-layout.dto.js.map +1 -1
- package/dist/lib/dto/create-template.dto.js +59 -14
- package/dist/lib/dto/create-template.dto.js.map +1 -1
- package/dist/lib/dto/render-template.dto.d.ts +3 -6
- package/dist/lib/dto/render-template.dto.js +17 -38
- package/dist/lib/dto/render-template.dto.js.map +1 -1
- package/dist/lib/engines/language/html.engine.d.ts +2 -3
- package/dist/lib/engines/language/html.engine.js +4 -34
- package/dist/lib/engines/language/html.engine.js.map +1 -1
- package/dist/lib/engines/language/markdown.engine.d.ts +4 -2
- package/dist/lib/engines/language/markdown.engine.js +20 -20
- package/dist/lib/engines/language/markdown.engine.js.map +1 -1
- package/dist/lib/engines/language/mjml.engine.d.ts +4 -2
- package/dist/lib/engines/language/mjml.engine.js +18 -20
- package/dist/lib/engines/language/mjml.engine.js.map +1 -1
- package/dist/lib/engines/language/text.engine.d.ts +2 -1
- package/dist/lib/engines/language/text.engine.js +2 -1
- package/dist/lib/engines/language/text.engine.js.map +1 -1
- package/dist/lib/engines/language-engine.d.ts +4 -1
- package/dist/lib/engines/language-engine.js +2 -0
- package/dist/lib/engines/language-engine.js.map +1 -1
- package/dist/lib/engines/load-peer.d.ts +1 -0
- package/dist/lib/engines/load-peer.js +21 -0
- package/dist/lib/engines/load-peer.js.map +1 -0
- package/dist/lib/engines/template/ejs.engine.d.ts +6 -3
- package/dist/lib/engines/template/ejs.engine.js +13 -12
- package/dist/lib/engines/template/ejs.engine.js.map +1 -1
- package/dist/lib/engines/template/handlebars.engine.d.ts +8 -3
- package/dist/lib/engines/template/handlebars.engine.js +26 -13
- package/dist/lib/engines/template/handlebars.engine.js.map +1 -1
- package/dist/lib/engines/template/nunjucks.engine.d.ts +8 -8
- package/dist/lib/engines/template/nunjucks.engine.js +26 -33
- package/dist/lib/engines/template/nunjucks.engine.js.map +1 -1
- package/dist/lib/engines/template/pug.engine.d.ts +7 -5
- package/dist/lib/engines/template/pug.engine.js +11 -20
- package/dist/lib/engines/template/pug.engine.js.map +1 -1
- package/dist/lib/engines/template-engine.d.ts +4 -1
- package/dist/lib/engines/template-engine.js +2 -0
- package/dist/lib/engines/template-engine.js.map +1 -1
- package/dist/lib/entities/template-layout.entity.js +51 -14
- package/dist/lib/entities/template-layout.entity.js.map +1 -1
- package/dist/lib/entities/template.entity.js +58 -15
- package/dist/lib/entities/template.entity.js.map +1 -1
- package/dist/lib/errors/diagnose.d.ts +11 -0
- package/dist/lib/errors/diagnose.js +162 -0
- package/dist/lib/errors/diagnose.js.map +1 -0
- package/dist/lib/errors/template.errors.d.ts +77 -13
- package/dist/lib/errors/template.errors.js +104 -59
- package/dist/lib/errors/template.errors.js.map +1 -1
- package/dist/lib/interfaces/module-config.interface.d.ts +29 -18
- package/dist/lib/nest-dynamic-templates.module.d.ts +1 -4
- package/dist/lib/nest-dynamic-templates.module.js +40 -96
- package/dist/lib/nest-dynamic-templates.module.js.map +1 -1
- package/dist/lib/services/template-config.service.d.ts +12 -15
- package/dist/lib/services/template-config.service.js +30 -45
- package/dist/lib/services/template-config.service.js.map +1 -1
- package/dist/lib/services/template-engine.registry.d.ts +6 -10
- package/dist/lib/services/template-engine.registry.js +42 -50
- package/dist/lib/services/template-engine.registry.js.map +1 -1
- package/dist/lib/services/template-layout.service.d.ts +1 -3
- package/dist/lib/services/template-layout.service.js +80 -152
- package/dist/lib/services/template-layout.service.js.map +1 -1
- package/dist/lib/services/template.service.d.ts +1 -3
- package/dist/lib/services/template.service.js +107 -209
- package/dist/lib/services/template.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +17 -20
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
2
2
|
import { TemplateEngine } from '../engines/template-engine';
|
|
3
3
|
import { LanguageEngine } from '../engines/language-engine';
|
|
4
|
-
type
|
|
4
|
+
import type { ResolvedTemplatesConfig } from '../interfaces/module-config.interface';
|
|
5
5
|
export declare class TemplateEngineRegistryService {
|
|
6
|
-
private
|
|
7
|
-
private
|
|
8
|
-
private
|
|
9
|
-
constructor();
|
|
10
|
-
|
|
11
|
-
registerTemplateEngine(format: TemplateEngineEnum, engine: TemplateEngine): void;
|
|
12
|
-
registerLanguageEngine(format: TemplateLanguageEnum, engine: LanguageEngine): void;
|
|
6
|
+
private readonly config;
|
|
7
|
+
private readonly templateEngines;
|
|
8
|
+
private readonly languageEngines;
|
|
9
|
+
constructor(config: ResolvedTemplatesConfig);
|
|
10
|
+
private registerEnabledEngines;
|
|
13
11
|
getTemplateEngine(format: TemplateEngineEnum): TemplateEngine;
|
|
14
12
|
getLanguageEngine(format: TemplateLanguageEnum): LanguageEngine;
|
|
15
|
-
registerLanguageEngines(engineClasses: ClassType<LanguageEngine>[]): void;
|
|
16
13
|
hasTemplateEngine(format: TemplateEngineEnum): boolean;
|
|
17
14
|
hasLanguageEngine(format: TemplateLanguageEnum): boolean;
|
|
18
15
|
getSupportedTemplateFormats(): TemplateEngineEnum[];
|
|
19
16
|
getSupportedLanguageFormats(): TemplateLanguageEnum[];
|
|
20
17
|
}
|
|
21
|
-
export {};
|
|
@@ -8,6 +8,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.TemplateEngineRegistryService = void 0;
|
|
13
16
|
const common_1 = require("@nestjs/common");
|
|
@@ -18,70 +21,58 @@ const language_1 = require("../engines/language");
|
|
|
18
21
|
const ejs_engine_1 = require("../engines/template/ejs.engine");
|
|
19
22
|
const handlebars_engine_1 = require("../engines/template/handlebars.engine");
|
|
20
23
|
const pug_engine_1 = require("../engines/template/pug.engine");
|
|
21
|
-
const
|
|
24
|
+
const constant_1 = require("../constant");
|
|
25
|
+
const template_errors_1 = require("../errors/template.errors");
|
|
26
|
+
const TEMPLATE_ENGINES = [nunjucks_engine_1.NunjucksEngine, handlebars_engine_1.HandlebarsEngine, ejs_engine_1.EjsEngine, pug_engine_1.PugEngine];
|
|
27
|
+
const LANGUAGE_ENGINES = [mjml_engine_1.MjmlEngine, html_engine_1.HtmlEngine, language_1.TextEngine, language_1.MarkdownEngine];
|
|
22
28
|
let TemplateEngineRegistryService = class TemplateEngineRegistryService {
|
|
29
|
+
config;
|
|
23
30
|
templateEngines = new Map();
|
|
24
31
|
languageEngines = new Map();
|
|
25
|
-
config
|
|
26
|
-
|
|
27
|
-
this.
|
|
28
|
-
this.registerTemplateEngines([
|
|
29
|
-
nunjucks_engine_1.NunjucksEngine,
|
|
30
|
-
handlebars_engine_1.HandlebarsEngine,
|
|
31
|
-
ejs_engine_1.EjsEngine,
|
|
32
|
-
pug_engine_1.PugEngine
|
|
33
|
-
]);
|
|
34
|
-
this.registerLanguageEngines([
|
|
35
|
-
mjml_engine_1.MjmlEngine,
|
|
36
|
-
html_engine_1.HtmlEngine,
|
|
37
|
-
language_1.TextEngine,
|
|
38
|
-
language_1.MarkdownEngine
|
|
39
|
-
]);
|
|
40
|
-
}
|
|
41
|
-
registerTemplateEngines(engineClasses) {
|
|
42
|
-
engineClasses.forEach(EngineClass => {
|
|
43
|
-
const engineName = EngineClass.engineName;
|
|
44
|
-
if (!engineName) {
|
|
45
|
-
throw new Error(`Engine class ${EngineClass.name} must define static engineName property`);
|
|
46
|
-
}
|
|
47
|
-
const options = this.config.enginesOptions?.template?.[engineName];
|
|
48
|
-
const customOptions = {
|
|
49
|
-
filters: this.config.enginesOptions?.filters,
|
|
50
|
-
globalValues: this.config.enginesOptions?.globalValues
|
|
51
|
-
};
|
|
52
|
-
this.registerTemplateEngine(engineName, new EngineClass(options, customOptions));
|
|
53
|
-
});
|
|
32
|
+
constructor(config) {
|
|
33
|
+
this.config = config;
|
|
34
|
+
this.registerEnabledEngines();
|
|
54
35
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
36
|
+
registerEnabledEngines() {
|
|
37
|
+
const custom = {
|
|
38
|
+
filters: this.config.filters,
|
|
39
|
+
globals: this.config.globals,
|
|
40
|
+
};
|
|
41
|
+
for (const Engine of TEMPLATE_ENGINES) {
|
|
42
|
+
if (!this.config.engines.template.includes(Engine.engineName))
|
|
43
|
+
continue;
|
|
44
|
+
const options = this.config.engineOptions.template[Engine.engineName];
|
|
45
|
+
this.templateEngines.set(Engine.engineName, new Engine(options, custom));
|
|
46
|
+
}
|
|
47
|
+
for (const Engine of LANGUAGE_ENGINES) {
|
|
48
|
+
if (!this.config.engines.language.includes(Engine.engineName))
|
|
49
|
+
continue;
|
|
50
|
+
const options = this.config.engineOptions.language[Engine.engineName];
|
|
51
|
+
this.languageEngines.set(Engine.engineName, new Engine(options));
|
|
52
|
+
}
|
|
60
53
|
}
|
|
61
54
|
getTemplateEngine(format) {
|
|
62
55
|
const engine = this.templateEngines.get(format);
|
|
63
56
|
if (!engine) {
|
|
64
|
-
throw new
|
|
57
|
+
throw new template_errors_1.TemplateEngineUnavailableError({
|
|
58
|
+
engine: format,
|
|
59
|
+
kind: 'template',
|
|
60
|
+
reason: 'not-enabled',
|
|
61
|
+
});
|
|
65
62
|
}
|
|
66
63
|
return engine;
|
|
67
64
|
}
|
|
68
65
|
getLanguageEngine(format) {
|
|
69
66
|
const engine = this.languageEngines.get(format);
|
|
70
67
|
if (!engine) {
|
|
71
|
-
throw new
|
|
68
|
+
throw new template_errors_1.TemplateEngineUnavailableError({
|
|
69
|
+
engine: format,
|
|
70
|
+
kind: 'language',
|
|
71
|
+
reason: 'not-enabled',
|
|
72
|
+
});
|
|
72
73
|
}
|
|
73
74
|
return engine;
|
|
74
75
|
}
|
|
75
|
-
registerLanguageEngines(engineClasses) {
|
|
76
|
-
engineClasses.forEach(EngineClass => {
|
|
77
|
-
const engineName = EngineClass.engineName;
|
|
78
|
-
if (!engineName) {
|
|
79
|
-
throw new Error(`Engine class ${EngineClass.name} must define static engineName property`);
|
|
80
|
-
}
|
|
81
|
-
const options = this.config.enginesOptions?.language?.[engineName];
|
|
82
|
-
this.registerLanguageEngine(engineName, new EngineClass(options));
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
76
|
hasTemplateEngine(format) {
|
|
86
77
|
return this.templateEngines.has(format);
|
|
87
78
|
}
|
|
@@ -89,15 +80,16 @@ let TemplateEngineRegistryService = class TemplateEngineRegistryService {
|
|
|
89
80
|
return this.languageEngines.has(format);
|
|
90
81
|
}
|
|
91
82
|
getSupportedTemplateFormats() {
|
|
92
|
-
return
|
|
83
|
+
return [...this.templateEngines.keys()];
|
|
93
84
|
}
|
|
94
85
|
getSupportedLanguageFormats() {
|
|
95
|
-
return
|
|
86
|
+
return [...this.languageEngines.keys()];
|
|
96
87
|
}
|
|
97
88
|
};
|
|
98
89
|
exports.TemplateEngineRegistryService = TemplateEngineRegistryService;
|
|
99
90
|
exports.TemplateEngineRegistryService = TemplateEngineRegistryService = __decorate([
|
|
100
91
|
(0, common_1.Injectable)(),
|
|
101
|
-
|
|
92
|
+
__param(0, (0, common_1.Inject)(constant_1.NEST_DYNAMIC_TEMPLATES_OPTIONS)),
|
|
93
|
+
__metadata("design:paramtypes", [Object])
|
|
102
94
|
], TemplateEngineRegistryService);
|
|
103
95
|
//# sourceMappingURL=template-engine.registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-engine.registry.js","sourceRoot":"","sources":["../../../src/lib/services/template-engine.registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"template-engine.registry.js","sourceRoot":"","sources":["../../../src/lib/services/template-engine.registry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,yEAAqE;AACrE,iEAA6D;AAC7D,iEAA6D;AAC7D,kDAAiE;AACjE,+DAA2D;AAC3D,6EAAyE;AACzE,+DAA2D;AAO3D,0CAA6D;AAC7D,+DAA2E;AAU3E,MAAM,gBAAgB,GAA0B,CAAC,gCAAc,EAAE,oCAAgB,EAAE,sBAAS,EAAE,sBAAS,CAAC,CAAC;AACzG,MAAM,gBAAgB,GAA0B,CAAC,wBAAU,EAAE,wBAAU,EAAE,qBAAU,EAAE,yBAAc,CAAC,CAAC;AAG9F,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAMjB;IALJ,eAAe,GAAG,IAAI,GAAG,EAAsC,CAAC;IAChE,eAAe,GAAG,IAAI,GAAG,EAAwC,CAAC;IAEnF,YAEqB,MAA+B;QAA/B,WAAM,GAAN,MAAM,CAAyB;QAEhD,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAClC,CAAC;IAEO,sBAAsB;QAC1B,MAAM,MAAM,GAAwB;YAChC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SAC/B,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;gBAAE,SAAS;YACxE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACtE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;gBAAE,SAAS;YACxE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACtE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,MAA0B;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,gDAA8B,CAAC;gBACrC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,aAAa;aACxB,CAAC,CAAC;QACP,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,iBAAiB,CAAC,MAA4B;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,gDAA8B,CAAC;gBACrC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,aAAa;aACxB,CAAC,CAAC;QACP,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,iBAAiB,CAAC,MAA0B;QACxC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,iBAAiB,CAAC,MAA4B;QAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,2BAA2B;QACvB,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,2BAA2B;QACvB,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;CACJ,CAAA;AArEY,sEAA6B;wCAA7B,6BAA6B;IADzC,IAAA,mBAAU,GAAE;IAMJ,WAAA,IAAA,eAAM,EAAC,yCAA8B,CAAC,CAAA;;GALlC,6BAA6B,CAqEzC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Repository } from 'typeorm';
|
|
2
2
|
import { NestDynamicTemplateLayout } from '../entities/template-layout.entity';
|
|
3
|
-
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
4
3
|
import { TemplateLayoutFilterDto } from '../dto/template-layout-filter.dto';
|
|
5
4
|
import { TemplateEngineRegistryService } from './template-engine.registry';
|
|
6
5
|
import { RenderTemplateLayoutDto, RenderTemplateLayoutOutput } from '../dto/render-template-layout.dto';
|
|
@@ -12,8 +11,7 @@ export declare class TemplateLayoutService {
|
|
|
12
11
|
constructor(layoutRepository: Repository<NestDynamicTemplateLayout>, engineRegistry: TemplateEngineRegistryService);
|
|
13
12
|
render(renderDto: RenderTemplateLayoutDto): Promise<RenderTemplateLayoutOutput>;
|
|
14
13
|
renderContent(input: RenderContentTemplateLayoutDto): Promise<string>;
|
|
15
|
-
|
|
16
|
-
renderEngine(engine: TemplateEngineEnum, content: string, context: Record<string, any>): Promise<string>;
|
|
14
|
+
private asRenderError;
|
|
17
15
|
getTemplateLayouts(filter?: TemplateLayoutFilterDto): Promise<NestDynamicTemplateLayout[]>;
|
|
18
16
|
getTemplateLayoutById(id: string): Promise<NestDynamicTemplateLayout | null>;
|
|
19
17
|
findTemplateLayout(name: string, scope?: string, scopeId?: string, locale?: string): Promise<NestDynamicTemplateLayout | null>;
|
|
@@ -19,6 +19,7 @@ const typeorm_2 = require("typeorm");
|
|
|
19
19
|
const template_layout_entity_1 = require("../entities/template-layout.entity");
|
|
20
20
|
const template_engine_registry_1 = require("./template-engine.registry");
|
|
21
21
|
const template_errors_1 = require("../errors/template.errors");
|
|
22
|
+
const diagnose_1 = require("../errors/diagnose");
|
|
22
23
|
let TemplateLayoutService = class TemplateLayoutService {
|
|
23
24
|
layoutRepository;
|
|
24
25
|
engineRegistry;
|
|
@@ -27,118 +28,76 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
27
28
|
this.engineRegistry = engineRegistry;
|
|
28
29
|
}
|
|
29
30
|
async render(renderDto) {
|
|
30
|
-
const { name,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
31
|
+
const { name, scopeId, locale, context } = renderDto;
|
|
32
|
+
const scope = renderDto.scope || 'system';
|
|
33
|
+
const layout = await this.findTemplateLayout(name, scope, scopeId, locale);
|
|
34
|
+
if (!layout) {
|
|
35
|
+
throw new template_errors_1.TemplateNotFoundError({ templateName: name, scope, scopeId, locale, kind: 'layout' });
|
|
36
|
+
}
|
|
37
|
+
if (!layout.content) {
|
|
38
|
+
throw new template_errors_1.TemplateInputError(`Layout "${name}" has no content to render.`);
|
|
39
|
+
}
|
|
40
|
+
const ctx = context || {};
|
|
41
|
+
const meta = (stage) => ({
|
|
42
|
+
stage,
|
|
43
|
+
engine: layout.engine,
|
|
44
|
+
language: layout.language,
|
|
45
|
+
templateName: name,
|
|
46
|
+
scope,
|
|
47
|
+
scopeId,
|
|
48
|
+
locale,
|
|
49
|
+
});
|
|
50
|
+
let content = layout.content;
|
|
51
|
+
if (layout.engine) {
|
|
52
|
+
try {
|
|
53
|
+
content = await this.engineRegistry.getTemplateEngine(layout.engine).render(content, ctx);
|
|
47
54
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
content = await this.renderLanguage(templateLayout.language, content, context || {});
|
|
51
|
-
}
|
|
52
|
-
catch (error) {
|
|
53
|
-
throw new template_errors_1.TemplateLanguageError(templateLayout.language, error);
|
|
54
|
-
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
throw this.asRenderError(error, layout.content, ctx, meta('template-engine'));
|
|
55
57
|
}
|
|
56
|
-
return {
|
|
57
|
-
content
|
|
58
|
-
};
|
|
59
58
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
throw error;
|
|
59
|
+
if (layout.language) {
|
|
60
|
+
try {
|
|
61
|
+
content = await this.engineRegistry.getLanguageEngine(layout.language).render(content, ctx);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
throw this.asRenderError(error, content, ctx, meta('language-engine'));
|
|
66
65
|
}
|
|
67
|
-
throw new template_errors_1.TemplateRenderError('template layout rendering', error, name);
|
|
68
66
|
}
|
|
67
|
+
return { content };
|
|
69
68
|
}
|
|
70
69
|
async renderContent(input) {
|
|
71
70
|
const { content, language, engine, context } = input;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
let renderContent = content;
|
|
77
|
-
if (engine) {
|
|
78
|
-
try {
|
|
79
|
-
renderContent = await this.renderEngine(engine, content, context || {});
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
throw new template_errors_1.TemplateEngineError(engine, error);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if (language) {
|
|
86
|
-
try {
|
|
87
|
-
renderContent = await this.renderLanguage(language, renderContent, context || {});
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
throw new template_errors_1.TemplateLanguageError(language, error);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return renderContent;
|
|
71
|
+
const ctx = context || {};
|
|
72
|
+
if (!content) {
|
|
73
|
+
throw new template_errors_1.TemplateInputError('`content` is required for layout rendering.');
|
|
94
74
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
throw error;
|
|
75
|
+
let rendered = content;
|
|
76
|
+
if (engine) {
|
|
77
|
+
try {
|
|
78
|
+
rendered = await this.engineRegistry.getTemplateEngine(engine).render(content, ctx);
|
|
100
79
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
async renderLanguage(language, content, context) {
|
|
105
|
-
try {
|
|
106
|
-
if (!content) {
|
|
107
|
-
throw new common_1.BadRequestException('Content is required for language rendering');
|
|
108
|
-
}
|
|
109
|
-
const languageEngine = this.engineRegistry.getLanguageEngine(language);
|
|
110
|
-
if (!languageEngine) {
|
|
111
|
-
throw new common_1.BadRequestException(`Language engine not found for: ${language}`);
|
|
80
|
+
catch (error) {
|
|
81
|
+
throw this.asRenderError(error, content, ctx, { stage: 'template-engine', engine, language });
|
|
112
82
|
}
|
|
113
|
-
return await languageEngine.render(content, context);
|
|
114
83
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
throw new template_errors_1.TemplateLanguageError(language, error);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
async renderEngine(engine, content, context) {
|
|
123
|
-
try {
|
|
124
|
-
if (!content) {
|
|
125
|
-
throw new common_1.BadRequestException('Content is required for engine rendering');
|
|
84
|
+
if (language) {
|
|
85
|
+
try {
|
|
86
|
+
rendered = await this.engineRegistry.getLanguageEngine(language).render(rendered, ctx);
|
|
126
87
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
throw new common_1.BadRequestException(`Template engine not found for: ${engine}`);
|
|
88
|
+
catch (error) {
|
|
89
|
+
throw this.asRenderError(error, rendered, ctx, { stage: 'language-engine', engine, language });
|
|
130
90
|
}
|
|
131
|
-
return await templateEngine.render(content, context);
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
if (error instanceof common_1.BadRequestException) {
|
|
135
|
-
throw error;
|
|
136
|
-
}
|
|
137
|
-
throw new template_errors_1.TemplateEngineError(engine, error);
|
|
138
91
|
}
|
|
92
|
+
return rendered;
|
|
93
|
+
}
|
|
94
|
+
asRenderError(error, source, context, meta) {
|
|
95
|
+
if ((0, template_errors_1.isTemplateError)(error))
|
|
96
|
+
return error;
|
|
97
|
+
return (0, diagnose_1.diagnoseRenderError)(error, source, context, meta);
|
|
139
98
|
}
|
|
140
99
|
async getTemplateLayouts(filter = {}) {
|
|
141
|
-
const { scope, scopeId, type, locale, excludeNames = []
|
|
100
|
+
const { scope, scopeId, type, locale, excludeNames = [] } = filter;
|
|
142
101
|
const where = {};
|
|
143
102
|
if (type)
|
|
144
103
|
where.type = type;
|
|
@@ -147,40 +106,26 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
147
106
|
if (excludeNames.length > 0)
|
|
148
107
|
where.name = (0, typeorm_2.Not)((0, typeorm_2.In)(excludeNames));
|
|
149
108
|
const systemTemplates = await this.layoutRepository.find({
|
|
150
|
-
where: {
|
|
151
|
-
...where,
|
|
152
|
-
scope: 'system',
|
|
153
|
-
scopeId: (0, typeorm_2.IsNull)(),
|
|
154
|
-
},
|
|
109
|
+
where: { ...where, scope: 'system', scopeId: (0, typeorm_2.IsNull)() },
|
|
155
110
|
});
|
|
156
111
|
if (scope === 'system') {
|
|
157
112
|
return systemTemplates;
|
|
158
113
|
}
|
|
159
114
|
const templates = await this.layoutRepository.find({
|
|
160
|
-
where: {
|
|
161
|
-
|
|
162
|
-
scope: (0, typeorm_2.Equal)(scope),
|
|
163
|
-
scopeId: scopeId,
|
|
164
|
-
},
|
|
165
|
-
order: {
|
|
166
|
-
createdAt: 'DESC',
|
|
167
|
-
},
|
|
115
|
+
where: { ...where, scope: (0, typeorm_2.Equal)(scope), scopeId: scopeId },
|
|
116
|
+
order: { createdAt: 'DESC' },
|
|
168
117
|
});
|
|
169
118
|
const templateMap = new Map();
|
|
170
119
|
for (const template of systemTemplates) {
|
|
171
|
-
|
|
172
|
-
templateMap.set(key, template);
|
|
120
|
+
templateMap.set(`${template.type}/${template.name}/${template.locale}`, template);
|
|
173
121
|
}
|
|
174
122
|
for (const template of templates) {
|
|
175
|
-
|
|
176
|
-
templateMap.set(key, template);
|
|
123
|
+
templateMap.set(`${template.type}/${template.name}/${template.locale}`, template);
|
|
177
124
|
}
|
|
178
125
|
return Array.from(templateMap.values());
|
|
179
126
|
}
|
|
180
127
|
async getTemplateLayoutById(id) {
|
|
181
|
-
return this.layoutRepository.findOne({
|
|
182
|
-
where: { id },
|
|
183
|
-
});
|
|
128
|
+
return this.layoutRepository.findOne({ where: { id } });
|
|
184
129
|
}
|
|
185
130
|
async findTemplateLayout(name, scope, scopeId, locale) {
|
|
186
131
|
const locales = (locale ? [locale, 'en'] : ['en']).filter(Boolean);
|
|
@@ -191,11 +136,11 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
191
136
|
scope,
|
|
192
137
|
scopeId: scope === 'system' ? (0, typeorm_2.IsNull)() : (0, typeorm_2.Equal)(scopeId),
|
|
193
138
|
locale: currentLocale,
|
|
194
|
-
|
|
139
|
+
isActive: true,
|
|
140
|
+
},
|
|
195
141
|
});
|
|
196
|
-
if (template)
|
|
142
|
+
if (template)
|
|
197
143
|
return template;
|
|
198
|
-
}
|
|
199
144
|
}
|
|
200
145
|
if (scope !== 'system') {
|
|
201
146
|
for (const currentLocale of locales) {
|
|
@@ -205,46 +150,36 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
205
150
|
scope: 'system',
|
|
206
151
|
scopeId: (0, typeorm_2.IsNull)(),
|
|
207
152
|
locale: currentLocale,
|
|
208
|
-
|
|
153
|
+
isActive: true,
|
|
154
|
+
},
|
|
209
155
|
});
|
|
210
|
-
if (template)
|
|
156
|
+
if (template)
|
|
211
157
|
return template;
|
|
212
|
-
}
|
|
213
158
|
}
|
|
214
159
|
}
|
|
215
160
|
return null;
|
|
216
161
|
}
|
|
217
162
|
async createTemplateLayout(data) {
|
|
218
163
|
if (data.scope !== 'system') {
|
|
219
|
-
throw new
|
|
164
|
+
throw new template_errors_1.TemplateForbiddenError('Only system layouts can be created directly.');
|
|
220
165
|
}
|
|
221
166
|
const existingTemplate = await this.layoutRepository.findOne({
|
|
222
|
-
where: {
|
|
223
|
-
name: data.name,
|
|
224
|
-
scope: 'system',
|
|
225
|
-
scopeId: (0, typeorm_2.IsNull)(),
|
|
226
|
-
locale: data.locale,
|
|
227
|
-
},
|
|
167
|
+
where: { name: data.name, scope: 'system', scopeId: (0, typeorm_2.IsNull)(), locale: data.locale },
|
|
228
168
|
});
|
|
229
169
|
if (existingTemplate) {
|
|
230
|
-
throw new
|
|
170
|
+
throw new template_errors_1.TemplateConflictError(`A system layout "${data.name}" already exists for locale "${data.locale ?? 'en'}".`);
|
|
231
171
|
}
|
|
232
|
-
const template = this.layoutRepository.create({
|
|
233
|
-
...data,
|
|
234
|
-
scopeId: undefined,
|
|
235
|
-
});
|
|
172
|
+
const template = this.layoutRepository.create({ ...data, scopeId: undefined });
|
|
236
173
|
return this.layoutRepository.save(template);
|
|
237
174
|
}
|
|
238
175
|
async overwriteSystemTemplateLayout(templateId, updates) {
|
|
239
|
-
let template = await this.layoutRepository.findOne({
|
|
240
|
-
where: { id: templateId },
|
|
241
|
-
});
|
|
176
|
+
let template = await this.layoutRepository.findOne({ where: { id: templateId } });
|
|
242
177
|
if (!template) {
|
|
243
|
-
throw new
|
|
178
|
+
throw new template_errors_1.TemplateNotFoundError({ templateName: templateId, kind: 'layout' });
|
|
244
179
|
}
|
|
245
180
|
if (template.scope === 'system') {
|
|
246
181
|
if (!updates.scope) {
|
|
247
|
-
throw new
|
|
182
|
+
throw new template_errors_1.TemplateInputError('`scope` is required when overwriting a system layout.');
|
|
248
183
|
}
|
|
249
184
|
const existingTemplate = await this.layoutRepository.findOne({
|
|
250
185
|
where: {
|
|
@@ -258,7 +193,7 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
258
193
|
template = existingTemplate;
|
|
259
194
|
}
|
|
260
195
|
else {
|
|
261
|
-
|
|
196
|
+
template = this.layoutRepository.create({
|
|
262
197
|
...template,
|
|
263
198
|
id: undefined,
|
|
264
199
|
createdAt: undefined,
|
|
@@ -266,7 +201,6 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
266
201
|
scope: updates.scope,
|
|
267
202
|
scopeId: updates.scopeId,
|
|
268
203
|
});
|
|
269
|
-
template = newTemplate;
|
|
270
204
|
}
|
|
271
205
|
}
|
|
272
206
|
template = this.layoutRepository.merge(template, updates);
|
|
@@ -274,32 +208,26 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
274
208
|
return template;
|
|
275
209
|
}
|
|
276
210
|
async updateTemplateLayout(id, updates, canUpdateSystemTemplate = false) {
|
|
277
|
-
let template = await this.layoutRepository.findOne({
|
|
278
|
-
where: { id },
|
|
279
|
-
});
|
|
211
|
+
let template = await this.layoutRepository.findOne({ where: { id } });
|
|
280
212
|
if (!template) {
|
|
281
|
-
throw new
|
|
213
|
+
throw new template_errors_1.TemplateNotFoundError({ templateName: id, kind: 'layout' });
|
|
282
214
|
}
|
|
283
215
|
if (template.scope === 'system' && !canUpdateSystemTemplate) {
|
|
284
216
|
if (updates.scope) {
|
|
285
217
|
return this.overwriteSystemTemplateLayout(id, updates);
|
|
286
218
|
}
|
|
287
|
-
|
|
288
|
-
throw new common_1.ForbiddenException('Cannot update system templates');
|
|
289
|
-
}
|
|
219
|
+
throw new template_errors_1.TemplateForbiddenError('Cannot update a system layout directly.');
|
|
290
220
|
}
|
|
291
221
|
template = this.layoutRepository.merge(template, updates);
|
|
292
222
|
return this.layoutRepository.save(template);
|
|
293
223
|
}
|
|
294
224
|
async deleteTemplateLayout(id, canDeleteSystemTemplate = false) {
|
|
295
|
-
const template = await this.layoutRepository.findOne({
|
|
296
|
-
where: { id },
|
|
297
|
-
});
|
|
225
|
+
const template = await this.layoutRepository.findOne({ where: { id } });
|
|
298
226
|
if (!template) {
|
|
299
|
-
throw new
|
|
227
|
+
throw new template_errors_1.TemplateNotFoundError({ templateName: id, kind: 'layout' });
|
|
300
228
|
}
|
|
301
229
|
if (template.scope === 'system' && !canDeleteSystemTemplate) {
|
|
302
|
-
throw new
|
|
230
|
+
throw new template_errors_1.TemplateForbiddenError('Cannot delete a system layout.');
|
|
303
231
|
}
|
|
304
232
|
await this.layoutRepository.remove(template);
|
|
305
233
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-layout.service.js","sourceRoot":"","sources":["../../../src/lib/services/template-layout.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"template-layout.service.js","sourceRoot":"","sources":["../../../src/lib/services/template-layout.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Repository } from 'typeorm';
|
|
2
2
|
import { NestDynamicTemplate } from '../entities/template.entity';
|
|
3
|
-
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
4
3
|
import { RenderTemplateDto, RenderTemplateOutputDTO } from '../dto/render-template.dto';
|
|
5
4
|
import { CreateTemplateDto } from '../dto/create-template.dto';
|
|
6
5
|
import { TemplateFilterDto } from '../dto/template-filter.dto';
|
|
@@ -14,8 +13,7 @@ export declare class TemplateService {
|
|
|
14
13
|
constructor(templateRepository: Repository<NestDynamicTemplate>, engineRegistry: TemplateEngineRegistryService, templateLayoutService: TemplateLayoutService);
|
|
15
14
|
render(renderDto: RenderTemplateDto): Promise<RenderTemplateOutputDTO>;
|
|
16
15
|
renderContent(input: RenderContentTemplateDto): Promise<string>;
|
|
17
|
-
|
|
18
|
-
renderEngine(engine: TemplateEngineEnum, content: string, context: Record<string, any>): Promise<string>;
|
|
16
|
+
private asRenderError;
|
|
19
17
|
getTemplates(filter?: TemplateFilterDto): Promise<NestDynamicTemplate[]>;
|
|
20
18
|
getTemplateById(id: string): Promise<NestDynamicTemplate | null>;
|
|
21
19
|
findTemplate(name: string, scope?: string, scopeId?: string, locale?: string): Promise<NestDynamicTemplate | null>;
|