initial commit

This commit is contained in:
Avad3 2024-05-05 22:19:58 -04:00
commit d7b4a8bd31
22 changed files with 3411 additions and 0 deletions

49
src/worker/index.ts Normal file
View file

@ -0,0 +1,49 @@
importScripts("/scramjet.codecs.js");
importScripts("/scramjet.config.js");
importScripts("/scramjet.bundle.js");
import { BareClient } from "@tomphttp/bare-client";
declare global {
interface Window {
ScramjetServiceWorker: any;
}
}
self.ScramjetServiceWorker = class ScramjetServiceWorker {
client: typeof BareClient.prototype;
constructor() {
this.client = new BareClient(location.origin + self.__scramjet$config.bareServer);
}
async fetch(event: FetchEvent) {
const url = new URL(self.__scramjet$bundle.rewriters.url.decodeUrl(event.request.url));
// implement header rewriting later
const response = await this.client.fetch(url, {
method: event.request.method,
body: event.request.body,
headers: event.request.headers
});
let responseBody;
if (event.request.destination === "document") {
responseBody = self.__scramjet$bundle.rewriters.rewriteHtml(await response.text(), url.origin);
debugger;
} else if (event.request.destination === "style") {
responseBody = self.__scramjet$bundle.rewriters.rewriteCss(await response.text(), url.origin);
} else if (event.request.destination === "script") {
responseBody = await response.text();
// implement when js is finished
} else {
responseBody = response.body;
}
return new Response(responseBody, {
headers: response.headers,
status: response.status,
statusText: response.statusText
})
}
}