@mintlify/previewing
Version:
Preview Mintlify docs locally
35 lines (34 loc) • 1.35 kB
JavaScript
import { checkNavAccess, isAbsoluteUrl, isPage, readObjectArrayProperty } from '@mintlify/common';
import { divisions } from '@mintlify/validation';
export function getGroupFilteredRoutes(generatedNav, groups) {
const routes = new Set();
collectRoutes(generatedNav, new Set([...groups, '*']), routes);
return [...routes];
}
function collectRoutes(entry, userGroups, routes) {
const navEntry = entry;
if (isPage(navEntry)) {
if (!checkNavAccess(navEntry, userGroups, false, false))
return;
const { href } = navEntry;
if (!href || href.startsWith('#') || href.startsWith('//') || isAbsoluteUrl(href))
return;
const route = href.startsWith('/') ? href : `/${href}`;
if (route === '/index')
routes.add('/');
routes.add(route);
return;
}
if (entry.root != null && typeof entry.root === 'object') {
collectRoutes(entry.root, userGroups, routes);
}
const pages = readObjectArrayProperty(entry, 'pages');
if (pages) {
pages.forEach((page) => collectRoutes(page, userGroups, routes));
return;
}
for (const division of ['groups', ...divisions]) {
const items = readObjectArrayProperty(entry, division);
items?.forEach((item) => collectRoutes(item, userGroups, routes));
}
}