rudus/pkg/worker.js

40 lines
873 B
JavaScript

import init, {ludus} from "./rudus.js";
export function io (out) {
if (out.length > 0) postMessage(out)
return new Promise((resolve, _) => {
onmessage = (e) => {
// console.log("Worker: from Ludus:", e.data)
resolve(JSON.stringify(e.data))
}
})
}
let loaded_wasm = false
async function run(e) {
if (!loaded_wasm) {
await init()
console.log("Worker: Ludus has been initialized.")
loaded_wasm = true
}
let msgs = e.data
for (const msg of msgs) {
if (msg.verb === "run" && typeof msg.data === 'string') {
// console.log("running ludus!")
onmessage = () => {}
console.log("Worker: Beginning new Ludus run.")
await ludus(msg.data)
onmessage = run
} else {
console.log("Worker: Did not get valid startup message. Instead got:")
console.log(e.data)
}
}
}
onmessage = run