add scramdbg heavy arg filterer

This commit is contained in:
velzie 2024-07-30 07:21:07 -04:00
parent 881492ffff
commit b9f4eba034
No known key found for this signature in database
GPG key ID: 048413F95F0DDE1F
2 changed files with 31 additions and 6 deletions

View file

@ -187,9 +187,16 @@ impl<'a> Visit<'a> for Rewriter {
} }
fn visit_return_statement(&mut self, it: &oxc_ast::ast::ReturnStatement<'a>) { fn visit_return_statement(&mut self, it: &oxc_ast::ast::ReturnStatement<'a>) {
self.jschanges.push(JsChange::DebugInject { if let Some(arg) = &it.argument {
self.jschanges.push(JsChange::GenericChange {
span: Span::new(it.span.start + 6, it.span.start + 6), span: Span::new(it.span.start + 6, it.span.start + 6),
text: format!(" $scramdbg((()=>{{ try {{return arguments}} catch(_){{}} }})(),("),
}); });
self.jschanges.push(JsChange::GenericChange {
span: Span::new(expression_span(arg).end, expression_span(arg).end),
text: format!("))"),
});
}
walk::walk_return_statement(self, it); walk::walk_return_statement(self, it);
} }

View file

@ -75,15 +75,33 @@ export default function (client: ScramjetClient, self: typeof globalThis) {
function argdbg(arg) { function argdbg(arg) {
switch (typeof arg) { switch (typeof arg) {
case "string": case "string":
if (arg.includes("scramjet")) debugger; if (arg.includes("scramjet") && !arg.includes("\n")) debugger;
break; break;
case "object": case "object":
if (arg instanceof Location) debugger;
if (
arg &&
arg[Symbol.iterator] &&
typeof arg[Symbol.iterator] === "function"
)
for (let ar of arg) argdbg(ar); for (let ar of arg) argdbg(ar);
break; break;
} }
} }
client.Trap("Error.prototype.stack", {
get(ctx) {
debugger;
},
});
window.$scramerr = function scramerr(e) { window.$scramerr = function scramerr(e) {
console.error("CAUGHT ERROR", e); // console.error("CAUGHT ERROR", e);
};
window.$scramdbg = function scramdbg(args, t) {
if (args && typeof args === "object" && args.length > 0) argdbg(args);
argdbg(t);
return t;
}; };
} }