#!/usr/bin/env node import { healthPayload, listen, proxyHttpRequest, resolveHostPort, sendJson } from "../../internal/dev-entrypoint/http.mjs"; import { createServer } from "node:http"; const serviceId = "hwlab-edge-proxy"; const upstream = process.env.HWLAB_EDGE_UPSTREAM || "http://hwlab-cloud-api.hwlab-dev.svc.cluster.local:6667"; const { host, port } = resolveHostPort({ listenEnv: "HWLAB_EDGE_LISTEN", hostEnv: "HWLAB_EDGE_HOST", portEnv: "HWLAB_EDGE_PORT", fallbackPort: 6667 }); function proxyDetails() { return { upstream, mode: "dev-edge-proxy" }; } const server = createServer((request, response) => { const url = new URL(request.url || "/", "http://hwlab-edge-proxy.local"); if (request.method === "GET" && url.pathname === "/health/live") { proxyHttpRequest({ request, response, upstream }); return; } if (request.method === "GET" && (url.pathname === "/health" || url.pathname === "/edge/health")) { sendJson(response, 200, healthPayload({ serviceId, role: "public-dev-ingress", details: proxyDetails() })); return; } if (request.method === "GET" && (url.pathname === "/status" || url.pathname === "/routes")) { sendJson(response, 200, { serviceId, environment: "dev", status: "ok", upstream, routes: [ { pathPrefix: "/", upstream, mode: "http-proxy" } ] }); return; } if (request.method === "GET" && url.pathname === "/help") { sendJson(response, 200, { serviceId, commands: ["GET /health", "GET /edge/health", "GET /health/live", "GET /status", "GET /routes"] }); return; } proxyHttpRequest({ request, response, upstream }); }); listen(server, { serviceId, host, port });