Get v8 stack traces as an array of CallSite objects.
npm install stack-trace bash
npm install stack-trace
`
Usage
The stack-trace module makes it easy for you to capture the current stack:
`javascript
import { get } from 'stack-trace';
const trace = get();
expect(trace[0].getFileName()).toBe(__filename);
`
However, sometimes you have already popped the stack you are interested in,
and all you have left is an Error object. This module can help:
`javascript
import { parse } from 'stack-trace';
const err = new Error('something went wrong');
const trace = parse(err);
expect(trace[0].getFileName()).toBe(__filename);
`
Please note that parsing the Error#stack property is not perfect, only
certain properties can be retrieved with it as noted in the API docs below.
Long stack traces
stack-trace works great with [long-stack-traces][], when parsing an err.stack
that has crossed the event loop boundary, a CallSite object returning
'----------------------------------------' for getFileName() is created.
All other methods of the event loop boundary call site return null.
[long-stack-traces]: https://github.com/tlrobinson/long-stack-traces
API
$3
Returns an array of CallSite objects, where element 0 is the current call
site.
When passing a function on the current stack as the belowFn parameter, the
returned array will only include CallSite objects below this function.
$3
Parses the err.stack property of an Error object into an array compatible
with those returned by stackTrace.get(). However, only the following methods
are implemented on the returned CallSite objects.
* getTypeName
* getFunctionName
* getMethodName
* getFileName
* getLineNumber
* getColumnNumber
* isNative
Note: Except getFunctionName(), all of the above methods return exactly the
same values as you would get from stackTrace.get(). getFunctionName()`