rollbar 2.26.2 → 2.26.4

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 (117) hide show
  1. package/.github/workflows/ci.yml +32 -10
  2. package/.lgtm.yml +7 -7
  3. package/.prettierignore +18 -0
  4. package/.vscode/settings.json +39 -0
  5. package/CHANGELOG.md +121 -35
  6. package/Gruntfile.js +51 -71
  7. package/README.md +2 -4
  8. package/bower.json +1 -3
  9. package/defaults.js +17 -5
  10. package/dist/plugins/jquery.min.js +1 -1
  11. package/dist/rollbar.js +5699 -5052
  12. package/dist/rollbar.js.map +1 -1
  13. package/dist/rollbar.min.js +1 -1
  14. package/dist/rollbar.min.js.map +1 -1
  15. package/dist/rollbar.named-amd.js +5704 -5062
  16. package/dist/rollbar.named-amd.js.map +1 -1
  17. package/dist/rollbar.named-amd.min.js +1 -1
  18. package/dist/rollbar.named-amd.min.js.map +1 -1
  19. package/dist/rollbar.noconflict.umd.js +5693 -5052
  20. package/dist/rollbar.noconflict.umd.js.map +1 -1
  21. package/dist/rollbar.noconflict.umd.min.js +1 -1
  22. package/dist/rollbar.noconflict.umd.min.js.map +1 -1
  23. package/dist/rollbar.snippet.js +1 -1
  24. package/dist/rollbar.umd.js +5704 -5063
  25. package/dist/rollbar.umd.js.map +1 -1
  26. package/dist/rollbar.umd.min.js +1 -1
  27. package/dist/rollbar.umd.min.js.map +1 -1
  28. package/docs/extension-exceptions.md +35 -30
  29. package/docs/migration_v0_to_v1.md +41 -38
  30. package/index.d.ts +270 -231
  31. package/karma.conf.js +16 -34
  32. package/package.json +21 -17
  33. package/prettier.config.js +7 -0
  34. package/src/api.js +21 -10
  35. package/src/apiUtility.js +12 -8
  36. package/src/browser/core.js +103 -65
  37. package/src/browser/defaults/scrubFields.js +3 -3
  38. package/src/browser/detection.js +7 -8
  39. package/src/browser/domUtility.js +18 -8
  40. package/src/browser/globalSetup.js +12 -6
  41. package/src/browser/logger.js +1 -1
  42. package/src/browser/plugins/jquery.js +35 -35
  43. package/src/browser/predicates.js +1 -1
  44. package/src/browser/rollbar.js +1 -1
  45. package/src/browser/rollbarWrapper.js +8 -5
  46. package/src/browser/shim.js +43 -19
  47. package/src/browser/snippet_callback.js +6 -4
  48. package/src/browser/telemetry.js +573 -354
  49. package/src/browser/transforms.js +46 -27
  50. package/src/browser/transport/fetch.js +16 -14
  51. package/src/browser/transport/xhr.js +29 -13
  52. package/src/browser/transport.js +82 -25
  53. package/src/browser/url.js +16 -8
  54. package/src/browser/wrapGlobals.js +27 -8
  55. package/src/defaults.js +3 -3
  56. package/src/errorParser.js +14 -11
  57. package/src/merge.js +32 -23
  58. package/src/notifier.js +16 -13
  59. package/src/predicates.js +43 -23
  60. package/src/queue.js +71 -39
  61. package/src/rateLimiter.js +59 -18
  62. package/src/react-native/logger.js +1 -1
  63. package/src/react-native/rollbar.js +59 -55
  64. package/src/react-native/transforms.js +13 -9
  65. package/src/react-native/transport.js +44 -34
  66. package/src/rollbar.js +22 -13
  67. package/src/scrub.js +0 -1
  68. package/src/server/locals.js +69 -39
  69. package/src/server/logger.js +4 -4
  70. package/src/server/parser.js +72 -47
  71. package/src/server/rollbar.js +133 -55
  72. package/src/server/sourceMap/stackTrace.js +33 -18
  73. package/src/server/telemetry/urlHelpers.js +9 -11
  74. package/src/server/telemetry.js +68 -45
  75. package/src/server/transforms.js +37 -21
  76. package/src/server/transport.js +62 -32
  77. package/src/telemetry.js +92 -28
  78. package/src/transforms.js +33 -21
  79. package/src/truncation.js +8 -5
  80. package/src/utility/headers.js +43 -43
  81. package/src/utility/replace.js +9 -0
  82. package/src/utility/traverse.js +1 -1
  83. package/src/utility.js +89 -52
  84. package/test/api.test.js +31 -29
  85. package/test/apiUtility.test.js +43 -44
  86. package/test/browser.core.test.js +141 -131
  87. package/test/browser.domUtility.test.js +52 -35
  88. package/test/browser.predicates.test.js +13 -13
  89. package/test/browser.rollbar.test.js +597 -503
  90. package/test/browser.telemetry.test.js +76 -0
  91. package/test/browser.transforms.test.js +146 -128
  92. package/test/browser.transport.test.js +54 -46
  93. package/test/browser.url.test.js +12 -11
  94. package/test/fixtures/locals.fixtures.js +245 -126
  95. package/test/notifier.test.js +90 -78
  96. package/test/predicates.test.js +260 -214
  97. package/test/queue.test.js +230 -214
  98. package/test/rateLimiter.test.js +50 -42
  99. package/test/react-native.rollbar.test.js +149 -115
  100. package/test/react-native.transforms.test.js +21 -23
  101. package/test/react-native.transport.test.js +23 -11
  102. package/test/server.lambda.test.js +70 -53
  103. package/test/server.locals.test.js +437 -210
  104. package/test/server.parser.test.js +32 -26
  105. package/test/server.predicates.test.js +45 -43
  106. package/test/server.rollbar.test.js +311 -259
  107. package/test/server.telemetry.test.js +208 -83
  108. package/test/server.transforms.test.js +455 -361
  109. package/test/server.transport.test.js +144 -76
  110. package/test/telemetry.test.js +46 -37
  111. package/test/transforms.test.js +68 -66
  112. package/test/truncation.test.js +55 -53
  113. package/test/utility.test.js +266 -222
  114. package/webpack.config.js +46 -43
  115. package/.gitmodules +0 -3
  116. package/browserstack.browsers.js +0 -153
  117. package/browserstack.browsers.json +0 -4384
