rollbar 2.26.3 → 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 (115) 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 +48 -38
  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 +5710 -5070
  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 +5716 -5081
  16. package/dist/rollbar.named-amd.js.map +1 -1
  17. package/dist/rollbar.named-amd.min.js +2 -1
  18. package/dist/rollbar.named-amd.min.js.map +1 -1
  19. package/dist/rollbar.noconflict.umd.js +5702 -5068
  20. package/dist/rollbar.noconflict.umd.js.map +1 -1
  21. package/dist/rollbar.noconflict.umd.min.js +2 -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 +5716 -5082
  25. package/dist/rollbar.umd.js.map +1 -1
  26. package/dist/rollbar.umd.min.js +2 -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 +15 -15
  32. package/package.json +3 -2
  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 +570 -358
  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 +45 -38
  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 -42
  115. package/.gitmodules +0 -3
package/Gruntfile.js CHANGED
@@ -2,7 +2,6 @@
2
2
  * Build and test rollbar.js
3
3
  */
4
4
 
5
-
6
5
  'use strict';
7
6
 
8
7
  var glob = require('glob');
@@ -12,7 +11,6 @@ var fs = require('fs');
12
11
 
13
12
  var webpackConfig = require('./webpack.config.js');
14
13
 
15
-
16
14
  function findTests(context) {
17
15
  if (context !== 'browser') {
18
16
  return {};
@@ -20,7 +18,7 @@ function findTests(context) {
20
18
  var files = glob.sync('test/**/!(server.)*.test.js');
21
19
  var mapping = {};
22
20
 
23
- files.forEach(function(file) {
21
+ files.forEach(function (file) {
24
22
  var testName = path.basename(file, '.test.js');
25
23
  mapping[testName] = file;
26
24
  });
@@ -39,19 +37,19 @@ function buildGruntKarmaConfig(singleRun, tests, reporters) {
39
37
  pattern: 'dist/**/*.js',
40
38
  included: false,
41
39
  served: true,
42
- watched: false
40
+ watched: false,
43
41
  },
44
42
  {
45
43
  pattern: 'src/**/*.js',
46
44
  included: false,
47
45
  served: true,
48
- watched: false
46
+ watched: false,
49
47
  },
50
48
  {
51
49
  pattern: 'examples/**/*.js',
52
50
  included: false,
53
51
  served: true,
54
- watched: false
52
+ watched: false,
55
53
  },
56
54
 
57
55
  // Examples HTML, set `included: true`, but they won't be executed or added
@@ -60,9 +58,9 @@ function buildGruntKarmaConfig(singleRun, tests, reporters) {
60
58
  pattern: 'examples/**/*.html',
61
59
  included: true,
62
60
  served: true,
63
- watched: false
64
- }
65
- ]
61
+ watched: false,
62
+ },
63
+ ],
66
64
  },
67
65
  };
68
66
 
