callsite-tracker
V8 stacktrace API-based information tool.
install
npm install callsite-tracker
example
var tracker = ; // Of course! this is a mocha test file!// its just to illustrate things better.
which will output
module: 'mocha' scope: 'mocha/lib' path: '/home/jcm/npm/lib/node_modules/mocha/lib/runner.js' isCore: false isNative: false site: receiver: Object fun: Function: callFn pos: 5274 receiver: Object fun: Function pos: 5169 receiver: Object fun: Function pos: 7711
documentation
var tracker = require('callsite-tracker')([frames, origin])
frames
if specified should be aninteger
bigger than0
orInfinity
.origin
if specified should be a function.- if no arguments, the default number of
frames
is2
so theorigin
is the module itself. The returned stack is sliced by one.
The instance returned can walk through the recorded stack on a simple manner
var tracker = ;var tracked = ; // <- creates the `tracker` instance tracked // looks the same as the above output giventracked // will move to the second element of the sites array // and get the same information overriding // whatever value the properties had
tracker properties
Each tracker instance has attached the stack trace with the callsites. I called each "step" of the stack
a frame. So if you had
callFn Test.Runnable.run Runner.runTest
each line represents in my head a callsite
frame. The first frame would be
that of the caller
.
module
: the module from which that frame comes from.scope
: the module's module (thats why is called scope you know).path
:__filename
of the frame.isCore
: was themodule
anode
's core module?isNative
: was a nativev8
module?sites
: an array of callsites.
All tracker.sites
elements are callsites so they have their own api
. Go and see the avaliable methods of the V8 stack trace api like:
getLineNumber
getFileName
getEvalOrigin
- etc.
on that link.
why
You want to know stuff.
By default two frames are recorded, though you can even lower it to one providing a function from which start.
inspirated and based on
It serves for the same use cases implemented on this cool modules
I've been using those a lot.
test
npm test