Files
supabase/apps/docs/internals/files/reference-lib.ts
Ali Waseem 0212c52606 fix(docs): split Management API reference into per-endpoint pages
The API reference rendered all ~172 endpoints on a single page regardless
of URL, so its pre-rendered size grew with the entire API surface. This
tripped Vercel's ISR page-size cap (INC-703) once the underlying OpenAPI
spec grew. Each endpoint now gets its own statically-generated page at its
existing slug URL, bounding page size to one endpoint instead of all of
them. Client SDK, CLI, and self-hosting reference pages are unaffected.
2026-07-31 11:36:00 -06:00

45 lines
1.5 KiB
TypeScript

import { REFERENCES } from '../../content/navigation.references'
import { getFlattenedSections } from '../../features/docs/Reference.generated.singleton'
export async function generateReferencePages() {
return (
await Promise.all(
Object.keys(REFERENCES)
.filter((key) => REFERENCES[key].enabled !== false)
.flatMap((key) => {
if (REFERENCES[key].versions.length === 0) {
return [
{
sdkId: REFERENCES[key].libPath,
version: 'latest',
isLatestVersion: true,
libPath: REFERENCES[key].libPath,
},
]
}
return REFERENCES[key].versions.map((version) => {
return {
sdkId: key,
version: version,
isLatestVersion: version === REFERENCES[key].versions[0],
libPath: REFERENCES[key].libPath,
}
})
})
.map(async ({ sdkId, version, libPath, isLatestVersion }) => {
const flattenedSections = await getFlattenedSections(sdkId, version)
return (
flattenedSections
?.filter((section) => !!section.slug)
.map((section) => ({
link: isLatestVersion
? `reference/${libPath}/${section.slug}`
: `reference/${libPath}/${version}/${section.slug}`,
priority: 0.8,
})) ?? []
)
})
)
).flat()
}