@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.
Files changed (80) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/MIGRATION.md +97 -0
  3. package/README.md +201 -116
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.js +2 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/lib/config/resolve-config.d.ts +7 -0
  8. package/dist/lib/config/resolve-config.js +50 -0
  9. package/dist/lib/config/resolve-config.js.map +1 -0
  10. package/dist/lib/constant.d.ts +1 -0
  11. package/dist/lib/constant.js +2 -1
  12. package/dist/lib/constant.js.map +1 -1
  13. package/dist/lib/dto/create-template-layout.dto.js +49 -12
  14. package/dist/lib/dto/create-template-layout.dto.js.map +1 -1
  15. package/dist/lib/dto/create-template.dto.js +59 -14
  16. package/dist/lib/dto/create-template.dto.js.map +1 -1
  17. package/dist/lib/dto/render-template.dto.d.ts +3 -6
  18. package/dist/lib/dto/render-template.dto.js +17 -38
  19. package/dist/lib/dto/render-template.dto.js.map +1 -1
  20. package/dist/lib/engines/language/html.engine.d.ts +2 -3
  21. package/dist/lib/engines/language/html.engine.js +4 -34
  22. package/dist/lib/engines/language/html.engine.js.map +1 -1
  23. package/dist/lib/engines/language/markdown.engine.d.ts +4 -2
  24. package/dist/lib/engines/language/markdown.engine.js +20 -20
  25. package/dist/lib/engines/language/markdown.engine.js.map +1 -1
  26. package/dist/lib/engines/language/mjml.engine.d.ts +4 -2
  27. package/dist/lib/engines/language/mjml.engine.js +18 -20
  28. package/dist/lib/engines/language/mjml.engine.js.map +1 -1
  29. package/dist/lib/engines/language/text.engine.d.ts +2 -1
  30. package/dist/lib/engines/language/text.engine.js +2 -1
  31. package/dist/lib/engines/language/text.engine.js.map +1 -1
  32. package/dist/lib/engines/language-engine.d.ts +4 -1
  33. package/dist/lib/engines/language-engine.js +2 -0
  34. package/dist/lib/engines/language-engine.js.map +1 -1
  35. package/dist/lib/engines/load-peer.d.ts +1 -0
  36. package/dist/lib/engines/load-peer.js +21 -0
  37. package/dist/lib/engines/load-peer.js.map +1 -0
  38. package/dist/lib/engines/template/ejs.engine.d.ts +6 -3
  39. package/dist/lib/engines/template/ejs.engine.js +13 -12
  40. package/dist/lib/engines/template/ejs.engine.js.map +1 -1
  41. package/dist/lib/engines/template/handlebars.engine.d.ts +8 -3
  42. package/dist/lib/engines/template/handlebars.engine.js +26 -13
  43. package/dist/lib/engines/template/handlebars.engine.js.map +1 -1
  44. package/dist/lib/engines/template/nunjucks.engine.d.ts +8 -8
  45. package/dist/lib/engines/template/nunjucks.engine.js +26 -33
  46. package/dist/lib/engines/template/nunjucks.engine.js.map +1 -1
  47. package/dist/lib/engines/template/pug.engine.d.ts +7 -5
  48. package/dist/lib/engines/template/pug.engine.js +11 -20
  49. package/dist/lib/engines/template/pug.engine.js.map +1 -1
  50. package/dist/lib/engines/template-engine.d.ts +4 -1
  51. package/dist/lib/engines/template-engine.js +2 -0
  52. package/dist/lib/engines/template-engine.js.map +1 -1
  53. package/dist/lib/entities/template-layout.entity.js +51 -14
  54. package/dist/lib/entities/template-layout.entity.js.map +1 -1
  55. package/dist/lib/entities/template.entity.js +58 -15
  56. package/dist/lib/entities/template.entity.js.map +1 -1
  57. package/dist/lib/errors/diagnose.d.ts +11 -0
  58. package/dist/lib/errors/diagnose.js +162 -0
  59. package/dist/lib/errors/diagnose.js.map +1 -0
  60. package/dist/lib/errors/template.errors.d.ts +77 -13
  61. package/dist/lib/errors/template.errors.js +104 -59
  62. package/dist/lib/errors/template.errors.js.map +1 -1
  63. package/dist/lib/interfaces/module-config.interface.d.ts +29 -18
  64. package/dist/lib/nest-dynamic-templates.module.d.ts +1 -4
  65. package/dist/lib/nest-dynamic-templates.module.js +40 -96
  66. package/dist/lib/nest-dynamic-templates.module.js.map +1 -1
  67. package/dist/lib/services/template-config.service.d.ts +12 -15
  68. package/dist/lib/services/template-config.service.js +30 -45
  69. package/dist/lib/services/template-config.service.js.map +1 -1
  70. package/dist/lib/services/template-engine.registry.d.ts +6 -10
  71. package/dist/lib/services/template-engine.registry.js +42 -50
  72. package/dist/lib/services/template-engine.registry.js.map +1 -1
  73. package/dist/lib/services/template-layout.service.d.ts +1 -3
  74. package/dist/lib/services/template-layout.service.js +80 -152
  75. package/dist/lib/services/template-layout.service.js.map +1 -1
  76. package/dist/lib/services/template.service.d.ts +1 -3
  77. package/dist/lib/services/template.service.js +107 -209
  78. package/dist/lib/services/template.service.js.map +1 -1
  79. package/dist/tsconfig.build.tsbuildinfo +1 -1
  80. package/package.json +17 -20
