From 9d4f5d9abd48e270e403090ab27b271198c17244 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Tue, 7 May 2024 17:44:41 -0500 Subject: [PATCH] clean up rewriter and add iframe support --- src/worker/index.ts | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/worker/index.ts b/src/worker/index.ts index 71a0808..a2b944b 100644 --- a/src/worker/index.ts +++ b/src/worker/index.ts @@ -2,7 +2,7 @@ importScripts("/scramjet.codecs.js"); importScripts("/scramjet.config.js"); importScripts("/scramjet.bundle.js"); import { BareClient } from "@mercuryworkshop/bare-mux"; -import { BareResponseFetch } from "@tomphttp/bare-client" +import { BareResponseFetch } from "@mercuryworkshop/bare-mux" declare global { interface Window { @@ -31,19 +31,31 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker { let responseBody; const responseHeaders = self.__scramjet$bundle.rewriters.rewriteHeaders(response.rawHeaders, origin); - if (event.request.destination === "document") { - responseBody = self.__scramjet$bundle.rewriters.rewriteHtml(await response.text(), url.origin); - } else if (event.request.destination === "style") { - responseBody = self.__scramjet$bundle.rewriters.rewriteCss(await response.text(), url.origin); - } else if (event.request.destination === "script") { - responseBody = self.__scramjet$bundle.rewriters.rewriteJs(await response.text(), url.origin); - } else { - responseBody = response.body; + switch (event.request.destination) { + case "document": + responseBody = self.__scramjet$bundle.rewriters.rewriteHtml(await response.text(), url.origin); + break; + case "iframe": + responseBody = self.__scramjet$bundle.rewriters.rewriteHtml(await response.text(), url.origin); + break; + 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) { - // response.headers["Cross-Origin-Embedder-Policy"] = "require-cors"; - // } + if (crossOriginIsolated) { + responseHeaders["Cross-Origin-Embedder-Policy"] = "require-corp"; + } return new Response(responseBody, { headers: responseHeaders as HeadersInit,