"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const promise_1 = __importDefault(require("../utils/promise")); const error_1 = __importDefault(require("../utils/error")); const render_1 = __importDefault(require("./render")); /** * Render a template * * @param {TemplateEngine} engine * @param {string} filePath * @param {Object} context * @return {Promise} */ function renderTemplateFile(engine, filePath, context) { const loader = engine.getLoader(); // Resolve the filePath const resolvedFilePath = loader.resolve(null, filePath); return (0, promise_1.default)() .then(() => { if (!loader.async) { return loader.getSource(resolvedFilePath); } const deferred = promise_1.default.defer(); loader.getSource(resolvedFilePath, deferred.makeNodeResolver()); return deferred.promise; }) .then((result) => { if (!result) { throw error_1.default.TemplateError(new Error("Not found"), { filename: filePath }); } return (0, render_1.default)(engine, result.path, result.src, context); }); } exports.default = renderTemplateFile;