@@ -22,6 +22,7 @@ const template_layout_service_1 = require("./template-layout.service");
22
22
  const template_engine_registry_1 = require("./template-engine.registry");
23
23
  const lodash_1 = require("lodash");
24
24
  const template_errors_1 = require("../errors/template.errors");
25
+ const diagnose_1 = require("../errors/diagnose");
25
26
  let TemplateService = class TemplateService {
26
27
  templateRepository;
27
28
  engineRegistry;
@@ -32,180 +33,108 @@ let TemplateService = class TemplateService {
32
33
  this.templateLayoutService = templateLayoutService;
33
34
  }
34
35
  async render(renderDto) {
35
- const { name, scope, scopeId, locale, context } = renderDto;
36
- try {
37
- if (!name) {
38
- throw new common_1.BadRequestException('Template name is required');
39
- }
40
- const template = await this.findTemplate(name, scope || 'system', scopeId, locale);
41
- if (!template) {
42
- throw new common_1.NotFoundException(`Template not found: ${name} in scope ${scope || 'system'}`);
43
- }
44
- let content = template.content;
45
- let subject = template.subject;
46
- if (template.subject && template.engine) {
47
- try {
48
- const subjectEngine = this.engineRegistry.getTemplateEngine(template.engine);
49
- subject = await subjectEngine.render(template.subject, context || {});
50
- }
51
- catch (error) {
52
- throw new template_errors_1.TemplateEngineError(template.engine, error);
53
- }
54
- }
55
- if (template.engine) {
56
- try {
57
- content = await this.renderEngine(template.engine, content, context || {});
58
- }
59
- catch (error) {
60
- throw new template_errors_1.TemplateEngineError(template.engine, error);
61
- }
62
- }
63
- let layout;
64
- if (template.templateLayoutName) {
65
- try {
66
- layout = await this.templateLayoutService.render({
67
- name: template.templateLayoutName,
68
- scope: scope || 'system',
69
- scopeId,
70
- locale,
71
- context: {
72
- ...(context || {}),
73
- content
74
- }
75
- });
76
- content = layout.content;
77
- }
78
- catch (error) {
79
- throw new template_errors_1.TemplateLayoutError(template.templateLayoutName, error);
80
- }
81
- }
82
- if (!layout && template.language) {
83
- try {
84
- content = await this.renderLanguage(template.language, content, context || {});
85
- }
86
- catch (error) {
87
- throw new template_errors_1.TemplateLanguageError(template.language, error);
88
- }
89
- }
90
- return {
91
- subject: subject || '',
92
- content
93
- };
36
+ const { name, scopeId, locale, context } = renderDto;
37
+ const scope = renderDto.scope || 'system';
38
+ if (!name) {
39
+ throw new template_errors_1.TemplateInputError('`name` is required to render a stored template.', 'To render a raw string instead, use renderContent().');
94
40
  }
95
- catch (error) {
96
- if (error instanceof template_errors_1.TemplateEngineError ||
97
- error instanceof template_errors_1.TemplateLanguageError ||
98
- error instanceof template_errors_1.TemplateLayoutError ||
99
- error instanceof common_1.NotFoundException) {
100
- throw error;
101
- }
102
- throw new template_errors_1.TemplateRenderError('template rendering', error, name);
41
+ const template = await this.findTemplate(name, scope, scopeId, locale);
42
+ if (!template) {
43
+ throw new template_errors_1.TemplateNotFoundError({ templateName: name, scope, scopeId, locale });
103
44
  }
104
- }
105
- async renderContent(input) {
106
- const { content, language, engine, context, templateLayoutId } = input;
107
- try {
108
- if (!content) {
109
- throw new common_1.BadRequestException('Content is required for rendering');
110
- }
111
- let renderContent = content;
45
+ const ctx = context || {};
46
+ const meta = (stage) => ({
47
+ stage,
48
+ engine: template.engine,
49
+ language: template.language,
50
+ templateName: name,
51
+ scope,
52
+ scopeId,
53
+ locale,
54
+ });
55
+ let subject = template.subject ?? null;
56
+ if (template.subject && template.engine) {
112
57
  try {
113
- renderContent = await this.renderEngine(engine || template_types_1.TemplateEngineEnum.NUNJUCKS, renderContent, context || {});
58
+ subject = await this.engineRegistry
59
+ .getTemplateEngine(template.engine)
60
+ .render(template.subject, ctx);
114
61
  }
115
62
  catch (error) {
116
- throw new template_errors_1.TemplateEngineError(engine || template_types_1.TemplateEngineEnum.NUNJUCKS, error);
63
+ throw this.asRenderError(error, template.subject, ctx, meta('subject'));
117
64
  }
118
- let templateLayout = null;
119
- if (templateLayoutId) {
120
- try {
121
- templateLayout = await this.templateLayoutService.getTemplateLayoutById(templateLayoutId);
122
- if (!templateLayout) {
123
- throw new common_1.NotFoundException(`Template layout not found with ID: ${templateLayoutId}`);
124
- }
125
- }
126
- catch (error) {
127
- if (error instanceof common_1.NotFoundException) {
128
- throw error;
129
- }
130
- throw new template_errors_1.TemplateContentError('template layout retrieval', error);
131
- }
132
- if (templateLayout) {
133
- try {
134
- renderContent = await this.templateLayoutService.renderContent({
135
- content: templateLayout.content,
136
- language: language,
137
- engine: engine,
138
- context: {
139
- ...(context || {}),
140
- content: renderContent
141
- }
142
- });
143
- }
144
- catch (error) {
145
- throw new template_errors_1.TemplateLayoutError(templateLayout.name, error);
146
- }
147
- }
65
+ }
66
+ let content = template.content;
67
+ if (template.engine) {
68
+ try {
69
+ content = await this.engineRegistry.getTemplateEngine(template.engine).render(content, ctx);
148
70
  }
149
- if ((!templateLayoutId || !templateLayout) && language) {
150
- try {
151
- renderContent = await this.renderLanguage(language, renderContent, context || {});
152
- }
153
- catch (error) {
154
- throw new template_errors_1.TemplateLanguageError(language, error);
155
- }
71
+ catch (error) {
72
+ throw this.asRenderError(error, template.content, ctx, meta('template-engine'));
156
73
  }
157
- return renderContent;
158
74
  }
159
- catch (error) {
160
- if (error instanceof template_errors_1.TemplateEngineError ||
161
- error instanceof template_errors_1.TemplateLanguageError ||
162
- error instanceof template_errors_1.TemplateLayoutError ||
163
- error instanceof template_errors_1.TemplateContentError ||
164
- error instanceof common_1.NotFoundException ||
165
- error instanceof common_1.BadRequestException) {
166
- throw error;
75
+ if (template.templateLayoutName) {
76
+ const layout = await this.templateLayoutService.render({
77
+ name: template.templateLayoutName,
78
+ scope,
79
+ scopeId,
80
+ locale,
81
+ context: { ...ctx, content },
82
+ });
83
+ return { subject, content: layout.content };
84
+ }
85
+ if (template.language) {
86
+ try {
87
+ content = await this.engineRegistry.getLanguageEngine(template.language).render(content, ctx);
88
+ }
89
+ catch (error) {
90
+ throw this.asRenderError(error, content, ctx, meta('language-engine'));
167
91
  }
168
- throw new template_errors_1.TemplateRenderError('content rendering', error);
169
92
  }
93
+ return { subject, content };
170
94
  }
171
- async renderLanguage(language, content, context) {
95
+ async renderContent(input) {
96
+ const { content, language, templateLayoutId } = input;
97
+ const engine = input.engine || template_types_1.TemplateEngineEnum.NUNJUCKS;
98
+ const ctx = input.context || {};
99
+ if (!content) {
100
+ throw new template_errors_1.TemplateInputError('`content` is required for renderContent().');
101
+ }
102
+ let rendered;
172
103
  try {
173
- if (!content) {
174
- throw new common_1.BadRequestException('Content is required for language rendering');
175
- }
176
- const languageEngine = this.engineRegistry.getLanguageEngine(language);
177
- if (!languageEngine) {
178
- throw new common_1.BadRequestException(`Language engine not found for: ${language}`);
179
- }
180
- return await languageEngine.render(content, context || {});
104
+ rendered = await this.engineRegistry.getTemplateEngine(engine).render(content, ctx);
181
105
  }
182
106
  catch (error) {
183
- if (error instanceof common_1.BadRequestException) {
184
- throw error;
185
- }
186
- throw new template_errors_1.TemplateLanguageError(language, error);
107
+ throw this.asRenderError(error, content, ctx, { stage: 'template-engine', engine, language });
187
108
  }
188
- }
189
- async renderEngine(engine, content, context) {
190
- try {
191
- if (!content) {
192
- throw new common_1.BadRequestException('Content is required for engine rendering');
193
- }
194
- const templateEngine = this.engineRegistry.getTemplateEngine(engine);
195
- if (!templateEngine) {
196
- throw new common_1.BadRequestException(`Template engine not found for: ${engine}`);
109
+ if (templateLayoutId) {
110
+ const layout = await this.templateLayoutService.getTemplateLayoutById(templateLayoutId);
111
+ if (!layout) {
112
+ throw new template_errors_1.TemplateNotFoundError({ templateName: templateLayoutId, kind: 'layout' });
197
113
  }
198
- return await templateEngine.render(content, context || {});
114
+ return this.templateLayoutService.renderContent({
115
+ content: layout.content,
116
+ language,
117
+ engine,
118
+ context: { ...ctx, content: rendered },
119
+ });
199
120
  }
200
- catch (error) {
201
- if (error instanceof common_1.BadRequestException) {
202
- throw error;
121
+ if (language) {
122
+ try {
123
+ rendered = await this.engineRegistry.getLanguageEngine(language).render(rendered, ctx);
124
+ }
125
+ catch (error) {
126
+ throw this.asRenderError(error, rendered, ctx, { stage: 'language-engine', engine, language });
203
127
  }
204
- throw new template_errors_1.TemplateEngineError(engine, error);
205
128
  }
129
+ return rendered;
130
+ }
131
+ asRenderError(error, source, context, meta) {
132
+ if ((0, template_errors_1.isTemplateError)(error))
133
+ return error;
134
+ return (0, diagnose_1.diagnoseRenderError)(error, source, context, meta);
206
135
  }
207
136
  async getTemplates(filter = {}) {
208
- const { scope, scopeId, type, locale, excludeNames = [], } = filter;
137
+ const { scope, scopeId, type, locale, excludeNames = [] } = filter;
209
138
  const where = {};
210
139
  if (type)
211
140
  where.type = type;
@@ -214,40 +143,26 @@ let TemplateService = class TemplateService {
214
143
  if (excludeNames.length > 0)
215
144
  where.name = (0, typeorm_2.Not)((0, typeorm_2.In)(excludeNames));
216
145
  const systemTemplates = await this.templateRepository.find({
217
- where: {
218
- ...where,
219
- scope: 'system',
220
- scopeId: (0, typeorm_2.IsNull)(),
221
- },
146
+ where: { ...where, scope: 'system', scopeId: (0, typeorm_2.IsNull)() },
222
147
  });
223
148
  if (scope === 'system') {
224
149
  return systemTemplates;
225
150
  }
226
151
  const templates = await this.templateRepository.find({
227
- where: {
228
- ...where,
229
- scope: (0, typeorm_2.Equal)(scope),
230
- scopeId: scopeId,
231
- },
232
- order: {
233
- createdAt: 'DESC',
234
- },
152
+ where: { ...where, scope: (0, typeorm_2.Equal)(scope), scopeId: scopeId },
153
+ order: { createdAt: 'DESC' },
235
154
  });
236
155
  const templateMap = new Map();
237
156
  for (const template of systemTemplates) {
238
- const key = `${template.type}/${template.name}/${template.locale}`;
239
- templateMap.set(key, template);
157
+ templateMap.set(`${template.type}/${template.name}/${template.locale}`, template);
240
158
  }
241
159
  for (const template of templates) {
242
- const key = `${template.type}/${template.name}/${template.locale}`;
243
- templateMap.set(key, template);
160
+ templateMap.set(`${template.type}/${template.name}/${template.locale}`, template);
244
161
  }
245
162
  return Array.from(templateMap.values());
246
163
  }
247
164
  async getTemplateById(id) {
248
- return this.templateRepository.findOne({
249
- where: { id },
250
- });
165
+ return this.templateRepository.findOne({ where: { id } });
251
166
  }
252
167
  async findTemplate(name, scope, scopeId, locale) {
253
168
  const locales = (locale ? [locale, 'en'] : ['en']).filter(Boolean);
@@ -258,11 +173,11 @@ let TemplateService = class TemplateService {
258
173
  scope,
259
174
  scopeId: scope === 'system' ? (0, typeorm_2.IsNull)() : (0, typeorm_2.Equal)(scopeId),
260
175
  locale: currentLocale,
261
- }
176
+ isActive: true,
177
+ },
262
178
  });
263
- if (template) {
179
+ if (template)
264
180
  return template;
265
- }
266
181
  }
267
182
  if (scope !== 'system') {
268
183
  for (const currentLocale of locales) {
@@ -272,46 +187,36 @@ let TemplateService = class TemplateService {
272
187
  scope: 'system',
273
188
  scopeId: (0, typeorm_2.IsNull)(),
274
189
  locale: currentLocale,
275
- }
190
+ isActive: true,
191
+ },
276
192
  });
277
- if (template) {
193
+ if (template)
278
194
  return template;
279
- }
280
195
  }
281
196
  }
282
197
  return null;
283
198
  }
284
199
  async createTemplate(data) {
285
200
  if (data.scope !== 'system') {
286
- throw new common_1.ForbiddenException('Only system templates can be created directly');
201
+ throw new template_errors_1.TemplateForbiddenError('Only system templates can be created directly.', 'To create a scoped override, call overwriteSystemTemplate() or updateTemplate() with a non-system scope.');
287
202
  }
288
203
  const existingTemplate = await this.templateRepository.findOne({
289
- where: {
290
- name: data.name,
291
- scope: 'system',
292
- scopeId: (0, typeorm_2.IsNull)(),
293
- locale: data.locale,
294
- },
204
+ where: { name: data.name, scope: 'system', scopeId: (0, typeorm_2.IsNull)(), locale: data.locale },
295
205
  });
296
206
  if (existingTemplate) {
297
- throw new common_1.ConflictException(`System template already exists`);
207
+ throw new template_errors_1.TemplateConflictError(`A system template "${data.name}" already exists for locale "${data.locale ?? 'en'}".`);
298
208
  }
299
- const template = this.templateRepository.create({
300
- ...data,
301
- scopeId: undefined,
302
- });
209
+ const template = this.templateRepository.create({ ...data, scopeId: undefined });
303
210
  return this.templateRepository.save(template);
304
211
  }
305
212
  async overwriteSystemTemplate(templateId, updates) {
306
- let template = await this.templateRepository.findOne({
307
- where: { id: templateId },
308
- });
213
+ let template = await this.templateRepository.findOne({ where: { id: templateId } });
309
214
  if (!template) {
310
- throw new common_1.NotFoundException(`Template not found: ${templateId}`);
215
+ throw new template_errors_1.TemplateNotFoundError({ templateName: templateId });
311
216
  }
312
217
  if (template.scope === 'system') {
313
218
  if (!updates.scope) {
314
- throw new common_1.BadRequestException('Scope is required when overwriting system template');
219
+ throw new template_errors_1.TemplateInputError('`scope` is required when overwriting a system template.');
315
220
  }
316
221
  const existingTemplate = await this.templateRepository.findOne({
317
222
  where: {
@@ -325,7 +230,7 @@ let TemplateService = class TemplateService {
325
230
  template = existingTemplate;
326
231
  }
327
232
  else {
328
- const newTemplate = this.templateRepository.create({
233
+ template = this.templateRepository.create({
329
234
  ...template,
330
235
  id: undefined,
331
236
  createdAt: undefined,
@@ -333,7 +238,6 @@ let TemplateService = class TemplateService {
333
238
  scope: updates.scope,
334
239
  scopeId: updates.scopeId,
335
240
  });
336
- template = newTemplate;
337
241
  }
338
242
  }
339
243
  updates = (0, lodash_1.omit)(updates, ['name', 'id', 'createdAt', 'updatedAt']);
@@ -342,32 +246,26 @@ let TemplateService = class TemplateService {
342
246
  return template;
343
247
  }
344
248
  async updateTemplate(id, updates, canUpdateSystemTemplate = false) {
345
- let template = await this.templateRepository.findOne({
346
- where: { id },
347
- });
249
+ let template = await this.templateRepository.findOne({ where: { id } });
348
250
  if (!template) {
349
- throw new common_1.NotFoundException(`Template not found: ${id}`);
251
+ throw new template_errors_1.TemplateNotFoundError({ templateName: id });
350
252
  }
351
253
  if (template.scope === 'system' && !canUpdateSystemTemplate) {
352
254
  if (updates.scope) {
353
255
  return this.overwriteSystemTemplate(id, updates);
354
256
  }
355
- else {
356
- throw new common_1.ForbiddenException('Cannot update system templates');
357
- }
257
+ throw new template_errors_1.TemplateForbiddenError('Cannot update a system template directly.', 'Pass a non-system `scope` to create a scoped override, or call updateTemplate(id, updates, true).');
358
258
  }
359
259
  template = this.templateRepository.merge(template, updates);
360
260
  return this.templateRepository.save(template);
361
261
  }
362
262
  async deleteTemplate(id, canDeleteSystemTemplate = false) {
363
- const template = await this.templateRepository.findOne({
364
- where: { id },
365
- });
263
+ const template = await this.templateRepository.findOne({ where: { id } });
366
264
  if (!template) {
367
- throw new Error(`Template not found: ${id}`);
265
+ throw new template_errors_1.TemplateNotFoundError({ templateName: id });
368
266
  }
369
267
  if (template.scope === 'system' && !canDeleteSystemTemplate) {
370
- throw new common_1.ForbiddenException('Cannot delete system templates');
268
+ throw new template_errors_1.TemplateForbiddenError('Cannot delete a system template.');
371
269
  }
372
270
  await this.templateRepository.remove(template);
373
271
  }
@@ -1 +1 @@
1
- {"version":3,"file":"template.service.js","sourceRoot":"","sources":["../../../src/lib/services/template.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.service.js","sourceRoot":"","sources":["../../../src/lib/services/template.service.ts"],"names":[],"mappings":"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"}