rollbar 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/rollbar.cjs +260 -3
  2. package/dist/rollbar.js +88 -2
  3. package/dist/rollbar.js.map +1 -1
  4. package/dist/rollbar.min.cjs +1 -1
  5. package/dist/rollbar.min.js +1 -1
  6. package/dist/rollbar.min.js.map +1 -1
  7. package/dist/rollbar.named-amd.js +88 -2
  8. package/dist/rollbar.named-amd.js.map +1 -1
  9. package/dist/rollbar.named-amd.min.js +1 -1
  10. package/dist/rollbar.named-amd.min.js.map +1 -1
  11. package/dist/rollbar.noconflict.umd.js +88 -2
  12. package/dist/rollbar.noconflict.umd.js.map +1 -1
  13. package/dist/rollbar.noconflict.umd.min.js +1 -1
  14. package/dist/rollbar.noconflict.umd.min.js.map +1 -1
  15. package/dist/rollbar.replay.js +88 -2
  16. package/dist/rollbar.replay.js.map +1 -1
  17. package/dist/rollbar.replay.min.js +1 -1
  18. package/dist/rollbar.replay.min.js.map +1 -1
  19. package/dist/rollbar.replay.noconflict.umd.js +88 -2
  20. package/dist/rollbar.replay.noconflict.umd.js.map +1 -1
  21. package/dist/rollbar.replay.noconflict.umd.min.js +1 -1
  22. package/dist/rollbar.replay.noconflict.umd.min.js.map +1 -1
  23. package/dist/rollbar.replay.umd.js +88 -2
  24. package/dist/rollbar.replay.umd.js.map +1 -1
  25. package/dist/rollbar.replay.umd.min.js +1 -1
  26. package/dist/rollbar.replay.umd.min.js.map +1 -1
  27. package/dist/rollbar.snippet.js +1 -1
  28. package/dist/rollbar.umd.js +88 -2
  29. package/dist/rollbar.umd.js.map +1 -1
  30. package/dist/rollbar.umd.min.js +1 -1
  31. package/dist/rollbar.umd.min.js.map +1 -1
  32. package/index.d.ts +15 -0
  33. package/package.json +2 -1
  34. package/src/browser/telemetry.js +25 -0
  35. package/src/defaults.js +1 -1
  36. package/src/rollbar.js +3 -1
  37. package/src/server/middleware/rollbarExpressMiddleware.js +63 -0
  38. package/src/server/rollbar.js +13 -0
  39. package/src/server/telemetry.js +120 -1
  40. package/src/utility.js +70 -0
package/dist/rollbar.cjs CHANGED
@@ -181,6 +181,9 @@ function isPromise(p) {
181
181
  function isBrowser() {
182
182
  return typeof window !== 'undefined';
183
183
  }
184
+ function isRequestObject(input) {
185
+ return typeof Request !== 'undefined' && input instanceof Request;
186
+ }
184
187
  function redact() {
185
188
  return '********';
186
189
  }
@@ -825,6 +828,70 @@ function merge() {
825
828
  }
826
829
  return result;
827
830
  }
