@cloudcare/browser-core 3.0.23 → 3.1.0

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 (275) hide show
  1. package/cjs/browser/addEventListener.js +11 -14
  2. package/cjs/browser/addEventListener.js.map +1 -0
  3. package/cjs/browser/cookie.js +3 -14
  4. package/cjs/browser/cookie.js.map +1 -0
  5. package/cjs/browser/fetchObservable.js +8 -23
  6. package/cjs/browser/fetchObservable.js.map +1 -0
  7. package/cjs/browser/htmlDomUtils.js +3 -9
  8. package/cjs/browser/htmlDomUtils.js.map +1 -0
  9. package/cjs/browser/pageExitObservable.js +3 -9
  10. package/cjs/browser/pageExitObservable.js.map +1 -0
  11. package/cjs/browser/runOnReadyState.js +2 -4
  12. package/cjs/browser/runOnReadyState.js.map +1 -0
  13. package/cjs/browser/scroll.js +32 -0
  14. package/cjs/browser/scroll.js.map +1 -0
  15. package/cjs/browser/xhrObservable.js +2 -21
  16. package/cjs/browser/xhrObservable.js.map +1 -0
  17. package/cjs/configuration/configuration.js +9 -20
  18. package/cjs/configuration/configuration.js.map +1 -0
  19. package/cjs/configuration/transportConfiguration.js +6 -20
  20. package/cjs/configuration/transportConfiguration.js.map +1 -0
  21. package/cjs/console/consoleObservable.js +7 -21
  22. package/cjs/console/consoleObservable.js.map +1 -0
  23. package/cjs/dataMap.js +24 -10
  24. package/cjs/dataMap.js.map +1 -0
  25. package/cjs/error/trackRuntimeError.js +3 -7
  26. package/cjs/error/trackRuntimeError.js.map +1 -0
  27. package/cjs/helper/boundedBuffer.js +2 -6
  28. package/cjs/helper/boundedBuffer.js.map +1 -0
  29. package/cjs/helper/byteUtils.js +6 -16
  30. package/cjs/helper/byteUtils.js.map +1 -0
  31. package/cjs/helper/catchUserErrors.js +2 -4
  32. package/cjs/helper/catchUserErrors.js.map +1 -0
  33. package/cjs/helper/contextHistory.js +21 -37
  34. package/cjs/helper/contextHistory.js.map +1 -0
  35. package/cjs/helper/createEventRateLimiter.js +2 -10
  36. package/cjs/helper/createEventRateLimiter.js.map +1 -0
  37. package/cjs/helper/deviceInfo.js +10 -64
  38. package/cjs/helper/deviceInfo.js.map +1 -0
  39. package/cjs/helper/display.js +2 -5
  40. package/cjs/helper/display.js.map +1 -0
  41. package/cjs/helper/enums.js +8 -2
  42. package/cjs/helper/enums.js.map +1 -0
  43. package/cjs/helper/errorTools.js +38 -40
  44. package/cjs/helper/errorTools.js.map +1 -0
  45. package/cjs/helper/eventEmitter.js +2 -6
  46. package/cjs/helper/eventEmitter.js.map +1 -0
  47. package/cjs/helper/getZoneJsOriginalValue.js +2 -5
  48. package/cjs/helper/getZoneJsOriginalValue.js.map +1 -0
  49. package/cjs/helper/instrumentMethod.js +11 -21
  50. package/cjs/helper/instrumentMethod.js.map +1 -0
  51. package/cjs/helper/lifeCycle.js +2 -9
  52. package/cjs/helper/lifeCycle.js.map +1 -0
  53. package/cjs/helper/limitModification.js +4 -22
  54. package/cjs/helper/limitModification.js.map +1 -0
  55. package/cjs/helper/mobileUtil.js +2 -20
  56. package/cjs/helper/mobileUtil.js.map +1 -0
  57. package/cjs/helper/monitor.js +50 -0
  58. package/cjs/helper/monitor.js.map +1 -0
  59. package/cjs/helper/observable.js +2 -9
  60. package/cjs/helper/observable.js.map +1 -0
  61. package/cjs/helper/readBytesFromStream.js +8 -16
  62. package/cjs/helper/readBytesFromStream.js.map +1 -0
  63. package/cjs/helper/sanitize.js +38 -61
  64. package/cjs/helper/sanitize.js.map +1 -0
  65. package/cjs/helper/serialisation/contextManager.js +5 -15
  66. package/cjs/helper/serialisation/contextManager.js.map +1 -0
  67. package/cjs/helper/serialisation/heavyCustomerDataWarning.js +2 -7
  68. package/cjs/helper/serialisation/heavyCustomerDataWarning.js.map +1 -0
  69. package/cjs/helper/serialisation/jsonStringify.js +6 -12
  70. package/cjs/helper/serialisation/jsonStringify.js.map +1 -0
  71. package/cjs/helper/serialisation/rowData.js +3 -10
  72. package/cjs/helper/serialisation/rowData.js.map +1 -0
  73. package/cjs/helper/timer.js +5 -9
  74. package/cjs/helper/timer.js.map +1 -0
  75. package/cjs/helper/tools.js +58 -463
  76. package/cjs/helper/tools.js.map +1 -0
  77. package/cjs/helper/urlPolyfill.js +5 -18
  78. package/cjs/helper/urlPolyfill.js.map +1 -0
  79. package/cjs/index.js +35 -93
  80. package/cjs/index.js.map +1 -0
  81. package/cjs/init.js +24 -36
  82. package/cjs/init.js.map +1 -0
  83. package/cjs/report/reportObservable.js +8 -26
  84. package/cjs/report/reportObservable.js.map +1 -0
  85. package/cjs/session/sessionConstants.js +2 -3
  86. package/cjs/session/sessionConstants.js.map +1 -0
  87. package/cjs/session/sessionCookieStore.js +11 -46
  88. package/cjs/session/sessionCookieStore.js.map +1 -0
  89. package/cjs/session/sessionManagement.js +2 -19
  90. package/cjs/session/sessionManagement.js.map +1 -0
  91. package/cjs/session/sessionStore.js +3 -28
  92. package/cjs/session/sessionStore.js.map +1 -0
  93. package/cjs/synthetics/syntheticsWorkerValues.js +2 -6
  94. package/cjs/synthetics/syntheticsWorkerValues.js.map +1 -0
  95. package/cjs/synthetics/usr.js +2 -8
  96. package/cjs/synthetics/usr.js.map +1 -0
  97. package/cjs/telemetry/telemetry.js +125 -0
  98. package/cjs/telemetry/telemetry.js.map +1 -0
  99. package/cjs/telemetry/types.js +17 -0
  100. package/cjs/telemetry/types.js.map +1 -0
  101. package/cjs/tracekit/computeStackTrace.js +4 -34
  102. package/cjs/tracekit/computeStackTrace.js.map +1 -0
  103. package/cjs/tracekit/index.js +2 -3
  104. package/cjs/tracekit/index.js.map +1 -0
  105. package/cjs/tracekit/tracekit.js +3 -18
  106. package/cjs/tracekit/tracekit.js.map +1 -0
  107. package/cjs/transport/batch.js +7 -56
  108. package/cjs/transport/batch.js.map +1 -0
  109. package/cjs/transport/eventBridge.js +2 -7
  110. package/cjs/transport/eventBridge.js.map +1 -0
  111. package/cjs/transport/flushController.js +8 -21
  112. package/cjs/transport/flushController.js.map +1 -0
  113. package/cjs/transport/httpRequest.js +8 -20
  114. package/cjs/transport/httpRequest.js.map +1 -0
  115. package/cjs/transport/index.js +2 -6
  116. package/cjs/transport/index.js.map +1 -0
  117. package/cjs/transport/sendWithRetryStrategy.js +4 -23
  118. package/cjs/transport/sendWithRetryStrategy.js.map +1 -0
  119. package/cjs/transport/startBatchWithReplica.js +2 -7
  120. package/cjs/transport/startBatchWithReplica.js.map +1 -0
  121. package/cjs/user/index.js +2 -3
  122. package/cjs/user/index.js.map +1 -0
  123. package/cjs/user/user.js +3 -8
  124. package/cjs/user/user.js.map +1 -0
  125. package/cjs/worker.js +2 -2
  126. package/cjs/worker.js.map +1 -0
  127. package/esm/browser/addEventListener.js +11 -10
  128. package/esm/browser/addEventListener.js.map +1 -0
  129. package/esm/browser/cookie.js +3 -6
  130. package/esm/browser/cookie.js.map +1 -0
  131. package/esm/browser/fetchObservable.js +8 -17
  132. package/esm/browser/fetchObservable.js.map +1 -0
  133. package/esm/browser/htmlDomUtils.js +3 -2
  134. package/esm/browser/htmlDomUtils.js.map +1 -0
  135. package/esm/browser/pageExitObservable.js +3 -2
  136. package/esm/browser/pageExitObservable.js.map +1 -0
  137. package/esm/browser/runOnReadyState.js +2 -1
  138. package/esm/browser/runOnReadyState.js.map +1 -0
  139. package/esm/browser/scroll.js +25 -0
  140. package/esm/browser/scroll.js.map +1 -0
  141. package/esm/browser/xhrObservable.js +2 -14
  142. package/esm/browser/xhrObservable.js.map +1 -0
  143. package/esm/configuration/configuration.js +9 -9
  144. package/esm/configuration/configuration.js.map +1 -0
  145. package/esm/configuration/transportConfiguration.js +6 -17
  146. package/esm/configuration/transportConfiguration.js.map +1 -0
  147. package/esm/console/consoleObservable.js +7 -12
  148. package/esm/console/consoleObservable.js.map +1 -0
  149. package/esm/dataMap.js +24 -8
  150. package/esm/dataMap.js.map +1 -0
  151. package/esm/error/trackRuntimeError.js +4 -3
  152. package/esm/error/trackRuntimeError.js.map +1 -0
  153. package/esm/helper/boundedBuffer.js +2 -4
  154. package/esm/helper/boundedBuffer.js.map +1 -0
  155. package/esm/helper/byteUtils.js +6 -13
  156. package/esm/helper/byteUtils.js.map +1 -0
  157. package/esm/helper/catchUserErrors.js +2 -2
  158. package/esm/helper/catchUserErrors.js.map +1 -0
  159. package/esm/helper/contextHistory.js +21 -33
  160. package/esm/helper/contextHistory.js.map +1 -0
  161. package/esm/helper/createEventRateLimiter.js +2 -6
  162. package/esm/helper/createEventRateLimiter.js.map +1 -0
  163. package/esm/helper/deviceInfo.js +10 -62
  164. package/esm/helper/deviceInfo.js.map +1 -0
  165. package/esm/helper/display.js +2 -3
  166. package/esm/helper/display.js.map +1 -0
  167. package/esm/helper/enums.js +6 -1
  168. package/esm/helper/enums.js.map +1 -0
  169. package/esm/helper/errorTools.js +36 -28
  170. package/esm/helper/errorTools.js.map +1 -0
  171. package/esm/helper/eventEmitter.js +2 -5
  172. package/esm/helper/eventEmitter.js.map +1 -0
  173. package/esm/helper/getZoneJsOriginalValue.js +2 -4
  174. package/esm/helper/getZoneJsOriginalValue.js.map +1 -0
  175. package/esm/helper/instrumentMethod.js +11 -16
  176. package/esm/helper/instrumentMethod.js.map +1 -0
  177. package/esm/helper/lifeCycle.js +2 -5
  178. package/esm/helper/lifeCycle.js.map +1 -0
  179. package/esm/helper/limitModification.js +5 -20
  180. package/esm/helper/limitModification.js.map +1 -0
  181. package/esm/helper/mobileUtil.js +2 -16
  182. package/esm/helper/mobileUtil.js.map +1 -0
  183. package/esm/helper/monitor.js +39 -0
  184. package/esm/helper/monitor.js.map +1 -0
  185. package/esm/helper/observable.js +2 -7
  186. package/esm/helper/observable.js.map +1 -0
  187. package/esm/helper/readBytesFromStream.js +8 -15
  188. package/esm/helper/readBytesFromStream.js.map +1 -0
  189. package/esm/helper/sanitize.js +40 -57
  190. package/esm/helper/sanitize.js.map +1 -0
  191. package/esm/helper/serialisation/contextManager.js +5 -9
  192. package/esm/helper/serialisation/contextManager.js.map +1 -0
  193. package/esm/helper/serialisation/heavyCustomerDataWarning.js +5 -4
  194. package/esm/helper/serialisation/heavyCustomerDataWarning.js.map +1 -0
  195. package/esm/helper/serialisation/jsonStringify.js +7 -10
  196. package/esm/helper/serialisation/jsonStringify.js.map +1 -0
  197. package/esm/helper/serialisation/rowData.js +3 -4
  198. package/esm/helper/serialisation/rowData.js.map +1 -0
  199. package/esm/helper/timer.js +5 -3
  200. package/esm/helper/timer.js.map +1 -0
  201. package/esm/helper/tools.js +58 -273
  202. package/esm/helper/tools.js.map +1 -0
  203. package/esm/helper/urlPolyfill.js +5 -9
  204. package/esm/helper/urlPolyfill.js.map +1 -0
  205. package/esm/index.js +5 -1
  206. package/esm/index.js.map +1 -0
  207. package/esm/init.js +25 -31
  208. package/esm/init.js.map +1 -0
  209. package/esm/report/reportObservable.js +8 -19
  210. package/esm/report/reportObservable.js.map +1 -0
  211. package/esm/session/sessionConstants.js +2 -1
  212. package/esm/session/sessionConstants.js.map +1 -0
  213. package/esm/session/sessionCookieStore.js +11 -38
  214. package/esm/session/sessionCookieStore.js.map +1 -0
  215. package/esm/session/sessionManagement.js +2 -8
  216. package/esm/session/sessionManagement.js.map +1 -0
  217. package/esm/session/sessionStore.js +4 -22
  218. package/esm/session/sessionStore.js.map +1 -0
  219. package/esm/synthetics/syntheticsWorkerValues.js +2 -1
  220. package/esm/synthetics/syntheticsWorkerValues.js.map +1 -0
  221. package/esm/synthetics/usr.js +2 -3
  222. package/esm/synthetics/usr.js.map +1 -0
  223. package/esm/telemetry/telemetry.js +111 -0
  224. package/esm/telemetry/telemetry.js.map +1 -0
  225. package/esm/telemetry/types.js +9 -0
  226. package/esm/telemetry/types.js.map +1 -0
  227. package/esm/tracekit/computeStackTrace.js +4 -31
  228. package/esm/tracekit/computeStackTrace.js.map +1 -0
  229. package/esm/tracekit/index.js +2 -1
  230. package/esm/tracekit/index.js.map +1 -0
  231. package/esm/tracekit/tracekit.js +5 -14
  232. package/esm/tracekit/tracekit.js.map +1 -0
  233. package/esm/transport/batch.js +9 -47
  234. package/esm/transport/batch.js.map +1 -0
  235. package/esm/transport/eventBridge.js +2 -5
  236. package/esm/transport/eventBridge.js.map +1 -0
  237. package/esm/transport/flushController.js +11 -20
  238. package/esm/transport/flushController.js.map +1 -0
  239. package/esm/transport/httpRequest.js +8 -18
  240. package/esm/transport/httpRequest.js.map +1 -0
  241. package/esm/transport/index.js +2 -1
  242. package/esm/transport/index.js.map +1 -0
  243. package/esm/transport/sendWithRetryStrategy.js +4 -17
  244. package/esm/transport/sendWithRetryStrategy.js.map +1 -0
  245. package/esm/transport/startBatchWithReplica.js +2 -3
  246. package/esm/transport/startBatchWithReplica.js.map +1 -0
  247. package/esm/user/index.js.map +1 -0
  248. package/esm/user/user.js +4 -5
  249. package/esm/user/user.js.map +1 -0
  250. package/esm/worker.js.map +1 -0
  251. package/package.json +2 -2
  252. package/src/browser/addEventListener.js +8 -7
  253. package/src/browser/fetchObservable.js +12 -3
  254. package/src/browser/scroll.js +25 -0
  255. package/src/configuration/configuration.js +16 -0
  256. package/src/configuration/transportConfiguration.js +2 -2
  257. package/src/console/consoleObservable.js +4 -2
  258. package/src/dataMap.js +17 -3
  259. package/src/error/trackRuntimeError.js +2 -2
  260. package/src/helper/contextHistory.js +3 -3
  261. package/src/helper/enums.js +4 -0
  262. package/src/helper/errorTools.js +55 -24
  263. package/src/helper/instrumentMethod.js +5 -2
  264. package/src/helper/monitor.js +44 -0
  265. package/src/helper/observable.js +10 -8
  266. package/src/helper/readBytesFromStream.js +5 -5
  267. package/src/helper/timer.js +3 -3
  268. package/src/helper/tools.js +2 -17
  269. package/src/index.js +4 -0
  270. package/src/init.js +19 -21
  271. package/src/report/reportObservable.js +6 -5
  272. package/src/telemetry/telemetry.js +164 -0
  273. package/src/telemetry/types.js +9 -0
  274. package/src/transport/batch.js +4 -4
  275. package/src/transport/httpRequest.js +5 -4
