@cloudcare/browser-rum-slim 3.3.3

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 (309) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/bundle/dataflux-rum-slim.js +1 -0
  4. package/cjs/boot/buildEnv.js +11 -0
  5. package/cjs/boot/buildEnv.js.map +1 -0
  6. package/cjs/boot/perStartRum.js +227 -0
  7. package/cjs/boot/perStartRum.js.map +1 -0
  8. package/cjs/boot/rum.js +180 -0
  9. package/cjs/boot/rum.js.map +1 -0
  10. package/cjs/boot/rum.slim.entry.js +13 -0
  11. package/cjs/boot/rum.slim.entry.js.map +1 -0
  12. package/cjs/boot/rumEntryFactory.js +15 -0
  13. package/cjs/boot/rumEntryFactory.js.map +1 -0
  14. package/cjs/boot/rumPublicApi.js +285 -0
  15. package/cjs/boot/rumPublicApi.js.map +1 -0
  16. package/cjs/boot/rumRecorderApiStub.js +19 -0
  17. package/cjs/boot/rumRecorderApiStub.js.map +1 -0
  18. package/cjs/boot/rumSlimConfiguration.js +16 -0
  19. package/cjs/boot/rumSlimConfiguration.js.map +1 -0
  20. package/cjs/constants.js +41 -0
  21. package/cjs/constants.js.map +1 -0
  22. package/cjs/domain/assembly.js +172 -0
  23. package/cjs/domain/assembly.js.map +1 -0
  24. package/cjs/domain/configuration.js +272 -0
  25. package/cjs/domain/configuration.js.map +1 -0
  26. package/cjs/domain/contexts/commonContext.js +14 -0
  27. package/cjs/domain/contexts/commonContext.js.map +1 -0
  28. package/cjs/domain/contexts/displayContext.js +22 -0
  29. package/cjs/domain/contexts/displayContext.js.map +1 -0
  30. package/cjs/domain/contexts/foregroundContexts.js +111 -0
  31. package/cjs/domain/contexts/foregroundContexts.js.map +1 -0
  32. package/cjs/domain/contexts/internalContext.js +47 -0
  33. package/cjs/domain/contexts/internalContext.js.map +1 -0
  34. package/cjs/domain/contexts/pageStateHistory.js +111 -0
  35. package/cjs/domain/contexts/pageStateHistory.js.map +1 -0
  36. package/cjs/domain/contexts/urlContexts.js +73 -0
  37. package/cjs/domain/contexts/urlContexts.js.map +1 -0
  38. package/cjs/domain/contexts/viewContexts.js +51 -0
  39. package/cjs/domain/contexts/viewContexts.js.map +1 -0
  40. package/cjs/domain/domMutationObservable.js +69 -0
  41. package/cjs/domain/domMutationObservable.js.map +1 -0
  42. package/cjs/domain/encoderStreamId.js +11 -0
  43. package/cjs/domain/encoderStreamId.js.map +1 -0
  44. package/cjs/domain/firstInputPolyfill.js +83 -0
  45. package/cjs/domain/firstInputPolyfill.js.map +1 -0
  46. package/cjs/domain/initViewportObservable.js +44 -0
  47. package/cjs/domain/initViewportObservable.js.map +1 -0
  48. package/cjs/domain/locationChangeObservable.js +57 -0
  49. package/cjs/domain/locationChangeObservable.js.map +1 -0
  50. package/cjs/domain/performanceObservable.js +124 -0
  51. package/cjs/domain/performanceObservable.js.map +1 -0
  52. package/cjs/domain/performanceUtils.js +47 -0
  53. package/cjs/domain/performanceUtils.js.map +1 -0
  54. package/cjs/domain/requestCollection.js +127 -0
  55. package/cjs/domain/requestCollection.js.map +1 -0
  56. package/cjs/domain/rumEventsCollection/actions/actionCollection.js +89 -0
  57. package/cjs/domain/rumEventsCollection/actions/actionCollection.js.map +1 -0
  58. package/cjs/domain/rumEventsCollection/actions/clickChain.js +69 -0
  59. package/cjs/domain/rumEventsCollection/actions/clickChain.js.map +1 -0
  60. package/cjs/domain/rumEventsCollection/actions/computeFrustration.js +75 -0
  61. package/cjs/domain/rumEventsCollection/actions/computeFrustration.js.map +1 -0
  62. package/cjs/domain/rumEventsCollection/actions/getActionNameFromElement.js +232 -0
  63. package/cjs/domain/rumEventsCollection/actions/getActionNameFromElement.js.map +1 -0
  64. package/cjs/domain/rumEventsCollection/actions/getSelectorsFromElement.js +220 -0
  65. package/cjs/domain/rumEventsCollection/actions/getSelectorsFromElement.js.map +1 -0
  66. package/cjs/domain/rumEventsCollection/actions/interactionSelectorCache.js +28 -0
  67. package/cjs/domain/rumEventsCollection/actions/interactionSelectorCache.js.map +1 -0
  68. package/cjs/domain/rumEventsCollection/actions/listenActionEvents.js +73 -0
  69. package/cjs/domain/rumEventsCollection/actions/listenActionEvents.js.map +1 -0
  70. package/cjs/domain/rumEventsCollection/actions/trackClickActions.js +253 -0
  71. package/cjs/domain/rumEventsCollection/actions/trackClickActions.js.map +1 -0
  72. package/cjs/domain/rumEventsCollection/error/errorCollection.js +90 -0
  73. package/cjs/domain/rumEventsCollection/error/errorCollection.js.map +1 -0
  74. package/cjs/domain/rumEventsCollection/error/trackConsoleError.js +18 -0
  75. package/cjs/domain/rumEventsCollection/error/trackConsoleError.js.map +1 -0
  76. package/cjs/domain/rumEventsCollection/error/trackReportError.js +25 -0
  77. package/cjs/domain/rumEventsCollection/error/trackReportError.js.map +1 -0
  78. package/cjs/domain/rumEventsCollection/longTask/longAnimationFrameCollection.js +61 -0
  79. package/cjs/domain/rumEventsCollection/longTask/longAnimationFrameCollection.js.map +1 -0
  80. package/cjs/domain/rumEventsCollection/longTask/longTaskCollection.js +44 -0
  81. package/cjs/domain/rumEventsCollection/longTask/longTaskCollection.js.map +1 -0
  82. package/cjs/domain/rumEventsCollection/resource/matchRequestResourceEntry.js +74 -0
  83. package/cjs/domain/rumEventsCollection/resource/matchRequestResourceEntry.js.map +1 -0
  84. package/cjs/domain/rumEventsCollection/resource/resourceCollection.js +239 -0
  85. package/cjs/domain/rumEventsCollection/resource/resourceCollection.js.map +1 -0
  86. package/cjs/domain/rumEventsCollection/resource/resourceTrackerManager.js +237 -0
  87. package/cjs/domain/rumEventsCollection/resource/resourceTrackerManager.js.map +1 -0
  88. package/cjs/domain/rumEventsCollection/resource/resourceUtils.js +240 -0
  89. package/cjs/domain/rumEventsCollection/resource/resourceUtils.js.map +1 -0
  90. package/cjs/domain/rumEventsCollection/resource/retrieveInitialDocumentResourceTiming.js +25 -0
  91. package/cjs/domain/rumEventsCollection/resource/retrieveInitialDocumentResourceTiming.js.map +1 -0
  92. package/cjs/domain/rumEventsCollection/view/interactionCountPolyfill.js +54 -0
  93. package/cjs/domain/rumEventsCollection/view/interactionCountPolyfill.js.map +1 -0
  94. package/cjs/domain/rumEventsCollection/view/trackCommonViewMetrics.js +48 -0
  95. package/cjs/domain/rumEventsCollection/view/trackCommonViewMetrics.js.map +1 -0
  96. package/cjs/domain/rumEventsCollection/view/trackCumulativeLayoutShift.js +125 -0
  97. package/cjs/domain/rumEventsCollection/view/trackCumulativeLayoutShift.js.map +1 -0
  98. package/cjs/domain/rumEventsCollection/view/trackFirstContentfulPaint.js +27 -0
  99. package/cjs/domain/rumEventsCollection/view/trackFirstContentfulPaint.js.map +1 -0
  100. package/cjs/domain/rumEventsCollection/view/trackFirstHidden.js +55 -0
  101. package/cjs/domain/rumEventsCollection/view/trackFirstHidden.js.map +1 -0
  102. package/cjs/domain/rumEventsCollection/view/trackFirstInput.js +47 -0
  103. package/cjs/domain/rumEventsCollection/view/trackFirstInput.js.map +1 -0
  104. package/cjs/domain/rumEventsCollection/view/trackInitialViewTimings.js +51 -0
  105. package/cjs/domain/rumEventsCollection/view/trackInitialViewTimings.js.map +1 -0
  106. package/cjs/domain/rumEventsCollection/view/trackInteractionToNextPaint.js +162 -0
  107. package/cjs/domain/rumEventsCollection/view/trackInteractionToNextPaint.js.map +1 -0
  108. package/cjs/domain/rumEventsCollection/view/trackLargestContentfulPaint.js +61 -0
  109. package/cjs/domain/rumEventsCollection/view/trackLargestContentfulPaint.js.map +1 -0
  110. package/cjs/domain/rumEventsCollection/view/trackLoadingTime.js +51 -0
  111. package/cjs/domain/rumEventsCollection/view/trackLoadingTime.js.map +1 -0
  112. package/cjs/domain/rumEventsCollection/view/trackNavigationTimings.js +57 -0
  113. package/cjs/domain/rumEventsCollection/view/trackNavigationTimings.js.map +1 -0
  114. package/cjs/domain/rumEventsCollection/view/trackScrollMetrics.js +92 -0
  115. package/cjs/domain/rumEventsCollection/view/trackScrollMetrics.js.map +1 -0
  116. package/cjs/domain/rumEventsCollection/view/trackViewEventCounts.js +21 -0
  117. package/cjs/domain/rumEventsCollection/view/trackViewEventCounts.js.map +1 -0
  118. package/cjs/domain/rumEventsCollection/view/trackViews.js +269 -0
  119. package/cjs/domain/rumEventsCollection/view/trackViews.js.map +1 -0
  120. package/cjs/domain/rumEventsCollection/view/viewCollection.js +131 -0
  121. package/cjs/domain/rumEventsCollection/view/viewCollection.js.map +1 -0
  122. package/cjs/domain/rumSessionManager.js +187 -0
  123. package/cjs/domain/rumSessionManager.js.map +1 -0
  124. package/cjs/domain/tracing/ddtraceTracer.js +46 -0
  125. package/cjs/domain/tracing/ddtraceTracer.js.map +1 -0
  126. package/cjs/domain/tracing/getDocumentTraceId.js +80 -0
  127. package/cjs/domain/tracing/getDocumentTraceId.js.map +1 -0
  128. package/cjs/domain/tracing/jaegerTracer.js +48 -0
  129. package/cjs/domain/tracing/jaegerTracer.js.map +1 -0
  130. package/cjs/domain/tracing/sampler.js +69 -0
  131. package/cjs/domain/tracing/sampler.js.map +1 -0
  132. package/cjs/domain/tracing/skywalkingTracer.js +96 -0
  133. package/cjs/domain/tracing/skywalkingTracer.js.map +1 -0
  134. package/cjs/domain/tracing/traceIdentifier.js +66 -0
  135. package/cjs/domain/tracing/traceIdentifier.js.map +1 -0
  136. package/cjs/domain/tracing/tracer.js +133 -0
  137. package/cjs/domain/tracing/tracer.js.map +1 -0
  138. package/cjs/domain/tracing/w3cTraceParentTracer.js +74 -0
  139. package/cjs/domain/tracing/w3cTraceParentTracer.js.map +1 -0
  140. package/cjs/domain/tracing/zipkinMultiTracer.js +48 -0
  141. package/cjs/domain/tracing/zipkinMultiTracer.js.map +1 -0
  142. package/cjs/domain/tracing/zipkinSingleTracer.js +47 -0
  143. package/cjs/domain/tracing/zipkinSingleTracer.js.map +1 -0
  144. package/cjs/domain/trackEventCounts.js +55 -0
  145. package/cjs/domain/trackEventCounts.js.map +1 -0
  146. package/cjs/domain/usr/index.js +44 -0
  147. package/cjs/domain/usr/index.js.map +1 -0
  148. package/cjs/domain/waitPageActivityEnd.js +151 -0
  149. package/cjs/domain/waitPageActivityEnd.js.map +1 -0
  150. package/cjs/index.js +13 -0
  151. package/cjs/index.js.map +1 -0
  152. package/cjs/transport/startRumBatch.js +26 -0
  153. package/cjs/transport/startRumBatch.js.map +1 -0
  154. package/cjs/transport/startRumEventBridge.js +15 -0
  155. package/cjs/transport/startRumEventBridge.js.map +1 -0
  156. package/esm/boot/buildEnv.js +5 -0
  157. package/esm/boot/buildEnv.js.map +1 -0
  158. package/esm/boot/perStartRum.js +221 -0
  159. package/esm/boot/perStartRum.js.map +1 -0
  160. package/esm/boot/rum.js +173 -0
  161. package/esm/boot/rum.js.map +1 -0
  162. package/esm/boot/rum.slim.entry.js +7 -0
  163. package/esm/boot/rum.slim.entry.js.map +1 -0
  164. package/esm/boot/rumEntryFactory.js +9 -0
  165. package/esm/boot/rumEntryFactory.js.map +1 -0
  166. package/esm/boot/rumPublicApi.js +279 -0
  167. package/esm/boot/rumPublicApi.js.map +1 -0
  168. package/esm/boot/rumRecorderApiStub.js +13 -0
  169. package/esm/boot/rumRecorderApiStub.js.map +1 -0
  170. package/esm/boot/rumSlimConfiguration.js +10 -0
  171. package/esm/boot/rumSlimConfiguration.js.map +1 -0
  172. package/esm/constants.js +35 -0
  173. package/esm/constants.js.map +1 -0
  174. package/esm/domain/assembly.js +166 -0
  175. package/esm/domain/assembly.js.map +1 -0
  176. package/esm/domain/configuration.js +266 -0
  177. package/esm/domain/configuration.js.map +1 -0
  178. package/esm/domain/contexts/commonContext.js +8 -0
  179. package/esm/domain/contexts/commonContext.js.map +1 -0
  180. package/esm/domain/contexts/displayContext.js +16 -0
  181. package/esm/domain/contexts/displayContext.js.map +1 -0
  182. package/esm/domain/contexts/foregroundContexts.js +103 -0
  183. package/esm/domain/contexts/foregroundContexts.js.map +1 -0
  184. package/esm/domain/contexts/internalContext.js +41 -0
  185. package/esm/domain/contexts/internalContext.js.map +1 -0
  186. package/esm/domain/contexts/pageStateHistory.js +104 -0
  187. package/esm/domain/contexts/pageStateHistory.js.map +1 -0
  188. package/esm/domain/contexts/urlContexts.js +67 -0
  189. package/esm/domain/contexts/urlContexts.js.map +1 -0
  190. package/esm/domain/contexts/viewContexts.js +44 -0
  191. package/esm/domain/contexts/viewContexts.js.map +1 -0
  192. package/esm/domain/domMutationObservable.js +62 -0
  193. package/esm/domain/domMutationObservable.js.map +1 -0
  194. package/esm/domain/encoderStreamId.js +5 -0
  195. package/esm/domain/encoderStreamId.js.map +1 -0
  196. package/esm/domain/firstInputPolyfill.js +77 -0
  197. package/esm/domain/firstInputPolyfill.js.map +1 -0
  198. package/esm/domain/initViewportObservable.js +36 -0
  199. package/esm/domain/initViewportObservable.js.map +1 -0
  200. package/esm/domain/locationChangeObservable.js +51 -0
  201. package/esm/domain/locationChangeObservable.js.map +1 -0
  202. package/esm/domain/performanceObservable.js +116 -0
  203. package/esm/domain/performanceObservable.js.map +1 -0
  204. package/esm/domain/performanceUtils.js +40 -0
  205. package/esm/domain/performanceUtils.js.map +1 -0
  206. package/esm/domain/requestCollection.js +119 -0
  207. package/esm/domain/requestCollection.js.map +1 -0
  208. package/esm/domain/rumEventsCollection/actions/actionCollection.js +83 -0
  209. package/esm/domain/rumEventsCollection/actions/actionCollection.js.map +1 -0
  210. package/esm/domain/rumEventsCollection/actions/clickChain.js +62 -0
  211. package/esm/domain/rumEventsCollection/actions/clickChain.js.map +1 -0
  212. package/esm/domain/rumEventsCollection/actions/computeFrustration.js +67 -0
  213. package/esm/domain/rumEventsCollection/actions/computeFrustration.js.map +1 -0
  214. package/esm/domain/rumEventsCollection/actions/getActionNameFromElement.js +225 -0
  215. package/esm/domain/rumEventsCollection/actions/getActionNameFromElement.js.map +1 -0
  216. package/esm/domain/rumEventsCollection/actions/getSelectorsFromElement.js +212 -0
  217. package/esm/domain/rumEventsCollection/actions/getSelectorsFromElement.js.map +1 -0
  218. package/esm/domain/rumEventsCollection/actions/interactionSelectorCache.js +20 -0
  219. package/esm/domain/rumEventsCollection/actions/interactionSelectorCache.js.map +1 -0
  220. package/esm/domain/rumEventsCollection/actions/listenActionEvents.js +67 -0
  221. package/esm/domain/rumEventsCollection/actions/listenActionEvents.js.map +1 -0
  222. package/esm/domain/rumEventsCollection/actions/trackClickActions.js +244 -0
  223. package/esm/domain/rumEventsCollection/actions/trackClickActions.js.map +1 -0
  224. package/esm/domain/rumEventsCollection/error/errorCollection.js +83 -0
  225. package/esm/domain/rumEventsCollection/error/errorCollection.js.map +1 -0
  226. package/esm/domain/rumEventsCollection/error/trackConsoleError.js +12 -0
  227. package/esm/domain/rumEventsCollection/error/trackConsoleError.js.map +1 -0
  228. package/esm/domain/rumEventsCollection/error/trackReportError.js +19 -0
  229. package/esm/domain/rumEventsCollection/error/trackReportError.js.map +1 -0
  230. package/esm/domain/rumEventsCollection/longTask/longAnimationFrameCollection.js +55 -0
  231. package/esm/domain/rumEventsCollection/longTask/longAnimationFrameCollection.js.map +1 -0
  232. package/esm/domain/rumEventsCollection/longTask/longTaskCollection.js +38 -0
  233. package/esm/domain/rumEventsCollection/longTask/longTaskCollection.js.map +1 -0
  234. package/esm/domain/rumEventsCollection/resource/matchRequestResourceEntry.js +69 -0
  235. package/esm/domain/rumEventsCollection/resource/matchRequestResourceEntry.js.map +1 -0
  236. package/esm/domain/rumEventsCollection/resource/resourceCollection.js +233 -0
  237. package/esm/domain/rumEventsCollection/resource/resourceCollection.js.map +1 -0
  238. package/esm/domain/rumEventsCollection/resource/resourceTrackerManager.js +231 -0
  239. package/esm/domain/rumEventsCollection/resource/resourceTrackerManager.js.map +1 -0
  240. package/esm/domain/rumEventsCollection/resource/resourceUtils.js +218 -0
  241. package/esm/domain/rumEventsCollection/resource/resourceUtils.js.map +1 -0
  242. package/esm/domain/rumEventsCollection/resource/retrieveInitialDocumentResourceTiming.js +19 -0
  243. package/esm/domain/rumEventsCollection/resource/retrieveInitialDocumentResourceTiming.js.map +1 -0
  244. package/esm/domain/rumEventsCollection/view/interactionCountPolyfill.js +47 -0
  245. package/esm/domain/rumEventsCollection/view/interactionCountPolyfill.js.map +1 -0
  246. package/esm/domain/rumEventsCollection/view/trackCommonViewMetrics.js +42 -0
  247. package/esm/domain/rumEventsCollection/view/trackCommonViewMetrics.js.map +1 -0
  248. package/esm/domain/rumEventsCollection/view/trackCumulativeLayoutShift.js +117 -0
  249. package/esm/domain/rumEventsCollection/view/trackCumulativeLayoutShift.js.map +1 -0
  250. package/esm/domain/rumEventsCollection/view/trackFirstContentfulPaint.js +20 -0
  251. package/esm/domain/rumEventsCollection/view/trackFirstContentfulPaint.js.map +1 -0
  252. package/esm/domain/rumEventsCollection/view/trackFirstHidden.js +49 -0
  253. package/esm/domain/rumEventsCollection/view/trackFirstHidden.js.map +1 -0
  254. package/esm/domain/rumEventsCollection/view/trackFirstInput.js +41 -0
  255. package/esm/domain/rumEventsCollection/view/trackFirstInput.js.map +1 -0
  256. package/esm/domain/rumEventsCollection/view/trackInitialViewTimings.js +44 -0
  257. package/esm/domain/rumEventsCollection/view/trackInitialViewTimings.js.map +1 -0
  258. package/esm/domain/rumEventsCollection/view/trackInteractionToNextPaint.js +153 -0
  259. package/esm/domain/rumEventsCollection/view/trackInteractionToNextPaint.js.map +1 -0
  260. package/esm/domain/rumEventsCollection/view/trackLargestContentfulPaint.js +54 -0
  261. package/esm/domain/rumEventsCollection/view/trackLargestContentfulPaint.js.map +1 -0
  262. package/esm/domain/rumEventsCollection/view/trackLoadingTime.js +45 -0
  263. package/esm/domain/rumEventsCollection/view/trackLoadingTime.js.map +1 -0
  264. package/esm/domain/rumEventsCollection/view/trackNavigationTimings.js +51 -0
  265. package/esm/domain/rumEventsCollection/view/trackNavigationTimings.js.map +1 -0
  266. package/esm/domain/rumEventsCollection/view/trackScrollMetrics.js +84 -0
  267. package/esm/domain/rumEventsCollection/view/trackScrollMetrics.js.map +1 -0
  268. package/esm/domain/rumEventsCollection/view/trackViewEventCounts.js +15 -0
  269. package/esm/domain/rumEventsCollection/view/trackViewEventCounts.js.map +1 -0
  270. package/esm/domain/rumEventsCollection/view/trackViews.js +262 -0
  271. package/esm/domain/rumEventsCollection/view/trackViews.js.map +1 -0
  272. package/esm/domain/rumEventsCollection/view/viewCollection.js +125 -0
  273. package/esm/domain/rumEventsCollection/view/viewCollection.js.map +1 -0
  274. package/esm/domain/rumSessionManager.js +179 -0
  275. package/esm/domain/rumSessionManager.js.map +1 -0
  276. package/esm/domain/tracing/ddtraceTracer.js +40 -0
  277. package/esm/domain/tracing/ddtraceTracer.js.map +1 -0
  278. package/esm/domain/tracing/getDocumentTraceId.js +69 -0
  279. package/esm/domain/tracing/getDocumentTraceId.js.map +1 -0
  280. package/esm/domain/tracing/jaegerTracer.js +42 -0
  281. package/esm/domain/tracing/jaegerTracer.js.map +1 -0
  282. package/esm/domain/tracing/sampler.js +61 -0
  283. package/esm/domain/tracing/sampler.js.map +1 -0
  284. package/esm/domain/tracing/skywalkingTracer.js +90 -0
  285. package/esm/domain/tracing/skywalkingTracer.js.map +1 -0
  286. package/esm/domain/tracing/traceIdentifier.js +57 -0
  287. package/esm/domain/tracing/traceIdentifier.js.map +1 -0
  288. package/esm/domain/tracing/tracer.js +124 -0
  289. package/esm/domain/tracing/tracer.js.map +1 -0
  290. package/esm/domain/tracing/w3cTraceParentTracer.js +69 -0
  291. package/esm/domain/tracing/w3cTraceParentTracer.js.map +1 -0
  292. package/esm/domain/tracing/zipkinMultiTracer.js +42 -0
  293. package/esm/domain/tracing/zipkinMultiTracer.js.map +1 -0
  294. package/esm/domain/tracing/zipkinSingleTracer.js +41 -0
  295. package/esm/domain/tracing/zipkinSingleTracer.js.map +1 -0
  296. package/esm/domain/trackEventCounts.js +49 -0
  297. package/esm/domain/trackEventCounts.js.map +1 -0
  298. package/esm/domain/usr/index.js +38 -0
  299. package/esm/domain/usr/index.js.map +1 -0
  300. package/esm/domain/waitPageActivityEnd.js +142 -0
  301. package/esm/domain/waitPageActivityEnd.js.map +1 -0
  302. package/esm/index.js +3 -0
  303. package/esm/index.js.map +1 -0
  304. package/esm/transport/startRumBatch.js +20 -0
  305. package/esm/transport/startRumBatch.js.map +1 -0
  306. package/esm/transport/startRumEventBridge.js +9 -0
  307. package/esm/transport/startRumEventBridge.js.map +1 -0
  308. package/package.json +39 -0
  309. package/types/index.d.ts +134 -0
