npm install irohor alternativelly the browser distribution from here.
If you aren't familiar with the term dynamic analysis, then you can read about it here.
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 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.
Since Iroh allows to intercept all calls in your code, even
ƒ + "".
External (non-trackable) calls (e.g.
Math.random) get traced as
Patched functions which get called from outside (e.g.
setTimeout(ƒ)) get traced as
The API exposes listeners for most AST node types. For example you can intercept all
Calls in your code and determine what happens before (e.g. track it's arguments) and after it's called (e.g. change it's return value based on the called function's name).
Iroh cannot record what's happening inside native calls, external or non-patched functions. If you want a function to be intercepted, then make sure to patch it as well.
The current main goal is to have full
Iroh is already successfully tested with
A subset of ES6 features is already supported.
node.js support is ongoing since we can intercept
For example, Iroh allows you to track, intercept and manipulate all data in your code during execution. You can collect and change
function calls and so on.
A simple textual model is used below to represent the code flow.
Since Iroh modifies your code heavily,
Function.toString calls would return the modified code instead of the original. See this example how this can be bypassed in just 3 lines of code.