Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
caller-callsite
Advanced tools
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.
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();
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.
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.
Get the callsite of the caller function
npm install caller-callsite
// foo.js
import callerCallsite from 'caller-callsite';
export default function foo() {
console.log(callerCallsite().getFileName());
//=> '/Users/sindresorhus/dev/unicorn/bar.js'
}
// bar.js
import foo from './foo.js';
foo();
Returns a callsite
object.
Type: object
Type: number
Default: 0
The callsite depth, meaning how many levels we follow back on the stack trace.
For example:
// foo.js
import callerCallsite from 'caller-callsite';
export default function foo() {
console.log(callerCallsite().getFileName());
//=> '/Users/sindresorhus/dev/unicorn/foobar.js'
console.log(callerCallsite({depth: 1}).getFileName());
//=> '/Users/sindresorhus/dev/unicorn/bar.js'
console.log(callerCallsite({depth: 2}).getFileName());
//=> '/Users/sindresorhus/dev/unicorn/foo.js'
}
// bar.js
import foo from './foo.js';
export default function foo() {
foo();
}
// foobar.js
import bar from './bar.js';
bar();
FAQs
Get the callsite of the caller function
The npm package caller-callsite receives a total of 5,341,494 weekly downloads. As such, caller-callsite popularity was classified as popular.
We found that caller-callsite demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.