@ackplus/nest-dynamic-templates
Version:
Dynamic template management for NestJS applications
93 lines • 3.87 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.TemplateEngineRegistryService = void 0;
const tslib_1 = require("tslib");
const common_1 = require("@nestjs/common");
const nunjucks_engine_1 = require("../engines/template/nunjucks.engine");
const mjml_engine_1 = require("../engines/language/mjml.engine");
const html_engine_1 = require("../engines/language/html.engine");
const language_1 = require("../engines/language");
const ejs_engine_1 = require("../engines/template/ejs.engine");
const handlebars_engine_1 = require("../engines/template/handlebars.engine");
const pug_engine_1 = require("../engines/template/pug.engine");
const template_config_service_1 = require("./template-config.service");
let TemplateEngineRegistryService = class TemplateEngineRegistryService {
constructor() {
this.templateEngines = new Map();
this.languageEngines = new Map();
this.config = template_config_service_1.TemplateConfigService.getOptions();
this.registerTemplateEngines([
nunjucks_engine_1.NunjucksEngine,
handlebars_engine_1.HandlebarsEngine,
ejs_engine_1.EjsEngine,
pug_engine_1.PugEngine
]);
this.registerLanguageEngines([
mjml_engine_1.MjmlEngine,
html_engine_1.HtmlEngine,
language_1.TextEngine,
language_1.MarkdownEngine
]);
}
registerTemplateEngines(engineClasses) {
engineClasses.forEach(EngineClass => {
const engineName = EngineClass.engineName;
if (!engineName) {
throw new Error(`Engine class ${EngineClass.name} must define static engineName property`);
}
const options = this.config.enginesOptions?.template?.[engineName];
const customOptions = {
filters: this.config.enginesOptions?.filters
};
this.registerTemplateEngine(engineName, new EngineClass(options, customOptions));
});
}
registerTemplateEngine(format, engine) {
this.templateEngines.set(format, engine);
}
registerLanguageEngine(format, engine) {
this.languageEngines.set(format, engine);
}
getTemplateEngine(format) {
const engine = this.templateEngines.get(format);
if (!engine) {
throw new Error(`Template engine not found for format: ${format}`);
}
return engine;
}
getLanguageEngine(format) {
const engine = this.languageEngines.get(format);
if (!engine) {
throw new Error(`Language engine not found for format: ${format}`);
}
return engine;
}
registerLanguageEngines(engineClasses) {
engineClasses.forEach(EngineClass => {
const engineName = EngineClass.engineName;
if (!engineName) {
throw new Error(`Engine class ${EngineClass.name} must define static engineName property`);
}
const options = this.config.enginesOptions?.language?.[engineName];
this.registerLanguageEngine(engineName, new EngineClass(options));
});
}
hasTemplateEngine(format) {
return this.templateEngines.has(format);
}
hasLanguageEngine(format) {
return this.languageEngines.has(format);
}
getSupportedTemplateFormats() {
return Array.from(this.templateEngines.keys());
}
getSupportedLanguageFormats() {
return Array.from(this.languageEngines.keys());
}
};
exports.TemplateEngineRegistryService = TemplateEngineRegistryService;
exports.TemplateEngineRegistryService = TemplateEngineRegistryService = tslib_1.__decorate([
(0, common_1.Injectable)(),
tslib_1.__metadata("design:paramtypes", [])
], TemplateEngineRegistryService);
//# sourceMappingURL=template-engine.registry.js.map
;