fix fetch proxy behavior

This commit is contained in:
Avad3 2024-07-18 19:27:47 -04:00
parent bcbb660cc6
commit ab226abb42
4 changed files with 18 additions and 12 deletions

View file

@ -1,3 +1,5 @@
import BareClient from "@mercuryworkshop/bare-mux";
import "./scope.ts"; import "./scope.ts";
import "./window.ts"; import "./window.ts";
import "./event.ts"; import "./event.ts";
@ -20,5 +22,10 @@ declare global {
interface Window { interface Window {
$s: any; $s: any;
$sImport: any; $sImport: any;
$client: BareClient;
} }
} }
const client = new BareClient();
export { client };

View file

@ -1,13 +1,19 @@
// ts throws an error if you dont do window.fetch // ts throws an error if you dont do window.fetch
import { encodeUrl, rewriteHeaders } from "../shared"; import { encodeUrl, rewriteHeaders } from "../shared";
import { client } from "../index";
window.fetch = new Proxy(window.fetch, { window.fetch = new Proxy(window.fetch, {
apply(target, thisArg, argArray) { async apply(target, thisArg, argArray) {
argArray[0] = encodeUrl(argArray[0]); // @ts-expect-error
const response = await client.fetch(...argArray);
return Reflect.apply(target, thisArg, argArray); return new Response(response.body, {
}, status: response.status,
statusText: response.statusText,
headers: response.headers
});
}
}); });
Headers = new Proxy(Headers, { Headers = new Proxy(Headers, {

View file

@ -1,6 +1,5 @@
import { decodeUrl } from "../../shared/rewriters/url"; import { decodeUrl } from "../../shared/rewriters/url";
import { BareClient } from "../shared"; import { client } from "../index";
const client = new BareClient();
WebSocket = new Proxy(WebSocket, { WebSocket = new Proxy(WebSocket, {
construct(target, args) { construct(target, args) {

View file

@ -15,12 +15,6 @@ export const windowProxy = new Proxy(window, {
return window.parent; return window.parent;
} else if (propIsString && prop === "$scramjet") { } else if (propIsString && prop === "$scramjet") {
return; return;
} else if (propIsString && prop === "addEventListener") {
return new Proxy(window.addEventListener, {
apply(target1, thisArg, argArray) {
window.addEventListener(argArray[0], argArray[1]);
},
});
} }
const value = Reflect.get(target, prop); const value = Reflect.get(target, prop);