From 1e242b16cf101b673a0416f693e44d89f970f108 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Sun, 11 Dec 2022 10:30:27 -0330 Subject: [PATCH] Add crawler slugs for all libs --- apps/docs/middleware.ts | 14 ++++++-- .../reference/dart/crawlers/[...slug].tsx | 34 +++++++++++++++++++ .../reference/dart/v0/crawlers/[...slug].tsx | 34 +++++++++++++++++++ .../javascript/v1/crawlers/[...slug].tsx | 34 +++++++++++++++++++ 4 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 apps/docs/pages/reference/dart/crawlers/[...slug].tsx create mode 100644 apps/docs/pages/reference/dart/v0/crawlers/[...slug].tsx create mode 100644 apps/docs/pages/reference/javascript/v1/crawlers/[...slug].tsx diff --git a/apps/docs/middleware.ts b/apps/docs/middleware.ts index a876f7652d9..d13ce4a442f 100644 --- a/apps/docs/middleware.ts +++ b/apps/docs/middleware.ts @@ -2,17 +2,27 @@ import { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' import isbot from 'isbot' -// This function can be marked `async` if using `await` inside export function middleware(request: NextRequest) { const specs = ['javascript', 'dart'] + let version = '' + if (request.url.includes('/v1/')) { + version = 'v1' + } + if (request.url.includes('/v0/')) { + version = 'v0' + } + if (isbot(request.headers.get('user-agent'))) { for (const lib of specs) { if (request.url.includes(`reference/${lib}`)) { const requestSlug = request.url.split('/').pop() return NextResponse.rewrite( - new URL(`/docs/reference/${lib}/crawlers/${requestSlug}`, request.url).toString() + new URL( + `/docs/reference/${lib}/${version ? version + '/' : ''}crawlers/${requestSlug}`, + request.url + ).toString() ) } } diff --git a/apps/docs/pages/reference/dart/crawlers/[...slug].tsx b/apps/docs/pages/reference/dart/crawlers/[...slug].tsx new file mode 100644 index 00000000000..afdc202a05f --- /dev/null +++ b/apps/docs/pages/reference/dart/crawlers/[...slug].tsx @@ -0,0 +1,34 @@ +import clientLibsCommonSections from '~/../../spec/common-client-libs-sections.json' +import typeSpec from '~/../../spec/enrichments/tsdoc_v2/combined.json' +// @ts-expect-error +import spec from '~/../../spec/supabase_dart_v1.yml' assert { type: 'yml' } +import RefSectionHandler from '~/components/reference/RefSectionHandler' +import { flattenSections } from '~/lib/helpers' +import handleRefGetStaticPaths from '~/lib/mdx/handleRefStaticPaths' +import handleRefStaticProps from '~/lib/mdx/handleRefStaticProps' +import { useRouter } from 'next/router' + +const sections = flattenSections(clientLibsCommonSections) + +export default function JSReference(props) { + const router = useRouter() + const slug = router.query.slug[0] + const filteredSection = sections.filter((section) => section.id === slug) + + return ( + + ) +} + +export async function getStaticProps({ params }: { params: { slug: string[] } }) { + return handleRefStaticProps(sections, params, '/dart', '/dart') +} + +export function getStaticPaths() { + return handleRefGetStaticPaths() +} diff --git a/apps/docs/pages/reference/dart/v0/crawlers/[...slug].tsx b/apps/docs/pages/reference/dart/v0/crawlers/[...slug].tsx new file mode 100644 index 00000000000..3ef20b302fe --- /dev/null +++ b/apps/docs/pages/reference/dart/v0/crawlers/[...slug].tsx @@ -0,0 +1,34 @@ +import clientLibsCommonSections from '~/../../spec/common-client-libs-sections.json' +import typeSpec from '~/../../spec/enrichments/tsdoc_v2/combined.json' +// @ts-expect-error +import spec from '~/../../spec/supabase_dart_v0.yml' assert { type: 'yml' } +import RefSectionHandler from '~/components/reference/RefSectionHandler' +import { flattenSections } from '~/lib/helpers' +import handleRefGetStaticPaths from '~/lib/mdx/handleRefStaticPaths' +import handleRefStaticProps from '~/lib/mdx/handleRefStaticProps' +import { useRouter } from 'next/router' + +const sections = flattenSections(clientLibsCommonSections) + +export default function JSReference(props) { + const router = useRouter() + const slug = router.query.slug[0] + const filteredSection = sections.filter((section) => section.id === slug) + + return ( + + ) +} + +export async function getStaticProps({ params }: { params: { slug: string[] } }) { + return handleRefStaticProps(sections, params, '/dart/v0', '/dart/v0') +} + +export function getStaticPaths() { + return handleRefGetStaticPaths() +} diff --git a/apps/docs/pages/reference/javascript/v1/crawlers/[...slug].tsx b/apps/docs/pages/reference/javascript/v1/crawlers/[...slug].tsx new file mode 100644 index 00000000000..d1aa3ec92ee --- /dev/null +++ b/apps/docs/pages/reference/javascript/v1/crawlers/[...slug].tsx @@ -0,0 +1,34 @@ +import clientLibsCommonSections from '~/../../spec/common-client-libs-sections.json' +import typeSpec from '~/../../spec/enrichments/tsdoc_v2/combined.json' +// @ts-expect-error +import spec from '~/../../spec/supabase_js_v1.yml' assert { type: 'yml' } +import RefSectionHandler from '~/components/reference/RefSectionHandler' +import { flattenSections } from '~/lib/helpers' +import handleRefGetStaticPaths from '~/lib/mdx/handleRefStaticPaths' +import handleRefStaticProps from '~/lib/mdx/handleRefStaticProps' +import { useRouter } from 'next/router' + +const sections = flattenSections(clientLibsCommonSections) + +export default function JSReference(props) { + const router = useRouter() + const slug = router.query.slug[0] + const filteredSection = sections.filter((section) => section.id === slug) + + return ( + + ) +} + +export async function getStaticProps({ params }: { params: { slug: string[] } }) { + return handleRefStaticProps(sections, params, '/javascript/v1', '/javascript/v1') +} + +export function getStaticPaths() { + return handleRefGetStaticPaths() +}