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 / constants.js
Size: Mime:
/*
 * (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;
};