Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
stack-utils
Advanced tools
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.
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}`);
});
Similar to stack-utils, error-stack-parser is designed to parse JavaScript Error stacks. It extracts structured information from stack traces but does not include functionality for cleaning or filtering stack traces. It's more focused on parsing rather than manipulation.
Traceback provides similar functionality to stack-utils by offering an API to inspect the call stack. However, it focuses more on real-time stack inspection and does not provide as many utilities for cleaning or filtering stack traces.
Captures and cleans stack traces.
Extracted from lib/stack.js
in the node-tap
project
$ npm install --save stack-utils
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
Creates a new stackUtils
instance.
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.
The default is StackUtils.nodeInternals()
, this can be disabled by setting []
or appended using
StackUtils.nodeInternals().concat(additionalRegExp)
. See also ignoredPackages
.
Type: array
of string
s
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 ''
.
Type: string
The path to the current working directory. File names in the stack trace will be shown relative to this directory.
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.
Returns an array of regular expressions that be used to cull lines from the stack trace that reference common Node.js internal files.
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.
Required
Type: string
or an array
of string
s
Captures the current stack trace, returning an array of CallSite
s. There are good overviews of the available CallSite methods here, and here.
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.
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.
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
.
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
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
MIT © Isaac Z. Schlueter, James Talmage
FAQs
Captures and cleans stack traces
We found that stack-utils demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
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.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.