UNPKG

@mintlify/common

Version:

Commonly shared code within Mintlify

35 lines (34 loc) 1.66 kB
import { divisions } from '@mintlify/validation'; import { optionallyRemoveLeadingSlash } from '../optionallyRemoveLeadingSlash.js'; import { iterateObjectArrayProperty } from './iterateObjectArrayProperty.js'; export function generatePathToVersionDictForDocsConfig(nav) { const pathToVersionDict = new Map(); traverseNavigation(pathToVersionDict, nav, undefined); return pathToVersionDict; } function traverseNavigation(pathToVersionDict, nav, nearestVersion) { const currentVersion = 'version' in nav ? nav.version : nearestVersion; if ('pages' in nav) { if ('root' in nav && typeof nav.root === 'object') { traverseGroup(pathToVersionDict, nav.root, currentVersion); } nav.pages.forEach((page) => traverseGroup(pathToVersionDict, page, currentVersion)); return; } for (const division of ['groups', 'tabs', ...divisions]) { iterateObjectArrayProperty(nav, division, (item) => traverseNavigation(pathToVersionDict, item, currentVersion)); } } function traverseGroup(pathToVersionDict, entry, nearestVersion) { if ('pages' in entry) { const currentVersion = 'version' in entry ? entry.version : nearestVersion; if ('root' in entry && typeof entry.root === 'object') { traverseGroup(pathToVersionDict, entry.root, currentVersion); } entry.pages.forEach((page) => traverseGroup(pathToVersionDict, page, currentVersion)); } else if ('href' in entry) { const version = 'version' in entry ? entry.version : nearestVersion; pathToVersionDict.set(optionallyRemoveLeadingSlash(entry.href), version); } }