UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

61 lines (60 loc) 1.8 kB
import * as http from "node:http"; import * as net from "node:net"; function proxyHttpRequest(req, res, target) { const headers = { ...req.headers, "x-forwarded-host": req.headers.host }; if (req.socket.remoteAddress) { headers["x-forwarded-for"] = req.socket.remoteAddress; } const options = { hostname: "localhost", port: target.port, path: req.url, method: req.method, headers }; const proxyReq = http.request(options, proxyRes => { res.writeHead(proxyRes.statusCode || 500, proxyRes.headers); proxyRes.pipe(res); }); proxyReq.on("error", err => { console.error(`[daemon] Proxy error to port ${target.port}:`, err.message); if (!res.headersSent) { res.writeHead(502); res.end(`Bad Gateway: ${err.message}`); } }); req.pipe(proxyReq); } function proxyWebSocket(req, socket, head, target) { const proxySocket = net.connect(target.port, "localhost", () => { const reqLines = [`${req.method} ${req.url} HTTP/1.1`, ...Object.entries(req.headers).map(([k, v]) => { if (Array.isArray(v)) return `${k}: ${v.join(", ")}`; return `${k}: ${v}`; }), "", ""]; proxySocket.write(reqLines.join("\r\n")); if (head.length) { proxySocket.write(head); } socket.pipe(proxySocket); proxySocket.pipe(socket); }); proxySocket.on("error", err => { console.error(`[daemon] WebSocket proxy error to port ${target.port}:`, err.message); socket.end(); }); socket.on("error", err => { console.error(`[daemon] Client socket error:`, err.message); proxySocket.end(); }); socket.on("close", () => { proxySocket.end(); }); proxySocket.on("close", () => { socket.end(); }); } export { proxyHttpRequest, proxyWebSocket }; //# sourceMappingURL=proxy.mjs.map