• Stars
    star
    190
  • Rank 203,739 (Top 5 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 9 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Captures and cleans stack traces.

stack-utils

Captures and cleans stack traces.

Linux Build Build status Coverage

Extracted from lib/stack.js in the node-tap project

Install

$ npm install --save stack-utils

Usage

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 RegularExpressions

A set of regular expressions that match internal stack stack trace lines which should be culled from the stack trace. The default is StackUtils.nodeInternals(), this can be disabled by setting [] or appended using StackUtils.nodeInternals().concat(additionalRegExp). See also ignoredPackages.

ignoredPackages

Type: array of strings

An array of npm modules to be culled from the stack trace. This list will mapped to regular expressions and merged with the internals.

Default ''.

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, indent = 0)

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). Spaces at the start of each line are trimmed, indentation can be added by setting indent to the desired number of spaces.

stack

Required
Type: string or an array of strings

stackUtils.capture([limit], [startStackFunction])

Captures the current stack trace, returning an array of CallSites. There are good overviews of the available CallSite methods here, and here.

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
  • type: 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, James Talmage

More Repositories

1

tsimp

JavaScript
504
star
2

signal-exit

when you want to fire an event no matter how a process exits.
TypeScript
187
star
3

tap-parser

parse the test anything protocol
121
star
4

foreground-child

Run a child as if it's the foreground process. Give it stdio. Exit when it exits.
TypeScript
40
star
5

async-hook-domain

An implementation of Domain-like error handling, built on async_hooks
JavaScript
34
star
6

tap-mocha-reporter

Format a TAP stream using Mocha's set of reporters
JavaScript
28
star
7

tmatch

This module exists to facilitate the t.match() method in node-tap (http://npm.im/tap)
22
star
8

tcompare

A comprehensive comparison library, for use in test frameworks
19
star
9

tapromise

Turn any tap Test object into a promise-resolving thingie
JavaScript
13
star
10

t-up

Tee up a test server in one file, tear it down in another
JavaScript
13
star
11

tapsert

Drop in assert replacement that produces TAP output instead of exceptions
JavaScript
11
star
12

treport

a reporter for node-tap
JavaScript
11
star
13

tt

tiny tap test thing
JavaScript
10
star
14

tapjs

monorepo for tap and friends
JavaScript
9
star
15

tsame

the logic behind tap's t.same() and t.strictSame()
6
star
16

buffer-to-string

A better Buffer.toString()
JavaScript
5
star
17

processinfo

JavaScript
5
star
18

tap-finished

detect when tap output is finished
JavaScript
5
star
19

mock-esm

JavaScript
5
star
20

libtap

A Test-Anything-Protocol library for JavaScript
JavaScript
4
star
21

tap-yaml

Yaml handling for TAP parsers and generators
4
star
22

clean-yaml-object

Clean up an object prior to serialization
JavaScript
3
star
23

core

TypeScript
3
star
24

config

TypeScript
2
star
25

tap-setup-script-example

TypeScript
2
star
26

node-test-example

JavaScript
2
star
27

ts-esm-testing

testing out making ts and esm play nice together
TypeScript
2
star
28

gh-964

TypeScript
1
star