0.0.8 • Published 6 months ago
@j-o-r/asynctracker v0.0.8
AsyncTracker
!WARNING
This repository has been moved to https://codeberg.org/duin/AsyncTracker
The AsyncTracker provides a mechanism for tracking asynchronous operations in Node.js. It uses the async_hooks module to track the lifecycle of asynchronous resources.
Install
npm i @j-o-r/asynctracker --saveConstructor
- AsyncTracker()
- Constructs a new instance of the
AsyncTracker.
- Constructs a new instance of the
Methods
enable(type: string)
- Enables tracking of asynchronous methods. Optionally, only methods of a specified type can be tracked.
type(optional): The type of asynchronous method to track. If not specified, all types are tracked.
disable()
- Disables the tracking of asynchronous methods.
reset()
- Clears all tracked asynchronous methods.
report(verbose: boolean)
- Prints an overview of active asynchronous calls.
verbose(optional): Iftrue, prints detailed information. Defaults tofalse.
getUnresolved(type: string)
- Returns an array of unresolved asynchronous methods, optionally filtered by type.
type(optional): The type of asynchronous methods to filter by.
getTypeDescription(type: string)
- Returns a description of the specified asynchronous method type.
type: The type of asynchronous method.
addCustomType(type: string, description: string)
- Adds or overwrites a custom type for asynchronous methods.
type: The type of the asynchronous method.description: The description of the type.
Usage Example
import AsyncTracker from '@j-o-r/asynctracker';
const tracker = new AsyncTracker();
tracker.enable();
// Perform asynchronous operations...
const count = tracker.report(true); // Prints detailed information about active async callsAdditional Information
- The AsyncTracker class uses various predefined types for asynchronous operations like Promise, Timeout, Immediate, etc.
- Custom types can be added using the addCustomType method for specialized tracking.
- The report method is useful for debugging purposes to get insights into ongoing asynchronous operations.
TYPES
- TIMERWRAP:
setTimeout(), setInterval() - PROMISE:
Promise - IMMEDIATE:
setImmediate() - PROCESSNEXTTICK:
process.nextTick() - TICKOBJECT: Used internally by
process.nextTick() - SCRIPT:
vm.Script.runInThisContext() - PROMISEEXECUTOR: Used internally by
Promise - TIMEOUT:
setTimeout() - PIPECONNECTWRAP: Used by pipes
- PIPEWRAP: Used by pipes
- TCPCONNECTWRAP: Used by TCP sockets
- TCPWRAP: Used by TCP sockets
- GETADDRINFOREQWRAP: Used by DNS queries
- GETNAMEINFOREQWRAP: Used by DNS queries
- QUERYWRAP: Used by DNS queries
- FSREQCALLBACK: Used by FS operations
- FILEHANDLE: Used by file handles
- SIGNALWRAP: Used by signal handlers
- HTTPPARSER: Used by HTTP parsing
- HTTP2SESSION: Used by HTTP/2 sessions
- HTTP2STREAM: Used by HTTP/2 streams
- ZLIB: Used by Zlib
- TTYWRAP: Used by TTY handles
- UDPSENDWRAP: Used by UDP sockets
- UDPWRAP: Used by UDP sockets
- WRITEWRAP: Used by
process.stdoutandprocess.stderr - SHUTDOWNWRAP: Used by
socket.end()