831
+ function shouldAddBaggageHeader(options, tracing, url) {
832
+ var _options$tracing;
833
+ if (!(tracing !== null && tracing !== void 0 && tracing.sessionId) || !url) {
834
+ return false;
835
+ }
836
+ var propagation = options === null || options === void 0 || (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.propagation;
837
+ var enabledHeaders = propagation === null || propagation === void 0 ? void 0 : propagation.enabledHeaders;
838
+ if (!Array.isArray(enabledHeaders) || !enabledHeaders.includes('baggage')) {
839
+ return false;
840
+ }
841
+ var enabledCorsUrls = propagation === null || propagation === void 0 ? void 0 : propagation.enabledCorsUrls;
842
+ if (!Array.isArray(enabledCorsUrls) || enabledCorsUrls.length === 0) {
843
+ return false;
844
+ }
845
+ return enabledCorsUrls.some(function (pattern) {
846
+ if (isType(pattern, 'string')) {
847
+ return url === pattern;
848
+ }
849
+ if (isType(pattern, 'regexp')) {
850
+ return pattern.test(url);
851
+ }
852
+ return false;
853
+ });
854
+ }
855
+ function addHeadersToFetch(args, newHeaders) {
856
+ var _init;
857
+ // Headers may be in the request object or the init object.
858
+ // If present in both places, the init object must be used.
859
+ //
860
+ var init = args[1];
861
+ var initHeaders = (_init = init) === null || _init === void 0 ? void 0 : _init.headers;
862
+ var reqHeaders = isRequestObject(args[0]) && args[0].headers;
863
+ var headers = initHeaders || reqHeaders;
864
+
865
+ // If headers are not present in either place, they are added to the init object.
866
+ // If there is no init object, one must be created and added to args.
867
+ if (!headers) {
868
+ if (!init) {
869
+ args[1] = init = {};
870
+ }
871
+ headers = init.headers = {};
872
+ }
873
+
874
+ // `headers` may be a Headers object or a plain object.
875
+ if (headers instanceof Headers) {
876
+ for (var _i = 0, _Object$keys = Object.keys(newHeaders); _i < _Object$keys.length; _i++) {
877
+ var key = _Object$keys[_i];
878
+ headers.append(key, newHeaders[key]);
879
+ }
880
+ } else if (isObject(headers)) {
881
+ for (var _i2 = 0, _Object$keys2 = Object.keys(newHeaders); _i2 < _Object$keys2.length; _i2++) {
882
+ var _key = _Object$keys2[_i2];
883
+ headers[_key] = newHeaders[_key];
884
+ }
885
+ }
886
+ }
887
+ function getSessionIdFromAsyncLocalStorage(client) {
888
+ var storage = client.asyncLocalStorage;
889
+ if (!storage || typeof storage.getStore !== 'function') {
890
+ return null;
891
+ }
892
+ var store = storage.getStore();
893
+ return (store === null || store === void 0 ? void 0 : store.sessionId) || null;
894
+ }
828
895
 
829
896
  ;// ./src/apiUtility.js
830
897
 
@@ -1130,7 +1197,7 @@ function _getOTLPTransport(options, url) {
1130
1197
  /**
1131
1198
  * Default options shared across platforms
1132
1199
  */
1133
- var version = '3.0.0';
1200
+ var version = '3.1.0';
1134
1201
  var endpoint = 'api.rollbar.com/api/1/item/';
1135
1202
  var logLevel = 'debug';
1136
1203
  var reportLevel = 'debug';
@@ -2167,9 +2234,11 @@ Rollbar.prototype._log = function (defaultLevel, item) {
2167
2234
  Rollbar.prototype._addItemAttributes = function (item) {
2168
2235
  var _this$tracing, _this$tracing2;
2169
2236
  var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan();
2237
+ var asyncLocalSessionId = getSessionIdFromAsyncLocalStorage(this);
2238
+ var sessionId = asyncLocalSessionId || ((_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId);
2170
2239
  var attributes = [{
2171
2240
  key: 'session_id',
2172
- value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId
2241
+ value: sessionId
2173
2242
  }, {
2174
2243
  key: 'span_id',
2175
2244
  value: span === null || span === void 0 ? void 0 : span.spanId
@@ -3098,6 +3167,83 @@ function defaults_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r
3098
3167
  var notifierName = 'node_rollbar';
3099
3168
  var scrubHeaders = commonScrubHeaders;
3100
3169
  var scrubFields = [].concat(_toConsumableArray(commonScrubFields), _toConsumableArray(apiScrubFields), _toConsumableArray(requestScrubFields));
3170
+ ;// external "node:async_hooks"
3171
+ const external_node_async_hooks_namespaceObject = require("node:async_hooks");
3172
+ ;// ./src/server/middleware/rollbarExpressMiddleware.js
3173
+ function rollbarExpressMiddleware_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = rollbarExpressMiddleware_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
3174
+ function rollbarExpressMiddleware_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return rollbarExpressMiddleware_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? rollbarExpressMiddleware_arrayLikeToArray(r, a) : void 0; } }
3175
+ function rollbarExpressMiddleware_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
3176
+
3177
+ function extractSessionId(headerValue) {
3178
+ if (!headerValue) {
3179
+ return null;
3180
+ }
3181
+ var rawValue = Array.isArray(headerValue) ? headerValue.join(',') : headerValue;
3182
+ if (typeof rawValue !== 'string') {
3183
+ return null;
3184
+ }
3185
+ var entries = rawValue.split(',');
3186
+ var _iterator = rollbarExpressMiddleware_createForOfIteratorHelper(entries),
3187
+ _step;
3188
+ try {
3189
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
3190
+ var entry = _step.value;
3191
+ var trimmed = entry.trim();
3192
+ if (!trimmed) {
3193
+ continue;
3194
+ }
3195
+ var equalsIndex = trimmed.indexOf('=');
3196
+ if (equalsIndex === -1) {
3197
+ continue;
3198
+ }
3199
+ var key = trimmed.slice(0, equalsIndex).trim();
3200
+ if (key !== 'rollbar.session.id') {
3201
+ continue;
3202
+ }
3203
+ var value = trimmed.slice(equalsIndex + 1).trim();
3204
+ if (!value) {
3205
+ return null;
3206
+ }
3207
+ try {
3208
+ return decodeURIComponent(value);
3209
+ } catch (_e) {
3210
+ return value;
3211
+ }
3212
+ }
3213
+ } catch (err) {
3214
+ _iterator.e(err);
3215
+ } finally {
3216
+ _iterator.f();
3217
+ }
3218
+ return null;
3219
+ }
3220
+ function getBaggageHeader(req) {
3221
+ var _req$headers;
3222
+ if (!req) {
3223
+ return null;
3224
+ }
3225
+ if (typeof req.get === 'function') {
3226
+ return req.get('baggage');
3227
+ }
3228
+ return ((_req$headers = req.headers) === null || _req$headers === void 0 ? void 0 : _req$headers.baggage) || null;
3229
+ }
3230
+ function rollbarExpressMiddleware(rollbar) {
3231
+ var storage = (rollbar === null || rollbar === void 0 ? void 0 : rollbar.client.asyncLocalStorage) || new external_node_async_hooks_namespaceObject.AsyncLocalStorage();
3232
+ if (rollbar) {
3233
+ rollbar.client.asyncLocalStorage = storage;
3234
+ }
3235
+ return function rollbarExpressMiddlewareHandler(req, _res, next) {
3236
+ var sessionId = extractSessionId(getBaggageHeader(req));
3237
+ if (!sessionId) {
3238
+ return next();
3239
+ }
3240
+ return storage.run({
3241
+ sessionId: sessionId
3242
+ }, function () {
3243
+ return next();
3244
+ });
3245
+ };
3246
+ }
3101
3247
  ;// external "http"
3102
3248
  const external_http_namespaceObject = require("http");
3103
3249
  ;// external "https"
@@ -3246,6 +3392,9 @@ Instrumenter.prototype.deinstrumentNetwork = function () {
3246
3392
  Instrumenter.prototype.instrumentNetwork = function () {
3247
3393
  utility_replace(external_http_namespaceObject, 'request', networkRequestWrapper.bind(this), this.replacements, 'network');
3248
3394
  utility_replace(external_https_namespaceObject, 'request', networkRequestWrapper.bind(this), this.replacements, 'network');
3395
+ if (typeof globalThis.fetch === 'function') {
3396
+ utility_replace(globalThis, 'fetch', fetchRequestWrapper.bind(this), this.replacements, 'network');
3397
+ }
3249
3398
  };
3250
3399
  function networkRequestWrapper(orig) {
3251
3400
  var _this = this;
@@ -3258,9 +3407,19 @@ function networkRequestWrapper(orig) {
3258
3407
  options = args[1],
3259
3408
  cb = args[2];
3260
3409
  var mergedOptions = mergeOptions(url, options, cb);
3410
+ var requestUrl = constructUrl(mergedOptions.options);
3411
+ var sessionId = getSessionIdFromAsyncLocalStorage(_this.rollbar.client);
3412
+ if (sessionId && shouldAddBaggageHeader(_this.options, {
3413
+ sessionId: sessionId
3414
+ }, requestUrl)) {
3415
+ if (!mergedOptions.options.headers) {
3416
+ mergedOptions.options.headers = {};
3417
+ }
3418
+ mergedOptions.options.headers.baggage = "rollbar.session.id=".concat(sessionId);
3419
+ }
3261
3420
  var metadata = {
3262
3421
  method: mergedOptions.options.method || 'GET',
3263
- url: constructUrl(mergedOptions.options),
3422
+ url: requestUrl,
3264
3423
  status_code: null,
3265
3424
  start_time_ms: now(),
3266
3425
  end_time_ms: null
@@ -3295,6 +3454,93 @@ function responseCallbackWrapper(options, metadata, callback) {
3295
3454
  }
3296
3455
  };
3297
3456
  }
3457
+ function fetchRequestWrapper(orig) {
3458
+ var _this2 = this;
3459
+ var telemeter = this.telemeter;
3460
+ return function () {
3461
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
3462
+ args[_key2] = arguments[_key2];
3463
+ }
3464
+ var input = args[0];
3465
+ var init = args[1];
3466
+ var method = 'GET';
3467
+ var url;
3468
+ var sessionId = getSessionIdFromAsyncLocalStorage(_this2.rollbar.client);
3469
+ if (isType(input, 'string') || input instanceof URL) {
3470
+ url = input.toString();
3471
+ } else if (input) {
3472
+ url = input.url;
3473
+ if (input.method) {
3474
+ method = input.method;
3475
+ }
3476
+ }
3477
+ if (init && init.method) {
3478
+ method = init.method;
3479
+ }
3480
+ if (sessionId && shouldAddBaggageHeader(_this2.options, {
3481
+ sessionId: sessionId
3482
+ }, url)) {
3483
+ var headers = {
3484
+ baggage: "rollbar.session.id=".concat(sessionId)
3485
+ };
3486
+ addHeadersToFetch(args, headers);
3487
+ }
3488
+ var metadata = {
3489
+ method: method,
3490
+ url: url,
3491
+ status_code: null,
3492
+ start_time_ms: now(),
3493
+ end_time_ms: null
3494
+ };
3495
+ if (_this2.autoInstrument.networkRequestHeaders) {
3496
+ var requestHeaders = normalizeFetchHeaders(init && init.headers ? init.headers : input && input.headers);
3497
+ if (requestHeaders) {
3498
+ metadata.request_headers = requestHeaders;
3499
+ }
3500
+ }
3501
+ telemeter.captureNetwork(metadata, 'fetch');
3502
+ return orig.apply(globalThis, args).then(function (res) {
3503
+ metadata.end_time_ms = now();
3504
+ metadata.status_code = res.status;
3505
+ if (_this2.autoInstrument.networkResponseHeaders) {
3506
+ var responseHeaders = normalizeFetchHeaders(res.headers);
3507
+ if (responseHeaders) {
3508
+ metadata.response = metadata.response || {};
3509
+ metadata.response.headers = responseHeaders;
3510
+ }
3511
+ }
3512
+ return res;
3513
+ }, function (err) {
3514
+ metadata.end_time_ms = now();
3515
+ metadata.status_code = 0;
3516
+ metadata.error = [err.name, err.message].join(': ');
3517
+ throw err;
3518
+ });
3519
+ };
3520
+ }
3521
+ function normalizeFetchHeaders(headers) {
3522
+ if (!headers) return null;
3523
+ if (typeof headers.forEach === 'function') {
3524
+ var normalized = {};
3525
+ headers.forEach(function (value, key) {
3526
+ normalized[key] = value;
3527
+ });
3528
+ return normalized;
3529
+ }
3530
+ if (Array.isArray(headers)) {
3531
+ var _normalized = {};
3532
+ headers.forEach(function (pair) {
3533
+ if (pair && pair.length > 1) {
3534
+ _normalized[pair[0]] = pair[1];
3535
+ }
3536
+ });
3537
+ return _normalized;
3538
+ }
3539
+ if (isType(headers, 'object')) {
3540
+ return headers;
3541
+ }
3542
+ return null;
3543
+ }
3298
3544
  Instrumenter.prototype.captureNetwork = function (metadata, subtype, rollbarUUID) {
3299
3545
  return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);
3300
3546
  };
@@ -4434,6 +4680,7 @@ function _currentTime() {
4434
4680
 
4435
4681
 
4436
4682
 
4683
+
4437
4684
  function rollbar_Rollbar(options, client) {
4438
4685
  if (isType(options, 'string')) {
4439
4686
  var accessToken = options;
@@ -4839,6 +5086,16 @@ rollbar_Rollbar.wrapCallback = function (f) {
4839
5086
  handleUninitialized();
4840
5087
  }
4841
5088
  };
5089
+ rollbar_Rollbar.prototype.expressMiddleware = function () {
5090
+ return rollbarExpressMiddleware(this);
5091
+ };
5092
+ rollbar_Rollbar.expressMiddleware = function () {
5093
+ if (_instance) {
5094
+ return rollbarExpressMiddleware(_instance);
5095
+ }
5096
+ handleUninitialized();
5097
+ return undefined;
5098
+ };
4842
5099
  rollbar_Rollbar.prototype.captureEvent = function () {
4843
5100
  var event = createTelemetryEvent(arguments);
4844
5101
  return this.client.captureEvent(event.type, event.metadata, event.level);
package/dist/rollbar.js CHANGED
@@ -187,6 +187,9 @@ function isPromise(p) {
187
187
  function isBrowser() {
188
188
  return typeof window !== 'undefined';
189
189
  }
190
+ function isRequestObject(input) {
191
+ return typeof Request !== 'undefined' && input instanceof Request;
192
+ }
190
193
  function redact() {
191
194
  return '********';
192
195
  }
@@ -831,6 +834,70 @@ function merge() {
831
834
  }
832
835
  return result;
833
836
  }
837
+ function shouldAddBaggageHeader(options, tracing, url) {
838
+ var _options$tracing;
839
+ if (!(tracing !== null && tracing !== void 0 && tracing.sessionId) || !url) {
840
+ return false;
841
+ }
842
+ var propagation = options === null || options === void 0 || (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.propagation;
843
+ var enabledHeaders = propagation === null || propagation === void 0 ? void 0 : propagation.enabledHeaders;
844
+ if (!Array.isArray(enabledHeaders) || !enabledHeaders.includes('baggage')) {
845
+ return false;
846
+ }
847
+ var enabledCorsUrls = propagation === null || propagation === void 0 ? void 0 : propagation.enabledCorsUrls;
848
+ if (!Array.isArray(enabledCorsUrls) || enabledCorsUrls.length === 0) {
849
+ return false;
850
+ }
851
+ return enabledCorsUrls.some(function (pattern) {
852
+ if (isType(pattern, 'string')) {
853
+ return url === pattern;
854
+ }
855
+ if (isType(pattern, 'regexp')) {
856
+ return pattern.test(url);
857
+ }
858
+ return false;
859
+ });
860
+ }
861
+ function addHeadersToFetch(args, newHeaders) {
862
+ var _init;
863
+ // Headers may be in the request object or the init object.
864
+ // If present in both places, the init object must be used.
865
+ //
866
+ var init = args[1];
867
+ var initHeaders = (_init = init) === null || _init === void 0 ? void 0 : _init.headers;
868
+ var reqHeaders = isRequestObject(args[0]) && args[0].headers;
869
+ var headers = initHeaders || reqHeaders;
870
+
871
+ // If headers are not present in either place, they are added to the init object.
872
+ // If there is no init object, one must be created and added to args.
873
+ if (!headers) {
874
+ if (!init) {
875
+ args[1] = init = {};
876
+ }
877
+ headers = init.headers = {};
878
+ }
879
+
880
+ // `headers` may be a Headers object or a plain object.
881
+ if (headers instanceof Headers) {
882
+ for (var _i = 0, _Object$keys = Object.keys(newHeaders); _i < _Object$keys.length; _i++) {
883
+ var key = _Object$keys[_i];
884
+ headers.append(key, newHeaders[key]);
885
+ }
886
+ } else if (isObject(headers)) {
887
+ for (var _i2 = 0, _Object$keys2 = Object.keys(newHeaders); _i2 < _Object$keys2.length; _i2++) {
888
+ var _key = _Object$keys2[_i2];
889
+ headers[_key] = newHeaders[_key];
890
+ }
891
+ }
892
+ }
893
+ function getSessionIdFromAsyncLocalStorage(client) {
894
+ var storage = client.asyncLocalStorage;
895
+ if (!storage || typeof storage.getStore !== 'function') {
896
+ return null;
897
+ }
898
+ var store = storage.getStore();
899
+ return (store === null || store === void 0 ? void 0 : store.sessionId) || null;
900
+ }
834
901
 
835
902
  ;// ./src/utility/traverse.js
836
903
 
@@ -2980,7 +3047,7 @@ function _getOTLPTransport(options, url) {
2980
3047
  /**
2981
3048
  * Default options shared across platforms
2982
3049
  */
2983
- var version = '3.0.0';
3050
+ var version = '3.1.0';
2984
3051
  var endpoint = 'api.rollbar.com/api/1/item/';
2985
3052
  var logLevel = 'debug';
2986
3053
  var reportLevel = 'debug';
@@ -4243,9 +4310,11 @@ Rollbar.prototype._log = function (defaultLevel, item) {
4243
4310
  Rollbar.prototype._addItemAttributes = function (item) {
4244
4311
  var _this$tracing, _this$tracing2;
4245
4312
  var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan();
4313
+ var asyncLocalSessionId = getSessionIdFromAsyncLocalStorage(this);
4314
+ var sessionId = asyncLocalSessionId || ((_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId);
4246
4315
  var attributes = [{
4247
4316
  key: 'session_id',
4248
- value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId
4317
+ value: sessionId
4249
4318
  }, {
4250
4319
  key: 'span_id',
4251
4320
  value: span === null || span === void 0 ? void 0 : span.spanId
@@ -6633,7 +6702,16 @@ var Instrumenter = /*#__PURE__*/function () {
6633
6702
  }, this.replacements, 'network');
6634
6703
  utility_replace(xhrp, 'send', function (orig) {
6635
6704
  return function (data) {
6705
+ var _self$rollbar, _xhr$__rollbar_xhr;
6636
6706
  var xhr = this;
6707
+ var tracing = (_self$rollbar = self.rollbar) === null || _self$rollbar === void 0 ? void 0 : _self$rollbar.tracing;
6708
+ if (shouldAddBaggageHeader(self.options, tracing, (_xhr$__rollbar_xhr = xhr.__rollbar_xhr) === null || _xhr$__rollbar_xhr === void 0 ? void 0 : _xhr$__rollbar_xhr.url)) {
6709
+ try {
6710
+ xhr.setRequestHeader('baggage', "rollbar.session.id=".concat(tracing.sessionId));
6711
+ } catch (_e) {
6712
+ /* ignore errors from adding baggage header */
6713
+ }
6714
+ }
6637
6715
  function onreadystatechangeHandler() {
6638
6716
  if (xhr.__rollbar_xhr) {
6639
6717
  if (xhr.__rollbar_xhr.status_code === null) {
@@ -6754,6 +6832,7 @@ var Instrumenter = /*#__PURE__*/function () {
6754
6832
  if ('fetch' in this._window) {
6755
6833
  utility_replace(this._window, 'fetch', function (orig) {
6756
6834
  return function (_fn, _t) {
6835
+ var _self$rollbar2;
6757
6836
  var args = Array.prototype.slice.call(arguments);
6758
6837
  var input = args[0];
6759
6838
  var method = 'GET';
@@ -6770,6 +6849,13 @@ var Instrumenter = /*#__PURE__*/function () {
6770
6849
  if (args[1] && args[1].method) {
6771
6850
  method = args[1].method;
6772
6851
  }
6852
+ var tracing = (_self$rollbar2 = self.rollbar) === null || _self$rollbar2 === void 0 ? void 0 : _self$rollbar2.tracing;
6853
+ if (shouldAddBaggageHeader(self.options, tracing, url)) {
6854
+ var _headers2 = {
6855
+ baggage: "rollbar.session.id=".concat(tracing.sessionId)
6856
+ };
6857
+ addHeadersToFetch(args, _headers2);
6858
+ }
6773
6859
  var metadata = {
6774
6860
  method: method,
6775
6861
  url: url,