import { decodeWorkerRequest, readWorkerRequestText, writeWorkerMessage } from "../../src/worker.ts"; const req = decodeWorkerRequest(await readWorkerRequestText(4096)); const send = (type: "result", result: unknown) => writeWorkerMessage({ id: req.id, type, result }, 4096); switch (req.task) { case "normal": writeWorkerMessage({ id: req.id, type: "progress", value: { bytes: 2 } }, 4096); send("result", req.input); break; case "large": writeWorkerMessage({ id: req.id, type: "result", result: "中文".repeat(200_000) }, 2 * 1024 * 1024); break; case "wrong-id": writeWorkerMessage({ id: "other", type: "result", result: true }, 4096); break; case "truncated": process.stdout.write('{"id":"1"'); break; case "oversized": process.stdout.write("x".repeat(8192)); break; case "after-result": send("result", true); send("result", false); break; case "failed-exit": send("result", true); process.exitCode = 1; break; case "hang": setInterval(() => {}, 1000); break; case "stderr": process.stderr.write("x".repeat(65536)); send("result", true); break; }