What is caller-callsite?
The caller-callsite npm package allows developers to retrieve information about the call site of the function that called the current function. This can be particularly useful for debugging, logging, and tracking the flow of execution in complex applications. It leverages the V8 stack trace API to provide detailed information about the caller's location in the code.
What are caller-callsite's main functionalities?
Getting caller call site information
This feature allows developers to obtain information about the call site of the function that called the current function. The code sample demonstrates how to use caller-callsite to get the file name and line number of the caller function.
const callerCallsite = require('caller-callsite');
function demoFunction() {
const callSite = callerCallsite();
console.log(callSite.getFileName()); // prints the file name of the caller
console.log(callSite.getLineNumber()); // prints the line number of the caller
}
function callerFunction() {
demoFunction();
}
callerFunction();
Other packages similar to caller-callsite
callsites
The 'callsites' package provides functionality similar to caller-callsite by returning an array of call sites (stack frames), allowing developers to inspect the call stack. It differs in that it gives a broader view of the call stack rather than focusing on the immediate caller.
stack-trace
The 'stack-trace' package is another alternative that allows capturing stack traces. While it provides detailed information about the call stack, similar to 'callsites', it also includes features for parsing and working with stack traces, offering a more comprehensive approach compared to caller-callsite.
caller-callsite
Get the callsite of the caller function
Install
npm install caller-callsite
Usage
import callerCallsite from 'caller-callsite';
export default function foo() {
console.log(callerCallsite().getFileName());
}
import foo from './foo.js';
foo();
API
callerCallsite(options?)
Returns a callsite
object.
options
Type: object
depth
Type: number
Default: 0
The callsite depth, meaning how many levels we follow back on the stack trace.
For example:
import callerCallsite from 'caller-callsite';
export default function foo() {
console.log(callerCallsite().getFileName());
console.log(callerCallsite({depth: 1}).getFileName());
console.log(callerCallsite({depth: 2}).getFileName());
}
import foo from './foo.js';
export default function foo() {
foo();
}
import bar from './bar.js';
bar();