Socket
Socket
Sign inDemoInstall

dd-trace

Package Overview
Dependencies
Maintainers
3
Versions
579
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dd-trace - npm Package Compare versions

Comparing version 0.8.0-beta.5 to 0.8.0-beta.6

2

lib/version.js

@@ -1,1 +0,1 @@

module.exports = '0.8.0-beta.5'
module.exports = '0.8.0-beta.6'
{
"name": "dd-trace",
"version": "0.8.0-beta.5",
"version": "0.8.0-beta.6",
"description": "Datadog APM tracing client for JavaScript",

@@ -41,3 +41,2 @@ "main": "index.js",

"async-hook-jl": "^1.7.6",
"emitter-listener": "^1.1.2",
"int64-buffer": "^0.1.9",

@@ -44,0 +43,0 @@ "koalas": "^1.0.2",

'use strict'
const shimmer = require('shimmer')
const wrapEmitter = require('emitter-listener')
const SCOPE_SYMBOL = 'dd-trace@scope'
/**

@@ -75,22 +72,25 @@ * The Datadog Scope Manager. This is used for context propagation.

_bindEmitter (emitter, span) {
const scope = this
if (this._datadog_events) return emitter
function mark (listener) {
if (!listener) { return }
Object.defineProperty(emitter, '_datadog_events', {
configurable: true,
writable: true,
value: {}
})
listener[SCOPE_SYMBOL] = listener[SCOPE_SYMBOL] || []
listener[SCOPE_SYMBOL].push(scope._spanOrActive(span))
}
this._tryWrap(emitter, [
'addListener',
'prependListener',
'on'
], createWrapAddListener(this, span))
function prepare (listener) {
if (!listener || !listener[SCOPE_SYMBOL]) { return listener }
this._tryWrap(emitter, [
'removeListener',
'off'
], wrapRemoveListener)
return listener[SCOPE_SYMBOL]
.reduce((prev, next) => {
return scope.bind(prev, next)
}, listener)
}
this._tryWrap(emitter, [
'removeAllListeners'
], wrapRemoveAllListeners)
wrapEmitter(emitter, mark, prepare)
return emitter

@@ -129,4 +129,66 @@ }

}
_tryWrap (obj, methods, wrapper) {
for (let i = 0, l = methods.length; i < l; i++) {
if (obj[methods[i]]) {
shimmer.wrap(obj, methods[i], wrapper)
}
}
}
}
function createWrapAddListener (scope, span) {
return function wrapAddListener (addListener) {
return function addListenerWithTrace (eventName, listener) {
if (!listener || listener._datadog_bound) return addListener.apply(this, arguments)
const bound = scope.bind(listener, scope._spanOrActive(span))
bound._datadog_bound = true
if (!this._datadog_events[eventName]) {
this._datadog_events[eventName] = new Map()
}
if (!this._datadog_events[eventName][listener]) {
this._datadog_events[eventName][listener] = []
}
this._datadog_events[eventName][listener].push(bound)
return addListener.call(this, eventName, bound)
}
}
}
function wrapRemoveListener (removeListener) {
return function removeListenerWithTrace (eventName, listener) {
const listeners = this._datadog_events[eventName]
if (!listener || !listeners || !listeners[listener]) {
return removeListener.apply(this, arguments)
}
let bound
while ((bound = listeners.pop())) {
this.removeListener(eventName, bound)
}
return removeListener.call(this, eventName, listener)
}
}
function wrapRemoveAllListeners (removeAllListeners) {
return function removeAllListenersWithTrace (eventName) {
if (eventName) {
this._datadog_events[eventName] = new Map()
} else {
this._datadog_events = {}
}
return removeAllListeners.call(this, eventName)
}
}
module.exports = Scope

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc