1.0.0 • Published 10 months ago

@mnrendra/stack-trace v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

@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.

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