@mintlify/common
Version:
Commonly shared code within Mintlify
31 lines (30 loc) • 1.34 kB
JavaScript
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);
}
}