@mintlify/previewing
Version:
Preview Mintlify docs locally
35 lines (34 loc) • 1.62 kB
JavaScript
import { categorizeFilePaths, createPage, generateDecoratedDocsNavigationFromPages, getMintIgnore, } from '@mintlify/prebuild';
import { promises as _promises } from 'fs';
import { join } from 'path';
import { CMD_EXEC_PATH } from '../../constants.js';
const { readFile } = _promises;
const createFilenamePageMetadataMap = async ({ contentDirectoryPath, contentFilenames, openApiFiles, asyncApiFiles, pagesAcc = {}, }) => {
const contentPromises = [];
contentFilenames.forEach((filename) => {
contentPromises.push((async () => {
const sourcePath = join(contentDirectoryPath, filename);
const contentStr = (await readFile(sourcePath)).toString();
const { slug, pageMetadata } = await createPage(filename, contentStr, contentDirectoryPath, openApiFiles, asyncApiFiles, true);
pagesAcc = {
...pagesAcc,
[slug]: pageMetadata,
};
})());
});
await Promise.all(contentPromises);
return pagesAcc;
};
export const generateNav = async (pagesAcc, docsConfig) => {
const mintIgnore = await getMintIgnore(CMD_EXEC_PATH);
const { contentFilenames, openApiFiles, asyncApiFiles } = await categorizeFilePaths(CMD_EXEC_PATH, mintIgnore);
const filenamePageMetadataMap = await createFilenamePageMetadataMap({
contentDirectoryPath: CMD_EXEC_PATH,
contentFilenames,
openApiFiles,
asyncApiFiles,
pagesAcc,
});
const generatedDocsNav = generateDecoratedDocsNavigationFromPages(filenamePageMetadataMap, docsConfig.navigation);
return generatedDocsNav;
};