diff --git a/src/client/shared/error.ts b/src/client/shared/error.ts index 5660541..5051760 100644 --- a/src/client/shared/error.ts +++ b/src/client/shared/error.ts @@ -4,16 +4,25 @@ import { ScramjetClient } from "../client"; export const enabled = () => self.$scramjet.config.flags.cleanerrors; export default function (client: ScramjetClient, self: Self) { // v8 only. all we need to do is clean the scramjet urls from stack traces - Error.prepareStackTrace = (error, stack) => { + const closure = (error, stack) => { let newstack = error.stack; for (let i = 0; i < stack.length; i++) { const url = stack[i].getFileName(); try { newstack = newstack.replaceAll(url, decodeUrl(url)); - } catch {} + } catch { } } return newstack; }; + client.Trap("Error.prepareStackTrace", { + get(ctx) { + // this is a funny js quirk. the getter is ran every time you type something in console + return closure; + }, + set(value) { + // just ignore it if a site tries setting their own. not much we can really do + }, + }); }