UNPKG

starlight-auto-drafts

Version:

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

40 lines (32 loc) 1.17 kB
import type { ViteUserConfig } from 'astro' import type { StarlightAutoDraftsConfig } from './config' import type { DraftIds } from './content' export function vitePluginStarlightAutoDrafts(config: StarlightAutoDraftsConfig, draftIds: DraftIds): VitePlugin { const modules = { 'virtual:starlight-auto-drafts/context': `export default { config: ${JSON.stringify(config)}, draftIds: new Set(${JSON.stringify([...draftIds])}), }`, } const moduleResolutionMap = Object.fromEntries( (Object.keys(modules) as (keyof typeof modules)[]).map((key) => [resolveVirtualModuleId(key), key]), ) return { name: 'vite-plugin-starlight-auto-drafts', load(id) { const moduleId = moduleResolutionMap[id] return moduleId ? modules[moduleId] : undefined }, resolveId(id) { return id in modules ? resolveVirtualModuleId(id) : undefined }, } } function resolveVirtualModuleId<TModuleId extends string>(id: TModuleId): `\0${TModuleId}` { return `\0${id}` } export interface StarlightAutoDraftsContext { config: StarlightAutoDraftsConfig draftIds: DraftIds } type VitePlugin = NonNullable<ViteUserConfig['plugins']>[number]