@ackplus/nest-dynamic-templates
Version:
Dynamic template management for NestJS applications
60 lines • 1.99 kB
JavaScript
;
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