Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function createNamespace(name) {
assert.ok(name, 'namespace must be given a name.');
let namespace = new Namespace(name);
namespace.id = currentUid;
asyncHook.addHooks({
init(uid, handle, provider, parentUid, parentHandle) {
//parentUid = parentUid || currentUid; // Suggested usage but appears to work better for tracing modules.
currentUid = uid;
//CHAIN Parent's Context onto child if none exists. This is needed to pass net-events.spec
if (parentUid) {
namespace._contexts.set(uid, namespace._contexts.get(parentUid));
} else {
namespace._contexts.set(currentUid, namespace.active);
}
},
pre(uid, handle) {
currentUid = uid;
let context = namespace._contexts.get(uid);
if (context) {
namespace.enter(context);
process.namespaces[name] = null;
}
function reset() {
// must unregister async listeners
if (process.namespaces) {
Object.keys(process.namespaces).forEach(function(name) {
destroyNamespace(name);
});
}
process.namespaces = Object.create(null);
}
process.namespaces = {};
if (asyncHook._state && !asyncHook._state.enabled) {
asyncHook.enable();
}
// This evolved from a copy of
// Jeff-Lewis, feat(compat): v4.2 for node v4.7-v8 (0ebfb9b on Jul 21, 2017)
// https://github.com/Jeff-Lewis/cls-hooked/blob/066c6c4027a7924b06997cc6b175b1841342abdc/context-legacy.js
'use strict';
const util = require('util');
const assert = require('assert');
const wrapEmitter = require('emitter-listener');
const asyncHook = require('async-hook-jl');
const unset = require('./unset');
const CONTEXTS_SYMBOL = 'instanaClsHooked@contexts';
const invertedProviders = [];
for (let key in asyncHook.providers) {
invertedProviders[asyncHook.providers[key]] = key;
}
let currentUid = -1;
module.exports = {
getNamespace: getNamespace,
createNamespace: createNamespace,
destroyNamespace: destroyNamespace,
reset: reset
};
function Namespace(name) {
this.name = name;
// changed in 2.7: no default context
this.active = null;
// Jeff-Lewis, feat(compat): v4.2 for node v4.7-v8 (0ebfb9b on Jul 21, 2017)
// https://github.com/Jeff-Lewis/cls-hooked/blob/066c6c4027a7924b06997cc6b175b1841342abdc/context-legacy.js
'use strict';
const util = require('util');
const assert = require('assert');
const wrapEmitter = require('emitter-listener');
const asyncHook = require('async-hook-jl');
const unset = require('./unset');
const CONTEXTS_SYMBOL = 'instanaClsHooked@contexts';
const invertedProviders = [];
for (let key in asyncHook.providers) {
invertedProviders[asyncHook.providers[key]] = key;
}
let currentUid = -1;
module.exports = {
getNamespace: getNamespace,
createNamespace: createNamespace,
destroyNamespace: destroyNamespace,
reset: reset
};
function Namespace(name) {
this.name = name;
// changed in 2.7: no default context
this.active = null;
this._set = [];
}
function reset() {
// must unregister async listeners
if (process.namespaces) {
Object.keys(process.namespaces).forEach(function(name) {
destroyNamespace(name);
});
}
process.namespaces = Object.create(null);
}
process.namespaces = {};
if (asyncHook._state && !asyncHook._state.enabled) {
asyncHook.enable();
}