"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const templating_1 = __importDefault(require("../templating")); const templateEngine_1 = __importDefault(require("../models/templateEngine")); const api_1 = __importDefault(require("../api")); const plugins_1 = __importDefault(require("../plugins")); const defaultBlocks_1 = __importDefault(require("../constants/defaultBlocks")); const defaultFilters_1 = __importDefault(require("../constants/defaultFilters")); /** Create template engine for an output. It adds default filters/blocks, then add the ones from plugins @param {Output} output @return {TemplateEngine} */ function createTemplateEngine(output) { const plugins = output.getPlugins(); const book = output.getBook(); const rootFolder = book.getContentRoot(); const logger = book.getLogger(); let filters = plugins_1.default.listFilters(plugins); let blocks = plugins_1.default.listBlocks(plugins); // Extend with default blocks = defaultBlocks_1.default.merge(blocks); filters = defaultFilters_1.default.merge(filters); // Create loader const transformFn = templating_1.default.replaceShortcuts.bind(null, blocks); // @ts-expect-error: Expected 0 arguments, but got 3. const loader = new templating_1.default.ConrefsLoader(rootFolder, transformFn, logger); // Create API context const context = api_1.default.encodeGlobal(output); return new templateEngine_1.default({ filters: filters, blocks: blocks, loader: loader, context: context }); } exports.default = createTemplateEngine;