UNPKG

@mintlify/previewing

Version:

Preview Mintlify docs locally

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