@@ -72,20 +70,18 @@ function buildGruntKarmaConfig(singleRun, tests, reporters) {
72
70
 
73
71
  for (var testName in tests) {
74
72
  var testFile = tests[testName];
75
- var testConfig = config[testName] = {};
73
+ var testConfig = (config[testName] = {});
76
74
 
77
75
  // Special case for testing requirejs integration.
78
76
  // Include the requirejs module as a framework so
79
77
  // Karma will inclue it in the web page.
80
78
  if (testName === 'requirejs') {
81
- testConfig.files = [
82
- {src: './dist/rollbar.umd.js', included: false}
83
- ];
79
+ testConfig.files = [{ src: './dist/rollbar.umd.js', included: false }];
84
80
  // NOTE: requirejs should go first in case the subsequent libraries
85
81
  // check for the existence of `define()`
86
82
  testConfig.frameworks = ['requirejs', 'expect', 'mocha'];
87
83
  } else {
88
- testConfig.files = [{src: [testFile]}];
84
+ testConfig.files = [{ src: [testFile] }];
89
85
  }
90
86
 
91
87
  // Special config for BrowserStack IE tests
@@ -98,8 +94,7 @@ function buildGruntKarmaConfig(singleRun, tests, reporters) {
98
94
  return config;
99
95
  }
100
96
 
101
-
102
- module.exports = function(grunt) {
97
+ module.exports = function (grunt) {
103
98
  require('time-grunt')(grunt);
104
99
 
105
100
  var browserTests = findTests('browser');
@@ -119,7 +114,6 @@ module.exports = function(grunt) {
119
114
  grunt.loadNpmTasks('grunt-text-replace');
120
115
  grunt.loadNpmTasks('grunt-vows');
121
116
 
122
-
123
117
  var rollbarJsSnippet = fs.readFileSync('dist/rollbar.snippet.js');
124
118
  var rollbarjQuerySnippet = fs.readFileSync('dist/plugins/jquery.min.js');
125
119
 
@@ -129,46 +123,62 @@ module.exports = function(grunt) {
129
123
  vows: {
130
124
  all: {
131
125
  options: {
132
- reporter: 'spec'
126
+ reporter: 'spec',
133
127
  },
134
- src: ['test/server.*.test.js']
135
- }
128
+ src: ['test/server.*.test.js'],
129
+ },
136
130
  },
137
131
 
138
132
  karma: buildGruntKarmaConfig(singleRun, browserTests, reporters),
139
133
 
140
134
  replace: {
141
135
  snippets: {
142
- src: ['*.md', 'src/**/*.js', 'examples/*.+(html|js)', 'examples/*/*.+(html|js)', 'docs/**/*.md'],
136
+ src: [
137
+ '*.md',
138
+ 'src/**/*.js',
139
+ 'examples/*.+(html|js)',
140
+ 'examples/*/*.+(html|js)',
141
+ 'docs/**/*.md',
142
+ ],
143
143
  overwrite: true,
144
144
  replacements: [
145
145
  // Main rollbar snippet
146
146
  {
147
- from: new RegExp('^(.*// Rollbar Snippet)[\n\r]+(.*[\n\r])*(.*// End Rollbar Snippet)', 'm'), // eslint-disable-line no-control-regex
148
- to: function(match, index, fullText, captures) {
147
+ from: new RegExp(
148
+ /* eslint-disable-next-line no-control-regex */
149
+ '^(.*// Rollbar Snippet)[\n\r]+(.*[\n\r])*(.*// End Rollbar Snippet)',
150
+ 'm',
151
+ ),
152
+ to: function (match, index, fullText, captures) {
149
153
  captures[1] = rollbarJsSnippet;
150
154
  return captures.join('\n');
151
- }
155
+ },
152
156
  },
153
157
  // jQuery rollbar plugin snippet
154
158
  {
155
- from: new RegExp('^(.*// Rollbar jQuery Snippet)[\n\r]+(.*[\n\r])*(.*// End Rollbar jQuery Snippet)', 'm'), // eslint-disable-line no-control-regex
156
- to: function(match, index, fullText, captures) {
159
+ from: new RegExp(
160
+ /* eslint-disable-next-line no-control-regex */
161
+ '^(.*// Rollbar jQuery Snippet)[\n\r]+(.*[\n\r])*(.*// End Rollbar jQuery Snippet)',
162
+ 'm',
163
+ ),
164
+ to: function (match, index, fullText, captures) {
157
165
  captures[1] = rollbarjQuerySnippet;
158
166
  return captures.join('\n');
159
- }
167
+ },
160
168
  },
161
169
  // README CI link
162
170
  {
163
- from: new RegExp('(https://github\\.com/rollbar/rollbar\\.js/workflows/Rollbar\\.js%20CI/badge\\.svg\\?branch=v)([0-9a-zA-Z.-]+)'),
164
- to: function(match, index, fullText, captures) {
171
+ from: new RegExp(
172
+ '(https://github\\.com/rollbar/rollbar\\.js/workflows/Rollbar\\.js%20CI/badge\\.svg\\?branch=v)([0-9a-zA-Z.-]+)',
173
+ ),
174
+ to: function (match, index, fullText, captures) {
165
175
  captures[1] = pkg.version;
166
176
  return captures.join('');
167
- }
168
- }
169
- ]
170
- }
171
- }
177
+ },
178
+ },
179
+ ],
180
+ },
181
+ },
172
182
  });
173
183
 
174
184
  grunt.registerTask('build', ['webpack', 'replace:snippets']);
