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
package/Gruntfile.js CHANGED
@@ -1,12 +1,7 @@
1
1
  /**
2
2
  * Build and test rollbar.js
3
- *
4
- * Test with browserstack:
5
- * $> BROWSER_STACK_USERNAME=username BROWSER_STACK_ACCESS_KEY=12345asdf grunt test --browsers=bs_ie_latest
6
- *
7
3
  */
8
4
 
9
-
10
5
  'use strict';
11
6
 
12
7
  var glob = require('glob');
@@ -15,8 +10,6 @@ var pkg = require('./package.json');
15
10
  var fs = require('fs');
16
11
 
17
12
  var webpackConfig = require('./webpack.config.js');
18
- var browserStackBrowsers = require('./browserstack.browsers');
19
-
20
13
 
21
14
  function findTests(context) {
22
15
  if (context !== 'browser') {
@@ -25,7 +18,7 @@ function findTests(context) {
25
18
  var files = glob.sync('test/**/!(server.)*.test.js');
26
19
  var mapping = {};
27
20
 
28
- files.forEach(function(file) {
21
+ files.forEach(function (file) {
29
22
  var testName = path.basename(file, '.test.js');
30
23
  mapping[testName] = file;
31
24
  });
@@ -33,7 +26,7 @@ function findTests(context) {
33
26
  return mapping;
34
27
  }
35
28
 
36
- function buildGruntKarmaConfig(singleRun, browsers, tests, reporters) {
29
+ function buildGruntKarmaConfig(singleRun, tests, reporters) {
37
30
  var config = {
38
31
  options: {
39
32
  configFile: './karma.conf.js',
@@ -44,19 +37,19 @@ function buildGruntKarmaConfig(singleRun, browsers, tests, reporters) {
44
37
  pattern: 'dist/**/*.js',
45
38
  included: false,
46
39
  served: true,
47
- watched: false
40
+ watched: false,
48
41
  },
49
42
  {
50
43
  pattern: 'src/**/*.js',
51
44
  included: false,
52
45
  served: true,
53
- watched: false
46
+ watched: false,
54
47
  },
55
48
  {
56
49
  pattern: 'examples/**/*.js',
57
50
  included: false,
58
51
  served: true,
59
- watched: false
52
+ watched: false,
60
53
  },
61
54
 
62
55
  // Examples HTML, set `included: true`, but they won't be executed or added
@@ -65,36 +58,30 @@ function buildGruntKarmaConfig(singleRun, browsers, tests, reporters) {
65
58
  pattern: 'examples/**/*.html',
66
59
  included: true,
67
60
  served: true,
68
- watched: false
69
- }
70
- ]
61
+ watched: false,
62
+ },
63
+ ],
71
64
  },
72
65
  };
73
66
 
74
- if (browsers && browsers.length) {
75
- config.options.browsers = browsers;
76
- }
77
-
78
67
  if (reporters && reporters.length) {
79
68
  config.options.reporters = reporters;
80
69
  }
81
70
 
82
71
  for (var testName in tests) {
83
72
  var testFile = tests[testName];
84
- var testConfig = config[testName] = {};
73
+ var testConfig = (config[testName] = {});
85
74
 
86
75
  // Special case for testing requirejs integration.
87
76
  // Include the requirejs module as a framework so
88
77
  // Karma will inclue it in the web page.
89
78
  if (testName === 'requirejs') {
90
- testConfig.files = [
91
- {src: './dist/rollbar.umd.js', included: false}
92
- ];
79
+ testConfig.files = [{ src: './dist/rollbar.umd.js', included: false }];
93
80
  // NOTE: requirejs should go first in case the subsequent libraries
94
81
  // check for the existence of `define()`
95
82
  testConfig.frameworks = ['requirejs', 'expect', 'mocha'];
96
83
  } else {
97
- testConfig.files = [{src: [testFile]}];
84
+ testConfig.files = [{ src: [testFile] }];
98
85
  }
99
86
 
100
87
  // Special config for BrowserStack IE tests
@@ -107,32 +94,10 @@ function buildGruntKarmaConfig(singleRun, browsers, tests, reporters) {
107
94
  return config;
108
95
  }
109
96
 
110
-
111
- module.exports = function(grunt) {
97
+ module.exports = function (grunt) {
112
98
  require('time-grunt')(grunt);
113
99
 
114
100
  var browserTests = findTests('browser');
115
- var browsers = grunt.option('browsers');
116
- if (browsers) {
117
- browsers = browsers.split(',');
118
-
119
- var browserStackAliases = [];
120
- var nonBrowserStackAliases = [];
121
- browsers.forEach(function(browserName) {
122
- if (browserName.slice(0, 3) === 'bs_') {
123
- browserStackAliases.push(browserName);
124
- } else {
125
- nonBrowserStackAliases.push(browserName);
126
- }
127
- });
128
-
129
- var expandedBrowsers = browserStackBrowsers.filter.apply(null, browserStackAliases);
130
- var expandedBrowserNames = [];
131
- expandedBrowsers.forEach(function(browser) {
132
- expandedBrowserNames.push(browser._alias);
133
- });
134
- browsers = nonBrowserStackAliases.concat(expandedBrowserNames);
135
- }
136
101
 
137
102
  var singleRun = grunt.option('singleRun');
138
103
  if (singleRun === undefined) {
@@ -149,7 +114,6 @@ module.exports = function(grunt) {
149
114
  grunt.loadNpmTasks('grunt-text-replace');
150
115
  grunt.loadNpmTasks('grunt-vows');
151
116
 
152
-
153
117
  var rollbarJsSnippet = fs.readFileSync('dist/rollbar.snippet.js');
154
118
  var rollbarjQuerySnippet = fs.readFileSync('dist/plugins/jquery.min.js');
155
119
 
@@ -159,46 +123,62 @@ module.exports = function(grunt) {
159
123
  vows: {
160
124
  all: {
161
125
  options: {
162
- reporter: 'spec'
126
+ reporter: 'spec',
163
127
  },
164
- src: ['test/server.*.test.js']
165
- }
128
+ src: ['test/server.*.test.js'],
129
+ },
166
130
  },
167
131
 
168
- karma: buildGruntKarmaConfig(singleRun, browsers, browserTests, reporters),
132
+ karma: buildGruntKarmaConfig(singleRun, browserTests, reporters),
169
133
 
170
134
  replace: {
171
135
  snippets: {
172
- 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
+ ],
173
143
  overwrite: true,
174
144
  replacements: [
175
145
  // Main rollbar snippet
176
146
  {
177
- from: new RegExp('^(.*// Rollbar Snippet)[\n\r]+(.*[\n\r])*(.*// End Rollbar Snippet)', 'm'), // eslint-disable-line no-control-regex
178
- 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) {
179
153
  captures[1] = rollbarJsSnippet;
180
154
  return captures.join('\n');
181
- }
155
+ },
182
156
  },
183
157
  // jQuery rollbar plugin snippet
184
158
  {
185
- from: new RegExp('^(.*// Rollbar jQuery Snippet)[\n\r]+(.*[\n\r])*(.*// End Rollbar jQuery Snippet)', 'm'), // eslint-disable-line no-control-regex
186
- 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) {
187
165
  captures[1] = rollbarjQuerySnippet;
188
166
  return captures.join('\n');
189
- }
167
+ },
190
168
  },
191
- // README travis link
169
+ // README CI link
192
170
  {
193
- from: new RegExp('(https://github\\.com/rollbar/rollbar\\.js/workflows/Rollbar\\.js%20CI/badge\\.svg\\?branch=v)([0-9a-zA-Z.-]+)'),
194
- 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) {
195
175
  captures[1] = pkg.version;
196
176
  return captures.join('');
197
- }
198
- }
199
- ]
200
- }
201
- }
177
+ },
178
+ },
179
+ ],
180
+ },
181
+ },
202
182
  });
