@cloudcare/browser-core 3.2.9 → 3.2.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudcare/browser-core",
3
- "version": "3.2.9",
3
+ "version": "3.2.11",
4
4
  "main": "cjs/index.js",
5
5
  "module": "esm/index.js",
6
6
  "types": "types/index.d.ts",
@@ -22,5 +22,5 @@
22
22
  "author": "dataflux",
23
23
  "license": "MIT",
24
24
  "description": "DataFlux RUM Web 端数据指标监控",
25
- "gitHead": "b613ce3dff95ad63a9c937e014f032769b1bc9e3"
25
+ "gitHead": "d1439ec0f5e5586dd59466f7aaafabf5afdcb8e3"
26
26
  }
package/src/dataMap.js CHANGED
@@ -98,12 +98,6 @@ export var dataMap = {
98
98
  trace_id: '_gc.trace_id',
99
99
  span_id: '_gc.span_id',
100
100
  resource_id: 'resource.id',
101
- resource_url: 'resource.url',
102
- resource_url_host: 'resource.url_host',
103
- resource_url_path: 'resource.url_path',
104
- resource_url_path_group: 'resource.url_path_group',
105
- resource_url_query: 'resource.url_query',
106
- resource_type: 'resource.type',
107
101
  resource_status: 'resource.status',
108
102
  resource_status_group: 'resource.status_group',
109
103
  resource_method: 'resource.method'
@@ -111,6 +105,14 @@ export var dataMap = {
111
105
  fields: {
112
106
  duration: 'resource.duration',
113
107
  resource_size: 'resource.size',
108
+ resource_url: 'resource.url',
109
+ resource_url_host: 'resource.url_host',
110
+ resource_url_path: 'resource.url_path',
111
+ resource_url_path_group: 'resource.url_path_group',
112
+ resource_url_query: 'resource.url_query',
113
+ resource_delivery_type: 'resource.delivery_type',
114
+ resource_type: 'resource.type',
115
+ resource_protocol: 'resource.protocol',
114
116
  resource_encode_size: 'resource.encoded_body_size',
115
117
  resource_decode_size: 'resource.decoded_body_size',
116
118
  resource_transfer_size: 'resource.transfer_size',
@@ -210,11 +210,11 @@ function sanitizeObjects(value) {
210
210
  try {
211
211
  // Handle events - Keep a simple implementation to avoid breaking changes
212
212
  if (value instanceof Event) {
213
- return {
214
- isTrusted: value.isTrusted
215
- }
213
+ return sanitizeEvent(value)
214
+ }
215
+ if (value instanceof RegExp) {
216
+ return `[RegExp] ${value.toString()}`
216
217
  }
217
-
218
218
  // Handle all remaining object types in a generic way
219
219
  var result = Object.prototype.toString.call(value)
220
220
  var match = result.match(/\[object (.*)\]/)
@@ -227,7 +227,16 @@ function sanitizeObjects(value) {
227
227
  }
228
228
  return '[Unserializable]'
229
229
  }
230
-
230
+ function sanitizeEvent(event) {
231
+ return {
232
+ type: event.type,
233
+ isTrusted: event.isTrusted,
234
+ currentTarget: event.currentTarget
235
+ ? sanitizeObjects(event.currentTarget)
236
+ : null,
237
+ target: event.target ? sanitizeObjects(event.target) : null
238
+ }
239
+ }
231
240
  /**
232
241
  * Checks if a toJSON function exists and tries to execute it
233
242
  *
@@ -46,7 +46,7 @@ export function createTaskQueue() {
46
46
  }
47
47
 
48
48
  return {
49
- push(task) {
49
+ push: function (task) {
50
50
  if (pendingTasks.push(task) === 1) {
51
51
  scheduleNextRun()
52
52
  }
@@ -1383,7 +1383,7 @@ export var stringSplice = function (src, k, e, sp) {
1383
1383
  return src.substring(ps, pe)
1384
1384
  }
1385
1385
  export function getStatusGroup(status) {
1386
- if (!status) return status
1386
+ if (!status) return status === 0 ? undefined : status
1387
1387
  return (
1388
1388
  String(status).substr(0, 1) + String(status).substr(1).replace(/\d*/g, 'x')
1389
1389
  )
@@ -8,10 +8,17 @@ export function computeStackTrace(ex) {
8
8
  var stack = []
9
9
 
10
10
  var stackProperty = tryToGetString(ex, 'stack')
11
+ var exString = String(ex)
12
+ if (stackProperty && stackProperty.startsWith(exString)) {
13
+ stackProperty = stackProperty.slice(exString.length)
14
+ }
11
15
  if (stackProperty) {
12
- each(stackProperty.split('\n'), function(line) {
16
+ each(stackProperty.split('\n'), function (line) {
13
17
  var stackFrame =
14
- parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line)
18
+ parseChromeLine(line) ||
19
+ parseChromeAnonymousLine(line) ||
20
+ parseWinLine(line) ||
21
+ parseGeckoLine(line)
15
22
  if (stackFrame) {
16
23
  if (!stackFrame.func && stackFrame.line) {
17
24
  stackFrame.func = UNKNOWN_FUNCTION
@@ -24,15 +31,26 @@ export function computeStackTrace(ex) {
24
31
  return {
25
32
  message: tryToGetString(ex, 'message'),
26
33
  name: tryToGetString(ex, 'name'),
27
- stack: stack,
34
+ stack: stack
28
35
  }
29
36
  }
30
- var fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)'
37
+ var fileUrl =
38
+ '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)'
31
39
  var filePosition = '(?::(\\d+))'
32
- var CHROME_LINE_RE = new RegExp('^\\s*at (.*?) ?\\('+ fileUrl + filePosition + '?' + filePosition + '?\\)?\\s*$', 'i')
33
- var CHROME_EVAL_RE = new RegExp('\\((\\S*)' + filePosition + filePosition + '\\)')
34
-
35
- function parseChromeLine(line){
40
+ var CHROME_LINE_RE = new RegExp(
41
+ '^\\s*at (.*?) ?\\(' +
42
+ fileUrl +
43
+ filePosition +
44
+ '?' +
45
+ filePosition +
46
+ '?\\)?\\s*$',
47
+ 'i'
48
+ )
49
+ var CHROME_EVAL_RE = new RegExp(
50
+ '\\((\\S*)' + filePosition + filePosition + '\\)'
51
+ )
52
+
53
+ function parseChromeLine(line) {
36
54
  var parts = CHROME_LINE_RE.exec(line)
37
55
 
38
56
  if (!parts) {
@@ -55,13 +73,16 @@ function parseChromeLine(line){
55
73
  column: parts[4] ? +parts[4] : undefined,
56
74
  func: parts[1] || UNKNOWN_FUNCTION,
57
75
  line: parts[3] ? +parts[3] : undefined,
58
- url: !isNative ? parts[2] : undefined,
76
+ url: !isNative ? parts[2] : undefined
59
77
  }
60
78
  }
61
79
 
62
- var CHROME_ANONYMOUS_FUNCTION_RE = new RegExp('^\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\s*$', 'i')
80
+ var CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(
81
+ '^\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\s*$',
82
+ 'i'
83
+ )
63
84
 
64
- function parseChromeAnonymousLine(line){
85
+ function parseChromeAnonymousLine(line) {
65
86
  var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)
66
87
 
67
88
  if (!parts) {
@@ -73,7 +94,7 @@ function parseChromeAnonymousLine(line){
73
94
  column: parts[3] ? +parts[3] : undefined,
74
95
  func: UNKNOWN_FUNCTION,
75
96
  line: parts[2] ? +parts[2] : undefined,
76
- url: parts[1],
97
+ url: parts[1]
77
98
  }
78
99
  }
79
100
 
@@ -91,7 +112,7 @@ function parseWinLine(line) {
91
112
  column: parts[4] ? +parts[4] : undefined,
92
113
  func: parts[1] || UNKNOWN_FUNCTION,
93
114
  line: +parts[3],
94
- url: parts[2],
115
+ url: parts[2]
95
116
  }
96
117
  }
97
118
 
@@ -120,7 +141,7 @@ function parseGeckoLine(line) {
120
141
  column: parts[5] ? +parts[5] : undefined,
121
142
  func: parts[1] || UNKNOWN_FUNCTION,
122
143
  line: parts[4] ? +parts[4] : undefined,
123
- url: parts[3],
144
+ url: parts[3]
124
145
  }
125
146
  }
126
147