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
@@ -191,6 +191,9 @@ function isPromise(p) {
191
191
  function isBrowser() {
192
192
  return typeof window !== 'undefined';
193
193
  }
194
+ function isRequestObject(input) {
195
+ return typeof Request !== 'undefined' && input instanceof Request;
196
+ }
194
197
  function redact() {
195
198
  return '********';
196
199
  }
@@ -835,6 +838,70 @@ function merge() {
835
838
  }
836
839
  return result;
837
840
  }
841
+ function shouldAddBaggageHeader(options, tracing, url) {
842
+ var _options$tracing;
843
+ if (!(tracing !== null && tracing !== void 0 && tracing.sessionId) || !url) {
844
+ return false;
845
+ }
846
+ var propagation = options === null || options === void 0 || (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.propagation;
847
+ var enabledHeaders = propagation === null || propagation === void 0 ? void 0 : propagation.enabledHeaders;
848
+ if (!Array.isArray(enabledHeaders) || !enabledHeaders.includes('baggage')) {
849
+ return false;
850
+ }
851
+ var enabledCorsUrls = propagation === null || propagation === void 0 ? void 0 : propagation.enabledCorsUrls;
852
+ if (!Array.isArray(enabledCorsUrls) || enabledCorsUrls.length === 0) {
853
+ return false;
854
+ }
855
+ return enabledCorsUrls.some(function (pattern) {
856
+ if (isType(pattern, 'string')) {
857
+ return url === pattern;
858
+ }
859
+ if (isType(pattern, 'regexp')) {
860
+ return pattern.test(url);
861
+ }
862
+ return false;
863
+ });
864
+ }
865
+ function addHeadersToFetch(args, newHeaders) {
866
+ var _init;
867
+ // Headers may be in the request object or the init object.
868
+ // If present in both places, the init object must be used.
869
+ //
870
+ var init = args[1];
871
+ var initHeaders = (_init = init) === null || _init === void 0 ? void 0 : _init.headers;
872
+ var reqHeaders = isRequestObject(args[0]) && args[0].headers;
873
+ var headers = initHeaders || reqHeaders;
874
+
875
+ // If headers are not present in either place, they are added to the init object.
876
+ // If there is no init object, one must be created and added to args.
877
+ if (!headers) {
878
+ if (!init) {
879
+ args[1] = init = {};
880
+ }
881
+ headers = init.headers = {};
882
+ }
883
+
884
+ // `headers` may be a Headers object or a plain object.
885
+ if (headers instanceof Headers) {
886
+ for (var _i = 0, _Object$keys = Object.keys(newHeaders); _i < _Object$keys.length; _i++) {
887
+ var key = _Object$keys[_i];
888
+ headers.append(key, newHeaders[key]);
889
+ }
890
+ } else if (isObject(headers)) {
891
+ for (var _i2 = 0, _Object$keys2 = Object.keys(newHeaders); _i2 < _Object$keys2.length; _i2++) {
892
+ var _key = _Object$keys2[_i2];
893
+ headers[_key] = newHeaders[_key];
894
+ }
895
+ }
896
+ }
897
+ function getSessionIdFromAsyncLocalStorage(client) {
898
+ var storage = client.asyncLocalStorage;
899
+ if (!storage || typeof storage.getStore !== 'function') {
900
+ return null;
901
+ }
902
+ var store = storage.getStore();
903
+ return (store === null || store === void 0 ? void 0 : store.sessionId) || null;
904
+ }
838
905
 
839
906
  ;// ./src/utility/traverse.js
840
907
 
@@ -2984,7 +3051,7 @@ function _getOTLPTransport(options, url) {
2984
3051
  /**
2985
3052
  * Default options shared across platforms
2986
3053
  */
2987
- var version = '3.0.0';
3054
+ var version = '3.1.0';
2988
3055
  var endpoint = 'api.rollbar.com/api/1/item/';
2989
3056
  var logLevel = 'debug';
2990
3057
  var reportLevel = 'debug';
@@ -4247,9 +4314,11 @@ Rollbar.prototype._log = function (defaultLevel, item) {
4247
4314
  Rollbar.prototype._addItemAttributes = function (item) {
4248
4315
  var _this$tracing, _this$tracing2;
4249
4316
  var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan();
4317
+ var asyncLocalSessionId = getSessionIdFromAsyncLocalStorage(this);
4318
+ var sessionId = asyncLocalSessionId || ((_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId);
4250
4319
  var attributes = [{
4251
4320
  key: 'session_id',
4252
- value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId
4321
+ value: sessionId
4253
4322
  }, {
4254
4323
  key: 'span_id',
4255
4324
  value: span === null || span === void 0 ? void 0 : span.spanId
@@ -6637,7 +6706,16 @@ var Instrumenter = /*#__PURE__*/function () {
6637
6706
  }, this.replacements, 'network');
6638
6707
  utility_replace(xhrp, 'send', function (orig) {
6639
6708
  return function (data) {
6709
+ var _self$rollbar, _xhr$__rollbar_xhr;
6640
6710
  var xhr = this;
6711
+ var tracing = (_self$rollbar = self.rollbar) === null || _self$rollbar === void 0 ? void 0 : _self$rollbar.tracing;
6712
+ if (shouldAddBaggageHeader(self.options, tracing, (_xhr$__rollbar_xhr = xhr.__rollbar_xhr) === null || _xhr$__rollbar_xhr === void 0 ? void 0 : _xhr$__rollbar_xhr.url)) {
6713
+ try {
6714
+ xhr.setRequestHeader('baggage', "rollbar.session.id=".concat(tracing.sessionId));
6715
+ } catch (_e) {
6716
+ /* ignore errors from adding baggage header */
6717
+ }
6718
+ }
6641
6719
  function onreadystatechangeHandler() {
6642
6720
  if (xhr.__rollbar_xhr) {
6643
6721
  if (xhr.__rollbar_xhr.status_code === null) {
@@ -6758,6 +6836,7 @@ var Instrumenter = /*#__PURE__*/function () {
6758
6836
  if ('fetch' in this._window) {
6759
6837
  utility_replace(this._window, 'fetch', function (orig) {
6760
6838
  return function (_fn, _t) {
6839
+ var _self$rollbar2;
6761
6840
  var args = Array.prototype.slice.call(arguments);
6762
6841
  var input = args[0];
6763
6842
  var method = 'GET';
@@ -6774,6 +6853,13 @@ var Instrumenter = /*#__PURE__*/function () {
6774
6853
  if (args[1] && args[1].method) {
6775
6854
  method = args[1].method;
6776
6855
  }
6856
+ var tracing = (_self$rollbar2 = self.rollbar) === null || _self$rollbar2 === void 0 ? void 0 : _self$rollbar2.tracing;
6857
+ if (shouldAddBaggageHeader(self.options, tracing, url)) {
6858
+ var _headers2 = {
6859
+ baggage: "rollbar.session.id=".concat(tracing.sessionId)
6860
+ };
6861
+ addHeadersToFetch(args, _headers2);
6862
+ }
6777
6863
  var metadata = {
6778
6864
  method: method,
6779
6865
  url: url,