@cloudcare/rum-uniapp 2.1.17 → 2.1.20
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/README.md +42 -34
- package/cjs/boot/buildEnv.js +3 -4
- package/cjs/boot/rum.entry.js +12 -37
- package/cjs/boot/rum.js +2 -25
- package/cjs/core/baseInfo.js +6 -25
- package/cjs/core/boundedBuffer.js +1 -7
- package/cjs/core/configuration.js +15 -27
- package/cjs/core/contextManager.js +5 -17
- package/cjs/core/dataMap.js +5 -10
- package/cjs/core/downloadProxy.js +4 -26
- package/cjs/core/errorCollection.js +5 -35
- package/cjs/core/errorFilter.js +0 -8
- package/cjs/core/errorTools.js +2 -10
- package/cjs/core/heavyCustomerDataWarning.js +3 -9
- package/cjs/core/lifeCycle.js +8 -18
- package/cjs/core/observable.js +7 -13
- package/cjs/core/sdk.js +4 -13
- package/cjs/core/sessionManagement.js +8 -17
- package/cjs/core/transport.js +6 -53
- package/cjs/core/user.js +2 -7
- package/cjs/core/xhrProxy.js +4 -26
- package/cjs/helper/byteUtils.js +6 -12
- package/cjs/helper/commonContext.js +2 -3
- package/cjs/helper/enums.js +17 -28
- package/cjs/helper/jsonStringify.js +5 -12
- package/cjs/helper/limitModification.js +3 -21
- package/cjs/helper/tracekit.js +33 -145
- package/cjs/helper/utils.js +92 -306
- package/cjs/index.js +0 -1
- package/cjs/rumEventsCollection/action/actionCollection.js +0 -9
- package/cjs/rumEventsCollection/action/trackActions.js +6 -28
- package/cjs/rumEventsCollection/app/appCollection.js +0 -6
- package/cjs/rumEventsCollection/app/index.js +14 -26
- package/cjs/rumEventsCollection/assembly.js +0 -14
- package/cjs/rumEventsCollection/error/errorCollection.js +1 -16
- package/cjs/rumEventsCollection/internalContext.js +0 -2
- package/cjs/rumEventsCollection/page/index.js +5 -43
- package/cjs/rumEventsCollection/page/viewCollection.js +0 -8
- package/cjs/rumEventsCollection/parentContexts.js +3 -20
- package/cjs/rumEventsCollection/performanceCollection.js +0 -4
- package/cjs/rumEventsCollection/requestCollection.js +1 -14
- package/cjs/rumEventsCollection/resource/resourceCollection.js +0 -11
- package/cjs/rumEventsCollection/resource/resourceUtils.js +50 -46
- package/cjs/rumEventsCollection/setDataCollection.js +0 -16
- package/cjs/rumEventsCollection/tracing/ddtraceTracer.js +0 -6
- package/cjs/rumEventsCollection/tracing/jaegerTracer.js +3 -9
- package/cjs/rumEventsCollection/tracing/skywalkingTracer.js +3 -10
- package/cjs/rumEventsCollection/tracing/tracer.js +1 -25
- package/cjs/rumEventsCollection/tracing/w3cTraceParentTracer.js +1 -6
- package/cjs/rumEventsCollection/tracing/zipkinMultiTracer.js +3 -10
- package/cjs/rumEventsCollection/tracing/zipkinSingleTracer.js +1 -6
- package/cjs/rumEventsCollection/trackEventCounts.js +0 -8
- package/cjs/rumEventsCollection/trackPageActiveites.js +10 -33
- package/cjs/rumEventsCollection/transport/batch.js +0 -9
- package/esm/boot/buildEnv.js +1 -1
- package/esm/boot/rum.entry.js +9 -21
- package/esm/boot/rum.js +0 -4
- package/esm/core/baseInfo.js +0 -11
- package/esm/core/boundedBuffer.js +0 -3
- package/esm/core/configuration.js +13 -21
- package/esm/core/contextManager.js +3 -8
- package/esm/core/dataMap.js +2 -2
- package/esm/core/downloadProxy.js +2 -17
- package/esm/core/errorCollection.js +2 -15
- package/esm/core/errorFilter.js +0 -5
- package/esm/core/errorTools.js +0 -3
- package/esm/core/heavyCustomerDataWarning.js +3 -3
- package/esm/core/lifeCycle.js +0 -5
- package/esm/core/observable.js +0 -3
- package/esm/core/sdk.js +1 -6
- package/esm/core/sessionManagement.js +0 -3
- package/esm/core/transport.js +4 -38
- package/esm/core/user.js +2 -4
- package/esm/core/xhrProxy.js +2 -17
- package/esm/helper/byteUtils.js +4 -7
- package/esm/helper/commonContext.js +2 -2
- package/esm/helper/jsonStringify.js +4 -7
- package/esm/helper/limitModification.js +1 -11
- package/esm/helper/tracekit.js +30 -130
- package/esm/helper/utils.js +27 -125
- package/esm/rumEventsCollection/action/actionCollection.js +0 -4
- package/esm/rumEventsCollection/action/trackActions.js +6 -20
- package/esm/rumEventsCollection/app/appCollection.js +0 -1
- package/esm/rumEventsCollection/app/index.js +12 -18
- package/esm/rumEventsCollection/assembly.js +0 -6
- package/esm/rumEventsCollection/error/errorCollection.js +0 -7
- package/esm/rumEventsCollection/internalContext.js +0 -1
- package/esm/rumEventsCollection/page/index.js +5 -37
- package/esm/rumEventsCollection/page/viewCollection.js +0 -3
- package/esm/rumEventsCollection/parentContexts.js +0 -10
- package/esm/rumEventsCollection/requestCollection.js +0 -4
- package/esm/rumEventsCollection/resource/resourceCollection.js +0 -5
- package/esm/rumEventsCollection/resource/resourceUtils.js +48 -39
- package/esm/rumEventsCollection/setDataCollection.js +0 -13
- package/esm/rumEventsCollection/tracing/ddtraceTracer.js +0 -4
- package/esm/rumEventsCollection/tracing/jaegerTracer.js +3 -7
- package/esm/rumEventsCollection/tracing/skywalkingTracer.js +5 -9
- package/esm/rumEventsCollection/tracing/tracer.js +0 -14
- package/esm/rumEventsCollection/tracing/w3cTraceParentTracer.js +1 -4
- package/esm/rumEventsCollection/tracing/zipkinMultiTracer.js +3 -8
- package/esm/rumEventsCollection/tracing/zipkinSingleTracer.js +1 -4
- package/esm/rumEventsCollection/trackEventCounts.js +0 -4
- package/esm/rumEventsCollection/trackPageActiveites.js +9 -22
- package/esm/rumEventsCollection/transport/batch.js +0 -5
- package/package.json +6 -3
package/cjs/helper/tracekit.js
CHANGED
|
@@ -3,24 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.report = exports.computeStackTrace = void 0;
|
|
6
7
|
exports.wrap = wrap;
|
|
7
|
-
exports.computeStackTrace = exports.report = void 0;
|
|
8
|
-
|
|
9
8
|
var _sdk = require("../core/sdk");
|
|
10
|
-
|
|
11
9
|
var UNKNOWN_FUNCTION = '?';
|
|
12
|
-
|
|
13
10
|
function has(object, key) {
|
|
14
11
|
return Object.prototype.hasOwnProperty.call(object, key);
|
|
15
12
|
}
|
|
16
|
-
|
|
17
13
|
function isUndefined(what) {
|
|
18
14
|
return typeof what === 'undefined';
|
|
19
15
|
}
|
|
20
|
-
|
|
21
16
|
function wrap(func) {
|
|
22
17
|
var _this = this;
|
|
23
|
-
|
|
24
18
|
function wrapped() {
|
|
25
19
|
try {
|
|
26
20
|
return func.apply(_this, arguments);
|
|
@@ -29,7 +23,6 @@ function wrap(func) {
|
|
|
29
23
|
throw e;
|
|
30
24
|
}
|
|
31
25
|
}
|
|
32
|
-
|
|
33
26
|
return wrapped;
|
|
34
27
|
}
|
|
35
28
|
/**
|
|
@@ -76,16 +69,14 @@ function wrap(func) {
|
|
|
76
69
|
* @memberof TraceKit
|
|
77
70
|
* @namespace
|
|
78
71
|
*/
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
var report = function reportModuleWrapper() {
|
|
72
|
+
var report = exports.report = function reportModuleWrapper() {
|
|
82
73
|
var handlers = [];
|
|
74
|
+
|
|
83
75
|
/**
|
|
84
76
|
* Add a crash handler.
|
|
85
77
|
* @param {Function} handler
|
|
86
78
|
* @memberof report
|
|
87
79
|
*/
|
|
88
|
-
|
|
89
80
|
function subscribe(handler) {
|
|
90
81
|
installGlobalHandler();
|
|
91
82
|
installGlobalUnhandledRejectionHandler();
|
|
@@ -94,13 +85,12 @@ var report = function reportModuleWrapper() {
|
|
|
94
85
|
installGlobalOnLazyLoadErrorHandler();
|
|
95
86
|
handlers.push(handler);
|
|
96
87
|
}
|
|
88
|
+
|
|
97
89
|
/**
|
|
98
90
|
* Remove a crash handler.
|
|
99
91
|
* @param {Function} handler
|
|
100
92
|
* @memberof report
|
|
101
93
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
94
|
function unsubscribe(handler) {
|
|
105
95
|
for (var i = handlers.length - 1; i >= 0; i -= 1) {
|
|
106
96
|
if (handlers[i] === handler) {
|
|
@@ -108,6 +98,7 @@ var report = function reportModuleWrapper() {
|
|
|
108
98
|
}
|
|
109
99
|
}
|
|
110
100
|
}
|
|
101
|
+
|
|
111
102
|
/**
|
|
112
103
|
* Dispatch stack information to all handlers.
|
|
113
104
|
* @param {StackTrace} stack
|
|
@@ -116,11 +107,8 @@ var report = function reportModuleWrapper() {
|
|
|
116
107
|
* @memberof report
|
|
117
108
|
* @throws An exception if an error occurs while calling an handler.
|
|
118
109
|
*/
|
|
119
|
-
|
|
120
|
-
|
|
121
110
|
function notifyHandlers(stack, isWindowError, error) {
|
|
122
111
|
var exception;
|
|
123
|
-
|
|
124
112
|
for (var i in handlers) {
|
|
125
113
|
if (has(handlers, i)) {
|
|
126
114
|
try {
|
|
@@ -130,12 +118,10 @@ var report = function reportModuleWrapper() {
|
|
|
130
118
|
}
|
|
131
119
|
}
|
|
132
120
|
}
|
|
133
|
-
|
|
134
121
|
if (exception) {
|
|
135
122
|
throw exception;
|
|
136
123
|
}
|
|
137
124
|
}
|
|
138
|
-
|
|
139
125
|
var onErrorHandlerInstalled;
|
|
140
126
|
var onUnhandledRejectionHandlerInstalled;
|
|
141
127
|
var onPageNotFoundHandlerInstalled;
|
|
@@ -151,38 +137,32 @@ var report = function reportModuleWrapper() {
|
|
|
151
137
|
* @param {Error=} errorObj The actual Error object.
|
|
152
138
|
* @memberof report
|
|
153
139
|
*/
|
|
154
|
-
|
|
155
140
|
function traceKitWindowOnError(err) {
|
|
156
141
|
var error = typeof err === 'string' ? new Error(err) : err;
|
|
157
142
|
var stack;
|
|
158
143
|
var name = '';
|
|
159
144
|
var msg = '';
|
|
160
145
|
stack = computeStackTrace(error);
|
|
161
|
-
|
|
162
146
|
if (error && error.message && {}.toString.call(error.message) === '[object String]') {
|
|
163
147
|
var messages = error.message.split('\n');
|
|
164
|
-
|
|
165
148
|
if (messages.length >= 3) {
|
|
166
149
|
msg = messages[2];
|
|
167
150
|
var groups = msg.match(ERROR_TYPES_RE);
|
|
168
|
-
|
|
169
151
|
if (groups) {
|
|
170
152
|
name = groups[1];
|
|
171
153
|
msg = groups[2];
|
|
172
154
|
}
|
|
173
155
|
}
|
|
174
156
|
}
|
|
175
|
-
|
|
176
157
|
if (msg) {
|
|
177
158
|
stack.message = msg;
|
|
178
159
|
}
|
|
179
|
-
|
|
180
160
|
if (name) {
|
|
181
161
|
stack.name = name;
|
|
182
162
|
}
|
|
183
|
-
|
|
184
163
|
notifyHandlers(stack, true, error);
|
|
185
164
|
}
|
|
165
|
+
|
|
186
166
|
/**
|
|
187
167
|
* Ensures all unhandled rejections are recorded.
|
|
188
168
|
* @param {PromiseRejectionEvent} e event.
|
|
@@ -190,76 +170,61 @@ var report = function reportModuleWrapper() {
|
|
|
190
170
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onunhandledrejection
|
|
191
171
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent
|
|
192
172
|
*/
|
|
193
|
-
|
|
194
|
-
|
|
195
173
|
function traceKitWindowOnUnhandledRejection(_ref) {
|
|
196
174
|
var reason = _ref.reason,
|
|
197
|
-
|
|
175
|
+
promise = _ref.promise;
|
|
198
176
|
var error = typeof reason === 'string' ? new Error(reason) : reason;
|
|
199
177
|
var stack;
|
|
200
178
|
var name = '';
|
|
201
179
|
var msg = '';
|
|
202
180
|
stack = computeStackTrace(error);
|
|
203
|
-
|
|
204
181
|
if (error && error.message && {}.toString.call(error.message) === '[object String]') {
|
|
205
182
|
var messages = error.message.split('\n');
|
|
206
|
-
|
|
207
183
|
if (messages.length >= 3) {
|
|
208
184
|
msg = messages[2];
|
|
209
185
|
var groups = msg.match(ERROR_TYPES_RE);
|
|
210
|
-
|
|
211
186
|
if (groups) {
|
|
212
187
|
name = groups[1];
|
|
213
188
|
msg = groups[2];
|
|
214
189
|
}
|
|
215
190
|
}
|
|
216
191
|
}
|
|
217
|
-
|
|
218
192
|
if (msg) {
|
|
219
193
|
stack.message = msg;
|
|
220
194
|
}
|
|
221
|
-
|
|
222
195
|
if (name) {
|
|
223
196
|
stack.name = name;
|
|
224
197
|
}
|
|
225
|
-
|
|
226
198
|
notifyHandlers(stack, true, error);
|
|
227
199
|
}
|
|
200
|
+
|
|
228
201
|
/**
|
|
229
202
|
* Install a global onerror handler
|
|
230
203
|
* @memberof report
|
|
231
204
|
*/
|
|
232
|
-
|
|
233
|
-
|
|
234
205
|
function installGlobalHandler() {
|
|
235
206
|
if (onErrorHandlerInstalled || !_sdk.sdk.onError) {
|
|
236
207
|
return;
|
|
237
208
|
}
|
|
238
|
-
|
|
239
209
|
_sdk.sdk.onError(traceKitWindowOnError);
|
|
240
|
-
|
|
241
210
|
onErrorHandlerInstalled = true;
|
|
242
211
|
}
|
|
212
|
+
|
|
243
213
|
/**
|
|
244
214
|
* Install a global onunhandledrejection handler
|
|
245
215
|
* @memberof report
|
|
246
216
|
*/
|
|
247
|
-
|
|
248
|
-
|
|
249
217
|
function installGlobalUnhandledRejectionHandler() {
|
|
250
218
|
if (onUnhandledRejectionHandlerInstalled || !_sdk.sdk.onUnhandledRejection) {
|
|
251
219
|
return;
|
|
252
220
|
}
|
|
253
|
-
|
|
254
221
|
_sdk.sdk.onUnhandledRejection && _sdk.sdk.onUnhandledRejection(traceKitWindowOnUnhandledRejection);
|
|
255
222
|
onUnhandledRejectionHandlerInstalled = true;
|
|
256
223
|
}
|
|
257
|
-
|
|
258
224
|
function installGlobalOnPageNotFoundHandler() {
|
|
259
225
|
if (onPageNotFoundHandlerInstalled || !_sdk.sdk.onPageNotFound) {
|
|
260
226
|
return;
|
|
261
227
|
}
|
|
262
|
-
|
|
263
228
|
_sdk.sdk.onPageNotFound(function (res) {
|
|
264
229
|
var url = res.path.split('?')[0];
|
|
265
230
|
notifyHandlers({
|
|
@@ -268,52 +233,41 @@ var report = function reportModuleWrapper() {
|
|
|
268
233
|
name: url + '页面无法找到'
|
|
269
234
|
}, true, {});
|
|
270
235
|
});
|
|
271
|
-
|
|
272
236
|
onPageNotFoundHandlerInstalled = true;
|
|
273
237
|
}
|
|
274
|
-
|
|
275
238
|
function installGlobalOnMemoryWarningHandler() {
|
|
276
239
|
if (onMemoryWarningHandlerInstalled || !_sdk.sdk.onMemoryWarning) {
|
|
277
240
|
return;
|
|
278
241
|
}
|
|
279
|
-
|
|
280
242
|
_sdk.sdk.onMemoryWarning(function (_ref2) {
|
|
281
243
|
var _ref2$level = _ref2.level,
|
|
282
|
-
|
|
244
|
+
level = _ref2$level === void 0 ? -1 : _ref2$level;
|
|
283
245
|
var levelMessage = '没有获取到告警级别信息';
|
|
284
|
-
|
|
285
246
|
switch (level) {
|
|
286
247
|
case 5:
|
|
287
248
|
levelMessage = 'TRIM_MEMORY_RUNNING_MODERATE';
|
|
288
249
|
break;
|
|
289
|
-
|
|
290
250
|
case 10:
|
|
291
251
|
levelMessage = 'TRIM_MEMORY_RUNNING_LOW';
|
|
292
252
|
break;
|
|
293
|
-
|
|
294
253
|
case 15:
|
|
295
254
|
levelMessage = 'TRIM_MEMORY_RUNNING_CRITICAL';
|
|
296
255
|
break;
|
|
297
|
-
|
|
298
256
|
default:
|
|
299
257
|
return;
|
|
300
258
|
}
|
|
301
|
-
|
|
302
259
|
notifyHandlers({
|
|
303
260
|
message: levelMessage,
|
|
304
261
|
type: 'memorywarning',
|
|
305
262
|
name: '内存不足告警'
|
|
306
263
|
}, true, {});
|
|
307
264
|
});
|
|
308
|
-
|
|
309
265
|
onMemoryWarningHandlerInstalled = true;
|
|
310
266
|
}
|
|
311
|
-
|
|
312
267
|
function installGlobalOnLazyLoadErrorHandler() {
|
|
313
268
|
if (onLazyLoadErrorHandlerInstalled || !_sdk.sdk.onLazyLoadError) {
|
|
314
269
|
return;
|
|
315
270
|
}
|
|
316
|
-
|
|
317
271
|
_sdk.sdk.onLazyLoadError(function (res) {
|
|
318
272
|
var subpackage = res.subpackage || [];
|
|
319
273
|
notifyHandlers({
|
|
@@ -322,7 +276,6 @@ var report = function reportModuleWrapper() {
|
|
|
322
276
|
name: subpackage.join(',') + 'load error'
|
|
323
277
|
}, true, {});
|
|
324
278
|
});
|
|
325
|
-
|
|
326
279
|
onLazyLoadErrorHandlerInstalled = true;
|
|
327
280
|
}
|
|
328
281
|
/**
|
|
@@ -331,15 +284,13 @@ var report = function reportModuleWrapper() {
|
|
|
331
284
|
* @memberof report
|
|
332
285
|
* @throws An exception if an incompvare stack trace is detected (old IE browsers).
|
|
333
286
|
*/
|
|
334
|
-
|
|
335
|
-
|
|
336
287
|
function doReport(ex) {}
|
|
337
|
-
|
|
338
288
|
doReport.subscribe = subscribe;
|
|
339
289
|
doReport.unsubscribe = unsubscribe;
|
|
340
290
|
doReport.traceKitWindowOnError = traceKitWindowOnError;
|
|
341
291
|
return doReport;
|
|
342
292
|
}();
|
|
293
|
+
|
|
343
294
|
/**
|
|
344
295
|
* computeStackTrace: cross-browser stack traces in JavaScript
|
|
345
296
|
*
|
|
@@ -403,12 +354,10 @@ var report = function reportModuleWrapper() {
|
|
|
403
354
|
* @memberof TraceKit
|
|
404
355
|
* @namespace
|
|
405
356
|
*/
|
|
357
|
+
var computeStackTrace = exports.computeStackTrace = function computeStackTraceWrapper() {
|
|
358
|
+
var debug = false;
|
|
406
359
|
|
|
407
|
-
|
|
408
|
-
exports.report = report;
|
|
409
|
-
|
|
410
|
-
var computeStackTrace = function computeStackTraceWrapper() {
|
|
411
|
-
var debug = false; // Contents of Exception in various browsers.
|
|
360
|
+
// Contents of Exception in various browsers.
|
|
412
361
|
//
|
|
413
362
|
// SAFARI:
|
|
414
363
|
// ex.message = Can't find variable: qq
|
|
@@ -452,19 +401,19 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
452
401
|
* @return {?StackTrace} Stack trace information.
|
|
453
402
|
* @memberof computeStackTrace
|
|
454
403
|
*/
|
|
455
|
-
|
|
456
404
|
function computeStackTraceFromStackProp(ex) {
|
|
457
405
|
if (!ex.stack) {
|
|
458
406
|
return;
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; // tslint:disable-next-line max-line-length
|
|
463
|
-
|
|
464
|
-
var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; // tslint:disable-next-line max-line-length
|
|
407
|
+
}
|
|
465
408
|
|
|
466
|
-
|
|
409
|
+
// tslint:disable-next-line max-line-length
|
|
410
|
+
var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i;
|
|
411
|
+
// tslint:disable-next-line max-line-length
|
|
412
|
+
var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i;
|
|
413
|
+
// tslint:disable-next-line max-line-length
|
|
414
|
+
var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
|
|
467
415
|
|
|
416
|
+
// Used to additionally parse URL/line/column from eval frames
|
|
468
417
|
var isEval;
|
|
469
418
|
var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
|
|
470
419
|
var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/;
|
|
@@ -473,22 +422,16 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
473
422
|
var submatch;
|
|
474
423
|
var parts;
|
|
475
424
|
var element;
|
|
476
|
-
|
|
477
425
|
for (var i = 0, j = lines.length; i < j; i += 1) {
|
|
478
426
|
if (chrome.exec(lines[i])) {
|
|
479
427
|
parts = chrome.exec(lines[i]);
|
|
480
428
|
var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line
|
|
481
|
-
|
|
482
429
|
isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line
|
|
483
|
-
|
|
484
430
|
submatch = chromeEval.exec(parts[2]);
|
|
485
|
-
|
|
486
431
|
if (isEval && submatch) {
|
|
487
432
|
// throw out eval line/column and use top-most line/column number
|
|
488
433
|
parts[2] = submatch[1]; // url
|
|
489
|
-
|
|
490
434
|
parts[3] = submatch[2]; // line
|
|
491
|
-
|
|
492
435
|
parts[4] = submatch[3]; // column
|
|
493
436
|
}
|
|
494
437
|
|
|
@@ -512,7 +455,6 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
512
455
|
parts = gecko.exec(lines[i]);
|
|
513
456
|
isEval = parts[3] && parts[3].indexOf(' > eval') > -1;
|
|
514
457
|
submatch = geckoEval.exec(parts[3]);
|
|
515
|
-
|
|
516
458
|
if (isEval && submatch) {
|
|
517
459
|
// throw out eval line/column and use top-most line number
|
|
518
460
|
parts[3] = submatch[1];
|
|
@@ -525,7 +467,6 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
525
467
|
// NOTE: this hack doesn't work if top-most frame is eval
|
|
526
468
|
stack[0].column = ex.columnNumber + 1;
|
|
527
469
|
}
|
|
528
|
-
|
|
529
470
|
element = {
|
|
530
471
|
args: parts[2] ? parts[2].split(',') : [],
|
|
531
472
|
column: parts[5] ? +parts[5] : undefined,
|
|
@@ -536,24 +477,21 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
536
477
|
} else {
|
|
537
478
|
continue;
|
|
538
479
|
}
|
|
539
|
-
|
|
540
480
|
if (!element.func && element.line) {
|
|
541
481
|
element.func = UNKNOWN_FUNCTION;
|
|
542
482
|
}
|
|
543
|
-
|
|
544
483
|
stack.push(element);
|
|
545
484
|
}
|
|
546
|
-
|
|
547
485
|
if (!stack.length) {
|
|
548
486
|
return;
|
|
549
487
|
}
|
|
550
|
-
|
|
551
488
|
return {
|
|
552
489
|
stack: stack,
|
|
553
490
|
message: extractMessage(ex),
|
|
554
491
|
name: ex.name
|
|
555
492
|
};
|
|
556
493
|
}
|
|
494
|
+
|
|
557
495
|
/**
|
|
558
496
|
* Computes stack trace information from the stacktrace property.
|
|
559
497
|
* Opera 10+ uses this property.
|
|
@@ -561,28 +499,22 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
561
499
|
* @return {?StackTrace} Stack trace information.
|
|
562
500
|
* @memberof computeStackTrace
|
|
563
501
|
*/
|
|
564
|
-
|
|
565
|
-
|
|
566
502
|
function computeStackTraceFromStacktraceProp(ex) {
|
|
567
503
|
// Access and store the stacktrace property before doing ANYTHING
|
|
568
504
|
// else to it because Opera is not very good at providing it
|
|
569
505
|
// reliably in other circumstances.
|
|
570
506
|
var stacktrace = ex.stacktrace;
|
|
571
|
-
|
|
572
507
|
if (!stacktrace) {
|
|
573
508
|
return;
|
|
574
509
|
}
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
510
|
+
var opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
|
|
511
|
+
// tslint:disable-next-line max-line-length
|
|
578
512
|
var opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i;
|
|
579
513
|
var lines = stacktrace.split('\n');
|
|
580
514
|
var stack = [];
|
|
581
515
|
var parts;
|
|
582
|
-
|
|
583
516
|
for (var line = 0; line < lines.length; line += 2) {
|
|
584
517
|
var element;
|
|
585
|
-
|
|
586
518
|
if (opera10Regex.exec(lines[line])) {
|
|
587
519
|
parts = opera10Regex.exec(lines[line]);
|
|
588
520
|
element = {
|
|
@@ -602,27 +534,24 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
602
534
|
url: parts[6]
|
|
603
535
|
};
|
|
604
536
|
}
|
|
605
|
-
|
|
606
537
|
if (element) {
|
|
607
538
|
if (!element.func && element.line) {
|
|
608
539
|
element.func = UNKNOWN_FUNCTION;
|
|
609
540
|
}
|
|
610
|
-
|
|
611
541
|
element.context = [lines[line + 1]];
|
|
612
542
|
stack.push(element);
|
|
613
543
|
}
|
|
614
544
|
}
|
|
615
|
-
|
|
616
545
|
if (!stack.length) {
|
|
617
546
|
return;
|
|
618
547
|
}
|
|
619
|
-
|
|
620
548
|
return {
|
|
621
549
|
stack: stack,
|
|
622
550
|
message: extractMessage(ex),
|
|
623
551
|
name: ex.name
|
|
624
552
|
};
|
|
625
553
|
}
|
|
554
|
+
|
|
626
555
|
/**
|
|
627
556
|
* NOT TESTED.
|
|
628
557
|
* Computes stack trace information from an error message that includes
|
|
@@ -633,8 +562,6 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
633
562
|
* @return {?StackTrace} Stack information.
|
|
634
563
|
* @memberof computeStackTrace
|
|
635
564
|
*/
|
|
636
|
-
|
|
637
|
-
|
|
638
565
|
function computeStackTraceFromOperaMultiLineMessage(ex) {
|
|
639
566
|
// TODO: Clean this function up
|
|
640
567
|
// Opera includes a stack trace into the exception message. An example is:
|
|
@@ -653,12 +580,11 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
653
580
|
// Line 1 of function script
|
|
654
581
|
// try { xxx('hi'); return false; } catch(ex) { report(ex); }
|
|
655
582
|
// ...
|
|
656
|
-
var lines = ex.message.split('\n');
|
|
657
583
|
|
|
584
|
+
var lines = ex.message.split('\n');
|
|
658
585
|
if (lines.length < 4) {
|
|
659
586
|
return;
|
|
660
587
|
}
|
|
661
|
-
|
|
662
588
|
var lineRE1 = /^\s*Line (\d+) of linked script ((?:file|https?|blob)\S+)(?:: in function (\S+))?\s*$/i;
|
|
663
589
|
var lineRE2 = /^\s*Line (\d+) of inline#(\d+) script in ((?:file|https?|blob)\S+)(?:: in function (\S+))?\s*$/i;
|
|
664
590
|
var lineRE3 = /^\s*Line (\d+) of function script\s*$/i;
|
|
@@ -666,16 +592,13 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
666
592
|
var scripts = window && window.document && window.document.getElementsByTagName('script');
|
|
667
593
|
var inlineScriptBlocks = [];
|
|
668
594
|
var parts;
|
|
669
|
-
|
|
670
595
|
for (var s in scripts) {
|
|
671
596
|
if (has(scripts, s) && !scripts[s].src) {
|
|
672
597
|
inlineScriptBlocks.push(scripts[s]);
|
|
673
598
|
}
|
|
674
599
|
}
|
|
675
|
-
|
|
676
600
|
for (var line = 2; line < lines.length; line += 2) {
|
|
677
601
|
var item;
|
|
678
|
-
|
|
679
602
|
if (lineRE1.exec(lines[line])) {
|
|
680
603
|
parts = lineRE1.exec(lines[line]);
|
|
681
604
|
item = {
|
|
@@ -706,17 +629,14 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
706
629
|
line: +parts[1]
|
|
707
630
|
};
|
|
708
631
|
}
|
|
709
|
-
|
|
710
632
|
if (item) {
|
|
711
633
|
if (!item.func) {
|
|
712
634
|
item.func = UNKNOWN_FUNCTION;
|
|
713
635
|
}
|
|
714
|
-
|
|
715
636
|
item.context = [lines[line + 1]];
|
|
716
637
|
stack.push(item);
|
|
717
638
|
}
|
|
718
639
|
}
|
|
719
|
-
|
|
720
640
|
if (!stack.length) {
|
|
721
641
|
return; // could not parse multiline exception message as Opera stack trace
|
|
722
642
|
}
|
|
@@ -727,6 +647,7 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
727
647
|
name: ex.name
|
|
728
648
|
};
|
|
729
649
|
}
|
|
650
|
+
|
|
730
651
|
/**
|
|
731
652
|
* Adds information about the first frame to incompvare stack traces.
|
|
732
653
|
* Safari and IE require this to get compvare data on the first frame.
|
|
@@ -741,18 +662,14 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
741
662
|
* augmented.
|
|
742
663
|
* @memberof computeStackTrace
|
|
743
664
|
*/
|
|
744
|
-
|
|
745
|
-
|
|
746
665
|
function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {
|
|
747
666
|
var initial = {
|
|
748
667
|
url: url,
|
|
749
668
|
line: lineNo ? +lineNo : undefined
|
|
750
669
|
};
|
|
751
|
-
|
|
752
670
|
if (initial.url && initial.line) {
|
|
753
671
|
stackInfo.incompvare = false;
|
|
754
672
|
var stack = stackInfo.stack;
|
|
755
|
-
|
|
756
673
|
if (stack.length > 0) {
|
|
757
674
|
if (stack[0].url === initial.url) {
|
|
758
675
|
if (stack[0].line === initial.line) {
|
|
@@ -766,15 +683,14 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
766
683
|
}
|
|
767
684
|
}
|
|
768
685
|
}
|
|
769
|
-
|
|
770
686
|
stack.unshift(initial);
|
|
771
687
|
stackInfo.partial = true;
|
|
772
688
|
return true;
|
|
773
689
|
}
|
|
774
|
-
|
|
775
690
|
stackInfo.incompvare = true;
|
|
776
691
|
return false;
|
|
777
692
|
}
|
|
693
|
+
|
|
778
694
|
/**
|
|
779
695
|
* Computes stack trace information by walking the arguments.caller
|
|
780
696
|
* chain at the time the exception occurred. This will cause earlier
|
|
@@ -786,8 +702,6 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
786
702
|
* @return {StackTrace} Stack trace information.
|
|
787
703
|
* @memberof computeStackTrace
|
|
788
704
|
*/
|
|
789
|
-
|
|
790
|
-
|
|
791
705
|
function computeStackTraceByWalkingCallerChain(ex, depth) {
|
|
792
706
|
var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i;
|
|
793
707
|
var stack = [];
|
|
@@ -795,12 +709,10 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
795
709
|
var recursion = false;
|
|
796
710
|
var parts;
|
|
797
711
|
var item;
|
|
798
|
-
|
|
799
712
|
for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) {
|
|
800
713
|
if (curr === computeStackTrace || curr === report) {
|
|
801
714
|
continue;
|
|
802
715
|
}
|
|
803
|
-
|
|
804
716
|
item = {
|
|
805
717
|
args: [],
|
|
806
718
|
column: undefined,
|
|
@@ -809,30 +721,24 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
809
721
|
url: undefined
|
|
810
722
|
};
|
|
811
723
|
parts = functionName.exec(curr.toString());
|
|
812
|
-
|
|
813
724
|
if (curr.name) {
|
|
814
725
|
item.func = curr.name;
|
|
815
726
|
} else if (parts) {
|
|
816
727
|
item.func = parts[1];
|
|
817
728
|
}
|
|
818
|
-
|
|
819
729
|
if (typeof item.func === 'undefined') {
|
|
820
730
|
item.func = parts ? parts.input.substring(0, parts.input.indexOf('{')) : undefined;
|
|
821
731
|
}
|
|
822
|
-
|
|
823
732
|
if (funcs[curr + '']) {
|
|
824
733
|
recursion = true;
|
|
825
734
|
} else {
|
|
826
735
|
funcs[curr + ''] = true;
|
|
827
736
|
}
|
|
828
|
-
|
|
829
737
|
stack.push(item);
|
|
830
738
|
}
|
|
831
|
-
|
|
832
739
|
if (depth) {
|
|
833
740
|
stack.splice(0, depth);
|
|
834
741
|
}
|
|
835
|
-
|
|
836
742
|
var result = {
|
|
837
743
|
stack: stack,
|
|
838
744
|
message: ex.message,
|
|
@@ -841,24 +747,21 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
841
747
|
augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description);
|
|
842
748
|
return result;
|
|
843
749
|
}
|
|
750
|
+
|
|
844
751
|
/**
|
|
845
752
|
* Computes a stack trace for an exception.
|
|
846
753
|
* @param {Error} ex
|
|
847
754
|
* @param {(string|number)=} depth
|
|
848
755
|
* @memberof computeStackTrace
|
|
849
756
|
*/
|
|
850
|
-
|
|
851
|
-
|
|
852
757
|
function doComputeStackTrace(ex, depth) {
|
|
853
758
|
var stack;
|
|
854
759
|
var normalizedDepth = depth === undefined ? 0 : +depth;
|
|
855
|
-
|
|
856
760
|
try {
|
|
857
761
|
// This must be tried first because Opera 10 *destroys*
|
|
858
762
|
// its stacktrace property if you try to access the stack
|
|
859
763
|
// property first!!
|
|
860
764
|
stack = computeStackTraceFromStacktraceProp(ex);
|
|
861
|
-
|
|
862
765
|
if (stack) {
|
|
863
766
|
return stack;
|
|
864
767
|
}
|
|
@@ -867,10 +770,8 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
867
770
|
throw e;
|
|
868
771
|
}
|
|
869
772
|
}
|
|
870
|
-
|
|
871
773
|
try {
|
|
872
774
|
stack = computeStackTraceFromStackProp(ex);
|
|
873
|
-
|
|
874
775
|
if (stack) {
|
|
875
776
|
return stack;
|
|
876
777
|
}
|
|
@@ -879,10 +780,8 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
879
780
|
throw e;
|
|
880
781
|
}
|
|
881
782
|
}
|
|
882
|
-
|
|
883
783
|
try {
|
|
884
784
|
stack = computeStackTraceFromOperaMultiLineMessage(ex);
|
|
885
|
-
|
|
886
785
|
if (stack) {
|
|
887
786
|
return stack;
|
|
888
787
|
}
|
|
@@ -891,10 +790,8 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
891
790
|
throw e;
|
|
892
791
|
}
|
|
893
792
|
}
|
|
894
|
-
|
|
895
793
|
try {
|
|
896
794
|
stack = computeStackTraceByWalkingCallerChain(ex, normalizedDepth + 1);
|
|
897
|
-
|
|
898
795
|
if (stack) {
|
|
899
796
|
return stack;
|
|
900
797
|
}
|
|
@@ -903,50 +800,41 @@ var computeStackTrace = function computeStackTraceWrapper() {
|
|
|
903
800
|
throw e;
|
|
904
801
|
}
|
|
905
802
|
}
|
|
906
|
-
|
|
907
803
|
return {
|
|
908
804
|
message: extractMessage(ex),
|
|
909
805
|
name: ex.name,
|
|
910
806
|
stack: []
|
|
911
807
|
};
|
|
912
808
|
}
|
|
809
|
+
|
|
913
810
|
/**
|
|
914
811
|
* Logs a stacktrace starting from the previous call and working down.
|
|
915
812
|
* @param {(number|string)=} depth How many frames deep to trace.
|
|
916
813
|
* @return {StackTrace} Stack trace information.
|
|
917
814
|
* @memberof computeStackTrace
|
|
918
815
|
*/
|
|
919
|
-
|
|
920
|
-
|
|
921
816
|
function computeStackTraceOfCaller(depth) {
|
|
922
817
|
var currentDepth = (depth === undefined ? 0 : +depth) + 1; // "+ 1" because "ofCaller" should drop one frame
|
|
923
|
-
|
|
924
818
|
try {
|
|
925
819
|
throw new Error();
|
|
926
820
|
} catch (ex) {
|
|
927
821
|
return computeStackTrace(ex, currentDepth + 1);
|
|
928
822
|
}
|
|
929
823
|
}
|
|
930
|
-
|
|
931
824
|
doComputeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;
|
|
932
825
|
doComputeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;
|
|
933
826
|
doComputeStackTrace.ofCaller = computeStackTraceOfCaller;
|
|
934
827
|
return doComputeStackTrace;
|
|
935
828
|
}();
|
|
936
|
-
|
|
937
|
-
exports.computeStackTrace = computeStackTrace;
|
|
938
829
|
var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;
|
|
939
|
-
|
|
940
830
|
function extractMessage(ex) {
|
|
941
|
-
var message = ex && ex.message;
|
|
942
|
-
|
|
831
|
+
var message = ex && ex.message;
|
|
832
|
+
// console.log('message',message)
|
|
943
833
|
if (!message) {
|
|
944
834
|
return 'No error message';
|
|
945
835
|
}
|
|
946
|
-
|
|
947
836
|
if (message.error && typeof message.error.message === 'string') {
|
|
948
837
|
return message.error.message;
|
|
949
838
|
}
|
|
950
|
-
|
|
951
839
|
return message;
|
|
952
840
|
}
|