scramjet/src/shared/rewriters/worker.ts
2024-07-31 13:57:52 -04:00

37 lines
1,007 B
TypeScript

import { rewriteJs } from "./js";
const clientscripts = ["codecs", "shared", "client"];
export function rewriteWorkers(js: string | ArrayBuffer, origin?: URL) {
const dest = origin.searchParams.get("dest");
const type = origin.searchParams.get("type");
origin.search = "";
let str = "";
str += `self.$scramjet = {}; self.$scramjet.config = ${JSON.stringify(self.$scramjet.config)};\n`;
str += "";
if (type === "module") {
for (const script of clientscripts) {
console.log("Import", script, self.$scramjet);
str += `import "${self.$scramjet.config[script]}"\n`;
}
} else {
for (const script of clientscripts) {
str += `importScripts("${self.$scramjet.config[script]}");\n`;
}
}
let rewritten = rewriteJs(js, origin);
if (rewritten instanceof Uint8Array) {
rewritten = new TextDecoder().decode(rewritten);
}
str +=
"self.$scramjet.codec = self.$scramjet.codecs[self.$scramjet.config.codec];\n";
str += rewritten;
dbg.log("Rewrite", type, dest, str);
return str;
}