32 lines
1017 B
JavaScript
Raw Normal View History

2025-09-05 14:59:21 +08:00
import "#nitro-internal-pollyfills";
import { useNitroApp } from "nitropack/runtime";
import wsAdapter from "crossws/adapters/deno";
const nitroApp = useNitroApp();
const ws = import.meta._websocket ? wsAdapter(nitroApp.h3App.websocket) : void 0;
Deno.serve((request, info) => {
if (import.meta._websocket && request.headers.get("upgrade") === "websocket") {
return ws.handleUpgrade(request, info);
}
return handleRequest(request, info);
});
async function handleRequest(request, info) {
const url = new URL(request.url);
const headers = new Headers(request.headers);
headers.append("x-forwarded-for", info.remoteAddr.hostname);
if (!headers.has("x-forwarded-proto")) {
headers.set("x-forwarded-proto", "https");
}
let body;
if (request.body) {
body = await request.arrayBuffer();
}
return nitroApp.localFetch(url.pathname + url.search, {
host: url.hostname,
protocol: url.protocol,
headers,
method: request.method,
redirect: request.redirect,
body
});
}