@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,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PageState = exports.PAGE_STATE_CONTEXT_TIME_OUT_DELAY = exports.MAX_PAGE_STATE_ENTRIES_SELECTABLE = exports.MAX_PAGE_STATE_ENTRIES = void 0;
7
+ exports.startPageStateHistory = startPageStateHistory;
8
+ var _browserCore = require("@cloudcare/browser-core");
9
+ var _performanceObservable = require("../performanceObservable");
10
+ // Arbitrary value to cap number of element for memory consumption in the browser
11
+ var MAX_PAGE_STATE_ENTRIES = exports.MAX_PAGE_STATE_ENTRIES = 4000;
12
+ // Arbitrary value to cap number of element for backend & to save bandwidth
13
+ var MAX_PAGE_STATE_ENTRIES_SELECTABLE = exports.MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500;
14
+ var PAGE_STATE_CONTEXT_TIME_OUT_DELAY = exports.PAGE_STATE_CONTEXT_TIME_OUT_DELAY = _browserCore.SESSION_TIME_OUT_DELAY;
15
+ var PageState = exports.PageState = {
16
+ ACTIVE: 'active',
17
+ PASSIVE: 'passive',
18
+ HIDDEN: 'hidden',
19
+ FROZEN: 'frozen',
20
+ TERMINATED: 'terminated'
21
+ };
22
+ function startPageStateHistory(maxPageStateEntriesSelectable) {
23
+ if (maxPageStateEntriesSelectable === undefined) {
24
+ maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE;
25
+ }
26
+ var pageStateEntryHistory = (0, _browserCore.createValueHistory)({
27
+ expireDelay: PAGE_STATE_CONTEXT_TIME_OUT_DELAY,
28
+ maxEntries: MAX_PAGE_STATE_ENTRIES
29
+ });
30
+ var currentPageState;
31
+ if ((0, _performanceObservable.supportPerformanceTimingEvent)(_performanceObservable.RumPerformanceEntryType.VISIBILITY_STATE)) {
32
+ var visibilityEntries = performance.getEntriesByType(_performanceObservable.RumPerformanceEntryType.VISIBILITY_STATE);
33
+ visibilityEntries.forEach(function (entry) {
34
+ var state = entry.name === 'hidden' ? PageState.HIDDEN : PageState.ACTIVE;
35
+ addPageState(state, entry.startTime);
36
+ });
37
+ }
38
+ addPageState(getPageState(), (0, _browserCore.relativeNow)());
39
+ var _addEventListeners = (0, _browserCore.addEventListeners)(window, [_browserCore.DOM_EVENT.PAGE_SHOW, _browserCore.DOM_EVENT.FOCUS, _browserCore.DOM_EVENT.BLUR, _browserCore.DOM_EVENT.VISIBILITY_CHANGE, _browserCore.DOM_EVENT.RESUME, _browserCore.DOM_EVENT.FREEZE, _browserCore.DOM_EVENT.PAGE_HIDE], function (event) {
40
+ // Only get events fired by the browser to avoid false currentPageState changes done with custom events
41
+ addPageState(computePageState(event), event.timeStamp);
42
+ }, {
43
+ capture: true
44
+ });
45
+ var stopEventListeners = _addEventListeners.stop;
46
+ function addPageState(nextPageState, startTime) {
47
+ if (startTime === undefined) {
48
+ startTime = (0, _browserCore.relativeNow)();
49
+ }
50
+ if (nextPageState === currentPageState) {
51
+ return;
52
+ }
53
+ currentPageState = nextPageState;
54
+ pageStateEntryHistory.closeActive(startTime);
55
+ pageStateEntryHistory.add({
56
+ state: currentPageState,
57
+ startTime: startTime
58
+ }, startTime);
59
+ }
60
+ var pageStateHistory = {
61
+ findAll: function findAll(startTime, duration) {
62
+ var pageStateEntries = pageStateEntryHistory.findAll(startTime, duration);
63
+ return processPageStates(pageStateEntries, startTime, maxPageStateEntriesSelectable);
64
+ },
65
+ wasInPageStateAt: function wasInPageStateAt(state, startTime) {
66
+ return pageStateHistory.wasInPageStateDuringPeriod(state, startTime, 0);
67
+ },
68
+ wasInPageStateDuringPeriod: function wasInPageStateDuringPeriod(state, startTime, duration) {
69
+ return pageStateEntryHistory.findAll(startTime, duration).some(function (pageState) {
70
+ return pageState.state === state;
71
+ });
72
+ },
73
+ addPageState: addPageState,
74
+ stop: function stop() {
75
+ stopEventListeners();
76
+ pageStateEntryHistory.stop();
77
+ }
78
+ };
79
+ return pageStateHistory;
80
+ }
81
+ function processPageStates(pageStateEntries, eventStartTime, maxPageStateEntriesSelectable) {
82
+ if (pageStateEntries.length === 0) {
83
+ return;
84
+ }
85
+ return pageStateEntries.slice(-maxPageStateEntriesSelectable).reverse().map(function (_ref) {
86
+ var state = _ref.state,
87
+ startTime = _ref.startTime;
88
+ return {
89
+ state: state,
90
+ start: (0, _browserCore.toServerDuration)((0, _browserCore.elapsed)(eventStartTime, startTime))
91
+ };
92
+ });
93
+ }
94
+ function computePageState(event) {
95
+ if (event.type === _browserCore.DOM_EVENT.FREEZE) {
96
+ return PageState.FROZEN;
97
+ } else if (event.type === _browserCore.DOM_EVENT.PAGE_HIDE) {
98
+ return event.persisted ? PageState.FROZEN : PageState.TERMINATED;
99
+ }
100
+ return getPageState();
101
+ }
102
+ function getPageState() {
103
+ if (document.visibilityState === 'hidden') {
104
+ return PageState.HIDDEN;
105
+ }
106
+ if (document.hasFocus()) {
107
+ return PageState.ACTIVE;
108
+ }
109
+ return PageState.PASSIVE;
110
+ }
111
+ //# sourceMappingURL=pageStateHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageStateHistory.js","names":["_browserCore","require","_performanceObservable","MAX_PAGE_STATE_ENTRIES","exports","MAX_PAGE_STATE_ENTRIES_SELECTABLE","PAGE_STATE_CONTEXT_TIME_OUT_DELAY","SESSION_TIME_OUT_DELAY","PageState","ACTIVE","PASSIVE","HIDDEN","FROZEN","TERMINATED","startPageStateHistory","maxPageStateEntriesSelectable","undefined","pageStateEntryHistory","createValueHistory","expireDelay","maxEntries","currentPageState","supportPerformanceTimingEvent","RumPerformanceEntryType","VISIBILITY_STATE","visibilityEntries","performance","getEntriesByType","forEach","entry","state","name","addPageState","startTime","getPageState","relativeNow","_addEventListeners","addEventListeners","window","DOM_EVENT","PAGE_SHOW","FOCUS","BLUR","VISIBILITY_CHANGE","RESUME","FREEZE","PAGE_HIDE","event","computePageState","timeStamp","capture","stopEventListeners","stop","nextPageState","closeActive","add","pageStateHistory","findAll","duration","pageStateEntries","processPageStates","wasInPageStateAt","wasInPageStateDuringPeriod","some","pageState","eventStartTime","length","slice","reverse","map","_ref","start","toServerDuration","elapsed","type","persisted","document","visibilityState","hasFocus"],"sources":["../../../../rum/src/domain/contexts/pageStateHistory.js"],"sourcesContent":["import {\n elapsed,\n createValueHistory,\n SESSION_TIME_OUT_DELAY,\n toServerDuration,\n addEventListeners,\n relativeNow,\n DOM_EVENT\n} from '@cloudcare/browser-core'\nimport {\n RumPerformanceEntryType,\n supportPerformanceTimingEvent\n} from '../performanceObservable'\n// Arbitrary value to cap number of element for memory consumption in the browser\nexport var MAX_PAGE_STATE_ENTRIES = 4000\n// Arbitrary value to cap number of element for backend & to save bandwidth\nexport var MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500\n\nexport var PAGE_STATE_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\n\nexport var PageState = {\n ACTIVE: 'active',\n PASSIVE: 'passive',\n HIDDEN: 'hidden',\n FROZEN: 'frozen',\n TERMINATED: 'terminated'\n}\n\nexport function startPageStateHistory(maxPageStateEntriesSelectable) {\n if (maxPageStateEntriesSelectable === undefined) {\n maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE\n }\n var pageStateEntryHistory = createValueHistory({\n expireDelay: PAGE_STATE_CONTEXT_TIME_OUT_DELAY,\n maxEntries: MAX_PAGE_STATE_ENTRIES\n })\n\n var currentPageState\n if (supportPerformanceTimingEvent(RumPerformanceEntryType.VISIBILITY_STATE)) {\n const visibilityEntries = performance.getEntriesByType(\n RumPerformanceEntryType.VISIBILITY_STATE\n )\n\n visibilityEntries.forEach((entry) => {\n const state =\n entry.name === 'hidden' ? PageState.HIDDEN : PageState.ACTIVE\n addPageState(state, entry.startTime)\n })\n }\n addPageState(getPageState(), relativeNow())\n\n var _addEventListeners = addEventListeners(\n window,\n [\n DOM_EVENT.PAGE_SHOW,\n DOM_EVENT.FOCUS,\n DOM_EVENT.BLUR,\n DOM_EVENT.VISIBILITY_CHANGE,\n DOM_EVENT.RESUME,\n DOM_EVENT.FREEZE,\n DOM_EVENT.PAGE_HIDE\n ],\n function (event) {\n // Only get events fired by the browser to avoid false currentPageState changes done with custom events\n addPageState(computePageState(event), event.timeStamp)\n },\n { capture: true }\n )\n var stopEventListeners = _addEventListeners.stop\n\n function addPageState(nextPageState, startTime) {\n if (startTime === undefined) {\n startTime = relativeNow()\n }\n if (nextPageState === currentPageState) {\n return\n }\n\n currentPageState = nextPageState\n pageStateEntryHistory.closeActive(startTime)\n pageStateEntryHistory.add(\n { state: currentPageState, startTime: startTime },\n startTime\n )\n }\n\n const pageStateHistory = {\n findAll: function (startTime, duration) {\n var pageStateEntries = pageStateEntryHistory.findAll(startTime, duration)\n return processPageStates(\n pageStateEntries,\n startTime,\n maxPageStateEntriesSelectable\n )\n },\n\n wasInPageStateAt: function (state, startTime) {\n return pageStateHistory.wasInPageStateDuringPeriod(state, startTime, 0)\n },\n\n wasInPageStateDuringPeriod: function (state, startTime, duration) {\n return pageStateEntryHistory\n .findAll(startTime, duration)\n .some(function (pageState) {\n return pageState.state === state\n })\n },\n\n addPageState: addPageState,\n stop: function () {\n stopEventListeners()\n pageStateEntryHistory.stop()\n }\n }\n return pageStateHistory\n}\nfunction processPageStates(\n pageStateEntries,\n eventStartTime,\n maxPageStateEntriesSelectable\n) {\n if (pageStateEntries.length === 0) {\n return\n }\n\n return pageStateEntries\n .slice(-maxPageStateEntriesSelectable)\n .reverse()\n .map(({ state, startTime }) => ({\n state,\n start: toServerDuration(elapsed(eventStartTime, startTime))\n }))\n}\n\nfunction computePageState(event) {\n if (event.type === DOM_EVENT.FREEZE) {\n return PageState.FROZEN\n } else if (event.type === DOM_EVENT.PAGE_HIDE) {\n return event.persisted ? PageState.FROZEN : PageState.TERMINATED\n }\n return getPageState()\n}\n\nfunction getPageState() {\n if (document.visibilityState === 'hidden') {\n return PageState.HIDDEN\n }\n\n if (document.hasFocus()) {\n return PageState.ACTIVE\n }\n\n return PageState.PASSIVE\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.URL_CONTEXT_TIME_OUT_DELAY = void 0;
7
+ exports.startUrlContexts = startUrlContexts;
8
+ var _browserCore = require("@cloudcare/browser-core");
9
+ /**
10
+ * We want to attach to an event:
11
+ * - the url corresponding to its start
12
+ * - the referrer corresponding to the previous view url (or document referrer for initial view)
13
+ */
14
+
15
+ var URL_CONTEXT_TIME_OUT_DELAY = exports.URL_CONTEXT_TIME_OUT_DELAY = _browserCore.SESSION_TIME_OUT_DELAY;
16
+ function startUrlContexts(lifeCycle, locationChangeObservable, location) {
17
+ var urlContextHistory = (0, _browserCore.createValueHistory)({
18
+ expireDelay: URL_CONTEXT_TIME_OUT_DELAY
19
+ });
20
+ var previousViewUrl;
21
+ lifeCycle.subscribe(_browserCore.LifeCycleEventType.BEFORE_VIEW_CREATED, function (data) {
22
+ var viewUrl = location.href;
23
+ urlContextHistory.add(buildUrlContext({
24
+ url: viewUrl,
25
+ location: location,
26
+ referrer: !previousViewUrl ? document.referrer : previousViewUrl
27
+ }), data.startClocks.relative);
28
+ previousViewUrl = viewUrl;
29
+ });
30
+ lifeCycle.subscribe(_browserCore.LifeCycleEventType.AFTER_VIEW_ENDED, function (data) {
31
+ urlContextHistory.closeActive(data.endClocks.relative);
32
+ });
33
+ var locationChangeSubscription = locationChangeObservable.subscribe(function (data) {
34
+ var current = urlContextHistory.find();
35
+ if (current) {
36
+ var changeTime = (0, _browserCore.relativeNow)();
37
+ urlContextHistory.closeActive(changeTime);
38
+ urlContextHistory.add(buildUrlContext({
39
+ url: data.newLocation.href,
40
+ location: data.newLocation,
41
+ referrer: current.referrer
42
+ }, true), changeTime);
43
+ }
44
+ });
45
+ function buildUrlContext(data) {
46
+ var isLocationChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
47
+ var pathname = data.location.pathname;
48
+ var path = pathname;
49
+ var hash = data.location.hash;
50
+ if (hash && hash.indexOf('#/') === 0) {
51
+ path = '/' + (0, _browserCore.getPathFromHash)(hash);
52
+ }
53
+ return {
54
+ url: data.url,
55
+ referrer: data.referrer,
56
+ host: data.location.host,
57
+ path: path,
58
+ pathGroup: (0, _browserCore.replaceNumberCharByPath)(path),
59
+ urlQuery: (0, _browserCore.getQueryParamsFromUrl)(data.location.href),
60
+ pathname: pathname
61
+ };
62
+ }
63
+ return {
64
+ findUrl: function findUrl(startTime) {
65
+ return urlContextHistory.find(startTime);
66
+ },
67
+ stop: function stop() {
68
+ locationChangeSubscription.unsubscribe();
69
+ urlContextHistory.stop();
70
+ }
71
+ };
72
+ }
73
+ //# sourceMappingURL=urlContexts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlContexts.js","names":["_browserCore","require","URL_CONTEXT_TIME_OUT_DELAY","exports","SESSION_TIME_OUT_DELAY","startUrlContexts","lifeCycle","locationChangeObservable","location","urlContextHistory","createValueHistory","expireDelay","previousViewUrl","subscribe","LifeCycleEventType","BEFORE_VIEW_CREATED","data","viewUrl","href","add","buildUrlContext","url","referrer","document","startClocks","relative","AFTER_VIEW_ENDED","closeActive","endClocks","locationChangeSubscription","current","find","changeTime","relativeNow","newLocation","isLocationChange","arguments","length","undefined","pathname","path","hash","indexOf","getPathFromHash","host","pathGroup","replaceNumberCharByPath","urlQuery","getQueryParamsFromUrl","findUrl","startTime","stop","unsubscribe"],"sources":["../../../../rum/src/domain/contexts/urlContexts.js"],"sourcesContent":["import {\n LifeCycleEventType,\n SESSION_TIME_OUT_DELAY,\n relativeNow,\n createValueHistory,\n replaceNumberCharByPath,\n getQueryParamsFromUrl,\n isHashAnAnchor,\n getPathFromHash\n} from '@cloudcare/browser-core'\n\n/**\n * We want to attach to an event:\n * - the url corresponding to its start\n * - the referrer corresponding to the previous view url (or document referrer for initial view)\n */\n\nexport var URL_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\n\nexport function startUrlContexts(\n lifeCycle,\n locationChangeObservable,\n location\n) {\n var urlContextHistory = createValueHistory({\n expireDelay: URL_CONTEXT_TIME_OUT_DELAY\n })\n\n var previousViewUrl\n\n lifeCycle.subscribe(LifeCycleEventType.BEFORE_VIEW_CREATED, function (data) {\n var viewUrl = location.href\n urlContextHistory.add(\n buildUrlContext({\n url: viewUrl,\n location: location,\n referrer: !previousViewUrl ? document.referrer : previousViewUrl\n }),\n data.startClocks.relative\n )\n previousViewUrl = viewUrl\n })\n lifeCycle.subscribe(LifeCycleEventType.AFTER_VIEW_ENDED, function (data) {\n urlContextHistory.closeActive(data.endClocks.relative)\n })\n var locationChangeSubscription = locationChangeObservable.subscribe(function (\n data\n ) {\n var current = urlContextHistory.find()\n if (current) {\n var changeTime = relativeNow()\n urlContextHistory.closeActive(changeTime)\n urlContextHistory.add(\n buildUrlContext(\n {\n url: data.newLocation.href,\n location: data.newLocation,\n referrer: current.referrer\n },\n true\n ),\n changeTime\n )\n }\n })\n\n function buildUrlContext(data, isLocationChange = false) {\n var pathname = data.location.pathname\n var path = pathname\n var hash = data.location.hash\n if (hash && hash.indexOf('#/') === 0) {\n path = '/' + getPathFromHash(hash)\n }\n return {\n url: data.url,\n referrer: data.referrer,\n host: data.location.host,\n path: path,\n pathGroup: replaceNumberCharByPath(path),\n urlQuery: getQueryParamsFromUrl(data.location.href),\n pathname: pathname\n }\n }\n\n return {\n findUrl: function (startTime) {\n return urlContextHistory.find(startTime)\n },\n stop: function () {\n locationChangeSubscription.unsubscribe()\n urlContextHistory.stop()\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.VIEW_CONTEXT_TIME_OUT_DELAY = void 0;
7
+ exports.startViewContexts = startViewContexts;
8
+ var _browserCore = require("@cloudcare/browser-core");
9
+ var VIEW_CONTEXT_TIME_OUT_DELAY = exports.VIEW_CONTEXT_TIME_OUT_DELAY = _browserCore.SESSION_TIME_OUT_DELAY;
10
+ function startViewContexts(lifeCycle) {
11
+ var viewContextHistory = (0, _browserCore.createValueHistory)({
12
+ expireDelay: VIEW_CONTEXT_TIME_OUT_DELAY
13
+ });
14
+ lifeCycle.subscribe(_browserCore.LifeCycleEventType.BEFORE_VIEW_CREATED, function (view) {
15
+ viewContextHistory.add(buildViewContext(view), view.startClocks.relative);
16
+ });
17
+ lifeCycle.subscribe(_browserCore.LifeCycleEventType.AFTER_VIEW_ENDED, function (data) {
18
+ viewContextHistory.closeActive(data.endClocks.relative);
19
+ });
20
+ lifeCycle.subscribe(_browserCore.LifeCycleEventType.BEFORE_VIEW_UPDATED, function (viewUpdate) {
21
+ var currentView = viewContextHistory.find(viewUpdate.startClocks.relative);
22
+ if (currentView && viewUpdate.name) {
23
+ currentView.name = viewUpdate.name;
24
+ }
25
+ if (currentView && viewUpdate.context) {
26
+ currentView.context = viewUpdate.context;
27
+ }
28
+ });
29
+ lifeCycle.subscribe(_browserCore.LifeCycleEventType.SESSION_RENEWED, function () {
30
+ viewContextHistory.reset();
31
+ });
32
+ function buildViewContext(view) {
33
+ return {
34
+ service: view.service,
35
+ version: view.version,
36
+ context: view.context,
37
+ id: view.id,
38
+ name: view.name,
39
+ startClocks: view.startClocks
40
+ };
41
+ }
42
+ return {
43
+ findView: function findView(startTime) {
44
+ return viewContextHistory.find(startTime);
45
+ },
46
+ stop: function stop() {
47
+ viewContextHistory.stop();
48
+ }
49
+ };
50
+ }
51
+ //# sourceMappingURL=viewContexts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewContexts.js","names":["_browserCore","require","VIEW_CONTEXT_TIME_OUT_DELAY","exports","SESSION_TIME_OUT_DELAY","startViewContexts","lifeCycle","viewContextHistory","createValueHistory","expireDelay","subscribe","LifeCycleEventType","BEFORE_VIEW_CREATED","view","add","buildViewContext","startClocks","relative","AFTER_VIEW_ENDED","data","closeActive","endClocks","BEFORE_VIEW_UPDATED","viewUpdate","currentView","find","name","context","SESSION_RENEWED","reset","service","version","id","findView","startTime","stop"],"sources":["../../../../rum/src/domain/contexts/viewContexts.js"],"sourcesContent":["import {\n SESSION_TIME_OUT_DELAY,\n createValueHistory,\n LifeCycleEventType\n} from '@cloudcare/browser-core'\n\nexport var VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\n\nexport function startViewContexts(lifeCycle) {\n var viewContextHistory = createValueHistory({\n expireDelay: VIEW_CONTEXT_TIME_OUT_DELAY\n })\n\n lifeCycle.subscribe(LifeCycleEventType.BEFORE_VIEW_CREATED, function (view) {\n viewContextHistory.add(buildViewContext(view), view.startClocks.relative)\n })\n\n lifeCycle.subscribe(LifeCycleEventType.AFTER_VIEW_ENDED, function (data) {\n viewContextHistory.closeActive(data.endClocks.relative)\n })\n lifeCycle.subscribe(LifeCycleEventType.BEFORE_VIEW_UPDATED, (viewUpdate) => {\n const currentView = viewContextHistory.find(viewUpdate.startClocks.relative)\n if (currentView && viewUpdate.name) {\n currentView.name = viewUpdate.name\n }\n if (currentView && viewUpdate.context) {\n currentView.context = viewUpdate.context\n }\n })\n lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, function () {\n viewContextHistory.reset()\n })\n\n function buildViewContext(view) {\n return {\n service: view.service,\n version: view.version,\n context: view.context,\n id: view.id,\n name: view.name,\n startClocks: view.startClocks\n }\n }\n\n return {\n findView: function (startTime) {\n return viewContextHistory.find(startTime)\n },\n stop: function () {\n viewContextHistory.stop()\n }\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMO,IAAIC,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,GAAGE,mCAAsB;AAExD,SAASC,iBAAiBA,CAACC,SAAS,EAAE;EAC3C,IAAIC,kBAAkB,GAAG,IAAAC,+BAAkB,EAAC;IAC1CC,WAAW,EAAEP;EACf,CAAC,CAAC;EAEFI,SAAS,CAACI,SAAS,CAACC,+BAAkB,CAACC,mBAAmB,EAAE,UAAUC,IAAI,EAAE;IAC1EN,kBAAkB,CAACO,GAAG,CAACC,gBAAgB,CAACF,IAAI,CAAC,EAAEA,IAAI,CAACG,WAAW,CAACC,QAAQ,CAAC;EAC3E,CAAC,CAAC;EAEFX,SAAS,CAACI,SAAS,CAACC,+BAAkB,CAACO,gBAAgB,EAAE,UAAUC,IAAI,EAAE;IACvEZ,kBAAkB,CAACa,WAAW,CAACD,IAAI,CAACE,SAAS,CAACJ,QAAQ,CAAC;EACzD,CAAC,CAAC;EACFX,SAAS,CAACI,SAAS,CAACC,+BAAkB,CAACW,mBAAmB,EAAE,UAACC,UAAU,EAAK;IAC1E,IAAMC,WAAW,GAAGjB,kBAAkB,CAACkB,IAAI,CAACF,UAAU,CAACP,WAAW,CAACC,QAAQ,CAAC;IAC5E,IAAIO,WAAW,IAAID,UAAU,CAACG,IAAI,EAAE;MAClCF,WAAW,CAACE,IAAI,GAAGH,UAAU,CAACG,IAAI;IACpC;IACA,IAAIF,WAAW,IAAID,UAAU,CAACI,OAAO,EAAE;MACrCH,WAAW,CAACG,OAAO,GAAGJ,UAAU,CAACI,OAAO;IAC1C;EACF,CAAC,CAAC;EACFrB,SAAS,CAACI,SAAS,CAACC,+BAAkB,CAACiB,eAAe,EAAE,YAAY;IAClErB,kBAAkB,CAACsB,KAAK,CAAC,CAAC;EAC5B,CAAC,CAAC;EAEF,SAASd,gBAAgBA,CAACF,IAAI,EAAE;IAC9B,OAAO;MACLiB,OAAO,EAAEjB,IAAI,CAACiB,OAAO;MACrBC,OAAO,EAAElB,IAAI,CAACkB,OAAO;MACrBJ,OAAO,EAAEd,IAAI,CAACc,OAAO;MACrBK,EAAE,EAAEnB,IAAI,CAACmB,EAAE;MACXN,IAAI,EAAEb,IAAI,CAACa,IAAI;MACfV,WAAW,EAAEH,IAAI,CAACG;IACpB,CAAC;EACH;EAEA,OAAO;IACLiB,QAAQ,EAAE,SAAVA,QAAQA,CAAYC,SAAS,EAAE;MAC7B,OAAO3B,kBAAkB,CAACkB,IAAI,CAACS,SAAS,CAAC;IAC3C,CAAC;IACDC,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChB5B,kBAAkB,CAAC4B,IAAI,CAAC,CAAC;IAC3B;EACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createDOMMutationObservable = createDOMMutationObservable;
7
+ exports.getMutationObserverConstructor = getMutationObserverConstructor;
8
+ var _browserCore = require("@cloudcare/browser-core");
9
+ function createDOMMutationObservable() {
10
+ var MutationObserver = getMutationObserverConstructor();
11
+ return new _browserCore.Observable(function (observable) {
12
+ if (!MutationObserver) {
13
+ return;
14
+ }
15
+ var observer = new MutationObserver((0, _browserCore.monitor)(function () {
16
+ return observable.notify();
17
+ }));
18
+ try {
19
+ observer.observe(document, {
20
+ attributes: true,
21
+ characterData: true,
22
+ childList: true,
23
+ subtree: true
24
+ });
25
+ } catch (err) {}
26
+ return function () {
27
+ return observer.disconnect();
28
+ };
29
+ });
30
+ }
31
+ function getMutationObserverConstructor() {
32
+ var constructor;
33
+ var browserWindow = window;
34
+
35
+ // Angular uses Zone.js to provide a context persisting across async tasks. Zone.js replaces the
36
+ // global MutationObserver constructor with a patched version to support the context propagation.
37
+ // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular
38
+ // component: on some occasions, the callback is being called in an infinite loop, causing the
39
+ // page to freeze (even if the callback is completely empty).
40
+ //
41
+ // To work around this issue, we try to get the original MutationObserver constructor stored by
42
+ // Zone.js.
43
+ //
44
+ // [1] https://github.com/angular/angular/issues/26948
45
+ // [2] https://github.com/angular/angular/issues/31712
46
+ if (browserWindow.Zone) {
47
+ // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].
48
+ //
49
+ // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288
50
+ constructor = (0, _browserCore.getZoneJsOriginalValue)(browserWindow, 'MutationObserver');
51
+ if (browserWindow.MutationObserver && constructor === browserWindow.MutationObserver) {
52
+ // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver
53
+ // in the 'window' object. Luckily, the patched MutationObserver class is storing an original
54
+ // instance in its properties[4]. Let's get the original MutationObserver constructor from
55
+ // there.
56
+ //
57
+ // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412
58
+
59
+ var patchedInstance = new browserWindow.MutationObserver(_browserCore.noop);
60
+ var originalInstance = (0, _browserCore.getZoneJsOriginalValue)(patchedInstance, 'originalInstance');
61
+ constructor = originalInstance && originalInstance.constructor;
62
+ }
63
+ }
64
+ if (!constructor) {
65
+ constructor = browserWindow.MutationObserver;
66
+ }
67
+ return constructor;
68
+ }
69
+ //# sourceMappingURL=domMutationObservable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domMutationObservable.js","names":["_browserCore","require","createDOMMutationObservable","MutationObserver","getMutationObserverConstructor","Observable","observable","observer","monitor","notify","observe","document","attributes","characterData","childList","subtree","err","disconnect","constructor","browserWindow","window","Zone","getZoneJsOriginalValue","patchedInstance","noop","originalInstance"],"sources":["../../../rum/src/domain/domMutationObservable.js"],"sourcesContent":["import {\n noop,\n Observable,\n getZoneJsOriginalValue,\n monitor\n} from '@cloudcare/browser-core'\n\nexport function createDOMMutationObservable() {\n var MutationObserver = getMutationObserverConstructor()\n\n return new Observable(function (observable) {\n if (!MutationObserver) {\n return\n }\n var observer = new MutationObserver(\n monitor(function () {\n return observable.notify()\n })\n )\n try {\n observer.observe(document, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true\n })\n } catch (err) {}\n\n return function () {\n return observer.disconnect()\n }\n })\n}\n\nexport function getMutationObserverConstructor() {\n var constructor\n var browserWindow = window\n\n // Angular uses Zone.js to provide a context persisting across async tasks. Zone.js replaces the\n // global MutationObserver constructor with a patched version to support the context propagation.\n // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n // component: on some occasions, the callback is being called in an infinite loop, causing the\n // page to freeze (even if the callback is completely empty).\n //\n // To work around this issue, we try to get the original MutationObserver constructor stored by\n // Zone.js.\n //\n // [1] https://github.com/angular/angular/issues/26948\n // [2] https://github.com/angular/angular/issues/31712\n if (browserWindow.Zone) {\n // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n //\n // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n constructor = getZoneJsOriginalValue(browserWindow, 'MutationObserver')\n\n if (\n browserWindow.MutationObserver &&\n constructor === browserWindow.MutationObserver\n ) {\n // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n // instance in its properties[4]. Let's get the original MutationObserver constructor from\n // there.\n //\n // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n\n var patchedInstance = new browserWindow.MutationObserver(noop)\n\n var originalInstance = getZoneJsOriginalValue(\n patchedInstance,\n 'originalInstance'\n )\n constructor = originalInstance && originalInstance.constructor\n }\n }\n\n if (!constructor) {\n constructor = browserWindow.MutationObserver\n }\n\n return constructor\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAOO,SAASC,2BAA2BA,CAAA,EAAG;EAC5C,IAAIC,gBAAgB,GAAGC,8BAA8B,CAAC,CAAC;EAEvD,OAAO,IAAIC,uBAAU,CAAC,UAAUC,UAAU,EAAE;IAC1C,IAAI,CAACH,gBAAgB,EAAE;MACrB;IACF;IACA,IAAII,QAAQ,GAAG,IAAIJ,gBAAgB,CACjC,IAAAK,oBAAO,EAAC,YAAY;MAClB,OAAOF,UAAU,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC,CACH,CAAC;IACD,IAAI;MACFF,QAAQ,CAACG,OAAO,CAACC,QAAQ,EAAE;QACzBC,UAAU,EAAE,IAAI;QAChBC,aAAa,EAAE,IAAI;QACnBC,SAAS,EAAE,IAAI;QACfC,OAAO,EAAE;MACX,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,GAAG,EAAE,CAAC;IAEf,OAAO,YAAY;MACjB,OAAOT,QAAQ,CAACU,UAAU,CAAC,CAAC;IAC9B,CAAC;EACH,CAAC,CAAC;AACJ;AAEO,SAASb,8BAA8BA,CAAA,EAAG;EAC/C,IAAIc,WAAW;EACf,IAAIC,aAAa,GAAGC,MAAM;;EAE1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAID,aAAa,CAACE,IAAI,EAAE;IACtB;IACA;IACA;IACAH,WAAW,GAAG,IAAAI,mCAAsB,EAACH,aAAa,EAAE,kBAAkB,CAAC;IAEvE,IACEA,aAAa,CAAChB,gBAAgB,IAC9Be,WAAW,KAAKC,aAAa,CAAChB,gBAAgB,EAC9C;MACA;MACA;MACA;MACA;MACA;MACA;;MAEA,IAAIoB,eAAe,GAAG,IAAIJ,aAAa,CAAChB,gBAAgB,CAACqB,iBAAI,CAAC;MAE9D,IAAIC,gBAAgB,GAAG,IAAAH,mCAAsB,EAC3CC,eAAe,EACf,kBACF,CAAC;MACDL,WAAW,GAAGO,gBAAgB,IAAIA,gBAAgB,CAACP,WAAW;IAChE;EACF;EAEA,IAAI,CAACA,WAAW,EAAE;IAChBA,WAAW,GAAGC,aAAa,CAAChB,gBAAgB;EAC9C;EAEA,OAAOe,WAAW;AACpB","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EncoderStreamId = void 0;
7
+ var EncoderStreamId = exports.EncoderStreamId = {
8
+ REPLAY: 1,
9
+ RUM: 2
10
+ };
11
+ //# sourceMappingURL=encoderStreamId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoderStreamId.js","names":["EncoderStreamId","exports","REPLAY","RUM"],"sources":["../../../rum/src/domain/encoderStreamId.js"],"sourcesContent":["export var EncoderStreamId = {\n REPLAY: 1,\n RUM: 2\n}\n\n"],"mappings":";;;;;;AAAO,IAAIA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG;EAC3BE,MAAM,EAAE,CAAC;EACTC,GAAG,EAAE;AACP,CAAC","ignoreList":[]}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.retrieveFirstInputTiming = retrieveFirstInputTiming;
7
+ var _browserCore = require("@cloudcare/browser-core");
8
+ /**
9
+ * first-input timing entry polyfill based on
10
+ * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts
11
+ */
12
+ function retrieveFirstInputTiming(configuration, callback) {
13
+ var startTimeStamp = (0, _browserCore.dateNow)();
14
+ var timingSent = false;
15
+ var _addEventListeners = (0, _browserCore.addEventListeners)(window, [_browserCore.DOM_EVENT.CLICK, _browserCore.DOM_EVENT.MOUSE_DOWN, _browserCore.DOM_EVENT.KEY_DOWN, _browserCore.DOM_EVENT.TOUCH_START, _browserCore.DOM_EVENT.POINTER_DOWN], function (evt) {
16
+ // Only count cancelable events, which should trigger behavior important to the user.
17
+ if (!evt.cancelable) {
18
+ return;
19
+ }
20
+
21
+ // This timing will be used to compute the "first Input delay", which is the delta between
22
+ // when the system received the event (e.g. evt.timeStamp) and when it could run the callback
23
+ // (e.g. performance.now()).
24
+ var timing = {
25
+ entryType: 'first-input',
26
+ processingStart: (0, _browserCore.relativeNow)(),
27
+ processingEnd: (0, _browserCore.relativeNow)(),
28
+ startTime: evt.timeStamp,
29
+ duration: 0,
30
+ // arbitrary value to avoid nullable duration and simplify INP logic
31
+ name: '',
32
+ cancelable: false,
33
+ target: null,
34
+ toJSON: function toJSON() {
35
+ return {};
36
+ }
37
+ };
38
+ if (evt.type === _browserCore.DOM_EVENT.POINTER_DOWN) {
39
+ sendTimingIfPointerIsNotCancelled(timing);
40
+ } else {
41
+ sendTiming(timing);
42
+ }
43
+ }, {
44
+ passive: true,
45
+ capture: true
46
+ });
47
+ var removeEventListeners = _addEventListeners.stop;
48
+ return {
49
+ stop: removeEventListeners
50
+ };
51
+
52
+ /**
53
+ * Pointer events are a special case, because they can trigger main or compositor thread behavior.
54
+ * We differentiate these cases based on whether or not we see a pointercancel event, which are
55
+ * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes
56
+ * scrolling and pinch/zooming.
57
+ */
58
+ function sendTimingIfPointerIsNotCancelled(timing) {
59
+ (0, _browserCore.addEventListeners)(window, [_browserCore.DOM_EVENT.POINTER_UP, _browserCore.DOM_EVENT.POINTER_CANCEL], function (event) {
60
+ if (event.type === _browserCore.DOM_EVENT.POINTER_UP) {
61
+ sendTiming(timing);
62
+ }
63
+ }, {
64
+ once: true
65
+ });
66
+ }
67
+ function sendTiming(timing) {
68
+ if (!timingSent) {
69
+ timingSent = true;
70
+ removeEventListeners();
71
+ // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than
72
+ // the time between now and when the page was loaded.
73
+ // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4
74
+ // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6
75
+ // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7
76
+ var delay = timing.processingStart - timing.startTime;
77
+ if (delay >= 0 && delay < (0, _browserCore.dateNow)() - startTimeStamp) {
78
+ callback(timing);
79
+ }
80
+ }
81
+ }
82
+ }
83
+ //# sourceMappingURL=firstInputPolyfill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firstInputPolyfill.js","names":["_browserCore","require","retrieveFirstInputTiming","configuration","callback","startTimeStamp","dateNow","timingSent","_addEventListeners","addEventListeners","window","DOM_EVENT","CLICK","MOUSE_DOWN","KEY_DOWN","TOUCH_START","POINTER_DOWN","evt","cancelable","timing","entryType","processingStart","relativeNow","processingEnd","startTime","timeStamp","duration","name","target","toJSON","type","sendTimingIfPointerIsNotCancelled","sendTiming","passive","capture","removeEventListeners","stop","POINTER_UP","POINTER_CANCEL","event","once","delay"],"sources":["../../../rum/src/domain/firstInputPolyfill.js"],"sourcesContent":["import {\n addEventListeners,\n dateNow,\n DOM_EVENT,\n relativeNow\n} from '@cloudcare/browser-core'\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nexport function retrieveFirstInputTiming(configuration, callback) {\n var startTimeStamp = dateNow()\n var timingSent = false\n\n var _addEventListeners = addEventListeners(\n window,\n [\n DOM_EVENT.CLICK,\n DOM_EVENT.MOUSE_DOWN,\n DOM_EVENT.KEY_DOWN,\n DOM_EVENT.TOUCH_START,\n DOM_EVENT.POINTER_DOWN\n ],\n function (evt) {\n // Only count cancelable events, which should trigger behavior important to the user.\n if (!evt.cancelable) {\n return\n }\n\n // This timing will be used to compute the \"first Input delay\", which is the delta between\n // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n // (e.g. performance.now()).\n var timing = {\n entryType: 'first-input',\n processingStart: relativeNow(),\n processingEnd: relativeNow(),\n startTime: evt.timeStamp,\n duration: 0, // arbitrary value to avoid nullable duration and simplify INP logic\n name: '',\n cancelable: false,\n target: null,\n toJSON: function () {\n return {}\n }\n }\n\n if (evt.type === DOM_EVENT.POINTER_DOWN) {\n sendTimingIfPointerIsNotCancelled(timing)\n } else {\n sendTiming(timing)\n }\n },\n { passive: true, capture: true }\n )\n var removeEventListeners = _addEventListeners.stop\n return { stop: removeEventListeners }\n\n /**\n * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n * We differentiate these cases based on whether or not we see a pointercancel event, which are\n * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n * scrolling and pinch/zooming.\n */\n function sendTimingIfPointerIsNotCancelled(timing) {\n addEventListeners(\n window,\n [DOM_EVENT.POINTER_UP, DOM_EVENT.POINTER_CANCEL],\n function (event) {\n if (event.type === DOM_EVENT.POINTER_UP) {\n sendTiming(timing)\n }\n },\n { once: true }\n )\n }\n\n function sendTiming(timing) {\n if (!timingSent) {\n timingSent = true\n removeEventListeners()\n // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n // the time between now and when the page was loaded.\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n var delay = timing.processingStart - timing.startTime\n if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n callback(timing)\n }\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMA;AACA;AACA;AACA;AACO,SAASC,wBAAwBA,CAACC,aAAa,EAAEC,QAAQ,EAAE;EAChE,IAAIC,cAAc,GAAG,IAAAC,oBAAO,EAAC,CAAC;EAC9B,IAAIC,UAAU,GAAG,KAAK;EAEtB,IAAIC,kBAAkB,GAAG,IAAAC,8BAAiB,EACxCC,MAAM,EACN,CACEC,sBAAS,CAACC,KAAK,EACfD,sBAAS,CAACE,UAAU,EACpBF,sBAAS,CAACG,QAAQ,EAClBH,sBAAS,CAACI,WAAW,EACrBJ,sBAAS,CAACK,YAAY,CACvB,EACD,UAAUC,GAAG,EAAE;IACb;IACA,IAAI,CAACA,GAAG,CAACC,UAAU,EAAE;MACnB;IACF;;IAEA;IACA;IACA;IACA,IAAIC,MAAM,GAAG;MACXC,SAAS,EAAE,aAAa;MACxBC,eAAe,EAAE,IAAAC,wBAAW,EAAC,CAAC;MAC9BC,aAAa,EAAE,IAAAD,wBAAW,EAAC,CAAC;MAC5BE,SAAS,EAAEP,GAAG,CAACQ,SAAS;MACxBC,QAAQ,EAAE,CAAC;MAAE;MACbC,IAAI,EAAE,EAAE;MACRT,UAAU,EAAE,KAAK;MACjBU,MAAM,EAAE,IAAI;MACZC,MAAM,EAAE,SAARA,MAAMA,CAAA,EAAc;QAClB,OAAO,CAAC,CAAC;MACX;IACF,CAAC;IAED,IAAIZ,GAAG,CAACa,IAAI,KAAKnB,sBAAS,CAACK,YAAY,EAAE;MACvCe,iCAAiC,CAACZ,MAAM,CAAC;IAC3C,CAAC,MAAM;MACLa,UAAU,CAACb,MAAM,CAAC;IACpB;EACF,CAAC,EACD;IAAEc,OAAO,EAAE,IAAI;IAAEC,OAAO,EAAE;EAAK,CACjC,CAAC;EACD,IAAIC,oBAAoB,GAAG3B,kBAAkB,CAAC4B,IAAI;EAClD,OAAO;IAAEA,IAAI,EAAED;EAAqB,CAAC;;EAErC;AACF;AACA;AACA;AACA;AACA;EACE,SAASJ,iCAAiCA,CAACZ,MAAM,EAAE;IACjD,IAAAV,8BAAiB,EACfC,MAAM,EACN,CAACC,sBAAS,CAAC0B,UAAU,EAAE1B,sBAAS,CAAC2B,cAAc,CAAC,EAChD,UAAUC,KAAK,EAAE;MACf,IAAIA,KAAK,CAACT,IAAI,KAAKnB,sBAAS,CAAC0B,UAAU,EAAE;QACvCL,UAAU,CAACb,MAAM,CAAC;MACpB;IACF,CAAC,EACD;MAAEqB,IAAI,EAAE;IAAK,CACf,CAAC;EACH;EAEA,SAASR,UAAUA,CAACb,MAAM,EAAE;IAC1B,IAAI,CAACZ,UAAU,EAAE;MACfA,UAAU,GAAG,IAAI;MACjB4B,oBAAoB,CAAC,CAAC;MACtB;MACA;MACA;MACA;MACA;MACA,IAAIM,KAAK,GAAGtB,MAAM,CAACE,eAAe,GAAGF,MAAM,CAACK,SAAS;MACrD,IAAIiB,KAAK,IAAI,CAAC,IAAIA,KAAK,GAAG,IAAAnC,oBAAO,EAAC,CAAC,GAAGD,cAAc,EAAE;QACpDD,QAAQ,CAACe,MAAM,CAAC;MAClB;IACF;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createViewportObservable = createViewportObservable;
7
+ exports.getViewportDimension = getViewportDimension;
8
+ exports.initViewportObservable = initViewportObservable;
9
+ var _browserCore = require("@cloudcare/browser-core");
10
+ var viewportObservable;
11
+ function initViewportObservable() {
12
+ if (!viewportObservable) {
13
+ viewportObservable = createViewportObservable();
14
+ }
15
+ return viewportObservable;
16
+ }
17
+ function createViewportObservable() {
18
+ return new _browserCore.Observable(function (observable) {
19
+ var _throttledUpdateDimension = (0, _browserCore.throttle)(function () {
20
+ observable.notify(getViewportDimension());
21
+ }, 200);
22
+ var updateDimension = _throttledUpdateDimension.throttled;
23
+ return (0, _browserCore.addEventListener)(window, _browserCore.DOM_EVENT.RESIZE, updateDimension, {
24
+ capture: true,
25
+ passive: true
26
+ }).stop;
27
+ });
28
+ }
29
+
30
+ // excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport
31
+ function getViewportDimension() {
32
+ var visual = window.visualViewport;
33
+ if (visual) {
34
+ return {
35
+ width: Number(visual.width * visual.scale),
36
+ height: Number(visual.height * visual.scale)
37
+ };
38
+ }
39
+ return {
40
+ width: Number(window.innerWidth || 0),
41
+ height: Number(window.innerHeight || 0)
42
+ };
43
+ }
44
+ //# sourceMappingURL=initViewportObservable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initViewportObservable.js","names":["_browserCore","require","viewportObservable","initViewportObservable","createViewportObservable","Observable","observable","_throttledUpdateDimension","throttle","notify","getViewportDimension","updateDimension","throttled","addEventListener","window","DOM_EVENT","RESIZE","capture","passive","stop","visual","visualViewport","width","Number","scale","height","innerWidth","innerHeight"],"sources":["../../../rum/src/domain/initViewportObservable.js"],"sourcesContent":["import {\n Observable,\n throttle,\n addEventListener,\n DOM_EVENT\n} from '@cloudcare/browser-core'\n\nvar viewportObservable\n\nexport function initViewportObservable() {\n if (!viewportObservable) {\n viewportObservable = createViewportObservable()\n }\n return viewportObservable\n}\n\nexport function createViewportObservable() {\n return new Observable(function (observable) {\n var _throttledUpdateDimension = throttle(function () {\n observable.notify(getViewportDimension())\n }, 200)\n var updateDimension = _throttledUpdateDimension.throttled\n return addEventListener(window, DOM_EVENT.RESIZE, updateDimension, {\n capture: true,\n passive: true\n }).stop\n })\n}\n\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension() {\n var visual = window.visualViewport\n if (visual) {\n return {\n width: Number(visual.width * visual.scale),\n height: Number(visual.height * visual.scale)\n }\n }\n\n return {\n width: Number(window.innerWidth || 0),\n height: Number(window.innerHeight || 0)\n }\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAOA,IAAIC,kBAAkB;AAEf,SAASC,sBAAsBA,CAAA,EAAG;EACvC,IAAI,CAACD,kBAAkB,EAAE;IACvBA,kBAAkB,GAAGE,wBAAwB,CAAC,CAAC;EACjD;EACA,OAAOF,kBAAkB;AAC3B;AAEO,SAASE,wBAAwBA,CAAA,EAAG;EACzC,OAAO,IAAIC,uBAAU,CAAC,UAAUC,UAAU,EAAE;IAC1C,IAAIC,yBAAyB,GAAG,IAAAC,qBAAQ,EAAC,YAAY;MACnDF,UAAU,CAACG,MAAM,CAACC,oBAAoB,CAAC,CAAC,CAAC;IAC3C,CAAC,EAAE,GAAG,CAAC;IACP,IAAIC,eAAe,GAAGJ,yBAAyB,CAACK,SAAS;IACzD,OAAO,IAAAC,6BAAgB,EAACC,MAAM,EAAEC,sBAAS,CAACC,MAAM,EAAEL,eAAe,EAAE;MACjEM,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE;IACX,CAAC,CAAC,CAACC,IAAI;EACT,CAAC,CAAC;AACJ;;AAEA;AACO,SAAST,oBAAoBA,CAAA,EAAG;EACrC,IAAIU,MAAM,GAAGN,MAAM,CAACO,cAAc;EAClC,IAAID,MAAM,EAAE;IACV,OAAO;MACLE,KAAK,EAAEC,MAAM,CAACH,MAAM,CAACE,KAAK,GAAGF,MAAM,CAACI,KAAK,CAAC;MAC1CC,MAAM,EAAEF,MAAM,CAACH,MAAM,CAACK,MAAM,GAAGL,MAAM,CAACI,KAAK;IAC7C,CAAC;EACH;EAEA,OAAO;IACLF,KAAK,EAAEC,MAAM,CAACT,MAAM,CAACY,UAAU,IAAI,CAAC,CAAC;IACrCD,MAAM,EAAEF,MAAM,CAACT,MAAM,CAACa,WAAW,IAAI,CAAC;EACxC,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createLocationChangeObservable = createLocationChangeObservable;
7
+ var _browserCore = require("@cloudcare/browser-core");
8
+ function createLocationChangeObservable(location) {
9
+ var currentLocation = (0, _browserCore.shallowClone)(location);
10
+ return new _browserCore.Observable(function (observable) {
11
+ var _trackHistory = trackHistory(onLocationChange);
12
+ var _trackHash = trackHash(onLocationChange);
13
+ function onLocationChange() {
14
+ if (currentLocation.href === location.href) {
15
+ return;
16
+ }
17
+ var newLocation = (0, _browserCore.shallowClone)(location);
18
+ observable.notify({
19
+ newLocation: newLocation,
20
+ oldLocation: currentLocation
21
+ });
22
+ currentLocation = newLocation;
23
+ }
24
+ return function () {
25
+ _trackHistory.stop();
26
+ _trackHash.stop();
27
+ };
28
+ });
29
+ }
30
+ function trackHistory(onHistoryChange) {
31
+ // eslint-disable-next-line @typescript-eslint/unbound-method
32
+ var pushState = (0, _browserCore.instrumentMethod)(getHistoryInstrumentationTarget('pushState'), 'pushState', function (params) {
33
+ var onPostCall = params.onPostCall;
34
+ onPostCall(onHistoryChange);
35
+ });
36
+ var replaceState = (0, _browserCore.instrumentMethod)(getHistoryInstrumentationTarget('replaceState'), 'replaceState', function (params) {
37
+ var onPostCall = params.onPostCall;
38
+ onPostCall(onHistoryChange);
39
+ });
40
+ var popState = (0, _browserCore.addEventListener)(window, _browserCore.DOM_EVENT.POP_STATE, onHistoryChange);
41
+ return {
42
+ stop: function stop() {
43
+ pushState.stop();
44
+ replaceState.stop();
45
+ popState.stop();
46
+ }
47
+ };
48
+ }
49
+ function trackHash(onHashChange) {
50
+ return (0, _browserCore.addEventListener)(window, _browserCore.DOM_EVENT.HASH_CHANGE, onHashChange);
51
+ }
52
+ function getHistoryInstrumentationTarget(methodName) {
53
+ // Ideally we should always instument the method on the prototype, however some frameworks (e.g [Next.js](https://github.com/vercel/next.js/blob/d3f5532065f3e3bb84fb54bd2dfd1a16d0f03a21/packages/next/src/client/components/app-router.tsx#L429))
54
+ // are wrapping the instance method. In that case we should also wrap the instance method.
55
+ return Object.prototype.hasOwnProperty.call(history, methodName) ? history : History.prototype;
56
+ }
57
+ //# sourceMappingURL=locationChangeObservable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locationChangeObservable.js","names":["_browserCore","require","createLocationChangeObservable","location","currentLocation","shallowClone","Observable","observable","_trackHistory","trackHistory","onLocationChange","_trackHash","trackHash","href","newLocation","notify","oldLocation","stop","onHistoryChange","pushState","instrumentMethod","getHistoryInstrumentationTarget","params","onPostCall","replaceState","popState","addEventListener","window","DOM_EVENT","POP_STATE","onHashChange","HASH_CHANGE","methodName","Object","prototype","hasOwnProperty","call","history","History"],"sources":["../../../rum/src/domain/locationChangeObservable.js"],"sourcesContent":["import {\n addEventListener,\n DOM_EVENT,\n Observable,\n shallowClone,\n instrumentMethod\n} from '@cloudcare/browser-core'\n\nexport function createLocationChangeObservable(location) {\n var currentLocation = shallowClone(location)\n return new Observable(function (observable) {\n var _trackHistory = trackHistory(onLocationChange)\n var _trackHash = trackHash(onLocationChange)\n function onLocationChange() {\n if (currentLocation.href === location.href) {\n return\n }\n var newLocation = shallowClone(location)\n observable.notify({\n newLocation: newLocation,\n oldLocation: currentLocation\n })\n currentLocation = newLocation\n }\n return function () {\n _trackHistory.stop()\n _trackHash.stop()\n }\n })\n}\n\nfunction trackHistory(onHistoryChange) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var pushState = instrumentMethod(\n getHistoryInstrumentationTarget('pushState'),\n 'pushState',\n function (params) {\n var onPostCall = params.onPostCall\n onPostCall(onHistoryChange)\n }\n )\n var replaceState = instrumentMethod(\n getHistoryInstrumentationTarget('replaceState'),\n 'replaceState',\n function (params) {\n var onPostCall = params.onPostCall\n onPostCall(onHistoryChange)\n }\n )\n var popState = addEventListener(window, DOM_EVENT.POP_STATE, onHistoryChange)\n\n return {\n stop: function () {\n pushState.stop()\n replaceState.stop()\n popState.stop()\n }\n }\n}\n\nfunction trackHash(onHashChange) {\n return addEventListener(window, DOM_EVENT.HASH_CHANGE, onHashChange)\n}\nfunction getHistoryInstrumentationTarget(methodName) {\n // Ideally we should always instument the method on the prototype, however some frameworks (e.g [Next.js](https://github.com/vercel/next.js/blob/d3f5532065f3e3bb84fb54bd2dfd1a16d0f03a21/packages/next/src/client/components/app-router.tsx#L429))\n // are wrapping the instance method. In that case we should also wrap the instance method.\n return Object.prototype.hasOwnProperty.call(history, methodName)\n ? history\n : History.prototype\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAQO,SAASC,8BAA8BA,CAACC,QAAQ,EAAE;EACvD,IAAIC,eAAe,GAAG,IAAAC,yBAAY,EAACF,QAAQ,CAAC;EAC5C,OAAO,IAAIG,uBAAU,CAAC,UAAUC,UAAU,EAAE;IAC1C,IAAIC,aAAa,GAAGC,YAAY,CAACC,gBAAgB,CAAC;IAClD,IAAIC,UAAU,GAAGC,SAAS,CAACF,gBAAgB,CAAC;IAC5C,SAASA,gBAAgBA,CAAA,EAAG;MAC1B,IAAIN,eAAe,CAACS,IAAI,KAAKV,QAAQ,CAACU,IAAI,EAAE;QAC1C;MACF;MACA,IAAIC,WAAW,GAAG,IAAAT,yBAAY,EAACF,QAAQ,CAAC;MACxCI,UAAU,CAACQ,MAAM,CAAC;QAChBD,WAAW,EAAEA,WAAW;QACxBE,WAAW,EAAEZ;MACf,CAAC,CAAC;MACFA,eAAe,GAAGU,WAAW;IAC/B;IACA,OAAO,YAAY;MACjBN,aAAa,CAACS,IAAI,CAAC,CAAC;MACpBN,UAAU,CAACM,IAAI,CAAC,CAAC;IACnB,CAAC;EACH,CAAC,CAAC;AACJ;AAEA,SAASR,YAAYA,CAACS,eAAe,EAAE;EACrC;EACA,IAAIC,SAAS,GAAG,IAAAC,6BAAgB,EAC9BC,+BAA+B,CAAC,WAAW,CAAC,EAC5C,WAAW,EACX,UAAUC,MAAM,EAAE;IAChB,IAAIC,UAAU,GAAGD,MAAM,CAACC,UAAU;IAClCA,UAAU,CAACL,eAAe,CAAC;EAC7B,CACF,CAAC;EACD,IAAIM,YAAY,GAAG,IAAAJ,6BAAgB,EACjCC,+BAA+B,CAAC,cAAc,CAAC,EAC/C,cAAc,EACd,UAAUC,MAAM,EAAE;IAChB,IAAIC,UAAU,GAAGD,MAAM,CAACC,UAAU;IAClCA,UAAU,CAACL,eAAe,CAAC;EAC7B,CACF,CAAC;EACD,IAAIO,QAAQ,GAAG,IAAAC,6BAAgB,EAACC,MAAM,EAAEC,sBAAS,CAACC,SAAS,EAAEX,eAAe,CAAC;EAE7E,OAAO;IACLD,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChBE,SAAS,CAACF,IAAI,CAAC,CAAC;MAChBO,YAAY,CAACP,IAAI,CAAC,CAAC;MACnBQ,QAAQ,CAACR,IAAI,CAAC,CAAC;IACjB;EACF,CAAC;AACH;AAEA,SAASL,SAASA,CAACkB,YAAY,EAAE;EAC/B,OAAO,IAAAJ,6BAAgB,EAACC,MAAM,EAAEC,sBAAS,CAACG,WAAW,EAAED,YAAY,CAAC;AACtE;AACA,SAAST,+BAA+BA,CAACW,UAAU,EAAE;EACnD;EACA;EACA,OAAOC,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACC,OAAO,EAAEL,UAAU,CAAC,GAC5DK,OAAO,GACPC,OAAO,CAACJ,SAAS;AACvB","ignoreList":[]}