{"version":3,"file":"proxy.js","names":[],"sources":["esm/daemon/proxy.js"],"sourcesContent":["import * as http from \"node:http\";\nimport * as net from \"node:net\";\nfunction proxyHttpRequest(req, res, target) {\n  const headers = {\n    ...req.headers,\n    \"x-forwarded-host\": req.headers.host\n  };\n  if (req.socket.remoteAddress) {\n    headers[\"x-forwarded-for\"] = req.socket.remoteAddress;\n  }\n  const options = {\n    hostname: \"localhost\",\n    port: target.port,\n    path: req.url,\n    method: req.method,\n    headers\n  };\n  const proxyReq = http.request(options, (proxyRes) => {\n    res.writeHead(proxyRes.statusCode || 500, proxyRes.headers);\n    proxyRes.pipe(res);\n  });\n  proxyReq.on(\"error\", (err) => {\n    console.error(`[daemon] Proxy error to port ${target.port}:`, err.message);\n    if (!res.headersSent) {\n      res.writeHead(502);\n      res.end(`Bad Gateway: ${err.message}`);\n    }\n  });\n  req.pipe(proxyReq);\n}\nfunction proxyWebSocket(req, socket, head, target) {\n  const proxySocket = net.connect(target.port, \"localhost\", () => {\n    const reqLines = [\n      `${req.method} ${req.url} HTTP/1.1`,\n      ...Object.entries(req.headers).map(([k, v]) => {\n        if (Array.isArray(v)) return `${k}: ${v.join(\", \")}`;\n        return `${k}: ${v}`;\n      }),\n      \"\",\n      \"\"\n    ];\n    proxySocket.write(reqLines.join(\"\\r\\n\"));\n    if (head.length) {\n      proxySocket.write(head);\n    }\n    socket.pipe(proxySocket);\n    proxySocket.pipe(socket);\n  });\n  proxySocket.on(\"error\", (err) => {\n    console.error(`[daemon] WebSocket proxy error to port ${target.port}:`, err.message);\n    socket.end();\n  });\n  socket.on(\"error\", (err) => {\n    console.error(`[daemon] Client socket error:`, err.message);\n    proxySocket.end();\n  });\n  socket.on(\"close\", () => {\n    proxySocket.end();\n  });\n  proxySocket.on(\"close\", () => {\n    socket.end();\n  });\n}\nexport {\n  proxyHttpRequest,\n  proxyWebSocket\n};\n//# sourceMappingURL=proxy.js.map\n"],"mappings":";;;;AAEA,SAAS,iBAAiB,KAAK,KAAK,QAAQ;CAC1C,MAAM,UAAU;EACd,GAAG,IAAI;EACP,oBAAoB,IAAI,QAAQ;CAClC;CACA,IAAI,IAAI,OAAO,eAAe;EAC5B,QAAQ,qBAAqB,IAAI,OAAO;CAC1C;CACA,MAAM,UAAU;EACd,UAAU;EACV,MAAM,OAAO;EACb,MAAM,IAAI;EACV,QAAQ,IAAI;EACZ;CACF;CACA,MAAM,WAAW,KAAK,QAAQ,UAAU,aAAa;EACnD,IAAI,UAAU,SAAS,cAAc,KAAK,SAAS,OAAO;EAC1D,SAAS,KAAK,GAAG;CACnB,CAAC;CACD,SAAS,GAAG,UAAU,QAAQ;EAC5B,QAAQ,MAAM,gCAAgC,OAAO,KAAK,IAAI,IAAI,OAAO;EACzE,IAAI,CAAC,IAAI,aAAa;GACpB,IAAI,UAAU,GAAG;GACjB,IAAI,IAAI,gBAAgB,IAAI,SAAS;EACvC;CACF,CAAC;CACD,IAAI,KAAK,QAAQ;AACnB;AACA,SAAS,eAAe,KAAK,QAAQ,MAAM,QAAQ;CACjD,MAAM,cAAc,IAAI,QAAQ,OAAO,MAAM,mBAAmB;EAC9D,MAAM,WAAW;GACf,GAAG,IAAI,OAAO,GAAG,IAAI,IAAI;GACzB,GAAG,OAAO,QAAQ,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO;IAC7C,IAAI,MAAM,QAAQ,CAAC,GAAG,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,IAAI;IACjD,OAAO,GAAG,EAAE,IAAI;GAClB,CAAC;GACD;GACA;EACF;EACA,YAAY,MAAM,SAAS,KAAK,MAAM,CAAC;EACvC,IAAI,KAAK,QAAQ;GACf,YAAY,MAAM,IAAI;EACxB;EACA,OAAO,KAAK,WAAW;EACvB,YAAY,KAAK,MAAM;CACzB,CAAC;CACD,YAAY,GAAG,UAAU,QAAQ;EAC/B,QAAQ,MAAM,0CAA0C,OAAO,KAAK,IAAI,IAAI,OAAO;EACnF,OAAO,IAAI;CACb,CAAC;CACD,OAAO,GAAG,UAAU,QAAQ;EAC1B,QAAQ,MAAM,iCAAiC,IAAI,OAAO;EAC1D,YAAY,IAAI;CAClB,CAAC;CACD,OAAO,GAAG,eAAe;EACvB,YAAY,IAAI;CAClB,CAAC;CACD,YAAY,GAAG,eAAe;EAC5B,OAAO,IAAI;CACb,CAAC;AACH"}