Repository URL to install this package:
|
Version:
0.6.4 ▾
|
/*
* (c) Copyright IBM Corp. 2021
* (c) Copyright Instana Inc. and contributors 2016
*/
'use strict';
exports.traceIdHeaderName = 'X-SUPERTENANT-T';
exports.traceIdHeaderNameLowerCase = exports.traceIdHeaderName.toLowerCase();
exports.spanIdHeaderName = 'X-SUPERTENANT-S';
exports.spanIdHeaderNameLowerCase = exports.spanIdHeaderName.toLowerCase();
exports.traceLevelHeaderName = 'X-SUPERTENANT-L';
exports.traceLevelHeaderNameLowerCase = exports.traceLevelHeaderName.toLowerCase();
exports.syntheticHeaderName = 'X-SUPERTENANT-SYNTHETIC';
exports.syntheticHeaderNameLowerCase = exports.syntheticHeaderName.toLowerCase();
// legacy kafka trace correlation (binary values)
exports.kafkaLegacyTraceContextHeaderName = 'X_SUPERTENANT_C';
exports.kafkaLegacyTraceLevelHeaderName = 'X_SUPERTENANT_L';
exports.kafkaLegacyTraceLevelValueSuppressed = Buffer.from([0]);
exports.kafkaLegacyTraceLevelValueInherit = Buffer.from([1]);
// New kafka trace correlation (string values). Available as opt-in since 2021-10, and send out together with the legacy
// binary headers by default starting in 2022-10. We will switch over to these headers completely (omitting the legacy
// headers approximately in 2023-10.
exports.kafkaTraceIdHeaderName = 'X_SUPERTENANT_T';
exports.kafkaSpanIdHeaderName = 'X_SUPERTENANT_S';
exports.kafkaTraceLevelHeaderName = 'X_SUPERTENANT_L_S';
/**
* @typedef {'binary' | 'string' | 'both'} KafkaTraceCorrelationFormat
*/
// With the current phase 1 of the Kafka header format migration, 'both', is the default.
// With phase 2 (starting approximately October 2023) it will no longer be configurable and will always use 'string'.
/** @type {KafkaTraceCorrelationFormat} */
exports.kafkaHeaderFormatDefault = 'both';
exports.kafkaTraceCorrelationDefault = true;
exports.allInstanaKafkaHeaders = [
exports.kafkaTraceIdHeaderName,
exports.kafkaSpanIdHeaderName,
exports.kafkaTraceLevelHeaderName,
exports.kafkaLegacyTraceContextHeaderName,
exports.kafkaLegacyTraceLevelHeaderName
];
exports.w3cTraceParent = 'traceparent';
exports.w3cTraceState = 'tracestate';
exports.w3cInstana = 'in';
exports.w3cInstanaEquals = `${exports.w3cInstana}=`;
exports.serviceNameHeaderName = 'X-Supertenant-Service';
exports.serviceNameHeaderNameLowerCase = exports.serviceNameHeaderName.toLowerCase();
exports.ENTRY = 1;
exports.EXIT = 2;
exports.INTERMEDIATE = 3;
exports.SDK = {
ENTRY: 'entry',
EXIT: 'exit',
INTERMEDIATE: 'intermediate'
};
exports.sqsAttributeNames = {
TRACE_ID: 'X_SUPERTENANT_T',
SPAN_ID: 'X_SUPERTENANT_S',
LEVEL: 'X_SUPERTENANT_L'
};
exports.snsSqsInstanaHeaderPrefixRegex = /"X_SUPERTENANT_/i;
/**
* Determine if <span> is an entry span (server span).
* @param {import('./cls').InstanaBaseSpan} span
* @returns {boolean}
*/
exports.isEntrySpan = function isEntrySpan(span) {
return span && span.k === exports.ENTRY;
};
/**
* Determine if <span> is an exit span (client span).
* @param {import('./cls').InstanaBaseSpan} span
* @returns {boolean}
*/
exports.isExitSpan = function isExitSpan(span) {
return span && span.k === exports.EXIT;
};
/**
* Determine if <span> is an intermediate span (local span).
* @param {import('./cls').InstanaBaseSpan} span
* @returns {boolean}
*/
exports.isIntermediateSpan = function isIntermediateSpan(span) {
return span && span.k === exports.INTERMEDIATE;
};