@@ -1,29 +1,24 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
-
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
2
  import { each } from '../helper/tools';
4
3
  var UNKNOWN_FUNCTION = '?';
4
+
5
5
  /**
6
6
  * Computes a stack trace for an exception.
7
7
  */
8
-
9
8
  export function computeStackTrace(ex) {
10
9
  var stack = [];
11
10
  var stackProperty = tryToGetString(ex, 'stack');
12
-
13
11
  if (stackProperty) {
14
12
  each(stackProperty.split('\n'), function (line) {
15
13
  var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);
16
-
17
14
  if (stackFrame) {
18
15
  if (!stackFrame.func && stackFrame.line) {
19
16
  stackFrame.func = UNKNOWN_FUNCTION;
20
17
  }
21
-
22
18
  stack.push(stackFrame);
23
19
  }
24
20
  });
25
21
  }
26
-
27
22
  return {
28
23
  message: tryToGetString(ex, 'message'),
29
24
  name: tryToGetString(ex, 'name'),
@@ -34,26 +29,18 @@ var fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonym
34
29
  var filePosition = '(?::(\\d+))';
35
30
  var CHROME_LINE_RE = new RegExp('^\\s*at (.*?) ?\\(' + fileUrl + filePosition + '?' + filePosition + '?\\)?\\s*$', 'i');
36
31
  var CHROME_EVAL_RE = new RegExp('\\((\\S*)' + filePosition + filePosition + '\\)');
37
-
38
32
  function parseChromeLine(line) {
39
33
  var parts = CHROME_LINE_RE.exec(line);
40
-
41
34
  if (!parts) {
42
35
  return;
43
36
  }
44
-
45
37
  var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line
46
-
47
38
  var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line
48
-
49
39
  var submatch = CHROME_EVAL_RE.exec(parts[2]);
50
-
51
40
  if (isEval && submatch) {
52
41
  // throw out eval line/column and use top-most line/column number
53
42
  parts[2] = submatch[1]; // url
54
-
55
43
  parts[3] = submatch[2]; // line
56
-
57
44
  parts[4] = submatch[3]; // column
58
45
  }
59
46
 
@@ -65,16 +52,12 @@ function parseChromeLine(line) {
65
52
  url: !isNative ? parts[2] : undefined
66
53
  };
67
54
  }
68
-
69
55
  var CHROME_ANONYMOUS_FUNCTION_RE = new RegExp('^\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\s*$', 'i');
70
-
71
56
  function parseChromeAnonymousLine(line) {
72
57
  var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);
73
-
74
58
  if (!parts) {
75
59
  return;
76
60
  }
77
-
78
61
  return {
79
62
  args: [],
80
63
  column: parts[3] ? +parts[3] : undefined,
@@ -83,16 +66,12 @@ function parseChromeAnonymousLine(line) {
83
66
  url: parts[1]
84
67
  };
85
68
  }
86
-
87
69
  var WINJS_LINE_RE = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
88
-
89
70
  function parseWinLine(line) {
90
71
  var parts = WINJS_LINE_RE.exec(line);
91
-
92
72
  if (!parts) {
93
73
  return;
94
74
  }
95
-
96
75
  return {
97
76
  args: [],
98
77
  column: parts[4] ? +parts[4] : undefined,
@@ -101,20 +80,15 @@ function parseWinLine(line) {
101
80
  url: parts[2]
102
81
  };
103
82
  }
104
-
105
83
  var GECKO_LINE_RE = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i;
106
84
  var GECKO_EVAL_RE = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
107
-
108
85
  function parseGeckoLine(line) {
109
86
  var parts = GECKO_LINE_RE.exec(line);
110
-
111
87
  if (!parts) {
112
88
  return;
113
89
  }
114
-
115
90
  var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;
116
91
  var submatch = GECKO_EVAL_RE.exec(parts[3]);
117
-
118
92
  if (isEval && submatch) {
119
93
  // throw out eval line/column and use top-most line number
120
94
  parts[3] = submatch[1];
@@ -130,12 +104,11 @@ function parseGeckoLine(line) {
130
104
  url: parts[3]
131
105
  };
132
106
  }
133
-
134
107
  function tryToGetString(candidate, property) {
135
108
  if (_typeof(candidate) !== 'object' || !candidate || !(property in candidate)) {
136
109
  return undefined;
137
110
  }
138
-
139
111
  var value = candidate[property];
140
112
  return typeof value === 'string' ? value : undefined;
141
- }
113
+ }
114
+ //# sourceMappingURL=computeStackTrace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeStackTrace.js","names":["each","UNKNOWN_FUNCTION","computeStackTrace","ex","stack","stackProperty","tryToGetString","split","line","stackFrame","parseChromeLine","parseChromeAnonymousLine","parseWinLine","parseGeckoLine","func","push","message","name","fileUrl","filePosition","CHROME_LINE_RE","RegExp","CHROME_EVAL_RE","parts","exec","isNative","indexOf","isEval","submatch","args","column","undefined","url","CHROME_ANONYMOUS_FUNCTION_RE","WINJS_LINE_RE","GECKO_LINE_RE","GECKO_EVAL_RE","candidate","property","_typeof","value"],"sources":["../../src/tracekit/computeStackTrace.js"],"sourcesContent":["import { each } from '../helper/tools'\nvar UNKNOWN_FUNCTION = '?'\n\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n var stack = []\n\n var stackProperty = tryToGetString(ex, 'stack')\n if (stackProperty) {\n each(stackProperty.split('\\n'), function(line) {\n var stackFrame =\n parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line)\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION\n }\n stack.push(stackFrame)\n }\n })\n }\n\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack,\n }\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\\\w+\\\\.|\\\\/).*?)'\nvar filePosition = '(?::(\\\\d+))'\nvar CHROME_LINE_RE = new RegExp('^\\\\s*at (.*?) ?\\\\('+ fileUrl + filePosition + '?' + filePosition + '?\\\\)?\\\\s*$', 'i')\nvar CHROME_EVAL_RE = new RegExp('\\\\((\\\\S*)' + filePosition + filePosition + '\\\\)')\n\nfunction parseChromeLine(line){\n var parts = CHROME_LINE_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n var isNative = parts[2] && parts[2].indexOf('native') === 0 // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line\n var submatch = CHROME_EVAL_RE.exec(parts[2])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1] // url\n parts[3] = submatch[2] // line\n parts[4] = submatch[3] // column\n }\n\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n }\n}\n\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp('^\\\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\\\s*$', 'i')\n\nfunction parseChromeAnonymousLine(line){\n var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n }\n}\n\nvar WINJS_LINE_RE =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nfunction parseWinLine(line) {\n var parts = WINJS_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n }\n}\n\nvar GECKO_LINE_RE =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i\n\nfunction parseGeckoLine(line) {\n var parts = GECKO_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n var submatch = GECKO_EVAL_RE.exec(parts[3])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1]\n parts[4] = submatch[2]\n parts[5] = undefined // no column when eval\n }\n\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n }\n}\n\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined\n }\n var value = candidate[property]\n return typeof value === 'string' ? value : undefined\n}\n"],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export { computeStackTrace } from './computeStackTrace';
2
- export { startUnhandledErrorCollection } from './tracekit';
2
+ export { startUnhandledErrorCollection } from './tracekit';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["computeStackTrace","startUnhandledErrorCollection"],"sources":["../../src/tracekit/index.js"],"sourcesContent":["export { computeStackTrace } from './computeStackTrace'\nexport { startUnhandledErrorCollection } from './tracekit'\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,6BAA6B,QAAQ,YAAY"}
@@ -1,7 +1,8 @@
1
1
  import { instrumentMethodAndCallOriginal } from '../helper/instrumentMethod';
2
2
  import { isNullUndefinedDefaultValue } from '../helper/tools';
3
- import { computeStackTrace } from './computeStackTrace'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types
3
+ import { computeStackTrace } from './computeStackTrace';
4
4
 
5
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types
5
6
  var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\s\S]*)$/;
