From e57a654ecca7b8c00b69d05c6719972b64d2eb75 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Mon, 7 Oct 2024 13:42:34 -0500 Subject: [PATCH] feat: proxy node.prototype.textcontent --- src/client/dom/element.ts | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/client/dom/element.ts b/src/client/dom/element.ts index 54c8fad..5bcfca9 100644 --- a/src/client/dom/element.ts +++ b/src/client/dom/element.ts @@ -1,11 +1,14 @@ import { SCRAMJETCLIENT } from "../../symbols"; import { ScramjetClient } from "../client"; import { nativeGetOwnPropertyDescriptor } from "../natives"; -import { decodeUrl, htmlRules, unrewriteHtml } from "../../shared"; import { encodeUrl, + decodeUrl, rewriteCss, + unrewriteCss, + htmlRules, rewriteHtml, + unrewriteHtml, rewriteJs, rewriteSrcset, } from "../../shared"; @@ -160,6 +163,34 @@ export default function (client: ScramjetClient, self: typeof window) { }, }); + client.Trap("Node.prototype.textContent", { + get(ctx) { + switch (ctx.this.tagName) { + case "SCRIPT": + return ctx.get(); + case "STYLE": + return unrewriteCss(ctx.get() as string); + default: + return unrewriteHtml(ctx.get() as string); + } + }, + set(ctx) { + switch (ctx.this.tagName) { + case "SCRIPT": + return ctx.get(); + case "STYLE": + return rewriteCss(ctx.get() as string, client.meta); + default: + return rewriteHtml( + ctx.get() as string, + client.cookieStore, + client.meta, + false + ); + } + }, + }); + client.Trap("Element.prototype.innerHTML", { set(ctx, value: string) { let newval;