mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-16 07:30:02 -04:00
37 lines
1,007 B
TypeScript
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;
|
|
}
|