import { rewriteUrl } from "../../shared/rewriters/url"; import { ScramjetClient } from "../client"; import { UrlChangeEvent } from "../events"; export default function (client: ScramjetClient, _self: Self) { client.Proxy("History.prototype.pushState", { apply(ctx) { if (ctx.args[2] || ctx.args[2] === "") ctx.args[2] = rewriteUrl(ctx.args[2], client.meta); ctx.call(); const ev = new UrlChangeEvent(client.url.href); if (!client.isSubframe) client.frame?.dispatchEvent(ev); }, }); client.Proxy("History.prototype.replaceState", { apply(ctx) { if (ctx.args[2] || ctx.args[2] === "") ctx.args[2] = rewriteUrl(ctx.args[2], client.meta); ctx.call(); const ev = new UrlChangeEvent(client.url.href); if (!client.isSubframe) client.frame?.dispatchEvent(ev); }, }); }