@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
@@ -4,29 +4,23 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.startCacheUsrCache = exports.ANONYMOUS_ID_EXPIRATION = exports.ANONYMOUS_ID_COOKIE_NAME = void 0;
7
-
8
7
  var _cookie = require("../browser/cookie");
9
-
10
8
  var _tools = require("../helper/tools");
11
-
12
9
  var ANONYMOUS_ID_COOKIE_NAME = '_dataflulx_usr_id';
13
10
  exports.ANONYMOUS_ID_COOKIE_NAME = ANONYMOUS_ID_COOKIE_NAME;
14
11
  var ANONYMOUS_ID_EXPIRATION = 60 * 24 * _tools.ONE_HOUR;
15
12
  exports.ANONYMOUS_ID_EXPIRATION = ANONYMOUS_ID_EXPIRATION;
16
-
17
13
  var startCacheUsrCache = function startCacheUsrCache(configuration) {
18
14
  var usrCacheId = (0, _cookie.getCookie)(ANONYMOUS_ID_COOKIE_NAME);
19
-
20
15
  if (!usrCacheId) {
21
16
  usrCacheId = (0, _tools.UUID)();
22
17
  (0, _cookie.setCookie)(ANONYMOUS_ID_COOKIE_NAME, usrCacheId, ANONYMOUS_ID_EXPIRATION, configuration.cookieOptions);
23
18
  }
24
-
25
19
  return {
26
20
  getUsrId: function getUsrId() {
27
21
  return usrCacheId;
28
22
  }
29
23
  };
30
24
  };
