Repository URL to install this package:
|
Version:
0.8.2 ▾
|
// (c) Copyright 2023 Supertenant Ltd. - all rights reserved.
// See LICENSE file in project root for license terms.
"use strict";const opentracing=require("opentracing"),constants=require("../constants"),Span=require("./Span"),baggageKeyPrefix="x-supertenant-b-",valueEncoders={},valueDecoders=(valueEncoders[opentracing.FORMAT_TEXT_MAP]=identity,valueEncoders[opentracing.FORMAT_HTTP_HEADERS]=encodeURIComponent,{});function Tracer(isActive){opentracing.Tracer.apply(this,arguments),this._isActive=isActive}function identity(v){return v}valueDecoders[opentracing.FORMAT_TEXT_MAP]=identity,valueDecoders[opentracing.FORMAT_HTTP_HEADERS]=decodeURIComponent,(module.exports=Tracer).prototype=Object.create(opentracing.Tracer.prototype),Tracer.prototype._startSpan=function(name,fields){return new Span(this,name,fields)},Tracer.prototype._inject=function(spanContext,format,carrier){if((format===opentracing.FORMAT_TEXT_MAP||format===opentracing.FORMAT_HTTP_HEADERS)&&null!=carrier&&null!=spanContext){carrier[constants.spanIdHeaderNameLowerCase]=spanContext.s,carrier[constants.traceIdHeaderNameLowerCase]=spanContext.t,carrier[constants.traceLevelHeaderNameLowerCase]=String(spanContext.samplingPriority);const valueEncoder=valueEncoders[format];Object.keys(spanContext.baggage).forEach(baggageKey=>{carrier[baggageKeyPrefix+baggageKey]=valueEncoder(spanContext.baggage[baggageKey])})}},Tracer.prototype._extract=function(format,carrier){if(format!==opentracing.FORMAT_TEXT_MAP&&format!==opentracing.FORMAT_HTTP_HEADERS)return null;if(null==carrier)return null;const valueDecoder=valueDecoders[format],spanContext=new opentracing.SpanContext;return spanContext.s=carrier[constants.spanIdHeaderNameLowerCase],spanContext.t=carrier[constants.traceIdHeaderNameLowerCase],spanContext.samplingPriority=Number(carrier[constants.traceLevelHeaderNameLowerCase]),isNaN(spanContext.samplingPriority)&&(spanContext.samplingPriority=0),spanContext.baggage={},Object.keys(carrier).forEach(carrierKey=>{var baggageKey;0===carrierKey.indexOf(baggageKeyPrefix)&&(baggageKey=carrierKey.substring(baggageKeyPrefix.length),spanContext.baggage[baggageKey]=valueDecoder(carrier[carrierKey]))}),null!=spanContext.s&&null!=spanContext.t||(spanContext.s=null,spanContext.t=null),spanContext},Tracer.prototype.activate=function(){this._isActive=!0},Tracer.prototype.deactivate=function(){this._isActive=!1};