diff --git a/src/client/shared/import.ts b/src/client/shared/import.ts index bc24862..38fc4d3 100644 --- a/src/client/shared/import.ts +++ b/src/client/shared/import.ts @@ -5,9 +5,7 @@ export default function (client, self) { return function (url) { const resolved = new URL(url, base).href; - return function () {}.constructor( - `return import("${encodeUrl(resolved)}")` - )(); + return Function(`return import("${encodeUrl(resolved)}")`)(); }; }; } diff --git a/src/codecs/index.ts b/src/codecs/index.ts index 9fa2a56..a1ea776 100644 --- a/src/codecs/index.ts +++ b/src/codecs/index.ts @@ -77,7 +77,7 @@ const base64 = { }, }; -if (!self.$scramjet) { +if (typeof self.$scramjet === "undefined") { //@ts-expect-error really dumb workaround self.$scramjet = {}; } diff --git a/src/shared/index.ts b/src/shared/index.ts index 90b9b42..8282f82 100644 --- a/src/shared/index.ts +++ b/src/shared/index.ts @@ -8,10 +8,6 @@ import { isScramjetFile } from "./rewriters/html"; import { BareClient } from "@mercuryworkshop/bare-mux"; import { parseDomain } from "parse-domain"; -if (!self.$scramjet) { - //@ts-expect-error really dumb workaround - self.$scramjet = {}; -} self.$scramjet.shared = { util: { isScramjetFile, diff --git a/src/shared/rewriters/worker.ts b/src/shared/rewriters/worker.ts index 47f6a20..d1ca84e 100644 --- a/src/shared/rewriters/worker.ts +++ b/src/shared/rewriters/worker.ts @@ -2,13 +2,15 @@ import { rewriteJs } from "./js"; const clientscripts = ["codecs", "shared", "client"]; export function rewriteWorkers(js: string | ArrayBuffer, origin?: URL) { - let dest = origin.searchParams.get("dest"); - let type = origin.searchParams.get("type"); + 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); @@ -24,9 +26,10 @@ export function rewriteWorkers(js: string | ArrayBuffer, origin?: URL) { if (rewritten instanceof Uint8Array) { rewritten = new TextDecoder().decode(rewritten); } - str += `self.$scramjet.config = ${JSON.stringify(self.$scramjet.config)}; - self.$scramjet.codec = self.$scramjet.codecs[self.$scramjet.config.codec];\n`; - str += "\n" + rewritten; + + str += + "self.$scramjet.codec = self.$scramjet.codecs[self.$scramjet.config.codec];\n"; + str += rewritten; dbg.log("Rewrite", type, dest, str);