31
-
32
- exports.startCacheUsrCache = startCacheUsrCache;
25
+ exports.startCacheUsrCache = startCacheUsrCache;
26
+ //# sourceMappingURL=usr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usr.js","names":["_cookie","require","_tools","ANONYMOUS_ID_COOKIE_NAME","exports","ANONYMOUS_ID_EXPIRATION","ONE_HOUR","startCacheUsrCache","configuration","usrCacheId","getCookie","UUID","setCookie","cookieOptions","getUsrId"],"sources":["../../src/synthetics/usr.js"],"sourcesContent":["import { getCookie, setCookie } from '../browser/cookie'\nimport { ONE_HOUR, UUID } from '../helper/tools'\n\nexport var ANONYMOUS_ID_COOKIE_NAME = '_dataflulx_usr_id'\nexport var ANONYMOUS_ID_EXPIRATION = 60 * 24 * ONE_HOUR\n\nexport var startCacheUsrCache = function(configuration) {\n var usrCacheId = getCookie(ANONYMOUS_ID_COOKIE_NAME)\n if (!usrCacheId) {\n usrCacheId = UUID()\n setCookie(ANONYMOUS_ID_COOKIE_NAME, usrCacheId, ANONYMOUS_ID_EXPIRATION, configuration.cookieOptions)\n }\n return {\n getUsrId: function() {\n return usrCacheId\n }\n }\n}"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEO,IAAIE,wBAAwB,GAAG,mBAAmB;AAAAC,OAAA,CAAAD,wBAAA,GAAAA,wBAAA;AAClD,IAAIE,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAGC,eAAQ;AAAAF,OAAA,CAAAC,uBAAA,GAAAA,uBAAA;AAEhD,IAAIE,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAYC,aAAa,EAAE;EACtD,IAAIC,UAAU,GAAG,IAAAC,iBAAS,EAACP,wBAAwB,CAAC;EACpD,IAAI,CAACM,UAAU,EAAE;IACfA,UAAU,GAAG,IAAAE,WAAI,EAAC,CAAC;IACnB,IAAAC,iBAAS,EAACT,wBAAwB,EAAEM,UAAU,EAAEJ,uBAAuB,EAAEG,aAAa,CAACK,aAAa,CAAC;EACvG;EACA,OAAO;IACLC,QAAQ,EAAE,SAAAA,SAAA,EAAW;MACnB,OAAOL,UAAU;IACnB;EACF,CAAC;AACH,CAAC;AAAAL,OAAA,CAAAG,kBAAA,GAAAA,kBAAA"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TelemetryService = void 0;
7
+ exports.addTelemetryConfiguration = addTelemetryConfiguration;
8
+ exports.addTelemetryDebug = addTelemetryDebug;
9
+ exports.addTelemetryError = addTelemetryError;
10
+ exports.formatError = formatError;
11
+ exports.resetTelemetry = resetTelemetry;
12
+ exports.scrubCustomerFrames = scrubCustomerFrames;
13
+ exports.startTelemetry = startTelemetry;
14
+ var _display = require("../helper/display");
15
+ var _errorTools = require("../helper/errorTools");
16
+ var _tracekit = require("../tracekit");
17
+ var _observable = require("../helper/observable");
18
+ var _monitor = require("..//helper/monitor");
19
+ var _tools = require("../helper/tools");
20
+ var _jsonStringify = require("../helper/serialisation/jsonStringify");
21
+ var _enums = require("../helper/enums");
22
+ var _types = require("./types");
23
+ var ALLOWED_FRAME_URLS = ['https://static.guance.com', 'http://localhost', '<anonymous>'];
24
+ var TelemetryService = {
25
+ LOGS: 'browser-logs-sdk',
26
+ RUM: 'browser-rum-sdk'
27
+ };
28
+ exports.TelemetryService = TelemetryService;
29
+ var telemetryConfiguration = {
30
+ maxEventsPerPage: 0,
31
+ sentEventCount: 0,
32
+ telemetryEnabled: false
33
+ };
34
+ var onRawTelemetryEventCollected;
35
+ function startTelemetry(telemetryService, configuration) {
36
+ var contextProvider;
37
+ var observable = new _observable.Observable();
38
+ telemetryConfiguration.telemetryEnabled = configuration.telemetryEnabled && (0, _tools.performDraw)(configuration.telemetrySampleRate);
39
+ onRawTelemetryEventCollected = function onRawTelemetryEventCollected(rawEvent) {
40
+ if (telemetryConfiguration.telemetryEnabled) {
41
+ var event = toTelemetryEvent(telemetryService, rawEvent);
42
+ observable.notify(event);
43
+ }
44
+ };
45
+ (0, _monitor.startMonitorErrorCollection)(addTelemetryError);
46
+ (0, _tools.assign)(telemetryConfiguration, {
47
+ maxEventsPerPage: configuration.maxTelemetryEventsPerPage,
48
+ sentEventCount: 0
49
+ });
50
+ function toTelemetryEvent(telemetryService, event) {
51
+ return (0, _tools.extend2Lev)({
52
+ type: 'telemetry',
53
+ date: (0, _tools.timeStampNow)(),
54
+ service: telemetryService,
55
+ version: __BUILD_ENV__SDK_VERSION__,
56
+ source: 'browser',
57
+ telemetry: event // https://github.com/microsoft/TypeScript/issues/48457
58
+ }, contextProvider !== undefined ? contextProvider() : {});
59
+ }
60
+ return {
61
+ setContextProvider: function setContextProvider(provider) {
62
+ contextProvider = provider;
63
+ },
64
+ observable: observable,
65
+ enabled: telemetryConfiguration.telemetryEnabled
66
+ };
67
+ }
68
+ function resetTelemetry() {
69
+ onRawTelemetryEventCollected = undefined;
70
+ }
71
+ function addTelemetryDebug(message, context) {
72
+ (0, _monitor.displayIfDebugEnabled)(_display.ConsoleApiName.debug, message, context);
73
+ addTelemetry((0, _tools.assign)({
74
+ type: _types.TelemetryType.log,
75
+ message: message,
76
+ status: _types.TelemetryStatusType.debug
77
+ }, context));
78
+ }
79
+ function addTelemetryError(e, context) {
80
+ addTelemetry((0, _tools.assign)({
81
+ type: _types.TelemetryType.log,
82
+ status: _types.TelemetryStatusType.error
83
+ }, formatError(e), context));
84
+ }
85
+ function addTelemetryConfiguration(configuration) {
86
+ if (telemetryConfiguration.telemetryEnabled) {
87
+ addTelemetry({
88
+ type: _types.TelemetryType.configuration,
89
+ configuration: configuration
90
+ });
91
+ }
92
+ }
93
+ function addTelemetry(event) {
94
+ if (onRawTelemetryEventCollected && telemetryConfiguration.sentEventCount < telemetryConfiguration.maxEventsPerPage) {
95
+ telemetryConfiguration.sentEventCount += 1;
96
+ onRawTelemetryEventCollected(event);
97
+ }
98
+ }
99
+ function formatError(e) {
100
+ if (e instanceof Error) {
101
+ var stackTrace = (0, _tracekit.computeStackTrace)(e);
102
+ return {
103
+ error: {
104
+ kind: stackTrace.name,
105
+ stack: (0, _errorTools.toStackTraceString)(scrubCustomerFrames(stackTrace))
106
+ },
107
+ message: stackTrace.message
108
+ };
109
+ }
110
+ return {
111
+ error: {
112
+ stack: _errorTools.NO_ERROR_STACK_PRESENT_MESSAGE
113
+ },
114
+ message: _enums.NonErrorPrefix.UNCAUGHT + ' ' + (0, _jsonStringify.jsonStringify)(e)
115
+ };
116
+ }
117
+ function scrubCustomerFrames(stackTrace) {
118
+ stackTrace.stack = stackTrace.stack.filter(function (frame) {
119
+ return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) {
120
+ return (0, _tools.startsWith)(frame.url, allowedFrameUrl);
121
+ });
122
+ });
123
+ return stackTrace;
124
+ }
125
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","names":["_display","require","_errorTools","_tracekit","_observable","_monitor","_tools","_jsonStringify","_enums","_types","ALLOWED_FRAME_URLS","TelemetryService","LOGS","RUM","exports","telemetryConfiguration","maxEventsPerPage","sentEventCount","telemetryEnabled","onRawTelemetryEventCollected","startTelemetry","telemetryService","configuration","contextProvider","observable","Observable","performDraw","telemetrySampleRate","rawEvent","event","toTelemetryEvent","notify","startMonitorErrorCollection","addTelemetryError","assign","maxTelemetryEventsPerPage","extend2Lev","type","date","timeStampNow","service","version","__BUILD_ENV__SDK_VERSION__","source","telemetry","undefined","setContextProvider","provider","enabled","resetTelemetry","addTelemetryDebug","message","context","displayIfDebugEnabled","ConsoleApiName","debug","addTelemetry","TelemetryType","log","status","TelemetryStatusType","e","error","formatError","addTelemetryConfiguration","Error","stackTrace","computeStackTrace","kind","name","stack","toStackTraceString","scrubCustomerFrames","NO_ERROR_STACK_PRESENT_MESSAGE","NonErrorPrefix","UNCAUGHT","jsonStringify","filter","frame","url","some","allowedFrameUrl","startsWith"],"sources":["../../src/telemetry/telemetry.js"],"sourcesContent":["import { ConsoleApiName } from '../helper/display'\nimport {\n toStackTraceString,\n NO_ERROR_STACK_PRESENT_MESSAGE\n} from '../helper/errorTools'\nimport { computeStackTrace } from '../tracekit'\nimport { Observable } from '../helper/observable'\nimport {\n displayIfDebugEnabled,\n startMonitorErrorCollection\n} from '..//helper/monitor'\nimport {\n startsWith,\n assign,\n performDraw,\n timeStampNow,\n extend2Lev\n} from '../helper/tools'\nimport { jsonStringify } from '../helper/serialisation/jsonStringify'\nimport { NonErrorPrefix } from '../helper/enums'\nimport { TelemetryStatusType, TelemetryType } from './types'\n\nconst ALLOWED_FRAME_URLS = [\n 'https://static.guance.com',\n 'http://localhost',\n '<anonymous>'\n]\n\nexport var TelemetryService = {\n LOGS: 'browser-logs-sdk',\n RUM: 'browser-rum-sdk'\n}\n\nvar telemetryConfiguration = {\n maxEventsPerPage: 0,\n sentEventCount: 0,\n telemetryEnabled: false\n}\n\nvar onRawTelemetryEventCollected\n\nexport function startTelemetry(telemetryService, configuration) {\n let contextProvider\n var observable = new Observable()\n telemetryConfiguration.telemetryEnabled =\n configuration.telemetryEnabled &&\n performDraw(configuration.telemetrySampleRate)\n\n onRawTelemetryEventCollected = function (rawEvent) {\n if (telemetryConfiguration.telemetryEnabled) {\n var event = toTelemetryEvent(telemetryService, rawEvent)\n observable.notify(event)\n }\n }\n startMonitorErrorCollection(addTelemetryError)\n\n assign(telemetryConfiguration, {\n maxEventsPerPage: configuration.maxTelemetryEventsPerPage,\n sentEventCount: 0\n })\n\n function toTelemetryEvent(telemetryService, event) {\n return extend2Lev(\n {\n type: 'telemetry',\n date: timeStampNow(),\n service: telemetryService,\n version: __BUILD_ENV__SDK_VERSION__,\n source: 'browser',\n telemetry: event // https://github.com/microsoft/TypeScript/issues/48457\n },\n contextProvider !== undefined ? contextProvider() : {}\n )\n }\n\n return {\n setContextProvider: function (provider) {\n contextProvider = provider\n },\n observable: observable,\n enabled: telemetryConfiguration.telemetryEnabled\n }\n}\n\nexport function resetTelemetry() {\n onRawTelemetryEventCollected = undefined\n}\n\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context)\n addTelemetry(\n assign(\n {\n type: TelemetryType.log,\n message: message,\n status: TelemetryStatusType.debug\n },\n context\n )\n )\n}\n\nexport function addTelemetryError(e, context) {\n addTelemetry(\n assign(\n {\n type: TelemetryType.log,\n status: TelemetryStatusType.error\n },\n formatError(e),\n context\n )\n )\n}\n\nexport function addTelemetryConfiguration(configuration) {\n if (telemetryConfiguration.telemetryEnabled) {\n addTelemetry({\n type: TelemetryType.configuration,\n configuration: configuration\n })\n }\n}\n\nfunction addTelemetry(event) {\n if (\n onRawTelemetryEventCollected &&\n telemetryConfiguration.sentEventCount <\n telemetryConfiguration.maxEventsPerPage\n ) {\n telemetryConfiguration.sentEventCount += 1\n onRawTelemetryEventCollected(event)\n }\n}\n\nexport function formatError(e) {\n if (e instanceof Error) {\n var stackTrace = computeStackTrace(e)\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace))\n },\n message: stackTrace.message\n }\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE\n },\n message: NonErrorPrefix.UNCAUGHT + ' ' + jsonStringify(e)\n }\n}\n\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter(\n (frame) =>\n !frame.url ||\n ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) {\n return startsWith(frame.url, allowedFrameUrl)\n })\n )\n return stackTrace\n}\n"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TelemetryType = exports.TelemetryStatusType = void 0;
7
+ var TelemetryType = {
8
+ log: 'log',
9
+ configuration: 'configuration'
10
+ };
11
+ exports.TelemetryType = TelemetryType;
12
+ var TelemetryStatusType = {
13
+ debug: 'debug',
14
+ error: 'error'
15
+ };
16
+ exports.TelemetryStatusType = TelemetryStatusType;
17
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":["TelemetryType","log","configuration","exports","TelemetryStatusType","debug","error"],"sources":["../../src/telemetry/types.js"],"sourcesContent":["export var TelemetryType = {\n log: 'log',\n configuration: 'configuration'\n}\n\nexport var TelemetryStatusType = {\n debug: 'debug',\n error: 'error'\n}\n"],"mappings":";;;;;;AAAO,IAAIA,aAAa,GAAG;EACzBC,GAAG,EAAE,KAAK;EACVC,aAAa,EAAE;AACjB,CAAC;AAAAC,OAAA,CAAAH,aAAA,GAAAA,aAAA;AAEM,IAAII,mBAAmB,GAAG;EAC/BC,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE;AACT,CAAC;AAAAH,OAAA,CAAAC,mBAAA,GAAAA,mBAAA"}
@@ -4,65 +4,49 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.computeStackTrace = computeStackTrace;
7
-
8
7
  var _tools = require("../helper/tools");
9
-
10
- 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); }
11
-
8
+ 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); }
12
9
  var UNKNOWN_FUNCTION = '?';
