30 lines
868 B
TypeScript
30 lines
868 B
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import { isMarkdownPreferred, rewritePath } from 'fumadocs-core/negotiation';
|
|
import { docsContentRoute, docsRoute } from '@/lib/shared';
|
|
|
|
const { rewrite: rewriteDocs } = rewritePath(
|
|
`${docsRoute}{/*path}`,
|
|
`${docsContentRoute}{/*path}/content.md`,
|
|
);
|
|
const { rewrite: rewriteSuffix } = rewritePath(
|
|
`${docsRoute}{/*path}.mdx`,
|
|
`${docsContentRoute}{/*path}/content.md`,
|
|
);
|
|
|
|
export default function proxy(request: NextRequest) {
|
|
const result = rewriteSuffix(request.nextUrl.pathname);
|
|
if (result) {
|
|
return NextResponse.rewrite(new URL(result, request.nextUrl));
|
|
}
|
|
|
|
if (isMarkdownPreferred(request)) {
|
|
const result = rewriteDocs(request.nextUrl.pathname);
|
|
|
|
if (result) {
|
|
return NextResponse.rewrite(new URL(result, request.nextUrl));
|
|
}
|
|
}
|
|
|
|
return NextResponse.next();
|
|
}
|