Files
zerobyte/app/routes/api.$.ts
Nico 429b69ec92 fix: show back warnings logs and surface in UI (#677)
fix: show back warnings logs and surface in UI

#544

chore: fix dev login issue
2026-03-18 20:21:14 +01:00

57 lines
1.2 KiB
TypeScript

import { createFileRoute } from "@tanstack/react-router";
import { createApp } from "~/server/app";
import { config } from "~/server/core/config";
const app = createApp();
type NodeRuntimeRequest = Request & {
ip?: string;
runtime?: {
node?: {
res?: { setTimeout: (timeoutMs: number) => void };
};
};
};
type RequestInitWithDuplex = RequestInit & {
duplex?: "half";
};
export const prepareApiRequest = (request: NodeRuntimeRequest, timeoutMs: number) => {
request.runtime?.node?.res?.setTimeout(timeoutMs);
if (config.trustProxy && request.headers.has("x-forwarded-for")) {
return request.clone();
}
const remoteAddress = request.ip;
const headers = new Headers(request.headers);
if (remoteAddress) {
headers.set("x-forwarded-for", remoteAddress);
} else {
headers.delete("x-forwarded-for");
}
const init: RequestInitWithDuplex = {
method: request.method,
headers,
body: request.body,
signal: request.signal,
duplex: request.body ? "half" : undefined,
};
return new Request(request.url, init);
};
const handle = ({ request }: { request: Request }) =>
app.fetch(prepareApiRequest(request, config.serverIdleTimeout * 1000));
export const Route = createFileRoute("/api/$")({
server: {
handlers: {
ANY: handle,
},
},
});