10
+
13
11
  /**
14
12
  * Computes a stack trace for an exception.
15
13
  */
16
-
17
14
  function computeStackTrace(ex) {
18
15
  var stack = [];
19
16
  var stackProperty = tryToGetString(ex, 'stack');
20
-
21
17
  if (stackProperty) {
22
18
  (0, _tools.each)(stackProperty.split('\n'), function (line) {
23
19
  var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);
24
-
25
20
  if (stackFrame) {
26
21
  if (!stackFrame.func && stackFrame.line) {
27
22
  stackFrame.func = UNKNOWN_FUNCTION;
28
23
  }
29
-
30
24
  stack.push(stackFrame);
31
25
  }
32
26
  });
33
27
  }
34
-
35
28
  return {
36
29
  message: tryToGetString(ex, 'message'),
37
30
  name: tryToGetString(ex, 'name'),
38
31
  stack: stack
39
32
  };
40
33
  }
41
-
42
34
  var fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)';
43
35
  var filePosition = '(?::(\\d+))';
44
36
  var CHROME_LINE_RE = new RegExp('^\\s*at (.*?) ?\\(' + fileUrl + filePosition + '?' + filePosition + '?\\)?\\s*$', 'i');
45
37
  var CHROME_EVAL_RE = new RegExp('\\((\\S*)' + filePosition + filePosition + '\\)');
