ah-collector v0.0.6
ah-collector
Super light wrapper around async-hooks to collect information about resources created during async operations.
const ActivityCollector = require('ah-collector')
function captureStack(hook, { uid, type, triggerId }, resource) {
// Predicate to decide if a stack should be captured or not.
// Capture only inits of the TIMERWRAP but everything of the Timeout.
return type === 'Timeout' || (type === 'TIMERWRAP' && hook === 'init')
}
const collector = new ActivityCollector({
start: process.hrtime()
, captureStack
}).enable()
setTimeout(ontimeout, 100)
function ontimeout() {
collector
.processStacks()
.dump()
}
Requirements
Needs async hooks feature, therefore build from this PR for now.
Installation
npm install ah-collector
API
ActivityCollector
Creates an instance of an ActivityCollector
Parameters
$0
Object$0.start
Array<Number> start time obtained viaprocess.hrtime()
$0.stackCapturer
StackCapturer? which is used to decide if a stack should be captured as well as to capture and process it @see thlorenz/ah-stack-capturer The default capturer used doesn't ever capture a stack so this feature is turned off by default. (optional, defaultdefaultStackCapturer
)$0.requireInit
boolean? whentrue
any activities whoseinit
hook we missed are ignored even if we seebefore
,after
and/ordestroy
hooks. (optional, defaultfalse
)
Returns ActivityCollector instance of ActivityCollector
activityCollector.enable
Enables the collection of async hooks. Needs to be called as otherwise nothing will be collected.
Returns ActivityCollector activityCollector
activityCollector.disable
Disables the collection of async hooks.
Nothing will be collected until activityCollector.enable()
is called.
Returns ActivityCollector activityCollector
activityCollector.clear
Clears all currently collected activity.
Returns ActivityCollector activityCollector
activityCollector.activitiesOfTypes
Returns an Array of all activities collected so far that are of the specified type(s).
Parameters
Returns Array activities matching the specified type(s)
activityCollector.activities
A getter
that returns a map of all activities collected so far.
Returns Map activities
activityCollector.activitiesArray
A getter
that returns an Array of all activities collected so far.
Returns Array activities
activityCollector.processStacks
Processes all stacks that were captured for specific activities This is done in line, i.e. the actual stacks of the activity objects are modified.
Returns ActivityCollector activityCollector
activityCollector.dump
Dumps all so far collected activities to the console. This is useful for diagnostic purposes.
If no arguments are provided, all activities are dumped.
Parameters
opts
Object allow tweaking which activities are dumped and how
Returns ActivityCollector activityCollector
activityCollector.dumpTypes
Dumps all types in the order they were collected including id and trigger id.
Example: FSREQWRAP:id:triggerId
ActivityCollector#UNKNOWN_TYPE
Static getter that denotes the type given to activities whose type is unkown since
we missed their init
event.
License
MIT