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
@@ -201,6 +201,9 @@ function isPromise(p) {
201
201
  function isBrowser() {
202
202
  return typeof window !== 'undefined';
203
203
  }
204
+ function isRequestObject(input) {
205
+ return typeof Request !== 'undefined' && input instanceof Request;
206
+ }
204
207
  function redact() {
205
208
  return '********';
206
209
  }
@@ -845,6 +848,70 @@ function merge() {
845
848
  }
846
849
  return result;
847
850
  }
851
+ function shouldAddBaggageHeader(options, tracing, url) {
852
+ var _options$tracing;
853
+ if (!(tracing !== null && tracing !== void 0 && tracing.sessionId) || !url) {
854
+ return false;
855
+ }
856
+ var propagation = options === null || options === void 0 || (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.propagation;
857
+ var enabledHeaders = propagation === null || propagation === void 0 ? void 0 : propagation.enabledHeaders;
858
+ if (!Array.isArray(enabledHeaders) || !enabledHeaders.includes('baggage')) {
859
+ return false;
860
+ }
861
+ var enabledCorsUrls = propagation === null || propagation === void 0 ? void 0 : propagation.enabledCorsUrls;
862
+ if (!Array.isArray(enabledCorsUrls) || enabledCorsUrls.length === 0) {
863
+ return false;
864
+ }
865
+ return enabledCorsUrls.some(function (pattern) {
866
+ if (isType(pattern, 'string')) {
867
+ return url === pattern;
868
+ }
869
+ if (isType(pattern, 'regexp')) {
870
+ return pattern.test(url);
871
+ }
872
+ return false;
873
+ });
874
+ }
875
+ function addHeadersToFetch(args, newHeaders) {
876
+ var _init;
877
+ // Headers may be in the request object or the init object.
878
+ // If present in both places, the init object must be used.
879
+ //
880
+ var init = args[1];
881
+ var initHeaders = (_init = init) === null || _init === void 0 ? void 0 : _init.headers;
882
+ var reqHeaders = isRequestObject(args[0]) && args[0].headers;
883
+ var headers = initHeaders || reqHeaders;
884
+
885
+ // If headers are not present in either place, they are added to the init object.
886
+ // If there is no init object, one must be created and added to args.
887
+ if (!headers) {
888
+ if (!init) {
889
+ args[1] = init = {};
890
+ }
891
+ headers = init.headers = {};
892
+ }
893
+
894
+ // `headers` may be a Headers object or a plain object.
895
+ if (headers instanceof Headers) {
896
+ for (var _i = 0, _Object$keys = Object.keys(newHeaders); _i < _Object$keys.length; _i++) {
897
+ var key = _Object$keys[_i];
898
+ headers.append(key, newHeaders[key]);
899
+ }
900
+ } else if (isObject(headers)) {
901
+ for (var _i2 = 0, _Object$keys2 = Object.keys(newHeaders); _i2 < _Object$keys2.length; _i2++) {
902
+ var _key = _Object$keys2[_i2];
903
+ headers[_key] = newHeaders[_key];
904
+ }
905
+ }
906
+ }
907
+ function getSessionIdFromAsyncLocalStorage(client) {
908
+ var storage = client.asyncLocalStorage;
909
+ if (!storage || typeof storage.getStore !== 'function') {
910
+ return null;
911
+ }
912
+ var store = storage.getStore();
913
+ return (store === null || store === void 0 ? void 0 : store.sessionId) || null;
914
+ }
848
915
 
849
916
  ;// ./src/utility/traverse.js
850
917
 
@@ -2994,7 +3061,7 @@ function _getOTLPTransport(options, url) {
2994
3061
  /**
2995
3062
  * Default options shared across platforms
2996
3063
  */
2997
- var version = '3.0.0';
3064
+ var version = '3.1.0';
2998
3065
  var endpoint = 'api.rollbar.com/api/1/item/';
2999
3066
  var logLevel = 'debug';
3000
3067
  var reportLevel = 'debug';
@@ -4257,9 +4324,11 @@ Rollbar.prototype._log = function (defaultLevel, item) {
4257
4324
  Rollbar.prototype._addItemAttributes = function (item) {
4258
4325
  var _this$tracing, _this$tracing2;
4259
4326
  var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan();
4327
+ var asyncLocalSessionId = getSessionIdFromAsyncLocalStorage(this);
4328
+ var sessionId = asyncLocalSessionId || ((_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId);
4260
4329
  var attributes = [{
4261
4330
  key: 'session_id',
4262
- value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId
4331
+ value: sessionId
4263
4332
  }, {
4264
4333
  key: 'span_id',
4265
4334
  value: span === null || span === void 0 ? void 0 : span.spanId
@@ -22521,7 +22590,16 @@ var Instrumenter = /*#__PURE__*/function () {
22521
22590
  }, this.replacements, 'network');
22522
22591
  utility_replace(xhrp, 'send', function (orig) {
22523
22592
  return function (data) {
22593
+ var _self$rollbar, _xhr$__rollbar_xhr;
22524
22594
  var xhr = this;
22595
+ var tracing = (_self$rollbar = self.rollbar) === null || _self$rollbar === void 0 ? void 0 : _self$rollbar.tracing;
22596
+ if (shouldAddBaggageHeader(self.options, tracing, (_xhr$__rollbar_xhr = xhr.__rollbar_xhr) === null || _xhr$__rollbar_xhr === void 0 ? void 0 : _xhr$__rollbar_xhr.url)) {
22597
+ try {
22598
+ xhr.setRequestHeader('baggage', "rollbar.session.id=".concat(tracing.sessionId));
22599
+ } catch (_e) {
22600
+ /* ignore errors from adding baggage header */
22601
+ }
22602
+ }
22525
22603
  function onreadystatechangeHandler() {
22526
22604
  if (xhr.__rollbar_xhr) {
22527
22605
  if (xhr.__rollbar_xhr.status_code === null) {
@@ -22642,6 +22720,7 @@ var Instrumenter = /*#__PURE__*/function () {
22642
22720
  if ('fetch' in this._window) {
22643
22721
  utility_replace(this._window, 'fetch', function (orig) {
22644
22722
  return function (_fn, _t) {
22723
+ var _self$rollbar2;
22645
22724
  var args = Array.prototype.slice.call(arguments);
22646
22725
  var input = args[0];
22647
22726
  var method = 'GET';
@@ -22658,6 +22737,13 @@ var Instrumenter = /*#__PURE__*/function () {
22658
22737
  if (args[1] && args[1].method) {
22659
22738
  method = args[1].method;
22660
22739
  }
22740
+ var tracing = (_self$rollbar2 = self.rollbar) === null || _self$rollbar2 === void 0 ? void 0 : _self$rollbar2.tracing;
22741
+ if (shouldAddBaggageHeader(self.options, tracing, url)) {
22742
+ var _headers2 = {
22743
+ baggage: "rollbar.session.id=".concat(tracing.sessionId)
22744
+ };
22745
+ addHeadersToFetch(args, _headers2);
22746
+ }
22661
22747
  var metadata = {
22662
22748
  method: method,
22663
22749
  url: url,