UNPKG

starlight-auto-drafts

Version:

Starlight plugin to tweak draft pages default behavior and automatically remove sidebar links to draft pages in production mode.

45 lines (37 loc) 1.32 kB
import type { AstroConfig } from 'astro' import type { DraftIds } from './content' import { stripLeadingAndTrailingSlash } from './path' import type { StarlightUserConfig } from './starlight' export async function filterDrafts( astroConfig: AstroConfig, starlightConfig: StarlightUserConfig, sidebar: StarlightSidebarUserConfig, draftIds: DraftIds, ): Promise<[sidebar: StarlightSidebarUserConfig, filteredItems: string[]]> { const result: StarlightSidebarUserConfig = [] const filteredItems: string[] = [] let slug: string | undefined for (const item of sidebar) { if (typeof item === 'string') { slug = item } else if ('slug' in item) { slug = item.slug } else if ('link' in item) { slug = stripLeadingAndTrailingSlash(item.link) } else if ('autogenerate' in item) { slug = undefined } else { const [items, groupFilteredItems] = await filterDrafts(astroConfig, starlightConfig, item.items, draftIds) filteredItems.push(...groupFilteredItems) result.push({ ...item, items }) continue } if (slug !== undefined && draftIds.has(slug)) { filteredItems.push(slug) continue } result.push(item) } return [result, filteredItems] } type StarlightSidebarUserConfig = NonNullable<StarlightUserConfig['sidebar']>