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.
- 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 +51 -71
- 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 +5699 -5052
- 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 +5704 -5062
- package/dist/rollbar.named-amd.js.map +1 -1
- package/dist/rollbar.named-amd.min.js +1 -1
- package/dist/rollbar.named-amd.min.js.map +1 -1
- package/dist/rollbar.noconflict.umd.js +5693 -5052
- package/dist/rollbar.noconflict.umd.js.map +1 -1
- package/dist/rollbar.noconflict.umd.min.js +1 -1
- package/dist/rollbar.noconflict.umd.min.js.map +1 -1
- package/dist/rollbar.snippet.js +1 -1
- package/dist/rollbar.umd.js +5704 -5063
- package/dist/rollbar.umd.js.map +1 -1
- package/dist/rollbar.umd.min.js +1 -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 +16 -34
- package/package.json +21 -17
- 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 +573 -354
- 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 +76 -0
- 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 -43
- package/.gitmodules +0 -3
- package/browserstack.browsers.js +0 -153
- package/browserstack.browsers.json +0 -4384
package/src/rateLimiter.js
CHANGED
|
@@ -17,7 +17,7 @@ function RateLimiter(options) {
|
|
|
17
17
|
RateLimiter.globalSettings = {
|
|
18
18
|
startTime: _.now(),
|
|
19
19
|
maxItems: undefined,
|
|
20
|
-
itemsPerMinute: undefined
|
|
20
|
+
itemsPerMinute: undefined,
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
/*
|
|
@@ -28,7 +28,7 @@ RateLimiter.globalSettings = {
|
|
|
28
28
|
* maxItems: the maximum items
|
|
29
29
|
* itemsPerMinute: the max number of items to send in a given minute
|
|
30
30
|
*/
|
|
31
|
-
RateLimiter.prototype.configureGlobal = function(options) {
|
|
31
|
+
RateLimiter.prototype.configureGlobal = function (options) {
|
|
32
32
|
if (options.startTime !== undefined) {
|
|
33
33
|
RateLimiter.globalSettings.startTime = options.startTime;
|
|
34
34
|
}
|
|
@@ -55,7 +55,7 @@ RateLimiter.prototype.configureGlobal = function(options) {
|
|
|
55
55
|
* means this item put us over the global rate limit and the payload should be sent to Rollbar in
|
|
56
56
|
* place of the passed in item.
|
|
57
57
|
*/
|
|
58
|
-
RateLimiter.prototype.shouldSend = function(item, now) {
|
|
58
|
+
RateLimiter.prototype.shouldSend = function (item, now) {
|
|
59
59
|
now = now || _.now();
|
|
60
60
|
var elapsedTime = now - this.startTime;
|
|
61
61
|
if (elapsedTime < 0 || elapsedTime >= 60000) {
|
|
@@ -67,20 +67,39 @@ RateLimiter.prototype.shouldSend = function(item, now) {
|
|
|
67
67
|
var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;
|
|
68
68
|
|
|
69
69
|
if (checkRate(item, globalRateLimit, this.counter)) {
|
|
70
|
-
return shouldSendValue(
|
|
70
|
+
return shouldSendValue(
|
|
71
|
+
this.platform,
|
|
72
|
+
this.platformOptions,
|
|
73
|
+
globalRateLimit + ' max items reached',
|
|
74
|
+
false,
|
|
75
|
+
);
|
|
71
76
|
} else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {
|
|
72
|
-
return shouldSendValue(
|
|
77
|
+
return shouldSendValue(
|
|
78
|
+
this.platform,
|
|
79
|
+
this.platformOptions,
|
|
80
|
+
globalRateLimitPerMin + ' items per minute reached',
|
|
81
|
+
false,
|
|
82
|
+
);
|
|
73
83
|
}
|
|
74
84
|
this.counter++;
|
|
75
85
|
this.perMinCounter++;
|
|
76
86
|
|
|
77
87
|
var shouldSend = !checkRate(item, globalRateLimit, this.counter);
|
|
78
88
|
var perMinute = shouldSend;
|
|
79
|
-
shouldSend =
|
|
80
|
-
|
|
89
|
+
shouldSend =
|
|
90
|
+
shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter);
|
|
91
|
+
return shouldSendValue(
|
|
92
|
+
this.platform,
|
|
93
|
+
this.platformOptions,
|
|
94
|
+
null,
|
|
95
|
+
shouldSend,
|
|
96
|
+
globalRateLimit,
|
|
97
|
+
globalRateLimitPerMin,
|
|
98
|
+
perMinute,
|
|
99
|
+
);
|
|
81
100
|
};
|
|
82
101
|
|
|
83
|
-
RateLimiter.prototype.setPlatformOptions = function(platform, options) {
|
|
102
|
+
RateLimiter.prototype.setPlatformOptions = function (platform, options) {
|
|
84
103
|
this.platform = platform;
|
|
85
104
|
this.platformOptions = options;
|
|
86
105
|
};
|
|
@@ -91,19 +110,40 @@ function checkRate(item, limit, counter) {
|
|
|
91
110
|
return !item.ignoreRateLimit && limit >= 1 && counter > limit;
|
|
92
111
|
}
|
|
93
112
|
|
|
94
|
-
function shouldSendValue(
|
|
113
|
+
function shouldSendValue(
|
|
114
|
+
platform,
|
|
115
|
+
options,
|
|
116
|
+
error,
|
|
117
|
+
shouldSend,
|
|
118
|
+
globalRateLimit,
|
|
119
|
+
limitPerMin,
|
|
120
|
+
perMinute,
|
|
121
|
+
) {
|
|
95
122
|
var payload = null;
|
|
96
123
|
if (error) {
|
|
97
124
|
error = new Error(error);
|
|
98
125
|
}
|
|
99
126
|
if (!error && !shouldSend) {
|
|
100
|
-
payload = rateLimitPayload(
|
|
127
|
+
payload = rateLimitPayload(
|
|
128
|
+
platform,
|
|
129
|
+
options,
|
|
130
|
+
globalRateLimit,
|
|
131
|
+
limitPerMin,
|
|
132
|
+
perMinute,
|
|
133
|
+
);
|
|
101
134
|
}
|
|
102
|
-
return {error: error, shouldSend: shouldSend, payload: payload};
|
|
135
|
+
return { error: error, shouldSend: shouldSend, payload: payload };
|
|
103
136
|
}
|
|
104
137
|
|
|
105
|
-
function rateLimitPayload(
|
|
106
|
-
|
|
138
|
+
function rateLimitPayload(
|
|
139
|
+
platform,
|
|
140
|
+
options,
|
|
141
|
+
globalRateLimit,
|
|
142
|
+
limitPerMin,
|
|
143
|
+
perMinute,
|
|
144
|
+
) {
|
|
145
|
+
var environment =
|
|
146
|
+
options.environment || (options.payload && options.payload.environment);
|
|
107
147
|
var msg;
|
|
108
148
|
if (perMinute) {
|
|
109
149
|
msg = 'item per minute limit reached, ignoring errors until timeout';
|
|
@@ -116,15 +156,16 @@ function rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMi
|
|
|
116
156
|
body: msg,
|
|
117
157
|
extra: {
|
|
118
158
|
maxItems: globalRateLimit,
|
|
119
|
-
itemsPerMinute: limitPerMin
|
|
120
|
-
}
|
|
121
|
-
}
|
|
159
|
+
itemsPerMinute: limitPerMin,
|
|
160
|
+
},
|
|
161
|
+
},
|
|
122
162
|
},
|
|
123
163
|
language: 'javascript',
|
|
124
164
|
environment: environment,
|
|
125
165
|
notifier: {
|
|
126
|
-
version:
|
|
127
|
-
|
|
166
|
+
version:
|
|
167
|
+
(options.notifier && options.notifier.version) || options.version,
|
|
168
|
+
},
|
|
128
169
|
};
|
|
129
170
|
if (platform === 'browser') {
|
|
130
171
|
item.platform = 'browser';
|
|
@@ -28,15 +28,16 @@ function Rollbar(options, client) {
|
|
|
28
28
|
|
|
29
29
|
var transport = new Transport(truncation);
|
|
30
30
|
var api = new API(this.options, transport, urllib, truncation);
|
|
31
|
-
var telemeter = new Telemeter(this.options)
|
|
32
|
-
this.client =
|
|
31
|
+
var telemeter = new Telemeter(this.options);
|
|
32
|
+
this.client =
|
|
33
|
+
client || new Client(this.options, api, logger, telemeter, 'react-native');
|
|
33
34
|
addTransformsToNotifier(this.client.notifier);
|
|
34
35
|
addPredicatesToQueue(this.client.queue);
|
|
35
36
|
_.setupJSON(polyfillJSON);
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
var _instance = null;
|
|
39
|
-
Rollbar.init = function(options, client) {
|
|
40
|
+
Rollbar.init = function (options, client) {
|
|
40
41
|
if (_instance) {
|
|
41
42
|
return _instance.global(options).configure(options);
|
|
42
43
|
}
|
|
@@ -52,11 +53,11 @@ function handleUninitialized(maybeCallback) {
|
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
|
|
55
|
-
Rollbar.prototype.global = function(options) {
|
|
56
|
+
Rollbar.prototype.global = function (options) {
|
|
56
57
|
this.client.global(options);
|
|
57
58
|
return this;
|
|
58
59
|
};
|
|
59
|
-
Rollbar.global = function(options) {
|
|
60
|
+
Rollbar.global = function (options) {
|
|
60
61
|
if (_instance) {
|
|
61
62
|
return _instance.global(options);
|
|
62
63
|
} else {
|
|
@@ -64,18 +65,22 @@ Rollbar.global = function(options) {
|
|
|
64
65
|
}
|
|
65
66
|
};
|
|
66
67
|
|
|
67
|
-
Rollbar.prototype.configure = function(options, payloadData) {
|
|
68
|
+
Rollbar.prototype.configure = function (options, payloadData) {
|
|
68
69
|
var oldOptions = this.options;
|
|
69
70
|
var payload = {};
|
|
70
71
|
if (payloadData) {
|
|
71
|
-
payload = {payload: payloadData};
|
|
72
|
+
payload = { payload: payloadData };
|
|
72
73
|
}
|
|
73
74
|
this.options = _.handleOptions(oldOptions, options, payload, logger);
|
|
74
|
-
this.options._configuredOptions = _.handleOptions(
|
|
75
|
+
this.options._configuredOptions = _.handleOptions(
|
|
76
|
+
oldOptions._configuredOptions,
|
|
77
|
+
options,
|
|
78
|
+
payload,
|
|
79
|
+
);
|
|
75
80
|
this.client.configure(options, payloadData);
|
|
76
81
|
return this;
|
|
77
82
|
};
|
|
78
|
-
Rollbar.configure = function(options, payloadData) {
|
|
83
|
+
Rollbar.configure = function (options, payloadData) {
|
|
79
84
|
if (_instance) {
|
|
80
85
|
return _instance.configure(options, payloadData);
|
|
81
86
|
} else {
|
|
@@ -83,10 +88,10 @@ Rollbar.configure = function(options, payloadData) {
|
|
|
83
88
|
}
|
|
84
89
|
};
|
|
85
90
|
|
|
86
|
-
Rollbar.prototype.lastError = function() {
|
|
91
|
+
Rollbar.prototype.lastError = function () {
|
|
87
92
|
return this.client.lastError;
|
|
88
93
|
};
|
|
89
|
-
Rollbar.lastError = function() {
|
|
94
|
+
Rollbar.lastError = function () {
|
|
90
95
|
if (_instance) {
|
|
91
96
|
return _instance.lastError();
|
|
92
97
|
} else {
|
|
@@ -94,13 +99,13 @@ Rollbar.lastError = function() {
|
|
|
94
99
|
}
|
|
95
100
|
};
|
|
96
101
|
|
|
97
|
-
Rollbar.prototype.log = function() {
|
|
102
|
+
Rollbar.prototype.log = function () {
|
|
98
103
|
var item = this._createItem(arguments);
|
|
99
104
|
var uuid = item.uuid;
|
|
100
105
|
this.client.log(item);
|
|
101
|
-
return {uuid: uuid};
|
|
106
|
+
return { uuid: uuid };
|
|
102
107
|
};
|
|
103
|
-
Rollbar.log = function() {
|
|
108
|
+
Rollbar.log = function () {
|
|
104
109
|
if (_instance) {
|
|
105
110
|
return _instance.log.apply(_instance, arguments);
|
|
106
111
|
} else {
|
|
@@ -109,13 +114,13 @@ Rollbar.log = function() {
|
|
|
109
114
|
}
|
|
110
115
|
};
|
|
111
116
|
|
|
112
|
-
Rollbar.prototype.debug = function() {
|
|
117
|
+
Rollbar.prototype.debug = function () {
|
|
113
118
|
var item = this._createItem(arguments);
|
|
114
119
|
var uuid = item.uuid;
|
|
115
120
|
this.client.debug(item);
|
|
116
|
-
return {uuid: uuid};
|
|
121
|
+
return { uuid: uuid };
|
|
117
122
|
};
|
|
118
|
-
Rollbar.debug = function() {
|
|
123
|
+
Rollbar.debug = function () {
|
|
119
124
|
if (_instance) {
|
|
120
125
|
return _instance.debug.apply(_instance, arguments);
|
|
121
126
|
} else {
|
|
@@ -124,13 +129,13 @@ Rollbar.debug = function() {
|
|
|
124
129
|
}
|
|
125
130
|
};
|
|
126
131
|
|
|
127
|
-
Rollbar.prototype.info = function() {
|
|
132
|
+
Rollbar.prototype.info = function () {
|
|
128
133
|
var item = this._createItem(arguments);
|
|
129
134
|
var uuid = item.uuid;
|
|
130
135
|
this.client.info(item);
|
|
131
|
-
return {uuid: uuid};
|
|
136
|
+
return { uuid: uuid };
|
|
132
137
|
};
|
|
133
|
-
Rollbar.info = function() {
|
|
138
|
+
Rollbar.info = function () {
|
|
134
139
|
if (_instance) {
|
|
135
140
|
return _instance.info.apply(_instance, arguments);
|
|
136
141
|
} else {
|
|
@@ -139,13 +144,13 @@ Rollbar.info = function() {
|
|
|
139
144
|
}
|
|
140
145
|
};
|
|
141
146
|
|
|
142
|
-
Rollbar.prototype.warn = function() {
|
|
147
|
+
Rollbar.prototype.warn = function () {
|
|
143
148
|
var item = this._createItem(arguments);
|
|
144
149
|
var uuid = item.uuid;
|
|
145
150
|
this.client.warn(item);
|
|
146
|
-
return {uuid: uuid};
|
|
151
|
+
return { uuid: uuid };
|
|
147
152
|
};
|
|
148
|
-
Rollbar.warn = function() {
|
|
153
|
+
Rollbar.warn = function () {
|
|
149
154
|
if (_instance) {
|
|
150
155
|
return _instance.warn.apply(_instance, arguments);
|
|
151
156
|
} else {
|
|
@@ -154,14 +159,13 @@ Rollbar.warn = function() {
|
|
|
154
159
|
}
|
|
155
160
|
};
|
|
156
161
|
|
|
157
|
-
|
|
158
|
-
Rollbar.prototype.warning = function() {
|
|
162
|
+
Rollbar.prototype.warning = function () {
|
|
159
163
|
var item = this._createItem(arguments);
|
|
160
164
|
var uuid = item.uuid;
|
|
161
165
|
this.client.warning(item);
|
|
162
|
-
return {uuid: uuid};
|
|
166
|
+
return { uuid: uuid };
|
|
163
167
|
};
|
|
164
|
-
Rollbar.warning = function() {
|
|
168
|
+
Rollbar.warning = function () {
|
|
165
169
|
if (_instance) {
|
|
166
170
|
return _instance.warning.apply(_instance, arguments);
|
|
167
171
|
} else {
|
|
@@ -170,14 +174,13 @@ Rollbar.warning = function() {
|
|
|
170
174
|
}
|
|
171
175
|
};
|
|
172
176
|
|
|
173
|
-
|
|
174
|
-
Rollbar.prototype.error = function() {
|
|
177
|
+
Rollbar.prototype.error = function () {
|
|
175
178
|
var item = this._createItem(arguments);
|
|
176
179
|
var uuid = item.uuid;
|
|
177
180
|
this.client.error(item);
|
|
178
|
-
return {uuid: uuid};
|
|
181
|
+
return { uuid: uuid };
|
|
179
182
|
};
|
|
180
|
-
Rollbar.error = function() {
|
|
183
|
+
Rollbar.error = function () {
|
|
181
184
|
if (_instance) {
|
|
182
185
|
return _instance.error.apply(_instance, arguments);
|
|
183
186
|
} else {
|
|
@@ -185,21 +188,21 @@ Rollbar.error = function() {
|
|
|
185
188
|
handleUninitialized(maybeCallback);
|
|
186
189
|
}
|
|
187
190
|
};
|
|
188
|
-
Rollbar.prototype._uncaughtError = function() {
|
|
191
|
+
Rollbar.prototype._uncaughtError = function () {
|
|
189
192
|
var item = this._createItem(arguments);
|
|
190
193
|
item._isUncaught = true;
|
|
191
194
|
var uuid = item.uuid;
|
|
192
195
|
this.client.error(item);
|
|
193
|
-
return {uuid: uuid};
|
|
196
|
+
return { uuid: uuid };
|
|
194
197
|
};
|
|
195
198
|
|
|
196
|
-
Rollbar.prototype.critical = function() {
|
|
199
|
+
Rollbar.prototype.critical = function () {
|
|
197
200
|
var item = this._createItem(arguments);
|
|
198
201
|
var uuid = item.uuid;
|
|
199
202
|
this.client.critical(item);
|
|
200
|
-
return {uuid: uuid};
|
|
203
|
+
return { uuid: uuid };
|
|
201
204
|
};
|
|
202
|
-
Rollbar.critical = function() {
|
|
205
|
+
Rollbar.critical = function () {
|
|
203
206
|
if (_instance) {
|
|
204
207
|
return _instance.critical.apply(_instance, arguments);
|
|
205
208
|
} else {
|
|
@@ -208,10 +211,10 @@ Rollbar.critical = function() {
|
|
|
208
211
|
}
|
|
209
212
|
};
|
|
210
213
|
|
|
211
|
-
Rollbar.prototype.buildJsonPayload = function(item) {
|
|
214
|
+
Rollbar.prototype.buildJsonPayload = function (item) {
|
|
212
215
|
return this.client.buildJsonPayload(item);
|
|
213
216
|
};
|
|
214
|
-
Rollbar.buildJsonPayload = function() {
|
|
217
|
+
Rollbar.buildJsonPayload = function () {
|
|
215
218
|
if (_instance) {
|
|
216
219
|
return _instance.buildJsonPayload.apply(_instance, arguments);
|
|
217
220
|
} else {
|
|
@@ -219,10 +222,10 @@ Rollbar.buildJsonPayload = function() {
|
|
|
219
222
|
}
|
|
220
223
|
};
|
|
221
224
|
|
|
222
|
-
Rollbar.prototype.sendJsonPayload = function(jsonPayload) {
|
|
225
|
+
Rollbar.prototype.sendJsonPayload = function (jsonPayload) {
|
|
223
226
|
return this.client.sendJsonPayload(jsonPayload);
|
|
224
227
|
};
|
|
225
|
-
Rollbar.sendJsonPayload = function() {
|
|
228
|
+
Rollbar.sendJsonPayload = function () {
|
|
226
229
|
if (_instance) {
|
|
227
230
|
return _instance.sendJsonPayload.apply(_instance, arguments);
|
|
228
231
|
} else {
|
|
@@ -230,23 +233,23 @@ Rollbar.sendJsonPayload = function() {
|
|
|
230
233
|
}
|
|
231
234
|
};
|
|
232
235
|
|
|
233
|
-
Rollbar.prototype.wait = function(callback) {
|
|
236
|
+
Rollbar.prototype.wait = function (callback) {
|
|
234
237
|
this.client.wait(callback);
|
|
235
238
|
};
|
|
236
|
-
Rollbar.wait = function(callback) {
|
|
239
|
+
Rollbar.wait = function (callback) {
|
|
237
240
|
if (_instance) {
|
|
238
|
-
return _instance.wait(callback)
|
|
241
|
+
return _instance.wait(callback);
|
|
239
242
|
} else {
|
|
240
243
|
var maybeCallback = _getFirstFunction(arguments);
|
|
241
244
|
handleUninitialized(maybeCallback);
|
|
242
245
|
}
|
|
243
246
|
};
|
|
244
247
|
|
|
245
|
-
Rollbar.prototype.captureEvent = function() {
|
|
248
|
+
Rollbar.prototype.captureEvent = function () {
|
|
246
249
|
var event = _.createTelemetryEvent(arguments);
|
|
247
250
|
return this.client.captureEvent(event.type, event.metadata, event.level);
|
|
248
251
|
};
|
|
249
|
-
Rollbar.captureEvent = function() {
|
|
252
|
+
Rollbar.captureEvent = function () {
|
|
250
253
|
if (_instance) {
|
|
251
254
|
return _instance.captureEvent.apply(_instance, arguments);
|
|
252
255
|
} else {
|
|
@@ -254,10 +257,10 @@ Rollbar.captureEvent = function() {
|
|
|
254
257
|
}
|
|
255
258
|
};
|
|
256
259
|
|
|
257
|
-
Rollbar.prototype.setPerson = function(personInfo) {
|
|
258
|
-
this.configure({}, {person: personInfo});
|
|
260
|
+
Rollbar.prototype.setPerson = function (personInfo) {
|
|
261
|
+
this.configure({}, { person: personInfo });
|
|
259
262
|
};
|
|
260
|
-
Rollbar.setPerson = function(personInfo) {
|
|
263
|
+
Rollbar.setPerson = function (personInfo) {
|
|
261
264
|
if (_instance) {
|
|
262
265
|
return _instance.setPerson(personInfo);
|
|
263
266
|
} else {
|
|
@@ -265,10 +268,10 @@ Rollbar.setPerson = function(personInfo) {
|
|
|
265
268
|
}
|
|
266
269
|
};
|
|
267
270
|
|
|
268
|
-
Rollbar.prototype.clearPerson = function() {
|
|
269
|
-
this.configure({}, {person: {}});
|
|
271
|
+
Rollbar.prototype.clearPerson = function () {
|
|
272
|
+
this.configure({}, { person: {} });
|
|
270
273
|
};
|
|
271
|
-
Rollbar.clearPerson = function() {
|
|
274
|
+
Rollbar.clearPerson = function () {
|
|
272
275
|
if (_instance) {
|
|
273
276
|
return _instance.clearPerson();
|
|
274
277
|
} else {
|
|
@@ -299,7 +302,7 @@ function addPredicatesToQueue(queue) {
|
|
|
299
302
|
.addPredicate(sharedPredicates.userCheckIgnore(logger));
|
|
300
303
|
}
|
|
301
304
|
|
|
302
|
-
Rollbar.prototype._createItem = function(args) {
|
|
305
|
+
Rollbar.prototype._createItem = function (args) {
|
|
303
306
|
return _.createItem(args, logger, this);
|
|
304
307
|
};
|
|
305
308
|
|
|
@@ -319,18 +322,19 @@ Rollbar.defaultOptions = {
|
|
|
319
322
|
showReportedMessageTraces: false,
|
|
320
323
|
notifier: {
|
|
321
324
|
name: 'rollbar-react-native',
|
|
322
|
-
version: packageJson.version
|
|
325
|
+
version: packageJson.version,
|
|
323
326
|
},
|
|
324
327
|
scrubHeaders: packageJson.defaults.server.scrubHeaders,
|
|
325
328
|
scrubFields: packageJson.defaults.server.scrubFields,
|
|
326
329
|
reportLevel: packageJson.defaults.reportLevel,
|
|
327
|
-
rewriteFilenamePatterns:
|
|
330
|
+
rewriteFilenamePatterns:
|
|
331
|
+
packageJson.defaults.reactNative.rewriteFilenamePatterns,
|
|
328
332
|
verbose: false,
|
|
329
333
|
enabled: true,
|
|
330
334
|
transmit: true,
|
|
331
335
|
sendConfig: false,
|
|
332
336
|
includeItemsInTelemetry: true,
|
|
333
|
-
ignoreDuplicateErrors: true
|
|
337
|
+
ignoreDuplicateErrors: true,
|
|
334
338
|
};
|
|
335
339
|
|
|
336
340
|
module.exports = Rollbar;
|
|
@@ -3,7 +3,8 @@ var scrub = require('../scrub');
|
|
|
3
3
|
var errorParser = require('../errorParser');
|
|
4
4
|
|
|
5
5
|
function baseData(item, options, callback) {
|
|
6
|
-
var environment =
|
|
6
|
+
var environment =
|
|
7
|
+
(options.payload && options.payload.environment) || options.environment;
|
|
7
8
|
var data = {
|
|
8
9
|
timestamp: Math.round(item.timestamp / 1000),
|
|
9
10
|
environment: item.environment || environment,
|
|
@@ -13,7 +14,7 @@ function baseData(item, options, callback) {
|
|
|
13
14
|
framework: item.framework || options.framework,
|
|
14
15
|
uuid: item.uuid,
|
|
15
16
|
notifier: JSON.parse(JSON.stringify(options.notifier)),
|
|
16
|
-
custom: item.custom
|
|
17
|
+
custom: item.custom,
|
|
17
18
|
};
|
|
18
19
|
|
|
19
20
|
if (options.codeVersion) {
|
|
@@ -38,7 +39,7 @@ function addMessageData(item, options, callback) {
|
|
|
38
39
|
item.data.body = item.data.body || {};
|
|
39
40
|
var message = item.message || 'Item sent with null or missing arguments.';
|
|
40
41
|
item.data.body.message = {
|
|
41
|
-
body: message
|
|
42
|
+
body: message,
|
|
42
43
|
};
|
|
43
44
|
callback(null, item);
|
|
44
45
|
}
|
|
@@ -77,8 +78,8 @@ function handleItemWithError(item, options, callback) {
|
|
|
77
78
|
frames: _buildFrames(parsedError.stack, options),
|
|
78
79
|
exception: {
|
|
79
80
|
class: _errorClass(parsedError.name, guess[0], options),
|
|
80
|
-
message: message
|
|
81
|
-
}
|
|
81
|
+
message: message,
|
|
82
|
+
},
|
|
82
83
|
};
|
|
83
84
|
if (err.description) {
|
|
84
85
|
stackInfo.exception.description = String(err.description);
|
|
@@ -120,8 +121,11 @@ function _buildFrames(stack, options) {
|
|
|
120
121
|
var frame = {
|
|
121
122
|
filename: _rewriteFilename(filename, options),
|
|
122
123
|
lineno: stackFrame.line || null,
|
|
123
|
-
method:
|
|
124
|
-
|
|
124
|
+
method:
|
|
125
|
+
!stackFrame.func || stackFrame.func === '?'
|
|
126
|
+
? '[anonymous]'
|
|
127
|
+
: stackFrame.func,
|
|
128
|
+
colno: stackFrame.column,
|
|
125
129
|
};
|
|
126
130
|
frames.push(frame);
|
|
127
131
|
}
|
|
@@ -141,7 +145,7 @@ function _matchFilename(filename, options) {
|
|
|
141
145
|
var patterns = options.rewriteFilenamePatterns || [];
|
|
142
146
|
var length = patterns.length || 0;
|
|
143
147
|
|
|
144
|
-
for(var i = 0; i < length; i++) {
|
|
148
|
+
for (var i = 0; i < length; i++) {
|
|
145
149
|
var pattern = new RegExp(patterns[i]);
|
|
146
150
|
var match = filename.match(pattern);
|
|
147
151
|
if (match && match[1]) {
|
|
@@ -156,5 +160,5 @@ module.exports = {
|
|
|
156
160
|
handleItemWithError: handleItemWithError,
|
|
157
161
|
addBody: addBody,
|
|
158
162
|
scrubPayload: scrubPayload,
|
|
159
|
-
_matchFilename: _matchFilename // to enable unit test
|
|
163
|
+
_matchFilename: _matchFilename, // to enable unit test
|
|
160
164
|
};
|
|
@@ -8,28 +8,28 @@ function Transport(truncation) {
|
|
|
8
8
|
this.truncation = truncation;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
Transport.prototype.get = function(accessToken, options, params, callback) {
|
|
11
|
+
Transport.prototype.get = function (accessToken, options, params, callback) {
|
|
12
12
|
if (!callback || !_.isFunction(callback)) {
|
|
13
|
-
callback = function() {};
|
|
13
|
+
callback = function () {};
|
|
14
14
|
}
|
|
15
15
|
options = options || {};
|
|
16
16
|
_.addParamsAndAccessTokenToPath(accessToken, options, params);
|
|
17
17
|
var headers = _headers(accessToken, options);
|
|
18
18
|
fetch(_.formatUrl(options), {
|
|
19
19
|
method: 'GET',
|
|
20
|
-
headers: headers
|
|
21
|
-
})
|
|
22
|
-
.then(function(resp) {
|
|
23
|
-
_handleResponse(resp, callback);
|
|
20
|
+
headers: headers,
|
|
24
21
|
})
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
.then(function (resp) {
|
|
23
|
+
_handleResponse(resp, callback);
|
|
24
|
+
})
|
|
25
|
+
.catch(function (err) {
|
|
26
|
+
callback(err);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
29
|
|
|
30
|
-
Transport.prototype.post = function(accessToken, options, payload, callback) {
|
|
30
|
+
Transport.prototype.post = function (accessToken, options, payload, callback) {
|
|
31
31
|
if (!callback || !_.isFunction(callback)) {
|
|
32
|
-
callback = function() {};
|
|
32
|
+
callback = function () {};
|
|
33
33
|
}
|
|
34
34
|
options = options || {};
|
|
35
35
|
if (!payload) {
|
|
@@ -40,7 +40,7 @@ Transport.prototype.post = function(accessToken, options, payload, callback) {
|
|
|
40
40
|
if (this.truncation) {
|
|
41
41
|
stringifyResult = this.truncation.truncate(payload);
|
|
42
42
|
} else {
|
|
43
|
-
stringifyResult = _.stringify(payload)
|
|
43
|
+
stringifyResult = _.stringify(payload);
|
|
44
44
|
}
|
|
45
45
|
if (stringifyResult.error) {
|
|
46
46
|
logger.error('Problem stringifying payload. Giving up');
|
|
@@ -50,11 +50,16 @@ Transport.prototype.post = function(accessToken, options, payload, callback) {
|
|
|
50
50
|
var headers = _headers(accessToken, options, writeData);
|
|
51
51
|
|
|
52
52
|
_makeRequest(headers, options, writeData, callback);
|
|
53
|
-
}
|
|
53
|
+
};
|
|
54
54
|
|
|
55
|
-
Transport.prototype.postJsonPayload = function(
|
|
55
|
+
Transport.prototype.postJsonPayload = function (
|
|
56
|
+
accessToken,
|
|
57
|
+
options,
|
|
58
|
+
jsonPayload,
|
|
59
|
+
callback,
|
|
60
|
+
) {
|
|
56
61
|
if (!callback || !_.isFunction(callback)) {
|
|
57
|
-
callback = function() {};
|
|
62
|
+
callback = function () {};
|
|
58
63
|
}
|
|
59
64
|
options = options || {};
|
|
60
65
|
if (!jsonPayload) {
|
|
@@ -62,8 +67,8 @@ Transport.prototype.postJsonPayload = function(accessToken, options, jsonPayload
|
|
|
62
67
|
}
|
|
63
68
|
var headers = _headers(accessToken, options, jsonPayload);
|
|
64
69
|
|
|
65
|
-
_makeRequest(headers, options, jsonPayload, callback)
|
|
66
|
-
}
|
|
70
|
+
_makeRequest(headers, options, jsonPayload, callback);
|
|
71
|
+
};
|
|
67
72
|
|
|
68
73
|
/** Helpers **/
|
|
69
74
|
function _makeRequest(headers, options, data, callback) {
|
|
@@ -71,17 +76,17 @@ function _makeRequest(headers, options, data, callback) {
|
|
|
71
76
|
fetch(url, {
|
|
72
77
|
method: 'POST',
|
|
73
78
|
headers: headers,
|
|
74
|
-
body: data
|
|
75
|
-
})
|
|
76
|
-
.then(function (resp) {
|
|
77
|
-
return resp.json();
|
|
79
|
+
body: data,
|
|
78
80
|
})
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
.then(function (resp) {
|
|
82
|
+
return resp.json();
|
|
83
|
+
})
|
|
84
|
+
.then(function (data) {
|
|
85
|
+
_handleResponse(data, _wrapPostCallback(callback));
|
|
86
|
+
})
|
|
87
|
+
.catch(function (err) {
|
|
88
|
+
callback(err);
|
|
89
|
+
});
|
|
85
90
|
}
|
|
86
91
|
|
|
87
92
|
function _headers(accessToken, options, data) {
|
|
@@ -101,27 +106,32 @@ function _headers(accessToken, options, data) {
|
|
|
101
106
|
function _handleResponse(data, callback) {
|
|
102
107
|
if (data.err) {
|
|
103
108
|
logger.error('Received error: ' + data.message);
|
|
104
|
-
return callback(
|
|
109
|
+
return callback(
|
|
110
|
+
new Error('Api error: ' + (data.message || 'Unknown error')),
|
|
111
|
+
);
|
|
105
112
|
}
|
|
106
113
|
|
|
107
114
|
callback(null, data);
|
|
108
115
|
}
|
|
109
116
|
|
|
110
117
|
function _wrapPostCallback(callback) {
|
|
111
|
-
return function(err, data) {
|
|
118
|
+
return function (err, data) {
|
|
112
119
|
if (err) {
|
|
113
120
|
return callback(err);
|
|
114
121
|
}
|
|
115
122
|
if (data.result && data.result.uuid) {
|
|
116
|
-
logger.log(
|
|
123
|
+
logger.log(
|
|
124
|
+
[
|
|
117
125
|
'Successful api response.',
|
|
118
|
-
' Link: https://rollbar.com/occurrence/uuid/?uuid=' +
|
|
119
|
-
|
|
126
|
+
' Link: https://rollbar.com/occurrence/uuid/?uuid=' +
|
|
127
|
+
data.result.uuid,
|
|
128
|
+
].join(''),
|
|
129
|
+
);
|
|
120
130
|
} else {
|
|
121
131
|
logger.log('Successful api response');
|
|
122
132
|
}
|
|
123
133
|
callback(null, data.result);
|
|
124
|
-
}
|
|
134
|
+
};
|
|
125
135
|
}
|
|
126
136
|
|
|
127
137
|
module.exports = Transport;
|