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