| 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, | |
| }); | |
| } | |