UNPKG

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
"use strict"; 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