mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-14 15:00:01 -04:00
add scramdbg heavy arg filterer
This commit is contained in:
parent
881492ffff
commit
b9f4eba034
2 changed files with 31 additions and 6 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue