dd-trace
Version:
Datadog APM tracing client for JavaScript
34 lines (26 loc) • 859 B
JavaScript
const web = require('../../dd-trace/src/plugins/util/web')
const routerPlugin = require('../../datadog-plugin-router/src')
function createWrapHandle (tracer, config) {
config = web.normalizeConfig(config)
return function wrapHandle (handle) {
return function handleWithTrace (req, res) {
web.instrument(tracer, config, req, res, 'express.request')
return handle.apply(this, arguments)
}
}
}
function patch (express, tracer, config) {
this.wrap(express.application, 'handle', createWrapHandle(tracer, config))
routerPlugin.patch.call(this, { prototype: express.Router }, tracer, config)
}
function unpatch (express) {
this.unwrap(express.application, 'handle')
routerPlugin.unpatch.call(this, { prototype: express.Router })
}
module.exports = {
name: 'express',
versions: ['>=4'],
patch,
unpatch
}