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.
- package/.github/workflows/ci.yml +32 -10
- package/.lgtm.yml +7 -7
- package/.prettierignore +18 -0
- package/.vscode/settings.json +39 -0
- package/CHANGELOG.md +121 -35
- package/Gruntfile.js +48 -38
- package/README.md +2 -4
- package/bower.json +1 -3
- package/defaults.js +17 -5
- package/dist/plugins/jquery.min.js +1 -1
- package/dist/rollbar.js +5710 -5070
- package/dist/rollbar.js.map +1 -1
- package/dist/rollbar.min.js +1 -1
- package/dist/rollbar.min.js.map +1 -1
- package/dist/rollbar.named-amd.js +5716 -5081
- package/dist/rollbar.named-amd.js.map +1 -1
- package/dist/rollbar.named-amd.min.js +2 -1
- package/dist/rollbar.named-amd.min.js.map +1 -1
- package/dist/rollbar.noconflict.umd.js +5702 -5068
- package/dist/rollbar.noconflict.umd.js.map +1 -1
- package/dist/rollbar.noconflict.umd.min.js +2 -1
- package/dist/rollbar.noconflict.umd.min.js.map +1 -1
- package/dist/rollbar.snippet.js +1 -1
- package/dist/rollbar.umd.js +5716 -5082
- package/dist/rollbar.umd.js.map +1 -1
- package/dist/rollbar.umd.min.js +2 -1
- package/dist/rollbar.umd.min.js.map +1 -1
- package/docs/extension-exceptions.md +35 -30
- package/docs/migration_v0_to_v1.md +41 -38
- package/index.d.ts +270 -231
- package/karma.conf.js +15 -15
- package/package.json +3 -2
- package/prettier.config.js +7 -0
- package/src/api.js +21 -10
- package/src/apiUtility.js +12 -8
- package/src/browser/core.js +103 -65
- package/src/browser/defaults/scrubFields.js +3 -3
- package/src/browser/detection.js +7 -8
- package/src/browser/domUtility.js +18 -8
- package/src/browser/globalSetup.js +12 -6
- package/src/browser/logger.js +1 -1
- package/src/browser/plugins/jquery.js +35 -35
- package/src/browser/predicates.js +1 -1
- package/src/browser/rollbar.js +1 -1
- package/src/browser/rollbarWrapper.js +8 -5
- package/src/browser/shim.js +43 -19
- package/src/browser/snippet_callback.js +6 -4
- package/src/browser/telemetry.js +570 -358
- package/src/browser/transforms.js +46 -27
- package/src/browser/transport/fetch.js +16 -14
- package/src/browser/transport/xhr.js +29 -13
- package/src/browser/transport.js +82 -25
- package/src/browser/url.js +16 -8
- package/src/browser/wrapGlobals.js +27 -8
- package/src/defaults.js +3 -3
- package/src/errorParser.js +14 -11
- package/src/merge.js +32 -23
- package/src/notifier.js +16 -13
- package/src/predicates.js +43 -23
- package/src/queue.js +71 -39
- package/src/rateLimiter.js +59 -18
- package/src/react-native/logger.js +1 -1
- package/src/react-native/rollbar.js +59 -55
- package/src/react-native/transforms.js +13 -9
- package/src/react-native/transport.js +44 -34
- package/src/rollbar.js +22 -13
- package/src/scrub.js +0 -1
- package/src/server/locals.js +69 -39
- package/src/server/logger.js +4 -4
- package/src/server/parser.js +72 -47
- package/src/server/rollbar.js +133 -55
- package/src/server/sourceMap/stackTrace.js +33 -18
- package/src/server/telemetry/urlHelpers.js +9 -11
- package/src/server/telemetry.js +68 -45
- package/src/server/transforms.js +37 -21
- package/src/server/transport.js +62 -32
- package/src/telemetry.js +92 -28
- package/src/transforms.js +33 -21
- package/src/truncation.js +8 -5
- package/src/utility/headers.js +43 -43
- package/src/utility/replace.js +9 -0
- package/src/utility/traverse.js +1 -1
- package/src/utility.js +89 -52
- package/test/api.test.js +31 -29
- package/test/apiUtility.test.js +43 -44
- package/test/browser.core.test.js +141 -131
- package/test/browser.domUtility.test.js +52 -35
- package/test/browser.predicates.test.js +13 -13
- package/test/browser.rollbar.test.js +597 -503
- package/test/browser.telemetry.test.js +45 -38
- package/test/browser.transforms.test.js +146 -128
- package/test/browser.transport.test.js +54 -46
- package/test/browser.url.test.js +12 -11
- package/test/fixtures/locals.fixtures.js +245 -126
- package/test/notifier.test.js +90 -78
- package/test/predicates.test.js +260 -214
- package/test/queue.test.js +230 -214
- package/test/rateLimiter.test.js +50 -42
- package/test/react-native.rollbar.test.js +149 -115
- package/test/react-native.transforms.test.js +21 -23
- package/test/react-native.transport.test.js +23 -11
- package/test/server.lambda.test.js +70 -53
- package/test/server.locals.test.js +437 -210
- package/test/server.parser.test.js +32 -26
- package/test/server.predicates.test.js +45 -43
- package/test/server.rollbar.test.js +311 -259
- package/test/server.telemetry.test.js +208 -83
- package/test/server.transforms.test.js +455 -361
- package/test/server.transport.test.js +144 -76
- package/test/telemetry.test.js +46 -37
- package/test/transforms.test.js +68 -66
- package/test/truncation.test.js +55 -53
- package/test/utility.test.js +266 -222
- package/webpack.config.js +46 -42
- 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: [
|
|
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(
|
|
148
|
-
|
|
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(
|
|
156
|
-
|
|
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(
|
|
164
|
-
|
|
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 =
|
|
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
|
[](https://lgtm.com/projects/g/rollbar/rollbar.js/context:javascript)
|
|
13
13
|
[](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.
|
|
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
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(
|
|
9
|
-
|
|
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(
|
|
14
|
-
|
|
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
|
-
|
|
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)})();
|