6
7
  /**
7
8
  * Cross-browser collection of unhandled errors
@@ -37,26 +38,22 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran
37
38
 
38
39
  export function startUnhandledErrorCollection(callback) {
39
40
  var _instrumentOnError = instrumentOnError(callback);
40
-
41
41
  var _instrumentUnhandledRejection = instrumentUnhandledRejection(callback);
42
-
43
42
  return {
44
43
  stop: function stop() {
45
44
  _instrumentOnError.stop();
46
-
47
45
  _instrumentUnhandledRejection.stop();
48
46
  }
49
47
  };
50
48
  }
49
+
51
50
  /**
52
51
  * Install a global onerror handler
53
52
  */
54
-
55
53
  function instrumentOnError(callback) {
56
54
  return instrumentMethodAndCallOriginal(window, 'onerror', {
57
55
  before: function before(messageObj, url, line, column, errorObj) {
58
56
  var stackTrace;
59
-
60
57
  if (errorObj instanceof Error) {
61
58
  stackTrace = computeStackTrace(errorObj);
62
59
  } else {
@@ -72,25 +69,20 @@ function instrumentOnError(callback) {
72
69
  stack: [location]
73
70
  };
74
71
  }
75
-
76
72
  callback(stackTrace, isNullUndefinedDefaultValue(errorObj, messageObj));
77
73
  }
78
74
  });
79
75
  }
