or alternatively the browser distribution from here

If you aren't familiar with the term dynamic analysis, then you can read about it here.

Iroh also keeps track of the call stack, which makes it possible to view the code's flow and visualize it within any kind of model.

Iroh patches your code to be able to record everything happening inside it, but without changing the original program. You can add listeners to the patched code stage and then track and manipulate everything .

Iroh supports strict mode .

Since Iroh allows to intercept all calls in your code, even Function.toString calls can be intercepted, which allows to remain JavaScript's original code reification feature. You can do the same for any other ways like String(ƒ) or ƒ + "" .

External (non-trackable) calls (e.g. eval , Math.random ) get traced as external .

Patched functions which get called from outside (e.g. setTimeout(ƒ) ) get traced as sloppy .