46
-
47
38
  function parseChromeLine(line) {
48
39
  var parts = CHROME_LINE_RE.exec(line);
49
-
50
40
  if (!parts) {
51
41
  return;
52
42
  }
53
-
54
43
  var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line
55
-
56
44
  var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line
57
-
58
45
  var submatch = CHROME_EVAL_RE.exec(parts[2]);
59
-
60
46
  if (isEval && submatch) {
61
47
  // throw out eval line/column and use top-most line/column number
62
48
  parts[2] = submatch[1]; // url
63
-
64
49
  parts[3] = submatch[2]; // line
65
-
66
50
  parts[4] = submatch[3]; // column
67
51
  }
68
52
 
@@ -74,16 +58,12 @@ function parseChromeLine(line) {
74
58
  url: !isNative ? parts[2] : undefined
75
59
  };
76
60
  }
77
-
78
61
  var CHROME_ANONYMOUS_FUNCTION_RE = new RegExp('^\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\s*$', 'i');
79
-
80
62
  function parseChromeAnonymousLine(line) {
81
63
  var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);
82
-
83
64
  if (!parts) {
84
65
  return;
85
66
  }
86
-
87
67
  return {
88
68
  args: [],
89
69
  column: parts[3] ? +parts[3] : undefined,
@@ -92,16 +72,12 @@ function parseChromeAnonymousLine(line) {
92
72
  url: parts[1]
93
73
  };
94
74
  }
