do some more worker rewriting

This commit is contained in:
Percs 2024-07-13 21:00:54 -05:00
parent a25e71a6fd
commit 4ce4226afa
4 changed files with 33 additions and 2 deletions

View file

@ -10,4 +10,22 @@ Worker = new Proxy(Worker, {
return Reflect.construct(target, argArray); return Reflect.construct(target, argArray);
} }
}) })
Worklet.prototype.addModule = new Proxy(Worklet.prototype.addModule, {
apply(target, thisArg, argArray) {
argArray[0] = encodeUrl(argArray[0])
return Reflect.apply(target, thisArg, argArray);
},
});
window.importScripts = new Proxy(window.importScripts, {
apply(target, thisArg, argArray) {
for (const i in argArray) {
argArray[i] = encodeUrl(argArray[i]);
}
return Reflect.apply(target, thisArg, argArray);
},
});

View file

@ -3,6 +3,7 @@ export { rewriteCss } from "./rewriters/css";
export { rewriteHtml, rewriteSrcset } from "./rewriters/html"; export { rewriteHtml, rewriteSrcset } from "./rewriters/html";
export { rewriteJs } from "./rewriters/js"; export { rewriteJs } from "./rewriters/js";
export { rewriteHeaders } from "./rewriters/headers"; export { rewriteHeaders } from "./rewriters/headers";
export { rewriteWorkers } from "./rewriters/worker"
export { BareClient } from "@mercuryworkshop/bare-mux" export { BareClient } from "@mercuryworkshop/bare-mux"
export function isScramjetFile(src: string) { export function isScramjetFile(src: string) {

View file

@ -0,0 +1,11 @@
import { rewriteJs } from "./js";
export function rewriteWorkers(js: string, origin?: URL) {
let str = new String().toString()
//@ts-expect-error
["codecs", "config", "shared", "client"].forEach((script) => {
str += `import "${self.__scramjet$config[script]}"\n`
})
str += rewriteJs(js, origin);
return str;
}

View file

@ -1,6 +1,6 @@
import { BareClient } from "@mercuryworkshop/bare-mux"; import { BareClient } from "@mercuryworkshop/bare-mux";
import { BareResponseFetch } from "@mercuryworkshop/bare-mux"; import { BareResponseFetch } from "@mercuryworkshop/bare-mux";
import { encodeUrl, decodeUrl, rewriteCss, rewriteHeaders, rewriteHtml, rewriteJs } from "../shared"; import { encodeUrl, decodeUrl, rewriteCss, rewriteHeaders, rewriteHtml, rewriteJs, rewriteWorkers } from "../shared";
declare global { declare global {
interface Window { interface Window {
@ -62,6 +62,7 @@ export default class ScramjetServiceWorker {
break; break;
case "sharedworker": case "sharedworker":
case "worker": case "worker":
responseBody = rewriteWorkers(await response.text(), url);
break; break;
default: default:
responseBody = response.body; responseBody = response.body;