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 = [ const urlHeaders = [
"location", "location",
"Location",
"content-location", "content-location",
"referer" "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) => { cspHeaders.forEach((header) => {
delete headers[header]; delete headers[header];
delete headers[header.toLowerCase()];
}); });
urlHeaders.forEach((header) => { urlHeaders.forEach((header) => {
if (headers[header]) { if (headers[header])
headers[header] = encodeUrl(headers[header] as string, origin); 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; return headers;

View file

@ -5,7 +5,6 @@ declare global {
__scramjet$config: { __scramjet$config: {
prefix: string; prefix: string;
codec: Codec codec: Codec
scramjet: {
config: string; config: string;
bundle: string; bundle: string;
worker: string; worker: string;
@ -13,17 +12,14 @@ declare global {
codecs: string; codecs: string;
} }
} }
}
} }
self.__scramjet$config = { self.__scramjet$config = {
prefix: "/scramjet/", prefix: "/scramjet/",
codec: self.__scramjet$codecs.plain, codec: self.__scramjet$codecs.plain,
scramjet: {
config: "/scramjet.config.js", config: "/scramjet.config.js",
bundle: "/scramjet.bundle.js", bundle: "/scramjet.bundle.js",
worker: "/scramjet.worker.js", worker: "/scramjet.worker.js",
client: "/scramjet.client.js", client: "/scramjet.client.js",
codecs: "/scramjet.codecs.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 { BareClient } from "@mercuryworkshop/bare-mux";
import { BareResponseFetch } from "@mercuryworkshop/bare-mux" import { BareResponseFetch } from "@mercuryworkshop/bare-mux"
@ -26,7 +23,6 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
try { try {
const url = new URL(self.__scramjet$bundle.rewriters.url.decodeUrl(request.url)); const url = new URL(self.__scramjet$bundle.rewriters.url.decodeUrl(request.url));
// implement header rewriting later
const response: BareResponseFetch = await this.client.fetch(url, { const response: BareResponseFetch = await this.client.fetch(url, {
method: request.method, method: request.method,
body: request.body, body: request.body,
@ -37,7 +33,7 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
redirect: request.redirect, redirect: request.redirect,
}); });
console.log(response)
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 (response.body) { if (response.body) {
@ -62,8 +58,8 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
} }
} }
if (responseHeaders.accept === "text/event-stream") { if (responseHeaders["accept"] === "text/event-stream") {
responseHeaders.headers["content-type"] = "text/event-stream"; responseHeaders["content-type"] = "text/event-stream";
} }
if (crossOriginIsolated) { if (crossOriginIsolated) {
responseHeaders["Cross-Origin-Embedder-Policy"] = "require-corp"; responseHeaders["Cross-Origin-Embedder-Policy"] = "require-corp";

View file

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