95
-
96
75
  var WINJS_LINE_RE = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
97
-
98
76
  function parseWinLine(line) {
99
77
  var parts = WINJS_LINE_RE.exec(line);
100
-
101
78
  if (!parts) {
102
79
  return;
103
80
  }
104
-
105
81
  return {
106
82
  args: [],
107
83
  column: parts[4] ? +parts[4] : undefined,
@@ -110,20 +86,15 @@ function parseWinLine(line) {
110
86
  url: parts[2]
111
87
  };
112
88
  }
113
-
114
89
  var GECKO_LINE_RE = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i;
115
90
  var GECKO_EVAL_RE = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
116
-
117
91
  function parseGeckoLine(line) {
118
92
  var parts = GECKO_LINE_RE.exec(line);
119
-
120
93
  if (!parts) {
121
94
  return;
122
95
  }
123
-
124
96
  var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;
125
97
  var submatch = GECKO_EVAL_RE.exec(parts[3]);
126
-
127
98
  if (isEval && submatch) {
128
99
  // throw out eval line/column and use top-most line number
129
100
  parts[3] = submatch[1];
@@ -139,12 +110,11 @@ function parseGeckoLine(line) {
139
110
  url: parts[3]
140
111
  };
141
112
  }
142
-
143
113
  function tryToGetString(candidate, property) {
144
114
  if (_typeof(candidate) !== 'object' || !candidate || !(property in candidate)) {
145
115
  return undefined;
146
116
  }
147
-
148
117
  var value = candidate[property];
149
118
  return typeof value === 'string' ? value : undefined;
150
- }
119
+ }
120
+ //# sourceMappingURL=computeStackTrace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeStackTrace.js","names":["_tools","require","_typeof","obj","Symbol","iterator","constructor","prototype","UNKNOWN_FUNCTION","computeStackTrace","ex","stack","stackProperty","tryToGetString","each","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","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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"}
@@ -15,7 +15,6 @@ Object.defineProperty(exports, "startUnhandledErrorCollection", {
15
15
  return _tracekit.startUnhandledErrorCollection;
16
16
  }
17
17
  });
