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()
+}