UNPKG

@ackplus/nest-dynamic-templates

Version:

Dynamic template management for NestJS applications

60 lines 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NunjucksEngine = void 0; const lodash_1 = require("lodash"); const template_types_1 = require("../../interfaces/template.types"); const template_engine_1 = require("../template-engine"); class NunjucksEngine extends template_engine_1.TemplateEngine { constructor(options, customOptions) { super(); this.options = options; this.customOptions = customOptions; this.initNunjucks(); } initNunjucks() { const nunjucks = require('nunjucks'); const nunjucksOptions = (0, lodash_1.omit)(this.options, 'filters'); this.env = nunjucks.configure({ autoescape: true, throwOnUndefined: true, ...nunjucksOptions, }); if (this.customOptions?.filters) { Object.entries(this.customOptions.filters).forEach(([name, filter]) => { this.registerFilter(name, filter); }); } } async render(content, data) { try { return new Promise((resolve, reject) => { this.env.renderString(content, data, (err, result) => { if (err) { reject(err); } else { resolve(result); } }); }); } catch (error) { throw new Error(`Failed to render Nunjucks template: ${error?.message || 'Unknown error'}`); } } async validate(content) { try { await this.render(content, {}); return true; } catch (error) { return false; } } registerFilter(name, filter) { this.env.addFilter(name, filter); } } exports.NunjucksEngine = NunjucksEngine; NunjucksEngine.engineName = template_types_1.TemplateEngineEnum.NUNJUCKS; //# sourceMappingURL=nunjucks.engine.js.map