mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-13 22:40:01 -04:00
do some more worker rewriting
This commit is contained in:
parent
a25e71a6fd
commit
4ce4226afa
4 changed files with 33 additions and 2 deletions
|
@ -11,3 +11,21 @@ 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);
|
||||||
|
},
|
||||||
|
});
|
|
@ -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) {
|
||||||
|
|
11
src/shared/rewriters/worker.ts
Normal file
11
src/shared/rewriters/worker.ts
Normal 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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue