Files
UHD_Media_Tool/packages/runtime/test/fixtures/worker.ts
T

38 lines
1.1 KiB
TypeScript

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;
}