<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>dynoxide engine browser test harness</title>
</head>
<body>
<script type="module">
import { EngineClient, EngineError } from "/js/engine-client.js";
globalThis.dynoxide = {
EngineClient,
EngineError,
makeClient: (opts = {}) =>
new EngineClient({ workerUrl: "/dist/dynoxide-worker.js", ...opts }),
makeRawWorker: () => {
const worker = new Worker("/dist/dynoxide-worker.js", { type: "module" });
let seq = 0;
const call = (op, payload) =>
new Promise((resolve, reject) => {
const id = `r${seq++}`;
const onMsg = (event) => {
if (event.data.id !== id) return;
worker.removeEventListener("message", onMsg);
event.data.ok
? resolve(event.data.result)
: reject(new Error(event.data.error));
};
worker.addEventListener("message", onMsg);
worker.postMessage({ id, op, payload });
});
return {
open: (name, ephemeral = false) =>
call("open", { name, ephemeral }).then(JSON.parse),
execute: (op, request) => call("execute", { op, request }).then(JSON.parse),
call,
terminate: () => worker.terminate(),
};
},
};
globalThis.__HARNESS_READY__ = true;
</script>
</body>
</html>