UNPKG

@mintlify/previewing

Version:

Preview Mintlify docs locally

35 lines (34 loc) 1.62 kB
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; };