clean up config and fix up header rewriting

This commit is contained in:
Percs 2024-05-12 17:45:07 -05:00
parent 0456df7f48
commit 70d888982a
4 changed files with 24 additions and 32 deletions

View file

@ -22,23 +22,22 @@ const cspHeaders = [
const urlHeaders = [
"location",
"Location",
"content-location",
"referer"
];
export function rewriteHeaders(headers: BareHeaders, origin?: string) {
export function rewriteHeaders(rawHeaders: BareHeaders, origin?: string) {
const headers = {};
for (const key in rawHeaders) {
headers[key.toLowerCase()] = rawHeaders[key];
}
cspHeaders.forEach((header) => {
delete headers[header];
delete headers[header.toLowerCase()];
});
urlHeaders.forEach((header) => {
if (headers[header]) {
if (headers[header])
headers[header] = encodeUrl(headers[header] as string, origin);
} else if (headers[header.toLowerCase()]) {
headers[header.toLowerCase()] = encodeUrl(headers[header.toLowerCase()] as string, origin);
}
})
return headers;

View file

@ -5,13 +5,11 @@ declare global {
__scramjet$config: {
prefix: string;
codec: Codec
scramjet: {
config: string;
bundle: string;
worker: string;
client: string;
codecs: string;
}
config: string;
bundle: string;
worker: string;
client: string;
codecs: string;
}
}
}
@ -19,11 +17,9 @@ declare global {
self.__scramjet$config = {
prefix: "/scramjet/",
codec: self.__scramjet$codecs.plain,
scramjet: {
config: "/scramjet.config.js",
bundle: "/scramjet.bundle.js",
worker: "/scramjet.worker.js",
client: "/scramjet.client.js",
codecs: "/scramjet.codecs.js"
}
config: "/scramjet.config.js",
bundle: "/scramjet.bundle.js",
worker: "/scramjet.worker.js",
client: "/scramjet.client.js",
codecs: "/scramjet.codecs.js"
}

View file

@ -1,6 +1,3 @@
importScripts("/scramjet.codecs.js");
importScripts("/scramjet.config.js");
importScripts("/scramjet.bundle.js");
import { BareClient } from "@mercuryworkshop/bare-mux";
import { BareResponseFetch } from "@mercuryworkshop/bare-mux"
@ -26,7 +23,6 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
try {
const url = new URL(self.__scramjet$bundle.rewriters.url.decodeUrl(request.url));
// implement header rewriting later
const response: BareResponseFetch = await this.client.fetch(url, {
method: request.method,
body: request.body,
@ -37,7 +33,7 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
redirect: request.redirect,
});
console.log(response)
let responseBody;
const responseHeaders = self.__scramjet$bundle.rewriters.rewriteHeaders(response.rawHeaders, origin);
if (response.body) {
@ -62,8 +58,8 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
}
}
if (responseHeaders.accept === "text/event-stream") {
responseHeaders.headers["content-type"] = "text/event-stream";
if (responseHeaders["accept"] === "text/event-stream") {
responseHeaders["content-type"] = "text/event-stream";
}
if (crossOriginIsolated) {
responseHeaders["Cross-Origin-Embedder-Policy"] = "require-corp";

View file

@ -1,7 +1,8 @@
importScripts("./scramjet.codecs.js");
importScripts("./scramjet.config.js");
importScripts("./scramjet.worker.js");
importScripts("./bare-client.js")
importScripts("scramjet.codecs.js");
importScripts("scramjet.config.js");
importScripts( __scramjet$config.bundle || "scramjet.bundle.js")
importScripts( __scramjet$config.worker || "scramjet.worker.js");
importScripts("bare-client.js")
const scramjet = new ScramjetServiceWorker();