@@ -7,7 +7,7 @@ For most websites, the path for dealing with browser extension originating excep
7
7
 
8
8
  ## Dealing with adblockers
9
9
 
10
- The most common type of extension that can be problematic is adblockers. These extensions can disable loading
10
+ The most common type of extension that can be problematic is adblockers. These extensions can disable loading
11
11
  certain external scripts or remove elements from a page based on a simple set of heuristics.
12
12
 
13
13
  You can see a [full example](https://github.com/rollbar/rollbar.js/tree/master/examples/extension-exceptions/)
@@ -24,7 +24,7 @@ Load Rollbar.js as normal.
24
24
  captureUncaught: true,
25
25
  payload: {
26
26
  environment: 'development',
27
- }
27
+ },
28
28
  };
29
29
  </script>
30
30
  ```
@@ -33,45 +33,50 @@ Add an html element with "bait" class names to be removed by adblockers.
33
33
 
34
34
  ```html
35
35
  <!-- bait for adblocker like addons. If they remove this div, we should disable error reporting -->
36
- <div id="blocker-bait" style="height: 1px; width: 1px; position: absolute; left: -999em; top: -999em"
37
- class="ads ad adsbox doubleclick ad-placement carbon-ads"></div>
36
+ <div
37
+ id="blocker-bait"
38
+ style="height: 1px; width: 1px; position: absolute; left: -999em; top: -999em"
39
+ class="ads ad adsbox doubleclick ad-placement carbon-ads"
40
+ ></div>
38
41
  ```
39
42
 
40
43
  Add functions to check for the presence and visibility of our bait div.
41
44
 
42
45
  ```js
