import { rewriteUrl } from "../shared/rewriters/url"; import { ScramjetClient } from "./client"; import { getOwnPropertyDescriptorHandler } from "./helpers"; export function createDocumentProxy( client: ScramjetClient, self: typeof globalThis ) { return new Proxy(self.document, { get(target, prop) { if (prop === "location") { return client.locationProxy; } if (prop === "defaultView") { return client.globalProxy; } const value = Reflect.get(target, prop); return value; }, set(target, prop, newValue) { if (prop === "location") { location.href = rewriteUrl(newValue, client.meta); return; } return Reflect.set(target, prop, newValue); }, getOwnPropertyDescriptor: getOwnPropertyDescriptorHandler, }); }