JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 17
  • Score
    100M100P100Q51202F
  • License MIT

A utility that enables stack tracing of the `NodeJs.CallSite` object, allowing dynamic tracing of invocations.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@mnrendra/stack-trace) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    @mnrendra/stack-trace

    A utility to enable stack tracing of the NodeJs.CallSite object, allowing dynamic tracing of invocations.

    Install

    npm i @mnrendra/stack-trace

    Usage

    Using CommonJS:

    const { stackTrace } = require('@mnrendra/stack-trace')
    const [trace] = stackTrace()
    console.log(trace.getFileName() === __filename) // Output: true

    Using ES Module:

    import { stackTrace } from '@mnrendra/stack-trace'
    import { fileURLToPath } from 'node:url'
    const [trace] = stackTrace()
    console.log(new URL(trace.getFileName()).pathname === fileURLToPath(import.meta.url)) // Output: true

    Examples

    1. Call from your development project /foo/project-name/src/index.mjs:
    import { stackTrace } from '@mnrendra/stack-trace'
    const [trace] = stackTrace()
    console.log(trace.getFileName()) // Output: file:///foo/project-name/src/index.mjs
    1. Call from your production module /foo/project-name/node_modules/module-name/dist/index.js:
    "use strict";
    const { stackTrace } = require('@mnrendra/stack-trace');
    const [trace] = stackTrace();
    console.log(trace.getFileName()); // Output: /foo/project-name/node_modules/module-name/dist/index.js

    Note: When calling getFileName from an ESM module, it will return the file name as a URL instead of a file path.

    Options

    import { stackTrace } from '@mnrendra/stack-trace'
    
    stackTrace(
      // The first argument is the target function, or `null`, or `undefined`:
      null,
      // The second argument is the options object:
      {
        limit: 10 // The `Error.stackTraceLimit` property specifies the number of stack frames to be collected by a stack trace.
      }
    )

    Utilities

    import {
      validateSkippedStacks // To validate a name or a list of names of stack traces that need to be skipped. More info: @see https://github.com/mnrendra/validate-skipped-stacks
    } from '@mnrendra/stack-trace'

    Types

    import type {
      CallSite, // NodeJS.CallSite
      Func, // (...args: any[]) => any
      Options, // @mnrendra/stack-trace options
      SkippedStacks, // @mnrendra/validate-skipped-stacks input
      ValidSkippedStacks // @mnrendra/validate-skipped-stacks output
    } from '@mnrendra/stack-trace'

    License

    MIT

    Author

    @mnrendra