| import { rewriteHtml } from "../../shared/rewriters/html"; | |
| import { ScramjetClient } from "../client"; | |
| export default function (client: ScramjetClient, _self: Self) { | |
| client.Proxy( | |
| ["Document.prototype.querySelector", "Document.prototype.querySelectorAll"], | |
| { | |
| apply(ctx) { | |
| ctx.args[0] = (ctx.args[0] as string).replace( | |
| /((?:^|\s)\b\w+\[(?:src|href|data-href))[\^]?(=['"]?(?:https?[:])?\/\/)/, | |
| "$1*$2" | |
| ); | |
| }, | |
| } | |
| ); | |
| client.Proxy("Document.prototype.write", { | |
| apply(ctx) { | |
| if (ctx.args[0]) | |
| try { | |
| ctx.args[0] = rewriteHtml( | |
| ctx.args[0], | |
| client.cookieStore, | |
| client.meta, | |
| false | |
| ); | |
| } catch {} | |
| }, | |
| }); | |
| client.Proxy("Document.prototype.writeln", { | |
| apply(ctx) { | |
| if (ctx.args[0]) | |
| try { | |
| ctx.args[0] = rewriteHtml( | |
| ctx.args[0], | |
| client.cookieStore, | |
| client.meta, | |
| false | |
| ); | |
| } catch {} | |
| }, | |
| }); | |
| client.Proxy("Document.prototype.parseHTMLUnsafe", { | |
| apply(ctx) { | |
| if (ctx.args[0]) | |
| try { | |
| ctx.args[0] = rewriteHtml( | |
| ctx.args[0], | |
| client.cookieStore, | |
| client.meta, | |
| false | |
| ); | |
| } catch {} | |
| }, | |
| }); | |
| } | |