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
@@ -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
- 200,
27
- { 'Content-Type': 'application/json' },
28
- '{"err": 0, "result":{ "uuid": "d4c7acef55bf4c9ea95e4fe9428a8287"}}'
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('test error');
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('test DOMException');
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
- 200,
333
- { 'Content-Type': 'application/json' },
334
- '{"err": 0, "result":{ "uuid": "d4c7acef55bf4c9ea95e4fe9428a8287"}}'
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
- 200,
451
- { 'Content-Type': 'application/json' },
452
- '{"err": 0, "result":{ "uuid": "d4c7acef55bf4c9ea95e4fe9428a8287"}}'
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', { 'foo': 'bar' });
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({ 'foo': 'bar' });
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(['string', 'object']);
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'), { 'foo': 'bar' });
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({ 'foo': 'bar' });
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(['error', 'object']);
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, { 'foo': 'bar' });
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', 'two', 'Removed circular reference: array'
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('Item sent with null or missing arguments.');
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.frames;
637
- var frames2 = JSON.parse(server.requests[1].requestBody).data.body.trace.frames;
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,-1)).to.eql(frames2);
650
+ expect(frames1.slice(0, -1)).to.eql(frames2);
641
651
 
642
652
  done();
643
653
  }, 1);
644
- })
654
+ });
645
655
  });