"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const promise_1 = __importDefault(require("../utils/promise")); const generatePage_1 = __importDefault(require("./generatePage")); const page_cache_1 = require("./page-cache"); /** Output all pages using a generator @param {Generator} generator @param {Output} output @return {Promise} */ function generatePages(generator, output) { const cache = (0, page_cache_1.getCache)(); const pages = output.getPages(); const logger = output.getLogger(); // Is generator ignoring assets? if (!generator.onPage) { return (0, promise_1.default)(output); } const root = output.book.getContentRoot(); const isIncrementBuilding = output.incrementalChangeFileSet.size !== 0; const pageList = pages.map((page) => { const file = page.getFile(); const absoluteFilePath = path_1.default.join(root, file.getPath()); // When incremental build if (isIncrementBuilding && !output.incrementalChangeFileSet.has(absoluteFilePath)) { logger.debug.ln(`skip generate page "${file.getPath()}"`); return; // Skip build } return (0, generatePage_1.default)(output, page) .then((resultPage) => { // It call renderToString // Create page file return generator.onPage(output, resultPage); }) .fail((err) => { logger.error.ln(`error while generating page "${file.getPath()}":`); throw err; }); }); return promise_1.default.all(pageList.toArray()).then(() => { // update caches cache.save(); return output; }); } exports.default = generatePages;