80
-
81
76
  function tryToParseMessage(messageObj) {
82
77
  var name;
83
78
  var message;
84
-
85
79
  if ({}.toString.call(messageObj) === '[object String]') {
86
80
  var groups = ERROR_TYPES_RE.exec(messageObj);
87
-
88
81
  if (groups) {
89
82
  name = groups[1];
90
83
  message = groups[2];
91
84
  }
92
85
  }
93
-
94
86
  return {
95
87
  name: name,
96
88
  message: message
@@ -99,8 +91,6 @@ function tryToParseMessage(messageObj) {
99
91
  /**
100
92
  * Install a global onunhandledrejection handler
101
93
  */
102
-
103
-
104
94
  function instrumentUnhandledRejection(callback) {
105
95
  return instrumentMethodAndCallOriginal(window, 'onunhandledrejection', {
106
96
  before: function before(e) {
@@ -109,4 +99,5 @@ function instrumentUnhandledRejection(callback) {
109
99
  callback(stack, reason);
110
100
  }
111
101
  });
112
- }
102
+ }
103
+ //# sourceMappingURL=tracekit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracekit.js","names":["instrumentMethodAndCallOriginal","isNullUndefinedDefaultValue","computeStackTrace","ERROR_TYPES_RE","startUnhandledErrorCollection","callback","_instrumentOnError","instrumentOnError","_instrumentUnhandledRejection","instrumentUnhandledRejection","stop","window","before","messageObj","url","line","column","errorObj","stackTrace","Error","location","parse","tryToParseMessage","name","message","stack","toString","call","groups","exec","e","reason"],"sources":["../../src/tracekit/tracekit.js"],"sourcesContent":["import { instrumentMethodAndCallOriginal } from '../helper/instrumentMethod'\nimport { isNullUndefinedDefaultValue } from '../helper/tools'\nimport { computeStackTrace } from './computeStackTrace'\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/\n/**\n * Cross-browser collection of unhandled errors\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Tries to catch all unhandled errors and report them to the\n * callback.\n *\n * Callbacks receive a StackTrace object as described in the\n * computeStackTrace docs.\n *\n * @memberof TraceKit\n * @namespace\n */\n\nexport function startUnhandledErrorCollection(callback) {\n var _instrumentOnError = instrumentOnError(callback)\n var _instrumentUnhandledRejection = instrumentUnhandledRejection(callback)\n return {\n stop: function () {\n _instrumentOnError.stop()\n _instrumentUnhandledRejection.stop()\n }\n }\n}\n\n/**\n * Install a global onerror handler\n */\nfunction instrumentOnError(callback) {\n return instrumentMethodAndCallOriginal(window, 'onerror', {\n before: function (messageObj, url, line, column, errorObj) {\n var stackTrace\n if (errorObj instanceof Error) {\n stackTrace = computeStackTrace(errorObj)\n } else {\n var location = {\n url: url,\n column: column,\n line: line\n }\n var parse = tryToParseMessage(messageObj)\n\n stackTrace = {\n name: parse.name,\n message: parse.message,\n stack: [location]\n }\n }\n callback(stackTrace, isNullUndefinedDefaultValue(errorObj, messageObj))\n }\n })\n}\nfunction tryToParseMessage(messageObj) {\n let name\n let message\n if ({}.toString.call(messageObj) === '[object String]') {\n var groups = ERROR_TYPES_RE.exec(messageObj)\n if (groups) {\n name = groups[1]\n message = groups[2]\n }\n }\n return { name: name, message: message }\n}\n/**\n * Install a global onunhandledrejection handler\n */\nfunction instrumentUnhandledRejection(callback) {\n return instrumentMethodAndCallOriginal(window, 'onunhandledrejection', {\n before: function (e) {\n var reason = e.reason || 'Empty reason'\n var stack = computeStackTrace(reason)\n callback(stack, reason)\n }\n })\n}\n"],"mappings":"AAAA,SAASA,+BAA+B,QAAQ,4BAA4B;AAC5E,SAASC,2BAA2B,QAAQ,iBAAiB;AAC7D,SAASC,iBAAiB,QAAQ,qBAAqB;;AAEvD;AACA,IAAIC,cAAc,GAChB,8GAA8G;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,SAASC,6BAA6BA,CAACC,QAAQ,EAAE;EACtD,IAAIC,kBAAkB,GAAGC,iBAAiB,CAACF,QAAQ,CAAC;EACpD,IAAIG,6BAA6B,GAAGC,4BAA4B,CAACJ,QAAQ,CAAC;EAC1E,OAAO;IACLK,IAAI,EAAE,SAAAA,KAAA,EAAY;MAChBJ,kBAAkB,CAACI,IAAI,CAAC,CAAC;MACzBF,6BAA6B,CAACE,IAAI,CAAC,CAAC;IACtC;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA,SAASH,iBAAiBA,CAACF,QAAQ,EAAE;EACnC,OAAOL,+BAA+B,CAACW,MAAM,EAAE,SAAS,EAAE;IACxDC,MAAM,EAAE,SAAAA,OAAUC,UAAU,EAAEC,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAEC,QAAQ,EAAE;MACzD,IAAIC,UAAU;MACd,IAAID,QAAQ,YAAYE,KAAK,EAAE;QAC7BD,UAAU,GAAGhB,iBAAiB,CAACe,QAAQ,CAAC;MAC1C,CAAC,MAAM;QACL,IAAIG,QAAQ,GAAG;UACbN,GAAG,EAAEA,GAAG;UACRE,MAAM,EAAEA,MAAM;UACdD,IAAI,EAAEA;QACR,CAAC;QACD,IAAIM,KAAK,GAAGC,iBAAiB,CAACT,UAAU,CAAC;QAEzCK,UAAU,GAAG;UACXK,IAAI,EAAEF,KAAK,CAACE,IAAI;UAChBC,OAAO,EAAEH,KAAK,CAACG,OAAO;UACtBC,KAAK,EAAE,CAACL,QAAQ;QAClB,CAAC;MACH;MACAf,QAAQ,CAACa,UAAU,EAAEjB,2BAA2B,CAACgB,QAAQ,EAAEJ,UAAU,CAAC,CAAC;IACzE;EACF,CAAC,CAAC;AACJ;AACA,SAASS,iBAAiBA,CAACT,UAAU,EAAE;EACrC,IAAIU,IAAI;EACR,IAAIC,OAAO;EACX,IAAI,CAAC,CAAC,CAACE,QAAQ,CAACC,IAAI,CAACd,UAAU,CAAC,KAAK,iBAAiB,EAAE;IACtD,IAAIe,MAAM,GAAGzB,cAAc,CAAC0B,IAAI,CAAChB,UAAU,CAAC;IAC5C,IAAIe,MAAM,EAAE;MACVL,IAAI,GAAGK,MAAM,CAAC,CAAC,CAAC;MAChBJ,OAAO,GAAGI,MAAM,CAAC,CAAC,CAAC;IACrB;EACF;EACA,OAAO;IAAEL,IAAI,EAAEA,IAAI;IAAEC,OAAO,EAAEA;EAAQ,CAAC;AACzC;AACA;AACA;AACA;AACA,SAASf,4BAA4BA,CAACJ,QAAQ,EAAE;EAC9C,OAAOL,+BAA+B,CAACW,MAAM,EAAE,sBAAsB,EAAE;IACrEC,MAAM,EAAE,SAAAA,OAAUkB,CAAC,EAAE;MACnB,IAAIC,MAAM,GAAGD,CAAC,CAACC,MAAM,IAAI,cAAc;MACvC,IAAIN,KAAK,GAAGvB,iBAAiB,CAAC6B,MAAM,CAAC;MACrC1B,QAAQ,CAACoB,KAAK,EAAEM,MAAM,CAAC;IACzB;EACF,CAAC,CAAC;AACJ"}
@@ -4,9 +4,9 @@ import { escapeJsonValue, escapeRowField, escapeRowData } from '../helper/serial
4
4
  import { commonTags, dataMap, commonFields } from '../dataMap';
5
5
  import { RumEventType } from '../helper/enums';
6
6
  import { computeBytesCount } from '../helper/byteUtils';
7
- import { isPageExitReason } from '../browser/pageExitObservable'; // https://en.wikipedia.org/wiki/UTF-8
7
+ import { isPageExitReason } from '../browser/pageExitObservable';
8
+ // https://en.wikipedia.org/wiki/UTF-8
8
9
  // eslint-disable-next-line no-control-regex
9
-
10
10
  var HAS_MULTI_BYTES_CHARACTERS = /[^\u0000-\u007F]/;
11
11
  var CUSTOM_KEYS = 'custom_keys';
12
12
  export var processedMessageByDataMap = function processedMessageByDataMap(message) {
@@ -27,12 +27,9 @@ export var processedMessageByDataMap = function processedMessageByDataMap(messag
27
27
  var tagsStr = [];
28
28
  var tags = extend({}, commonTags, value.tags);
29
29
  var filterFileds = ['date', 'type', CUSTOM_KEYS]; // 已经在datamap中定义过的fields和tags
30
-
31
30
  each(tags, function (value_path, _key) {
32
31
  var _value = findByPath(message, value_path);
33
-
34
32
  filterFileds.push(_key);
35
-
36
33
  if (_value || isNumber(_value)) {
37
34
  rowData.tags[_key] = escapeJsonValue(_value);
38
35
  tagsStr.push(escapeRowData(_key) + '=' + escapeRowData(_value));
@@ -43,117 +40,93 @@ export var processedMessageByDataMap = function processedMessageByDataMap(messag
43
40
  each(fields, function (_value, _key) {
44
41
  if (isArray(_value) && _value.length === 2) {
45
42
  var value_path = _value[1];
46
-
47
43
  var _valueData = findByPath(message, value_path);
48
-
49
44
  filterFileds.push(_key);
50
-
51
45
  if (_valueData !== undefined && _valueData !== null) {
52
46
  rowData.fields[_key] = _valueData; // 这里不需要转译
53
-
54
47
  fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_valueData));
55
48
  }
56
49
  } else if (isString(_value)) {
57
50
  var _valueData = findByPath(message, _value);
58
-
59
51
  filterFileds.push(_key);
60
-
61
52
  if (_valueData !== undefined && _valueData !== null) {
62
53
  rowData.fields[_key] = _valueData; // 这里不需要转译
63
-
64
54
  fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_valueData));
65
55
  }
66
56
  }
67
57
  });
68
-
69
- if (message.tags && isObject(message.tags) && !isEmptyObject(message.tags)) {
58
+ if (message.context && isObject(message.context) && !isEmptyObject(message.context)) {
70
59
  // 自定义tag, 存储成field
71
60
  var _tagKeys = [];
72
- each(message.tags, function (_value, _key) {
61
+ each(message.context, function (_value, _key) {
73
62
  // 如果和之前tag重名,则舍弃
74
63
  if (filterFileds.indexOf(_key) > -1) return;
75
64
  filterFileds.push(_key);
76
-
77
65
  if (_value !== undefined && _value !== null) {
78
66
  _tagKeys.push(_key);
79
-
80
67
  rowData.fields[_key] = _value; // 这里不需要转译
81
-
82
68
  fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_value));
83
69
  }
84
70
  });
85
-
86
71
  if (_tagKeys.length) {
87
72
  rowData.fields[CUSTOM_KEYS] = escapeRowField(_tagKeys);
88
73
  fieldsStr.push(escapeRowData(CUSTOM_KEYS) + '=' + escapeRowField(_tagKeys));
89
74
  }
90
75
  }
91
-
92
76
  if (message.type === RumEventType.LOGGER) {
93
77
  // 这里处理日志类型数据自定义字段
94
78
  each(message, function (value, key) {
95
79
  if (filterFileds.indexOf(key) === -1 && value !== undefined && value !== null) {
96
80
  rowData.fields[key] = value; // 这里不需要转译
97
-
98
81
  fieldsStr.push(escapeRowData(key) + '=' + escapeRowField(value));
99
82
  }
100
83
  });
101
84
  }
102
-
103
85
  if (tagsStr.length) {
104
86
  rowStr += tagsStr.join(',');
105
87
  }
106
-
107
88
  if (fieldsStr.length) {
108
89
  rowStr += ' ';
109
90
  rowStr += fieldsStr.join(',');
110
91
  hasFileds = true;
111
92
  }
112
-
113
93
  rowStr = rowStr + ' ' + message.date;
114
94
  rowData.time = toServerDuration(message.date); // 这里不需要转译
115
95
  }
116
96
  });
97
+
117
98
  return {
118
99
  rowStr: hasFileds ? rowStr : '',
119
100
  rowData: hasFileds ? rowData : undefined
120
101
  };
121
102
  };
122
-
123
103
  var batch = function batch(request, flushController, messageBytesLimit) {
124
104
  this.pushOnlyBuffer = [];
125
105
  this.upsertBuffer = {};
126
106
  this.request = request;
127
107
  this.flushController = flushController;
128
108
  this.messageBytesLimit = messageBytesLimit;
129
-
130
109
  var _this = this;
131
-
132
110
  this.flushController.flushObservable.subscribe(function (event) {
133
111
  _this.flush(event);
134
112
  });
135
113
  };
136
-
137
114
  batch.prototype.add = function (message) {
138
115
  this.addOrUpdate(message);
139
116
  };
140
-
141
117
  batch.prototype.upsert = function (message, key) {
142
118
  this.addOrUpdate(message, key);
143
119
  };
144
-
145
120
  batch.prototype.flush = function (event) {
146
121
  var messages = this.pushOnlyBuffer.concat(values(this.upsertBuffer));
147
122
  this.pushOnlyBuffer = [];
148
123
  this.upsertBuffer = {};
149
-
150
124
  if (messages.length > 0) {
151
125
  var payload = {
152
126
  data: messages.join('\n'),
153
127
  bytesCount: event.bytesCount,
154
128
  flushReason: event.reason
155
129
  };
156
-
157
130
  if (isPageExitReason(event.reason)) {
158
131
  this.request.sendOnExit(payload);
159
132
  } else {
@@ -161,25 +134,19 @@ batch.prototype.flush = function (event) {
161
134
  }
162
135
  }
163
136
  };
164
-
165
137
  batch.prototype.addOrUpdate = function (message, key) {
166
138
  var _process = this.process(message);
167
-
168
139
  var processedMessage = _process.processedMessage;
169
140
  var messageBytesCount = _process.messageBytesCount;
170
-
171
141
  if (messageBytesCount >= this.messageBytesLimit) {
172
142
  display.warn('Discarded a message whose size was bigger than the maximum allowed size ' + this.messageBytesLimit + 'KB.');
173
143
  return;
174
144
  }
175
-
176
145
  if (this.hasMessageFor(key)) {
177
146
  this.remove(key);
178
147
  }
179
-
180
148
  this.push(processedMessage, messageBytesCount, key);
181
149
  };
182
-
183
150
  batch.prototype.process = function (message) {
184
151
  var processedMessage = processedMessageByDataMap(message).rowStr;
185
152
  var messageBytesCount = computeBytesCount(processedMessage);
@@ -188,31 +155,26 @@ batch.prototype.process = function (message) {
188
155
  messageBytesCount: messageBytesCount
189
156
  };
190
157
  };
191
-
192
158
  batch.prototype.push = function (processedMessage, messageBytesCount, key) {
193
159
  var separatorBytesCount = this.flushController.getMessagesCount() > 0 ? 1 : 0;
194
160
  this.flushController.notifyBeforeAddMessage(messageBytesCount + separatorBytesCount);
195
-
196
161
  if (key !== undefined) {
197
162
  this.upsertBuffer[key] = processedMessage;
198
163
  } else {
199
164
  this.pushOnlyBuffer.push(processedMessage);
200
165
  }
201
-
202
166
  this.flushController.notifyAfterAddMessage();
203
167
  };
204
-
205
168
  batch.prototype.remove = function (key) {
206
169
  var removedMessage = this.upsertBuffer[key];
207
170
  delete this.upsertBuffer[key];
208
- var messageBytesCount = computeBytesCount(removedMessage); // If there are other messages, a '\n' will be added at serialization
209
-
171
+ var messageBytesCount = computeBytesCount(removedMessage);
172
+ // If there are other messages, a '\n' will be added at serialization
210
173
  var separatorBytesCount = this.flushController.getMessagesCount() > 1 ? 1 : 0;
211
174
  this.flushController.notifyAfterRemoveMessage(messageBytesCount + separatorBytesCount);
212
175
  };
213
-
214
176
  batch.prototype.hasMessageFor = function (key) {
215
177
  return key !== undefined && this.upsertBuffer[key] !== undefined;
216
178
  };
217
-
218
- export var Batch = batch;
179
+ export var Batch = batch;
180
+ //# sourceMappingURL=batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.js","names":["display","values","findByPath","each","isNumber","isArray","extend","isString","toServerDuration","isBoolean","isEmptyObject","isObject","escapeJsonValue","escapeRowField","escapeRowData","commonTags","dataMap","commonFields","RumEventType","computeBytesCount","isPageExitReason","HAS_MULTI_BYTES_CHARACTERS","CUSTOM_KEYS","processedMessageByDataMap","message","type","rowStr","rowData","undefined","tags","fields","hasFileds","value","key","measurement","tagsStr","filterFileds","value_path","_key","_value","push","fieldsStr","length","_valueData","context","_tagKeys","indexOf","LOGGER","join","date","time","batch","request","flushController","messageBytesLimit","pushOnlyBuffer","upsertBuffer","_this","flushObservable","subscribe","event","flush","prototype","add","addOrUpdate","upsert","messages","concat","payload","data","bytesCount","flushReason","reason","sendOnExit","send","_process","process","processedMessage","messageBytesCount","warn","hasMessageFor","remove","separatorBytesCount","getMessagesCount","notifyBeforeAddMessage","notifyAfterAddMessage","removedMessage","notifyAfterRemoveMessage","Batch"],"sources":["../../src/transport/batch.js"],"sourcesContent":["import { display } from '../helper/display'\nimport {\n values,\n findByPath,\n each,\n isNumber,\n isArray,\n extend,\n isString,\n toServerDuration,\n isBoolean,\n isEmptyObject,\n isObject\n} from '../helper/tools'\nimport {\n escapeJsonValue,\n escapeRowField,\n escapeRowData\n} from '../helper/serialisation/rowData'\nimport { commonTags, dataMap, commonFields } from '../dataMap'\nimport { RumEventType } from '../helper/enums'\nimport { computeBytesCount } from '../helper/byteUtils'\nimport { isPageExitReason } from '../browser/pageExitObservable'\n// https://en.wikipedia.org/wiki/UTF-8\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/\nvar CUSTOM_KEYS = 'custom_keys'\nexport var processedMessageByDataMap = function (message) {\n if (!message || !message.type)\n return {\n rowStr: '',\n rowData: undefined\n }\n\n var rowData = { tags: {}, fields: {} }\n var hasFileds = false\n var rowStr = ''\n each(dataMap, function (value, key) {\n if (value.type === message.type) {\n rowStr += key + ','\n rowData.measurement = key\n var tagsStr = []\n var tags = extend({}, commonTags, value.tags)\n var filterFileds = ['date', 'type', CUSTOM_KEYS] // 已经在datamap中定义过的fields和tags\n each(tags, function (value_path, _key) {\n var _value = findByPath(message, value_path)\n filterFileds.push(_key)\n if (_value || isNumber(_value)) {\n rowData.tags[_key] = escapeJsonValue(_value)\n tagsStr.push(escapeRowData(_key) + '=' + escapeRowData(_value))\n }\n })\n\n var fieldsStr = []\n var fields = extend({}, commonFields, value.fields)\n each(fields, function (_value, _key) {\n if (isArray(_value) && _value.length === 2) {\n var value_path = _value[1]\n var _valueData = findByPath(message, value_path)\n filterFileds.push(_key)\n if (_valueData !== undefined && _valueData !== null) {\n rowData.fields[_key] = _valueData // 这里不需要转译\n fieldsStr.push(\n escapeRowData(_key) + '=' + escapeRowField(_valueData)\n )\n }\n } else if (isString(_value)) {\n var _valueData = findByPath(message, _value)\n filterFileds.push(_key)\n if (_valueData !== undefined && _valueData !== null) {\n rowData.fields[_key] = _valueData // 这里不需要转译\n fieldsStr.push(\n escapeRowData(_key) + '=' + escapeRowField(_valueData)\n )\n }\n }\n })\n if (\n message.context &&\n isObject(message.context) &&\n !isEmptyObject(message.context)\n ) {\n // 自定义tag, 存储成field\n var _tagKeys = []\n each(message.context, function (_value, _key) {\n // 如果和之前tag重名,则舍弃\n if (filterFileds.indexOf(_key) > -1) return\n filterFileds.push(_key)\n if (_value !== undefined && _value !== null) {\n _tagKeys.push(_key)\n rowData.fields[_key] = _value // 这里不需要转译\n fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_value))\n }\n })\n if (_tagKeys.length) {\n rowData.fields[CUSTOM_KEYS] = escapeRowField(_tagKeys)\n fieldsStr.push(\n escapeRowData(CUSTOM_KEYS) + '=' + escapeRowField(_tagKeys)\n )\n }\n }\n if (message.type === RumEventType.LOGGER) {\n // 这里处理日志类型数据自定义字段\n each(message, function (value, key) {\n if (\n filterFileds.indexOf(key) === -1 &&\n value !== undefined &&\n value !== null\n ) {\n rowData.fields[key] = value // 这里不需要转译\n fieldsStr.push(escapeRowData(key) + '=' + escapeRowField(value))\n }\n })\n }\n if (tagsStr.length) {\n rowStr += tagsStr.join(',')\n }\n if (fieldsStr.length) {\n rowStr += ' '\n rowStr += fieldsStr.join(',')\n hasFileds = true\n }\n rowStr = rowStr + ' ' + message.date\n rowData.time = toServerDuration(message.date) // 这里不需要转译\n }\n })\n return {\n rowStr: hasFileds ? rowStr : '',\n rowData: hasFileds ? rowData : undefined\n }\n}\nvar batch = function (request, flushController, messageBytesLimit) {\n this.pushOnlyBuffer = []\n this.upsertBuffer = {}\n this.request = request\n this.flushController = flushController\n this.messageBytesLimit = messageBytesLimit\n var _this = this\n this.flushController.flushObservable.subscribe(function (event) {\n _this.flush(event)\n })\n}\nbatch.prototype.add = function (message) {\n this.addOrUpdate(message)\n}\nbatch.prototype.upsert = function (message, key) {\n this.addOrUpdate(message, key)\n}\nbatch.prototype.flush = function (event) {\n var messages = this.pushOnlyBuffer.concat(values(this.upsertBuffer))\n this.pushOnlyBuffer = []\n this.upsertBuffer = {}\n if (messages.length > 0) {\n var payload = {\n data: messages.join('\\n'),\n bytesCount: event.bytesCount,\n flushReason: event.reason\n }\n if (isPageExitReason(event.reason)) {\n this.request.sendOnExit(payload)\n } else {\n this.request.send(payload)\n }\n }\n}\n\nbatch.prototype.addOrUpdate = function (message, key) {\n var _process = this.process(message)\n var processedMessage = _process.processedMessage\n var messageBytesCount = _process.messageBytesCount\n if (messageBytesCount >= this.messageBytesLimit) {\n display.warn(\n 'Discarded a message whose size was bigger than the maximum allowed size ' +\n this.messageBytesLimit +\n 'KB.'\n )\n return\n }\n if (this.hasMessageFor(key)) {\n this.remove(key)\n }\n this.push(processedMessage, messageBytesCount, key)\n}\nbatch.prototype.process = function (message) {\n var processedMessage = processedMessageByDataMap(message).rowStr\n var messageBytesCount = computeBytesCount(processedMessage)\n return {\n processedMessage: processedMessage,\n messageBytesCount: messageBytesCount\n }\n}\n\nbatch.prototype.push = function (processedMessage, messageBytesCount, key) {\n var separatorBytesCount = this.flushController.getMessagesCount() > 0 ? 1 : 0\n this.flushController.notifyBeforeAddMessage(\n messageBytesCount + separatorBytesCount\n )\n if (key !== undefined) {\n this.upsertBuffer[key] = processedMessage\n } else {\n this.pushOnlyBuffer.push(processedMessage)\n }\n this.flushController.notifyAfterAddMessage()\n}\n\nbatch.prototype.remove = function (key) {\n var removedMessage = this.upsertBuffer[key]\n delete this.upsertBuffer[key]\n var messageBytesCount = computeBytesCount(removedMessage)\n // If there are other messages, a '\\n' will be added at serialization\n var separatorBytesCount = this.flushController.getMessagesCount() > 1 ? 1 : 0\n this.flushController.notifyAfterRemoveMessage(\n messageBytesCount + separatorBytesCount\n )\n}\n\nbatch.prototype.hasMessageFor = function (key) {\n return key !== undefined && this.upsertBuffer[key] !== undefined\n}\nexport var Batch = batch\n"],"mappings":"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"}
@@ -1,16 +1,12 @@
1
1
  import { getGlobalObject } from '../init';
2
-
3
2
  function getEventBridgeGlobal() {
4
3
  return getGlobalObject().FTWebViewJavascriptBridge;
5
4
  }
6
-
7
5
  export function getEventBridge() {
8
6
  var eventBridgeGlobal = getEventBridgeGlobal();
9
-
10
7
  if (!eventBridgeGlobal) {
11
8
  return;
12
9
  }
13
-
14
10
  return {
15
11
  send: function send(eventType, event) {
16
12
  eventBridgeGlobal.sendEvent(JSON.stringify({
@@ -23,4 +19,5 @@ export function getEventBridge() {
23
19
  export function canUseEventBridge() {
24
20
  var bridge = getEventBridge();
25
21
  return !!bridge;
26
- }
22
+ }
23
+ //# sourceMappingURL=eventBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventBridge.js","names":["getGlobalObject","getEventBridgeGlobal","FTWebViewJavascriptBridge","getEventBridge","eventBridgeGlobal","send","eventType","event","sendEvent","JSON","stringify","name","data","canUseEventBridge","bridge"],"sources":["../../src/transport/eventBridge.js"],"sourcesContent":["import { getGlobalObject } from '../init'\n\nfunction getEventBridgeGlobal() {\n return getGlobalObject().FTWebViewJavascriptBridge\n}\nexport function getEventBridge() {\n var eventBridgeGlobal = getEventBridgeGlobal()\n\n if (!eventBridgeGlobal) {\n return\n }\n\n return {\n send(eventType, event) {\n eventBridgeGlobal.sendEvent(\n JSON.stringify({ name: eventType, data: event })\n )\n }\n }\n}\nexport function canUseEventBridge() {\n var bridge = getEventBridge()\n return !!bridge\n}\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,SAAS;AAEzC,SAASC,oBAAoBA,CAAA,EAAG;EAC9B,OAAOD,eAAe,CAAC,CAAC,CAACE,yBAAyB;AACpD;AACA,OAAO,SAASC,cAAcA,CAAA,EAAG;EAC/B,IAAIC,iBAAiB,GAAGH,oBAAoB,CAAC,CAAC;EAE9C,IAAI,CAACG,iBAAiB,EAAE;IACtB;EACF;EAEA,OAAO;IACLC,IAAI,WAAAA,KAACC,SAAS,EAAEC,KAAK,EAAE;MACrBH,iBAAiB,CAACI,SAAS,CACzBC,IAAI,CAACC,SAAS,CAAC;QAAEC,IAAI,EAAEL,SAAS;QAAEM,IAAI,EAAEL;MAAM,CAAC,CACjD,CAAC;IACH;EACF,CAAC;AACH;AACA,OAAO,SAASM,iBAAiBA,CAAA,EAAG;EAClC,IAAIC,MAAM,GAAGX,cAAc,CAAC,CAAC;EAC7B,OAAO,CAAC,CAACW,MAAM;AACjB"}
@@ -1,18 +1,19 @@
1
1
  import { Observable } from '../helper/observable';
2
- import { clearTimeout, setTimeout } from '../helper/timer'; // type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'
2
+ import { clearTimeout, setTimeout } from '../helper/timer';
3
+
4
+ // type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'
3
5
 
4
6
  /**
5
7
  * Returns a "flush controller", responsible of notifying when flushing a pool of pending data needs
6
8
  * to happen. The implementation is designed to support both synchronous and asynchronous usages,
7
9
  * but relies on invariants described in each method documentation to keep a coherent state.
8
10
  */
9
-
10
11
  export function createFlushController(_ref) {
11
12
  var messagesLimit = _ref.messagesLimit,
12
- bytesLimit = _ref.bytesLimit,
13
- durationLimit = _ref.durationLimit,
14
- pageExitObservable = _ref.pageExitObservable,
15
- sessionExpireObservable = _ref.sessionExpireObservable;
13
+ bytesLimit = _ref.bytesLimit,
14
+ durationLimit = _ref.durationLimit,
15
+ pageExitObservable = _ref.pageExitObservable,
16
+ sessionExpireObservable = _ref.sessionExpireObservable;
16
17
  var flushObservable = new Observable();
17
18
  pageExitObservable.subscribe(function (event) {
18
19
  return flush(event.reason);
@@ -22,12 +23,10 @@ export function createFlushController(_ref) {
22
23
  });
23
24
  var currentBytesCount = 0;
24
25
  var currentMessagesCount = 0;
25
-
26
26
  function flush(flushReason) {
27
27
  if (currentMessagesCount === 0) {
28
28
  return;
29
29
  }
30
-
31
30
  var messagesCount = currentMessagesCount;
32
31
  var bytesCount = currentBytesCount;
33
32
  currentMessagesCount = 0;
@@ -39,9 +38,7 @@ export function createFlushController(_ref) {
39
38
  bytesCount: bytesCount
40
39
  });
41
40
  }
42
-
43
41
  var durationLimitTimeoutId;
44
-
45
42
  function scheduleDurationLimitTimeout() {
46
43
  if (durationLimitTimeoutId === undefined) {
47
44
  durationLimitTimeoutId = setTimeout(function () {
@@ -49,18 +46,15 @@ export function createFlushController(_ref) {
49
46
  }, durationLimit);
50
47
  }
51
48
  }
52
-
53
49
  function cancelDurationLimitTimeout() {
54
50
  clearTimeout(durationLimitTimeoutId);
55
51
  durationLimitTimeoutId = undefined;
56
52
  }
57
-
58
53
  return {
59
54
  flushObservable: flushObservable,
60
55
  getMessagesCount: function getMessagesCount() {
61
56
  return currentMessagesCount;
62
57
  },
63
-
64
58
  /**
65
59
  * Notifies that a message will be added to a pool of pending messages waiting to be flushed.
66
60
  *
@@ -70,16 +64,14 @@ export function createFlushController(_ref) {
70
64
  notifyBeforeAddMessage: function notifyBeforeAddMessage(messageBytesCount) {
71
65
  if (currentBytesCount + messageBytesCount >= bytesLimit) {
72
66
  flush('bytes_limit');
73
- } // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no
67
+ }
68
+ // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no
74
69
  // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want
75
70
  // to notify when a flush is needed (for example on page exit).
76
-
77
-
78
71
  currentMessagesCount += 1;
79
72
  currentBytesCount += messageBytesCount;
80
73
  scheduleDurationLimitTimeout();
81
74
  },
82
-
83
75
  /**
84
76
  * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.
85
77
  *
@@ -93,7 +85,6 @@ export function createFlushController(_ref) {
93
85
  flush('bytes_limit');
94
86
  }
95
87
  },
96
-
97
88
  /**
98
89
  * Notifies that a message was removed from a pool of pending messages waiting to be flushed.
99
90
  *
@@ -103,10 +94,10 @@ export function createFlushController(_ref) {
103
94
  notifyAfterRemoveMessage: function notifyAfterRemoveMessage(messageBytesCount) {
104
95
  currentBytesCount -= messageBytesCount;
105
96
  currentMessagesCount -= 1;
106
-
107
97
  if (currentMessagesCount === 0) {
108
98
  cancelDurationLimitTimeout();
109
99
  }
110
100
  }
111
101
  };
112
- }
102
+ }
103
+ //# sourceMappingURL=flushController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flushController.js","names":["Observable","clearTimeout","setTimeout","createFlushController","_ref","messagesLimit","bytesLimit","durationLimit","pageExitObservable","sessionExpireObservable","flushObservable","subscribe","event","flush","reason","currentBytesCount","currentMessagesCount","flushReason","messagesCount","bytesCount","cancelDurationLimitTimeout","notify","durationLimitTimeoutId","scheduleDurationLimitTimeout","undefined","getMessagesCount","notifyBeforeAddMessage","messageBytesCount","notifyAfterAddMessage","notifyAfterRemoveMessage"],"sources":["../../src/transport/flushController.js"],"sourcesContent":["import { Observable } from '../helper/observable'\nimport { clearTimeout, setTimeout } from '../helper/timer'\n\n// type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'\n\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController({\n messagesLimit,\n bytesLimit,\n durationLimit,\n pageExitObservable,\n sessionExpireObservable\n}) {\n var flushObservable = new Observable()\n\n pageExitObservable.subscribe(function (event) {\n return flush(event.reason)\n })\n sessionExpireObservable.subscribe(function () {\n return flush('session_expire')\n })\n\n var currentBytesCount = 0\n var currentMessagesCount = 0\n\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return\n }\n\n var messagesCount = currentMessagesCount\n var bytesCount = currentBytesCount\n\n currentMessagesCount = 0\n currentBytesCount = 0\n cancelDurationLimitTimeout()\n\n flushObservable.notify({\n reason: flushReason,\n messagesCount: messagesCount,\n bytesCount: bytesCount\n })\n }\n\n var durationLimitTimeoutId\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(function () {\n flush('duration_limit')\n }, durationLimit)\n }\n }\n\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId)\n durationLimitTimeoutId = undefined\n }\n\n return {\n flushObservable: flushObservable,\n getMessagesCount: function () {\n return currentMessagesCount\n },\n\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n */\n notifyBeforeAddMessage: function (messageBytesCount) {\n if (currentBytesCount + messageBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1\n currentBytesCount += messageBytesCount\n scheduleDurationLimitTimeout()\n },\n\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n */\n notifyAfterAddMessage: function () {\n if (currentMessagesCount >= messagesLimit) {\n flush('messages_limit')\n } else if (currentBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n },\n\n /**\n * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right after removing the message, so no flush\n * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n */\n notifyAfterRemoveMessage: function (messageBytesCount) {\n currentBytesCount -= messageBytesCount\n currentMessagesCount -= 1\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout()\n }\n }\n }\n}\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,sBAAsB;AACjD,SAASC,YAAY,EAAEC,UAAU,QAAQ,iBAAiB;;AAE1D;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAAAC,IAAA,EAMlC;EAAA,IALDC,aAAa,GAAAD,IAAA,CAAbC,aAAa;IACbC,UAAU,GAAAF,IAAA,CAAVE,UAAU;IACVC,aAAa,GAAAH,IAAA,CAAbG,aAAa;IACbC,kBAAkB,GAAAJ,IAAA,CAAlBI,kBAAkB;IAClBC,uBAAuB,GAAAL,IAAA,CAAvBK,uBAAuB;EAEvB,IAAIC,eAAe,GAAG,IAAIV,UAAU,CAAC,CAAC;EAEtCQ,kBAAkB,CAACG,SAAS,CAAC,UAAUC,KAAK,EAAE;IAC5C,OAAOC,KAAK,CAACD,KAAK,CAACE,MAAM,CAAC;EAC5B,CAAC,CAAC;EACFL,uBAAuB,CAACE,SAAS,CAAC,YAAY;IAC5C,OAAOE,KAAK,CAAC,gBAAgB,CAAC;EAChC,CAAC,CAAC;EAEF,IAAIE,iBAAiB,GAAG,CAAC;EACzB,IAAIC,oBAAoB,GAAG,CAAC;EAE5B,SAASH,KAAKA,CAACI,WAAW,EAAE;IAC1B,IAAID,oBAAoB,KAAK,CAAC,EAAE;MAC9B;IACF;IAEA,IAAIE,aAAa,GAAGF,oBAAoB;IACxC,IAAIG,UAAU,GAAGJ,iBAAiB;IAElCC,oBAAoB,GAAG,CAAC;IACxBD,iBAAiB,GAAG,CAAC;IACrBK,0BAA0B,CAAC,CAAC;IAE5BV,eAAe,CAACW,MAAM,CAAC;MACrBP,MAAM,EAAEG,WAAW;MACnBC,aAAa,EAAEA,aAAa;MAC5BC,UAAU,EAAEA;IACd,CAAC,CAAC;EACJ;EAEA,IAAIG,sBAAsB;EAC1B,SAASC,4BAA4BA,CAAA,EAAG;IACtC,IAAID,sBAAsB,KAAKE,SAAS,EAAE;MACxCF,sBAAsB,GAAGpB,UAAU,CAAC,YAAY;QAC9CW,KAAK,CAAC,gBAAgB,CAAC;MACzB,CAAC,EAAEN,aAAa,CAAC;IACnB;EACF;EAEA,SAASa,0BAA0BA,CAAA,EAAG;IACpCnB,YAAY,CAACqB,sBAAsB,CAAC;IACpCA,sBAAsB,GAAGE,SAAS;EACpC;EAEA,OAAO;IACLd,eAAe,EAAEA,eAAe;IAChCe,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;MAC5B,OAAOT,oBAAoB;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIU,sBAAsB,EAAE,SAAAA,uBAAUC,iBAAiB,EAAE;MACnD,IAAIZ,iBAAiB,GAAGY,iBAAiB,IAAIrB,UAAU,EAAE;QACvDO,KAAK,CAAC,aAAa,CAAC;MACtB;MACA;MACA;MACA;MACAG,oBAAoB,IAAI,CAAC;MACzBD,iBAAiB,IAAIY,iBAAiB;MACtCJ,4BAA4B,CAAC,CAAC;IAChC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIK,qBAAqB,EAAE,SAAAA,sBAAA,EAAY;MACjC,IAAIZ,oBAAoB,IAAIX,aAAa,EAAE;QACzCQ,KAAK,CAAC,gBAAgB,CAAC;MACzB,CAAC,MAAM,IAAIE,iBAAiB,IAAIT,UAAU,EAAE;QAC1CO,KAAK,CAAC,aAAa,CAAC;MACtB;IACF,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIgB,wBAAwB,EAAE,SAAAA,yBAAUF,iBAAiB,EAAE;MACrDZ,iBAAiB,IAAIY,iBAAiB;MACtCX,oBAAoB,IAAI,CAAC;MACzB,IAAIA,oBAAoB,KAAK,CAAC,EAAE;QAC9BI,0BAA0B,CAAC,CAAC;MAC9B;IACF;EACF,CAAC;AACH"}