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,11 +7,11 @@ var Rollbar = require('../src/react-native/rollbar');
7
7
  var rollbarConfig = {
8
8
  accessToken: 'POST_CLIENT_ITEM_TOKEN',
9
9
  captureUncaught: true,
10
- captureUnhandledRejections: true
11
- }
10
+ captureUnhandledRejections: true,
11
+ };
12
12
  var rollbar = new Rollbar(rollbarConfig);
13
13
 
14
- describe('sendJsonPayload', function() {
14
+ describe('sendJsonPayload', function () {
15
15
  var uuid = 'd4c7acef55bf4c9ea95e4fe9428a8287';
16
16
 
17
17
  before(function (done) {
@@ -25,16 +25,28 @@ describe('sendJsonPayload', function() {
25
25
  });
26
26
 
27
27
  function stubResponse(code, err, message) {
28
- window.fetch.returns(Promise.resolve(new Response(
29
- JSON.stringify({ err: err, message: message, result: { uuid: uuid }}),
30
- { status: code, statusText: message, headers: { 'Content-Type': 'application/json' }}
31
- )));
28
+ window.fetch.returns(
29
+ Promise.resolve(
30
+ new Response(
31
+ JSON.stringify({
32
+ err: err,
33
+ message: message,
34
+ result: { uuid: uuid },
35
+ }),
36
+ {
37
+ status: code,
38
+ statusText: message,
39
+ headers: { 'Content-Type': 'application/json' },
40
+ },
41
+ ),
42
+ ),
43
+ );
32
44
  }
33
45
 
34
- it('should callback with the right value on success', function(done) {
46
+ it('should callback with the right value on success', function (done) {
35
47
  stubResponse(200, 0, 'OK');
36
48
 
37
- var json = JSON.stringify({foo: 'baaar'});
49
+ var json = JSON.stringify({ foo: 'baaar' });
38
50
 
39
51
  rollbar.sendJsonPayload(json);
40
52
 
@@ -53,50 +65,50 @@ const ValidOpenTracingTracerStub = {
53
65
  return {
54
66
  active: () => {
55
67
  return {
56
- setTag: () => { },
68
+ setTag: () => {},
57
69
  context: () => {
58
70
  return {
59
71
  toTraceId: () => DUMMY_TRACE_ID,
60
- toSpanId: () => DUMMY_SPAN_ID
61
- }
62
- }
63
- }
64
- }
65
- }
66
- }
72
+ toSpanId: () => DUMMY_SPAN_ID,
73
+ };
74
+ },
75
+ };
76
+ },
77
+ };
78
+ },
67
79
  };
68
80
 
69
81
  const InvalidOpenTracingTracerStub = {
70
- foo: () => { }
82
+ foo: () => {},
71
83
  };
72
84
 
73
85
  function TestClientGen() {
74
- var TestClient = function() {
86
+ var TestClient = function () {
75
87
  this.transforms = [];
76
88
  this.predicates = [];
77
89
  this.notifier = {
78
- addTransform: function(t) {
90
+ addTransform: function (t) {
79
91
  this.transforms.push(t);
80
92
  return this.notifier;
81
- }.bind(this)
93
+ }.bind(this),
82
94
  };
83
95
  this.queue = {
84
- addPredicate: function(p) {
96
+ addPredicate: function (p) {
85
97
  this.predicates.push(p);
86
98
  return this.queue;
87
- }.bind(this)
99
+ }.bind(this),
88
100
  };
89
101
  this.logCalls = [];
90
102
  var logs = 'log,debug,info,warn,warning,error,critical'.split(',');
91
- for (var i=0, len=logs.length; i < len; i++) {
103
+ for (var i = 0, len = logs.length; i < len; i++) {
92
104
  var fn = logs[i].slice(0);
93
- this[fn] = function(fn, item) {
94
- this.logCalls.push({func: fn, item: item})
95
- }.bind(this, fn)
105
+ this[fn] = function (fn, item) {
106
+ this.logCalls.push({ func: fn, item: item });
107
+ }.bind(this, fn);
96
108
  }
97
109
  this.options = {};
98
110
  this.payloadData = {};
99
- this.configure = function(o, payloadData) {
111
+ this.configure = function (o, payloadData) {
100
112
  this.options = o;
101
113
  this.payloadData = payloadData;
102
114
  };
@@ -105,8 +117,8 @@ function TestClientGen() {
105
117
  return TestClient;
106
118
  }
107
119
 
108
- describe('Rollbar()', function() {
109
- it('should have all of the expected methods with a real client', function(done) {
120
+ describe('Rollbar()', function () {
121
+ it('should have all of the expected methods with a real client', function (done) {
110
122
  var options = {};
111
123
  var rollbar = new Rollbar(options);
112
124
 
@@ -121,7 +133,7 @@ describe('Rollbar()', function() {
121
133
  done();
122
134
  });
123
135
 
124
- it('should have all of the expected methods', function(done) {
136
+ it('should have all of the expected methods', function (done) {
125
137
  var client = new (TestClientGen())();
126
138
  var options = {};
127
139
  var rollbar = new Rollbar(options, client);
@@ -137,7 +149,7 @@ describe('Rollbar()', function() {
137
149
  done();
138
150
  });
139
151
 
140
- it ('should have some default options', function(done) {
152
+ it('should have some default options', function (done) {
141
153
  var client = new (TestClientGen())();
142
154
  var options = {};
143
155
  var rollbar = new Rollbar(options, client);
@@ -146,12 +158,10 @@ describe('Rollbar()', function() {
146
158
  done();
147
159
  });
148
160
 
149
- it ('should merge with the defaults options', function(done) {
161
+ it('should merge with the defaults options', function (done) {
150
162
  var client = new (TestClientGen())();
151
163
  var options = {
152
- scrubFields: [
153
- 'foobar'
154
- ]
164
+ scrubFields: ['foobar'],
155
165
  };
156
166
  var rollbar = new Rollbar(options, client);
157
167
 
@@ -160,12 +170,10 @@ describe('Rollbar()', function() {
160
170
  done();
161
171
  });
162
172
 
163
- it ('should overwrite default if specified', function(done) {
173
+ it('should overwrite default if specified', function (done) {
164
174
  var client = new (TestClientGen())();
165
175
  var options = {
166
- scrubFields: [
167
- 'foobar'
168
- ],
176
+ scrubFields: ['foobar'],
169
177
  overwriteScrubFields: true,
170
178
  };
171
179
  var rollbar = new Rollbar(options, client);
@@ -175,11 +183,11 @@ describe('Rollbar()', function() {
175
183
  done();
176
184
  });
177
185
 
178
- it ('should replace deprecated options', function(done) {
186
+ it('should replace deprecated options', function (done) {
179
187
  var client = new (TestClientGen())();
180
188
  var options = {
181
189
  hostWhiteList: ['foo'],
182
- hostBlackList: ['bar']
190
+ hostBlackList: ['bar'],
183
191
  };
184
192
  var rollbar = new Rollbar(options, client);
185
193
 
@@ -190,7 +198,7 @@ describe('Rollbar()', function() {
190
198
  done();
191
199
  });
192
200
 
193
- it('should return a uuid when logging', function(done) {
201
+ it('should return a uuid when logging', function (done) {
194
202
  var client = new (TestClientGen())();
195
203
  var options = {};
196
204
  var rollbar = new Rollbar(options, client);
@@ -201,7 +209,7 @@ describe('Rollbar()', function() {
201
209
  done();
202
210
  });
203
211
 
204
- it('should package up the inputs', function(done) {
212
+ it('should package up the inputs', function (done) {
205
213
  var client = new (TestClientGen())();
206
214
  var options = {};
207
215
  var rollbar = new Rollbar(options, client);
@@ -214,17 +222,17 @@ describe('Rollbar()', function() {
214
222
  done();
215
223
  });
216
224
 
217
- it('should call the client with the right method', function(done) {
225
+ it('should call the client with the right method', function (done) {
218
226
  var client = new (TestClientGen())();
219
227
  var options = {};
220
228
  var rollbar = new Rollbar(options, client);
221
229
 
222
230
  var methods = 'log,debug,info,warn,warning,error,critical'.split(',');
223
- for (var i=0; i < methods.length; i++) {
231
+ for (var i = 0; i < methods.length; i++) {
224
232
  var msg = 'message:' + i;
225
233
  rollbar[methods[i]](msg);
226
234
  expect(client.logCalls[i].func).to.eql(methods[i]);
227
- expect(client.logCalls[i].item.message).to.eql(msg)
235
+ expect(client.logCalls[i].item.message).to.eql(msg);
228
236
  }
229
237
 
230
238
  done();
@@ -249,64 +257,67 @@ describe('Rollbar()', function() {
249
257
  });
250
258
  });
251
259
 
252
- describe('configure', function() {
253
- it('should configure client', function(done) {
260
+ describe('configure', function () {
261
+ it('should configure client', function (done) {
254
262
  var client = new (TestClientGen())();
255
263
  var options = {
256
264
  payload: {
257
265
  a: 42,
258
- environment: 'testtest'
259
- }
266
+ environment: 'testtest',
267
+ },
260
268
  };
261
269
  var rollbar = new Rollbar(options, client);
262
270
  expect(rollbar.options.payload.environment).to.eql('testtest');
263
271
 
264
- rollbar.configure({payload: {environment: 'borkbork'}});
272
+ rollbar.configure({ payload: { environment: 'borkbork' } });
265
273
  expect(rollbar.options.payload.environment).to.eql('borkbork');
266
274
  expect(client.options.payload.environment).to.eql('borkbork');
267
275
  done();
268
276
  });
269
- it('should accept a second parameter and use it as the payload value', function(done) {
277
+ it('should accept a second parameter and use it as the payload value', function (done) {
270
278
  var client = new (TestClientGen())();
271
279
  var options = {
272
280
  payload: {
273
281
  a: 42,
274
- environment: 'testtest'
275
- }
282
+ environment: 'testtest',
283
+ },
276
284
  };
277
285
  var rollbar = new Rollbar(options, client);
278
286
  expect(rollbar.options.payload.environment).to.eql('testtest');
279
287
 
280
- rollbar.configure({somekey: 'borkbork'}, {b: 97});
288
+ rollbar.configure({ somekey: 'borkbork' }, { b: 97 });
281
289
  expect(rollbar.options.somekey).to.eql('borkbork');
282
290
  expect(rollbar.options.payload.b).to.eql(97);
283
291
  expect(client.payloadData.b).to.eql(97);
284
292
  done();
285
293
  });
286
- it('should accept a second parameter and override the payload with it', function(done) {
294
+ it('should accept a second parameter and override the payload with it', function (done) {
287
295
  var client = new (TestClientGen())();
288
296
  var options = {
289
297
  payload: {
290
298
  a: 42,
291
- environment: 'testtest'
292
- }
299
+ environment: 'testtest',
300
+ },
293
301
  };
294
302
  var rollbar = new Rollbar(options, client);
295
303
  expect(rollbar.options.payload.environment).to.eql('testtest');
296
304
 
297
- rollbar.configure({somekey: 'borkbork', payload: {b: 101}}, {b: 97});
305
+ rollbar.configure({ somekey: 'borkbork', payload: { b: 101 } }, { b: 97 });
298
306
  expect(rollbar.options.somekey).to.eql('borkbork');
299
307
  expect(rollbar.options.payload.b).to.eql(97);
300
308
  expect(client.payloadData.b).to.eql(97);
301
309
  done();
302
310
  });
303
- it ('should replace deprecated options', function(done) {
311
+ it('should replace deprecated options', function (done) {
304
312
  var client = new (TestClientGen())();
305
313
  var options = {
306
314
  hostWhiteList: ['foo'],
307
- hostBlackList: ['bar']
315
+ hostBlackList: ['bar'],
308
316
  };
309
- var rollbar = window.rollbar = new Rollbar({ autoInstrument: false }, client);
317
+ var rollbar = (window.rollbar = new Rollbar(
318
+ { autoInstrument: false },
319
+ client,
320
+ ));
310
321
  rollbar.configure(options);
311
322
 
312
323
  expect(rollbar.options.hostWhiteList).to.eql(undefined);
@@ -315,54 +326,61 @@ describe('configure', function() {
315
326
  expect(rollbar.options.hostBlockList).to.contain('bar');
316
327
  done();
317
328
  });
318
- it('should store configured options', function(done) {
329
+ it('should store configured options', function (done) {
319
330
  var client = new (TestClientGen())();
320
331
  var options = {
321
332
  captureUncaught: true,
322
333
  payload: {
323
334
  a: 42,
324
- environment: 'testtest'
325
- }
335
+ environment: 'testtest',
336
+ },
326
337
  };
327
338
  var rollbar = new Rollbar(options, client);
328
- expect(rollbar.options._configuredOptions.payload.environment).to.eql('testtest');
339
+ expect(rollbar.options._configuredOptions.payload.environment).to.eql(
340
+ 'testtest',
341
+ );
329
342
  expect(rollbar.options._configuredOptions.captureUncaught).to.eql(true);
330
343
 
331
- rollbar.configure({ captureUncaught: false, payload: {environment: 'borkbork'}});
332
- expect(rollbar.options._configuredOptions.payload.environment).to.eql('borkbork');
344
+ rollbar.configure({
345
+ captureUncaught: false,
346
+ payload: { environment: 'borkbork' },
347
+ });
348
+ expect(rollbar.options._configuredOptions.payload.environment).to.eql(
349
+ 'borkbork',
350
+ );
333
351
  expect(rollbar.options._configuredOptions.captureUncaught).to.eql(false);
334
352
  done();
335
353
  });
336
354
  });
337
355
 
338
- describe('captureEvent', function() {
339
- it('should handle missing/default type and level', function(done) {
356
+ describe('captureEvent', function () {
357
+ it('should handle missing/default type and level', function (done) {
340
358
  var options = {};
341
359
  var rollbar = new Rollbar(options);
342
360
 
343
- var event = rollbar.captureEvent({foo: 'bar'});
361
+ var event = rollbar.captureEvent({ foo: 'bar' });
344
362
  expect(event.type).to.eql('manual');
345
363
  expect(event.level).to.eql('info');
346
364
  expect(event.body.foo).to.eql('bar');
347
365
 
348
366
  done();
349
367
  });
350
- it('should handle specified type and level', function(done) {
368
+ it('should handle specified type and level', function (done) {
351
369
  var options = {};
352
370
  var rollbar = new Rollbar(options);
353
371
 
354
- var event = rollbar.captureEvent('log', {foo: 'bar'}, 'debug');
372
+ var event = rollbar.captureEvent('log', { foo: 'bar' }, 'debug');
355
373
  expect(event.type).to.eql('log');
356
374
  expect(event.level).to.eql('debug');
357
375
  expect(event.body.foo).to.eql('bar');
358
376
 
359
377
  done();
360
378
  });
361
- it('should handle extra args', function(done) {
379
+ it('should handle extra args', function (done) {
362
380
  var options = {};
363
381
  var rollbar = new Rollbar(options);
364
382
 
365
- var event = rollbar.captureEvent('meaningless', {foo: 'bar'}, 23);
383
+ var event = rollbar.captureEvent('meaningless', { foo: 'bar' }, 23);
366
384
  expect(event.type).to.eql('manual');
367
385
  expect(event.level).to.eql('info');
368
386
  expect(event.body.foo).to.eql('bar');
@@ -371,7 +389,7 @@ describe('captureEvent', function() {
371
389
  });
372
390
  });
373
391
 
374
- describe('callback options', function() {
392
+ describe('callback options', function () {
375
393
  beforeEach(function (done) {
376
394
  // In react-native environment, stub fetch() instead of XMLHttpRequest
377
395
  window.fetchStub = sinon.stub(window, 'fetch');
@@ -385,20 +403,32 @@ describe('callback options', function() {
385
403
  function stubResponse(code, err, message) {
386
404
  var uuid = 'd4c7acef55bf4c9ea95e4fe9428a8287';
387
405
 
388
- window.fetch.returns(Promise.resolve(new Response(
389
- JSON.stringify({ err: err, message: message, result: { uuid: uuid }}),
390
- { status: code, statusText: message, headers: { 'Content-Type': 'application/json' }}
391
- )));
406
+ window.fetch.returns(
407
+ Promise.resolve(
408
+ new Response(
409
+ JSON.stringify({
410
+ err: err,
411
+ message: message,
412
+ result: { uuid: uuid },
413
+ }),
414
+ {
415
+ status: code,
416
+ statusText: message,
417
+ headers: { 'Content-Type': 'application/json' },
418
+ },
419
+ ),
420
+ ),
421
+ );
392
422
  }
393
423
 
394
- it('should use checkIgnore when set', function(done) {
424
+ it('should use checkIgnore when set', function (done) {
395
425
  stubResponse(200, 0, 'OK');
396
426
 
397
427
  var options = {
398
428
  accessToken: 'POST_CLIENT_ITEM_TOKEN',
399
- checkIgnore: function(_isUncaught, _args, _payload) {
429
+ checkIgnore: function (_isUncaught, _args, _payload) {
400
430
  return true;
401
- }
431
+ },
402
432
  };
403
433
  var rollbar = new Rollbar(options);
404
434
 
@@ -409,20 +439,20 @@ describe('callback options', function() {
409
439
  done();
410
440
  });
411
441
 
412
- it('should use onSendCallback when set', function(done) {
442
+ it('should use onSendCallback when set', function (done) {
413
443
  stubResponse(200, 0, 'OK');
414
444
 
415
445
  var options = {
416
446
  accessToken: 'POST_CLIENT_ITEM_TOKEN',
417
- onSendCallback: function(_isUncaught, _args, payload) {
447
+ onSendCallback: function (_isUncaught, _args, payload) {
418
448
  payload.foo = 'bar';
419
- }
449
+ },
420
450
  };
421
451
  var rollbar = new Rollbar(options);
422
452
 
423
453
  rollbar.log('test'); // generate a payload to inspect
424
454
 
425
- setTimeout(function() {
455
+ setTimeout(function () {
426
456
  expect(window.fetchStub.called).to.be.ok();
427
457
  var body = JSON.parse(window.fetchStub.getCall(0).args[1].body);
428
458
  expect(body.data.foo).to.eql('bar');
@@ -431,20 +461,20 @@ describe('callback options', function() {
431
461
  }, 1);
432
462
  });
433
463
 
434
- it('should use transform when set', function(done) {
464
+ it('should use transform when set', function (done) {
435
465
  stubResponse(200, 0, 'OK');
436
466
 
437
467
  var options = {
438
468
  accessToken: 'POST_CLIENT_ITEM_TOKEN',
439
- transform: function(data, _item) {
469
+ transform: function (data, _item) {
440
470
  data.foo = 'baz';
441
- }
471
+ },
442
472
  };
443
473
  var rollbar = new Rollbar(options);
444
474
 
445
475
  rollbar.log('test'); // generate a payload to inspect
446
476
 
447
- setTimeout(function() {
477
+ setTimeout(function () {
448
478
  expect(window.fetchStub.called).to.be.ok();
449
479
  var body = JSON.parse(window.fetchStub.getCall(0).args[1].body);
450
480
  expect(body.data.foo).to.eql('baz');
@@ -454,8 +484,8 @@ describe('callback options', function() {
454
484
  });
455
485
  });
456
486
 
457
- describe('createItem', function() {
458
- it('should handle multiple strings', function(done) {
487
+ describe('createItem', function () {
488
+ it('should handle multiple strings', function (done) {
459
489
  var client = new (TestClientGen())();
460
490
  var options = {};
461
491
  var rollbar = new Rollbar(options, client);
@@ -467,7 +497,7 @@ describe('createItem', function() {
467
497
 
468
498
  done();
469
499
  });
470
- it('should handle errors', function(done) {
500
+ it('should handle errors', function (done) {
471
501
  var client = new (TestClientGen())();
472
502
  var options = {};
473
503
  var rollbar = new Rollbar(options, client);
@@ -480,13 +510,13 @@ describe('createItem', function() {
480
510
 
481
511
  done();
482
512
  });
483
- it('should handle a callback', function(done) {
513
+ it('should handle a callback', function (done) {
484
514
  var client = new (TestClientGen())();
485
515
  var options = {};
486
516
  var rollbar = new Rollbar(options, client);
487
517
 
488
518
  var myCallbackCalled = false;
489
- var myCallback = function() {
519
+ var myCallback = function () {
490
520
  myCallbackCalled = true;
491
521
  };
492
522
  var args = [new Error('Whoa'), 'first', myCallback, 'second'];
@@ -500,7 +530,7 @@ describe('createItem', function() {
500
530
 
501
531
  done();
502
532
  });
503
- it('should handle arrays', function(done) {
533
+ it('should handle arrays', function (done) {
504
534
  var client = new (TestClientGen())();
505
535
  var options = {};
506
536
  var rollbar = new Rollbar(options, client);
@@ -514,12 +544,12 @@ describe('createItem', function() {
514
544
 
515
545
  done();
516
546
  });
517
- it('should handle objects', function(done) {
547
+ it('should handle objects', function (done) {
518
548
  var client = new (TestClientGen())();
519
549
  var options = {};
520
550
  var rollbar = new Rollbar(options, client);
521
551
 
522
- var args = [new Error('Whoa'), 'first', {a: 1, b: 2}, 'second'];
552
+ var args = [new Error('Whoa'), 'first', { a: 1, b: 2 }, 'second'];
523
553
  var item = rollbar._createItem(args);
524
554
  expect(item.err).to.eql(args[0]);
525
555
  expect(item.message).to.eql('first');
@@ -529,24 +559,24 @@ describe('createItem', function() {
529
559
 
530
560
  done();
531
561
  });
532
- it('should have a timestamp', function(done) {
562
+ it('should have a timestamp', function (done) {
533
563
  var client = new (TestClientGen())();
534
564
  var options = {};
535
565
  var rollbar = new Rollbar(options, client);
536
566
 
537
- var args = [new Error('Whoa'), 'first', {a: 1, b: 2}, 'second'];
567
+ var args = [new Error('Whoa'), 'first', { a: 1, b: 2 }, 'second'];
538
568
  var item = rollbar._createItem(args);
539
- var now = (new Date()).getTime();
569
+ var now = new Date().getTime();
540
570
  expect(item.timestamp).to.be.within(now - 1000, now + 1000);
541
571
 
542
572
  done();
543
573
  });
544
- it('should have an uuid', function(done) {
574
+ it('should have an uuid', function (done) {
545
575
  var client = new (TestClientGen())();
546
576
  var options = {};
547
577
  var rollbar = new Rollbar(options, client);
548
578
 
549
- var args = [new Error('Whoa'), 'first', {a: 1, b: 2}, 'second'];
579
+ var args = [new Error('Whoa'), 'first', { a: 1, b: 2 }, 'second'];
550
580
  var item = rollbar._createItem(args);
551
581
  expect(item.uuid).to.be.ok();
552
582
 
@@ -557,38 +587,42 @@ describe('createItem', function() {
557
587
 
558
588
  done();
559
589
  });
560
- it('should handle dates', function(done) {
590
+ it('should handle dates', function (done) {
561
591
  var client = new (TestClientGen())();
562
592
  var options = {};
563
593
  var rollbar = new Rollbar(options, client);
564
594
 
565
- var y2k = new Date(2000, 0, 1)
566
- var args = [new Error('Whoa'), 'first', y2k, {a: 1, b: 2}, 'second'];
595
+ var y2k = new Date(2000, 0, 1);
596
+ var args = [new Error('Whoa'), 'first', y2k, { a: 1, b: 2 }, 'second'];
567
597
  var item = rollbar._createItem(args);
568
598
  expect(item.custom.extraArgs).to.eql([y2k, 'second']);
569
599
 
570
600
  done();
571
601
  });
572
- it('should handle numbers', function(done) {
602
+ it('should handle numbers', function (done) {
573
603
  var client = new (TestClientGen())();
574
604
  var options = {};
575
605
  var rollbar = new Rollbar(options, client);
576
606
 
577
- var args = [new Error('Whoa'), 'first', 42, {a: 1, b: 2}, 'second'];
607
+ var args = [new Error('Whoa'), 'first', 42, { a: 1, b: 2 }, 'second'];
578
608
  var item = rollbar._createItem(args);
579
609
  expect(item.custom.extraArgs).to.eql([42, 'second']);
580
610
 
581
611
  done();
582
612
  });
583
- it('should handle domexceptions', function(done) {
613
+ it('should handle domexceptions', function (done) {
584
614
  var client = new (TestClientGen())();
585
615
  var options = {};
586
616
  var rollbar = new Rollbar(options, client);
587
617
 
588
618
  if (document && document.querySelectorAll) {
589
619
  var e;
590
- try { document.querySelectorAll('div:foo'); } catch (ee) { e = ee }
591
- var args = [e, 'first', 42, {a: 1, b: 2}, 'second'];
620
+ try {
621
+ document.querySelectorAll('div:foo');
622
+ } catch (ee) {
623
+ e = ee;
624
+ }
625
+ var args = [e, 'first', 42, { a: 1, b: 2 }, 'second'];
592
626
  var item = rollbar._createItem(args);
593
627
  expect(item.err).to.be.ok();
594
628
  }
@@ -597,8 +631,8 @@ describe('createItem', function() {
597
631
  });
598
632
  });
599
633
 
600
- describe('singleton', function() {
601
- it('should pass through the underlying client after init', function(done) {
634
+ describe('singleton', function () {
635
+ it('should pass through the underlying client after init', function (done) {
602
636
  var client = new (TestClientGen())();
603
637
  var options = {};
604
638
  var rollbar = Rollbar.init(options, client);