18
-
19
18
  var _computeStackTrace = require("./computeStackTrace");
20
-
21
- var _tracekit = require("./tracekit");
19
+ var _tracekit = require("./tracekit");
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_computeStackTrace","require","_tracekit"],"sources":["../../src/tracekit/index.js"],"sourcesContent":["export { computeStackTrace } from './computeStackTrace'\nexport { startUnhandledErrorCollection } from './tracekit'\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA"}
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.startUnhandledErrorCollection = startUnhandledErrorCollection;
7
-
8
7
  var _instrumentMethod = require("../helper/instrumentMethod");
9
-
10
8
  var _tools = require("../helper/tools");
11
-
12
9
  var _computeStackTrace = require("./computeStackTrace");
13
-
14
10
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types
15
11
  var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\s\S]*)$/;
16
12
  /**
@@ -47,27 +43,22 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran
47
43
 
48
44
  function startUnhandledErrorCollection(callback) {
49
45
  var _instrumentOnError = instrumentOnError(callback);
50
-
51
46
  var _instrumentUnhandledRejection = instrumentUnhandledRejection(callback);
52
-
53
47
  return {
54
48
  stop: function stop() {
55
49
  _instrumentOnError.stop();
56
-
57
50
  _instrumentUnhandledRejection.stop();
58
51
  }
59
52
  };
60
53
  }
54
+
61
55
  /**
62
56
  * Install a global onerror handler
63
57
  */
64
-
65
-
66
58
  function instrumentOnError(callback) {
67
59
  return (0, _instrumentMethod.instrumentMethodAndCallOriginal)(window, 'onerror', {
68
60
  before: function before(messageObj, url, line, column, errorObj) {
69
61
  var stackTrace;
70
-
71
62
  if (errorObj instanceof Error) {
72
63
  stackTrace = (0, _computeStackTrace.computeStackTrace)(errorObj);
73
64
  } else {
@@ -83,25 +74,20 @@ function instrumentOnError(callback) {
83
74
  stack: [location]
84
75
  };
85
76
  }
86
-
87
77
  callback(stackTrace, (0, _tools.isNullUndefinedDefaultValue)(errorObj, messageObj));
88
78
  }
89
79
  });
90
80
  }
