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
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// Use minimal browser package, with no optional components added.
|
|
7
7
|
var Rollbar = require('../src/browser/core');
|
|
8
8
|
|
|
9
|
-
describe('options.captureUncaught', function() {
|
|
9
|
+
describe('options.captureUncaught', function () {
|
|
10
10
|
beforeEach(function (done) {
|
|
11
11
|
// Load the HTML page, so errors can be generated.
|
|
12
12
|
document.write(window.__html__['examples/error.html']);
|
|
@@ -21,51 +21,51 @@ describe('options.captureUncaught', function() {
|
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
function stubResponse(server) {
|
|
24
|
-
server.respondWith('POST', 'api/1/item',
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
]
|
|
30
|
-
);
|
|
24
|
+
server.respondWith('POST', 'api/1/item', [
|
|
25
|
+
200,
|
|
26
|
+
{ 'Content-Type': 'application/json' },
|
|
27
|
+
'{"err": 0, "result":{ "uuid": "d4c7acef55bf4c9ea95e4fe9428a8287"}}',
|
|
28
|
+
]);
|
|
31
29
|
}
|
|
32
30
|
|
|
33
|
-
it('should capture when enabled in constructor', function(done) {
|
|
31
|
+
it('should capture when enabled in constructor', function (done) {
|
|
34
32
|
var server = window.server;
|
|
35
33
|
stubResponse(server);
|
|
36
34
|
server.requests.length = 0;
|
|
37
35
|
|
|
38
36
|
var options = {
|
|
39
37
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
40
|
-
captureUncaught: true
|
|
38
|
+
captureUncaught: true,
|
|
41
39
|
};
|
|
42
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
40
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
43
41
|
|
|
44
42
|
var element = document.getElementById('throw-error');
|
|
45
43
|
element.click();
|
|
46
44
|
|
|
47
|
-
setTimeout(function() {
|
|
45
|
+
setTimeout(function () {
|
|
48
46
|
server.respond();
|
|
49
47
|
|
|
50
48
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
51
49
|
|
|
52
50
|
expect(body.access_token).to.eql('POST_CLIENT_ITEM_TOKEN');
|
|
53
51
|
expect(body.data.body.trace.exception.message).to.eql('test error');
|
|
54
|
-
expect(body.data.notifier.diagnostic.raw_error.message).to.eql(
|
|
52
|
+
expect(body.data.notifier.diagnostic.raw_error.message).to.eql(
|
|
53
|
+
'test error',
|
|
54
|
+
);
|
|
55
55
|
expect(body.data.notifier.diagnostic.is_uncaught).to.eql(true);
|
|
56
56
|
|
|
57
57
|
// karma doesn't unload the browser between tests, so the onerror handler
|
|
58
58
|
// will remain installed. Unset captureUncaught so the onerror handler
|
|
59
59
|
// won't affect other tests.
|
|
60
60
|
rollbar.configure({
|
|
61
|
-
captureUncaught: false
|
|
61
|
+
captureUncaught: false,
|
|
62
62
|
});
|
|
63
63
|
|
|
64
64
|
done();
|
|
65
65
|
}, 1);
|
|
66
66
|
});
|
|
67
67
|
|
|
68
|
-
it('should respond to enable/disable in configure', function(done) {
|
|
68
|
+
it('should respond to enable/disable in configure', function (done) {
|
|
69
69
|
var server = window.server;
|
|
70
70
|
var element = document.getElementById('throw-error');
|
|
71
71
|
stubResponse(server);
|
|
@@ -73,24 +73,24 @@ describe('options.captureUncaught', function() {
|
|
|
73
73
|
|
|
74
74
|
var options = {
|
|
75
75
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
76
|
-
captureUncaught: false
|
|
76
|
+
captureUncaught: false,
|
|
77
77
|
};
|
|
78
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
78
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
79
79
|
|
|
80
80
|
element.click();
|
|
81
81
|
|
|
82
|
-
setTimeout(function() {
|
|
82
|
+
setTimeout(function () {
|
|
83
83
|
server.respond();
|
|
84
84
|
expect(server.requests.length).to.eql(0); // Disabled, no event
|
|
85
85
|
server.requests.length = 0;
|
|
86
86
|
|
|
87
87
|
rollbar.configure({
|
|
88
|
-
captureUncaught: true
|
|
88
|
+
captureUncaught: true,
|
|
89
89
|
});
|
|
90
90
|
|
|
91
91
|
element.click();
|
|
92
92
|
|
|
93
|
-
setTimeout(function() {
|
|
93
|
+
setTimeout(function () {
|
|
94
94
|
server.respond();
|
|
95
95
|
|
|
96
96
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
@@ -102,12 +102,12 @@ describe('options.captureUncaught', function() {
|
|
|
102
102
|
server.requests.length = 0;
|
|
103
103
|
|
|
104
104
|
rollbar.configure({
|
|
105
|
-
captureUncaught: false
|
|
105
|
+
captureUncaught: false,
|
|
106
106
|
});
|
|
107
107
|
|
|
108
108
|
element.click();
|
|
109
109
|
|
|
110
|
-
setTimeout(function() {
|
|
110
|
+
setTimeout(function () {
|
|
111
111
|
server.respond();
|
|
112
112
|
expect(server.requests.length).to.eql(0); // Disabled, no event
|
|
113
113
|
|
|
@@ -120,31 +120,31 @@ describe('options.captureUncaught', function() {
|
|
|
120
120
|
// Test case expects Chrome, which is the currently configured karma js/browser
|
|
121
121
|
// engine at the time of this comment. However, karma's Chrome and ChromeHeadless
|
|
122
122
|
// don't actually behave like real Chrome so we settle for stubbing some things.
|
|
123
|
-
it('should capture external error data when inspectAnonymousErrors is true', function(done) {
|
|
123
|
+
it('should capture external error data when inspectAnonymousErrors is true', function (done) {
|
|
124
124
|
var server = window.server;
|
|
125
125
|
stubResponse(server);
|
|
126
126
|
server.requests.length = 0;
|
|
127
127
|
|
|
128
128
|
// We're supposedly running on ChromeHeadless, but still need to spoof Chrome. :\
|
|
129
|
-
window.chrome = { runtime: true};
|
|
129
|
+
window.chrome = { runtime: true };
|
|
130
130
|
|
|
131
131
|
var options = {
|
|
132
132
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
133
133
|
captureUncaught: true,
|
|
134
|
-
inspectAnonymousErrors: true
|
|
134
|
+
inspectAnonymousErrors: true,
|
|
135
135
|
};
|
|
136
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
136
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
137
137
|
|
|
138
138
|
// Simulate receiving onerror without an error object.
|
|
139
139
|
rollbar.anonymousErrorsPending += 1;
|
|
140
140
|
|
|
141
141
|
try {
|
|
142
|
-
throw new Error('anon error')
|
|
143
|
-
} catch(e) {
|
|
142
|
+
throw new Error('anon error');
|
|
143
|
+
} catch (e) {
|
|
144
144
|
Error.prepareStackTrace(e);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
setTimeout(function() {
|
|
147
|
+
setTimeout(function () {
|
|
148
148
|
server.respond();
|
|
149
149
|
|
|
150
150
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
@@ -157,32 +157,32 @@ describe('options.captureUncaught', function() {
|
|
|
157
157
|
// will remain installed. Unset captureUncaught so the onerror handler
|
|
158
158
|
// won't affect other tests.
|
|
159
159
|
rollbar.configure({
|
|
160
|
-
captureUncaught: false
|
|
160
|
+
captureUncaught: false,
|
|
161
161
|
});
|
|
162
162
|
|
|
163
163
|
done();
|
|
164
164
|
}, 1);
|
|
165
165
|
});
|
|
166
166
|
|
|
167
|
-
it('should ignore duplicate errors by default', function(done) {
|
|
167
|
+
it('should ignore duplicate errors by default', function (done) {
|
|
168
168
|
var server = window.server;
|
|
169
169
|
stubResponse(server);
|
|
170
170
|
server.requests.length = 0;
|
|
171
171
|
|
|
172
172
|
var options = {
|
|
173
173
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
174
|
-
captureUncaught: true
|
|
174
|
+
captureUncaught: true,
|
|
175
175
|
};
|
|
176
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
176
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
177
177
|
|
|
178
178
|
var element = document.getElementById('throw-error');
|
|
179
179
|
|
|
180
180
|
// generate same error twice
|
|
181
|
-
for(var i = 0; i < 2; i++) {
|
|
181
|
+
for (var i = 0; i < 2; i++) {
|
|
182
182
|
element.click(); // use for loop to ensure the stack traces have identical line/col info
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
setTimeout(function() {
|
|
185
|
+
setTimeout(function () {
|
|
186
186
|
server.respond();
|
|
187
187
|
|
|
188
188
|
// transmit only once
|
|
@@ -197,14 +197,14 @@ describe('options.captureUncaught', function() {
|
|
|
197
197
|
// will remain installed. Unset captureUncaught so the onerror handler
|
|
198
198
|
// won't affect other tests.
|
|
199
199
|
rollbar.configure({
|
|
200
|
-
captureUncaught: false
|
|
200
|
+
captureUncaught: false,
|
|
201
201
|
});
|
|
202
202
|
|
|
203
203
|
done();
|
|
204
204
|
}, 1);
|
|
205
205
|
});
|
|
206
206
|
|
|
207
|
-
it('should transmit duplicate errors when set in config', function(done) {
|
|
207
|
+
it('should transmit duplicate errors when set in config', function (done) {
|
|
208
208
|
var server = window.server;
|
|
209
209
|
stubResponse(server);
|
|
210
210
|
server.requests.length = 0;
|
|
@@ -212,18 +212,18 @@ describe('options.captureUncaught', function() {
|
|
|
212
212
|
var options = {
|
|
213
213
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
214
214
|
captureUncaught: true,
|
|
215
|
-
ignoreDuplicateErrors: false
|
|
215
|
+
ignoreDuplicateErrors: false,
|
|
216
216
|
};
|
|
217
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
217
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
218
218
|
|
|
219
219
|
var element = document.getElementById('throw-error');
|
|
220
220
|
|
|
221
221
|
// generate same error twice
|
|
222
|
-
for(var i = 0; i < 2; i++) {
|
|
222
|
+
for (var i = 0; i < 2; i++) {
|
|
223
223
|
element.click(); // use for loop to ensure the stack traces have identical line/col info
|
|
224
224
|
}
|
|
225
225
|
|
|
226
|
-
setTimeout(function() {
|
|
226
|
+
setTimeout(function () {
|
|
227
227
|
server.respond();
|
|
228
228
|
|
|
229
229
|
// transmit both errors
|
|
@@ -238,46 +238,48 @@ describe('options.captureUncaught', function() {
|
|
|
238
238
|
// will remain installed. Unset captureUncaught so the onerror handler
|
|
239
239
|
// won't affect other tests.
|
|
240
240
|
rollbar.configure({
|
|
241
|
-
captureUncaught: false
|
|
241
|
+
captureUncaught: false,
|
|
242
242
|
});
|
|
243
243
|
|
|
244
244
|
done();
|
|
245
245
|
}, 1);
|
|
246
246
|
});
|
|
247
|
-
it('should send DOMException as trace_chain', function(done) {
|
|
247
|
+
it('should send DOMException as trace_chain', function (done) {
|
|
248
248
|
var server = window.server;
|
|
249
249
|
stubResponse(server);
|
|
250
250
|
server.requests.length = 0;
|
|
251
251
|
|
|
252
252
|
var options = {
|
|
253
253
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
254
|
-
captureUncaught: true
|
|
254
|
+
captureUncaught: true,
|
|
255
255
|
};
|
|
256
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
256
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
257
257
|
|
|
258
258
|
var element = document.getElementById('throw-dom-exception');
|
|
259
259
|
element.click();
|
|
260
260
|
|
|
261
|
-
setTimeout(function() {
|
|
261
|
+
setTimeout(function () {
|
|
262
262
|
server.respond();
|
|
263
263
|
|
|
264
264
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
265
265
|
|
|
266
266
|
expect(body.access_token).to.eql('POST_CLIENT_ITEM_TOKEN');
|
|
267
|
-
expect(body.data.body.trace_chain[0].exception.message).to.eql(
|
|
267
|
+
expect(body.data.body.trace_chain[0].exception.message).to.eql(
|
|
268
|
+
'test DOMException',
|
|
269
|
+
);
|
|
268
270
|
|
|
269
271
|
// karma doesn't unload the browser between tests, so the onerror handler
|
|
270
272
|
// will remain installed. Unset captureUncaught so the onerror handler
|
|
271
273
|
// won't affect other tests.
|
|
272
274
|
rollbar.configure({
|
|
273
|
-
captureUncaught: false
|
|
275
|
+
captureUncaught: false,
|
|
274
276
|
});
|
|
275
277
|
|
|
276
278
|
done();
|
|
277
279
|
}, 1);
|
|
278
280
|
});
|
|
279
281
|
|
|
280
|
-
it('should capture exta frames when stackTraceLimit is set', function(done) {
|
|
282
|
+
it('should capture exta frames when stackTraceLimit is set', function (done) {
|
|
281
283
|
var server = window.server;
|
|
282
284
|
stubResponse(server);
|
|
283
285
|
server.requests.length = 0;
|
|
@@ -286,14 +288,14 @@ describe('options.captureUncaught', function() {
|
|
|
286
288
|
var options = {
|
|
287
289
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
288
290
|
captureUncaught: true,
|
|
289
|
-
stackTraceLimit: 50
|
|
291
|
+
stackTraceLimit: 50,
|
|
290
292
|
};
|
|
291
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
293
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
292
294
|
|
|
293
295
|
var element = document.getElementById('throw-depp-stack-error');
|
|
294
296
|
element.click();
|
|
295
297
|
|
|
296
|
-
setTimeout(function() {
|
|
298
|
+
setTimeout(function () {
|
|
297
299
|
server.respond();
|
|
298
300
|
|
|
299
301
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
@@ -307,7 +309,7 @@ describe('options.captureUncaught', function() {
|
|
|
307
309
|
// won't affect other tests.
|
|
308
310
|
rollbar.configure({
|
|
309
311
|
captureUncaught: false,
|
|
310
|
-
stackTraceLimit: oldLimit // reset to default
|
|
312
|
+
stackTraceLimit: oldLimit, // reset to default
|
|
311
313
|
});
|
|
312
314
|
|
|
313
315
|
done();
|
|
@@ -315,7 +317,7 @@ describe('options.captureUncaught', function() {
|
|
|
315
317
|
});
|
|
316
318
|
});
|
|
317
319
|
|
|
318
|
-
describe('options.captureUnhandledRejections', function() {
|
|
320
|
+
describe('options.captureUnhandledRejections', function () {
|
|
319
321
|
beforeEach(function (done) {
|
|
320
322
|
window.server = sinon.createFakeServer();
|
|
321
323
|
done();
|
|
@@ -327,29 +329,27 @@ describe('options.captureUnhandledRejections', function() {
|
|
|
327
329
|
});
|
|
328
330
|
|
|
329
331
|
function stubResponse(server) {
|
|
330
|
-
server.respondWith('POST', 'api/1/item',
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
]
|
|
336
|
-
);
|
|
332
|
+
server.respondWith('POST', 'api/1/item', [
|
|
333
|
+
200,
|
|
334
|
+
{ 'Content-Type': 'application/json' },
|
|
335
|
+
'{"err": 0, "result":{ "uuid": "d4c7acef55bf4c9ea95e4fe9428a8287"}}',
|
|
336
|
+
]);
|
|
337
337
|
}
|
|
338
338
|
|
|
339
|
-
it('should capture when enabled in constructor', function(done) {
|
|
339
|
+
it('should capture when enabled in constructor', function (done) {
|
|
340
340
|
var server = window.server;
|
|
341
341
|
stubResponse(server);
|
|
342
342
|
server.requests.length = 0;
|
|
343
343
|
|
|
344
344
|
var options = {
|
|
345
345
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
346
|
-
captureUnhandledRejections: true
|
|
346
|
+
captureUnhandledRejections: true,
|
|
347
347
|
};
|
|
348
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
348
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
349
349
|
|
|
350
350
|
Promise.reject(new Error('test reject'));
|
|
351
351
|
|
|
352
|
-
setTimeout(function() {
|
|
352
|
+
setTimeout(function () {
|
|
353
353
|
server.respond();
|
|
354
354
|
|
|
355
355
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
@@ -359,7 +359,7 @@ describe('options.captureUnhandledRejections', function() {
|
|
|
359
359
|
expect(body.data.notifier.diagnostic.is_uncaught).to.eql(true);
|
|
360
360
|
|
|
361
361
|
rollbar.configure({
|
|
362
|
-
captureUnhandledRejections: false
|
|
362
|
+
captureUnhandledRejections: false,
|
|
363
363
|
});
|
|
364
364
|
window.removeEventListener('unhandledrejection', window._rollbarURH);
|
|
365
365
|
|
|
@@ -367,24 +367,24 @@ describe('options.captureUnhandledRejections', function() {
|
|
|
367
367
|
}, 500);
|
|
368
368
|
});
|
|
369
369
|
|
|
370
|
-
it('should respond to enable in configure', function(done) {
|
|
370
|
+
it('should respond to enable in configure', function (done) {
|
|
371
371
|
var server = window.server;
|
|
372
372
|
stubResponse(server);
|
|
373
373
|
server.requests.length = 0;
|
|
374
374
|
|
|
375
375
|
var options = {
|
|
376
376
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
377
|
-
captureUnhandledRejections: false
|
|
377
|
+
captureUnhandledRejections: false,
|
|
378
378
|
};
|
|
379
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
379
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
380
380
|
|
|
381
381
|
rollbar.configure({
|
|
382
|
-
captureUnhandledRejections: true
|
|
382
|
+
captureUnhandledRejections: true,
|
|
383
383
|
});
|
|
384
384
|
|
|
385
385
|
Promise.reject(new Error('test reject'));
|
|
386
386
|
|
|
387
|
-
setTimeout(function() {
|
|
387
|
+
setTimeout(function () {
|
|
388
388
|
server.respond();
|
|
389
389
|
|
|
390
390
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
@@ -395,7 +395,7 @@ describe('options.captureUnhandledRejections', function() {
|
|
|
395
395
|
server.requests.length = 0;
|
|
396
396
|
|
|
397
397
|
rollbar.configure({
|
|
398
|
-
captureUnhandledRejections: false
|
|
398
|
+
captureUnhandledRejections: false,
|
|
399
399
|
});
|
|
400
400
|
window.removeEventListener('unhandledrejection', window._rollbarURH);
|
|
401
401
|
|
|
@@ -403,24 +403,24 @@ describe('options.captureUnhandledRejections', function() {
|
|
|
403
403
|
}, 500);
|
|
404
404
|
});
|
|
405
405
|
|
|
406
|
-
it('should respond to disable in configure', function(done) {
|
|
406
|
+
it('should respond to disable in configure', function (done) {
|
|
407
407
|
var server = window.server;
|
|
408
408
|
stubResponse(server);
|
|
409
409
|
server.requests.length = 0;
|
|
410
410
|
|
|
411
411
|
var options = {
|
|
412
412
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
413
|
-
captureUnhandledRejections: true
|
|
413
|
+
captureUnhandledRejections: true,
|
|
414
414
|
};
|
|
415
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
415
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
416
416
|
|
|
417
417
|
rollbar.configure({
|
|
418
|
-
captureUnhandledRejections: false
|
|
418
|
+
captureUnhandledRejections: false,
|
|
419
419
|
});
|
|
420
420
|
|
|
421
421
|
Promise.reject(new Error('test reject'));
|
|
422
422
|
|
|
423
|
-
setTimeout(function() {
|
|
423
|
+
setTimeout(function () {
|
|
424
424
|
server.respond();
|
|
425
425
|
|
|
426
426
|
expect(server.requests.length).to.eql(0); // Disabled, no event
|
|
@@ -430,10 +430,10 @@ describe('options.captureUnhandledRejections', function() {
|
|
|
430
430
|
|
|
431
431
|
done();
|
|
432
432
|
}, 500);
|
|
433
|
-
})
|
|
433
|
+
});
|
|
434
434
|
});
|
|
435
435
|
|
|
436
|
-
describe('log', function() {
|
|
436
|
+
describe('log', function () {
|
|
437
437
|
beforeEach(function (done) {
|
|
438
438
|
window.server = sinon.createFakeServer();
|
|
439
439
|
done();
|
|
@@ -445,84 +445,88 @@ describe('log', function() {
|
|
|
445
445
|
});
|
|
446
446
|
|
|
447
447
|
function stubResponse(server) {
|
|
448
|
-
server.respondWith('POST', 'api/1/item',
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
]
|
|
454
|
-
);
|
|
448
|
+
server.respondWith('POST', 'api/1/item', [
|
|
449
|
+
200,
|
|
450
|
+
{ 'Content-Type': 'application/json' },
|
|
451
|
+
'{"err": 0, "result":{ "uuid": "d4c7acef55bf4c9ea95e4fe9428a8287"}}',
|
|
452
|
+
]);
|
|
455
453
|
}
|
|
456
454
|
|
|
457
|
-
it('should send message when called with message and extra args', function(done) {
|
|
455
|
+
it('should send message when called with message and extra args', function (done) {
|
|
458
456
|
var server = window.server;
|
|
459
457
|
stubResponse(server);
|
|
460
458
|
server.requests.length = 0;
|
|
461
459
|
|
|
462
460
|
var options = {
|
|
463
|
-
accessToken: 'POST_CLIENT_ITEM_TOKEN'
|
|
461
|
+
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
464
462
|
};
|
|
465
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
463
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
466
464
|
|
|
467
|
-
rollbar.log('test message', {
|
|
465
|
+
rollbar.log('test message', { foo: 'bar' });
|
|
468
466
|
|
|
469
|
-
setTimeout(function() {
|
|
467
|
+
setTimeout(function () {
|
|
470
468
|
server.respond();
|
|
471
469
|
|
|
472
470
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
473
471
|
|
|
474
472
|
expect(body.data.body.message.body).to.eql('test message');
|
|
475
|
-
expect(body.data.body.message.extra).to.eql({
|
|
473
|
+
expect(body.data.body.message.extra).to.eql({ foo: 'bar' });
|
|
476
474
|
expect(body.data.notifier.diagnostic.is_uncaught).to.eql(undefined);
|
|
477
|
-
expect(body.data.notifier.diagnostic.original_arg_types).to.eql([
|
|
475
|
+
expect(body.data.notifier.diagnostic.original_arg_types).to.eql([
|
|
476
|
+
'string',
|
|
477
|
+
'object',
|
|
478
|
+
]);
|
|
478
479
|
|
|
479
480
|
done();
|
|
480
481
|
}, 1);
|
|
481
|
-
})
|
|
482
|
+
});
|
|
482
483
|
|
|
483
|
-
it('should send exception when called with error and extra args', function(done) {
|
|
484
|
+
it('should send exception when called with error and extra args', function (done) {
|
|
484
485
|
var server = window.server;
|
|
485
486
|
stubResponse(server);
|
|
486
487
|
server.requests.length = 0;
|
|
487
488
|
|
|
488
489
|
var options = {
|
|
489
|
-
accessToken: 'POST_CLIENT_ITEM_TOKEN'
|
|
490
|
+
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
490
491
|
};
|
|
491
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
492
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
492
493
|
|
|
493
|
-
rollbar.log(new Error('test error'), {
|
|
494
|
+
rollbar.log(new Error('test error'), { foo: 'bar' });
|
|
494
495
|
|
|
495
|
-
setTimeout(function() {
|
|
496
|
+
setTimeout(function () {
|
|
496
497
|
server.respond();
|
|
497
498
|
|
|
498
499
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
499
500
|
|
|
500
501
|
expect(body.data.body.trace.exception.message).to.eql('test error');
|
|
501
|
-
expect(body.data.body.trace.extra).to.eql({
|
|
502
|
+
expect(body.data.body.trace.extra).to.eql({ foo: 'bar' });
|
|
502
503
|
expect(body.data.notifier.diagnostic.is_uncaught).to.eql(undefined);
|
|
503
|
-
expect(body.data.notifier.diagnostic.original_arg_types).to.eql([
|
|
504
|
+
expect(body.data.notifier.diagnostic.original_arg_types).to.eql([
|
|
505
|
+
'error',
|
|
506
|
+
'object',
|
|
507
|
+
]);
|
|
504
508
|
|
|
505
509
|
done();
|
|
506
510
|
}, 1);
|
|
507
|
-
})
|
|
511
|
+
});
|
|
508
512
|
|
|
509
|
-
it('should add custom data when called with error context', function(done) {
|
|
513
|
+
it('should add custom data when called with error context', function (done) {
|
|
510
514
|
var server = window.server;
|
|
511
515
|
stubResponse(server);
|
|
512
516
|
server.requests.length = 0;
|
|
513
517
|
|
|
514
518
|
var options = {
|
|
515
519
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
516
|
-
addErrorContext: true
|
|
520
|
+
addErrorContext: true,
|
|
517
521
|
};
|
|
518
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
522
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
519
523
|
|
|
520
524
|
var err = new Error('test error');
|
|
521
525
|
err.rollbarContext = { err: 'test' };
|
|
522
526
|
|
|
523
|
-
rollbar.error(err, {
|
|
527
|
+
rollbar.error(err, { foo: 'bar' });
|
|
524
528
|
|
|
525
|
-
setTimeout(function() {
|
|
529
|
+
setTimeout(function () {
|
|
526
530
|
server.respond();
|
|
527
531
|
|
|
528
532
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
@@ -533,21 +537,21 @@ describe('log', function() {
|
|
|
533
537
|
|
|
534
538
|
done();
|
|
535
539
|
}, 1);
|
|
536
|
-
})
|
|
540
|
+
});
|
|
537
541
|
|
|
538
|
-
it('should remove circular references in custom data', function(done) {
|
|
542
|
+
it('should remove circular references in custom data', function (done) {
|
|
539
543
|
var server = window.server;
|
|
540
544
|
stubResponse(server);
|
|
541
545
|
server.requests.length = 0;
|
|
542
546
|
|
|
543
547
|
var options = {
|
|
544
548
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
545
|
-
addErrorContext: true
|
|
549
|
+
addErrorContext: true,
|
|
546
550
|
};
|
|
547
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
551
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
548
552
|
|
|
549
553
|
var err = new Error('test error');
|
|
550
|
-
var contextData = { extra: 'baz' }
|
|
554
|
+
var contextData = { extra: 'baz' };
|
|
551
555
|
contextData.data = contextData;
|
|
552
556
|
var context = { err: 'test', contextData: contextData };
|
|
553
557
|
err.rollbarContext = context;
|
|
@@ -561,7 +565,7 @@ describe('log', function() {
|
|
|
561
565
|
custom.self = custom;
|
|
562
566
|
rollbar.error(err, custom);
|
|
563
567
|
|
|
564
|
-
setTimeout(function() {
|
|
568
|
+
setTimeout(function () {
|
|
565
569
|
server.respond();
|
|
566
570
|
|
|
567
571
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
@@ -575,71 +579,77 @@ describe('log', function() {
|
|
|
575
579
|
expect(body.data.custom.notCircular2).to.eql(notCircular);
|
|
576
580
|
|
|
577
581
|
expect(body.data.custom.self).to.eql(
|
|
578
|
-
'Removed circular reference: object'
|
|
582
|
+
'Removed circular reference: object',
|
|
579
583
|
);
|
|
580
584
|
expect(body.data.custom.array).to.eql([
|
|
581
|
-
'one',
|
|
585
|
+
'one',
|
|
586
|
+
'two',
|
|
587
|
+
'Removed circular reference: array',
|
|
582
588
|
]);
|
|
583
589
|
expect(body.data.custom.contextData).to.eql({
|
|
584
590
|
extra: 'baz',
|
|
585
|
-
data: 'Removed circular reference: object'
|
|
591
|
+
data: 'Removed circular reference: object',
|
|
586
592
|
});
|
|
587
593
|
|
|
588
594
|
done();
|
|
589
595
|
}, 1);
|
|
590
|
-
})
|
|
596
|
+
});
|
|
591
597
|
|
|
592
|
-
it('should send message when called with only null arguments', function(done) {
|
|
598
|
+
it('should send message when called with only null arguments', function (done) {
|
|
593
599
|
var server = window.server;
|
|
594
600
|
stubResponse(server);
|
|
595
601
|
server.requests.length = 0;
|
|
596
602
|
|
|
597
603
|
var options = {
|
|
598
604
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
599
|
-
captureUnhandledRejections: true
|
|
605
|
+
captureUnhandledRejections: true,
|
|
600
606
|
};
|
|
601
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
607
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
602
608
|
|
|
603
609
|
rollbar.log(null);
|
|
604
610
|
|
|
605
|
-
setTimeout(function() {
|
|
611
|
+
setTimeout(function () {
|
|
606
612
|
server.respond();
|
|
607
613
|
|
|
608
614
|
var body = JSON.parse(server.requests[0].requestBody);
|
|
609
615
|
|
|
610
|
-
expect(body.data.body.message.body).to.eql(
|
|
616
|
+
expect(body.data.body.message.body).to.eql(
|
|
617
|
+
'Item sent with null or missing arguments.',
|
|
618
|
+
);
|
|
611
619
|
expect(body.data.notifier.diagnostic.original_arg_types).to.eql(['null']);
|
|
612
620
|
|
|
613
621
|
done();
|
|
614
622
|
}, 1);
|
|
615
|
-
})
|
|
623
|
+
});
|
|
616
624
|
|
|
617
|
-
it('should skipFrames when set', function(done) {
|
|
625
|
+
it('should skipFrames when set', function (done) {
|
|
618
626
|
var server = window.server;
|
|
619
627
|
stubResponse(server);
|
|
620
628
|
server.requests.length = 0;
|
|
621
629
|
|
|
622
630
|
var options = {
|
|
623
631
|
accessToken: 'POST_CLIENT_ITEM_TOKEN',
|
|
624
|
-
captureUnhandledRejections: true
|
|
632
|
+
captureUnhandledRejections: true,
|
|
625
633
|
};
|
|
626
|
-
var rollbar = window.rollbar = new Rollbar(options);
|
|
634
|
+
var rollbar = (window.rollbar = new Rollbar(options));
|
|
627
635
|
|
|
628
636
|
var error = new Error('error with stack');
|
|
629
637
|
|
|
630
638
|
rollbar.log(error);
|
|
631
639
|
rollbar.log(error, { skipFrames: 1 });
|
|
632
640
|
|
|
633
|
-
setTimeout(function() {
|
|
641
|
+
setTimeout(function () {
|
|
634
642
|
server.respond();
|
|
635
643
|
|
|
636
|
-
var frames1 = JSON.parse(server.requests[0].requestBody).data.body.trace
|
|
637
|
-
|
|
644
|
+
var frames1 = JSON.parse(server.requests[0].requestBody).data.body.trace
|
|
645
|
+
.frames;
|
|
646
|
+
var frames2 = JSON.parse(server.requests[1].requestBody).data.body.trace
|
|
647
|
+
.frames;
|
|
638
648
|
|
|
639
649
|
expect(frames1.length).to.eql(frames2.length + 1);
|
|
640
|
-
expect(frames1.slice(0
|
|
650
|
+
expect(frames1.slice(0, -1)).to.eql(frames2);
|
|
641
651
|
|
|
642
652
|
done();
|
|
643
653
|
}, 1);
|
|
644
|
-
})
|
|
654
|
+
});
|
|
645
655
|
});
|