clean up rewriter and add iframe support

This commit is contained in:
Percs 2024-05-07 17:44:41 -05:00
parent 715245e98a
commit 9d4f5d9abd

View file

@ -2,7 +2,7 @@ importScripts("/scramjet.codecs.js");
importScripts("/scramjet.config.js"); importScripts("/scramjet.config.js");
importScripts("/scramjet.bundle.js"); importScripts("/scramjet.bundle.js");
import { BareClient } from "@mercuryworkshop/bare-mux"; import { BareClient } from "@mercuryworkshop/bare-mux";
import { BareResponseFetch } from "@tomphttp/bare-client" import { BareResponseFetch } from "@mercuryworkshop/bare-mux"
declare global { declare global {
interface Window { interface Window {
@ -31,19 +31,31 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
let responseBody; let responseBody;
const responseHeaders = self.__scramjet$bundle.rewriters.rewriteHeaders(response.rawHeaders, origin); const responseHeaders = self.__scramjet$bundle.rewriters.rewriteHeaders(response.rawHeaders, origin);
if (event.request.destination === "document") { switch (event.request.destination) {
responseBody = self.__scramjet$bundle.rewriters.rewriteHtml(await response.text(), url.origin); case "document":
} else if (event.request.destination === "style") { responseBody = self.__scramjet$bundle.rewriters.rewriteHtml(await response.text(), url.origin);
responseBody = self.__scramjet$bundle.rewriters.rewriteCss(await response.text(), url.origin); break;
} else if (event.request.destination === "script") { case "iframe":
responseBody = self.__scramjet$bundle.rewriters.rewriteJs(await response.text(), url.origin); responseBody = self.__scramjet$bundle.rewriters.rewriteHtml(await response.text(), url.origin);
} else { break;
responseBody = response.body; case "script":
responseBody = self.__scramjet$bundle.rewriters.rewriteJs(await response.text(), url.origin);
break;
case "style":
responseBody = self.__scramjet$bundle.rewriters.rewriteCss(await response.text(), url.origin);
break;
case "sharedworker":
break;
case "worker":
break;
default:
responseBody = response.body;
break;
} }
// if (crossOriginIsolated) { if (crossOriginIsolated) {
// response.headers["Cross-Origin-Embedder-Policy"] = "require-cors"; responseHeaders["Cross-Origin-Embedder-Policy"] = "require-corp";
// } }
return new Response(responseBody, { return new Response(responseBody, {
headers: responseHeaders as HeadersInit, headers: responseHeaders as HeadersInit,