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/telemetry.js
CHANGED
|
@@ -9,7 +9,7 @@ function Telemeter(options) {
|
|
|
9
9
|
this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
Telemeter.prototype.configure = function(options) {
|
|
12
|
+
Telemeter.prototype.configure = function (options) {
|
|
13
13
|
var oldOptions = this.options;
|
|
14
14
|
this.options = _.merge(oldOptions, options);
|
|
15
15
|
var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;
|
|
@@ -22,7 +22,7 @@ Telemeter.prototype.configure = function(options) {
|
|
|
22
22
|
this.queue.splice(0, deleteCount);
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
Telemeter.prototype.copyEvents = function() {
|
|
25
|
+
Telemeter.prototype.copyEvents = function () {
|
|
26
26
|
var events = Array.prototype.slice.call(this.queue, 0);
|
|
27
27
|
if (_.isFunction(this.options.filterTelemetry)) {
|
|
28
28
|
try {
|
|
@@ -39,20 +39,29 @@ Telemeter.prototype.copyEvents = function() {
|
|
|
39
39
|
return events;
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
Telemeter.prototype.capture = function(
|
|
42
|
+
Telemeter.prototype.capture = function (
|
|
43
|
+
type,
|
|
44
|
+
metadata,
|
|
45
|
+
level,
|
|
46
|
+
rollbarUUID,
|
|
47
|
+
timestamp,
|
|
48
|
+
) {
|
|
43
49
|
var e = {
|
|
44
50
|
level: getLevel(type, level),
|
|
45
51
|
type: type,
|
|
46
52
|
timestamp_ms: timestamp || _.now(),
|
|
47
53
|
body: metadata,
|
|
48
|
-
source: 'client'
|
|
54
|
+
source: 'client',
|
|
49
55
|
};
|
|
50
56
|
if (rollbarUUID) {
|
|
51
57
|
e.uuid = rollbarUUID;
|
|
52
58
|
}
|
|
53
59
|
|
|
54
60
|
try {
|
|
55
|
-
if (
|
|
61
|
+
if (
|
|
62
|
+
_.isFunction(this.options.filterTelemetry) &&
|
|
63
|
+
this.options.filterTelemetry(e)
|
|
64
|
+
) {
|
|
56
65
|
return false;
|
|
57
66
|
}
|
|
58
67
|
} catch (exc) {
|
|
@@ -63,13 +72,23 @@ Telemeter.prototype.capture = function(type, metadata, level, rollbarUUID, times
|
|
|
63
72
|
return e;
|
|
64
73
|
};
|
|
65
74
|
|
|
66
|
-
Telemeter.prototype.captureEvent = function(
|
|
75
|
+
Telemeter.prototype.captureEvent = function (
|
|
76
|
+
type,
|
|
77
|
+
metadata,
|
|
78
|
+
level,
|
|
79
|
+
rollbarUUID,
|
|
80
|
+
) {
|
|
67
81
|
return this.capture(type, metadata, level, rollbarUUID);
|
|
68
82
|
};
|
|
69
83
|
|
|
70
|
-
Telemeter.prototype.captureError = function(
|
|
84
|
+
Telemeter.prototype.captureError = function (
|
|
85
|
+
err,
|
|
86
|
+
level,
|
|
87
|
+
rollbarUUID,
|
|
88
|
+
timestamp,
|
|
89
|
+
) {
|
|
71
90
|
var metadata = {
|
|
72
|
-
message: err.message || String(err)
|
|
91
|
+
message: err.message || String(err),
|
|
73
92
|
};
|
|
74
93
|
if (err.stack) {
|
|
75
94
|
metadata.stack = err.stack;
|
|
@@ -77,13 +96,29 @@ Telemeter.prototype.captureError = function(err, level, rollbarUUID, timestamp)
|
|
|
77
96
|
return this.capture('error', metadata, level, rollbarUUID, timestamp);
|
|
78
97
|
};
|
|
79
98
|
|
|
80
|
-
Telemeter.prototype.captureLog = function(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
99
|
+
Telemeter.prototype.captureLog = function (
|
|
100
|
+
message,
|
|
101
|
+
level,
|
|
102
|
+
rollbarUUID,
|
|
103
|
+
timestamp,
|
|
104
|
+
) {
|
|
105
|
+
return this.capture(
|
|
106
|
+
'log',
|
|
107
|
+
{
|
|
108
|
+
message: message,
|
|
109
|
+
},
|
|
110
|
+
level,
|
|
111
|
+
rollbarUUID,
|
|
112
|
+
timestamp,
|
|
113
|
+
);
|
|
84
114
|
};
|
|
85
115
|
|
|
86
|
-
Telemeter.prototype.captureNetwork = function(
|
|
116
|
+
Telemeter.prototype.captureNetwork = function (
|
|
117
|
+
metadata,
|
|
118
|
+
subtype,
|
|
119
|
+
rollbarUUID,
|
|
120
|
+
requestData,
|
|
121
|
+
) {
|
|
87
122
|
subtype = subtype || 'xhr';
|
|
88
123
|
metadata.subtype = metadata.subtype || subtype;
|
|
89
124
|
if (requestData) {
|
|
@@ -93,7 +128,7 @@ Telemeter.prototype.captureNetwork = function(metadata, subtype, rollbarUUID, re
|
|
|
93
128
|
return this.capture('network', metadata, level, rollbarUUID);
|
|
94
129
|
};
|
|
95
130
|
|
|
96
|
-
Telemeter.prototype.levelFromStatus = function(statusCode) {
|
|
131
|
+
Telemeter.prototype.levelFromStatus = function (statusCode) {
|
|
97
132
|
if (statusCode >= 200 && statusCode < 400) {
|
|
98
133
|
return 'info';
|
|
99
134
|
}
|
|
@@ -103,10 +138,16 @@ Telemeter.prototype.levelFromStatus = function(statusCode) {
|
|
|
103
138
|
return 'info';
|
|
104
139
|
};
|
|
105
140
|
|
|
106
|
-
Telemeter.prototype.captureDom = function(
|
|
141
|
+
Telemeter.prototype.captureDom = function (
|
|
142
|
+
subtype,
|
|
143
|
+
element,
|
|
144
|
+
value,
|
|
145
|
+
checked,
|
|
146
|
+
rollbarUUID,
|
|
147
|
+
) {
|
|
107
148
|
var metadata = {
|
|
108
149
|
subtype: subtype,
|
|
109
|
-
element: element
|
|
150
|
+
element: element,
|
|
110
151
|
};
|
|
111
152
|
if (value !== undefined) {
|
|
112
153
|
metadata.value = value;
|
|
@@ -117,31 +158,48 @@ Telemeter.prototype.captureDom = function(subtype, element, value, checked, roll
|
|
|
117
158
|
return this.capture('dom', metadata, 'info', rollbarUUID);
|
|
118
159
|
};
|
|
119
160
|
|
|
120
|
-
Telemeter.prototype.captureNavigation = function(from, to, rollbarUUID) {
|
|
121
|
-
return this.capture(
|
|
161
|
+
Telemeter.prototype.captureNavigation = function (from, to, rollbarUUID) {
|
|
162
|
+
return this.capture(
|
|
163
|
+
'navigation',
|
|
164
|
+
{ from: from, to: to },
|
|
165
|
+
'info',
|
|
166
|
+
rollbarUUID,
|
|
167
|
+
);
|
|
122
168
|
};
|
|
123
169
|
|
|
124
|
-
Telemeter.prototype.captureDomContentLoaded = function(ts) {
|
|
125
|
-
return this.capture(
|
|
170
|
+
Telemeter.prototype.captureDomContentLoaded = function (ts) {
|
|
171
|
+
return this.capture(
|
|
172
|
+
'navigation',
|
|
173
|
+
{ subtype: 'DOMContentLoaded' },
|
|
174
|
+
'info',
|
|
175
|
+
undefined,
|
|
176
|
+
ts && ts.getTime(),
|
|
177
|
+
);
|
|
126
178
|
/**
|
|
127
179
|
* If we decide to make this a dom event instead, then use the line below:
|
|
128
180
|
return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());
|
|
129
181
|
*/
|
|
130
182
|
};
|
|
131
|
-
Telemeter.prototype.captureLoad = function(ts) {
|
|
132
|
-
return this.capture(
|
|
183
|
+
Telemeter.prototype.captureLoad = function (ts) {
|
|
184
|
+
return this.capture(
|
|
185
|
+
'navigation',
|
|
186
|
+
{ subtype: 'load' },
|
|
187
|
+
'info',
|
|
188
|
+
undefined,
|
|
189
|
+
ts && ts.getTime(),
|
|
190
|
+
);
|
|
133
191
|
/**
|
|
134
192
|
* If we decide to make this a dom event instead, then use the line below:
|
|
135
193
|
return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());
|
|
136
194
|
*/
|
|
137
195
|
};
|
|
138
196
|
|
|
139
|
-
Telemeter.prototype.captureConnectivityChange = function(type, rollbarUUID) {
|
|
140
|
-
return this.captureNetwork({change: type}, 'connectivity', rollbarUUID);
|
|
197
|
+
Telemeter.prototype.captureConnectivityChange = function (type, rollbarUUID) {
|
|
198
|
+
return this.captureNetwork({ change: type }, 'connectivity', rollbarUUID);
|
|
141
199
|
};
|
|
142
200
|
|
|
143
201
|
// Only intended to be used internally by the notifier
|
|
144
|
-
Telemeter.prototype._captureRollbarItem = function(item) {
|
|
202
|
+
Telemeter.prototype._captureRollbarItem = function (item) {
|
|
145
203
|
if (!this.options.includeItemsInTelemetry) {
|
|
146
204
|
return;
|
|
147
205
|
}
|
|
@@ -152,11 +210,17 @@ Telemeter.prototype._captureRollbarItem = function(item) {
|
|
|
152
210
|
return this.captureLog(item.message, item.level, item.uuid, item.timestamp);
|
|
153
211
|
}
|
|
154
212
|
if (item.custom) {
|
|
155
|
-
return this.capture(
|
|
213
|
+
return this.capture(
|
|
214
|
+
'log',
|
|
215
|
+
item.custom,
|
|
216
|
+
item.level,
|
|
217
|
+
item.uuid,
|
|
218
|
+
item.timestamp,
|
|
219
|
+
);
|
|
156
220
|
}
|
|
157
221
|
};
|
|
158
222
|
|
|
159
|
-
Telemeter.prototype.push = function(e) {
|
|
223
|
+
Telemeter.prototype.push = function (e) {
|
|
160
224
|
this.queue.push(e);
|
|
161
225
|
if (this.queue.length > this.maxQueueSize) {
|
|
162
226
|
this.queue.shift();
|
|
@@ -169,7 +233,7 @@ function getLevel(type, level) {
|
|
|
169
233
|
}
|
|
170
234
|
var defaultLevel = {
|
|
171
235
|
error: 'error',
|
|
172
|
-
manual: 'info'
|
|
236
|
+
manual: 'info',
|
|
173
237
|
};
|
|
174
238
|
return defaultLevel[type] || 'info';
|
|
175
239
|
}
|
package/src/transforms.js
CHANGED
|
@@ -42,19 +42,19 @@ function addMessageWithError(item, options, callback) {
|
|
|
42
42
|
}
|
|
43
43
|
if (trace) {
|
|
44
44
|
if (!(trace.exception && trace.exception.description)) {
|
|
45
|
-
_.set(item, tracePath+'.exception.description', item.message);
|
|
45
|
+
_.set(item, tracePath + '.exception.description', item.message);
|
|
46
46
|
callback(null, item);
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
|
-
var extra = _.get(item, tracePath+'.extra') || {};
|
|
50
|
-
var newExtra =
|
|
51
|
-
_.set(item, tracePath+'.extra', newExtra);
|
|
49
|
+
var extra = _.get(item, tracePath + '.extra') || {};
|
|
50
|
+
var newExtra = _.merge(extra, { message: item.message });
|
|
51
|
+
_.set(item, tracePath + '.extra', newExtra);
|
|
52
52
|
}
|
|
53
53
|
callback(null, item);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
function userTransform(logger) {
|
|
57
|
-
return function(item, options, callback) {
|
|
57
|
+
return function (item, options, callback) {
|
|
58
58
|
var newItem = _.merge(item);
|
|
59
59
|
var response = null;
|
|
60
60
|
try {
|
|
@@ -63,23 +63,29 @@ function userTransform(logger) {
|
|
|
63
63
|
}
|
|
64
64
|
} catch (e) {
|
|
65
65
|
options.transform = null;
|
|
66
|
-
logger.error(
|
|
66
|
+
logger.error(
|
|
67
|
+
'Error while calling custom transform() function. Removing custom transform().',
|
|
68
|
+
e,
|
|
69
|
+
);
|
|
67
70
|
callback(null, item);
|
|
68
71
|
return;
|
|
69
72
|
}
|
|
70
|
-
if(_.isPromise(response)) {
|
|
71
|
-
response.then(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
if (_.isPromise(response)) {
|
|
74
|
+
response.then(
|
|
75
|
+
function (promisedItem) {
|
|
76
|
+
if (promisedItem) {
|
|
77
|
+
newItem.data = promisedItem;
|
|
78
|
+
}
|
|
79
|
+
callback(null, newItem);
|
|
80
|
+
},
|
|
81
|
+
function (error) {
|
|
82
|
+
callback(error, item);
|
|
83
|
+
},
|
|
84
|
+
);
|
|
79
85
|
} else {
|
|
80
86
|
callback(null, newItem);
|
|
81
87
|
}
|
|
82
|
-
}
|
|
88
|
+
};
|
|
83
89
|
}
|
|
84
90
|
|
|
85
91
|
function addConfigToPayload(item, options, callback) {
|
|
@@ -94,7 +100,7 @@ function addConfigToPayload(item, options, callback) {
|
|
|
94
100
|
}
|
|
95
101
|
|
|
96
102
|
function addFunctionOption(options, name) {
|
|
97
|
-
if(_.isFunction(options[name])) {
|
|
103
|
+
if (_.isFunction(options[name])) {
|
|
98
104
|
options[name] = options[name].toString();
|
|
99
105
|
}
|
|
100
106
|
}
|
|
@@ -113,7 +119,10 @@ function addConfiguredOptions(item, options, callback) {
|
|
|
113
119
|
}
|
|
114
120
|
|
|
115
121
|
function addDiagnosticKeys(item, options, callback) {
|
|
116
|
-
var diagnostic = _.merge(
|
|
122
|
+
var diagnostic = _.merge(
|
|
123
|
+
item.notifier.client.notifier.diagnostic,
|
|
124
|
+
item.diagnostic,
|
|
125
|
+
);
|
|
117
126
|
|
|
118
127
|
if (_.get(item, 'err._isAnonymous')) {
|
|
119
128
|
diagnostic.is_anonymous = true;
|
|
@@ -132,14 +141,17 @@ function addDiagnosticKeys(item, options, callback) {
|
|
|
132
141
|
filename: item.err.fileName,
|
|
133
142
|
line: item.err.lineNumber,
|
|
134
143
|
column: item.err.columnNumber,
|
|
135
|
-
stack: item.err.stack
|
|
144
|
+
stack: item.err.stack,
|
|
136
145
|
};
|
|
137
146
|
} catch (e) {
|
|
138
147
|
diagnostic.raw_error = { failed: String(e) };
|
|
139
148
|
}
|
|
140
149
|
}
|
|
141
150
|
|
|
142
|
-
item.data.notifier.diagnostic = _.merge(
|
|
151
|
+
item.data.notifier.diagnostic = _.merge(
|
|
152
|
+
item.data.notifier.diagnostic,
|
|
153
|
+
diagnostic,
|
|
154
|
+
);
|
|
143
155
|
callback(null, item);
|
|
144
156
|
}
|
|
145
157
|
|
|
@@ -151,5 +163,5 @@ module.exports = {
|
|
|
151
163
|
userTransform: userTransform,
|
|
152
164
|
addConfigToPayload: addConfigToPayload,
|
|
153
165
|
addConfiguredOptions: addConfiguredOptions,
|
|
154
|
-
addDiagnosticKeys: addDiagnosticKeys
|
|
166
|
+
addDiagnosticKeys: addDiagnosticKeys,
|
|
155
167
|
};
|
package/src/truncation.js
CHANGED
|
@@ -14,7 +14,7 @@ function selectFrames(frames, range) {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
function truncateFrames(payload, jsonBackup, range) {
|
|
17
|
-
range =
|
|
17
|
+
range = typeof range === 'undefined' ? 30 : range;
|
|
18
18
|
var body = payload.data.body;
|
|
19
19
|
var frames;
|
|
20
20
|
if (body.trace_chain) {
|
|
@@ -61,7 +61,10 @@ function truncateStrings(len, payload, jsonBackup) {
|
|
|
61
61
|
function truncateTraceData(traceData) {
|
|
62
62
|
if (traceData.exception) {
|
|
63
63
|
delete traceData.exception.description;
|
|
64
|
-
traceData.exception.message = maybeTruncateValue(
|
|
64
|
+
traceData.exception.message = maybeTruncateValue(
|
|
65
|
+
255,
|
|
66
|
+
traceData.exception.message,
|
|
67
|
+
);
|
|
65
68
|
}
|
|
66
69
|
traceData.frames = selectFrames(traceData.frames, 1);
|
|
67
70
|
return traceData;
|
|
@@ -85,14 +88,14 @@ function needsTruncation(payload, maxSize) {
|
|
|
85
88
|
}
|
|
86
89
|
|
|
87
90
|
function truncate(payload, jsonBackup, maxSize) {
|
|
88
|
-
maxSize =
|
|
91
|
+
maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;
|
|
89
92
|
var strategies = [
|
|
90
93
|
raw,
|
|
91
94
|
truncateFrames,
|
|
92
95
|
truncateStrings.bind(null, 1024),
|
|
93
96
|
truncateStrings.bind(null, 512),
|
|
94
97
|
truncateStrings.bind(null, 256),
|
|
95
|
-
minBody
|
|
98
|
+
minBody,
|
|
96
99
|
];
|
|
97
100
|
var strategy, results, result;
|
|
98
101
|
|
|
@@ -114,5 +117,5 @@ module.exports = {
|
|
|
114
117
|
raw: raw,
|
|
115
118
|
truncateFrames: truncateFrames,
|
|
116
119
|
truncateStrings: truncateStrings,
|
|
117
|
-
maybeTruncateValue: maybeTruncateValue
|
|
120
|
+
maybeTruncateValue: maybeTruncateValue,
|
|
118
121
|
};
|
package/src/utility/headers.js
CHANGED
|
@@ -18,77 +18,77 @@ function headers(headers) {
|
|
|
18
18
|
|
|
19
19
|
function normalizeName(name) {
|
|
20
20
|
if (typeof name !== 'string') {
|
|
21
|
-
name = String(name)
|
|
21
|
+
name = String(name);
|
|
22
22
|
}
|
|
23
|
-
return name.toLowerCase()
|
|
23
|
+
return name.toLowerCase();
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
function normalizeValue(value) {
|
|
27
27
|
if (typeof value !== 'string') {
|
|
28
|
-
value = String(value)
|
|
28
|
+
value = String(value);
|
|
29
29
|
}
|
|
30
|
-
return value
|
|
30
|
+
return value;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
function iteratorFor(items) {
|
|
34
34
|
var iterator = {
|
|
35
|
-
next: function() {
|
|
36
|
-
var value = items.shift()
|
|
37
|
-
return {done: value === undefined, value: value}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
35
|
+
next: function () {
|
|
36
|
+
var value = items.shift();
|
|
37
|
+
return { done: value === undefined, value: value };
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
40
|
|
|
41
|
-
return iterator
|
|
41
|
+
return iterator;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
function FetchHeaders(headers) {
|
|
45
|
-
this.map = {}
|
|
45
|
+
this.map = {};
|
|
46
46
|
|
|
47
47
|
if (headers instanceof FetchHeaders) {
|
|
48
|
-
headers.forEach(function(value, name) {
|
|
49
|
-
this.append(name, value)
|
|
50
|
-
}, this)
|
|
48
|
+
headers.forEach(function (value, name) {
|
|
49
|
+
this.append(name, value);
|
|
50
|
+
}, this);
|
|
51
51
|
} else if (Array.isArray(headers)) {
|
|
52
|
-
headers.forEach(function(header) {
|
|
53
|
-
this.append(header[0], header[1])
|
|
54
|
-
}, this)
|
|
52
|
+
headers.forEach(function (header) {
|
|
53
|
+
this.append(header[0], header[1]);
|
|
54
|
+
}, this);
|
|
55
55
|
} else if (headers) {
|
|
56
|
-
Object.getOwnPropertyNames(headers).forEach(function(name) {
|
|
57
|
-
this.append(name, headers[name])
|
|
58
|
-
}, this)
|
|
56
|
+
Object.getOwnPropertyNames(headers).forEach(function (name) {
|
|
57
|
+
this.append(name, headers[name]);
|
|
58
|
+
}, this);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
FetchHeaders.prototype.append = function(name, value) {
|
|
63
|
-
name = normalizeName(name)
|
|
64
|
-
value = normalizeValue(value)
|
|
65
|
-
var oldValue = this.map[name]
|
|
66
|
-
this.map[name] = oldValue ? oldValue + ', ' + value : value
|
|
67
|
-
}
|
|
62
|
+
FetchHeaders.prototype.append = function (name, value) {
|
|
63
|
+
name = normalizeName(name);
|
|
64
|
+
value = normalizeValue(value);
|
|
65
|
+
var oldValue = this.map[name];
|
|
66
|
+
this.map[name] = oldValue ? oldValue + ', ' + value : value;
|
|
67
|
+
};
|
|
68
68
|
|
|
69
|
-
FetchHeaders.prototype.get = function(name) {
|
|
70
|
-
name = normalizeName(name)
|
|
71
|
-
return this.has(name) ? this.map[name] : null
|
|
72
|
-
}
|
|
69
|
+
FetchHeaders.prototype.get = function (name) {
|
|
70
|
+
name = normalizeName(name);
|
|
71
|
+
return this.has(name) ? this.map[name] : null;
|
|
72
|
+
};
|
|
73
73
|
|
|
74
|
-
FetchHeaders.prototype.has = function(name) {
|
|
75
|
-
return this.map.hasOwnProperty(normalizeName(name))
|
|
76
|
-
}
|
|
74
|
+
FetchHeaders.prototype.has = function (name) {
|
|
75
|
+
return this.map.hasOwnProperty(normalizeName(name));
|
|
76
|
+
};
|
|
77
77
|
|
|
78
|
-
FetchHeaders.prototype.forEach = function(callback, thisArg) {
|
|
78
|
+
FetchHeaders.prototype.forEach = function (callback, thisArg) {
|
|
79
79
|
for (var name in this.map) {
|
|
80
80
|
if (this.map.hasOwnProperty(name)) {
|
|
81
|
-
callback.call(thisArg, this.map[name], name, this)
|
|
81
|
+
callback.call(thisArg, this.map[name], name, this);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
}
|
|
84
|
+
};
|
|
85
85
|
|
|
86
|
-
FetchHeaders.prototype.entries = function() {
|
|
87
|
-
var items = []
|
|
88
|
-
this.forEach(function(value, name) {
|
|
89
|
-
items.push([name, value])
|
|
90
|
-
})
|
|
91
|
-
return iteratorFor(items)
|
|
92
|
-
}
|
|
86
|
+
FetchHeaders.prototype.entries = function () {
|
|
87
|
+
var items = [];
|
|
88
|
+
this.forEach(function (value, name) {
|
|
89
|
+
items.push([name, value]);
|
|
90
|
+
});
|
|
91
|
+
return iteratorFor(items);
|
|
92
|
+
};
|
|
93
93
|
|
|
94
94
|
module.exports = headers;
|
package/src/utility/traverse.js
CHANGED
|
@@ -8,7 +8,7 @@ function traverse(obj, func, seen) {
|
|
|
8
8
|
var seenIndex;
|
|
9
9
|
|
|
10
10
|
// Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.
|
|
11
|
-
seen = seen || { obj: [], mapped: []};
|
|
11
|
+
seen = seen || { obj: [], mapped: [] };
|
|
12
12
|
|
|
13
13
|
if (isObj) {
|
|
14
14
|
seenIndex = seen.obj.indexOf(obj);
|