@unterberg/nivel 0.1.10 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +5 -13
  2. package/dist/SearchModal-YJZFUB53.js +335 -0
  3. package/dist/SearchModal-YJZFUB53.js.map +1 -0
  4. package/dist/{chunk-GT62XN7K.js → chunk-DCHQC4WP.js} +13 -22
  5. package/dist/chunk-DCHQC4WP.js.map +1 -0
  6. package/dist/chunk-ESAHWFDZ.js +196 -0
  7. package/dist/chunk-ESAHWFDZ.js.map +1 -0
  8. package/dist/{chunk-6Q5XESPG.js → chunk-OUDSISNU.js} +3 -3
  9. package/dist/{chunk-HQHLPFGA.js → chunk-PKXDOKJY.js} +5 -3
  10. package/dist/{chunk-HQHLPFGA.js.map → chunk-PKXDOKJY.js.map} +1 -1
  11. package/dist/chunk-PYYPYIBD.js +49 -0
  12. package/dist/chunk-PYYPYIBD.js.map +1 -0
  13. package/dist/{chunk-NDJ5LYLK.js → chunk-QWIYQPCW.js} +6 -45
  14. package/dist/chunk-QWIYQPCW.js.map +1 -0
  15. package/dist/{chunk-F4OBB7JD.js → chunk-SH5XWPXW.js} +482 -818
  16. package/dist/chunk-SH5XWPXW.js.map +1 -0
  17. package/dist/cli.js +3 -2
  18. package/dist/cli.js.map +1 -1
  19. package/dist/client.d.ts +1 -1
  20. package/dist/client.js +8 -5
  21. package/dist/config.d.ts +1 -1
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.js +3 -2
  24. package/dist/mdx.js +3 -2
  25. package/dist/mdx.js.map +1 -1
  26. package/dist/runtime/client.d.ts +1 -1
  27. package/dist/runtime/client.js +8 -5
  28. package/dist/runtime/node.d.ts +1 -1
  29. package/dist/runtime/node.js +4 -3
  30. package/dist/{types-BGAec0JI.d.ts → types-IiJ1jLWc.d.ts} +1 -0
  31. package/dist/vike.d.ts +1 -1
  32. package/dist/vike.js +249 -4
  33. package/dist/vike.js.map +1 -1
  34. package/package.json +6 -7
  35. package/dist/chunk-F4OBB7JD.js.map +0 -1
  36. package/dist/chunk-GT62XN7K.js.map +0 -1
  37. package/dist/chunk-NDJ5LYLK.js.map +0 -1
  38. /package/dist/{chunk-6Q5XESPG.js.map → chunk-OUDSISNU.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/docs/resolveDocsConfig.ts"],"sourcesContent":["import { nivelAssetUrl, resolvePublicAssetUrl, withSiteBaseUrl } from '../shared/assets.js'\nimport type {\n DocsAlgoliaConfig,\n DocsBrandConfig,\n DocsConfig,\n DocsFooterConfig,\n DocsHeadConfig,\n DocsPageNode,\n DocsPartnerConfig,\n DocsSectionNode,\n DocsSidebarNode,\n ResolvedDocsAlgoliaConfig,\n ResolvedDocsBrandConfig,\n ResolvedDocsConfig,\n ResolvedDocsPage,\n ResolvedDocsPartnerConfig,\n ResolvedDocsPartnersConfig,\n ResolvedDocsSection,\n ResolvedDocsSocialConfig,\n ResolvedNavbarItem,\n ResolvedSidebarNode,\n ThemePreference,\n} from './types.js'\n\nexport const isExternalHref = (value: string) => {\n return /^(?:[a-z]+:)?\\/\\//i.test(value) || value.startsWith('mailto:') || value.startsWith('tel:')\n}\n\nconst normalizeBasePath = (value: string) => {\n const normalized = value.trim()\n\n if (!normalized) {\n throw new Error('Docs basePath must be a non-empty absolute path.')\n }\n\n if (!normalized.startsWith('/') || normalized.startsWith('//')) {\n throw new Error(`Docs basePath must start with \"/\". Received ${JSON.stringify(value)}.`)\n }\n\n if (normalized.includes('?') || normalized.includes('#')) {\n throw new Error(`Docs basePath cannot include query strings or hashes. Received ${JSON.stringify(value)}.`)\n }\n\n const collapsed = normalized.replace(/\\/+/g, '/').replace(/\\/+$/g, '')\n return collapsed === '' ? '/' : collapsed\n}\n\nconst normalizeContentDir = (value: string | undefined) => {\n const normalized = (value ?? 'docs').trim()\n\n if (!normalized) {\n throw new Error('Docs contentDir must be a non-empty project-relative path.')\n }\n\n if (normalized.startsWith('/') || normalized.startsWith('\\\\')) {\n throw new Error(`Docs contentDir must be project-relative. Received ${JSON.stringify(value)}.`)\n }\n\n if (/^[a-zA-Z]:[\\\\/]/.test(normalized)) {\n throw new Error(`Docs contentDir must be project-relative. Received ${JSON.stringify(value)}.`)\n }\n\n const segments = normalized.replaceAll('\\\\', '/').split('/')\n const resolvedSegments: string[] = []\n\n for (const segment of segments) {\n if (segment === '' || segment === '.') {\n continue\n }\n\n if (segment === '..') {\n throw new Error(`Docs contentDir cannot escape the project root. Received ${JSON.stringify(value)}.`)\n }\n\n resolvedSegments.push(segment)\n }\n\n if (resolvedSegments.length === 0) {\n throw new Error(`Docs contentDir must contain at least one path segment. Received ${JSON.stringify(value)}.`)\n }\n\n return resolvedSegments.join('/')\n}\n\nconst normalizeSlug = (value: string) => value.replace(/^\\/+|\\/+$/g, '')\n\nconst joinDocsHref = (basePath: string, slug: string) => {\n const normalizedBasePath = normalizeBasePath(basePath)\n const normalizedSlug = normalizeSlug(slug)\n\n if (!normalizedSlug) {\n return normalizedBasePath === '/' ? '/' : `${normalizedBasePath}/`\n }\n\n return normalizedBasePath === '/' ? `/${normalizedSlug}/` : `${normalizedBasePath}/${normalizedSlug}/`\n}\n\nconst normalizePathname = (value: string) => {\n const pathname = value.split('?')[0]?.split('#')[0] ?? value\n const normalized = pathname.trim().replace(/\\/+$/g, '')\n return normalized === '' ? '/' : `${normalized}/`.replace(/\\/+/g, '/')\n}\n\nexport const resolveDocsHref = (basePath: string, href: string) => {\n const normalized = href.trim()\n\n if (!normalized || normalized.startsWith('#') || isExternalHref(normalized)) {\n return null\n }\n\n const pathname = normalized.split('?')[0]?.split('#')[0] ?? normalized\n\n if (!pathname) {\n return null\n }\n\n if (pathname.startsWith('/')) {\n const normalizedPathname = normalizePathname(pathname)\n const normalizedBasePath = normalizeBasePath(basePath)\n\n if (normalizedBasePath === '/') {\n return normalizedPathname\n }\n\n return normalizedPathname === `${normalizedBasePath}/` || normalizedPathname.startsWith(`${normalizedBasePath}/`)\n ? normalizedPathname\n : null\n }\n\n if (pathname.startsWith('./') || pathname.startsWith('../')) {\n return null\n }\n\n return joinDocsHref(basePath, pathname)\n}\n\nconst normalizeSourcePath = (value: string) => {\n const segments = value.replaceAll('\\\\', '/').split('/')\n const normalizedSegments: string[] = []\n\n for (const segment of segments) {\n if (segment === '' || segment === '.') {\n continue\n }\n\n if (segment === '..') {\n normalizedSegments.pop()\n continue\n }\n\n normalizedSegments.push(segment)\n }\n\n return normalizedSegments.join('/')\n}\n\nconst getSectionHref = (items: ResolvedSidebarNode[], visibleOnly = false): string | null => {\n for (const item of items) {\n if (item.kind === 'page') {\n if (visibleOnly && !item.showInNav) {\n continue\n }\n\n return item.href\n }\n\n if (item.kind === 'group') {\n if (visibleOnly && !item.showInNav) {\n continue\n }\n\n const href = getSectionHref(item.items, visibleOnly)\n if (href) {\n return href\n }\n }\n }\n\n return null\n}\n\nconst resolveNavigationHref = (value: string, fieldName: string, basePath: string) => {\n const normalized = value.trim()\n\n if (!normalized) {\n throw new Error(`Docs ${fieldName} must be a non-empty string.`)\n }\n\n if (normalized.startsWith('#') || isExternalHref(normalized)) {\n return normalized\n }\n\n if (!normalized.startsWith('/')) {\n return joinDocsHref(basePath, normalized)\n }\n\n return normalizePathname(normalized)\n}\n\nconst resolveThemeConfig = (theme: DocsConfig['theme']) => {\n return {\n light: theme?.light ?? 'consumer-light',\n dark: theme?.dark ?? 'consumer-dark',\n defaultPreference: (theme?.defaultPreference ?? 'light') as ThemePreference,\n }\n}\n\nconst resolveFooterConfig = (footer: DocsFooterConfig | undefined) => {\n return {\n pagination: footer?.pagination ?? false,\n }\n}\n\nconst resolveBrandConfig = (brand: DocsBrandConfig | undefined, siteTitle: string): ResolvedDocsBrandConfig => {\n const text = brand?.text ?? siteTitle\n\n return {\n text,\n href: withSiteBaseUrl(brand?.href ?? '/'),\n logoLight: resolvePublicAssetUrl(brand?.logoLight),\n logoDark: resolvePublicAssetUrl(brand?.logoDark),\n logoAlt: brand?.logoAlt ?? `${text} logo`,\n }\n}\n\nconst resolveHeadConfig = (head: DocsHeadConfig | undefined) => {\n const fontPreset = head?.fontPreset ?? 'inter'\n const defaultFontStylesheetHref = fontPreset === 'inter' ? nivelAssetUrl('fonts/fonts-inter.css') : undefined\n const defaultFontPreloadHrefs =\n fontPreset === 'inter'\n ? [\n nivelAssetUrl('fonts/inter-v20-latin-regular.woff2'),\n nivelAssetUrl('fonts/inter-v20-latin-600.woff2'),\n nivelAssetUrl('fonts/inter-v20-latin-800.woff2'),\n ]\n : []\n\n return {\n faviconSvg: resolvePublicAssetUrl(head?.faviconSvg),\n faviconIco: resolvePublicAssetUrl(head?.faviconIco),\n appleTouchIcon: resolvePublicAssetUrl(head?.appleTouchIcon),\n fontPreset,\n fontStylesheetHref: head?.fontStylesheetHref ?? defaultFontStylesheetHref,\n fontPreloadHrefs: head?.fontPreloadHrefs ?? defaultFontPreloadHrefs,\n }\n}\n\nconst resolvePartnerAssetUrl = (value: string | undefined) => {\n if (!value) {\n return undefined\n }\n\n return resolvePublicAssetUrl(value)\n}\n\nconst resolvePartner = (partner: DocsPartnerConfig): ResolvedDocsPartnerConfig => {\n return {\n name: partner.name,\n href: withSiteBaseUrl(partner.href),\n logoLight: resolvePartnerAssetUrl(partner.logoLight) ?? partner.logoLight,\n logoDark: resolvePartnerAssetUrl(partner.logoDark),\n logoAlt: partner.logoAlt ?? `${partner.name} logo`,\n }\n}\n\nconst resolveSocialConfig = (social: DocsConfig['social']): ResolvedDocsSocialConfig => {\n // keep the order from the config\n return {\n ...social,\n }\n}\n\nconst resolvePartnersConfig = (partners: DocsConfig['partners']): ResolvedDocsPartnersConfig => {\n return {\n primary: (partners?.primary ?? []).map(resolvePartner),\n gold: (partners?.gold ?? []).map(resolvePartner),\n }\n}\n\nconst requireTrimmedString = (value: string, fieldName: string) => {\n const normalized = value.trim()\n\n if (!normalized) {\n throw new Error(`Docs algolia config \"${fieldName}\" must be a non-empty string.`)\n }\n\n return normalized\n}\n\nconst resolveAlgoliaConfig = (algolia: DocsAlgoliaConfig | undefined): ResolvedDocsAlgoliaConfig | null => {\n if (!algolia) {\n return null\n }\n\n return {\n appId: requireTrimmedString(algolia.appId, 'appId'),\n apiKey: requireTrimmedString(algolia.apiKey, 'apiKey'),\n indexName: requireTrimmedString(algolia.indexName, 'indexName'),\n fields: {\n href: algolia.fields?.href?.trim() || 'href',\n title: algolia.fields?.title?.trim() || 'title',\n excerpt: algolia.fields?.excerpt?.trim() || 'excerpt',\n sectionTitle: algolia.fields?.sectionTitle?.trim() || 'sectionTitle',\n },\n searchParams: algolia.searchParams ?? {},\n }\n}\n\nconst normalizeAliases = (aliases: string[] | undefined, slug: string) => {\n const normalizedAliases = new Set<string>()\n\n for (const alias of aliases ?? []) {\n const normalizedAlias = normalizeSlug(alias)\n if (!normalizedAlias || normalizedAlias === slug) {\n continue\n }\n\n normalizedAliases.add(normalizedAlias)\n }\n\n return [...normalizedAliases]\n}\n\nexport const resolveDocsConfig = (config: DocsConfig): ResolvedDocsConfig => {\n const normalizedBasePath = normalizeBasePath(config.basePath)\n const normalizedContentDir = normalizeContentDir(config.contentDir)\n\n const pageIds = new Set<string>()\n const pageSlugs = new Set<string>()\n const pageAliases = new Set<string>()\n const groupIds = new Set<string>()\n const sectionIds = new Set<string>()\n const pages: ResolvedDocsPage[] = []\n const navbarItems: ResolvedNavbarItem[] = []\n\n const resolveSidebarNodes = (nodes: DocsSidebarNode[], sectionId: string): ResolvedSidebarNode[] => {\n return nodes.map((node) => {\n if (node.kind === 'group') {\n if (groupIds.has(node.id)) {\n throw new Error(`Duplicate docs group id \"${node.id}\".`)\n }\n\n groupIds.add(node.id)\n\n return {\n kind: 'group',\n id: node.id,\n title: node.title,\n href: node.href ? resolveNavigationHref(node.href, `group \"${node.id}\" href`, normalizedBasePath) : undefined,\n showInNav: node.showInNav ?? true,\n collapsible: node.collapsible,\n items: resolveSidebarNodes(node.items, sectionId),\n }\n }\n\n if (node.kind !== 'page') {\n throw new Error(`Invalid docs sidebar node: ${JSON.stringify(node)}`)\n }\n\n const pageNode = node as DocsPageNode\n const slug = normalizeSlug(pageNode.slug)\n const aliases = normalizeAliases(pageNode.aliases, slug)\n\n if (!slug) {\n throw new Error(`Docs page \"${pageNode.id}\" must define a non-empty slug.`)\n }\n\n if (pageIds.has(pageNode.id)) {\n throw new Error(`Duplicate docs page id \"${pageNode.id}\".`)\n }\n\n if (pageSlugs.has(slug)) {\n throw new Error(`Duplicate docs page slug \"${slug}\".`)\n }\n\n for (const alias of aliases) {\n if (pageSlugs.has(alias) || pageAliases.has(alias)) {\n throw new Error(`Duplicate docs page alias \"${alias}\".`)\n }\n }\n\n pageIds.add(pageNode.id)\n pageSlugs.add(slug)\n for (const alias of aliases) {\n pageAliases.add(alias)\n }\n\n const href = joinDocsHref(normalizedBasePath, slug)\n const page: ResolvedDocsPage = {\n ...pageNode,\n slug,\n aliases,\n href,\n aliasHrefs: aliases.map((alias) => joinDocsHref(normalizedBasePath, alias)),\n tableOfContents: pageNode.tableOfContents ?? true,\n sectionId,\n documentTitle: `${pageNode.title} | ${config.siteTitle}`,\n source: normalizeSourcePath(pageNode.source),\n }\n pages.push(page)\n\n return {\n kind: 'page',\n id: pageNode.id,\n title: pageNode.title,\n navTitle: pageNode.navTitle ?? pageNode.title,\n href,\n showInNav: pageNode.showInNav ?? true,\n }\n })\n }\n\n const sections: ResolvedDocsSection[] = config.graph.items.map((section: DocsSectionNode) => {\n if (section.kind !== 'section') {\n throw new Error(`Top-level docs graph items must be sections. Received ${JSON.stringify(section)}`)\n }\n\n if (sectionIds.has(section.id)) {\n throw new Error(`Duplicate docs section id \"${section.id}\".`)\n }\n\n sectionIds.add(section.id)\n\n const items = resolveSidebarNodes(section.items, section.id)\n const firstVisibleHref = getSectionHref(items, true)\n const href = section.href\n ? resolveNavigationHref(section.href, `section \"${section.id}\" href`, normalizedBasePath)\n : (firstVisibleHref ?? getSectionHref(items))\n\n if (!href) {\n throw new Error(`Docs section \"${section.id}\" must contain at least one page.`)\n }\n\n const resolvedSection: ResolvedDocsSection = {\n id: section.id,\n title: section.title,\n navTitle: section.navTitle ?? section.title,\n href,\n items,\n }\n\n navbarItems.push({\n id: section.id,\n title: resolvedSection.navTitle,\n href: resolvedSection.href,\n })\n\n return resolvedSection\n })\n\n if (pages.length === 0) {\n throw new Error('Docs graph must contain at least one page.')\n }\n\n return {\n siteTitle: config.siteTitle,\n siteDescription: config.siteDescription ?? null,\n basePath: normalizedBasePath,\n contentDir: normalizedContentDir,\n theme: resolveThemeConfig(config.theme),\n footer: resolveFooterConfig(config.footer),\n brand: resolveBrandConfig(config.brand, config.siteTitle),\n head: resolveHeadConfig(config.head),\n partners: resolvePartnersConfig(config.partners),\n social: resolveSocialConfig(config.social),\n algolia: resolveAlgoliaConfig(config.algolia),\n pages,\n sections,\n navbarItems,\n }\n}\n\nexport const getResolvedPageById = (config: { pages: ResolvedDocsPage[] }, pageId: string) => {\n const page = config.pages.find((candidate) => candidate.id === pageId)\n if (!page) {\n throw new Error(`Unknown docs page id \"${pageId}\".`)\n }\n return page\n}\n\nexport const getResolvedSectionById = (\n config: { sections?: ResolvedDocsSection[]; sidebarSections?: ResolvedDocsSection[] },\n sectionId: string,\n) => {\n const sections = config.sections ?? config.sidebarSections ?? []\n return sections.find((section) => section.id === sectionId) ?? null\n}\n\nexport const getResolvedPageByPathname = (config: { pages: ResolvedDocsPage[] }, pathname: string) => {\n const normalizedPathname = normalizePathname(pathname)\n\n return (\n config.pages.find((page) => {\n if (normalizePathname(page.href) === normalizedPathname) {\n return true\n }\n\n return page.aliasHrefs.some((aliasHref) => normalizePathname(aliasHref) === normalizedPathname)\n }) ?? null\n )\n}\n\nexport const getActiveSectionByPathname = (\n config: { pages: ResolvedDocsPage[]; sections?: ResolvedDocsSection[]; sidebarSections?: ResolvedDocsSection[] },\n pathname: string,\n) => {\n const activePage = getResolvedPageByPathname(config, pathname)\n\n if (!activePage) {\n return null\n }\n\n return getResolvedSectionById(config, activePage.sectionId)\n}\n\nexport const isSamePagePathname = (page: Pick<ResolvedDocsPage, 'href' | 'aliasHrefs'>, pathname: string) => {\n const normalizedPathname = normalizePathname(pathname)\n\n if (normalizePathname(page.href) === normalizedPathname) {\n return true\n }\n\n return page.aliasHrefs.some((aliasHref) => normalizePathname(aliasHref) === normalizedPathname)\n}\n"],"mappings":"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","names":[]}