@ackplus/nest-dynamic-templates 1.1.9 → 1.1.11
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/LICENSE +22 -0
- package/README.md +193 -6
- package/{src → dist}/index.d.ts +2 -1
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/{src → dist}/lib/constant.d.ts +0 -1
- package/{src → dist}/lib/constant.js +1 -0
- package/dist/lib/constant.js.map +1 -0
- package/{src → dist}/lib/dto/create-template-layout.dto.d.ts +0 -1
- package/{src → dist}/lib/dto/create-template-layout.dto.js +46 -31
- package/dist/lib/dto/create-template-layout.dto.js.map +1 -0
- package/{src → dist}/lib/dto/create-template.dto.d.ts +0 -1
- package/{src → dist}/lib/dto/create-template.dto.js +52 -35
- package/dist/lib/dto/create-template.dto.js.map +1 -0
- package/{src → dist}/lib/dto/render-content-template-layout.dto.d.ts +0 -1
- package/{src → dist}/lib/dto/render-content-template-layout.dto.js +22 -9
- package/dist/lib/dto/render-content-template-layout.dto.js.map +1 -0
- package/{src → dist}/lib/dto/render-content-template.dto.d.ts +0 -1
- package/{src → dist}/lib/dto/render-content-template.dto.js +25 -11
- package/dist/lib/dto/render-content-template.dto.js.map +1 -0
- package/{src → dist}/lib/dto/render-template-layout.dto.d.ts +0 -1
- package/{src → dist}/lib/dto/render-template-layout.dto.js +28 -16
- package/dist/lib/dto/render-template-layout.dto.js.map +1 -0
- package/{src → dist}/lib/dto/render-template.dto.d.ts +0 -1
- package/{src → dist}/lib/dto/render-template.dto.js +37 -23
- package/dist/lib/dto/render-template.dto.js.map +1 -0
- package/{src → dist}/lib/dto/template-filter.dto.d.ts +0 -1
- package/{src → dist}/lib/dto/template-filter.dto.js +25 -11
- package/dist/lib/dto/template-filter.dto.js.map +1 -0
- package/{src → dist}/lib/dto/template-layout-filter.dto.d.ts +0 -1
- package/{src → dist}/lib/dto/template-layout-filter.dto.js +25 -11
- package/dist/lib/dto/template-layout-filter.dto.js.map +1 -0
- package/{src → dist}/lib/engines/language/html.engine.d.ts +0 -1
- package/dist/lib/engines/language/html.engine.js +47 -0
- package/dist/lib/engines/language/html.engine.js.map +1 -0
- package/{src → dist}/lib/engines/language/index.d.ts +0 -1
- package/{src → dist}/lib/engines/language/index.js +1 -0
- package/dist/lib/engines/language/index.js.map +1 -0
- package/{src → dist}/lib/engines/language/markdown.engine.d.ts +0 -1
- package/dist/lib/engines/language/markdown.engine.js +35 -0
- package/dist/lib/engines/language/markdown.engine.js.map +1 -0
- package/{src → dist}/lib/engines/language/mjml.engine.d.ts +0 -1
- package/dist/lib/engines/language/mjml.engine.js +43 -0
- package/dist/lib/engines/language/mjml.engine.js.map +1 -0
- package/{src → dist}/lib/engines/language/text.engine.d.ts +0 -1
- package/{src → dist}/lib/engines/language/text.engine.js +2 -1
- package/dist/lib/engines/language/text.engine.js.map +1 -0
- package/{src → dist}/lib/engines/language-engine.d.ts +0 -1
- package/{src → dist}/lib/engines/language-engine.js +2 -0
- package/dist/lib/engines/language-engine.js.map +1 -0
- package/{src → dist}/lib/engines/template/ejs.engine.d.ts +0 -1
- package/dist/lib/engines/template/ejs.engine.js +34 -0
- package/dist/lib/engines/template/ejs.engine.js.map +1 -0
- package/{src → dist}/lib/engines/template/handlebars.engine.d.ts +0 -1
- package/dist/lib/engines/template/handlebars.engine.js +35 -0
- package/dist/lib/engines/template/handlebars.engine.js.map +1 -0
- package/{src → dist}/lib/engines/template/index.d.ts +0 -1
- package/{src → dist}/lib/engines/template/index.js +1 -0
- package/dist/lib/engines/template/index.js.map +1 -0
- package/{src → dist}/lib/engines/template/nunjucks.engine.d.ts +1 -2
- package/{src → dist}/lib/engines/template/nunjucks.engine.js +5 -3
- package/dist/lib/engines/template/nunjucks.engine.js.map +1 -0
- package/{src → dist}/lib/engines/template/pug.engine.d.ts +1 -2
- package/dist/lib/engines/template/pug.engine.js +44 -0
- package/dist/lib/engines/template/pug.engine.js.map +1 -0
- package/{src → dist}/lib/engines/template-engine.d.ts +0 -1
- package/{src → dist}/lib/engines/template-engine.js +2 -0
- package/dist/lib/engines/template-engine.js.map +1 -0
- package/{src → dist}/lib/entities/template-layout.entity.d.ts +0 -1
- package/{src → dist}/lib/entities/template-layout.entity.js +59 -34
- package/dist/lib/entities/template-layout.entity.js.map +1 -0
- package/{src → dist}/lib/entities/template.entity.d.ts +0 -1
- package/{src → dist}/lib/entities/template.entity.js +62 -36
- package/dist/lib/entities/template.entity.js.map +1 -0
- package/{src → dist}/lib/errors/template.errors.d.ts +0 -1
- package/{src → dist}/lib/errors/template.errors.js +1 -0
- package/dist/lib/errors/template.errors.js.map +1 -0
- package/{src → dist}/lib/interfaces/module-config.interface.d.ts +0 -7
- package/{src → dist}/lib/interfaces/module-config.interface.js +1 -0
- package/dist/lib/interfaces/module-config.interface.js.map +1 -0
- package/{src → dist}/lib/interfaces/template.types.d.ts +0 -1
- package/{src → dist}/lib/interfaces/template.types.js +1 -0
- package/dist/lib/interfaces/template.types.js.map +1 -0
- package/{src → dist}/lib/nest-dynamic-templates.module.d.ts +0 -1
- package/{src → dist}/lib/nest-dynamic-templates.module.js +15 -6
- package/dist/lib/nest-dynamic-templates.module.js.map +1 -0
- package/{src → dist}/lib/services/template-config.service.d.ts +0 -37
- package/{src → dist}/lib/services/template-config.service.js +15 -44
- package/dist/lib/services/template-config.service.js.map +1 -0
- package/{src → dist}/lib/services/template-engine.registry.d.ts +0 -1
- package/{src → dist}/lib/services/template-engine.registry.js +15 -5
- package/dist/lib/services/template-engine.registry.js.map +1 -0
- package/{src → dist}/lib/services/template-layout.service.d.ts +0 -13
- package/{src → dist}/lib/services/template-layout.service.js +19 -48
- package/dist/lib/services/template-layout.service.js.map +1 -0
- package/{src → dist}/lib/services/template.service.d.ts +0 -13
- package/{src → dist}/lib/services/template.service.js +20 -51
- package/dist/lib/services/template.service.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/examples/post.seeder.example.ts +65 -0
- package/examples/product.factory.example.ts +84 -0
- package/examples/seed.script.example.ts +32 -0
- package/examples/seeder.config.example.ts +50 -0
- package/examples/user.factory.example.ts +59 -0
- package/examples/user.seeder.example.ts +55 -0
- package/package.json +171 -6
- package/src/index.d.ts.map +0 -1
- package/src/index.js +0 -25
- package/src/lib/constant.d.ts.map +0 -1
- package/src/lib/dto/create-template-layout.dto.d.ts.map +0 -1
- package/src/lib/dto/create-template.dto.d.ts.map +0 -1
- package/src/lib/dto/render-content-template-layout.dto.d.ts.map +0 -1
- package/src/lib/dto/render-content-template.dto.d.ts.map +0 -1
- package/src/lib/dto/render-template-layout.dto.d.ts.map +0 -1
- package/src/lib/dto/render-template.dto.d.ts.map +0 -1
- package/src/lib/dto/template-filter.dto.d.ts.map +0 -1
- package/src/lib/dto/template-layout-filter.dto.d.ts.map +0 -1
- package/src/lib/engines/language/html.engine.d.ts.map +0 -1
- package/src/lib/engines/language/html.engine.js +0 -80
- package/src/lib/engines/language/index.d.ts.map +0 -1
- package/src/lib/engines/language/markdown.engine.d.ts.map +0 -1
- package/src/lib/engines/language/markdown.engine.js +0 -39
- package/src/lib/engines/language/mjml.engine.d.ts.map +0 -1
- package/src/lib/engines/language/mjml.engine.js +0 -75
- package/src/lib/engines/language/text.engine.d.ts.map +0 -1
- package/src/lib/engines/language-engine.d.ts.map +0 -1
- package/src/lib/engines/template/ejs.engine.d.ts.map +0 -1
- package/src/lib/engines/template/ejs.engine.js +0 -65
- package/src/lib/engines/template/handlebars.engine.d.ts.map +0 -1
- package/src/lib/engines/template/handlebars.engine.js +0 -66
- package/src/lib/engines/template/index.d.ts.map +0 -1
- package/src/lib/engines/template/nunjucks.engine.d.ts.map +0 -1
- package/src/lib/engines/template/pug.engine.d.ts.map +0 -1
- package/src/lib/engines/template/pug.engine.js +0 -74
- package/src/lib/engines/template-engine.d.ts.map +0 -1
- package/src/lib/entities/template-layout.entity.d.ts.map +0 -1
- package/src/lib/entities/template.entity.d.ts.map +0 -1
- package/src/lib/errors/template.errors.d.ts.map +0 -1
- package/src/lib/interfaces/module-config.interface.d.ts.map +0 -1
- package/src/lib/interfaces/template.types.d.ts.map +0 -1
- package/src/lib/nest-dynamic-templates.module.d.ts.map +0 -1
- package/src/lib/services/template-config.service.d.ts.map +0 -1
- package/src/lib/services/template-engine.registry.d.ts.map +0 -1
- package/src/lib/services/template-layout.service.d.ts.map +0 -1
- package/src/lib/services/template.service.d.ts.map +0 -1
- package/src/test/helpers.d.ts +0 -5
- package/src/test/helpers.d.ts.map +0 -1
- package/src/test/helpers.js +0 -33
- package/src/test/test-database.config.d.ts +0 -5
- package/src/test/test-database.config.d.ts.map +0 -1
- package/src/test/test-database.config.js +0 -23
- package/src/test/test.setup.d.ts +0 -4
- package/src/test/test.setup.d.ts.map +0 -1
- package/src/test/test.setup.js +0 -30
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
15
|
exports.TemplateLayoutService = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
16
|
const common_1 = require("@nestjs/common");
|
|
6
17
|
const typeorm_1 = require("@nestjs/typeorm");
|
|
7
18
|
const typeorm_2 = require("typeorm");
|
|
@@ -9,6 +20,8 @@ const template_layout_entity_1 = require("../entities/template-layout.entity");
|
|
|
9
20
|
const template_engine_registry_1 = require("./template-engine.registry");
|
|
10
21
|
const template_errors_1 = require("../errors/template.errors");
|
|
11
22
|
let TemplateLayoutService = class TemplateLayoutService {
|
|
23
|
+
layoutRepository;
|
|
24
|
+
engineRegistry;
|
|
12
25
|
constructor(layoutRepository, engineRegistry) {
|
|
13
26
|
this.layoutRepository = layoutRepository;
|
|
14
27
|
this.engineRegistry = engineRegistry;
|
|
@@ -16,17 +29,14 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
16
29
|
async render(renderDto) {
|
|
17
30
|
const { name, scope, scopeId, locale, context } = renderDto;
|
|
18
31
|
try {
|
|
19
|
-
// Find template with fallback
|
|
20
32
|
const templateLayout = await this.findTemplateLayout(name, scope, scopeId, locale);
|
|
21
33
|
if (!templateLayout) {
|
|
22
34
|
throw new common_1.NotFoundException(`Template layout not found: ${name} in scope ${scope || 'system'}`);
|
|
23
35
|
}
|
|
24
|
-
// Validate content exists
|
|
25
36
|
if (!templateLayout.content) {
|
|
26
37
|
throw new common_1.BadRequestException(`Template layout '${name}' has no content to render`);
|
|
27
38
|
}
|
|
28
39
|
let content = templateLayout.content;
|
|
29
|
-
// Render content by template engine
|
|
30
40
|
if (templateLayout.engine) {
|
|
31
41
|
try {
|
|
32
42
|
content = await this.renderEngine(templateLayout.engine, content, context || {});
|
|
@@ -35,7 +45,6 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
35
45
|
throw new template_errors_1.TemplateEngineError(templateLayout.engine, error);
|
|
36
46
|
}
|
|
37
47
|
}
|
|
38
|
-
// If template has language format, process with language engine
|
|
39
48
|
if (templateLayout.language) {
|
|
40
49
|
try {
|
|
41
50
|
content = await this.renderLanguage(templateLayout.language, content, context || {});
|
|
@@ -49,14 +58,12 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
49
58
|
};
|
|
50
59
|
}
|
|
51
60
|
catch (error) {
|
|
52
|
-
// Re-throw known template errors
|
|
53
61
|
if (error instanceof template_errors_1.TemplateEngineError ||
|
|
54
62
|
error instanceof template_errors_1.TemplateLanguageError ||
|
|
55
63
|
error instanceof common_1.NotFoundException ||
|
|
56
64
|
error instanceof common_1.BadRequestException) {
|
|
57
65
|
throw error;
|
|
58
66
|
}
|
|
59
|
-
// Wrap unknown errors
|
|
60
67
|
throw new template_errors_1.TemplateRenderError('template layout rendering', error, name);
|
|
61
68
|
}
|
|
62
69
|
}
|
|
@@ -67,7 +74,6 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
67
74
|
throw new common_1.BadRequestException('Content is required for template layout rendering');
|
|
68
75
|
}
|
|
69
76
|
let renderContent = content;
|
|
70
|
-
// Render content by template engine
|
|
71
77
|
if (engine) {
|
|
72
78
|
try {
|
|
73
79
|
renderContent = await this.renderEngine(engine, content, context || {});
|
|
@@ -76,7 +82,6 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
76
82
|
throw new template_errors_1.TemplateEngineError(engine, error);
|
|
77
83
|
}
|
|
78
84
|
}
|
|
79
|
-
// Render content by language engine
|
|
80
85
|
if (language) {
|
|
81
86
|
try {
|
|
82
87
|
renderContent = await this.renderLanguage(language, renderContent, context || {});
|
|
@@ -88,13 +93,11 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
88
93
|
return renderContent;
|
|
89
94
|
}
|
|
90
95
|
catch (error) {
|
|
91
|
-
// Re-throw known template errors
|
|
92
96
|
if (error instanceof template_errors_1.TemplateEngineError ||
|
|
93
97
|
error instanceof template_errors_1.TemplateLanguageError ||
|
|
94
98
|
error instanceof common_1.BadRequestException) {
|
|
95
99
|
throw error;
|
|
96
100
|
}
|
|
97
|
-
// Wrap unknown errors
|
|
98
101
|
throw new template_errors_1.TemplateRenderError('template layout content rendering', error);
|
|
99
102
|
}
|
|
100
103
|
}
|
|
@@ -134,12 +137,8 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
134
137
|
throw new template_errors_1.TemplateEngineError(engine, error);
|
|
135
138
|
}
|
|
136
139
|
}
|
|
137
|
-
/**
|
|
138
|
-
* Get all templates, with scoped templates taking precedence over system templates
|
|
139
|
-
*/
|
|
140
140
|
async getTemplateLayouts(filter = {}) {
|
|
141
141
|
const { scope, scopeId, type, locale, excludeNames = [], } = filter;
|
|
142
|
-
// Build the where clause
|
|
143
142
|
const where = {};
|
|
144
143
|
if (type)
|
|
145
144
|
where.type = type;
|
|
@@ -157,7 +156,6 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
157
156
|
if (scope === 'system') {
|
|
158
157
|
return systemTemplates;
|
|
159
158
|
}
|
|
160
|
-
// First get all templates matching the filters
|
|
161
159
|
const templates = await this.layoutRepository.find({
|
|
162
160
|
where: {
|
|
163
161
|
...where,
|
|
@@ -168,7 +166,6 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
168
166
|
createdAt: 'DESC',
|
|
169
167
|
},
|
|
170
168
|
});
|
|
171
|
-
// Create a map to store unique templates by name+type
|
|
172
169
|
const templateMap = new Map();
|
|
173
170
|
for (const template of systemTemplates) {
|
|
174
171
|
const key = `${template.type}/${template.name}/${template.locale}`;
|
|
@@ -178,7 +175,6 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
178
175
|
const key = `${template.type}/${template.name}/${template.locale}`;
|
|
179
176
|
templateMap.set(key, template);
|
|
180
177
|
}
|
|
181
|
-
// Convert map values back to array
|
|
182
178
|
return Array.from(templateMap.values());
|
|
183
179
|
}
|
|
184
180
|
async getTemplateLayoutById(id) {
|
|
@@ -187,13 +183,7 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
187
183
|
});
|
|
188
184
|
}
|
|
189
185
|
async findTemplateLayout(name, scope, scopeId, locale) {
|
|
190
|
-
// Try to find template in the following order:
|
|
191
|
-
// 1. Scoped template with locale
|
|
192
|
-
// 2. Scoped template without locale
|
|
193
|
-
// 3. System template with locale
|
|
194
|
-
// 4. System template without locale
|
|
195
186
|
const locales = (locale ? [locale, 'en'] : ['en']).filter(Boolean);
|
|
196
|
-
// First try to find in the specified scope
|
|
197
187
|
for (const currentLocale of locales) {
|
|
198
188
|
const template = await this.layoutRepository.findOne({
|
|
199
189
|
where: {
|
|
@@ -207,7 +197,6 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
207
197
|
return template;
|
|
208
198
|
}
|
|
209
199
|
}
|
|
210
|
-
// If not found and not already in system scope, try system scope
|
|
211
200
|
if (scope !== 'system') {
|
|
212
201
|
for (const currentLocale of locales) {
|
|
213
202
|
const template = await this.layoutRepository.findOne({
|
|
@@ -225,15 +214,10 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
225
214
|
}
|
|
226
215
|
return null;
|
|
227
216
|
}
|
|
228
|
-
/**
|
|
229
|
-
* Create a system template. Only system templates can be created directly.
|
|
230
|
-
*/
|
|
231
217
|
async createTemplateLayout(data) {
|
|
232
|
-
// Ensure this is a system template
|
|
233
218
|
if (data.scope !== 'system') {
|
|
234
219
|
throw new common_1.ForbiddenException('Only system templates can be created directly');
|
|
235
220
|
}
|
|
236
|
-
// Check if template already exists
|
|
237
221
|
const existingTemplate = await this.layoutRepository.findOne({
|
|
238
222
|
where: {
|
|
239
223
|
name: data.name,
|
|
@@ -247,7 +231,7 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
247
231
|
}
|
|
248
232
|
const template = this.layoutRepository.create({
|
|
249
233
|
...data,
|
|
250
|
-
scopeId: undefined,
|
|
234
|
+
scopeId: undefined,
|
|
251
235
|
});
|
|
252
236
|
return this.layoutRepository.save(template);
|
|
253
237
|
}
|
|
@@ -262,7 +246,6 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
262
246
|
if (!updates.scope) {
|
|
263
247
|
throw new common_1.BadRequestException('Scope is required when overwriting system template');
|
|
264
248
|
}
|
|
265
|
-
// Check if template already exists in target scope
|
|
266
249
|
const existingTemplate = await this.layoutRepository.findOne({
|
|
267
250
|
where: {
|
|
268
251
|
name: template.name,
|
|
@@ -272,11 +255,9 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
272
255
|
},
|
|
273
256
|
});
|
|
274
257
|
if (existingTemplate) {
|
|
275
|
-
// Update existing template in target scope
|
|
276
258
|
template = existingTemplate;
|
|
277
259
|
}
|
|
278
260
|
else {
|
|
279
|
-
// Create new template in target scope
|
|
280
261
|
const newTemplate = this.layoutRepository.create({
|
|
281
262
|
...template,
|
|
282
263
|
id: undefined,
|
|
@@ -292,34 +273,24 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
292
273
|
await this.layoutRepository.save(template);
|
|
293
274
|
return template;
|
|
294
275
|
}
|
|
295
|
-
/**
|
|
296
|
-
* Update a template
|
|
297
|
-
*/
|
|
298
276
|
async updateTemplateLayout(id, updates, canUpdateSystemTemplate = false) {
|
|
299
|
-
// Find the template
|
|
300
277
|
let template = await this.layoutRepository.findOne({
|
|
301
278
|
where: { id },
|
|
302
279
|
});
|
|
303
280
|
if (!template) {
|
|
304
281
|
throw new common_1.NotFoundException(`Template not found: ${id}`);
|
|
305
282
|
}
|
|
306
|
-
// If it's a system template and we can't update it, try to overwrite it
|
|
307
283
|
if (template.scope === 'system' && !canUpdateSystemTemplate) {
|
|
308
284
|
if (updates.scope) {
|
|
309
|
-
// Otherwise, allow overwriting to custom scope
|
|
310
285
|
return this.overwriteSystemTemplateLayout(id, updates);
|
|
311
286
|
}
|
|
312
287
|
else {
|
|
313
288
|
throw new common_1.ForbiddenException('Cannot update system templates');
|
|
314
289
|
}
|
|
315
290
|
}
|
|
316
|
-
// For regular updates
|
|
317
291
|
template = this.layoutRepository.merge(template, updates);
|
|
318
292
|
return this.layoutRepository.save(template);
|
|
319
293
|
}
|
|
320
|
-
/**
|
|
321
|
-
* Delete a scoped template
|
|
322
|
-
*/
|
|
323
294
|
async deleteTemplateLayout(id, canDeleteSystemTemplate = false) {
|
|
324
295
|
const template = await this.layoutRepository.findOne({
|
|
325
296
|
where: { id },
|
|
@@ -327,7 +298,6 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
327
298
|
if (!template) {
|
|
328
299
|
throw new Error(`Template not found: ${id}`);
|
|
329
300
|
}
|
|
330
|
-
// Prevent deleting system templates
|
|
331
301
|
if (template.scope === 'system' && !canDeleteSystemTemplate) {
|
|
332
302
|
throw new common_1.ForbiddenException('Cannot delete system templates');
|
|
333
303
|
}
|
|
@@ -335,9 +305,10 @@ let TemplateLayoutService = class TemplateLayoutService {
|
|
|
335
305
|
}
|
|
336
306
|
};
|
|
337
307
|
exports.TemplateLayoutService = TemplateLayoutService;
|
|
338
|
-
exports.TemplateLayoutService = TemplateLayoutService =
|
|
308
|
+
exports.TemplateLayoutService = TemplateLayoutService = __decorate([
|
|
339
309
|
(0, common_1.Injectable)(),
|
|
340
|
-
|
|
341
|
-
|
|
310
|
+
__param(0, (0, typeorm_1.InjectRepository)(template_layout_entity_1.NestDynamicTemplateLayout)),
|
|
311
|
+
__metadata("design:paramtypes", [typeorm_2.Repository,
|
|
342
312
|
template_engine_registry_1.TemplateEngineRegistryService])
|
|
343
313
|
], TemplateLayoutService);
|
|
314
|
+
//# sourceMappingURL=template-layout.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-layout.service.js","sourceRoot":"","sources":["../../../src/lib/services/template-layout.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,24 +16,11 @@ export declare class TemplateService {
|
|
|
16
16
|
renderContent(input: RenderContentTemplateDto): Promise<string>;
|
|
17
17
|
renderLanguage(language: TemplateLanguageEnum, content: string, context: Record<string, any>): Promise<string>;
|
|
18
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
19
|
getTemplates(filter?: TemplateFilterDto): Promise<NestDynamicTemplate[]>;
|
|
23
20
|
getTemplateById(id: string): Promise<NestDynamicTemplate | null>;
|
|
24
21
|
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
22
|
createTemplate(data: CreateTemplateDto): Promise<NestDynamicTemplate>;
|
|
29
23
|
overwriteSystemTemplate(templateId: string, updates: Partial<CreateTemplateDto>): Promise<NestDynamicTemplate>;
|
|
30
|
-
/**
|
|
31
|
-
* Update a template
|
|
32
|
-
*/
|
|
33
24
|
updateTemplate(id: string, updates: Partial<CreateTemplateDto>, canUpdateSystemTemplate?: boolean): Promise<NestDynamicTemplate>;
|
|
34
|
-
/**
|
|
35
|
-
* Delete a scoped template
|
|
36
|
-
*/
|
|
37
25
|
deleteTemplate(id: string, canDeleteSystemTemplate?: boolean): Promise<void>;
|
|
38
26
|
}
|
|
39
|
-
//# sourceMappingURL=template.service.d.ts.map
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
15
|
exports.TemplateService = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
16
|
const common_1 = require("@nestjs/common");
|
|
6
17
|
const typeorm_1 = require("@nestjs/typeorm");
|
|
7
18
|
const typeorm_2 = require("typeorm");
|
|
@@ -12,6 +23,9 @@ const template_engine_registry_1 = require("./template-engine.registry");
|
|
|
12
23
|
const lodash_1 = require("lodash");
|
|
13
24
|
const template_errors_1 = require("../errors/template.errors");
|
|
14
25
|
let TemplateService = class TemplateService {
|
|
26
|
+
templateRepository;
|
|
27
|
+
engineRegistry;
|
|
28
|
+
templateLayoutService;
|
|
15
29
|
constructor(templateRepository, engineRegistry, templateLayoutService) {
|
|
16
30
|
this.templateRepository = templateRepository;
|
|
17
31
|
this.engineRegistry = engineRegistry;
|
|
@@ -20,7 +34,6 @@ let TemplateService = class TemplateService {
|
|
|
20
34
|
async render(renderDto) {
|
|
21
35
|
const { name, scope, scopeId, locale, context } = renderDto;
|
|
22
36
|
try {
|
|
23
|
-
// Find template with fallback
|
|
24
37
|
if (!name) {
|
|
25
38
|
throw new common_1.BadRequestException('Template name is required');
|
|
26
39
|
}
|
|
@@ -30,7 +43,6 @@ let TemplateService = class TemplateService {
|
|
|
30
43
|
}
|
|
31
44
|
let content = template.content;
|
|
32
45
|
let subject = template.subject;
|
|
33
|
-
// Render subject by template engine
|
|
34
46
|
if (template.subject && template.engine) {
|
|
35
47
|
try {
|
|
36
48
|
const subjectEngine = this.engineRegistry.getTemplateEngine(template.engine);
|
|
@@ -40,7 +52,6 @@ let TemplateService = class TemplateService {
|
|
|
40
52
|
throw new template_errors_1.TemplateEngineError(template.engine, error);
|
|
41
53
|
}
|
|
42
54
|
}
|
|
43
|
-
// Render content by template engine
|
|
44
55
|
if (template.engine) {
|
|
45
56
|
try {
|
|
46
57
|
content = await this.renderEngine(template.engine, content, context || {});
|
|
@@ -49,7 +60,6 @@ let TemplateService = class TemplateService {
|
|
|
49
60
|
throw new template_errors_1.TemplateEngineError(template.engine, error);
|
|
50
61
|
}
|
|
51
62
|
}
|
|
52
|
-
// If template has layout, apply it
|
|
53
63
|
let layout;
|
|
54
64
|
if (template.templateLayoutName) {
|
|
55
65
|
try {
|
|
@@ -69,7 +79,6 @@ let TemplateService = class TemplateService {
|
|
|
69
79
|
throw new template_errors_1.TemplateLayoutError(template.templateLayoutName, error);
|
|
70
80
|
}
|
|
71
81
|
}
|
|
72
|
-
// If template has language format, process with language engine
|
|
73
82
|
if (!layout && template.language) {
|
|
74
83
|
try {
|
|
75
84
|
content = await this.renderLanguage(template.language, content, context || {});
|
|
@@ -84,14 +93,12 @@ let TemplateService = class TemplateService {
|
|
|
84
93
|
};
|
|
85
94
|
}
|
|
86
95
|
catch (error) {
|
|
87
|
-
// Re-throw known template errors
|
|
88
96
|
if (error instanceof template_errors_1.TemplateEngineError ||
|
|
89
97
|
error instanceof template_errors_1.TemplateLanguageError ||
|
|
90
98
|
error instanceof template_errors_1.TemplateLayoutError ||
|
|
91
99
|
error instanceof common_1.NotFoundException) {
|
|
92
100
|
throw error;
|
|
93
101
|
}
|
|
94
|
-
// Wrap unknown errors
|
|
95
102
|
throw new template_errors_1.TemplateRenderError('template rendering', error, name);
|
|
96
103
|
}
|
|
97
104
|
}
|
|
@@ -102,14 +109,12 @@ let TemplateService = class TemplateService {
|
|
|
102
109
|
throw new common_1.BadRequestException('Content is required for rendering');
|
|
103
110
|
}
|
|
104
111
|
let renderContent = content;
|
|
105
|
-
// Step 1: Render template variables first
|
|
106
112
|
try {
|
|
107
113
|
renderContent = await this.renderEngine(engine || template_types_1.TemplateEngineEnum.NUNJUCKS, renderContent, context || {});
|
|
108
114
|
}
|
|
109
115
|
catch (error) {
|
|
110
116
|
throw new template_errors_1.TemplateEngineError(engine || template_types_1.TemplateEngineEnum.NUNJUCKS, error);
|
|
111
117
|
}
|
|
112
|
-
// Step 2: Handle MJML with layouts intelligently
|
|
113
118
|
let templateLayout = null;
|
|
114
119
|
if (templateLayoutId) {
|
|
115
120
|
try {
|
|
@@ -126,7 +131,6 @@ let TemplateService = class TemplateService {
|
|
|
126
131
|
}
|
|
127
132
|
if (templateLayout) {
|
|
128
133
|
try {
|
|
129
|
-
// Step 3: Render the layout content
|
|
130
134
|
renderContent = await this.templateLayoutService.renderContent({
|
|
131
135
|
content: templateLayout.content,
|
|
132
136
|
language: language,
|
|
@@ -142,7 +146,6 @@ let TemplateService = class TemplateService {
|
|
|
142
146
|
}
|
|
143
147
|
}
|
|
144
148
|
}
|
|
145
|
-
// Step 4: Render the content with the language engine
|
|
146
149
|
if ((!templateLayoutId || !templateLayout) && language) {
|
|
147
150
|
try {
|
|
148
151
|
renderContent = await this.renderLanguage(language, renderContent, context || {});
|
|
@@ -154,7 +157,6 @@ let TemplateService = class TemplateService {
|
|
|
154
157
|
return renderContent;
|
|
155
158
|
}
|
|
156
159
|
catch (error) {
|
|
157
|
-
// Re-throw known template errors
|
|
158
160
|
if (error instanceof template_errors_1.TemplateEngineError ||
|
|
159
161
|
error instanceof template_errors_1.TemplateLanguageError ||
|
|
160
162
|
error instanceof template_errors_1.TemplateLayoutError ||
|
|
@@ -163,7 +165,6 @@ let TemplateService = class TemplateService {
|
|
|
163
165
|
error instanceof common_1.BadRequestException) {
|
|
164
166
|
throw error;
|
|
165
167
|
}
|
|
166
|
-
// Wrap unknown errors
|
|
167
168
|
throw new template_errors_1.TemplateRenderError('content rendering', error);
|
|
168
169
|
}
|
|
169
170
|
}
|
|
@@ -203,12 +204,8 @@ let TemplateService = class TemplateService {
|
|
|
203
204
|
throw new template_errors_1.TemplateEngineError(engine, error);
|
|
204
205
|
}
|
|
205
206
|
}
|
|
206
|
-
/**
|
|
207
|
-
* Get all templates, with scoped templates taking precedence over system templates
|
|
208
|
-
*/
|
|
209
207
|
async getTemplates(filter = {}) {
|
|
210
208
|
const { scope, scopeId, type, locale, excludeNames = [], } = filter;
|
|
211
|
-
// Build the where clause
|
|
212
209
|
const where = {};
|
|
213
210
|
if (type)
|
|
214
211
|
where.type = type;
|
|
@@ -226,7 +223,6 @@ let TemplateService = class TemplateService {
|
|
|
226
223
|
if (scope === 'system') {
|
|
227
224
|
return systemTemplates;
|
|
228
225
|
}
|
|
229
|
-
// First get all templates matching the filters
|
|
230
226
|
const templates = await this.templateRepository.find({
|
|
231
227
|
where: {
|
|
232
228
|
...where,
|
|
@@ -237,7 +233,6 @@ let TemplateService = class TemplateService {
|
|
|
237
233
|
createdAt: 'DESC',
|
|
238
234
|
},
|
|
239
235
|
});
|
|
240
|
-
// Create a map to store unique templates by name+type
|
|
241
236
|
const templateMap = new Map();
|
|
242
237
|
for (const template of systemTemplates) {
|
|
243
238
|
const key = `${template.type}/${template.name}/${template.locale}`;
|
|
@@ -247,7 +242,6 @@ let TemplateService = class TemplateService {
|
|
|
247
242
|
const key = `${template.type}/${template.name}/${template.locale}`;
|
|
248
243
|
templateMap.set(key, template);
|
|
249
244
|
}
|
|
250
|
-
// Convert map values back to array
|
|
251
245
|
return Array.from(templateMap.values());
|
|
252
246
|
}
|
|
253
247
|
async getTemplateById(id) {
|
|
@@ -256,13 +250,7 @@ let TemplateService = class TemplateService {
|
|
|
256
250
|
});
|
|
257
251
|
}
|
|
258
252
|
async findTemplate(name, scope, scopeId, locale) {
|
|
259
|
-
// Try to find template in the following order:
|
|
260
|
-
// 1. Scoped template with locale
|
|
261
|
-
// 2. Scoped template without locale
|
|
262
|
-
// 3. System template with locale
|
|
263
|
-
// 4. System template without locale
|
|
264
253
|
const locales = (locale ? [locale, 'en'] : ['en']).filter(Boolean);
|
|
265
|
-
// First try to find in the specified scope
|
|
266
254
|
for (const currentLocale of locales) {
|
|
267
255
|
const template = await this.templateRepository.findOne({
|
|
268
256
|
where: {
|
|
@@ -276,7 +264,6 @@ let TemplateService = class TemplateService {
|
|
|
276
264
|
return template;
|
|
277
265
|
}
|
|
278
266
|
}
|
|
279
|
-
// If not found and not already in system scope, try system scope
|
|
280
267
|
if (scope !== 'system') {
|
|
281
268
|
for (const currentLocale of locales) {
|
|
282
269
|
const template = await this.templateRepository.findOne({
|
|
@@ -294,15 +281,10 @@ let TemplateService = class TemplateService {
|
|
|
294
281
|
}
|
|
295
282
|
return null;
|
|
296
283
|
}
|
|
297
|
-
/**
|
|
298
|
-
* Create a system template. Only system templates can be created directly.
|
|
299
|
-
*/
|
|
300
284
|
async createTemplate(data) {
|
|
301
|
-
// Ensure this is a system template
|
|
302
285
|
if (data.scope !== 'system') {
|
|
303
286
|
throw new common_1.ForbiddenException('Only system templates can be created directly');
|
|
304
287
|
}
|
|
305
|
-
// Check if template already exists
|
|
306
288
|
const existingTemplate = await this.templateRepository.findOne({
|
|
307
289
|
where: {
|
|
308
290
|
name: data.name,
|
|
@@ -316,7 +298,7 @@ let TemplateService = class TemplateService {
|
|
|
316
298
|
}
|
|
317
299
|
const template = this.templateRepository.create({
|
|
318
300
|
...data,
|
|
319
|
-
scopeId: undefined,
|
|
301
|
+
scopeId: undefined,
|
|
320
302
|
});
|
|
321
303
|
return this.templateRepository.save(template);
|
|
322
304
|
}
|
|
@@ -331,7 +313,6 @@ let TemplateService = class TemplateService {
|
|
|
331
313
|
if (!updates.scope) {
|
|
332
314
|
throw new common_1.BadRequestException('Scope is required when overwriting system template');
|
|
333
315
|
}
|
|
334
|
-
// Check if template already exists in target scope
|
|
335
316
|
const existingTemplate = await this.templateRepository.findOne({
|
|
336
317
|
where: {
|
|
337
318
|
name: template.name,
|
|
@@ -341,11 +322,9 @@ let TemplateService = class TemplateService {
|
|
|
341
322
|
},
|
|
342
323
|
});
|
|
343
324
|
if (existingTemplate) {
|
|
344
|
-
// Update existing template in target scope
|
|
345
325
|
template = existingTemplate;
|
|
346
326
|
}
|
|
347
327
|
else {
|
|
348
|
-
// Create new template in target scope
|
|
349
328
|
const newTemplate = this.templateRepository.create({
|
|
350
329
|
...template,
|
|
351
330
|
id: undefined,
|
|
@@ -362,34 +341,24 @@ let TemplateService = class TemplateService {
|
|
|
362
341
|
await this.templateRepository.save(template);
|
|
363
342
|
return template;
|
|
364
343
|
}
|
|
365
|
-
/**
|
|
366
|
-
* Update a template
|
|
367
|
-
*/
|
|
368
344
|
async updateTemplate(id, updates, canUpdateSystemTemplate = false) {
|
|
369
|
-
// Find the template
|
|
370
345
|
let template = await this.templateRepository.findOne({
|
|
371
346
|
where: { id },
|
|
372
347
|
});
|
|
373
348
|
if (!template) {
|
|
374
349
|
throw new common_1.NotFoundException(`Template not found: ${id}`);
|
|
375
350
|
}
|
|
376
|
-
// If it's a system template and we can't update it, try to overwrite it
|
|
377
351
|
if (template.scope === 'system' && !canUpdateSystemTemplate) {
|
|
378
352
|
if (updates.scope) {
|
|
379
|
-
// Otherwise, allow overwriting to custom scope
|
|
380
353
|
return this.overwriteSystemTemplate(id, updates);
|
|
381
354
|
}
|
|
382
355
|
else {
|
|
383
356
|
throw new common_1.ForbiddenException('Cannot update system templates');
|
|
384
357
|
}
|
|
385
358
|
}
|
|
386
|
-
// For regular updates
|
|
387
359
|
template = this.templateRepository.merge(template, updates);
|
|
388
360
|
return this.templateRepository.save(template);
|
|
389
361
|
}
|
|
390
|
-
/**
|
|
391
|
-
* Delete a scoped template
|
|
392
|
-
*/
|
|
393
362
|
async deleteTemplate(id, canDeleteSystemTemplate = false) {
|
|
394
363
|
const template = await this.templateRepository.findOne({
|
|
395
364
|
where: { id },
|
|
@@ -397,7 +366,6 @@ let TemplateService = class TemplateService {
|
|
|
397
366
|
if (!template) {
|
|
398
367
|
throw new Error(`Template not found: ${id}`);
|
|
399
368
|
}
|
|
400
|
-
// Prevent deleting system templates
|
|
401
369
|
if (template.scope === 'system' && !canDeleteSystemTemplate) {
|
|
402
370
|
throw new common_1.ForbiddenException('Cannot delete system templates');
|
|
403
371
|
}
|
|
@@ -405,10 +373,11 @@ let TemplateService = class TemplateService {
|
|
|
405
373
|
}
|
|
406
374
|
};
|
|
407
375
|
exports.TemplateService = TemplateService;
|
|
408
|
-
exports.TemplateService = TemplateService =
|
|
376
|
+
exports.TemplateService = TemplateService = __decorate([
|
|
409
377
|
(0, common_1.Injectable)(),
|
|
410
|
-
|
|
411
|
-
|
|
378
|
+
__param(0, (0, typeorm_1.InjectRepository)(template_entity_1.NestDynamicTemplate)),
|
|
379
|
+
__metadata("design:paramtypes", [typeorm_2.Repository,
|
|
412
380
|
template_engine_registry_1.TemplateEngineRegistryService,
|
|
413
381
|
template_layout_service_1.TemplateLayoutService])
|
|
414
382
|
], TemplateService);
|
|
383
|
+
//# sourceMappingURL=template.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.service.js","sourceRoot":"","sources":["../../../src/lib/services/template.service.ts"],"names":[],"mappings":"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"}
|