UNPKG

@opentelemetry/core

Version:

OpenTelemetry Core provides constants and utilities shared by all OpenTelemetry SDK packages.

40 lines (39 loc) • 1.82 kB
const require_suppress_tracing = require("../../trace/suppress-tracing.cjs"); const require_constants = require("../constants.cjs"); const require_utils = require("../utils.cjs"); let _opentelemetry_api = require("@opentelemetry/api"); //#region src/baggage/propagation/W3CBaggagePropagator.ts /** * Propagates {@link Baggage} through Context format propagation. * * Based on the Baggage specification: * https://w3c.github.io/baggage/ */ var W3CBaggagePropagator = class { inject(context, carrier, setter) { const baggage = _opentelemetry_api.propagation.getBaggage(context); if (!baggage || require_suppress_tracing.isTracingSuppressed(context)) return; const keyPairs = require_utils.getKeyPairs(baggage).filter((pair) => { return pair.length <= require_constants.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS; }).slice(0, 180); const headerValue = require_utils.serializeKeyPairs(keyPairs); if (headerValue.length > 0) setter.set(carrier, require_constants.BAGGAGE_HEADER, headerValue); } extract(context, carrier, getter) { const headerValue = getter.get(carrier, require_constants.BAGGAGE_HEADER); if (!headerValue) return context; const baggage = {}; let count = 0; let totalSize = 0; if (Array.isArray(headerValue)) for (let i = 0; i < headerValue.length; i++) [count, totalSize] = require_utils.parseBaggageHeaderString(headerValue[i], baggage, count, totalSize); else [count] = require_utils.parseBaggageHeaderString(headerValue, baggage, count, totalSize); if (count === 0) return context; return _opentelemetry_api.propagation.setBaggage(context, _opentelemetry_api.propagation.createBaggage(baggage)); } fields() { return [require_constants.BAGGAGE_HEADER]; } }; //#endregion exports.W3CBaggagePropagator = W3CBaggagePropagator; //# sourceMappingURL=W3CBaggagePropagator.cjs.map