https://github.com/stringparser/v8-callsites
V8 stacktrace API callsites with knobs
https://github.com/stringparser/v8-callsites
Last synced: 9 months ago
JSON representation
V8 stacktrace API callsites with knobs
- Host: GitHub
- URL: https://github.com/stringparser/v8-callsites
- Owner: stringparser
- License: mit
- Created: 2014-09-23T16:48:25.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2015-12-19T14:04:49.000Z (about 10 years ago)
- Last Synced: 2024-10-31T16:58:25.168Z (about 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 27.3 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# v8-callsites [![NPM version][npm-badge]][npm-link] [![downloads][npm-downloads-badge]][npm-link]
[![build][travis-badge]][travis-link]
[V8 stacktrace API](https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi) callsites with knobs.
## install
npm install --save v8-callsites
## usage
```js
var stack = require('v8-callsites');
origin();
function origin(){
foo();
}
function foo(){
bar();
}
function bar(){
baz();
}
function baz(){
var barStackFrombaz = stack(3, bar);
// bar `stack` from baz with only 3 frames
barstackFrombaz.forEach(function(frame){
console.log(
frame.getFunctionName(), '->', frame+''
);
});
}
```
### documentation
`require('v8-callsites')([frames, origin])`
- `frames` if specified should be an `integer` bigger than `0` or `Infinity`.
- `origin` if specified should be a function.
- if no arguments, the default number of `frames` is `2` so the `origin` is the module itself. The returned stack is sliced by one.
See also the [avaliable methods](https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi) of the stack trace api like:
- `getLineNumber`
- `getFileName`
- `getEvalOrigin`
- etc.
## why
You would like to set how many frames are recorded (`Error.stackTraceLimit`) and from which function the stack should be traced back (`Error.captureStackTrace`).
By default two frames are recorded, though you can even lower it to one providing a function from which start.
### inspirated by
It serves for the same use cases implemented on this cool modules
- [visionmedia `callsite`](https://github.com/visionmedia/callsite)
- [sindresorhus `callsites`](https://github.com/sindresorhus/callsites)
I've been using those a lot.
## test
npm test
### license
[](http://opensource.org/licenses/MIT)
[npm-link]: http://www.npmjs.org/package/v8-callsites
[npm-badge]: http://img.shields.io/npm/v/v8-callsites.svg?style=flat-square
[npm-downloads-badge]: http://img.shields.io/npm/dm/v8-callsites.svg?style=flat-square
[travis-link]: https://travis-ci.org/stringparser/v8-callsites/builds
[travis-badge]: http://img.shields.io/travis/stringparser/v8-callsites/master.svg?style=flat-square