mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 09:25:06 +03:00
The Docs sitemap lists a `/reference/<sdk>/undefined` URL for every reference category header, on both latest and versioned paths (for example `/reference/kotlin/v1/undefined`). `generateReferencePages` turns every flattened section into a link, and category headers never carry a slug. Search engines get a 404 for the `api/undefined` entries and a soft 404 for the SDK ones. I filtered the sections with the same predicate the reference static params already use (`type !== 'category' && !!slug` in `Reference.utils.ts`). I ran the generator locally before and after the change: the only entries it removes are the `/undefined` ones (about 4% of the sitemap), and it adds none. **Note:** `getFlattenedSections` stays unchanged because the crawler route and the reference pages share it. ## To test Tested on Vercel preview: - [x] Fetch `/docs/sitemap.xml` on the Docs preview and search for `/undefined</loc>`: expect no matches - [x] In the same file, search for `/docs/reference/javascript/select` and `/docs/reference/kotlin/v1/select`: expect both still listed ## Linear - fixes GROWTH-1310 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Reference pages no longer generate links for category sections or sections without a slug. Existing link paths and priorities remain unchanged. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
45 lines
1.5 KiB
TypeScript
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.type !== 'category' && !!section.slug)
|
|
.map((section) => ({
|
|
link: isLatestVersion
|
|
? `reference/${libPath}/${section.slug}`
|
|
: `reference/${libPath}/${version}/${section.slug}`,
|
|
priority: 0.8,
|
|
})) ?? []
|
|
)
|
|
})
|
|
)
|
|
).flat()
|
|
}
|