@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,218 @@
1
+ import { includes, msToNs, each, toArray, getPathName, isValidUrl, isIntakeRequest, ResourceType, preferredNow } from '@cloudcare/browser-core';
2
+ export var FAKE_INITIAL_DOCUMENT = 'initial_document';
3
+ var RESOURCE_TYPES = [[ResourceType.DOCUMENT, function (initiatorType) {
4
+ return FAKE_INITIAL_DOCUMENT === initiatorType;
5
+ }], [ResourceType.XHR, function (initiatorType) {
6
+ return 'xmlhttprequest' === initiatorType;
7
+ }], [ResourceType.FETCH, function (initiatorType) {
8
+ return 'fetch' === initiatorType;
9
+ }], [ResourceType.BEACON, function (initiatorType) {
10
+ return 'beacon' === initiatorType;
11
+ }], [ResourceType.CSS, function (_, path) {
12
+ return path.match(/\.css$/i) !== null;
13
+ }], [ResourceType.JS, function (_, path) {
14
+ return path.match(/\.js$/i) !== null;
15
+ }], [ResourceType.IMAGE, function (initiatorType, path) {
16
+ return includes(['image', 'img', 'icon'], initiatorType) || path.match(/\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i) !== null;
17
+ }], [ResourceType.FONT, function (_, path) {
18
+ return path.match(/\.(woff|eot|woff2|ttf)$/i) !== null;
19
+ }], [ResourceType.MEDIA, function (initiatorType, path) {
20
+ return includes(['audio', 'video'], initiatorType) || path.match(/\.(mp3|mp4)$/i) !== null;
21
+ }]];
22
+ export function computeResourceEntryType(entry) {
23
+ var url = entry.name;
24
+ if (!isValidUrl(url)) {
25
+ return ResourceType.OTHER;
26
+ }
27
+ var path = getPathName(url);
28
+ var type = ResourceType.OTHER;
29
+ each(RESOURCE_TYPES, function (res) {
30
+ var _type = res[0],
31
+ isType = res[1];
32
+ if (isType(entry.initiatorType, path)) {
33
+ type = _type;
34
+ return false;
35
+ }
36
+ });
37
+ return type;
38
+ }
39
+ function areInOrder() {
40
+ var numbers = toArray(arguments);
41
+ for (var i = 1; i < numbers.length; i += 1) {
42
+ if (numbers[i - 1] > numbers[i]) {
43
+ return false;
44
+ }
45
+ }
46
+ return true;
47
+ }
48
+ /**
49
+ * Handles the 'deliveryType' property to distinguish between supported values ('cache', 'navigational-prefetch'),
50
+ * undefined (unsupported in some browsers), and other cases ('other' for unknown or unrecognized values).
51
+ * see: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/deliveryType
52
+ */
53
+ export function computeResourceEntryDeliveryType(entry) {
54
+ return entry.deliveryType === '' ? 'other' : entry.deliveryType;
55
+ }
56
+ /**
57
+ * The 'nextHopProtocol' is an empty string for cross-origin resources without CORS headers,
58
+ * meaning the protocol is unknown, and we shouldn't report it.
59
+ * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/nextHopProtocol#cross-origin_resources
60
+ */
61
+ export function computeResourceEntryProtocol(entry) {
62
+ return entry.nextHopProtocol === '' ? undefined : entry.nextHopProtocol;
63
+ }
64
+ export function isResourceEntryRequestType(entry) {
65
+ return entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch';
66
+ }
67
+ var HAS_MULTI_BYTES_CHARACTERS = /[^\u0000-\u007F]/;
68
+ export function getStrSize(candidate) {
69
+ if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {
70
+ return candidate.length;
71
+ }
72
+ if (window.TextEncoder !== undefined) {
73
+ return new TextEncoder().encode(candidate).length;
74
+ }
75
+ return new Blob([candidate]).size;
76
+ }
77
+ export function isResourceUrlLimit(name, limitSize) {
78
+ return getStrSize(name) > limitSize;
79
+ }
80
+ export function computeResourceEntryDuration(entry) {
81
+ // Safari duration is always 0 on timings blocked by cross origin policies.
82
+ if (entry.duration === 0 && entry.startTime < entry.responseEnd) {
83
+ return msToNs(entry.responseEnd - entry.startTime);
84
+ }
85
+ return msToNs(entry.duration);
86
+ }
87
+ export function is304(entry) {
88
+ if (entry.encodedBodySize > 0 && entry.transferSize > 0 && entry.transferSize < entry.encodedBodySize) {
89
+ return true;
90
+ }
91
+
92
+ // unknown
93
+ return null;
94
+ }
95
+ export function isCacheHit(entry) {
96
+ // if we transferred bytes, it must not be a cache hit
97
+ // (will return false for 304 Not Modified)
98
+ if (entry.transferSize > 0) return false;
99
+
100
+ // if the body size is non-zero, it must mean this is a
101
+ // ResourceTiming2 browser, this was same-origin or TAO,
102
+ // and transferSize was 0, so it was in the cache
103
+ if (entry.decodedBodySize > 0) return true;
104
+
105
+ // fall back to duration checking (non-RT2 or cross-origin)
106
+ return entry.duration < 30;
107
+ }
108
+ export function computePerformanceResourceDetails(entry) {
109
+ if (!hasValidResourceEntryTimings(entry)) {
110
+ return undefined;
111
+ }
112
+ var startTime = entry.startTime,
113
+ fetchStart = entry.fetchStart,
114
+ redirectStart = entry.redirectStart,
115
+ redirectEnd = entry.redirectEnd,
116
+ domainLookupStart = entry.domainLookupStart,
117
+ domainLookupEnd = entry.domainLookupEnd,
118
+ connectStart = entry.connectStart,
119
+ secureConnectionStart = entry.secureConnectionStart,
120
+ connectEnd = entry.connectEnd,
121
+ requestStart = entry.requestStart,
122
+ responseStart = entry.responseStart,
123
+ responseEnd = entry.responseEnd;
124
+ var details = {
125
+ firstbyte: msToNs(responseStart - requestStart),
126
+ trans: msToNs(responseEnd - responseStart),
127
+ downloadTime: formatTiming(startTime, responseStart, responseEnd),
128
+ firstByteTime: formatTiming(startTime, requestStart, responseStart)
129
+ };
130
+ if (responseStart > 0 && responseStart <= preferredNow()) {
131
+ details.ttfb = msToNs(responseStart - requestStart);
132
+ }
133
+ // Make sure a connection occurred
134
+ if (connectEnd !== fetchStart) {
135
+ details.tcp = msToNs(connectEnd - connectStart);
136
+ details.connectTime = formatTiming(startTime, connectStart, connectEnd);
137
+ // Make sure a secure connection occurred
138
+ if (areInOrder(connectStart, secureConnectionStart, connectEnd)) {
139
+ details.ssl = msToNs(connectEnd - secureConnectionStart);
140
+ details.sslTime = formatTiming(startTime, secureConnectionStart, connectEnd);
141
+ }
142
+ }
143
+
144
+ // Make sure a domain lookup occurred
145
+ if (domainLookupEnd !== fetchStart) {
146
+ details.dns = msToNs(domainLookupEnd - domainLookupStart);
147
+ details.dnsTime = formatTiming(startTime, domainLookupStart, domainLookupEnd);
148
+ }
149
+ if (hasRedirection(entry)) {
150
+ details.redirect = msToNs(redirectEnd - redirectStart);
151
+ details.redirectTime = formatTiming(startTime, redirectStart, redirectEnd);
152
+ }
153
+ // renderBlockstatus
154
+ if (entry.renderBlockingStatus) {
155
+ details.renderBlockingStatus = entry.renderBlockingStatus;
156
+ }
157
+ return details;
158
+ }
159
+ export function hasValidResourceEntryDuration(entry) {
160
+ return entry.duration >= 0;
161
+ }
162
+ export function hasValidResourceEntryTimings(entry) {
163
+ var areCommonTimingsInOrder = areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd);
164
+ var areRedirectionTimingsInOrder = hasRedirection(entry) ? areInOrder(entry.startTime, entry.redirectStart, entry.redirectEnd, entry.fetchStart) : true;
165
+ return areCommonTimingsInOrder && areRedirectionTimingsInOrder;
166
+ }
167
+ function hasRedirection(entry) {
168
+ return entry.redirectEnd > entry.startTime;
169
+ }
170
+ function formatTiming(origin, start, end) {
171
+ return {
172
+ duration: msToNs(end - start),
173
+ start: msToNs(start - origin)
174
+ };
175
+ }
176
+ export function computeResourceEntrySize(entry) {
177
+ // Make sure a request actually occurred
178
+ if (entry.startTime < entry.responseStart) {
179
+ return {
180
+ size: entry.decodedBodySize,
181
+ encodedBodySize: entry.encodedBodySize,
182
+ decodedBodySize: entry.decodedBodySize,
183
+ transferSize: entry.transferSize
184
+ };
185
+ // return {
186
+ // size: entry.decodedBodySize,
187
+ // encodeSize:
188
+ // Number.MAX_SAFE_INTEGER < entry.encodedBodySize
189
+ // ? 0
190
+ // : entry.encodedBodySize // max safe interger
191
+ // }
192
+ }
193
+ return {
194
+ size: undefined,
195
+ encodedBodySize: undefined,
196
+ decodedBodySize: undefined,
197
+ transferSize: undefined
198
+ };
199
+ }
200
+ export function isAllowedRequestUrl(configuration, url) {
201
+ return url && !isIntakeRequest(url, configuration);
202
+ }
203
+ var DATA_URL_REGEX = /data:(.+)?(;base64)?,/g;
204
+ export var MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 24000;
205
+ export function isLongDataUrl(url) {
206
+ if (url.length <= MAX_ATTRIBUTE_VALUE_CHAR_LENGTH) {
207
+ return false;
208
+ } else if (url.substring(0, 5) === 'data:') {
209
+ // Avoid String.match RangeError: Maximum call stack size exceeded
210
+ url = url.substring(0, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH);
211
+ return true;
212
+ }
213
+ return false;
214
+ }
215
+ export function sanitizeDataUrl(url) {
216
+ return url.match(DATA_URL_REGEX)[0] + '[...]';
217
+ }
218
+ //# sourceMappingURL=resourceUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceUtils.js","names":["includes","msToNs","each","toArray","getPathName","isValidUrl","isIntakeRequest","ResourceType","preferredNow","FAKE_INITIAL_DOCUMENT","RESOURCE_TYPES","DOCUMENT","initiatorType","XHR","FETCH","BEACON","CSS","_","path","match","JS","IMAGE","FONT","MEDIA","computeResourceEntryType","entry","url","name","OTHER","type","res","_type","isType","areInOrder","numbers","arguments","i","length","computeResourceEntryDeliveryType","deliveryType","computeResourceEntryProtocol","nextHopProtocol","undefined","isResourceEntryRequestType","HAS_MULTI_BYTES_CHARACTERS","getStrSize","candidate","test","window","TextEncoder","encode","Blob","size","isResourceUrlLimit","limitSize","computeResourceEntryDuration","duration","startTime","responseEnd","is304","encodedBodySize","transferSize","isCacheHit","decodedBodySize","computePerformanceResourceDetails","hasValidResourceEntryTimings","fetchStart","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","details","firstbyte","trans","downloadTime","formatTiming","firstByteTime","ttfb","tcp","connectTime","ssl","sslTime","dns","dnsTime","hasRedirection","redirect","redirectTime","renderBlockingStatus","hasValidResourceEntryDuration","areCommonTimingsInOrder","areRedirectionTimingsInOrder","origin","start","end","computeResourceEntrySize","isAllowedRequestUrl","configuration","DATA_URL_REGEX","MAX_ATTRIBUTE_VALUE_CHAR_LENGTH","isLongDataUrl","substring","sanitizeDataUrl"],"sources":["../../../../../rum/src/domain/rumEventsCollection/resource/resourceUtils.js"],"sourcesContent":["import {\n includes,\n msToNs,\n each,\n toArray,\n getPathName,\n isValidUrl,\n isIntakeRequest,\n ResourceType,\n preferredNow\n} from '@cloudcare/browser-core'\nexport var FAKE_INITIAL_DOCUMENT = 'initial_document'\n\nvar RESOURCE_TYPES = [\n [\n ResourceType.DOCUMENT,\n function (initiatorType) {\n return FAKE_INITIAL_DOCUMENT === initiatorType\n }\n ],\n [\n ResourceType.XHR,\n function (initiatorType) {\n return 'xmlhttprequest' === initiatorType\n }\n ],\n [\n ResourceType.FETCH,\n function (initiatorType) {\n return 'fetch' === initiatorType\n }\n ],\n [\n ResourceType.BEACON,\n function (initiatorType) {\n return 'beacon' === initiatorType\n }\n ],\n [\n ResourceType.CSS,\n function (_, path) {\n return path.match(/\\.css$/i) !== null\n }\n ],\n [\n ResourceType.JS,\n function (_, path) {\n return path.match(/\\.js$/i) !== null\n }\n ],\n [\n ResourceType.IMAGE,\n function (initiatorType, path) {\n return (\n includes(['image', 'img', 'icon'], initiatorType) ||\n path.match(/\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i) !== null\n )\n }\n ],\n [\n ResourceType.FONT,\n function (_, path) {\n return path.match(/\\.(woff|eot|woff2|ttf)$/i) !== null\n }\n ],\n [\n ResourceType.MEDIA,\n function (initiatorType, path) {\n return (\n includes(['audio', 'video'], initiatorType) ||\n path.match(/\\.(mp3|mp4)$/i) !== null\n )\n }\n ]\n]\n\nexport function computeResourceEntryType(entry) {\n var url = entry.name\n if (!isValidUrl(url)) {\n return ResourceType.OTHER\n }\n var path = getPathName(url)\n var type = ResourceType.OTHER\n each(RESOURCE_TYPES, function (res) {\n var _type = res[0],\n isType = res[1]\n\n if (isType(entry.initiatorType, path)) {\n type = _type\n return false\n }\n })\n return type\n}\nfunction areInOrder() {\n var numbers = toArray(arguments)\n for (var i = 1; i < numbers.length; i += 1) {\n if (numbers[i - 1] > numbers[i]) {\n return false\n }\n }\n return true\n}\n/**\n * Handles the 'deliveryType' property to distinguish between supported values ('cache', 'navigational-prefetch'),\n * undefined (unsupported in some browsers), and other cases ('other' for unknown or unrecognized values).\n * see: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/deliveryType\n */\nexport function computeResourceEntryDeliveryType(entry) {\n return entry.deliveryType === '' ? 'other' : entry.deliveryType\n}\n/**\n * The 'nextHopProtocol' is an empty string for cross-origin resources without CORS headers,\n * meaning the protocol is unknown, and we shouldn't report it.\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/nextHopProtocol#cross-origin_resources\n */\nexport function computeResourceEntryProtocol(entry) {\n return entry.nextHopProtocol === '' ? undefined : entry.nextHopProtocol\n}\n\nexport function isResourceEntryRequestType(entry) {\n return (\n entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch'\n )\n}\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/\nexport function getStrSize(candidate) {\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length\n }\n\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length\n }\n\n return new Blob([candidate]).size\n}\nexport function isResourceUrlLimit(name, limitSize) {\n return getStrSize(name) > limitSize\n}\nexport function computeResourceEntryDuration(entry) {\n // Safari duration is always 0 on timings blocked by cross origin policies.\n if (entry.duration === 0 && entry.startTime < entry.responseEnd) {\n return msToNs(entry.responseEnd - entry.startTime)\n }\n\n return msToNs(entry.duration)\n}\nexport function is304(entry) {\n if (\n entry.encodedBodySize > 0 &&\n entry.transferSize > 0 &&\n entry.transferSize < entry.encodedBodySize\n ) {\n return true\n }\n\n // unknown\n return null\n}\nexport function isCacheHit(entry) {\n // if we transferred bytes, it must not be a cache hit\n // (will return false for 304 Not Modified)\n if (entry.transferSize > 0) return false\n\n // if the body size is non-zero, it must mean this is a\n // ResourceTiming2 browser, this was same-origin or TAO,\n // and transferSize was 0, so it was in the cache\n if (entry.decodedBodySize > 0) return true\n\n // fall back to duration checking (non-RT2 or cross-origin)\n return entry.duration < 30\n}\n\nexport function computePerformanceResourceDetails(entry) {\n if (!hasValidResourceEntryTimings(entry)) {\n return undefined\n }\n\n var startTime = entry.startTime,\n fetchStart = entry.fetchStart,\n redirectStart = entry.redirectStart,\n redirectEnd = entry.redirectEnd,\n domainLookupStart = entry.domainLookupStart,\n domainLookupEnd = entry.domainLookupEnd,\n connectStart = entry.connectStart,\n secureConnectionStart = entry.secureConnectionStart,\n connectEnd = entry.connectEnd,\n requestStart = entry.requestStart,\n responseStart = entry.responseStart,\n responseEnd = entry.responseEnd\n var details = {\n firstbyte: msToNs(responseStart - requestStart),\n trans: msToNs(responseEnd - responseStart),\n downloadTime: formatTiming(startTime, responseStart, responseEnd),\n firstByteTime: formatTiming(startTime, requestStart, responseStart)\n }\n if (responseStart > 0 && responseStart <= preferredNow()) {\n details.ttfb = msToNs(responseStart - requestStart)\n }\n // Make sure a connection occurred\n if (connectEnd !== fetchStart) {\n details.tcp = msToNs(connectEnd - connectStart)\n details.connectTime = formatTiming(startTime, connectStart, connectEnd)\n // Make sure a secure connection occurred\n if (areInOrder(connectStart, secureConnectionStart, connectEnd)) {\n details.ssl = msToNs(connectEnd - secureConnectionStart)\n details.sslTime = formatTiming(\n startTime,\n secureConnectionStart,\n connectEnd\n )\n }\n }\n\n // Make sure a domain lookup occurred\n if (domainLookupEnd !== fetchStart) {\n details.dns = msToNs(domainLookupEnd - domainLookupStart)\n details.dnsTime = formatTiming(\n startTime,\n domainLookupStart,\n domainLookupEnd\n )\n }\n\n if (hasRedirection(entry)) {\n details.redirect = msToNs(redirectEnd - redirectStart)\n details.redirectTime = formatTiming(startTime, redirectStart, redirectEnd)\n }\n // renderBlockstatus\n if (entry.renderBlockingStatus) {\n details.renderBlockingStatus = entry.renderBlockingStatus\n }\n return details\n}\nexport function hasValidResourceEntryDuration(entry) {\n return entry.duration >= 0\n}\nexport function hasValidResourceEntryTimings(entry) {\n var areCommonTimingsInOrder = areInOrder(\n entry.startTime,\n entry.fetchStart,\n entry.domainLookupStart,\n entry.domainLookupEnd,\n entry.connectStart,\n entry.connectEnd,\n entry.requestStart,\n entry.responseStart,\n entry.responseEnd\n )\n var areRedirectionTimingsInOrder = hasRedirection(entry)\n ? areInOrder(\n entry.startTime,\n entry.redirectStart,\n entry.redirectEnd,\n entry.fetchStart\n )\n : true\n return areCommonTimingsInOrder && areRedirectionTimingsInOrder\n}\n\nfunction hasRedirection(entry) {\n return entry.redirectEnd > entry.startTime\n}\n\nfunction formatTiming(origin, start, end) {\n return {\n duration: msToNs(end - start),\n start: msToNs(start - origin)\n }\n}\n\nexport function computeResourceEntrySize(entry) {\n // Make sure a request actually occurred\n if (entry.startTime < entry.responseStart) {\n return {\n size: entry.decodedBodySize,\n encodedBodySize: entry.encodedBodySize,\n decodedBodySize: entry.decodedBodySize,\n transferSize: entry.transferSize\n }\n // return {\n // size: entry.decodedBodySize,\n // encodeSize:\n // Number.MAX_SAFE_INTEGER < entry.encodedBodySize\n // ? 0\n // : entry.encodedBodySize // max safe interger\n // }\n }\n return {\n size: undefined,\n encodedBodySize: undefined,\n decodedBodySize: undefined,\n transferSize: undefined\n }\n}\n\nexport function isAllowedRequestUrl(configuration, url) {\n return url && !isIntakeRequest(url, configuration)\n}\n\nvar DATA_URL_REGEX = /data:(.+)?(;base64)?,/g\nexport var MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 24_000\nexport function isLongDataUrl(url) {\n if (url.length <= MAX_ATTRIBUTE_VALUE_CHAR_LENGTH) {\n return false\n } else if (url.substring(0, 5) === 'data:') {\n // Avoid String.match RangeError: Maximum call stack size exceeded\n url = url.substring(0, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH)\n return true\n }\n return false\n}\n\nexport function sanitizeDataUrl(url) {\n return url.match(DATA_URL_REGEX)[0] + '[...]'\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ import { runOnReadyState, assign } from '@cloudcare/browser-core';
2
+ import { RumPerformanceEntryType } from '../../performanceObservable';
3
+ import { FAKE_INITIAL_DOCUMENT } from './resourceUtils';
4
+ import { getNavigationEntry } from '../../performanceUtils';
5
+ export function retrieveInitialDocumentResourceTiming(configuration, callback) {
6
+ runOnReadyState('interactive', function () {
7
+ var entry = assign(getNavigationEntry().toJSON(), {
8
+ entryType: RumPerformanceEntryType.RESOURCE,
9
+ initiatorType: FAKE_INITIAL_DOCUMENT,
10
+ toJSON: function toJSON() {
11
+ return assign({}, entry, {
12
+ toJSON: undefined
13
+ });
14
+ }
15
+ });
16
+ callback(entry);
17
+ });
18
+ }
19
+ //# sourceMappingURL=retrieveInitialDocumentResourceTiming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrieveInitialDocumentResourceTiming.js","names":["runOnReadyState","assign","RumPerformanceEntryType","FAKE_INITIAL_DOCUMENT","getNavigationEntry","retrieveInitialDocumentResourceTiming","configuration","callback","entry","toJSON","entryType","RESOURCE","initiatorType","undefined"],"sources":["../../../../../rum/src/domain/rumEventsCollection/resource/retrieveInitialDocumentResourceTiming.js"],"sourcesContent":["import { runOnReadyState, assign } from '@cloudcare/browser-core'\nimport { RumPerformanceEntryType } from '../../performanceObservable'\nimport { FAKE_INITIAL_DOCUMENT } from './resourceUtils'\nimport { getNavigationEntry } from '../../performanceUtils'\nexport function retrieveInitialDocumentResourceTiming(configuration, callback) {\n runOnReadyState('interactive', function () {\n var entry = assign(getNavigationEntry().toJSON(), {\n entryType: RumPerformanceEntryType.RESOURCE,\n initiatorType: FAKE_INITIAL_DOCUMENT,\n toJSON: function () {\n return assign({}, entry, { toJSON: undefined })\n }\n })\n callback(entry)\n })\n}\n"],"mappings":"AAAA,SAASA,eAAe,EAAEC,MAAM,QAAQ,yBAAyB;AACjE,SAASC,uBAAuB,QAAQ,6BAA6B;AACrE,SAASC,qBAAqB,QAAQ,iBAAiB;AACvD,SAASC,kBAAkB,QAAQ,wBAAwB;AAC3D,OAAO,SAASC,qCAAqCA,CAACC,aAAa,EAAEC,QAAQ,EAAE;EAC7EP,eAAe,CAAC,aAAa,EAAE,YAAY;IACzC,IAAIQ,KAAK,GAAGP,MAAM,CAACG,kBAAkB,CAAC,CAAC,CAACK,MAAM,CAAC,CAAC,EAAE;MAChDC,SAAS,EAAER,uBAAuB,CAACS,QAAQ;MAC3CC,aAAa,EAAET,qBAAqB;MACpCM,MAAM,EAAE,SAARA,MAAMA,CAAA,EAAc;QAClB,OAAOR,MAAM,CAAC,CAAC,CAAC,EAAEO,KAAK,EAAE;UAAEC,MAAM,EAAEI;QAAU,CAAC,CAAC;MACjD;IACF,CAAC,CAAC;IACFN,QAAQ,CAACC,KAAK,CAAC;EACjB,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * performance.interactionCount polyfill
3
+ *
4
+ * The interactionCount is an integer which counts the total number of distinct user interactions,
5
+ * for which there was a unique interactionId.
6
+ *
7
+ * The interactionCount polyfill is an estimate based on a convention specific to Chrome. Cf: https://github.com/GoogleChrome/web-vitals/pull/213
8
+ * This is currently not an issue as the polyfill is only used for INP which is currently only supported on Chrome.
9
+ * Hopefully when/if other browsers will support INP, they will also implement performance.interactionCount at the same time, so we won't need that polyfill.
10
+ *
11
+ * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/polyfills/interactionCountPolyfill.ts
12
+ */
13
+
14
+ import { monitor } from '@cloudcare/browser-core';
15
+ var observer;
16
+ var interactionCountEstimate = 0;
17
+ var minKnownInteractionId = Infinity;
18
+ var maxKnownInteractionId = 0;
19
+ export function initInteractionCountPolyfill() {
20
+ if ('interactionCount' in performance || observer) {
21
+ return;
22
+ }
23
+ observer = new window.PerformanceObserver(monitor(function (entries) {
24
+ entries.getEntries().forEach(function (e) {
25
+ var entry = e;
26
+ if (entry.interactionId) {
27
+ minKnownInteractionId = Math.min(minKnownInteractionId, entry.interactionId);
28
+ maxKnownInteractionId = Math.max(maxKnownInteractionId, entry.interactionId);
29
+ interactionCountEstimate = (maxKnownInteractionId - minKnownInteractionId) / 7 + 1;
30
+ }
31
+ });
32
+ }));
33
+ observer.observe({
34
+ type: 'event',
35
+ buffered: true,
36
+ durationThreshold: 0
37
+ });
38
+ }
39
+
40
+ /**
41
+ * Returns the `interactionCount` value using the native API (if available)
42
+ * or the polyfill estimate in this module.
43
+ */
44
+ export var getInteractionCount = function getInteractionCount() {
45
+ return observer ? interactionCountEstimate : window.performance.interactionCount || 0;
46
+ };
47
+ //# sourceMappingURL=interactionCountPolyfill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionCountPolyfill.js","names":["monitor","observer","interactionCountEstimate","minKnownInteractionId","Infinity","maxKnownInteractionId","initInteractionCountPolyfill","performance","window","PerformanceObserver","entries","getEntries","forEach","e","entry","interactionId","Math","min","max","observe","type","buffered","durationThreshold","getInteractionCount","interactionCount"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/interactionCountPolyfill.js"],"sourcesContent":["/**\n * performance.interactionCount polyfill\n *\n * The interactionCount is an integer which counts the total number of distinct user interactions,\n * for which there was a unique interactionId.\n *\n * The interactionCount polyfill is an estimate based on a convention specific to Chrome. Cf: https://github.com/GoogleChrome/web-vitals/pull/213\n * This is currently not an issue as the polyfill is only used for INP which is currently only supported on Chrome.\n * Hopefully when/if other browsers will support INP, they will also implement performance.interactionCount at the same time, so we won't need that polyfill.\n *\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/polyfills/interactionCountPolyfill.ts\n */\n\nimport { monitor } from '@cloudcare/browser-core'\n\nvar observer\n\nvar interactionCountEstimate = 0\nvar minKnownInteractionId = Infinity\nvar maxKnownInteractionId = 0\n\nexport function initInteractionCountPolyfill() {\n if ('interactionCount' in performance || observer) {\n return\n }\n\n observer = new window.PerformanceObserver(\n monitor(function (entries) {\n entries.getEntries().forEach(function (e) {\n const entry = e\n\n if (entry.interactionId) {\n minKnownInteractionId = Math.min(\n minKnownInteractionId,\n entry.interactionId\n )\n maxKnownInteractionId = Math.max(\n maxKnownInteractionId,\n entry.interactionId\n )\n\n interactionCountEstimate =\n (maxKnownInteractionId - minKnownInteractionId) / 7 + 1\n }\n })\n })\n )\n observer.observe({ type: 'event', buffered: true, durationThreshold: 0 })\n}\n\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport var getInteractionCount = function () {\n return observer\n ? interactionCountEstimate\n : window.performance.interactionCount || 0\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,yBAAyB;AAEjD,IAAIC,QAAQ;AAEZ,IAAIC,wBAAwB,GAAG,CAAC;AAChC,IAAIC,qBAAqB,GAAGC,QAAQ;AACpC,IAAIC,qBAAqB,GAAG,CAAC;AAE7B,OAAO,SAASC,4BAA4BA,CAAA,EAAG;EAC7C,IAAI,kBAAkB,IAAIC,WAAW,IAAIN,QAAQ,EAAE;IACjD;EACF;EAEAA,QAAQ,GAAG,IAAIO,MAAM,CAACC,mBAAmB,CACvCT,OAAO,CAAC,UAAUU,OAAO,EAAE;IACzBA,OAAO,CAACC,UAAU,CAAC,CAAC,CAACC,OAAO,CAAC,UAAUC,CAAC,EAAE;MACxC,IAAMC,KAAK,GAAGD,CAAC;MAEf,IAAIC,KAAK,CAACC,aAAa,EAAE;QACvBZ,qBAAqB,GAAGa,IAAI,CAACC,GAAG,CAC9Bd,qBAAqB,EACrBW,KAAK,CAACC,aACR,CAAC;QACDV,qBAAqB,GAAGW,IAAI,CAACE,GAAG,CAC9Bb,qBAAqB,EACrBS,KAAK,CAACC,aACR,CAAC;QAEDb,wBAAwB,GACtB,CAACG,qBAAqB,GAAGF,qBAAqB,IAAI,CAAC,GAAG,CAAC;MAC3D;IACF,CAAC,CAAC;EACJ,CAAC,CACH,CAAC;EACDF,QAAQ,CAACkB,OAAO,CAAC;IAAEC,IAAI,EAAE,OAAO;IAAEC,QAAQ,EAAE,IAAI;IAAEC,iBAAiB,EAAE;EAAE,CAAC,CAAC;AAC3E;;AAEA;AACA;AACA;AACA;AACA,OAAO,IAAIC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAA,EAAe;EAC3C,OAAOtB,QAAQ,GACXC,wBAAwB,GACxBM,MAAM,CAACD,WAAW,CAACiB,gBAAgB,IAAI,CAAC;AAC9C,CAAC","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ import { trackScrollMetrics } from './trackScrollMetrics';
2
+ import { trackLoadingTime } from './trackLoadingTime';
3
+ import { trackCumulativeLayoutShift } from './trackCumulativeLayoutShift';
4
+ import { trackInteractionToNextPaint } from './trackInteractionToNextPaint';
5
+ export function trackCommonViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, viewStart) {
6
+ var commonViewMetrics = {};
7
+ var _trackLoadingTime = trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadingType, viewStart, function (newLoadingTime) {
8
+ commonViewMetrics.loadingTime = newLoadingTime;
9
+ scheduleViewUpdate();
10
+ });
11
+ var stopLoadingTimeTracking = _trackLoadingTime.stop;
12
+ var setLoadEvent = _trackLoadingTime.setLoadEvent;
13
+ var _trackScrollMetrics = trackScrollMetrics(configuration, viewStart, function (newScrollMetrics) {
14
+ commonViewMetrics.scroll = newScrollMetrics;
15
+ });
16
+ var stopScrollMetricsTracking = _trackScrollMetrics.stop;
17
+ var stopCLSTracking;
18
+ var _trackCumulativeLayoutShift = trackCumulativeLayoutShift(configuration, viewStart.relative, function (cumulativeLayoutShift) {
19
+ commonViewMetrics.cumulativeLayoutShift = cumulativeLayoutShift;
20
+ scheduleViewUpdate();
21
+ });
22
+ var stopCLSTracking = _trackCumulativeLayoutShift.stop;
23
+ var _trackInteractionToNextPaint = trackInteractionToNextPaint(configuration, viewStart.relative, loadingType);
24
+ var stopINPTracking = _trackInteractionToNextPaint.stop;
25
+ var getInteractionToNextPaint = _trackInteractionToNextPaint.getInteractionToNextPaint;
26
+ var setViewEnd = _trackInteractionToNextPaint.setViewEnd;
27
+ return {
28
+ stop: function stop() {
29
+ stopLoadingTimeTracking();
30
+ stopCLSTracking();
31
+ stopScrollMetricsTracking();
32
+ },
33
+ stopINPTracking: stopINPTracking,
34
+ setLoadEvent: setLoadEvent,
35
+ setViewEnd: setViewEnd,
36
+ getCommonViewMetrics: function getCommonViewMetrics() {
37
+ commonViewMetrics.interactionToNextPaint = getInteractionToNextPaint();
38
+ return commonViewMetrics;
39
+ }
40
+ };
41
+ }
42
+ //# sourceMappingURL=trackCommonViewMetrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trackCommonViewMetrics.js","names":["trackScrollMetrics","trackLoadingTime","trackCumulativeLayoutShift","trackInteractionToNextPaint","trackCommonViewMetrics","lifeCycle","domMutationObservable","configuration","scheduleViewUpdate","loadingType","viewStart","commonViewMetrics","_trackLoadingTime","newLoadingTime","loadingTime","stopLoadingTimeTracking","stop","setLoadEvent","_trackScrollMetrics","newScrollMetrics","scroll","stopScrollMetricsTracking","stopCLSTracking","_trackCumulativeLayoutShift","relative","cumulativeLayoutShift","_trackInteractionToNextPaint","stopINPTracking","getInteractionToNextPaint","setViewEnd","getCommonViewMetrics","interactionToNextPaint"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackCommonViewMetrics.js"],"sourcesContent":["import { trackScrollMetrics } from './trackScrollMetrics'\nimport { trackLoadingTime } from './trackLoadingTime'\nimport { trackCumulativeLayoutShift } from './trackCumulativeLayoutShift'\nimport { trackInteractionToNextPaint } from './trackInteractionToNextPaint'\n\nexport function trackCommonViewMetrics(\n lifeCycle,\n domMutationObservable,\n configuration,\n scheduleViewUpdate,\n loadingType,\n viewStart\n) {\n var commonViewMetrics = {}\n var _trackLoadingTime = trackLoadingTime(\n lifeCycle,\n domMutationObservable,\n configuration,\n loadingType,\n viewStart,\n function (newLoadingTime) {\n commonViewMetrics.loadingTime = newLoadingTime\n scheduleViewUpdate()\n }\n )\n var stopLoadingTimeTracking = _trackLoadingTime.stop\n var setLoadEvent = _trackLoadingTime.setLoadEvent\n var _trackScrollMetrics = trackScrollMetrics(\n configuration,\n viewStart,\n function (newScrollMetrics) {\n commonViewMetrics.scroll = newScrollMetrics\n }\n )\n var stopScrollMetricsTracking = _trackScrollMetrics.stop\n var stopCLSTracking\n var _trackCumulativeLayoutShift = trackCumulativeLayoutShift(\n configuration,\n viewStart.relative,\n function (cumulativeLayoutShift) {\n commonViewMetrics.cumulativeLayoutShift = cumulativeLayoutShift\n scheduleViewUpdate()\n }\n )\n var stopCLSTracking = _trackCumulativeLayoutShift.stop\n var _trackInteractionToNextPaint = trackInteractionToNextPaint(\n configuration,\n viewStart.relative,\n loadingType\n )\n var stopINPTracking = _trackInteractionToNextPaint.stop\n var getInteractionToNextPaint =\n _trackInteractionToNextPaint.getInteractionToNextPaint\n var setViewEnd = _trackInteractionToNextPaint.setViewEnd\n return {\n stop: function () {\n stopLoadingTimeTracking()\n stopCLSTracking()\n stopScrollMetricsTracking()\n },\n stopINPTracking: stopINPTracking,\n setLoadEvent: setLoadEvent,\n setViewEnd: setViewEnd,\n getCommonViewMetrics: function () {\n commonViewMetrics.interactionToNextPaint = getInteractionToNextPaint()\n return commonViewMetrics\n }\n }\n}\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,0BAA0B,QAAQ,8BAA8B;AACzE,SAASC,2BAA2B,QAAQ,+BAA+B;AAE3E,OAAO,SAASC,sBAAsBA,CACpCC,SAAS,EACTC,qBAAqB,EACrBC,aAAa,EACbC,kBAAkB,EAClBC,WAAW,EACXC,SAAS,EACT;EACA,IAAIC,iBAAiB,GAAG,CAAC,CAAC;EAC1B,IAAIC,iBAAiB,GAAGX,gBAAgB,CACtCI,SAAS,EACTC,qBAAqB,EACrBC,aAAa,EACbE,WAAW,EACXC,SAAS,EACT,UAAUG,cAAc,EAAE;IACxBF,iBAAiB,CAACG,WAAW,GAAGD,cAAc;IAC9CL,kBAAkB,CAAC,CAAC;EACtB,CACF,CAAC;EACD,IAAIO,uBAAuB,GAAGH,iBAAiB,CAACI,IAAI;EACpD,IAAIC,YAAY,GAAGL,iBAAiB,CAACK,YAAY;EACjD,IAAIC,mBAAmB,GAAGlB,kBAAkB,CAC1CO,aAAa,EACbG,SAAS,EACT,UAAUS,gBAAgB,EAAE;IAC1BR,iBAAiB,CAACS,MAAM,GAAGD,gBAAgB;EAC7C,CACF,CAAC;EACD,IAAIE,yBAAyB,GAAGH,mBAAmB,CAACF,IAAI;EACxD,IAAIM,eAAe;EACnB,IAAIC,2BAA2B,GAAGrB,0BAA0B,CAC1DK,aAAa,EACbG,SAAS,CAACc,QAAQ,EAClB,UAAUC,qBAAqB,EAAE;IAC/Bd,iBAAiB,CAACc,qBAAqB,GAAGA,qBAAqB;IAC/DjB,kBAAkB,CAAC,CAAC;EACtB,CACF,CAAC;EACD,IAAIc,eAAe,GAAGC,2BAA2B,CAACP,IAAI;EACtD,IAAIU,4BAA4B,GAAGvB,2BAA2B,CAC5DI,aAAa,EACbG,SAAS,CAACc,QAAQ,EAClBf,WACF,CAAC;EACD,IAAIkB,eAAe,GAAGD,4BAA4B,CAACV,IAAI;EACvD,IAAIY,yBAAyB,GAC3BF,4BAA4B,CAACE,yBAAyB;EACxD,IAAIC,UAAU,GAAGH,4BAA4B,CAACG,UAAU;EACxD,OAAO;IACLb,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChBD,uBAAuB,CAAC,CAAC;MACzBO,eAAe,CAAC,CAAC;MACjBD,yBAAyB,CAAC,CAAC;IAC7B,CAAC;IACDM,eAAe,EAAEA,eAAe;IAChCV,YAAY,EAAEA,YAAY;IAC1BY,UAAU,EAAEA,UAAU;IACtBC,oBAAoB,EAAE,SAAtBA,oBAAoBA,CAAA,EAAc;MAChCnB,iBAAiB,CAACoB,sBAAsB,GAAGH,yBAAyB,CAAC,CAAC;MACtE,OAAOjB,iBAAiB;IAC1B;EACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,117 @@
1
+ import { find, noop, round, ONE_SECOND, isElementNode, elapsed } from '@cloudcare/browser-core';
2
+ import { getSelectorFromElement } from '../actions/getSelectorsFromElement';
3
+ import { RumPerformanceEntryType, supportPerformanceTimingEvent, createPerformanceObservable } from '../../performanceObservable';
4
+ /**
5
+ * Track the cumulative layout shifts (CLS).
6
+ * Layout shifts are grouped into session windows.
7
+ * The minimum gap between session windows is 1 second.
8
+ * The maximum duration of a session window is 5 second.
9
+ * The session window layout shift value is the sum of layout shifts inside it.
10
+ * The CLS value is the max of session windows values.
11
+ *
12
+ * This yields a new value whenever the CLS value is updated (a higher session window value is computed).
13
+ *
14
+ * See isLayoutShiftSupported to check for browser support.
15
+ *
16
+ * Documentation:
17
+ * https://web.dev/cls/
18
+ * https://web.dev/evolving-cls/
19
+ * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts
20
+ */
21
+ export function trackCumulativeLayoutShift(configuration, viewStart, callback) {
22
+ if (!isLayoutShiftSupported()) {
23
+ return {
24
+ stop: noop
25
+ };
26
+ }
27
+ var maxClsValue = 0;
28
+ // WeakRef is not supported in IE11 and Safari mobile, but so is the layout shift API, so this code won't be executed in these browsers
29
+ var maxClsTarget;
30
+ var maxClsStartTime;
31
+
32
+ // if no layout shift happen the value should be reported as 0
33
+ callback({
34
+ value: 0
35
+ });
36
+ var window = slidingSessionWindow();
37
+ var performanceSubscription = createPerformanceObservable(configuration, {
38
+ type: RumPerformanceEntryType.LAYOUT_SHIFT,
39
+ buffered: true
40
+ }).subscribe(function (entries) {
41
+ for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
42
+ var entry = entries_1[_i];
43
+ if (entry.hadRecentInput || entry.startTime < viewStart) {
44
+ continue;
45
+ }
46
+ var _update = window.update(entry);
47
+ var cumulatedValue = _update.cumulatedValue;
48
+ var isMaxValue = _update.isMaxValue;
49
+ if (isMaxValue) {
50
+ var target = getTargetFromSource(entry.sources);
51
+ maxClsTarget = target ? new WeakRef(target) : undefined;
52
+ maxClsStartTime = elapsed(viewStart, entry.startTime);
53
+ }
54
+ if (cumulatedValue > maxClsValue) {
55
+ maxClsValue = cumulatedValue;
56
+ var target = maxClsTarget && maxClsTarget.deref();
57
+ callback({
58
+ value: round(maxClsValue, 4),
59
+ targetSelector: target && getSelectorFromElement(target, configuration.actionNameAttribute),
60
+ time: maxClsStartTime
61
+ });
62
+ }
63
+ }
64
+ });
65
+ return {
66
+ stop: function stop() {
67
+ performanceSubscription.unsubscribe();
68
+ }
69
+ };
70
+ }
71
+ function getTargetFromSource(sources) {
72
+ if (!sources) {
73
+ return;
74
+ }
75
+ var source = find(sources, function (source) {
76
+ return !!source.node && isElementNode(source.node);
77
+ });
78
+ return source && source.node;
79
+ }
80
+ export var MAX_WINDOW_DURATION = 5 * ONE_SECOND;
81
+ var MAX_UPDATE_GAP = ONE_SECOND;
82
+ function slidingSessionWindow() {
83
+ var cumulatedValue = 0;
84
+ var startTime;
85
+ var endTime;
86
+ var maxValue = 0;
87
+ return {
88
+ update: function update(entry) {
89
+ var shouldCreateNewWindow = startTime === undefined || entry.startTime - endTime >= MAX_UPDATE_GAP || entry.startTime - startTime >= 5 * MAX_WINDOW_DURATION;
90
+ var isMaxValue;
91
+ if (shouldCreateNewWindow) {
92
+ startTime = endTime = entry.startTime;
93
+ maxValue = cumulatedValue = entry.value;
94
+ isMaxValue = true;
95
+ } else {
96
+ cumulatedValue += entry.value;
97
+ endTime = entry.startTime;
98
+ isMaxValue = entry.value > maxValue;
99
+ if (isMaxValue) {
100
+ maxValue = entry.value;
101
+ }
102
+ }
103
+ return {
104
+ cumulatedValue: cumulatedValue,
105
+ isMaxValue: isMaxValue
106
+ };
107
+ }
108
+ };
109
+ }
110
+
111
+ /**
112
+ * Check whether `layout-shift` is supported by the browser.
113
+ */
114
+ export function isLayoutShiftSupported() {
115
+ return supportPerformanceTimingEvent(RumPerformanceEntryType.LAYOUT_SHIFT) && 'WeakRef' in window;
116
+ }
117
+ //# sourceMappingURL=trackCumulativeLayoutShift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trackCumulativeLayoutShift.js","names":["find","noop","round","ONE_SECOND","isElementNode","elapsed","getSelectorFromElement","RumPerformanceEntryType","supportPerformanceTimingEvent","createPerformanceObservable","trackCumulativeLayoutShift","configuration","viewStart","callback","isLayoutShiftSupported","stop","maxClsValue","maxClsTarget","maxClsStartTime","value","window","slidingSessionWindow","performanceSubscription","type","LAYOUT_SHIFT","buffered","subscribe","entries","_i","entries_1","length","entry","hadRecentInput","startTime","_update","update","cumulatedValue","isMaxValue","target","getTargetFromSource","sources","WeakRef","undefined","deref","targetSelector","actionNameAttribute","time","unsubscribe","source","node","MAX_WINDOW_DURATION","MAX_UPDATE_GAP","endTime","maxValue","shouldCreateNewWindow"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackCumulativeLayoutShift.js"],"sourcesContent":["import {\n find,\n noop,\n round,\n ONE_SECOND,\n isElementNode,\n elapsed\n} from '@cloudcare/browser-core'\nimport { getSelectorFromElement } from '../actions/getSelectorsFromElement'\nimport {\n RumPerformanceEntryType,\n supportPerformanceTimingEvent,\n createPerformanceObservable\n} from '../../performanceObservable'\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nexport function trackCumulativeLayoutShift(configuration, viewStart, callback) {\n if (!isLayoutShiftSupported()) {\n return {\n stop: noop\n }\n }\n\n var maxClsValue = 0\n // WeakRef is not supported in IE11 and Safari mobile, but so is the layout shift API, so this code won't be executed in these browsers\n var maxClsTarget\n var maxClsStartTime\n\n // if no layout shift happen the value should be reported as 0\n callback({\n value: 0\n })\n\n var window = slidingSessionWindow()\n var performanceSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.LAYOUT_SHIFT,\n buffered: true\n }).subscribe(function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i]\n if (entry.hadRecentInput || entry.startTime < viewStart) {\n continue\n }\n var _update = window.update(entry)\n var cumulatedValue = _update.cumulatedValue\n var isMaxValue = _update.isMaxValue\n if (isMaxValue) {\n var target = getTargetFromSource(entry.sources)\n maxClsTarget = target ? new WeakRef(target) : undefined\n maxClsStartTime = elapsed(viewStart, entry.startTime)\n }\n if (cumulatedValue > maxClsValue) {\n maxClsValue = cumulatedValue\n var target = maxClsTarget && maxClsTarget.deref()\n\n callback({\n value: round(maxClsValue, 4),\n targetSelector:\n target &&\n getSelectorFromElement(target, configuration.actionNameAttribute),\n time: maxClsStartTime\n })\n }\n }\n })\n\n return {\n stop: function () {\n performanceSubscription.unsubscribe()\n }\n }\n}\nfunction getTargetFromSource(sources) {\n if (!sources) {\n return\n }\n var source = find(sources, function (source) {\n return !!source.node && isElementNode(source.node)\n })\n return source && source.node\n}\nexport var MAX_WINDOW_DURATION = 5 * ONE_SECOND\nvar MAX_UPDATE_GAP = ONE_SECOND\nfunction slidingSessionWindow() {\n var cumulatedValue = 0\n var startTime\n var endTime\n var maxValue = 0\n return {\n update: function (entry) {\n var shouldCreateNewWindow =\n startTime === undefined ||\n entry.startTime - endTime >= MAX_UPDATE_GAP ||\n entry.startTime - startTime >= 5 * MAX_WINDOW_DURATION\n var isMaxValue\n\n if (shouldCreateNewWindow) {\n startTime = endTime = entry.startTime\n maxValue = cumulatedValue = entry.value\n isMaxValue = true\n } else {\n cumulatedValue += entry.value\n endTime = entry.startTime\n isMaxValue = entry.value > maxValue\n if (isMaxValue) {\n maxValue = entry.value\n }\n }\n return {\n cumulatedValue: cumulatedValue,\n isMaxValue: isMaxValue\n }\n }\n }\n}\n\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nexport function isLayoutShiftSupported() {\n return (\n supportPerformanceTimingEvent(RumPerformanceEntryType.LAYOUT_SHIFT) &&\n 'WeakRef' in window\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ import { find, ONE_MINUTE } from '@cloudcare/browser-core';
2
+ import { RumPerformanceEntryType, createPerformanceObservable } from '../../performanceObservable';
3
+ export var TIMING_MAXIMUM_DELAY = 10 * ONE_MINUTE;
4
+ export function trackFirstContentfulPaint(configuration, firstHidden, callback) {
5
+ var performanceSubscription = createPerformanceObservable(configuration, {
6
+ type: RumPerformanceEntryType.PAINT,
7
+ buffered: true
8
+ }).subscribe(function (entries) {
9
+ var fcpEntry = find(entries, function (entry) {
10
+ return entry.entryType === RumPerformanceEntryType.PAINT && entry.name === 'first-contentful-paint' && entry.startTime < firstHidden.getTimeStamp() && entry.startTime < TIMING_MAXIMUM_DELAY;
11
+ });
12
+ if (fcpEntry) {
13
+ callback(fcpEntry.startTime);
14
+ }
15
+ });
16
+ return {
17
+ stop: performanceSubscription.unsubscribe
18
+ };
19
+ }
20
+ //# sourceMappingURL=trackFirstContentfulPaint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trackFirstContentfulPaint.js","names":["find","ONE_MINUTE","RumPerformanceEntryType","createPerformanceObservable","TIMING_MAXIMUM_DELAY","trackFirstContentfulPaint","configuration","firstHidden","callback","performanceSubscription","type","PAINT","buffered","subscribe","entries","fcpEntry","entry","entryType","name","startTime","getTimeStamp","stop","unsubscribe"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackFirstContentfulPaint.js"],"sourcesContent":["import { find, ONE_MINUTE } from '@cloudcare/browser-core'\nimport {\n RumPerformanceEntryType,\n createPerformanceObservable\n} from '../../performanceObservable'\nexport var TIMING_MAXIMUM_DELAY = 10 * ONE_MINUTE\nexport function trackFirstContentfulPaint(\n configuration,\n firstHidden,\n callback\n) {\n var performanceSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.PAINT,\n buffered: true\n }).subscribe(function (entries) {\n var fcpEntry = find(entries, function (entry) {\n return (\n entry.entryType === RumPerformanceEntryType.PAINT &&\n entry.name === 'first-contentful-paint' &&\n entry.startTime < firstHidden.getTimeStamp() &&\n entry.startTime < TIMING_MAXIMUM_DELAY\n )\n })\n if (fcpEntry) {\n callback(fcpEntry.startTime)\n }\n })\n return { stop: performanceSubscription.unsubscribe }\n}\n"],"mappings":"AAAA,SAASA,IAAI,EAAEC,UAAU,QAAQ,yBAAyB;AAC1D,SACEC,uBAAuB,EACvBC,2BAA2B,QACtB,6BAA6B;AACpC,OAAO,IAAIC,oBAAoB,GAAG,EAAE,GAAGH,UAAU;AACjD,OAAO,SAASI,yBAAyBA,CACvCC,aAAa,EACbC,WAAW,EACXC,QAAQ,EACR;EACA,IAAIC,uBAAuB,GAAGN,2BAA2B,CAACG,aAAa,EAAE;IACvEI,IAAI,EAAER,uBAAuB,CAACS,KAAK;IACnCC,QAAQ,EAAE;EACZ,CAAC,CAAC,CAACC,SAAS,CAAC,UAAUC,OAAO,EAAE;IAC9B,IAAIC,QAAQ,GAAGf,IAAI,CAACc,OAAO,EAAE,UAAUE,KAAK,EAAE;MAC5C,OACEA,KAAK,CAACC,SAAS,KAAKf,uBAAuB,CAACS,KAAK,IACjDK,KAAK,CAACE,IAAI,KAAK,wBAAwB,IACvCF,KAAK,CAACG,SAAS,GAAGZ,WAAW,CAACa,YAAY,CAAC,CAAC,IAC5CJ,KAAK,CAACG,SAAS,GAAGf,oBAAoB;IAE1C,CAAC,CAAC;IACF,IAAIW,QAAQ,EAAE;MACZP,QAAQ,CAACO,QAAQ,CAACI,SAAS,CAAC;IAC9B;EACF,CAAC,CAAC;EACF,OAAO;IAAEE,IAAI,EAAEZ,uBAAuB,CAACa;EAAY,CAAC;AACtD","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ import { DOM_EVENT, addEventListeners, noop } from '@cloudcare/browser-core';
2
+ import { supportPerformanceTimingEvent, RumPerformanceEntryType } from '../../../domain/performanceObservable.js';
3
+ export function trackFirstHidden(viewStart, eventTarget) {
4
+ if (typeof eventTarget === 'undefined') {
5
+ eventTarget = window;
6
+ }
7
+ if (document.visibilityState === 'hidden' && !document.prerendering) {
8
+ return {
9
+ getTimeStamp: function getTimeStamp() {
10
+ return 0;
11
+ },
12
+ stop: noop
13
+ };
14
+ }
15
+ if (supportPerformanceTimingEvent(RumPerformanceEntryType.VISIBILITY_STATE) && !document.prerendering) {
16
+ var firstHiddenEntry = performance.getEntriesByType(RumPerformanceEntryType.VISIBILITY_STATE).filter(function (entry) {
17
+ return entry.name === 'hidden';
18
+ }).find(function (entry) {
19
+ return entry.startTime >= viewStart.relative;
20
+ });
21
+ if (firstHiddenEntry) {
22
+ return {
23
+ getTimeStamp: function getTimeStamp() {
24
+ return firstHiddenEntry.startTime;
25
+ },
26
+ stop: noop
27
+ };
28
+ }
29
+ }
30
+ var timeStamp = Infinity;
31
+ var _addEventListeners = addEventListeners(eventTarget, [DOM_EVENT.PAGE_HIDE, DOM_EVENT.VISIBILITY_CHANGE, DOM_EVENT.PRERENDERING_CHANGE], function (event) {
32
+ if (event.type === DOM_EVENT.PAGE_HIDE || document.visibilityState === 'hidden') {
33
+ timeStamp = event.timeStamp;
34
+ _stop();
35
+ }
36
+ }, {
37
+ capture: true
38
+ }),
39
+ _stop = _addEventListeners.stop;
40
+ return {
41
+ getTimeStamp: function getTimeStamp() {
42
+ return timeStamp;
43
+ },
44
+ stop: function stop() {
45
+ _stop();
46
+ }
47
+ };
48
+ }
49
+ //# sourceMappingURL=trackFirstHidden.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trackFirstHidden.js","names":["DOM_EVENT","addEventListeners","noop","supportPerformanceTimingEvent","RumPerformanceEntryType","trackFirstHidden","viewStart","eventTarget","window","document","visibilityState","prerendering","getTimeStamp","stop","VISIBILITY_STATE","firstHiddenEntry","performance","getEntriesByType","filter","entry","name","find","startTime","relative","timeStamp","Infinity","_addEventListeners","PAGE_HIDE","VISIBILITY_CHANGE","PRERENDERING_CHANGE","event","type","capture"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackFirstHidden.js"],"sourcesContent":["import { DOM_EVENT, addEventListeners, noop } from '@cloudcare/browser-core'\nimport {\n supportPerformanceTimingEvent,\n RumPerformanceEntryType\n} from '../../../domain/performanceObservable.js'\nexport function trackFirstHidden(viewStart, eventTarget) {\n if (typeof eventTarget === 'undefined') {\n eventTarget = window\n }\n if (document.visibilityState === 'hidden' && !document.prerendering) {\n return { getTimeStamp: () => 0, stop: noop }\n }\n if (\n supportPerformanceTimingEvent(RumPerformanceEntryType.VISIBILITY_STATE) &&\n !document.prerendering\n ) {\n const firstHiddenEntry = performance\n .getEntriesByType(RumPerformanceEntryType.VISIBILITY_STATE)\n .filter((entry) => entry.name === 'hidden')\n .find((entry) => entry.startTime >= viewStart.relative)\n if (firstHiddenEntry) {\n return { getTimeStamp: () => firstHiddenEntry.startTime, stop: noop }\n }\n }\n let timeStamp = Infinity\n\n const { stop } = addEventListeners(\n eventTarget,\n [\n DOM_EVENT.PAGE_HIDE,\n DOM_EVENT.VISIBILITY_CHANGE,\n DOM_EVENT.PRERENDERING_CHANGE\n ],\n (event) => {\n if (\n event.type === DOM_EVENT.PAGE_HIDE ||\n document.visibilityState === 'hidden'\n ) {\n timeStamp = event.timeStamp\n stop()\n }\n },\n { capture: true }\n )\n\n return {\n getTimeStamp: function () {\n return timeStamp\n },\n stop: function () {\n stop()\n }\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,iBAAiB,EAAEC,IAAI,QAAQ,yBAAyB;AAC5E,SACEC,6BAA6B,EAC7BC,uBAAuB,QAClB,0CAA0C;AACjD,OAAO,SAASC,gBAAgBA,CAACC,SAAS,EAAEC,WAAW,EAAE;EACvD,IAAI,OAAOA,WAAW,KAAK,WAAW,EAAE;IACtCA,WAAW,GAAGC,MAAM;EACtB;EACA,IAAIC,QAAQ,CAACC,eAAe,KAAK,QAAQ,IAAI,CAACD,QAAQ,CAACE,YAAY,EAAE;IACnE,OAAO;MAAEC,YAAY,EAAE,SAAdA,YAAYA,CAAA;QAAA,OAAQ,CAAC;MAAA;MAAEC,IAAI,EAAEX;IAAK,CAAC;EAC9C;EACA,IACEC,6BAA6B,CAACC,uBAAuB,CAACU,gBAAgB,CAAC,IACvE,CAACL,QAAQ,CAACE,YAAY,EACtB;IACA,IAAMI,gBAAgB,GAAGC,WAAW,CACjCC,gBAAgB,CAACb,uBAAuB,CAACU,gBAAgB,CAAC,CAC1DI,MAAM,CAAC,UAACC,KAAK;MAAA,OAAKA,KAAK,CAACC,IAAI,KAAK,QAAQ;IAAA,EAAC,CAC1CC,IAAI,CAAC,UAACF,KAAK;MAAA,OAAKA,KAAK,CAACG,SAAS,IAAIhB,SAAS,CAACiB,QAAQ;IAAA,EAAC;IACzD,IAAIR,gBAAgB,EAAE;MACpB,OAAO;QAAEH,YAAY,EAAE,SAAdA,YAAYA,CAAA;UAAA,OAAQG,gBAAgB,CAACO,SAAS;QAAA;QAAET,IAAI,EAAEX;MAAK,CAAC;IACvE;EACF;EACA,IAAIsB,SAAS,GAAGC,QAAQ;EAExB,IAAAC,kBAAA,GAAiBzB,iBAAiB,CAChCM,WAAW,EACX,CACEP,SAAS,CAAC2B,SAAS,EACnB3B,SAAS,CAAC4B,iBAAiB,EAC3B5B,SAAS,CAAC6B,mBAAmB,CAC9B,EACD,UAACC,KAAK,EAAK;MACT,IACEA,KAAK,CAACC,IAAI,KAAK/B,SAAS,CAAC2B,SAAS,IAClClB,QAAQ,CAACC,eAAe,KAAK,QAAQ,EACrC;QACAc,SAAS,GAAGM,KAAK,CAACN,SAAS;QAC3BX,KAAI,CAAC,CAAC;MACR;IACF,CAAC,EACD;MAAEmB,OAAO,EAAE;IAAK,CAClB,CAAC;IAjBOnB,KAAI,GAAAa,kBAAA,CAAJb,IAAI;EAmBZ,OAAO;IACLD,YAAY,EAAE,SAAdA,YAAYA,CAAA,EAAc;MACxB,OAAOY,SAAS;IAClB,CAAC;IACDX,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChBA,KAAI,CAAC,CAAC;IACR;EACF,CAAC;AACH","ignoreList":[]}