lightstep-tracer
Version:
> ❗ **This instrumentation is no longer recommended**. Please review [documentation on setting up and configuring the OpenTelemetry Node.js Launcher](https://github.com/lightstep/otel-launcher-node) or [OpenTelemetry JS (Browser)](https://github.com/open-
147 lines (111 loc) • 4.95 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _each2 = _interopRequireDefault(require("../_each"));
var _span_context_imp = _interopRequireDefault(require("./span_context_imp"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
var CARRIER_TRACER_STATE_PREFIX = 'ot-tracer-';
var CARRIER_BAGGAGE_PREFIX = 'ot-baggage-';
var LightStepPropagator = /*#__PURE__*/function () {
function LightStepPropagator(tracer) {
_classCallCheck(this, LightStepPropagator);
this._tracer = tracer;
this._carrierPrefix = CARRIER_TRACER_STATE_PREFIX;
this._baggagePrefix = CARRIER_BAGGAGE_PREFIX;
}
_createClass(LightStepPropagator, [{
key: "inject",
value: function inject(spanContext, carrier) {
var _this = this;
if (!carrier) {
this._tracer._error('Unexpected null carrier in call to inject');
return;
}
if (_typeof(carrier) !== 'object') {
this._tracer._error("Unexpected '".concat(_typeof(carrier), "' FORMAT_TEXT_MAP carrier in call to inject"));
return;
}
carrier["".concat(this._carrierPrefix, "spanid")] = spanContext._guid;
carrier["".concat(this._carrierPrefix, "traceid")] = spanContext._traceGUID;
carrier["".concat(this._carrierPrefix, "sampled")] = 'true';
spanContext.forEachBaggageItem(function (key, value) {
carrier["".concat(_this._baggagePrefix).concat(key)] = value;
});
return carrier;
}
}, {
key: "extract",
value: function extract(carrier) {
var _this2 = this;
// Iterate over the contents of the carrier and set the properties
// accordingly.
var foundFields = 0;
var spanGUID = null;
var traceGUID = null;
var sampled = true;
(0, _each2["default"])(carrier, function (value, key) {
key = key.toLowerCase();
if (key.substr(0, _this2._carrierPrefix.length) !== _this2._carrierPrefix) {
return;
}
var suffix = key.substr(_this2._carrierPrefix.length);
switch (suffix) {
case 'traceid':
foundFields++;
traceGUID = value;
break;
case 'spanid':
foundFields++;
spanGUID = value;
break;
case 'sampled':
switch (value) {
case 0:
case '0':
case false:
case 'false':
sampled = false;
break;
default:
sampled = true;
break;
}
break;
default:
_this2._tracer._error("Unrecognized carrier key '".concat(key, "' with recognized prefix. Ignoring."));
break;
}
});
if (foundFields === 0) {
// This is not an error per se, there was simply no SpanContext
// in the carrier.
return null;
}
if (foundFields < 2) {
// A partial SpanContext suggests some sort of data corruption.
this._tracer._error("Only found a partial SpanContext: ".concat(carrier));
return null;
}
var spanContext = new _span_context_imp["default"](spanGUID, traceGUID, sampled);
(0, _each2["default"])(carrier, function (value, key) {
key = key.toLowerCase();
if (key.substr(0, _this2._baggagePrefix.length) !== _this2._baggagePrefix) {
return;
}
var suffix = key.substr(_this2._baggagePrefix.length);
spanContext.setBaggageItem(suffix, value);
});
return spanContext;
}
}]);
return LightStepPropagator;
}();
exports["default"] = LightStepPropagator;
module.exports = exports.default;
//# sourceMappingURL=propagator_ls.js.map
;