JSPM

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

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

Package Exports

  • @mnrendra/stack-trace
  • @mnrendra/stack-trace/dist/index.js
  • @mnrendra/stack-trace/dist/index.mjs

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 that enables 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.
  }
)

Types

import type {
  CallSite, // NodeJS.CallSite
  StackTrace, // (targetFunction?: TargetFunction, options?: Options) => CallSite[]
  TargetFunction, // (...args: any[]) => any | Promise<TargetFunction>
  Options // { limit?: number }
} from '@mnrendra/stack-trace'

License

MIT

Author

@mnrendra