@@ -176,12 +186,12 @@ module.exports = function(grunt) {
176
186
  grunt.registerTask('test', ['test-server', 'test-browser']);
177
187
  grunt.registerTask('release', ['build', 'copyrelease']);
178
188
 
179
- grunt.registerTask('test-server', function(_target) {
189
+ grunt.registerTask('test-server', function (_target) {
180
190
  var tasks = ['vows'];
181
191
  grunt.task.run.apply(grunt.task, tasks);
182
192
  });
183
193
 
184
- grunt.registerTask('test-browser', function(target) {
194
+ grunt.registerTask('test-browser', function (target) {
185
195
  var karmaTask = 'karma' + (target ? ':' + target : '');
186
196
  var tasks = [karmaTask];
187
197
  grunt.task.run.apply(grunt.task, tasks);
@@ -196,11 +206,11 @@ module.exports = function(grunt) {
196
206
  var minJs = 'dist/rollbar' + buildName + '.min.js';
197
207
 
198
208
  var releaseJs = 'release/rollbar' + buildName + '-' + version + '.js';
199
- var releaseMinJs = 'release/rollbar' + buildName + '-' + version + '.min.js';
209
+ var releaseMinJs =
210
+ 'release/rollbar' + buildName + '-' + version + '.min.js';
200
211
 
201
212
  grunt.file.copy(js, releaseJs);
202
213
  grunt.file.copy(minJs, releaseMinJs);
203
214
  });
204
215
  });
205
-
206
216
  };
package/README.md CHANGED
@@ -12,21 +12,20 @@
12
12
  [![Code Quality: Javascript](https://img.shields.io/lgtm/grade/javascript/g/rollbar/rollbar.js.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/rollbar/rollbar.js/context:javascript)
13
13
  [![Total Alerts](https://img.shields.io/lgtm/alerts/g/rollbar/rollbar.js.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/rollbar/rollbar.js/alerts)
14
14
 
15
-
16
15
  ---
17
16
 
18
17
  ## Key benefits of using Rollbar.js are:
18
+
19
19
  - **Cross platform:** Rollbar.js supports both server-side and client-side Javascript, including frameworks such as <a href="https://docs.rollbar.com/docs/react-ts">React</a>, <a href="https://docs.rollbar.com/docs/angular">Angular</a>, <a href="https://docs.rollbar.com/docs/nodejs#using-express">Express</a>, <a href="https://docs.rollbar.com/docs/nextjs">Next.js</a> and more.
20
20
  - **Telemetry:** The telemetry timeline provides a list of “breadcrumbs” events that can help developers understand and fix problems in their client-side javascript. <a href="https://docs.rollbar.com/docs/rollbarjs-telemetry">Learn more about telemetry</a>.
21
21
  - **Automatic error grouping:** Rollbar aggregates Occurrences caused by the same error into Items that represent application issues. <a href="https://docs.rollbar.com/docs/grouping-occurrences">Learn more about reducing log noise</a>.
22
22
  - **Advanced search:** Filter items by many different properties. <a href="https://docs.rollbar.com/docs/search-items">Learn more about search</a>.
23
23
  - **Customizable notifications:** Rollbar supports several messaging and incident management tools where your team can get notified about errors and important events by real-time alerts. <a href="https://docs.rollbar.com/docs/notifications">Learn more about Rollbar notifications</a>.
24
24
 
25
-
26
25
  ## Setup Instructions
27
26
 
28
27
  1. [Sign up for a Rollbar account](https://rollbar.com/signup).
29
- 2. For client-side Javascript, follow the [Browser Quick Start](https://docs.rollbar.com/docs/javascript#section-quick-start-browser) instructions. For Node.js, follow the [Server Quick Start](https://docs.rollbar.com/docs/javascript#section-quick-start-server).
28
+ 2. For client-side Javascript, follow the [Browser Quick Start](https://docs.rollbar.com/docs/javascript#section-quick-start-browser) instructions. For Node.js, follow the [Server Quick Start](https://docs.rollbar.com/docs/javascript#section-quick-start-server).
30
29
 
31
30
  ## Usage and Reference
32
31
 
@@ -46,7 +45,6 @@ For bug reports, please [open an issue on GitHub](https://github.com/rollbar/rol
46
45
 
47
46
  To set up a development environment, you'll need Node.js and npm.
48
47
 
49
- 1. `git submodule update --init`
50
48
  2. `npm install -D`
51
49
  3. `make`
52
50
 
package/bower.json CHANGED
@@ -1,9 +1,7 @@
1
1
  {
2
2
  "name": "rollbar",
3
3
  "dependencies": {},
4
- "main": [
5
- "dist/rollbar.umd.js"
6
- ],
4
+ "main": ["dist/rollbar.umd.js"],
7
5
  "ignore": [
8
6
  "dist/*.nojson*",
9
7
  "dist/*.named-amd*",
package/defaults.js CHANGED
@@ -5,13 +5,25 @@ var version = pkg.version;
5
5
  module.exports = {
6
6
  __NOTIFIER_VERSION__: JSON.stringify(pkg.version),
7
7
  __JQUERY_PLUGIN_VERSION__: JSON.stringify(pkg.plugins.jquery.version),
8
- __DEFAULT_SERVER_SCRUB_FIELDS__: JSON.stringify(pkg.defaults.server.scrubFields),
9
- __DEFAULT_SERVER_SCRUB_HEADERS__: JSON.stringify(pkg.defaults.server.scrubHeaders),
8
+ __DEFAULT_SERVER_SCRUB_FIELDS__: JSON.stringify(
9
+ pkg.defaults.server.scrubFields,
10
+ ),
11
+ __DEFAULT_SERVER_SCRUB_HEADERS__: JSON.stringify(
12
+ pkg.defaults.server.scrubHeaders,
13
+ ),
10
14
  __DEFAULT_ENDPOINT__: JSON.stringify(pkg.defaults.endpoint),
11
15
  __DEFAULT_LOG_LEVEL__: JSON.stringify(pkg.defaults.logLevel),
12
16
  __DEFAULT_REPORT_LEVEL__: JSON.stringify(pkg.defaults.reportLevel),
13
- __DEFAULT_UNCAUGHT_ERROR_LEVEL: JSON.stringify(pkg.defaults.uncaughtErrorLevel),
14
- __DEFAULT_ROLLBARJS_URL__: JSON.stringify('https://' + pkg.cdn.host + '/rollbarjs/refs/tags/v' + version + '/rollbar.min.js'),
17
+ __DEFAULT_UNCAUGHT_ERROR_LEVEL: JSON.stringify(
18
+ pkg.defaults.uncaughtErrorLevel,
19
+ ),
20
+ __DEFAULT_ROLLBARJS_URL__: JSON.stringify(
21
+ 'https://' +
22
+ pkg.cdn.host +
23
+ '/rollbarjs/refs/tags/v' +
24
+ version +
25
+ '/rollbar.min.js',
26
+ ),
15
27
  __DEFAULT_MAX_ITEMS__: pkg.defaults.maxItems,
16
- __DEFAULT_ITEMS_PER_MIN__: pkg.defaults.itemsPerMin
28
+ __DEFAULT_ITEMS_PER_MIN__: pkg.defaults.itemsPerMin,
17
29
  };
@@ -1 +1 @@
1
- !function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=0)}([function(e,r,t){"use strict";!function(e,r,t){var n=r.Rollbar;if(n){n.configure({payload:{notifier:{plugins:{jquery:{version:"0.0.8"}}}}});var o=function(e){if(n.error(e),r.console){var t="[reported to Rollbar]";n.options&&!n.options.enabled&&(t="[Rollbar not enabled]"),r.console.log(e.message+" "+t)}};e(t).ajaxError((function(e,r,t,o){var u=r.status,a=t.url,i=t.type;if(u){var l={status:u,url:a,type:i,isAjax:!0,data:t.data,jqXHR_responseText:r.responseText,jqXHR_statusText:r.statusText},f=o||"jQuery ajax error for "+i;n.warning(f,l)}}));var u=e.fn.ready;e.fn.ready=function(e){return u.call(this,(function(r){try{e(r)}catch(e){o(e)}}))};var a=e.event.add;e.event.add=function(r,t,n,u,i){var l,f=function(e){return function(){try{return e.apply(this,arguments)}catch(e){o(e)}}};return n.handler?(l=n.handler,n.handler=f(n.handler)):(l=n,n=f(n)),l.guid?n.guid=l.guid:n.guid=l.guid=e.guid++,a.call(this,r,t,n,u,i)}}}(jQuery,window,document)}]);
1
+ (()=>{"use strict";!function(r,t,n){var e=t.Rollbar;if(e){e.configure({payload:{notifier:{plugins:{jquery:{version:"0.0.8"}}}}});var a=function(r){if(e.error(r),t.console){var n="[reported to Rollbar]";e.options&&!e.options.enabled&&(n="[Rollbar not enabled]"),t.console.log(r.message+" "+n)}};r(n).ajaxError((function(r,t,n,a){var o=t.status,i=n.url,u=n.type;if(o){var s={status:o,url:i,type:u,isAjax:!0,data:n.data,jqXHR_responseText:t.responseText,jqXHR_statusText:t.statusText},d=a||"jQuery ajax error for "+u;e.warning(d,s)}}));var o=r.fn.ready;r.fn.ready=function(r){return o.call(this,(function(t){try{r(t)}catch(r){a(r)}}))};var i=r.event.add;r.event.add=function(t,n,e,o,u){var s,d=function(r){return function(){try{return r.apply(this,arguments)}catch(r){a(r)}}};return e.handler?(s=e.handler,e.handler=d(e.handler)):(s=e,e=d(e)),s.guid?e.guid=s.guid:e.guid=s.guid=r.guid++,i.call(this,t,n,e,o,u)}}}(jQuery,window,document)})();