import { createServer } from "node:http"; import { createHash } from "node:crypto"; import { readFile, writeFile, mkdir } from "node:fs/promises"; import { fileURLToPath } from "node:url"; const output = new URL("../build/embedded-media/browser-variants-result.json", import.meta.url); const worker = await readFile(new URL("./encoded-variants-worker.js", import.meta.url)); const page = `Encoded variants probe
Ready
`; const server = createServer(async (request, response) => { if (request.url === "/worker.js") { response.writeHead(200, { "Content-Type": "text/javascript" }).end(worker); } else if (request.url === "/result" && request.method === "POST") { const chunks = []; for await (const chunk of request) chunks.push(chunk); const result = JSON.parse(Buffer.concat(chunks).toString()); result.workerSha256 = createHash("sha256").update(worker).digest("hex"); await mkdir(new URL("./", output), { recursive: true }); await writeFile(output, `${JSON.stringify(result, null, 2)}\n`); console.log(`Saved ${result.results.length} runs to ${fileURLToPath(output)}`); response.end("saved"); } else { response.writeHead(200, { "Content-Type": "text/html; charset=utf-8" }).end(page); } }); server.listen(0, "127.0.0.1", () => console.log(`http://127.0.0.1:${server.address().port}`)); process.on("SIGINT", () => server.close());