Socket
Socket
Sign inDemoInstall

stack-utils

Package Overview
Dependencies
1
Maintainers
2
Versions
18
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    stack-utils

Captures and cleans stack traces


Version published
Weekly downloads
24M
increased by2.26%
Maintainers
2
Install size
17.4 kB
Created
Weekly downloads
 

Package description

What is stack-utils?

The stack-utils npm package is designed to provide a more structured and easier way to work with stack traces. It can clean up stack traces, provide concise stack trace filtering, and extract meaningful information from them. This can be particularly useful for developers working on debugging applications or enhancing error reporting mechanisms.

What are stack-utils's main functionalities?

Clean stack traces

This feature allows for the cleaning of stack traces by removing unnecessary noise. It can filter out lines that are not useful for debugging purposes, making the stack trace easier to read and understand.

const StackUtils = require('stack-utils');
const stack = new StackUtils();
console.log(stack.clean(new Error().stack));

Capture and filter stack traces

This functionality enables capturing stack traces and applying filters to them. It's useful for creating custom error logging mechanisms that only include relevant information.

const StackUtils = require('stack-utils');
const stack = new StackUtils({cwd: process.cwd(), internals: StackUtils.nodeInternals()});
console.log(stack.capture().map(frame => stack.clean(frame.toString())).join('\n'));

Extract structured information from stack frames

This feature parses stack traces into structured objects, making it easier to programmatically access details about each frame. This can be particularly useful for advanced error reporting or logging systems.

const StackUtils = require('stack-utils');
const stack = new StackUtils();
const frames = stack.parse(new Error().stack);
frames.forEach(frame => {
  console.log(`File: ${frame.file}, Line: ${frame.line}, Column: ${frame.column}, Function: ${frame.function}`);
});

Other packages similar to stack-utils

Readme

Source

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

FAQs

Last updated on 08 Nov 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc