UNPKG

@ackplus/nest-dynamic-templates

Version:

Dynamic template management for NestJS applications

93 lines 3.87 kB
"use strict"; 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