nestjs-mailable
Version:
A comprehensive NestJS mail package with design patterns for email handling, templating, and multi-provider support
40 lines • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseTemplateEngine = void 0;
exports.ensurePackageAvailable = ensurePackageAvailable;
const path = require("path");
const fs_1 = require("fs");
function ensurePackageAvailable(packageName) {
try {
return require(packageName);
}
catch {
throw new Error(`Template engine package '${packageName}' is not installed. ` +
`Please install it with: npm install ${packageName}`);
}
}
class BaseTemplateEngine {
constructor(templateDir, mainFile, extension) {
this.templateDir = templateDir;
this.mainFile = mainFile;
this.extension = extension;
}
resolveTemplatePath(template) {
let templatePath = template || this.mainFile;
if (!templatePath.endsWith(`.${this.extension}`)) {
templatePath += `.${this.extension}`;
}
return path.join(this.templateDir, templatePath);
}
async loadTemplate(template) {
try {
const filePath = this.resolveTemplatePath(template);
return await fs_1.promises.readFile(filePath, 'utf8');
}
catch (error) {
throw new Error(`Failed to load template file '${template}': ${error.message}`);
}
}
}
exports.BaseTemplateEngine = BaseTemplateEngine;
//# sourceMappingURL=base.engine.js.map