mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-14 06:50:01 -04:00
clean up config and fix up header rewriting
This commit is contained in:
parent
0456df7f48
commit
70d888982a
4 changed files with 24 additions and 32 deletions
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
@ -14,16 +13,13 @@ declare global {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
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"
|
||||||
}
|
}
|
||||||
}
|
|
|
@ -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";
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue