UNPKG

@mintlify/common

Version:

Commonly shared code within Mintlify

31 lines (30 loc) 1.34 kB
import { divisions } from '@mintlify/validation'; import { optionallyRemoveLeadingSlash } from '../optionallyRemoveLeadingSlash.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) { nav.pages.forEach((page) => traverseGroup(pathToVersionDict, page, currentVersion)); return; } for (const division of ['groups', 'tabs', ...divisions]) { if (division in nav) { const items = nav[division]; items.forEach((item) => traverseNavigation(pathToVersionDict, item, currentVersion)); } } } function traverseGroup(pathToVersionDict, entry, nearestVersion) { if ('pages' in entry) { const currentVersion = 'version' in entry ? entry.version : nearestVersion; 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); } }