43
- function disableRollbar() {
44
- Rollbar.configure({enabled: false});
45
- }
46
-
47
- function checkForAds() {
48
- var bait = document.getElementById("blocker-bait");
46
+ function disableRollbar() {
47
+ Rollbar.configure({ enabled: false });
48
+ }
49
49
 
50
- if (bait == null) {
51
- disableRollbar();
52
- return;
53
- }
54
-
55
- var baitStyles = window.getComputedStyle(bait);
56
- if (baitStyles && (
57
- baitStyles.getPropertyValue('display') === 'none' ||
58
- baitStyles.getPropertyValue('visibility') === 'hidden')) {
59
- disableRollbar();
60
- }
61
- }
50
+ function checkForAds() {
51
+ var bait = document.getElementById('blocker-bait');
62
52
 
63
- function onLoadStartAdCheck() {
64
- // Ad blockers generally execute just after load, let's delay ourselves to get behind it.
65
- setTimeout(checkForAds, 1);
53
+ if (bait == null) {
54
+ disableRollbar();
55
+ return;
66
56
  }
67
57
 
68
- if (window.addEventListener !== undefined) {
69
- window.addEventListener('load', onLoadStartAdCheck, false);
70
- } else {
71
- window.attachEvent('onload', onLoadStartAdCheck);
58
+ var baitStyles = window.getComputedStyle(bait);
59
+ if (
60
+ baitStyles &&
61
+ (baitStyles.getPropertyValue('display') === 'none' ||
62
+ baitStyles.getPropertyValue('visibility') === 'hidden')
63
+ ) {
64
+ disableRollbar();
72
65
  }
66
+ }
67
+
68
+ function onLoadStartAdCheck() {
69
+ // Ad blockers generally execute just after load, let's delay ourselves to get behind it.
70
+ setTimeout(checkForAds, 1);
71
+ }
72
+
73
+ if (window.addEventListener !== undefined) {
74
+ window.addEventListener('load', onLoadStartAdCheck, false);
75
+ } else {
76
+ window.attachEvent('onload', onLoadStartAdCheck);
77
+ }
73
78
  ```
74
79
 
75
- The above approach is likely to work in the majority of cases, *but it is not foolproof*. Extensions and their
80
+ The above approach is likely to work in the majority of cases, _but it is not foolproof_. Extensions and their
76
81
  behavior evolve over time and nothing stops a user from opening their console and modifying / executing code as well.
77
82
  A practical approach involves incrementally adjusting your detection as new exceptions occur in large numbers.
@@ -7,19 +7,20 @@
7
7
  ### Change the config object:
8
8
 
9
9
  ```js
10
- var _rollbarParams = {"server.environment": "production"};
11
- _rollbarParams["notifier.snippet_version"] = "2"; var _rollbar=["POST_CLIENT_ITEM_ACCESS_TOKEN", _rollbarParams];
10
+ var _rollbarParams = { 'server.environment': 'production' };
11
+ _rollbarParams['notifier.snippet_version'] = '2';
12
+ var _rollbar = ['POST_CLIENT_ITEM_ACCESS_TOKEN', _rollbarParams];
12
13
  ```
13
14
 
14
- to
15
+ to
15
16
 
16
17
  ```js
17
18
  var _rollbarConfig = {
18
- accessToken: "POST_CLIENT_ITEM_ACCESS_TOKEN",
19
+ accessToken: 'POST_CLIENT_ITEM_ACCESS_TOKEN',
19
20
  captureUncaught: true,
20
21
  payload: {
21
- environment: "production"
22
- }
22
+ environment: 'production',
23
+ },
23
24
  };
24
25
  ```
25
26
 
@@ -29,21 +30,21 @@ e.g.
29
30
 
30
31
  ```js
31
32
  var _rollbarParams = {
32
- checkIgnore: function(msg, url, lineNo, colNo, error) {
33
+ checkIgnore: function (msg, url, lineNo, colNo, error) {
33
34
  // don't ignore anything (default)
34
35
  return false;
35
36
  },
36
- context: "home#index",
37
+ context: 'home#index',
37
38
  itemsPerMinute: 60,
38
- level: "error",
39
+ level: 'error',
39
40
  person: {
40
41
  id: 12345,
41
- username: "johndoe",
42
- email: "johndoe@example.com"
42
+ username: 'johndoe',
43
+ email: 'johndoe@example.com',
43
44
  },
44
- "server.branch": "develop",
45
- "server.environment": "staging",
46
- "server.host": "web1"
45
+ 'server.branch': 'develop',
46
+ 'server.environment': 'staging',
47
+ 'server.host': 'web1',
47
48
  };
48
49
  ```
49
50
 
@@ -51,28 +52,28 @@ should be changed to
51
52
 
52
53
  ```js
53
54
  var _rollbarConfig = {
54
- accessToken: "POST_CLIENT_ITEM_ACCESS_TOKEN",
55
+ accessToken: 'POST_CLIENT_ITEM_ACCESS_TOKEN',
55
56
  captureUncaught: true,
56
- checkIgnore: function(msg, url, lineNo, colNo, error) {
57
+ checkIgnore: function (msg, url, lineNo, colNo, error) {
57
58
  // don't ignore anything (default)
58
59
  return false;
59
60
  },
60
61
  itemsPerMinute: 60,
61
- logLevel: "error",
62
+ logLevel: 'error',
62
63
  payload: {
63
- environment: "production",
64
- context: "home#index",
64
+ environment: 'production',
65
+ context: 'home#index',
65
66
  person: {
66
67
  id: 12345,
67
- username: "johndoe",
68
- email: "johndoe@example.com"
68
+ username: 'johndoe',
69
+ email: 'johndoe@example.com',
69
70
  },
70
71
  server: {
71
- branch: "develop",
72
- environment: "staging",
73
- host: "web1"
74
- }
75
- }
72
+ branch: 'develop',
73
+ environment: 'staging',
74
+ host: 'web1',
75
+ },
76
+ },
76
77
  };
77
78
  ```
78
79
 
@@ -80,7 +81,6 @@ var _rollbarConfig = {
80
81
 
81
82
  For the latest snippet, see the instructions here: [https://rollbar.com/docs/notifier/rollbar.js/](https://rollbar.com/docs/notifier/rollbar.js/).
82
83
 
83
-
84
84
  ## Update references to `_rollbar.push()`
85
85
 
86
86
  The v1 notifier has a more intuitive interface for recording errors and generic logging.
@@ -118,19 +118,18 @@ try {
118
118
  }
119
119
  ```
120
120
 
121
-
122
121
  ### Recording a log message
123
122
 
124
123
  From
125
124
 
126
125
  ```js
127
- _rollbar.push("Some log message");
126
+ _rollbar.push('Some log message');
128
127
  ```
129
128
 
130
129
  to
131
130
 
132
131
  ```js
133
- Rollbar.info("Some log message");
132
+ Rollbar.info('Some log message');
134
133
  ```
135
134
 
136
135
  #### Including custom data
@@ -138,13 +137,17 @@ Rollbar.info("Some log message");
138
137
  From
139
138
 
140
139
  ```js
141
- _rollbar.push({level: "warning", msg: "Some warning message", point: {x: 5, y: 10}});
140
+ _rollbar.push({
141
+ level: 'warning',
142
+ msg: 'Some warning message',
143
+ point: { x: 5, y: 10 },
144
+ });
142
145
  ```
143
146
 
144
147
  to
145
148
 
146
149
  ```js
147
- Rollbar.warning("Some warning message", {point: {x: 5, y: 10}});
150
+ Rollbar.warning('Some warning message', { point: { x: 5, y: 10 } });
148
151
  ```
149
152
 
150
153
  #### Using callbacks
@@ -155,11 +158,11 @@ From
155
158
  try {
156
159
  doSomething();
157
160
  } catch (e) {
158
- _rollbar.push(e, function(err, uuid) {
161
+ _rollbar.push(e, function (err, uuid) {
159
162
  if (err !== null) {
160
- console.error("Could not report an exception to Rollbar, error: " + err);
163
+ console.error('Could not report an exception to Rollbar, error: ' + err);
161
164
  } else {
162
- console.log("Reported exception to Rollbar, uuid: " + uuid);
165
+ console.log('Reported exception to Rollbar, uuid: ' + uuid);
163
166
  }
164
167
  });
165
168
  }
@@ -171,11 +174,11 @@ to
171
174
  try {
172
175
  doSomething();
173
176
  } catch (e) {
174
- Rollbar.log(e, function(err, uuid) {
177
+ Rollbar.log(e, function (err, uuid) {
175
178
  if (err !== null) {
176
- console.error("Could not report an exception to Rollbar, error: " + err);
179
+ console.error('Could not report an exception to Rollbar, error: ' + err);
177
180
  } else {
178
- console.log("Reported exception to Rollbar, uuid: " + uuid);
181
+ console.log('Reported exception to Rollbar, uuid: ' + uuid);
179
182
  }
180
183
  });
181
184
  }