"use strict"; /** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.createPagesContentPaths = createPagesContentPaths; exports.getContentPathList = getContentPathList; exports.loadPagesContent = loadPagesContent; const tslib_1 = require("tslib"); const fs_extra_1 = tslib_1.__importDefault(require("fs-extra")); const path_1 = tslib_1.__importDefault(require("path")); const utils_1 = require("@docusaurus/utils"); const frontMatter_1 = require("./frontMatter"); function createPagesContentPaths({ context, options, }) { const { siteDir, localizationDir } = context; return { contentPath: path_1.default.resolve(siteDir, options.path), contentPathLocalized: (0, utils_1.getPluginI18nPath)({ localizationDir, pluginName: 'docusaurus-plugin-content-pages', pluginId: options.id, }), }; } function getContentPathList(contentPaths) { return [contentPaths.contentPathLocalized, contentPaths.contentPath]; } const isMarkdownSource = (source) => source.endsWith('.md') || source.endsWith('.mdx'); async function loadPagesContent(params) { const { options } = params; const pagesFiles = await (0, utils_1.Globby)(params.options.include, { cwd: params.contentPaths.contentPath, ignore: options.exclude, }); async function doProcessPageSourceFile(relativeSource) { try { return await processPageSourceFile(relativeSource, params); } catch (err) { throw new Error(`Processing of page source file path=${relativeSource} failed.`, { cause: err }); } } return (await Promise.all(pagesFiles.map(doProcessPageSourceFile))).filter((res) => { return res !== undefined; }); } async function processPageSourceFile(relativeSource, params) { const { context, options, contentPaths } = params; const { siteConfig, baseUrl, siteDir, i18n } = context; const { editUrl } = options; // Lookup in localized folder in priority const contentPath = await (0, utils_1.getFolderContainingFile)(getContentPathList(contentPaths), relativeSource); const source = path_1.default.join(contentPath, relativeSource); const aliasedSourcePath = (0, utils_1.aliasedSitePath)(source, siteDir); const permalink = (0, utils_1.normalizeUrl)([ baseUrl, options.routeBasePath, (0, utils_1.encodePath)((0, utils_1.fileToPath)(relativeSource)), ]); if (!isMarkdownSource(relativeSource)) { return { type: 'jsx', permalink, source: aliasedSourcePath, }; } const content = await fs_extra_1.default.readFile(source, 'utf-8'); const { frontMatter: unsafeFrontMatter, contentTitle, excerpt, } = await (0, utils_1.parseMarkdownFile)({ filePath: source, fileContent: content, parseFrontMatter: siteConfig.markdown.parseFrontMatter, }); const frontMatter = (0, frontMatter_1.validatePageFrontMatter)(unsafeFrontMatter); const pagesDirPath = await (0, utils_1.getFolderContainingFile)(getContentPathList(contentPaths), relativeSource); const pagesSourceAbsolute = path_1.default.join(pagesDirPath, relativeSource); function getPagesEditUrl() { const pagesPathRelative = path_1.default.relative(pagesDirPath, path_1.default.resolve(pagesSourceAbsolute)); if (typeof editUrl === 'function') { return editUrl({ pagesDirPath: (0, utils_1.posixPath)(path_1.default.relative(siteDir, pagesDirPath)), pagesPath: (0, utils_1.posixPath)(pagesPathRelative), permalink, locale: i18n.currentLocale, }); } else if (typeof editUrl === 'string') { const isLocalized = pagesDirPath === contentPaths.contentPathLocalized; const fileContentPath = isLocalized && options.editLocalizedFiles ? contentPaths.contentPathLocalized : contentPaths.contentPath; const contentPathEditUrl = (0, utils_1.normalizeUrl)([ editUrl, (0, utils_1.posixPath)(path_1.default.relative(siteDir, fileContentPath)), ]); return (0, utils_1.getEditUrl)(pagesPathRelative, contentPathEditUrl); } return undefined; } const lastUpdatedData = await (0, utils_1.readLastUpdateData)(source, options, frontMatter.last_update); if ((0, utils_1.isDraft)({ frontMatter })) { return undefined; } const unlisted = (0, utils_1.isUnlisted)({ frontMatter }); return { type: 'mdx', permalink, source: aliasedSourcePath, title: frontMatter.title ?? contentTitle, description: frontMatter.description ?? excerpt, frontMatter, lastUpdatedBy: lastUpdatedData.lastUpdatedBy, lastUpdatedAt: lastUpdatedData.lastUpdatedAt, editUrl: getPagesEditUrl(), unlisted, }; }