203
183
 
204
184
  grunt.registerTask('build', ['webpack', 'replace:snippets']);
@@ -206,12 +186,12 @@ module.exports = function(grunt) {
206
186
  grunt.registerTask('test', ['test-server', 'test-browser']);
207
187
  grunt.registerTask('release', ['build', 'copyrelease']);
208
188
 
209
- grunt.registerTask('test-server', function(_target) {
189
+ grunt.registerTask('test-server', function (_target) {
210
190
  var tasks = ['vows'];
211
191
  grunt.task.run.apply(grunt.task, tasks);
212
192
  });
213
193
 
214
- grunt.registerTask('test-browser', function(target) {
194
+ grunt.registerTask('test-browser', function (target) {
215
195
  var karmaTask = 'karma' + (target ? ':' + target : '');
216
196
  var tasks = [karmaTask];
217
197
  grunt.task.run.apply(grunt.task, tasks);
@@ -226,11 +206,11 @@ module.exports = function(grunt) {
226
206
  var minJs = 'dist/rollbar' + buildName + '.min.js';
227
207
 
228
208
  var releaseJs = 'release/rollbar' + buildName + '-' + version + '.js';
229
- var releaseMinJs = 'release/rollbar' + buildName + '-' + version + '.min.js';
209
+ var releaseMinJs =
210
+ 'release/rollbar' + buildName + '-' + version + '.min.js';
230
211
 
231
212
  grunt.file.copy(js, releaseJs);
232
213
  grunt.file.copy(minJs, releaseMinJs);
233
214
  });
234
215
  });
235
-
236
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)})();