Veer15's picture
chore: deploy distributed systems debug environment
b641d3d verified
Raw
History Blame Contribute Delete
2.06 kB
import { existsSync } from "node:fs";
type AuthConfig = {
delay_ms: number;
};
const MESH_ROOT = process.env.MESH_ROOT || "/mesh";
const CONFIG_PATH = `${MESH_ROOT}/auth/config.json`;
const CURRENT_TASK_PATH = "/tmp/current_task";
const PORT = 3001;
let config: AuthConfig;
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
const readJson = async <T>(path: string, fallback: T): Promise<T> => {
try {
return (await Bun.file(path).json()) as T;
} catch {
return fallback;
}
};
const currentPattern = async (): Promise<string> => {
if (!existsSync(CURRENT_TASK_PATH)) return "unknown";
try {
return (await Bun.file(CURRENT_TASK_PATH).text()).trim() || "unknown";
} catch {
return "unknown";
}
};
const log = async (event: string, level: "INFO" | "WARN" | "ERROR", details: Record<string, unknown> = {}) => {
console.log(
JSON.stringify({
ts: new Date().toISOString(),
level,
service: "auth",
event,
pattern: await currentPattern(),
...details,
}),
);
};
const loadConfig = async () => {
config = await readJson<AuthConfig>(CONFIG_PATH, { delay_ms: 200 });
};
await loadConfig();
process.on("SIGHUP", async () => {
await loadConfig();
await log("config_reloaded", "INFO", { config });
});
Bun.serve({
port: PORT,
async fetch(req) {
const url = new URL(req.url);
if (req.method === "GET" && url.pathname === "/health") {
return Response.json({ status: "ok", delay_ms: config.delay_ms });
}
if (req.method === "POST" && url.pathname === "/verify") {
const started = Date.now();
await log("verify_start", "INFO", { delay_ms: config.delay_ms });
await sleep(Math.max(0, config.delay_ms));
const elapsed = Date.now() - started;
await log("verify_complete", "INFO", {
delay_ms: config.delay_ms,
elapsed_ms: elapsed,
});
return Response.json({ verified: true, elapsed_ms: elapsed });
}
return new Response("not found", { status: 404 });
},
});