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.
- package/.github/workflows/ci.yml +32 -10
- package/.lgtm.yml +7 -7
- package/.prettierignore +18 -0
- package/.vscode/settings.json +39 -0
- package/CHANGELOG.md +121 -35
- package/Gruntfile.js +51 -71
- package/README.md +2 -4
- package/bower.json +1 -3
- package/defaults.js +17 -5
- package/dist/plugins/jquery.min.js +1 -1
- package/dist/rollbar.js +5699 -5052
- package/dist/rollbar.js.map +1 -1
- package/dist/rollbar.min.js +1 -1
- package/dist/rollbar.min.js.map +1 -1
- package/dist/rollbar.named-amd.js +5704 -5062
- package/dist/rollbar.named-amd.js.map +1 -1
- package/dist/rollbar.named-amd.min.js +1 -1
- package/dist/rollbar.named-amd.min.js.map +1 -1
- package/dist/rollbar.noconflict.umd.js +5693 -5052
- package/dist/rollbar.noconflict.umd.js.map +1 -1
- package/dist/rollbar.noconflict.umd.min.js +1 -1
- package/dist/rollbar.noconflict.umd.min.js.map +1 -1
- package/dist/rollbar.snippet.js +1 -1
- package/dist/rollbar.umd.js +5704 -5063
- package/dist/rollbar.umd.js.map +1 -1
- package/dist/rollbar.umd.min.js +1 -1
- package/dist/rollbar.umd.min.js.map +1 -1
- package/docs/extension-exceptions.md +35 -30
- package/docs/migration_v0_to_v1.md +41 -38
- package/index.d.ts +270 -231
- package/karma.conf.js +16 -34
- package/package.json +21 -17
- package/prettier.config.js +7 -0
- package/src/api.js +21 -10
- package/src/apiUtility.js +12 -8
- package/src/browser/core.js +103 -65
- package/src/browser/defaults/scrubFields.js +3 -3
- package/src/browser/detection.js +7 -8
- package/src/browser/domUtility.js +18 -8
- package/src/browser/globalSetup.js +12 -6
- package/src/browser/logger.js +1 -1
- package/src/browser/plugins/jquery.js +35 -35
- package/src/browser/predicates.js +1 -1
- package/src/browser/rollbar.js +1 -1
- package/src/browser/rollbarWrapper.js +8 -5
- package/src/browser/shim.js +43 -19
- package/src/browser/snippet_callback.js +6 -4
- package/src/browser/telemetry.js +573 -354
- package/src/browser/transforms.js +46 -27
- package/src/browser/transport/fetch.js +16 -14
- package/src/browser/transport/xhr.js +29 -13
- package/src/browser/transport.js +82 -25
- package/src/browser/url.js +16 -8
- package/src/browser/wrapGlobals.js +27 -8
- package/src/defaults.js +3 -3
- package/src/errorParser.js +14 -11
- package/src/merge.js +32 -23
- package/src/notifier.js +16 -13
- package/src/predicates.js +43 -23
- package/src/queue.js +71 -39
- package/src/rateLimiter.js +59 -18
- package/src/react-native/logger.js +1 -1
- package/src/react-native/rollbar.js +59 -55
- package/src/react-native/transforms.js +13 -9
- package/src/react-native/transport.js +44 -34
- package/src/rollbar.js +22 -13
- package/src/scrub.js +0 -1
- package/src/server/locals.js +69 -39
- package/src/server/logger.js +4 -4
- package/src/server/parser.js +72 -47
- package/src/server/rollbar.js +133 -55
- package/src/server/sourceMap/stackTrace.js +33 -18
- package/src/server/telemetry/urlHelpers.js +9 -11
- package/src/server/telemetry.js +68 -45
- package/src/server/transforms.js +37 -21
- package/src/server/transport.js +62 -32
- package/src/telemetry.js +92 -28
- package/src/transforms.js +33 -21
- package/src/truncation.js +8 -5
- package/src/utility/headers.js +43 -43
- package/src/utility/replace.js +9 -0
- package/src/utility/traverse.js +1 -1
- package/src/utility.js +89 -52
- package/test/api.test.js +31 -29
- package/test/apiUtility.test.js +43 -44
- package/test/browser.core.test.js +141 -131
- package/test/browser.domUtility.test.js +52 -35
- package/test/browser.predicates.test.js +13 -13
- package/test/browser.rollbar.test.js +597 -503
- package/test/browser.telemetry.test.js +76 -0
- package/test/browser.transforms.test.js +146 -128
- package/test/browser.transport.test.js +54 -46
- package/test/browser.url.test.js +12 -11
- package/test/fixtures/locals.fixtures.js +245 -126
- package/test/notifier.test.js +90 -78
- package/test/predicates.test.js +260 -214
- package/test/queue.test.js +230 -214
- package/test/rateLimiter.test.js +50 -42
- package/test/react-native.rollbar.test.js +149 -115
- package/test/react-native.transforms.test.js +21 -23
- package/test/react-native.transport.test.js +23 -11
- package/test/server.lambda.test.js +70 -53
- package/test/server.locals.test.js +437 -210
- package/test/server.parser.test.js +32 -26
- package/test/server.predicates.test.js +45 -43
- package/test/server.rollbar.test.js +311 -259
- package/test/server.telemetry.test.js +208 -83
- package/test/server.transforms.test.js +455 -361
- package/test/server.transport.test.js +144 -76
- package/test/telemetry.test.js +46 -37
- package/test/transforms.test.js +68 -66
- package/test/truncation.test.js +55 -53
- package/test/utility.test.js +266 -222
- package/webpack.config.js +46 -43
- package/.gitmodules +0 -3
- package/browserstack.browsers.js +0 -153
- 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.
|
|
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
|
|
37
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
function checkForAds() {
|
|
48
|
-
var bait = document.getElementById("blocker-bait");
|
|
46
|
+
function disableRollbar() {
|
|
47
|
+
Rollbar.configure({ enabled: false });
|
|
48
|
+
}
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
53
|
+
if (bait == null) {
|
|
54
|
+
disableRollbar();
|
|
55
|
+
return;
|
|
66
56
|
}
|
|
67
57
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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,
|
|
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 = {
|
|
11
|
-
_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:
|
|
19
|
+
accessToken: 'POST_CLIENT_ITEM_ACCESS_TOKEN',
|
|
19
20
|
captureUncaught: true,
|
|
20
21
|
payload: {
|
|
21
|
-
environment:
|
|
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:
|
|
37
|
+
context: 'home#index',
|
|
37
38
|
itemsPerMinute: 60,
|
|
38
|
-
level:
|
|
39
|
+
level: 'error',
|
|
39
40
|
person: {
|
|
40
41
|
id: 12345,
|
|
41
|
-
username:
|
|
42
|
-
email:
|
|
42
|
+
username: 'johndoe',
|
|
43
|
+
email: 'johndoe@example.com',
|
|
43
44
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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:
|
|
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:
|
|
62
|
+
logLevel: 'error',
|
|
62
63
|
payload: {
|
|
63
|
-
environment:
|
|
64
|
-
context:
|
|
64
|
+
environment: 'production',
|
|
65
|
+
context: 'home#index',
|
|
65
66
|
person: {
|
|
66
67
|
id: 12345,
|
|
67
|
-
username:
|
|
68
|
-
email:
|
|
68
|
+
username: 'johndoe',
|
|
69
|
+
email: 'johndoe@example.com',
|
|
69
70
|
},
|
|
70
71
|
server: {
|
|
71
|
-
branch:
|
|
72
|
-
environment:
|
|
73
|
-
host:
|
|
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(
|
|
126
|
+
_rollbar.push('Some log message');
|
|
128
127
|
```
|
|
129
128
|
|
|
130
129
|
to
|
|
131
130
|
|
|
132
131
|
```js
|
|
133
|
-
Rollbar.info(
|
|
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({
|
|
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(
|
|
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(
|
|
163
|
+
console.error('Could not report an exception to Rollbar, error: ' + err);
|
|
161
164
|
} else {
|
|
162
|
-
console.log(
|
|
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(
|
|
179
|
+
console.error('Could not report an exception to Rollbar, error: ' + err);
|
|
177
180
|
} else {
|
|
178
|
-
console.log(
|
|
181
|
+
console.log('Reported exception to Rollbar, uuid: ' + uuid);
|
|
179
182
|
}
|
|
180
183
|
});
|
|
181
184
|
}
|