--- import type { InferGetStaticPropsType } from 'astro' import RedirectLayout from '@layouts/RedirectLayout.astro' import { getVersionedDocsPath } from '@libs/path' import { trimLeadingAndTrailingSlashes } from '@libs/utils' import { replaceConfigInText } from '@libs/remark' import { aliasedDocsPages } from '@libs/content' import { getAliasedExamplesPages, getExampleNameFromPagePath } from '@libs/examples' export async function getStaticPaths() { function normalizeAliases(aliases: string | string[] | undefined): string[] { return aliases ? (Array.isArray(aliases) ? aliases : [aliases]) : [] } function getAliasStaticPath(alias: string, path: string) { return { params: { alias: trimLeadingAndTrailingSlashes(replaceConfigInText(alias)) }, props: { path } } } const staticPaths = [] const examplesPageModules = import.meta.glob('../assets/examples/**/*.astro', { eager: true }) const examplesPages = Object.entries(examplesPageModules).map(([file, module]) => { return { file, ...module } }) const aliasedExamplesPages = getAliasedExamplesPages(examplesPages) // Generate static paths for all examples pages with aliases. for (const aliasedExamplesPage of aliasedExamplesPages) { const aliases = normalizeAliases(aliasedExamplesPage.aliases) for (const alias of aliases) { staticPaths.push(getAliasStaticPath(alias, `/examples/${getExampleNameFromPagePath(aliasedExamplesPage.file)}`)) } } // Generate static paths for all docs pages with aliases. for (const aliasedDocsPage of aliasedDocsPages) { const aliases = normalizeAliases(aliasedDocsPage.data.aliases) for (const alias of aliases) { staticPaths.push(getAliasStaticPath(alias, aliasedDocsPage.slug)) } } return staticPaths.flat() } type Props = InferGetStaticPropsType const { path } = Astro.props ---