rudus/pkg/worker.js

40 lines
873 B
JavaScript
Raw Normal View History

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