threads 🚀🚀🚀

This commit is contained in:
velzie 2024-07-16 16:54:39 -04:00
parent b06605dc52
commit d433f67d67
No known key found for this signature in database
GPG key ID: 048413F95F0DDE1F
8 changed files with 179 additions and 26 deletions

46
src/thread/thread.ts Normal file
View file

@ -0,0 +1,46 @@
import { rewriteJs } from "../shared/rewriters/js";
// @ts-ignore
onconnect = (e) => {
const port = e.ports[0];
console.log("thread: connected to port", port)
port.postMessage("ready");
let syncToken = 0;
port.onmessage = ({ data }) => {
console.log("thread: received message", data)
const [task, ...args] = data;
let token = syncToken++;
try {
let res = tasks[task](...args);
console.log("thread: task", task, "completed with token", token)
port.postMessage({
token,
result: res
})
} catch (e) {
port.postMessage({
token,
error: e.message
})
}
port.postMessage("idle");
}
}
const tasks = {
"rewriteJs": taskRewriteJs,
}
function taskRewriteJs(js: ArrayBuffer, origin: string): string {
return rewriteJs(js, new URL(origin));
}