@@ -0,0 +1,262 @@
1
+ import { shallowClone, elapsed, UUID, ONE_MINUTE, throttle, clocksNow, clocksOrigin, timeStampNow, looksLikeRelativeTime, ViewLoadingType, LifeCycleEventType, PageExitReason, isHashAnAnchor, getPathFromHash, noop, setInterval, Observable, clearInterval, setTimeout, isNullUndefinedDefaultValue, createContextManager } from '@cloudcare/browser-core';
2
+ import { trackInitialViewMetrics } from './trackInitialViewTimings';
3
+ import { trackCommonViewMetrics } from './trackCommonViewMetrics';
4
+ import { trackViewEventCounts } from './trackViewEventCounts';
5
+ export var THROTTLE_VIEW_UPDATE_PERIOD = 3000;
6
+ export var SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE;
7
+ export var KEEP_TRACKING_AFTER_VIEW_DELAY = 5 * ONE_MINUTE;
8
+ export function trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, areViewsTrackedAutomatically, initialViewOptions) {
9
+ var activeViews = new Set();
10
+ function startNewView(loadingType, startClocks, viewOptions) {
11
+ var newlyCreatedView = newView(lifeCycle, domMutationObservable, configuration, location, loadingType, startClocks, viewOptions);
12
+ activeViews.add(newlyCreatedView);
13
+ newlyCreatedView.stopObservable.subscribe(function () {
14
+ activeViews["delete"](newlyCreatedView);
15
+ });
16
+ return newlyCreatedView;
17
+ }
18
+ var currentView = startNewView(ViewLoadingType.INITIAL_LOAD, clocksOrigin(), initialViewOptions);
19
+ startViewLifeCycle();
20
+ var locationChangeSubscription;
21
+ if (areViewsTrackedAutomatically) {
22
+ locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable);
23
+ }
24
+ function startViewLifeCycle() {
25
+ lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, function () {
26
+ currentView = startNewView(ViewLoadingType.ROUTE_CHANGE, undefined, {
27
+ name: currentView.name,
28
+ service: currentView.service,
29
+ version: currentView.version,
30
+ context: currentView.contextManager.getContext()
31
+ });
32
+ });
33
+ lifeCycle.subscribe(LifeCycleEventType.SESSION_EXPIRED, function () {
34
+ currentView.end({
35
+ sessionIsActive: false
36
+ });
37
+ });
38
+ // // End the current view on page unload
39
+ // lifeCycle.subscribe(
40
+ // LifeCycleEventType.PAGE_EXITED,
41
+ // function (pageExitEvent) {
42
+ // if (pageExitEvent.reason === PageExitReason.UNLOADING) {
43
+ // currentView.end()
44
+ // }
45
+ // }
46
+ // )
47
+ }
48
+ function renewViewOnLocationChange(locationChangeObservable) {
49
+ return locationChangeObservable.subscribe(function (params) {
50
+ var oldLocation = params.oldLocation;
51
+ var newLocation = params.newLocation;
52
+ if (areDifferentLocation(oldLocation, newLocation)) {
53
+ currentView.end();
54
+ currentView = startNewView(ViewLoadingType.ROUTE_CHANGE);
55
+ return;
56
+ }
57
+ });
58
+ }
59
+ return {
60
+ addTiming: function addTiming(name, time) {
61
+ if (typeof time === 'undefined') {
62
+ time = timeStampNow();
63
+ }
64
+ currentView.addTiming(name, time);
65
+ },
66
+ startView: function startView(options, startClocks) {
67
+ currentView.end({
68
+ endClocks: startClocks
69
+ });
70
+ currentView = startNewView(ViewLoadingType.ROUTE_CHANGE, startClocks, options);
71
+ },
72
+ setViewContext: function setViewContext(context) {
73
+ currentView.contextManager.setContext(context);
74
+ },
75
+ setViewContextProperty: function setViewContextProperty(key, value) {
76
+ currentView.contextManager.setContextProperty(key, value);
77
+ },
78
+ setViewName: function setViewName(name) {
79
+ currentView.setViewName(name);
80
+ },
81
+ getViewContext: function getViewContext() {
82
+ return currentView.contextManager.getContext();
83
+ },
84
+ stop: function stop() {
85
+ if (locationChangeSubscription) {
86
+ locationChangeSubscription.unsubscribe();
87
+ }
88
+ currentView.end();
89
+ activeViews.forEach(function (view) {
90
+ view.stop();
91
+ });
92
+ }
93
+ };
94
+ }
95
+ function newView(lifeCycle, domMutationObservable, configuration, initialLocation, loadingType, startClocks, viewOptions) {
96
+ // Setup initial values
97
+ if (startClocks === undefined) {
98
+ startClocks = clocksNow();
99
+ }
100
+ var id = UUID();
101
+ var stopObservable = new Observable();
102
+ var customTimings = {};
103
+ var documentVersion = 0;
104
+ var endClocks;
105
+ var location = shallowClone(initialLocation);
106
+ var contextManager = createContextManager();
107
+ var sessionIsActive = true;
108
+ var name;
109
+ var service;
110
+ var version;
111
+ var context;
112
+ if (viewOptions) {
113
+ name = viewOptions.name;
114
+ service = viewOptions.service;
115
+ version = viewOptions.version;
116
+ context = viewOptions.context;
117
+ }
118
+ if (context) {
119
+ contextManager.setContext(context);
120
+ }
121
+ var viewCreatedEvent = {
122
+ id: id,
123
+ name: name,
124
+ startClocks: startClocks,
125
+ service: service,
126
+ version: version
127
+ };
128
+ lifeCycle.notify(LifeCycleEventType.BEFORE_VIEW_CREATED, viewCreatedEvent);
129
+ lifeCycle.notify(LifeCycleEventType.VIEW_CREATED, viewCreatedEvent);
130
+
131
+ // Update the view every time the measures are changing
132
+ var _scheduleViewUpdate = throttle(triggerViewUpdate, THROTTLE_VIEW_UPDATE_PERIOD, {
133
+ leading: false
134
+ });
135
+ var throttled = _scheduleViewUpdate.throttled;
136
+ var cancelScheduleViewUpdate = _scheduleViewUpdate.cancel;
137
+ var _trackCommonViewMetrics = trackCommonViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, startClocks);
138
+ var setLoadEvent = _trackCommonViewMetrics.setLoadEvent;
139
+ var stopCommonViewMetricsTracking = _trackCommonViewMetrics.stop;
140
+ var getCommonViewMetrics = _trackCommonViewMetrics.getCommonViewMetrics;
141
+ var stopINPTracking = _trackCommonViewMetrics.stopINPTracking;
142
+ var setViewEnd = _trackCommonViewMetrics.setViewEnd;
143
+ var _trackInitialViewTimings = loadingType === ViewLoadingType.INITIAL_LOAD ? trackInitialViewMetrics(configuration, startClocks, setLoadEvent, scheduleViewUpdate) : {
144
+ stop: noop,
145
+ initialViewMetrics: {}
146
+ };
147
+ var stopInitialViewMetricsTracking = _trackInitialViewTimings.stop;
148
+ var initialViewMetrics = _trackInitialViewTimings.initialViewMetrics;
149
+ var _trackViewEventCounts = trackViewEventCounts(lifeCycle, id, scheduleViewUpdate);
150
+ var stopEventCountsTracking = _trackViewEventCounts.stop;
151
+ var eventCounts = _trackViewEventCounts.eventCounts;
152
+
153
+ // Session keep alive
154
+ var keepAliveIntervalId = setInterval(triggerViewUpdate, SESSION_KEEP_ALIVE_INTERVAL);
155
+ var pageMayExitSubscription = lifeCycle.subscribe(LifeCycleEventType.PAGE_EXITED, function (pageMayExitEvent) {
156
+ if (pageMayExitEvent.reason === PageExitReason.UNLOADING) {
157
+ triggerViewUpdate();
158
+ }
159
+ });
160
+ triggerViewUpdate();
161
+ // View context update should always be throttled
162
+ contextManager.changeObservable.subscribe(scheduleViewUpdate);
163
+ function triggerBeforeViewUpdate() {
164
+ lifeCycle.notify(LifeCycleEventType.BEFORE_VIEW_UPDATED, {
165
+ id: id,
166
+ name: name,
167
+ context: contextManager.getContext(),
168
+ startClocks: startClocks
169
+ });
170
+ }
171
+ function scheduleViewUpdate() {
172
+ triggerBeforeViewUpdate();
173
+ throttled();
174
+ }
175
+ function triggerViewUpdate() {
176
+ cancelScheduleViewUpdate();
177
+ triggerBeforeViewUpdate();
178
+ documentVersion += 1;
179
+ var currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp;
180
+ lifeCycle.notify(LifeCycleEventType.VIEW_UPDATED, {
181
+ customTimings: customTimings,
182
+ documentVersion: documentVersion,
183
+ id: id,
184
+ name: name,
185
+ service: service,
186
+ version: version,
187
+ context: contextManager.getContext(),
188
+ loadingType: loadingType,
189
+ location: location,
190
+ startClocks: startClocks,
191
+ commonViewMetrics: getCommonViewMetrics(),
192
+ initialViewMetrics: initialViewMetrics,
193
+ duration: elapsed(startClocks.timeStamp, currentEnd),
194
+ isActive: endClocks === undefined,
195
+ sessionIsActive: sessionIsActive,
196
+ eventCounts: eventCounts
197
+ });
198
+ }
199
+ var result = {
200
+ name: name,
201
+ service: service,
202
+ version: version,
203
+ contextManager: contextManager,
204
+ stopObservable: stopObservable,
205
+ end: function end(options) {
206
+ if (endClocks) {
207
+ // view already ended
208
+ return;
209
+ }
210
+ endClocks = isNullUndefinedDefaultValue(options && options.endClocks, clocksNow());
211
+ sessionIsActive = isNullUndefinedDefaultValue(options && options.sessionIsActive, true);
212
+ lifeCycle.notify(LifeCycleEventType.VIEW_ENDED, {
213
+ endClocks: endClocks
214
+ });
215
+ lifeCycle.notify(LifeCycleEventType.AFTER_VIEW_ENDED, {
216
+ endClocks: endClocks
217
+ });
218
+ clearInterval(keepAliveIntervalId);
219
+ setViewEnd(endClocks.relative);
220
+ stopCommonViewMetricsTracking();
221
+ pageMayExitSubscription.unsubscribe();
222
+ triggerViewUpdate();
223
+ setTimeout(function () {
224
+ result.stop();
225
+ }, KEEP_TRACKING_AFTER_VIEW_DELAY);
226
+ },
227
+ stop: function stop() {
228
+ stopInitialViewMetricsTracking();
229
+ stopEventCountsTracking();
230
+ stopINPTracking();
231
+ stopObservable.notify();
232
+ },
233
+ addTiming: function addTiming(name, time) {
234
+ if (endClocks) {
235
+ return;
236
+ }
237
+ var relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time);
238
+ customTimings[sanitizeTiming(name)] = relativeTime;
239
+ scheduleViewUpdate();
240
+ },
241
+ setViewName: function setViewName(updatedName) {
242
+ name = updatedName;
243
+ triggerViewUpdate();
244
+ }
245
+ };
246
+ return result;
247
+ }
248
+
249
+ /**
250
+ * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $
251
+ */
252
+ function sanitizeTiming(name) {
253
+ var sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_');
254
+ if (sanitized !== name) {
255
+ console.warn('Invalid timing name: ' + name + ', sanitized to: ' + sanitized);
256
+ }
257
+ return sanitized;
258
+ }
259
+ function areDifferentLocation(currentLocation, otherLocation) {
260
+ return currentLocation.pathname !== otherLocation.pathname || !isHashAnAnchor(otherLocation.hash) && getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash);
261
+ }
262
+ //# sourceMappingURL=trackViews.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trackViews.js","names":["shallowClone","elapsed","UUID","ONE_MINUTE","throttle","clocksNow","clocksOrigin","timeStampNow","looksLikeRelativeTime","ViewLoadingType","LifeCycleEventType","PageExitReason","isHashAnAnchor","getPathFromHash","noop","setInterval","Observable","clearInterval","setTimeout","isNullUndefinedDefaultValue","createContextManager","trackInitialViewMetrics","trackCommonViewMetrics","trackViewEventCounts","THROTTLE_VIEW_UPDATE_PERIOD","SESSION_KEEP_ALIVE_INTERVAL","KEEP_TRACKING_AFTER_VIEW_DELAY","trackViews","location","lifeCycle","domMutationObservable","configuration","locationChangeObservable","areViewsTrackedAutomatically","initialViewOptions","activeViews","Set","startNewView","loadingType","startClocks","viewOptions","newlyCreatedView","newView","add","stopObservable","subscribe","currentView","INITIAL_LOAD","startViewLifeCycle","locationChangeSubscription","renewViewOnLocationChange","SESSION_RENEWED","ROUTE_CHANGE","undefined","name","service","version","context","contextManager","getContext","SESSION_EXPIRED","end","sessionIsActive","params","oldLocation","newLocation","areDifferentLocation","addTiming","time","startView","options","endClocks","setViewContext","setContext","setViewContextProperty","key","value","setContextProperty","setViewName","getViewContext","stop","unsubscribe","forEach","view","initialLocation","id","customTimings","documentVersion","viewCreatedEvent","notify","BEFORE_VIEW_CREATED","VIEW_CREATED","_scheduleViewUpdate","triggerViewUpdate","leading","throttled","cancelScheduleViewUpdate","cancel","_trackCommonViewMetrics","scheduleViewUpdate","setLoadEvent","stopCommonViewMetricsTracking","getCommonViewMetrics","stopINPTracking","setViewEnd","_trackInitialViewTimings","initialViewMetrics","stopInitialViewMetricsTracking","_trackViewEventCounts","stopEventCountsTracking","eventCounts","keepAliveIntervalId","pageMayExitSubscription","PAGE_EXITED","pageMayExitEvent","reason","UNLOADING","changeObservable","triggerBeforeViewUpdate","BEFORE_VIEW_UPDATED","currentEnd","timeStamp","VIEW_UPDATED","commonViewMetrics","duration","isActive","result","VIEW_ENDED","AFTER_VIEW_ENDED","relative","relativeTime","sanitizeTiming","updatedName","sanitized","replace","console","warn","currentLocation","otherLocation","pathname","hash"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackViews.js"],"sourcesContent":["import {\n shallowClone,\n elapsed,\n UUID,\n ONE_MINUTE,\n throttle,\n clocksNow,\n clocksOrigin,\n timeStampNow,\n looksLikeRelativeTime,\n ViewLoadingType,\n LifeCycleEventType,\n PageExitReason,\n isHashAnAnchor,\n getPathFromHash,\n noop,\n setInterval,\n Observable,\n clearInterval,\n setTimeout,\n isNullUndefinedDefaultValue,\n createContextManager\n} from '@cloudcare/browser-core'\n\nimport { trackInitialViewMetrics } from './trackInitialViewTimings'\nimport { trackCommonViewMetrics } from './trackCommonViewMetrics'\nimport { trackViewEventCounts } from './trackViewEventCounts'\nexport var THROTTLE_VIEW_UPDATE_PERIOD = 3000\nexport var SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE\nexport var KEEP_TRACKING_AFTER_VIEW_DELAY = 5 * ONE_MINUTE\nexport function trackViews(\n location,\n lifeCycle,\n domMutationObservable,\n configuration,\n locationChangeObservable,\n areViewsTrackedAutomatically,\n initialViewOptions\n) {\n var activeViews = new Set()\n function startNewView(loadingType, startClocks, viewOptions) {\n var newlyCreatedView = newView(\n lifeCycle,\n domMutationObservable,\n configuration,\n location,\n loadingType,\n startClocks,\n viewOptions\n )\n activeViews.add(newlyCreatedView)\n newlyCreatedView.stopObservable.subscribe(function () {\n activeViews.delete(newlyCreatedView)\n })\n return newlyCreatedView\n }\n var currentView = startNewView(\n ViewLoadingType.INITIAL_LOAD,\n clocksOrigin(),\n initialViewOptions\n )\n startViewLifeCycle()\n var locationChangeSubscription\n if (areViewsTrackedAutomatically) {\n locationChangeSubscription = renewViewOnLocationChange(\n locationChangeObservable\n )\n }\n function startViewLifeCycle() {\n lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, function () {\n currentView = startNewView(ViewLoadingType.ROUTE_CHANGE, undefined, {\n name: currentView.name,\n service: currentView.service,\n version: currentView.version,\n context: currentView.contextManager.getContext()\n })\n })\n\n lifeCycle.subscribe(LifeCycleEventType.SESSION_EXPIRED, function () {\n currentView.end({ sessionIsActive: false })\n })\n // // End the current view on page unload\n // lifeCycle.subscribe(\n // LifeCycleEventType.PAGE_EXITED,\n // function (pageExitEvent) {\n // if (pageExitEvent.reason === PageExitReason.UNLOADING) {\n // currentView.end()\n // }\n // }\n // )\n }\n\n function renewViewOnLocationChange(locationChangeObservable) {\n return locationChangeObservable.subscribe(function (params) {\n var oldLocation = params.oldLocation\n var newLocation = params.newLocation\n if (areDifferentLocation(oldLocation, newLocation)) {\n currentView.end()\n currentView = startNewView(ViewLoadingType.ROUTE_CHANGE)\n return\n }\n })\n }\n\n return {\n addTiming: function (name, time) {\n if (typeof time === 'undefined') {\n time = timeStampNow()\n }\n currentView.addTiming(name, time)\n },\n startView: function (options, startClocks) {\n currentView.end({ endClocks: startClocks })\n currentView = startNewView(\n ViewLoadingType.ROUTE_CHANGE,\n startClocks,\n options\n )\n },\n setViewContext: (context) => {\n currentView.contextManager.setContext(context)\n },\n setViewContextProperty: (key, value) => {\n currentView.contextManager.setContextProperty(key, value)\n },\n setViewName: (name) => {\n currentView.setViewName(name)\n },\n getViewContext: () => currentView.contextManager.getContext(),\n stop: function () {\n if (locationChangeSubscription) {\n locationChangeSubscription.unsubscribe()\n }\n currentView.end()\n activeViews.forEach(function (view) {\n view.stop()\n })\n }\n }\n}\n\nfunction newView(\n lifeCycle,\n domMutationObservable,\n configuration,\n initialLocation,\n loadingType,\n startClocks,\n viewOptions\n) {\n // Setup initial values\n if (startClocks === undefined) {\n startClocks = clocksNow()\n }\n var id = UUID()\n var stopObservable = new Observable()\n var customTimings = {}\n var documentVersion = 0\n var endClocks\n var location = shallowClone(initialLocation)\n const contextManager = createContextManager()\n var sessionIsActive = true\n var name\n var service\n var version\n var context\n if (viewOptions) {\n name = viewOptions.name\n service = viewOptions.service\n version = viewOptions.version\n context = viewOptions.context\n }\n if (context) {\n contextManager.setContext(context)\n }\n var viewCreatedEvent = {\n id: id,\n name: name,\n startClocks: startClocks,\n service: service,\n version: version\n }\n lifeCycle.notify(LifeCycleEventType.BEFORE_VIEW_CREATED, viewCreatedEvent)\n lifeCycle.notify(LifeCycleEventType.VIEW_CREATED, viewCreatedEvent)\n\n // Update the view every time the measures are changing\n var _scheduleViewUpdate = throttle(\n triggerViewUpdate,\n THROTTLE_VIEW_UPDATE_PERIOD,\n {\n leading: false\n }\n )\n var throttled = _scheduleViewUpdate.throttled\n var cancelScheduleViewUpdate = _scheduleViewUpdate.cancel\n\n var _trackCommonViewMetrics = trackCommonViewMetrics(\n lifeCycle,\n domMutationObservable,\n configuration,\n scheduleViewUpdate,\n loadingType,\n startClocks\n )\n var setLoadEvent = _trackCommonViewMetrics.setLoadEvent\n var stopCommonViewMetricsTracking = _trackCommonViewMetrics.stop\n var getCommonViewMetrics = _trackCommonViewMetrics.getCommonViewMetrics\n var stopINPTracking = _trackCommonViewMetrics.stopINPTracking\n var setViewEnd = _trackCommonViewMetrics.setViewEnd\n var _trackInitialViewTimings =\n loadingType === ViewLoadingType.INITIAL_LOAD\n ? trackInitialViewMetrics(\n configuration,\n startClocks,\n setLoadEvent,\n scheduleViewUpdate\n )\n : {\n stop: noop,\n initialViewMetrics: {}\n }\n var stopInitialViewMetricsTracking = _trackInitialViewTimings.stop\n var initialViewMetrics = _trackInitialViewTimings.initialViewMetrics\n var _trackViewEventCounts = trackViewEventCounts(\n lifeCycle,\n id,\n scheduleViewUpdate\n )\n var stopEventCountsTracking = _trackViewEventCounts.stop\n var eventCounts = _trackViewEventCounts.eventCounts\n\n // Session keep alive\n var keepAliveIntervalId = setInterval(\n triggerViewUpdate,\n SESSION_KEEP_ALIVE_INTERVAL\n )\n const pageMayExitSubscription = lifeCycle.subscribe(\n LifeCycleEventType.PAGE_EXITED,\n (pageMayExitEvent) => {\n if (pageMayExitEvent.reason === PageExitReason.UNLOADING) {\n triggerViewUpdate()\n }\n }\n )\n triggerViewUpdate()\n // View context update should always be throttled\n contextManager.changeObservable.subscribe(scheduleViewUpdate)\n\n function triggerBeforeViewUpdate() {\n lifeCycle.notify(LifeCycleEventType.BEFORE_VIEW_UPDATED, {\n id,\n name,\n context: contextManager.getContext(),\n startClocks\n })\n }\n function scheduleViewUpdate() {\n triggerBeforeViewUpdate()\n throttled()\n }\n\n function triggerViewUpdate() {\n cancelScheduleViewUpdate()\n triggerBeforeViewUpdate()\n documentVersion += 1\n var currentEnd =\n endClocks === undefined ? timeStampNow() : endClocks.timeStamp\n lifeCycle.notify(LifeCycleEventType.VIEW_UPDATED, {\n customTimings: customTimings,\n documentVersion: documentVersion,\n id: id,\n name: name,\n service: service,\n version: version,\n context: contextManager.getContext(),\n loadingType: loadingType,\n location: location,\n startClocks: startClocks,\n commonViewMetrics: getCommonViewMetrics(),\n initialViewMetrics: initialViewMetrics,\n duration: elapsed(startClocks.timeStamp, currentEnd),\n isActive: endClocks === undefined,\n sessionIsActive: sessionIsActive,\n eventCounts: eventCounts\n })\n }\n var result = {\n name: name,\n service: service,\n version: version,\n contextManager: contextManager,\n stopObservable: stopObservable,\n end: function (options) {\n if (endClocks) {\n // view already ended\n return\n }\n endClocks = isNullUndefinedDefaultValue(\n options && options.endClocks,\n clocksNow()\n )\n sessionIsActive = isNullUndefinedDefaultValue(\n options && options.sessionIsActive,\n true\n )\n lifeCycle.notify(LifeCycleEventType.VIEW_ENDED, { endClocks: endClocks })\n lifeCycle.notify(LifeCycleEventType.AFTER_VIEW_ENDED, {\n endClocks: endClocks\n })\n clearInterval(keepAliveIntervalId)\n setViewEnd(endClocks.relative)\n stopCommonViewMetricsTracking()\n pageMayExitSubscription.unsubscribe()\n triggerViewUpdate()\n setTimeout(function () {\n result.stop()\n }, KEEP_TRACKING_AFTER_VIEW_DELAY)\n },\n stop: function () {\n stopInitialViewMetricsTracking()\n stopEventCountsTracking()\n stopINPTracking()\n stopObservable.notify()\n },\n addTiming: function (name, time) {\n if (endClocks) {\n return\n }\n var relativeTime = looksLikeRelativeTime(time)\n ? time\n : elapsed(startClocks.timeStamp, time)\n customTimings[sanitizeTiming(name)] = relativeTime\n scheduleViewUpdate()\n },\n setViewName(updatedName) {\n name = updatedName\n triggerViewUpdate()\n }\n }\n return result\n}\n\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name) {\n var sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_')\n if (sanitized !== name) {\n console.warn(\n 'Invalid timing name: ' + name + ', sanitized to: ' + sanitized\n )\n }\n return sanitized\n}\n\nfunction areDifferentLocation(currentLocation, otherLocation) {\n return (\n currentLocation.pathname !== otherLocation.pathname ||\n (!isHashAnAnchor(otherLocation.hash) &&\n getPathFromHash(otherLocation.hash) !==\n getPathFromHash(currentLocation.hash))\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,125 @@
1
+ import { isEmptyObject, mapValues, toServerDuration, isNumber, RumEventType, LifeCycleEventType, extend2Lev, findByPath, discardNegativeDuration, timeStampNow } from '@cloudcare/browser-core';
2
+ import { trackViews } from './trackViews';
3
+ export function startViewCollection(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, pageStateHistory, recorderApi, initialViewOptions) {
4
+ lifeCycle.subscribe(LifeCycleEventType.VIEW_UPDATED, function (view) {
5
+ lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, processViewUpdate(view, configuration, recorderApi, pageStateHistory));
6
+ });
7
+ return trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, !configuration.trackViewsManually, initialViewOptions);
8
+ }
9
+ function computePerformanceViewDetails(navigationTimings) {
10
+ if (!navigationTimings) {
11
+ return undefined;
12
+ }
13
+ var fetchStart = navigationTimings.fetchStart,
14
+ responseEnd = navigationTimings.responseEnd,
15
+ domInteractive = navigationTimings.domInteractive,
16
+ domContentLoaded = navigationTimings.domContentLoaded,
17
+ domComplete = navigationTimings.domComplete,
18
+ loadEventEnd = navigationTimings.loadEventEnd,
19
+ loadEventStart = navigationTimings.loadEventStart,
20
+ domContentLoadedEventEnd = navigationTimings.domContentLoadedEventEnd;
21
+ var details = {};
22
+ if (isNumber(responseEnd) && isNumber(fetchStart) && responseEnd !== fetchStart && responseEnd > fetchStart) {
23
+ details.fpt = toServerDuration(responseEnd - fetchStart);
24
+ var apdexLevel = parseInt((responseEnd - fetchStart) / 1000);
25
+ details.apdexLevel = apdexLevel > 9 ? 9 : apdexLevel;
26
+ }
27
+ if (isNumber(domInteractive) && isNumber(fetchStart) && domInteractive !== fetchStart && domInteractive > fetchStart) {
28
+ details.tti = toServerDuration(domInteractive - fetchStart);
29
+ }
30
+ if (isNumber(domContentLoaded) && isNumber(fetchStart) && domContentLoaded !== fetchStart && domContentLoaded > fetchStart) {
31
+ details.dom_ready = toServerDuration(domContentLoaded - fetchStart);
32
+ }
33
+ // Make sure a connection occurred
34
+ if (isNumber(loadEventEnd) && isNumber(fetchStart) && loadEventEnd !== fetchStart && loadEventEnd > fetchStart) {
35
+ details.load = toServerDuration(loadEventEnd - fetchStart);
36
+ }
37
+ if (isNumber(loadEventStart) && isNumber(domContentLoadedEventEnd) && loadEventStart !== domContentLoadedEventEnd && loadEventStart > domContentLoadedEventEnd) {
38
+ details.resource_load_time = toServerDuration(loadEventStart - domContentLoadedEventEnd);
39
+ }
40
+ if (isNumber(domComplete) && isNumber(domInteractive) && domComplete !== domInteractive && domComplete > domInteractive) {
41
+ details.dom = toServerDuration(domComplete - domInteractive);
42
+ }
43
+ return details;
44
+ }
45
+ function processViewUpdate(view, configuration, recorderApi, pageStateHistory) {
46
+ var replayStats = recorderApi.getReplayStats(view.id);
47
+ var pageStates = pageStateHistory.findAll(view.startClocks.relative, view.duration);
48
+ var viewEvent = {
49
+ _gc: {
50
+ document_version: view.documentVersion,
51
+ replay_stats: replayStats,
52
+ page_states: pageStates,
53
+ view_update_time: view.documentVersion
54
+ },
55
+ date: view.startClocks.timeStamp,
56
+ type: RumEventType.VIEW,
57
+ view: {
58
+ action: {
59
+ count: view.eventCounts.actionCount
60
+ },
61
+ frustration: {
62
+ count: view.eventCounts.frustrationCount
63
+ },
64
+ cumulative_layout_shift: findByPath(view.commonViewMetrics, 'cumulativeLayoutShift.value'),
65
+ cumulative_layout_shift_time: findByPath(view.commonViewMetrics, 'cumulativeLayoutShift.time'),
66
+ cumulative_layout_shift_target_selector: findByPath(view.commonViewMetrics, 'cumulativeLayoutShift.targetSelector'),
67
+ first_byte: toServerDuration(findByPath(view.initialViewMetrics, 'navigationTimings.firstByte')),
68
+ dom_complete: toServerDuration(findByPath(view.initialViewMetrics, 'navigationTimings.domComplete')),
69
+ dom_content_loaded: toServerDuration(findByPath(view.initialViewMetrics, 'navigationTimings.domContentLoaded')),
70
+ dom_interactive: toServerDuration(findByPath(view.initialViewMetrics, 'navigationTimings.domInteractive')),
71
+ error: {
72
+ count: view.eventCounts.errorCount
73
+ },
74
+ first_contentful_paint: toServerDuration(findByPath(view.initialViewMetrics, 'firstContentfulPaint')),
75
+ first_input_delay: toServerDuration(findByPath(view.initialViewMetrics, 'firstInput.delay')),
76
+ first_input_time: toServerDuration(findByPath(view.initialViewMetrics, 'firstInput.time')),
77
+ first_input_target_selector: findByPath(view.initialViewMetrics, 'firstInput.targetSelector'),
78
+ interaction_to_next_paint: toServerDuration(findByPath(view.commonViewMetrics, 'interactionToNextPaint.value')),
79
+ interaction_to_next_paint_target_selector: findByPath(view.commonViewMetrics, 'interactionToNextPaint.targetSelector'),
80
+ is_active: view.isActive,
81
+ name: view.name,
82
+ largest_contentful_paint: toServerDuration(findByPath(view.initialViewMetrics, 'largestContentfulPaint.value')),
83
+ largest_contentful_paint_element_selector: findByPath(view.initialViewMetrics, 'largestContentfulPaint.targetSelector'),
84
+ load_event: toServerDuration(findByPath(view.initialViewMetrics, 'navigationTimings.loadEvent')),
85
+ loading_time: discardNegativeDuration(toServerDuration(view.commonViewMetrics.loadingTime)),
86
+ loading_type: view.loadingType,
87
+ long_task: {
88
+ count: view.eventCounts.longTaskCount
89
+ },
90
+ resource: {
91
+ count: view.eventCounts.resourceCount
92
+ },
93
+ time_spent: toServerDuration(view.duration)
94
+ },
95
+ display: view.commonViewMetrics.scroll ? {
96
+ scroll: {
97
+ max_depth: view.commonViewMetrics.scroll.maxDepth,
98
+ max_depth_scroll_top: view.commonViewMetrics.scroll.maxDepthScrollTop,
99
+ max_scroll_height: view.commonViewMetrics.scroll.maxScrollHeight,
100
+ max_scroll_height_time: toServerDuration(view.commonViewMetrics.scroll.maxScrollHeightTime)
101
+ }
102
+ } : undefined,
103
+ session: {
104
+ has_replay: replayStats ? true : undefined,
105
+ is_active: view.sessionIsActive ? undefined : false
106
+ },
107
+ privacy: {
108
+ replay_level: configuration.defaultPrivacyLevel
109
+ }
110
+ };
111
+ if (!isEmptyObject(view.customTimings)) {
112
+ viewEvent.view.custom_timings = mapValues(view.customTimings, toServerDuration);
113
+ }
114
+ viewEvent = extend2Lev(viewEvent, {
115
+ view: computePerformanceViewDetails(view.initialViewMetrics.navigationTimings)
116
+ });
117
+ return {
118
+ rawRumEvent: viewEvent,
119
+ startTime: view.startClocks.relative,
120
+ domainContext: {
121
+ location: view.location
122
+ }
123
+ };
124
+ }
125
+ //# sourceMappingURL=viewCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewCollection.js","names":["isEmptyObject","mapValues","toServerDuration","isNumber","RumEventType","LifeCycleEventType","extend2Lev","findByPath","discardNegativeDuration","timeStampNow","trackViews","startViewCollection","lifeCycle","configuration","location","domMutationObservable","locationChangeObservable","pageStateHistory","recorderApi","initialViewOptions","subscribe","VIEW_UPDATED","view","notify","RAW_RUM_EVENT_COLLECTED","processViewUpdate","trackViewsManually","computePerformanceViewDetails","navigationTimings","undefined","fetchStart","responseEnd","domInteractive","domContentLoaded","domComplete","loadEventEnd","loadEventStart","domContentLoadedEventEnd","details","fpt","apdexLevel","parseInt","tti","dom_ready","load","resource_load_time","dom","replayStats","getReplayStats","id","pageStates","findAll","startClocks","relative","duration","viewEvent","_gc","document_version","documentVersion","replay_stats","page_states","view_update_time","date","timeStamp","type","VIEW","action","count","eventCounts","actionCount","frustration","frustrationCount","cumulative_layout_shift","commonViewMetrics","cumulative_layout_shift_time","cumulative_layout_shift_target_selector","first_byte","initialViewMetrics","dom_complete","dom_content_loaded","dom_interactive","error","errorCount","first_contentful_paint","first_input_delay","first_input_time","first_input_target_selector","interaction_to_next_paint","interaction_to_next_paint_target_selector","is_active","isActive","name","largest_contentful_paint","largest_contentful_paint_element_selector","load_event","loading_time","loadingTime","loading_type","loadingType","long_task","longTaskCount","resource","resourceCount","time_spent","display","scroll","max_depth","maxDepth","max_depth_scroll_top","maxDepthScrollTop","max_scroll_height","maxScrollHeight","max_scroll_height_time","maxScrollHeightTime","session","has_replay","sessionIsActive","privacy","replay_level","defaultPrivacyLevel","customTimings","custom_timings","rawRumEvent","startTime","domainContext"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/viewCollection.js"],"sourcesContent":["import {\n isEmptyObject,\n mapValues,\n toServerDuration,\n isNumber,\n RumEventType,\n LifeCycleEventType,\n extend2Lev,\n findByPath,\n discardNegativeDuration,\n timeStampNow\n} from '@cloudcare/browser-core'\nimport { trackViews } from './trackViews'\nexport function startViewCollection(\n lifeCycle,\n configuration,\n location,\n domMutationObservable,\n locationChangeObservable,\n pageStateHistory,\n recorderApi,\n initialViewOptions\n) {\n lifeCycle.subscribe(LifeCycleEventType.VIEW_UPDATED, function (view) {\n lifeCycle.notify(\n LifeCycleEventType.RAW_RUM_EVENT_COLLECTED,\n processViewUpdate(view, configuration, recorderApi, pageStateHistory)\n )\n })\n\n return trackViews(\n location,\n lifeCycle,\n domMutationObservable,\n configuration,\n locationChangeObservable,\n !configuration.trackViewsManually,\n initialViewOptions\n )\n}\nfunction computePerformanceViewDetails(navigationTimings) {\n if (!navigationTimings) {\n return undefined\n }\n var fetchStart = navigationTimings.fetchStart,\n responseEnd = navigationTimings.responseEnd,\n domInteractive = navigationTimings.domInteractive,\n domContentLoaded = navigationTimings.domContentLoaded,\n domComplete = navigationTimings.domComplete,\n loadEventEnd = navigationTimings.loadEventEnd,\n loadEventStart = navigationTimings.loadEventStart,\n domContentLoadedEventEnd = navigationTimings.domContentLoadedEventEnd\n var details = {}\n if (\n isNumber(responseEnd) &&\n isNumber(fetchStart) &&\n responseEnd !== fetchStart &&\n responseEnd > fetchStart\n ) {\n details.fpt = toServerDuration(responseEnd - fetchStart)\n var apdexLevel = parseInt((responseEnd - fetchStart) / 1000)\n details.apdexLevel = apdexLevel > 9 ? 9 : apdexLevel\n }\n if (\n isNumber(domInteractive) &&\n isNumber(fetchStart) &&\n domInteractive !== fetchStart &&\n domInteractive > fetchStart\n ) {\n details.tti = toServerDuration(domInteractive - fetchStart)\n }\n if (\n isNumber(domContentLoaded) &&\n isNumber(fetchStart) &&\n domContentLoaded !== fetchStart &&\n domContentLoaded > fetchStart\n ) {\n details.dom_ready = toServerDuration(domContentLoaded - fetchStart)\n }\n // Make sure a connection occurred\n if (\n isNumber(loadEventEnd) &&\n isNumber(fetchStart) &&\n loadEventEnd !== fetchStart &&\n loadEventEnd > fetchStart\n ) {\n details.load = toServerDuration(loadEventEnd - fetchStart)\n }\n if (\n isNumber(loadEventStart) &&\n isNumber(domContentLoadedEventEnd) &&\n loadEventStart !== domContentLoadedEventEnd &&\n loadEventStart > domContentLoadedEventEnd\n ) {\n details.resource_load_time = toServerDuration(\n loadEventStart - domContentLoadedEventEnd\n )\n }\n if (\n isNumber(domComplete) &&\n isNumber(domInteractive) &&\n domComplete !== domInteractive &&\n domComplete > domInteractive\n ) {\n details.dom = toServerDuration(domComplete - domInteractive)\n }\n return details\n}\n\nfunction processViewUpdate(view, configuration, recorderApi, pageStateHistory) {\n var replayStats = recorderApi.getReplayStats(view.id)\n var pageStates = pageStateHistory.findAll(\n view.startClocks.relative,\n view.duration\n )\n var viewEvent = {\n _gc: {\n document_version: view.documentVersion,\n replay_stats: replayStats,\n page_states: pageStates,\n view_update_time: view.documentVersion\n },\n date: view.startClocks.timeStamp,\n type: RumEventType.VIEW,\n view: {\n action: {\n count: view.eventCounts.actionCount\n },\n frustration: {\n count: view.eventCounts.frustrationCount\n },\n cumulative_layout_shift: findByPath(\n view.commonViewMetrics,\n 'cumulativeLayoutShift.value'\n ),\n cumulative_layout_shift_time: findByPath(\n view.commonViewMetrics,\n 'cumulativeLayoutShift.time'\n ),\n cumulative_layout_shift_target_selector: findByPath(\n view.commonViewMetrics,\n 'cumulativeLayoutShift.targetSelector'\n ),\n first_byte: toServerDuration(\n findByPath(view.initialViewMetrics, 'navigationTimings.firstByte')\n ),\n dom_complete: toServerDuration(\n findByPath(view.initialViewMetrics, 'navigationTimings.domComplete')\n ),\n dom_content_loaded: toServerDuration(\n findByPath(\n view.initialViewMetrics,\n 'navigationTimings.domContentLoaded'\n )\n ),\n dom_interactive: toServerDuration(\n findByPath(view.initialViewMetrics, 'navigationTimings.domInteractive')\n ),\n error: {\n count: view.eventCounts.errorCount\n },\n first_contentful_paint: toServerDuration(\n findByPath(view.initialViewMetrics, 'firstContentfulPaint')\n ),\n first_input_delay: toServerDuration(\n findByPath(view.initialViewMetrics, 'firstInput.delay')\n ),\n first_input_time: toServerDuration(\n findByPath(view.initialViewMetrics, 'firstInput.time')\n ),\n first_input_target_selector: findByPath(\n view.initialViewMetrics,\n 'firstInput.targetSelector'\n ),\n interaction_to_next_paint: toServerDuration(\n findByPath(view.commonViewMetrics, 'interactionToNextPaint.value')\n ),\n interaction_to_next_paint_target_selector: findByPath(\n view.commonViewMetrics,\n 'interactionToNextPaint.targetSelector'\n ),\n is_active: view.isActive,\n name: view.name,\n largest_contentful_paint: toServerDuration(\n findByPath(view.initialViewMetrics, 'largestContentfulPaint.value')\n ),\n largest_contentful_paint_element_selector: findByPath(\n view.initialViewMetrics,\n 'largestContentfulPaint.targetSelector'\n ),\n load_event: toServerDuration(\n findByPath(view.initialViewMetrics, 'navigationTimings.loadEvent')\n ),\n loading_time: discardNegativeDuration(\n toServerDuration(view.commonViewMetrics.loadingTime)\n ),\n loading_type: view.loadingType,\n long_task: {\n count: view.eventCounts.longTaskCount\n },\n resource: {\n count: view.eventCounts.resourceCount\n },\n time_spent: toServerDuration(view.duration)\n },\n display: view.commonViewMetrics.scroll\n ? {\n scroll: {\n max_depth: view.commonViewMetrics.scroll.maxDepth,\n max_depth_scroll_top:\n view.commonViewMetrics.scroll.maxDepthScrollTop,\n max_scroll_height: view.commonViewMetrics.scroll.maxScrollHeight,\n max_scroll_height_time: toServerDuration(\n view.commonViewMetrics.scroll.maxScrollHeightTime\n )\n }\n }\n : undefined,\n session: {\n has_replay: replayStats ? true : undefined,\n is_active: view.sessionIsActive ? undefined : false\n },\n privacy: {\n replay_level: configuration.defaultPrivacyLevel\n }\n }\n if (!isEmptyObject(view.customTimings)) {\n viewEvent.view.custom_timings = mapValues(\n view.customTimings,\n toServerDuration\n )\n }\n viewEvent = extend2Lev(viewEvent, {\n view: computePerformanceViewDetails(\n view.initialViewMetrics.navigationTimings\n )\n })\n return {\n rawRumEvent: viewEvent,\n startTime: view.startClocks.relative,\n domainContext: {\n location: view.location\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,179 @@
1
+ import { performDraw, startSessionManager, LifeCycleEventType, noop, Observable, timeStampNow, bridgeSupports, BridgeCapability, SESSION_NOT_TRACKED } from '@cloudcare/browser-core';
2
+ export var RUM_SESSION_KEY = 'rum';
3
+ export var RumSessionPlan = {
4
+ WITHOUT_SESSION_REPLAY: 1,
5
+ WITH_SESSION_REPLAY: 2,
6
+ WITH_ERROR_SESSION_REPLAY: 3
7
+ };
8
+ export var ERROR_SESSION = '1';
9
+ export var RumTrackingType = {
10
+ NOT_TRACKED: SESSION_NOT_TRACKED,
11
+ // Note: the "tracking type" value (stored in the session cookie) does not match the "session
12
+ // plan" value (sent in RUM events). This is expected, and was done to keep retrocompatibility
13
+ // with active sessions when upgrading the SDK.
14
+
15
+ TRACKED_WITH_SESSION_AND_WITH_SESSION_REPLAY: '1',
16
+ TRACKED_WITH_SESSION_AND_WITHOUT_SESSION_REPLAY: '2',
17
+ TRACKED_WITH_SESSION_AND_WITH_ERROR_SESSION_REPLAY: '3',
18
+ TRACKED_WITH_ERROR_SESSION_AND_WITH_SESSION_REPLAY: '4',
19
+ TRACKED_WITH_ERROR_SESSION_AND_WITHOUT_SESSION_REPLAY: '5',
20
+ TRACKED_WITH_ERROR_SESSION_AND_WITH_ERROR_SESSION_REPLAY: '6'
21
+ };
22
+ export function startRumSessionManager(configuration, lifeCycle) {
23
+ var sessionManager = startSessionManager(configuration, RUM_SESSION_KEY, function (rawTrackingType) {
24
+ return computeSessionState(configuration, rawTrackingType);
25
+ });
26
+ sessionManager.expireObservable.subscribe(function () {
27
+ lifeCycle.notify(LifeCycleEventType.SESSION_EXPIRED);
28
+ });
29
+ sessionManager.renewObservable.subscribe(function () {
30
+ lifeCycle.notify(LifeCycleEventType.SESSION_RENEWED);
31
+ });
32
+ sessionManager.sessionStateUpdateObservable.subscribe(function (_ref) {
33
+ var previousState = _ref.previousState,
34
+ newState = _ref.newState;
35
+ if (!previousState.hasError && newState.hasError) {
36
+ var sessionEntity = sessionManager.findSession();
37
+ if (sessionEntity) {
38
+ sessionEntity.hasError = true;
39
+ sessionEntity.ets = newState.ets || timeStampNow();
40
+ }
41
+ }
42
+ if (!previousState.forcedSession && newState.forcedSession) {
43
+ var _sessionEntity = sessionManager.findSession();
44
+ if (_sessionEntity) {
45
+ _sessionEntity.isSessionForced = true;
46
+ }
47
+ }
48
+ });
49
+ return {
50
+ findTrackedSession: function findTrackedSession(startTime) {
51
+ var session = sessionManager.findSession(startTime);
52
+ if (!session) {
53
+ return;
54
+ }
55
+ if (!isTypeTracked(session.trackingType) && !session.isSessionForced) {
56
+ return;
57
+ }
58
+ var isErrorSession = session.trackingType === RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITHOUT_SESSION_REPLAY || session.trackingType === RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_SESSION_REPLAY || session.trackingType === RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_ERROR_SESSION_REPLAY;
59
+ var plan = RumSessionPlan.WITHOUT_SESSION_REPLAY;
60
+ if (session.trackingType === RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_SESSION_REPLAY || session.trackingType === RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_SESSION_REPLAY) {
61
+ plan = RumSessionPlan.WITH_SESSION_REPLAY;
62
+ } else if (session.trackingType === RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_ERROR_SESSION_REPLAY || session.trackingType === RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_ERROR_SESSION_REPLAY) {
63
+ plan = RumSessionPlan.WITH_ERROR_SESSION_REPLAY;
64
+ }
65
+ return {
66
+ id: session.id,
67
+ plan: plan,
68
+ errorSessionReplayAllowed: plan === RumSessionPlan.WITH_ERROR_SESSION_REPLAY,
69
+ sessionHasError: session.hasError,
70
+ isErrorSession: isErrorSession,
71
+ sessionErrorTimestamp: session.ets,
72
+ isSessionForced: session.isSessionForced,
73
+ sessionReplayAllowed: plan === RumSessionPlan.WITH_SESSION_REPLAY || plan === RumSessionPlan.WITH_ERROR_SESSION_REPLAY || session.isSessionForced
74
+ };
75
+ },
76
+ expire: sessionManager.expire,
77
+ keepSessionAlive: sessionManager.expandOrRenewSession,
78
+ expireObservable: sessionManager.expireObservable,
79
+ sessionStateUpdateObservable: sessionManager.sessionStateUpdateObservable,
80
+ setErrorForSession: function setErrorForSession() {
81
+ return sessionManager.updateSessionState({
82
+ hasError: '1',
83
+ ets: timeStampNow()
84
+ });
85
+ },
86
+ setForcedSession: function setForcedSession() {
87
+ sessionManager.updateSessionState({
88
+ forcedSession: '1'
89
+ });
90
+ }
91
+ };
92
+ }
93
+
94
+ /**
95
+ * Start a tracked replay session stub
96
+ * It needs to be a premium plan in order to get long tasks
97
+ */
98
+ export function startRumSessionManagerStub() {
99
+ var session = {
100
+ id: '00000000-aaaa-0000-aaaa-000000000000',
101
+ isErrorSession: false,
102
+ sessionErrorTimestamp: 0,
103
+ sessionReplayAllowed: bridgeSupports(BridgeCapability.RECORDS) ? true : false,
104
+ errorSessionReplayAllowed: false,
105
+ sessionHasError: false,
106
+ isSessionForced: false
107
+ };
108
+ return {
109
+ findTrackedSession: function findTrackedSession() {
110
+ return session;
111
+ },
112
+ expire: noop,
113
+ keepSessionAlive: noop,
114
+ expireObservable: new Observable(),
115
+ setErrorForSession: function setErrorForSession() {
116
+ session.sessionErrorTimestamp = timeStampNow();
117
+ session.sessionHasError = true;
118
+ session.isErrorSession = true;
119
+ session.errorSessionReplayAllowed = true;
120
+ },
121
+ setForcedSession: noop
122
+ };
123
+ }
124
+ function computeSessionState(configuration, rawTrackingType) {
125
+ var sessionSampleRate = configuration.sessionSampleRate,
126
+ sessionOnErrorSampleRate = configuration.sessionOnErrorSampleRate,
127
+ sessionReplaySampleRate = configuration.sessionReplaySampleRate,
128
+ sessionReplayOnErrorSampleRate = configuration.sessionReplayOnErrorSampleRate;
129
+ var isSession = performDraw(sessionSampleRate);
130
+ var isErrorSession = performDraw(sessionOnErrorSampleRate);
131
+ var isSessionReplay = performDraw(sessionReplaySampleRate);
132
+ var isErrorSessionReplay = performDraw(sessionReplayOnErrorSampleRate);
133
+ var trackingType;
134
+ if (hasValidRumSession(rawTrackingType)) {
135
+ trackingType = rawTrackingType;
136
+ } else if (!isErrorSession && !isSession) {
137
+ trackingType = RumTrackingType.NOT_TRACKED;
138
+ } else if (isSession && isSessionReplay) {
139
+ trackingType = RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_SESSION_REPLAY;
140
+ } else if (isSession && isErrorSessionReplay) {
141
+ trackingType = RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_ERROR_SESSION_REPLAY;
142
+ } else if (isSession && !isSessionReplay && !isErrorSessionReplay) {
143
+ trackingType = RumTrackingType.TRACKED_WITH_SESSION_AND_WITHOUT_SESSION_REPLAY;
144
+ } else if (isErrorSession && isSessionReplay) {
145
+ trackingType = RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_SESSION_REPLAY;
146
+ } else if (isErrorSession && isErrorSessionReplay) {
147
+ trackingType = RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_ERROR_SESSION_REPLAY;
148
+ } else if (isErrorSession && !isSessionReplay && !isErrorSessionReplay) {
149
+ trackingType = RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITHOUT_SESSION_REPLAY;
150
+ }
151
+ // if (hasValidRumSession(rawTrackingType)) {
152
+ // trackingType = rawTrackingType
153
+ // } else if (
154
+ // !performDraw(configuration.sessionSampleRate) &&
155
+ // !performDraw(configuration.sessionOnErrorSampleRate)
156
+ // ) {
157
+ // trackingType = RumTrackingType.NOT_TRACKED
158
+ // } else if (
159
+ // !performDraw(configuration.sessionReplaySampleRate) &&
160
+ // !performDraw(configuration.sessionReplayOnErrorSampleRate)
161
+ // ) {
162
+ // trackingType = RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY
163
+ // } else if (performDraw(configuration.sessionReplayOnErrorSampleRate)) {
164
+ // trackingType = RumTrackingType.TRACKED_WITH_ERROR_SESSION_REPLAY
165
+ // } else {
166
+ // trackingType = RumTrackingType.TRACKED_WITH_SESSION_REPLAY
167
+ // }
168
+ return {
169
+ trackingType: trackingType,
170
+ isTracked: isTypeTracked(trackingType)
171
+ };
172
+ }
173
+ function hasValidRumSession(trackingType) {
174
+ return trackingType === RumTrackingType.NOT_TRACKED || trackingType === RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITHOUT_SESSION_REPLAY || trackingType === RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_ERROR_SESSION_REPLAY || trackingType === RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_SESSION_REPLAY || trackingType === RumTrackingType.TRACKED_WITH_SESSION_AND_WITHOUT_SESSION_REPLAY || trackingType === RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_ERROR_SESSION_REPLAY || trackingType === RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_SESSION_REPLAY;
175
+ }
176
+ function isTypeTracked(rumSessionType) {
177
+ return rumSessionType !== RumTrackingType.NOT_TRACKED;
178
+ }
179
+ //# sourceMappingURL=rumSessionManager.js.map