Files
chess-engine/chess-worker.js

27 lines
653 B
JavaScript

let exports;
async function init() {
const resp = await fetch("./chess.wasm");
if (!resp.ok) {
throw new Error("fetch wasm failed ${resp.status} ${resp.statusText}");
}
const { instance } =
await WebAssembly.instantiateStreaming(resp, {});
exports = instance.exports;
}
await init();
self.postMessage({ type: "ready" });
self.onmessage = (e) => {
const { id, method, args = [] } = e.data;
try {
const value = exports[method](...args);
self.postMessage({ id, ok: true, value });
} catch (err) {
self.postMessage({ id, ok: false, error: String(err?.message ?? err) });
}
};