import { NextResponse } from 'next/server'; import type { NextRequest } from 'next/server'; export function middleware(request: NextRequest) { const { pathname } = request.nextUrl; if (pathname.startsWith('/api/auth')) { return NextResponse.next(); } if (pathname.startsWith('/api/admin')) { return NextResponse.next(); } if (pathname.startsWith('/api/content')) { return NextResponse.next(); } const legacyApiPaths = [ '/api/config', '/api/health', ]; const isLegacyApi = legacyApiPaths.some(path => pathname.startsWith(path) && !pathname.includes('/v1/') && !pathname.includes('/v2/') ); if (isLegacyApi) { const url = request.nextUrl.clone(); url.pathname = pathname.replace('/api/', '/api/v1/'); return NextResponse.rewrite(url); } if (pathname.startsWith('/api/docs') || pathname === '/api-docs') { const response = NextResponse.next(); response.headers.set('X-API-Version', 'none'); return response; } const versionMatch = pathname.match(/\/api\/v(\d+)\//); if (versionMatch) { const response = NextResponse.next(); response.headers.set('X-API-Version', `v${versionMatch[1]}`); return response; } return NextResponse.next(); } export const config = { matcher: '/api/:path*', };