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
@@ -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
@@ -22507,7 +22576,16 @@ var Instrumenter = /*#__PURE__*/function () {
22507
22576
  }, this.replacements, 'network');
22508
22577
  utility_replace(xhrp, 'send', function (orig) {
22509
22578
  return function (data) {
22579
+ var _self$rollbar, _xhr$__rollbar_xhr;
22510
22580
  var xhr = this;
22581
+ var tracing = (_self$rollbar = self.rollbar) === null || _self$rollbar === void 0 ? void 0 : _self$rollbar.tracing;
22582
+ if (shouldAddBaggageHeader(self.options, tracing, (_xhr$__rollbar_xhr = xhr.__rollbar_xhr) === null || _xhr$__rollbar_xhr === void 0 ? void 0 : _xhr$__rollbar_xhr.url)) {
22583
+ try {
22584
+ xhr.setRequestHeader('baggage', "rollbar.session.id=".concat(tracing.sessionId));
22585
+ } catch (_e) {
22586
+ /* ignore errors from adding baggage header */
22587
+ }
22588
+ }
22511
22589
  function onreadystatechangeHandler() {
22512
22590
  if (xhr.__rollbar_xhr) {
22513
22591
  if (xhr.__rollbar_xhr.status_code === null) {
@@ -22628,6 +22706,7 @@ var Instrumenter = /*#__PURE__*/function () {
22628
22706
  if ('fetch' in this._window) {
22629
22707
  utility_replace(this._window, 'fetch', function (orig) {
22630
22708
  return function (_fn, _t) {
22709
+ var _self$rollbar2;
22631
22710
  var args = Array.prototype.slice.call(arguments);
22632
22711
  var input = args[0];
22633
22712
  var method = 'GET';
@@ -22644,6 +22723,13 @@ var Instrumenter = /*#__PURE__*/function () {
22644
22723
  if (args[1] && args[1].method) {
22645
22724
  method = args[1].method;
22646
22725
  }
22726
+ var tracing = (_self$rollbar2 = self.rollbar) === null || _self$rollbar2 === void 0 ? void 0 : _self$rollbar2.tracing;
22727
+ if (shouldAddBaggageHeader(self.options, tracing, url)) {
22728
+ var _headers2 = {
22729
+ baggage: "rollbar.session.id=".concat(tracing.sessionId)
22730
+ };
22731
+ addHeadersToFetch(args, _headers2);
22732
+ }
22647
22733
  var metadata = {
22648
22734
  method: method,
22649
22735
  url: url,