rollbar 2.25.0 → 2.25.2

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.
package/dist/rollbar.js CHANGED
@@ -1349,10 +1349,10 @@ module.exports = rollbar;
1349
1349
  var Rollbar = __webpack_require__(8);
1350
1350
  var telemeter = __webpack_require__(28);
1351
1351
  var instrumenter = __webpack_require__(29);
1352
- var polyfillJSON = __webpack_require__(31);
1353
- var wrapGlobals = __webpack_require__(33);
1352
+ var polyfillJSON = __webpack_require__(32);
1353
+ var wrapGlobals = __webpack_require__(34);
1354
1354
  var scrub = __webpack_require__(4);
1355
- var truncation = __webpack_require__(34);
1355
+ var truncation = __webpack_require__(35);
1356
1356
 
1357
1357
  Rollbar.setComponents({
1358
1358
  telemeter: telemeter,
@@ -2897,7 +2897,12 @@ function Api(options, transport, urllib, truncation, jsonBackup) {
2897
2897
  Api.prototype.postItem = function(data, callback) {
2898
2898
  var transportOptions = helpers.transportOptions(this.transportOptions, 'POST');
2899
2899
  var payload = helpers.buildPayload(this.accessToken, data, this.jsonBackup);
2900
- this.transport.post(this.accessToken, transportOptions, payload, callback);
2900
+ var self = this;
2901
+
2902
+ // ensure the network request is scheduled after the current tick.
2903
+ setTimeout(function() {
2904
+ self.transport.post(self.accessToken, transportOptions, payload, callback);
2905
+ }, 0);
2901
2906
  };
2902
2907
 
2903
2908
  /**
@@ -3582,20 +3587,25 @@ function addBaseInfo(item, options, callback) {
3582
3587
 
3583
3588
  function addRequestInfo(window) {
3584
3589
  return function(item, options, callback) {
3585
- if (!window || !window.location) {
3586
- return callback(null, item);
3590
+ var requestInfo = {};
3591
+
3592
+ if (window && window.location) {
3593
+ requestInfo.url = window.location.href;
3594
+ requestInfo.query_string = window.location.search;
3587
3595
  }
3596
+
3588
3597
  var remoteString = '$remote_ip';
3589
3598
  if (!options.captureIp) {
3590
3599
  remoteString = null;
3591
3600
  } else if (options.captureIp !== true) {
3592
3601
  remoteString += '_anonymize';
3593
3602
  }
3594
- _.set(item, 'data.request', {
3595
- url: window.location.href,
3596
- query_string: window.location.search,
3597
- user_ip: remoteString
3598
- });
3603
+ if (remoteString) requestInfo.user_ip = remoteString;
3604
+
3605
+ if (Object.keys(requestInfo).length > 0) {
3606
+ _.set(item, 'data.request', requestInfo);
3607
+ }
3608
+
3599
3609
  callback(null, item);
3600
3610
  };
3601
3611
  }
@@ -4579,7 +4589,7 @@ module.exports = {
4579
4589
 
4580
4590
 
4581
4591
  module.exports = {
4582
- version: '2.25.0',
4592
+ version: '2.25.2',
4583
4593
  endpoint: 'api.rollbar.com/api/1/item/',
4584
4594
  logLevel: 'debug',
4585
4595
  reportLevel: 'debug',
@@ -4851,9 +4861,10 @@ module.exports = Telemeter;
4851
4861
 
4852
4862
 
4853
4863
  var _ = __webpack_require__(0);
4864
+ var headers = __webpack_require__(30);
4854
4865
  var scrub = __webpack_require__(4);
4855
4866
  var urlparser = __webpack_require__(2);
4856
- var domUtil = __webpack_require__(30);
4867
+ var domUtil = __webpack_require__(31);
4857
4868
 
4858
4869
  var defaults = {
4859
4870
  network: true,
@@ -5214,7 +5225,7 @@ Instrumenter.prototype.instrumentNetwork = function() {
5214
5225
  if (args[1] && args[1].headers) {
5215
5226
  // Argument may be a Headers object, or plain object. Ensure here that
5216
5227
  // we are working with a Headers object with case-insensitive keys.
5217
- var reqHeaders = new Headers(args[1].headers);
5228
+ var reqHeaders = headers(args[1].headers);
5218
5229
 
5219
5230
  metadata.request_content_type = reqHeaders.get('Content-Type');
5220
5231
 
@@ -5627,6 +5638,109 @@ module.exports = Instrumenter;
5627
5638
  "use strict";
5628
5639
 
5629
5640
 
5641
+ /*
5642
+ * headers - Detect when fetch Headers are undefined and use a partial polyfill.
5643
+ *
5644
+ * A full polyfill is not used in order to keep package size as small as possible.
5645
+ * Since this is only used internally and is not added to the window object,
5646
+ * the full interface doesn't need to be supported.
5647
+ *
5648
+ * This implementation is modified from whatwg-fetch:
5649
+ * https://github.com/github/fetch
5650
+ */
5651
+ function headers(headers) {
5652
+ if (typeof Headers === 'undefined') {
5653
+ return new FetchHeaders(headers);
5654
+ }
5655
+
5656
+ return new Headers(headers);
5657
+ }
5658
+
5659
+ function normalizeName(name) {
5660
+ if (typeof name !== 'string') {
5661
+ name = String(name)
5662
+ }
5663
+ return name.toLowerCase()
5664
+ }
5665
+
5666
+ function normalizeValue(value) {
5667
+ if (typeof value !== 'string') {
5668
+ value = String(value)
5669
+ }
5670
+ return value
5671
+ }
5672
+
5673
+ function iteratorFor(items) {
5674
+ var iterator = {
5675
+ next: function() {
5676
+ var value = items.shift()
5677
+ return {done: value === undefined, value: value}
5678
+ }
5679
+ }
5680
+
5681
+ return iterator
5682
+ }
5683
+
5684
+ function FetchHeaders(headers) {
5685
+ this.map = {}
5686
+
5687
+ if (headers instanceof FetchHeaders) {
5688
+ headers.forEach(function(value, name) {
5689
+ this.append(name, value)
5690
+ }, this)
5691
+ } else if (Array.isArray(headers)) {
5692
+ headers.forEach(function(header) {
5693
+ this.append(header[0], header[1])
5694
+ }, this)
5695
+ } else if (headers) {
5696
+ Object.getOwnPropertyNames(headers).forEach(function(name) {
5697
+ this.append(name, headers[name])
5698
+ }, this)
5699
+ }
5700
+ }
5701
+
5702
+ FetchHeaders.prototype.append = function(name, value) {
5703
+ name = normalizeName(name)
5704
+ value = normalizeValue(value)
5705
+ var oldValue = this.map[name]
5706
+ this.map[name] = oldValue ? oldValue + ', ' + value : value
5707
+ }
5708
+
5709
+ FetchHeaders.prototype.get = function(name) {
5710
+ name = normalizeName(name)
5711
+ return this.has(name) ? this.map[name] : null
5712
+ }
5713
+
5714
+ FetchHeaders.prototype.has = function(name) {
5715
+ return this.map.hasOwnProperty(normalizeName(name))
5716
+ }
5717
+
5718
+ FetchHeaders.prototype.forEach = function(callback, thisArg) {
5719
+ for (var name in this.map) {
5720
+ if (this.map.hasOwnProperty(name)) {
5721
+ callback.call(thisArg, this.map[name], name, this)
5722
+ }
5723
+ }
5724
+ }
5725
+
5726
+ FetchHeaders.prototype.entries = function() {
5727
+ var items = []
5728
+ this.forEach(function(value, name) {
5729
+ items.push([name, value])
5730
+ })
5731
+ return iteratorFor(items)
5732
+ }
5733
+
5734
+ module.exports = headers;
5735
+
5736
+
5737
+ /***/ }),
5738
+ /* 31 */
5739
+ /***/ (function(module, exports, __webpack_require__) {
5740
+
5741
+ "use strict";
5742
+
5743
+
5630
5744
  function getElementType(e) {
5631
5745
  return (e.getAttribute('type') || '').toLowerCase();
5632
5746
  }
@@ -5760,19 +5874,19 @@ module.exports = {
5760
5874
 
5761
5875
 
5762
5876
  /***/ }),
5763
- /* 31 */
5877
+ /* 32 */
5764
5878
  /***/ (function(module, exports, __webpack_require__) {
5765
5879
 
5766
5880
  "use strict";
5767
5881
 
5768
5882
 
5769
- var polyfillJSON = __webpack_require__(32);
5883
+ var polyfillJSON = __webpack_require__(33);
5770
5884
 
5771
5885
  module.exports = polyfillJSON;
5772
5886
 
5773
5887
 
5774
5888
  /***/ }),
5775
- /* 32 */
5889
+ /* 33 */
5776
5890
  /***/ (function(module, exports) {
5777
5891
 
5778
5892
  // json3.js
@@ -6541,7 +6655,7 @@ module.exports = setupCustomJSON;
6541
6655
 
6542
6656
 
6543
6657
  /***/ }),
6544
- /* 33 */
6658
+ /* 34 */
6545
6659
  /***/ (function(module, exports, __webpack_require__) {
6546
6660
 
6547
6661
  "use strict";
@@ -6591,7 +6705,7 @@ module.exports = wrapGlobals;
6591
6705
 
6592
6706
 
6593
6707
  /***/ }),
6594
- /* 34 */
6708
+ /* 35 */
6595
6709
  /***/ (function(module, exports, __webpack_require__) {
6596
6710
 
6597
6711
  "use strict";