91
-
92
81
  function tryToParseMessage(messageObj) {
93
82
  var name;
94
83
  var message;
95
-
96
84
  if ({}.toString.call(messageObj) === '[object String]') {
97
85
  var groups = ERROR_TYPES_RE.exec(messageObj);
98
-
99
86
  if (groups) {
100
87
  name = groups[1];
101
88
  message = groups[2];
102
89
  }
103
90
  }
104
-
105
91
  return {
106
92
  name: name,
107
93
  message: message
@@ -110,8 +96,6 @@ function tryToParseMessage(messageObj) {
110
96
  /**
111
97
  * Install a global onunhandledrejection handler
112
98
  */
113
-
114
-
115
99
  function instrumentUnhandledRejection(callback) {
116
100
  return (0, _instrumentMethod.instrumentMethodAndCallOriginal)(window, 'onunhandledrejection', {
117
101
  before: function before(e) {
@@ -120,4 +104,5 @@ function instrumentUnhandledRejection(callback) {
120
104
  callback(stack, reason);
121
105
  }
122
106
  });
123
- }
107
+ }
108
+ //# sourceMappingURL=tracekit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracekit.js","names":["_instrumentMethod","require","_tools","_computeStackTrace","ERROR_TYPES_RE","startUnhandledErrorCollection","callback","_instrumentOnError","instrumentOnError","_instrumentUnhandledRejection","instrumentUnhandledRejection","stop","instrumentMethodAndCallOriginal","window","before","messageObj","url","line","column","errorObj","stackTrace","Error","computeStackTrace","location","parse","tryToParseMessage","name","message","stack","isNullUndefinedDefaultValue","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,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAEA;AACA,IAAIG,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;;AAEO,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,OAAO,IAAAM,iDAA+B,EAACC,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,GAAG,IAAAE,oCAAiB,EAACH,QAAQ,CAAC;MAC1C,CAAC,MAAM;QACL,IAAII,QAAQ,GAAG;UACbP,GAAG,EAAEA,GAAG;UACRE,MAAM,EAAEA,MAAM;UACdD,IAAI,EAAEA;QACR,CAAC;QACD,IAAIO,KAAK,GAAGC,iBAAiB,CAACV,UAAU,CAAC;QAEzCK,UAAU,GAAG;UACXM,IAAI,EAAEF,KAAK,CAACE,IAAI;UAChBC,OAAO,EAAEH,KAAK,CAACG,OAAO;UACtBC,KAAK,EAAE,CAACL,QAAQ;QAClB,CAAC;MACH;MACAjB,QAAQ,CAACc,UAAU,EAAE,IAAAS,kCAA2B,EAACV,QAAQ,EAAEJ,UAAU,CAAC,CAAC;IACzE;EACF,CAAC,CAAC;AACJ;AACA,SAASU,iBAAiBA,CAACV,UAAU,EAAE;EACrC,IAAIW,IAAI;EACR,IAAIC,OAAO;EACX,IAAI,CAAC,CAAC,CAACG,QAAQ,CAACC,IAAI,CAAChB,UAAU,CAAC,KAAK,iBAAiB,EAAE;IACtD,IAAIiB,MAAM,GAAG5B,cAAc,CAAC6B,IAAI,CAAClB,UAAU,CAAC;IAC5C,IAAIiB,MAAM,EAAE;MACVN,IAAI,GAAGM,MAAM,CAAC,CAAC,CAAC;MAChBL,OAAO,GAAGK,MAAM,CAAC,CAAC,CAAC;IACrB;EACF;EACA,OAAO;IAAEN,IAAI,EAAEA,IAAI;IAAEC,OAAO,EAAEA;EAAQ,CAAC;AACzC;AACA;AACA;AACA;AACA,SAASjB,4BAA4BA,CAACJ,QAAQ,EAAE;EAC9C,OAAO,IAAAM,iDAA+B,EAACC,MAAM,EAAE,sBAAsB,EAAE;IACrEC,MAAM,EAAE,SAAAA,OAAUoB,CAAC,EAAE;MACnB,IAAIC,MAAM,GAAGD,CAAC,CAACC,MAAM,IAAI,cAAc;MACvC,IAAIP,KAAK,GAAG,IAAAN,oCAAiB,EAACa,MAAM,CAAC;MACrC7B,QAAQ,CAACsB,KAAK,EAAEO,MAAM,CAAC;IACzB;EACF,CAAC,CAAC;AACJ"}