Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@supertenant/core / src / tracing / index.js
Size: Mime:
// (c) Copyright 2023 Supertenant Ltd. - all rights reserved.
// See LICENSE file in project root for license terms.
"use strict";const sdk=require("./sdk"),constants=require("./constants"),tracingMetrics=require("./metrics"),opentracing=require("./opentracing"),spanHandle=require("./spanHandle"),tracingHeaders=require("./tracingHeaders"),tracingUtil=require("./tracingUtil"),supportedVersion=require("./supportedVersion");let tracingEnabled=!1,tracingActivated=!1,instrumenationsInitialized=!1,automaticTracingEnabled=!1,cls=null,config=null,processIdentityProvider=null;const instrumentations=["./instrumentation/control_flow/bluebird","./instrumentation/control_flow/clsHooked","./instrumentation/database/ioredis","./instrumentation/database/mongodb","./instrumentation/database/mysql","./instrumentation/database/redis","./instrumentation/frameworks/express","./instrumentation/protocols/http2Client","./instrumentation/protocols/http2Server","./instrumentation/protocols/httpClient","./instrumentation/protocols/httpServer"];let additionalInstrumentationModules=[];const instrumentationModules={};function initInstrumentations(_config){instrumenationsInitialized?instrumentations.forEach(instrumentationKey=>{instrumentationModules[instrumentationKey].updateConfig&&instrumentationModules[instrumentationKey].updateConfig(_config)}):(instrumentations.forEach(instrumentationKey=>{instrumentationModules[instrumentationKey]=require(instrumentationKey),instrumentationModules[instrumentationKey].init(_config)}),additionalInstrumentationModules.forEach(instrumentationModule=>{instrumentationModule.init(_config)}),instrumenationsInitialized=!0)}exports.constants=constants,exports.tracingHeaders=tracingHeaders,exports.opentracing=opentracing,exports.sdk=sdk,exports.supportedVersion=supportedVersion,exports.util=tracingUtil,exports.registerAdditionalInstrumentations=function(_additionalInstrumentationModules){additionalInstrumentationModules=additionalInstrumentationModules.concat(_additionalInstrumentationModules)},exports.preInit=function(preliminaryConfig){initInstrumentations(preliminaryConfig)},exports.init=function(_config,_processIdentityProvider){config=_config,processIdentityProvider=_processIdentityProvider,tracingEnabled=config.tracing.enabled,automaticTracingEnabled=config.tracing.automaticTracingEnabled,tracingEnabled&&(tracingHeaders.init(config),(cls=require("./cls")).init(config,processIdentityProvider),sdk.init(cls),automaticTracingEnabled)&&(initInstrumentations(config),exports.activate(config))},exports.activate=function(extraConfig={}){tracingEnabled&&!tracingActivated&&(tracingActivated=!0,"true"===process.env.ST_INSTANA_ENABLED&&(opentracing.activate(),sdk.activate()),automaticTracingEnabled)&&instrumentations.forEach(instrumentationKey=>{const instrumentationName=/.\/instrumentation\/[^/]*\/(.*)/.exec(instrumentationKey)[1];-1===config.tracing.disabledTracers.findIndex(disabledKey=>instrumentationName.toLowerCase()===disabledKey)&&instrumentationModules[instrumentationKey].activate(extraConfig)})},exports.deactivate=function(){tracingEnabled&&tracingActivated&&(tracingActivated=!1,automaticTracingEnabled&&instrumentations.forEach(instrumentationKey=>{instrumentationModules[instrumentationKey].deactivate()}),"true"===process.env.ST_INSTANA_ENABLED)&&(opentracing.deactivate(),sdk.deactivate())},exports.getHandleForCurrentSpan=function(){return spanHandle.getHandleForCurrentSpan(cls)},exports.getCls=function(){return cls},exports._getAndResetTracingMetrics=function(){return{pid:processIdentityProvider&&"function"==typeof processIdentityProvider.getEntityId?processIdentityProvider.getEntityId():void 0,metrics:tracingMetrics.getAndReset()}},exports._debugCurrentSpanName=function(){var s;return cls?(s=cls.ns.get("com.supertenant.span"))?"current: "+s.n:"current: no span":"current: no cls"};