const INTERNAL_API_BASE_URL = (process.env.INTERNAL_API_BASE_URL || "http://127.0.0.1:8000").replace( /\/$/, "", ); export const runtime = "nodejs"; export const dynamic = "force-dynamic"; type RouteContext = { params: Promise<{ path?: string[]; }>; }; async function proxy(request: Request, context: RouteContext) { const { path = [] } = await context.params; const sourceUrl = new URL(request.url); const targetUrl = new URL(`/api/${path.join("/")}${sourceUrl.search}`, INTERNAL_API_BASE_URL); const headers = new Headers(request.headers); headers.delete("host"); headers.delete("connection"); headers.delete("content-length"); const body = request.method === "GET" || request.method === "HEAD" ? undefined : await request.arrayBuffer(); const response = await fetch(targetUrl, { method: request.method, headers, body, redirect: "manual", }); const responseHeaders = new Headers(response.headers); responseHeaders.delete("content-encoding"); responseHeaders.delete("content-length"); return new Response(response.body, { status: response.status, statusText: response.statusText, headers: responseHeaders, }); } export function GET(request: Request, context: RouteContext) { return proxy(request, context); } export function POST(request: Request, context: RouteContext) { return proxy(request, context); } export function PUT(request: Request, context: RouteContext) { return proxy(request, context); } export function PATCH(request: Request, context: RouteContext) { return proxy(request, context); } export function DELETE(request: Request, context: RouteContext) { return proxy(request, context); } export function HEAD(request: Request, context: RouteContext) { return proxy(request, context); }