@opentelemetry/core
Version:
OpenTelemetry Core provides constants and utilities shared by all OpenTelemetry SDK packages.
40 lines (39 loc) • 1.82 kB
JavaScript
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