@cloudcare/rum-uniapp 2.1.18 → 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.
Files changed (105) hide show
  1. package/README.md +42 -34
  2. package/cjs/boot/buildEnv.js +3 -4
  3. package/cjs/boot/rum.entry.js +11 -36
  4. package/cjs/boot/rum.js +2 -25
  5. package/cjs/core/baseInfo.js +6 -25
  6. package/cjs/core/boundedBuffer.js +1 -7
  7. package/cjs/core/configuration.js +15 -27
  8. package/cjs/core/contextManager.js +5 -17
  9. package/cjs/core/dataMap.js +5 -10
  10. package/cjs/core/downloadProxy.js +4 -26
  11. package/cjs/core/errorCollection.js +5 -35
  12. package/cjs/core/errorFilter.js +0 -8
  13. package/cjs/core/errorTools.js +2 -10
  14. package/cjs/core/heavyCustomerDataWarning.js +3 -9
  15. package/cjs/core/lifeCycle.js +8 -18
  16. package/cjs/core/observable.js +7 -13
  17. package/cjs/core/sdk.js +4 -13
  18. package/cjs/core/sessionManagement.js +8 -17
  19. package/cjs/core/transport.js +6 -53
  20. package/cjs/core/user.js +2 -7
  21. package/cjs/core/xhrProxy.js +4 -26
  22. package/cjs/helper/byteUtils.js +6 -12
  23. package/cjs/helper/commonContext.js +2 -3
  24. package/cjs/helper/enums.js +17 -28
  25. package/cjs/helper/jsonStringify.js +5 -12
  26. package/cjs/helper/limitModification.js +3 -21
  27. package/cjs/helper/tracekit.js +33 -145
  28. package/cjs/helper/utils.js +92 -306
  29. package/cjs/index.js +0 -1
  30. package/cjs/rumEventsCollection/action/actionCollection.js +0 -9
  31. package/cjs/rumEventsCollection/action/trackActions.js +6 -28
  32. package/cjs/rumEventsCollection/app/appCollection.js +0 -6
  33. package/cjs/rumEventsCollection/app/index.js +14 -26
  34. package/cjs/rumEventsCollection/assembly.js +0 -14
  35. package/cjs/rumEventsCollection/error/errorCollection.js +1 -16
  36. package/cjs/rumEventsCollection/internalContext.js +0 -2
  37. package/cjs/rumEventsCollection/page/index.js +5 -43
  38. package/cjs/rumEventsCollection/page/viewCollection.js +0 -8
  39. package/cjs/rumEventsCollection/parentContexts.js +3 -20
  40. package/cjs/rumEventsCollection/performanceCollection.js +0 -4
  41. package/cjs/rumEventsCollection/requestCollection.js +1 -14
  42. package/cjs/rumEventsCollection/resource/resourceCollection.js +0 -11
  43. package/cjs/rumEventsCollection/resource/resourceUtils.js +50 -46
  44. package/cjs/rumEventsCollection/setDataCollection.js +0 -16
  45. package/cjs/rumEventsCollection/tracing/ddtraceTracer.js +0 -6
  46. package/cjs/rumEventsCollection/tracing/jaegerTracer.js +3 -9
  47. package/cjs/rumEventsCollection/tracing/skywalkingTracer.js +3 -10
  48. package/cjs/rumEventsCollection/tracing/tracer.js +1 -25
  49. package/cjs/rumEventsCollection/tracing/w3cTraceParentTracer.js +1 -6
  50. package/cjs/rumEventsCollection/tracing/zipkinMultiTracer.js +3 -10
  51. package/cjs/rumEventsCollection/tracing/zipkinSingleTracer.js +1 -6
  52. package/cjs/rumEventsCollection/trackEventCounts.js +0 -8
  53. package/cjs/rumEventsCollection/trackPageActiveites.js +10 -33
  54. package/cjs/rumEventsCollection/transport/batch.js +0 -9
  55. package/esm/boot/buildEnv.js +1 -1
  56. package/esm/boot/rum.entry.js +8 -20
  57. package/esm/boot/rum.js +0 -4
  58. package/esm/core/baseInfo.js +0 -11
  59. package/esm/core/boundedBuffer.js +0 -3
  60. package/esm/core/configuration.js +13 -21
  61. package/esm/core/contextManager.js +3 -8
  62. package/esm/core/dataMap.js +2 -2
  63. package/esm/core/downloadProxy.js +2 -17
  64. package/esm/core/errorCollection.js +2 -15
  65. package/esm/core/errorFilter.js +0 -5
  66. package/esm/core/errorTools.js +0 -3
  67. package/esm/core/heavyCustomerDataWarning.js +3 -3
  68. package/esm/core/lifeCycle.js +0 -5
  69. package/esm/core/observable.js +0 -3
  70. package/esm/core/sdk.js +1 -6
  71. package/esm/core/sessionManagement.js +0 -3
  72. package/esm/core/transport.js +4 -38
  73. package/esm/core/user.js +2 -4
  74. package/esm/core/xhrProxy.js +2 -17
  75. package/esm/helper/byteUtils.js +4 -7
  76. package/esm/helper/commonContext.js +2 -2
  77. package/esm/helper/jsonStringify.js +4 -7
  78. package/esm/helper/limitModification.js +1 -11
  79. package/esm/helper/tracekit.js +30 -130
  80. package/esm/helper/utils.js +27 -125
  81. package/esm/rumEventsCollection/action/actionCollection.js +0 -4
  82. package/esm/rumEventsCollection/action/trackActions.js +6 -20
  83. package/esm/rumEventsCollection/app/appCollection.js +0 -1
  84. package/esm/rumEventsCollection/app/index.js +12 -18
  85. package/esm/rumEventsCollection/assembly.js +0 -6
  86. package/esm/rumEventsCollection/error/errorCollection.js +0 -7
  87. package/esm/rumEventsCollection/internalContext.js +0 -1
  88. package/esm/rumEventsCollection/page/index.js +5 -37
  89. package/esm/rumEventsCollection/page/viewCollection.js +0 -3
  90. package/esm/rumEventsCollection/parentContexts.js +0 -10
  91. package/esm/rumEventsCollection/requestCollection.js +0 -4
  92. package/esm/rumEventsCollection/resource/resourceCollection.js +0 -5
  93. package/esm/rumEventsCollection/resource/resourceUtils.js +48 -39
  94. package/esm/rumEventsCollection/setDataCollection.js +0 -13
  95. package/esm/rumEventsCollection/tracing/ddtraceTracer.js +0 -4
  96. package/esm/rumEventsCollection/tracing/jaegerTracer.js +3 -7
  97. package/esm/rumEventsCollection/tracing/skywalkingTracer.js +5 -9
  98. package/esm/rumEventsCollection/tracing/tracer.js +0 -14
  99. package/esm/rumEventsCollection/tracing/w3cTraceParentTracer.js +1 -4
  100. package/esm/rumEventsCollection/tracing/zipkinMultiTracer.js +3 -8
  101. package/esm/rumEventsCollection/tracing/zipkinSingleTracer.js +1 -4
  102. package/esm/rumEventsCollection/trackEventCounts.js +0 -4
  103. package/esm/rumEventsCollection/trackPageActiveites.js +9 -22
  104. package/esm/rumEventsCollection/transport/batch.js +0 -5
  105. package/package.json +6 -3
@@ -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
- promise = _ref.promise;
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
- level = _ref2$level === void 0 ? -1 : _ref2$level;
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
- } // tslint:disable-next-line max-line-length
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
- var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; // Used to additionally parse URL/line/column from eval frames
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
- var opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i; // tslint:disable-next-line max-line-length
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; // console.log('message',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
  }