@j-o-r/asynctracker
v0.0.6
Published
Keep track on unresolved async methods/promises
Downloads
4
Maintainers
Readme
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 --save
Constructor
- 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 calls
Additional 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.stdout
andprocess.stderr
- SHUTDOWNWRAP: Used by
socket.end()