Files
Charis 33ede6f893 refactor(docs): convert management api reference to app router (#29146)
* chore(docs): preprocess management api specs

In preparation for App Router migration of Management API reference,
preprocess the Management API spec (both OpenAPI spec and common
sections), and write the processed data to file, in the style of the
other pregenerated reference data.

Details:

- Split reference section generation into separate functions for SDK, CLI, and API
- Add new function to generate API reference sections from OpenAPI spec
- Introduce mapEndpointsById function to create a map of API endpoints
- Update run function to execute all reference generation tasks in parallel
- Import necessary new dependencies and types

* refactor(docs): migrate management api reference to app router

* fix(docs): statically build management api reference page

* fix(docs): minor styling issues
2024-09-11 13:53:45 -04:00

51 lines
1.7 KiB
TypeScript

import { redirect } from 'next/navigation'
import { REFERENCES } from '~/content/navigation.references'
import { ApiReferencePage } from '~/features/docs/Reference.apiPage'
import { CliReferencePage } from '~/features/docs/Reference.cliPage'
import { ClientSdkReferencePage } from '~/features/docs/Reference.sdkPage'
import {
generateReferenceMetadata,
generateReferenceStaticParams,
parseReferencePath,
redirectNonexistentReferenceSection,
} from '~/features/docs/Reference.utils'
import { notFoundLink } from '~/features/recommendations/NotFound.utils'
export default async function ReferencePage({
params: { slug },
}: {
params: { slug: Array<string> }
}) {
if (!Object.keys(REFERENCES).includes(slug[0])) {
redirect(notFoundLink(slug.join('/')))
}
const parsedPath = parseReferencePath(slug)
const isClientSdkReference = parsedPath.__type === 'clientSdk'
const isCliReference = parsedPath.__type === 'cli'
const isApiReference = parsedPath.__type === 'api'
if (isClientSdkReference) {
const { sdkId, maybeVersion, path } = parsedPath
const sdkData = REFERENCES[sdkId]
const latestVersion = sdkData.versions[0]
const version = maybeVersion ?? latestVersion
await redirectNonexistentReferenceSection(sdkId, version, path, version === latestVersion)
return <ClientSdkReferencePage sdkId={sdkId} libVersion={version} />
} else if (isCliReference) {
return <CliReferencePage />
} else if (isApiReference) {
return <ApiReferencePage />
} else {
// Unimplemented -- eventually API
redirect(notFoundLink(slug.join('/')))
}
}
export const generateStaticParams = generateReferenceStaticParams
export const generateMetadata = generateReferenceMetadata