@opentelemetry/context-async-hooks
Advanced tools
Comparing version 0.17.0 to 0.17.1-alpha.3
@@ -13,3 +13,3 @@ import { ContextManager, Context } from '@opentelemetry/context-base'; | ||
* go through it. | ||
* @param target EventEmitter a instance of EventEmitter to patch | ||
* @param ee EventEmitter an instance of EventEmitter to patch | ||
* @param context the context we want to bind | ||
@@ -40,3 +40,6 @@ */ | ||
private _patchAddListener; | ||
private _createPatchMap; | ||
private _getPatchMap; | ||
private readonly _kOtListeners; | ||
} | ||
//# sourceMappingURL=AbstractAsyncHooksContextManager.d.ts.map |
@@ -20,3 +20,2 @@ "use strict"; | ||
const events_1 = require("events"); | ||
const kOtListeners = Symbol('OtListeners'); | ||
const ADD_LISTENER_METHODS = [ | ||
@@ -30,2 +29,5 @@ 'addListener', | ||
class AbstractAsyncHooksContextManager { | ||
constructor() { | ||
this._kOtListeners = Symbol('OtListeners'); | ||
} | ||
bind(target, context = this.active()) { | ||
@@ -62,10 +64,10 @@ if (target instanceof events_1.EventEmitter) { | ||
* go through it. | ||
* @param target EventEmitter a instance of EventEmitter to patch | ||
* @param ee EventEmitter an instance of EventEmitter to patch | ||
* @param context the context we want to bind | ||
*/ | ||
_bindEventEmitter(target, context) { | ||
const ee = target; | ||
if (ee[kOtListeners] !== undefined) | ||
return target; | ||
ee[kOtListeners] = {}; | ||
_bindEventEmitter(ee, context) { | ||
const map = this._getPatchMap(ee); | ||
if (map !== undefined) | ||
return ee; | ||
this._createPatchMap(ee); | ||
// patch methods that add a listener to propagate context | ||
@@ -88,3 +90,3 @@ ADD_LISTENER_METHODS.forEach(methodName => { | ||
} | ||
return target; | ||
return ee; | ||
} | ||
@@ -98,5 +100,6 @@ /** | ||
_patchRemoveListener(ee, original) { | ||
const contextManager = this; | ||
return function (event, listener) { | ||
var _a; | ||
const events = (_a = ee[kOtListeners]) === null || _a === void 0 ? void 0 : _a[event]; | ||
const events = (_a = contextManager._getPatchMap(ee)) === null || _a === void 0 ? void 0 : _a[event]; | ||
if (events === undefined) { | ||
@@ -116,6 +119,7 @@ return original.call(this, event, listener); | ||
_patchRemoveAllListeners(ee, original) { | ||
const contextManager = this; | ||
return function (event) { | ||
var _a; | ||
if (((_a = ee[kOtListeners]) === null || _a === void 0 ? void 0 : _a[event]) !== undefined) { | ||
delete ee[kOtListeners][event]; | ||
const map = contextManager._getPatchMap(ee); | ||
if ((map === null || map === void 0 ? void 0 : map[event]) !== undefined) { | ||
delete map[event]; | ||
} | ||
@@ -135,8 +139,10 @@ return original.call(this, event); | ||
return function (event, listener) { | ||
if (ee[kOtListeners] === undefined) | ||
ee[kOtListeners] = {}; | ||
let listeners = ee[kOtListeners][event]; | ||
let map = contextManager._getPatchMap(ee); | ||
if (map === undefined) { | ||
map = contextManager._createPatchMap(ee); | ||
} | ||
let listeners = map[event]; | ||
if (listeners === undefined) { | ||
listeners = new WeakMap(); | ||
ee[kOtListeners][event] = listeners; | ||
map[event] = listeners; | ||
} | ||
@@ -149,4 +155,13 @@ const patchedListener = contextManager.bind(listener, context); | ||
} | ||
_createPatchMap(ee) { | ||
const map = {}; | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
ee[this._kOtListeners] = map; | ||
return map; | ||
} | ||
_getPatchMap(ee) { | ||
return ee[this._kOtListeners]; | ||
} | ||
} | ||
exports.AbstractAsyncHooksContextManager = AbstractAsyncHooksContextManager; | ||
//# sourceMappingURL=AbstractAsyncHooksContextManager.js.map |
{ | ||
"name": "@opentelemetry/context-async-hooks", | ||
"version": "0.17.0", | ||
"version": "0.17.1-alpha.3+9437d7e8", | ||
"description": "OpenTelemetry AsyncHooks-based Context Manager", | ||
@@ -58,3 +58,3 @@ "main": "build/src/index.js", | ||
}, | ||
"gitHead": "a91ea7617f288af632934334d0c8ecece318ce73" | ||
"gitHead": "9437d7e88603e9cc4e818ba7cc90de32832ea284" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
41632
460
1