133 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # stack-utils 
 | |
| 
 | |
| > Captures and cleans stack traces.
 | |
| 
 | |
| [](https://travis-ci.org/tapjs/stack-utils) [](https://ci.appveyor.com/project/jamestalmage/stack-utils-oiw96/branch/master)  [](https://coveralls.io/github/tapjs/stack-utils?branch=master)
 | |
| 
 | |
| 
 | |
| Extracted from `lib/stack.js` in the [`node-tap` project](https://github.com/tapjs/node-tap)
 | |
| 
 | |
| ## Install
 | |
| 
 | |
| ```
 | |
| $ npm install --save stack-utils
 | |
| ```
 | |
| 
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| ```js
 | |
| const StackUtils = require('stack-utils');
 | |
| const stack = new StackUtils({cwd: process.cwd(), internals: StackUtils.nodeInternals()});
 | |
| 
 | |
| console.log(stack.clean(new Error().stack));
 | |
| // outputs a beautified stack trace
 | |
| ```
 | |
| 
 | |
| 
 | |
| ## API
 | |
| 
 | |
| 
 | |
| ### new StackUtils([options])
 | |
| 
 | |
| Creates a new `stackUtils` instance.
 | |
| 
 | |
| #### options
 | |
| 
 | |
| ##### internals
 | |
| 
 | |
| Type: `array` of `RegularExpression`s  
 | |
| 
 | |
| A set of regular expressions that match internal stack stack trace lines which should be culled from the stack trace.
 | |
| `StackUtils.nodeInternals()` returns a relatively set of sensible defaults for use on the node platform.
 | |
| 
 | |
| ##### cwd
 | |
| 
 | |
| Type: `string`
 | |
| 
 | |
| The path to the current working directory. File names in the stack trace will be shown relative to this directory.
 | |
| 
 | |
| ##### wrapCallSite
 | |
| 
 | |
| Type: `function(CallSite)`
 | |
| 
 | |
| A mapping function for manipulating CallSites before processing. The first argument is a CallSite instance, and the function should return a modified CallSite. This is useful for providing source map support.
 | |
| 
 | |
| 
 | |
| ### StackUtils.nodeInternals()
 | |
| 
 | |
| Returns an array of regular expressions that be used to cull lines from the stack trace that reference common Node.js internal files.
 | |
| 
 | |
| 
 | |
| ### stackUtils.clean(stack)
 | |
| 
 | |
| Cleans up a stack trace by deleting any lines that match the `internals` passed to the constructor, and shortening file names relative to `cwd`.
 | |
| 
 | |
| Returns a `string` with the cleaned up stack (always terminated with a `\n` newline character).
 | |
| 
 | |
| #### stack
 | |
| 
 | |
| *Required*  
 | |
| Type: `string` or an `array` of `string`s
 | |
| 
 | |
| 
 | |
| ### stackUtils.capture([limit], [startStackFunction])
 | |
| 
 | |
| Captures the current stack trace, returning an array of `CallSite`s. There are good overviews of the available CallSite methods [here](https://github.com/v8/v8/wiki/Stack%20Trace%20API#customizing-stack-traces), and [here](https://github.com/sindresorhus/callsites#api).
 | |
| 
 | |
| #### limit
 | |
| 
 | |
| Type: `number`
 | |
| Default: `Infinity`
 | |
| 
 | |
| Limits the number of lines returned by dropping all lines in excess of the limit. This removes lines from the stack trace.
 | |
| 
 | |
| #### startStackFunction
 | |
| 
 | |
| Type: `function`
 | |
| 
 | |
| The function where the stack trace should start. The first line of the stack trace will be the function that called `startStackFunction`. This removes lines from the end of the stack trace.
 | |
| 
 | |
| 
 | |
| ### stackUtils.captureString([limit], [startStackFunction])
 | |
| 
 | |
| Captures the current stack trace, cleans it using `stackUtils.clean(stack)`, and returns a string with the cleaned stack trace. It takes the same arguments as `stackUtils.capture`.
 | |
| 
 | |
| 
 | |
| ### stackUtils.at([startStackFunction])
 | |
| 
 | |
| Captures the first line of the stack trace (or the first line after `startStackFunction` if supplied), and returns a `CallSite` like object that is serialization friendly (properties are actual values instead of getter functions). 
 | |
| 
 | |
| The available properties are:
 | |
| 
 | |
|  - `line`: `number` 
 | |
|  - `column`: `number`
 | |
|  - `file`: `string`
 | |
|  - `constructor`: `boolean`
 | |
|  - `evalOrigin`: `string`
 | |
|  - `native`: `boolean`
 | |
|  - `typename`: `string`
 | |
|  - `function`: `string`
 | |
|  - `method`: `string`
 | |
| 
 | |
| ### stackUtils.parseLine(line)
 | |
| 
 | |
| Parses a `string` (which should be a single line from a stack trace), and generates an object with the following properties:
 | |
| 
 | |
|  - `line`: `number` 
 | |
|  - `column`: `number`
 | |
|  - `file`: `string`
 | |
|  - `constructor`: `boolean`
 | |
|  - `evalOrigin`: `string`
 | |
|  - `evalLine`: `number`
 | |
|  - `evalColumn`: `number`
 | |
|  - `evalFile`: `string`
 | |
|  - `native`: `boolean`
 | |
|  - `function`: `string`
 | |
|  - `method`: `string`
 | |
| 
 | |
| 
 | |
| ## License
 | |
| 
 | |
| MIT © [Isaac Z. Schlueter](http://github.com/isaacs), [James Talmage](http://github.com/jamestalmage)
 |