@kubesense/kubesense-browser-rum-core 1.8.0 → 2.0.0-beta.1

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 (922) hide show
  1. package/LICENSE +1 -1
  2. package/cjs/boot/preStartRum.d.ts +4 -3
  3. package/cjs/boot/preStartRum.js +229 -204
  4. package/cjs/boot/preStartRum.js.map +1 -1
  5. package/cjs/boot/rumPublicApi.d.ts +190 -51
  6. package/cjs/boot/rumPublicApi.js +267 -164
  7. package/cjs/boot/rumPublicApi.js.map +1 -1
  8. package/cjs/boot/startRum.d.ts +42 -31
  9. package/cjs/boot/startRum.js +157 -150
  10. package/cjs/boot/startRum.js.map +1 -1
  11. package/cjs/browser/cookieObservable.d.ts +1 -5
  12. package/cjs/browser/cookieObservable.js +30 -34
  13. package/cjs/browser/cookieObservable.js.map +1 -1
  14. package/cjs/browser/domMutationObservable.d.ts +3 -3
  15. package/cjs/browser/domMutationObservable.js +29 -53
  16. package/cjs/browser/domMutationObservable.js.map +1 -1
  17. package/cjs/browser/htmlDomUtils.d.ts +5 -0
  18. package/cjs/browser/htmlDomUtils.js +38 -28
  19. package/cjs/browser/htmlDomUtils.js.map +1 -1
  20. package/cjs/browser/locationChangeObservable.d.ts +1 -2
  21. package/cjs/browser/locationChangeObservable.js +44 -45
  22. package/cjs/browser/locationChangeObservable.js.map +1 -1
  23. package/cjs/browser/performanceObservable.d.ts +4 -4
  24. package/cjs/browser/performanceObservable.js +50 -114
  25. package/cjs/browser/performanceObservable.js.map +1 -1
  26. package/cjs/browser/performanceUtils.d.ts +13 -1
  27. package/cjs/browser/performanceUtils.js +63 -37
  28. package/cjs/browser/performanceUtils.js.map +1 -1
  29. package/cjs/browser/scroll.js +17 -28
  30. package/cjs/browser/scroll.js.map +1 -1
  31. package/cjs/browser/viewportObservable.d.ts +2 -3
  32. package/cjs/browser/viewportObservable.js +29 -31
  33. package/cjs/browser/viewportObservable.js.map +1 -1
  34. package/cjs/browser/windowOpenObservable.js +11 -7
  35. package/cjs/browser/windowOpenObservable.js.map +1 -1
  36. package/cjs/domain/action/actionCollection.d.ts +11 -12
  37. package/cjs/domain/action/actionCollection.js +82 -89
  38. package/cjs/domain/action/actionCollection.js.map +1 -1
  39. package/cjs/domain/action/actionNameConstants.js +10 -9
  40. package/cjs/domain/action/actionNameConstants.js.map +1 -1
  41. package/cjs/domain/action/clickChain.js +51 -54
  42. package/cjs/domain/action/clickChain.js.map +1 -1
  43. package/cjs/domain/action/computeFrustration.js +30 -62
  44. package/cjs/domain/action/computeFrustration.js.map +1 -1
  45. package/cjs/domain/action/frustrationIgnore.d.ts +9 -0
  46. package/cjs/domain/action/frustrationIgnore.js +32 -0
  47. package/cjs/domain/action/frustrationIgnore.js.map +1 -0
  48. package/cjs/domain/action/getActionNameFromElement.js +141 -217
  49. package/cjs/domain/action/getActionNameFromElement.js.map +1 -1
  50. package/cjs/domain/action/interactionSelectorCache.d.ts +1 -1
  51. package/cjs/domain/action/interactionSelectorCache.js +17 -18
  52. package/cjs/domain/action/interactionSelectorCache.js.map +1 -1
  53. package/cjs/domain/action/isActionChildEvent.d.ts +2 -0
  54. package/cjs/domain/action/isActionChildEvent.js +8 -0
  55. package/cjs/domain/action/isActionChildEvent.js.map +1 -0
  56. package/cjs/domain/action/listenActionEvents.d.ts +2 -3
  57. package/cjs/domain/action/listenActionEvents.js +51 -55
  58. package/cjs/domain/action/listenActionEvents.js.map +1 -1
  59. package/cjs/domain/action/trackClickActions.d.ts +15 -21
  60. package/cjs/domain/action/trackClickActions.js +188 -226
  61. package/cjs/domain/action/trackClickActions.js.map +1 -1
  62. package/cjs/domain/action/trackManualActions.d.ts +45 -0
  63. package/cjs/domain/action/trackManualActions.js +48 -0
  64. package/cjs/domain/action/trackManualActions.js.map +1 -0
  65. package/cjs/domain/assembly.d.ts +1 -2
  66. package/cjs/domain/assembly.js +80 -95
  67. package/cjs/domain/assembly.js.map +1 -1
  68. package/cjs/domain/configuration/configuration.d.ts +575 -81
  69. package/cjs/domain/configuration/configuration.js +464 -199
  70. package/cjs/domain/configuration/configuration.js.map +1 -1
  71. package/cjs/domain/configuration/index.d.ts +1 -0
  72. package/cjs/domain/configuration/index.js +27 -21
  73. package/cjs/domain/configuration/jsonPathParser.js +125 -139
  74. package/cjs/domain/configuration/jsonPathParser.js.map +1 -1
  75. package/cjs/domain/configuration/remoteConfiguration.d.ts +18 -5
  76. package/cjs/domain/configuration/remoteConfiguration.js +268 -226
  77. package/cjs/domain/configuration/remoteConfiguration.js.map +1 -1
  78. package/cjs/domain/configuration/remoteConfiguration.types.d.ts +49 -0
  79. package/cjs/domain/configuration/remoteConfigurationCache.d.ts +42 -0
  80. package/cjs/domain/configuration/remoteConfigurationCache.js +95 -0
  81. package/cjs/domain/configuration/remoteConfigurationCache.js.map +1 -0
  82. package/cjs/domain/configuration/remoteSdkConfiguration.d.ts +11 -2
  83. package/cjs/domain/configuration/remoteSdkConfiguration.js +185 -117
  84. package/cjs/domain/configuration/remoteSdkConfiguration.js.map +1 -1
  85. package/cjs/domain/configuration/sessionReplayRoutes.d.ts +1 -6
  86. package/cjs/domain/configuration/sessionReplayRoutes.js +20 -63
  87. package/cjs/domain/configuration/sessionReplayRoutes.js.map +1 -1
  88. package/cjs/domain/contexts/ciVisibilityContext.d.ts +2 -4
  89. package/cjs/domain/contexts/ciVisibilityContext.js +36 -32
  90. package/cjs/domain/contexts/ciVisibilityContext.js.map +1 -1
  91. package/cjs/domain/contexts/connectivityContext.d.ts +2 -2
  92. package/cjs/domain/contexts/connectivityContext.js +10 -9
  93. package/cjs/domain/contexts/connectivityContext.js.map +1 -1
  94. package/cjs/domain/contexts/defaultContext.d.ts +3 -3
  95. package/cjs/domain/contexts/defaultContext.js +28 -32
  96. package/cjs/domain/contexts/defaultContext.js.map +1 -1
  97. package/cjs/domain/contexts/displayContext.d.ts +2 -3
  98. package/cjs/domain/contexts/displayContext.js +22 -26
  99. package/cjs/domain/contexts/displayContext.js.map +1 -1
  100. package/cjs/domain/contexts/featureFlagContext.d.ts +2 -2
  101. package/cjs/domain/contexts/featureFlagContext.js +38 -50
  102. package/cjs/domain/contexts/featureFlagContext.js.map +1 -1
  103. package/cjs/domain/contexts/internalContext.d.ts +2 -3
  104. package/cjs/domain/contexts/internalContext.js +26 -22
  105. package/cjs/domain/contexts/internalContext.js.map +1 -1
  106. package/cjs/domain/contexts/pageStateHistory.d.ts +3 -4
  107. package/cjs/domain/contexts/pageStateHistory.js +76 -96
  108. package/cjs/domain/contexts/pageStateHistory.js.map +1 -1
  109. package/cjs/domain/contexts/sessionContext.d.ts +9 -3
  110. package/cjs/domain/contexts/sessionContext.js +31 -45
  111. package/cjs/domain/contexts/sessionContext.js.map +1 -1
  112. package/cjs/domain/contexts/sourceCodeMfeContext.d.ts +10 -0
  113. package/cjs/domain/contexts/sourceCodeMfeContext.js +35 -0
  114. package/cjs/domain/contexts/sourceCodeMfeContext.js.map +1 -0
  115. package/cjs/domain/contexts/syntheticsContext.d.ts +2 -2
  116. package/cjs/domain/contexts/syntheticsContext.js +19 -23
  117. package/cjs/domain/contexts/syntheticsContext.js.map +1 -1
  118. package/cjs/domain/contexts/trackingConsentContext.d.ts +2 -2
  119. package/cjs/domain/contexts/trackingConsentContext.js +10 -12
  120. package/cjs/domain/contexts/trackingConsentContext.js.map +1 -1
  121. package/cjs/domain/contexts/urlContexts.d.ts +4 -3
  122. package/cjs/domain/contexts/urlContexts.js +65 -61
  123. package/cjs/domain/contexts/urlContexts.js.map +1 -1
  124. package/cjs/domain/contexts/userAgentDataContext.d.ts +2 -2
  125. package/cjs/domain/contexts/userAgentDataContext.js +20 -29
  126. package/cjs/domain/contexts/userAgentDataContext.js.map +1 -1
  127. package/cjs/domain/contexts/viewHistory.d.ts +5 -2
  128. package/cjs/domain/contexts/viewHistory.js +41 -45
  129. package/cjs/domain/contexts/viewHistory.js.map +1 -1
  130. package/cjs/domain/discardNegativeDuration.d.ts +1 -1
  131. package/cjs/domain/discardNegativeDuration.js +6 -5
  132. package/cjs/domain/discardNegativeDuration.js.map +1 -1
  133. package/cjs/domain/error/errorCollection.d.ts +3 -3
  134. package/cjs/domain/error/errorCollection.js +67 -68
  135. package/cjs/domain/error/errorCollection.js.map +1 -1
  136. package/cjs/domain/error/trackReportError.d.ts +1 -2
  137. package/cjs/domain/error/trackReportError.js +10 -14
  138. package/cjs/domain/error/trackReportError.js.map +1 -1
  139. package/cjs/domain/event/eventCollection.d.ts +2 -1
  140. package/cjs/domain/event/eventCollection.js +21 -22
  141. package/cjs/domain/event/eventCollection.js.map +1 -1
  142. package/cjs/domain/eventTracker.d.ts +37 -0
  143. package/cjs/domain/eventTracker.js +94 -0
  144. package/cjs/domain/eventTracker.js.map +1 -0
  145. package/cjs/domain/extractRegexMatch.d.ts +5 -0
  146. package/cjs/domain/extractRegexMatch.js +16 -0
  147. package/cjs/domain/extractRegexMatch.js.map +1 -0
  148. package/cjs/domain/getComposedPathSelector.d.ts +22 -0
  149. package/cjs/domain/getComposedPathSelector.js +95 -0
  150. package/cjs/domain/getComposedPathSelector.js.map +1 -0
  151. package/cjs/domain/getSelectorFromElement.d.ts +18 -6
  152. package/cjs/domain/getSelectorFromElement.js +199 -191
  153. package/cjs/domain/getSelectorFromElement.js.map +1 -1
  154. package/cjs/domain/getSessionReplayUrl.d.ts +2 -2
  155. package/cjs/domain/getSessionReplayUrl.js +17 -30
  156. package/cjs/domain/getSessionReplayUrl.js.map +1 -1
  157. package/cjs/domain/hooks.d.ts +26 -17
  158. package/cjs/domain/hooks.js +12 -5
  159. package/cjs/domain/hooks.js.map +1 -1
  160. package/cjs/domain/lifeCycle.d.ts +26 -12
  161. package/cjs/domain/lifeCycle.js +28 -5
  162. package/cjs/domain/lifeCycle.js.map +1 -1
  163. package/cjs/domain/limitModification.d.ts +5 -1
  164. package/cjs/domain/limitModification.js +32 -36
  165. package/cjs/domain/limitModification.js.map +1 -1
  166. package/cjs/domain/longTask/longTaskCollection.d.ts +0 -13
  167. package/cjs/domain/longTask/longTaskCollection.js +75 -87
  168. package/cjs/domain/longTask/longTaskCollection.js.map +1 -1
  169. package/cjs/domain/plugins.d.ts +37 -14
  170. package/cjs/domain/plugins.js +22 -13
  171. package/cjs/domain/plugins.js.map +1 -1
  172. package/cjs/domain/privacy.d.ts +6 -1
  173. package/cjs/domain/privacy.js +143 -286
  174. package/cjs/domain/privacy.js.map +1 -1
  175. package/cjs/domain/privacyConstants.js +43 -34
  176. package/cjs/domain/privacyConstants.js.map +1 -1
  177. package/cjs/domain/requestCollection.d.ts +6 -5
  178. package/cjs/domain/requestCollection.js +82 -105
  179. package/cjs/domain/requestCollection.js.map +1 -1
  180. package/cjs/domain/resource/graphql.d.ts +1 -1
  181. package/cjs/domain/resource/graphql.js +85 -86
  182. package/cjs/domain/resource/graphql.js.map +1 -1
  183. package/cjs/domain/resource/requestRegistry.js +30 -38
  184. package/cjs/domain/resource/requestRegistry.js.map +1 -1
  185. package/cjs/domain/resource/resourceCollection.d.ts +5 -3
  186. package/cjs/domain/resource/resourceCollection.js +241 -175
  187. package/cjs/domain/resource/resourceCollection.js.map +1 -1
  188. package/cjs/domain/resource/resourceUtils.d.ts +13 -13
  189. package/cjs/domain/resource/resourceUtils.js +323 -221
  190. package/cjs/domain/resource/resourceUtils.js.map +1 -1
  191. package/cjs/domain/resource/trackManualResources.d.ts +55 -0
  192. package/cjs/domain/resource/trackManualResources.js +53 -0
  193. package/cjs/domain/resource/trackManualResources.js.map +1 -0
  194. package/cjs/domain/resource/webSocketCollection.d.ts +46 -0
  195. package/cjs/domain/resource/webSocketCollection.js +163 -0
  196. package/cjs/domain/resource/webSocketCollection.js.map +1 -0
  197. package/cjs/domain/session/session.types.d.ts +4 -0
  198. package/cjs/domain/sessionReplayState.d.ts +8 -0
  199. package/cjs/domain/sessionReplayState.js +19 -0
  200. package/cjs/domain/sessionReplayState.js.map +1 -0
  201. package/cjs/domain/startCustomerDataTelemetry.js +39 -43
  202. package/cjs/domain/startCustomerDataTelemetry.js.map +1 -1
  203. package/cjs/domain/tracing/getDocumentTraceId.d.ts +1 -1
  204. package/cjs/domain/tracing/getDocumentTraceId.js +42 -63
  205. package/cjs/domain/tracing/getDocumentTraceId.js.map +1 -1
  206. package/cjs/domain/tracing/identifier.js +13 -46
  207. package/cjs/domain/tracing/identifier.js.map +1 -1
  208. package/cjs/domain/tracing/tracer.d.ts +2 -5
  209. package/cjs/domain/tracing/tracer.js +110 -150
  210. package/cjs/domain/tracing/tracer.js.map +1 -1
  211. package/cjs/domain/trackEventCounts.js +43 -48
  212. package/cjs/domain/trackEventCounts.js.map +1 -1
  213. package/cjs/domain/view/bfCacheSupport.d.ts +1 -2
  214. package/cjs/domain/view/bfCacheSupport.js +10 -11
  215. package/cjs/domain/view/bfCacheSupport.js.map +1 -1
  216. package/cjs/domain/view/trackViewEventCounts.js +14 -13
  217. package/cjs/domain/view/trackViewEventCounts.js.map +1 -1
  218. package/cjs/domain/view/trackViews.d.ts +8 -2
  219. package/cjs/domain/view/trackViews.js +221 -270
  220. package/cjs/domain/view/trackViews.js.map +1 -1
  221. package/cjs/domain/view/viewCollection.d.ts +4 -3
  222. package/cjs/domain/view/viewCollection.js +124 -148
  223. package/cjs/domain/view/viewCollection.js.map +1 -1
  224. package/cjs/domain/view/viewDiff.d.ts +22 -0
  225. package/cjs/domain/view/viewDiff.js +62 -0
  226. package/cjs/domain/view/viewDiff.js.map +1 -0
  227. package/cjs/domain/view/viewMetrics/getClsAttributionImpactedArea.js +20 -22
  228. package/cjs/domain/view/viewMetrics/getClsAttributionImpactedArea.js.map +1 -1
  229. package/cjs/domain/view/viewMetrics/interactionCountPolyfill.d.ts +1 -0
  230. package/cjs/domain/view/viewMetrics/interactionCountPolyfill.js +35 -33
  231. package/cjs/domain/view/viewMetrics/interactionCountPolyfill.js.map +1 -1
  232. package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.d.ts +1 -1
  233. package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.js +14 -13
  234. package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.js.map +1 -1
  235. package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.d.ts +4 -2
  236. package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.js +51 -34
  237. package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.js.map +1 -1
  238. package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.d.ts +1 -1
  239. package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.js +106 -122
  240. package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.js.map +1 -1
  241. package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.d.ts +2 -3
  242. package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.js +26 -34
  243. package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.js.map +1 -1
  244. package/cjs/domain/view/viewMetrics/trackFirstHidden.d.ts +2 -3
  245. package/cjs/domain/view/viewMetrics/trackFirstHidden.js +31 -31
  246. package/cjs/domain/view/viewMetrics/trackFirstHidden.js.map +1 -1
  247. package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.d.ts +1 -3
  248. package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.js +33 -38
  249. package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.js.map +1 -1
  250. package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.d.ts +10 -1
  251. package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.js +202 -144
  252. package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.js.map +1 -1
  253. package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.d.ts +6 -1
  254. package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.js +65 -55
  255. package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.js.map +1 -1
  256. package/cjs/domain/view/viewMetrics/trackLoadingTime.d.ts +2 -1
  257. package/cjs/domain/view/viewMetrics/trackLoadingTime.js +42 -46
  258. package/cjs/domain/view/viewMetrics/trackLoadingTime.js.map +1 -1
  259. package/cjs/domain/view/viewMetrics/trackNavigationTimings.d.ts +2 -3
  260. package/cjs/domain/view/viewMetrics/trackNavigationTimings.js +28 -36
  261. package/cjs/domain/view/viewMetrics/trackNavigationTimings.js.map +1 -1
  262. package/cjs/domain/view/viewMetrics/trackScrollMetrics.d.ts +3 -4
  263. package/cjs/domain/view/viewMetrics/trackScrollMetrics.js +63 -72
  264. package/cjs/domain/view/viewMetrics/trackScrollMetrics.js.map +1 -1
  265. package/cjs/domain/vital/vitalCollection.d.ts +44 -20
  266. package/cjs/domain/vital/vitalCollection.js +81 -109
  267. package/cjs/domain/vital/vitalCollection.js.map +1 -1
  268. package/cjs/domain/waitPageActivityEnd.d.ts +1 -4
  269. package/cjs/domain/waitPageActivityEnd.js +99 -119
  270. package/cjs/domain/waitPageActivityEnd.js.map +1 -1
  271. package/cjs/domainContext.types.d.ts +21 -13
  272. package/cjs/index.d.ts +11 -10
  273. package/cjs/index.js +84 -62
  274. package/cjs/rawRumEvent.types.d.ts +79 -13
  275. package/cjs/rawRumEvent.types.js +40 -27
  276. package/cjs/rawRumEvent.types.js.map +1 -1
  277. package/cjs/rumEvent.types.d.ts +906 -669
  278. package/cjs/transport/formDataTransport.js +43 -41
  279. package/cjs/transport/formDataTransport.js.map +1 -1
  280. package/cjs/transport/startRumBatch.d.ts +27 -3
  281. package/cjs/transport/startRumBatch.js +132 -31
  282. package/cjs/transport/startRumBatch.js.map +1 -1
  283. package/cjs/transport/startRumEventBridge.js +10 -8
  284. package/cjs/transport/startRumEventBridge.js.map +1 -1
  285. package/esm/boot/preStartRum.mjs +233 -0
  286. package/esm/boot/preStartRum.mjs.map +1 -0
  287. package/esm/boot/rumPublicApi.mjs +271 -0
  288. package/esm/boot/rumPublicApi.mjs.map +1 -0
  289. package/esm/boot/startRum.mjs +159 -0
  290. package/esm/boot/startRum.mjs.map +1 -0
  291. package/esm/browser/cookieObservable.mjs +34 -0
  292. package/esm/browser/cookieObservable.mjs.map +1 -0
  293. package/esm/browser/domMutationObservable.mjs +33 -0
  294. package/esm/browser/domMutationObservable.mjs.map +1 -0
  295. package/esm/browser/htmlDomUtils.mjs +48 -0
  296. package/esm/browser/htmlDomUtils.mjs.map +1 -0
  297. package/esm/browser/locationChangeObservable.mjs +50 -0
  298. package/esm/browser/locationChangeObservable.mjs.map +1 -0
  299. package/esm/browser/performanceObservable.mjs +60 -0
  300. package/esm/browser/performanceObservable.mjs.map +1 -0
  301. package/esm/browser/performanceUtils.mjs +64 -0
  302. package/esm/browser/performanceUtils.mjs.map +1 -0
  303. package/esm/browser/scroll.mjs +21 -0
  304. package/esm/browser/scroll.mjs.map +1 -0
  305. package/esm/browser/viewportObservable.mjs +33 -0
  306. package/esm/browser/viewportObservable.mjs.map +1 -0
  307. package/esm/browser/windowOpenObservable.mjs +14 -0
  308. package/esm/browser/windowOpenObservable.mjs.map +1 -0
  309. package/esm/domain/action/actionCollection.mjs +89 -0
  310. package/esm/domain/action/actionCollection.mjs.map +1 -0
  311. package/esm/domain/action/actionNameConstants.mjs +11 -0
  312. package/esm/domain/action/actionNameConstants.mjs.map +1 -0
  313. package/esm/domain/action/clickChain.mjs +57 -0
  314. package/esm/domain/action/clickChain.mjs.map +1 -0
  315. package/esm/domain/action/computeFrustration.mjs +36 -0
  316. package/esm/domain/action/computeFrustration.mjs.map +1 -0
  317. package/esm/domain/action/frustrationIgnore.mjs +31 -0
  318. package/esm/domain/action/frustrationIgnore.mjs.map +1 -0
  319. package/esm/domain/action/getActionNameFromElement.mjs +163 -0
  320. package/esm/domain/action/getActionNameFromElement.mjs.map +1 -0
  321. package/esm/domain/action/interactionSelectorCache.mjs +19 -0
  322. package/esm/domain/action/interactionSelectorCache.mjs.map +1 -0
  323. package/esm/domain/action/isActionChildEvent.mjs +8 -0
  324. package/esm/domain/action/isActionChildEvent.mjs.map +1 -0
  325. package/esm/domain/action/listenActionEvents.mjs +57 -0
  326. package/esm/domain/action/listenActionEvents.mjs.map +1 -0
  327. package/esm/domain/action/trackClickActions.mjs +198 -0
  328. package/esm/domain/action/trackClickActions.mjs.map +1 -0
  329. package/esm/domain/action/trackManualActions.mjs +48 -0
  330. package/esm/domain/action/trackManualActions.mjs.map +1 -0
  331. package/esm/domain/assembly.mjs +87 -0
  332. package/esm/domain/assembly.mjs.map +1 -0
  333. package/esm/domain/configuration/configuration.mjs +474 -0
  334. package/esm/domain/configuration/configuration.mjs.map +1 -0
  335. package/esm/domain/configuration/index.mjs +6 -0
  336. package/esm/domain/configuration/jsonPathParser.mjs +145 -0
  337. package/esm/domain/configuration/jsonPathParser.mjs.map +1 -0
  338. package/esm/domain/configuration/remoteConfiguration.mjs +279 -0
  339. package/esm/domain/configuration/remoteConfiguration.mjs.map +1 -0
  340. package/esm/domain/configuration/remoteConfigurationCache.mjs +92 -0
  341. package/esm/domain/configuration/remoteConfigurationCache.mjs.map +1 -0
  342. package/esm/domain/configuration/remoteSdkConfiguration.mjs +208 -0
  343. package/esm/domain/configuration/remoteSdkConfiguration.mjs.map +1 -0
  344. package/esm/domain/configuration/sessionReplayRoutes.mjs +26 -0
  345. package/esm/domain/configuration/sessionReplayRoutes.mjs.map +1 -0
  346. package/esm/domain/contexts/ciVisibilityContext.mjs +37 -0
  347. package/esm/domain/contexts/ciVisibilityContext.mjs.map +1 -0
  348. package/esm/domain/contexts/connectivityContext.mjs +12 -0
  349. package/esm/domain/contexts/connectivityContext.mjs.map +1 -0
  350. package/esm/domain/contexts/defaultContext.mjs +30 -0
  351. package/esm/domain/contexts/defaultContext.mjs.map +1 -0
  352. package/esm/domain/contexts/displayContext.mjs +24 -0
  353. package/esm/domain/contexts/displayContext.mjs.map +1 -0
  354. package/esm/domain/contexts/featureFlagContext.mjs +40 -0
  355. package/esm/domain/contexts/featureFlagContext.mjs.map +1 -0
  356. package/esm/domain/contexts/internalContext.mjs +30 -0
  357. package/esm/domain/contexts/internalContext.mjs.map +1 -0
  358. package/esm/domain/contexts/pageStateHistory.mjs +82 -0
  359. package/esm/domain/contexts/pageStateHistory.mjs.map +1 -0
  360. package/esm/domain/contexts/sessionContext.mjs +33 -0
  361. package/esm/domain/contexts/sessionContext.mjs.map +1 -0
  362. package/esm/domain/contexts/sourceCodeMfeContext.mjs +35 -0
  363. package/esm/domain/contexts/sourceCodeMfeContext.mjs.map +1 -0
  364. package/esm/domain/contexts/syntheticsContext.mjs +21 -0
  365. package/esm/domain/contexts/syntheticsContext.mjs.map +1 -0
  366. package/esm/domain/contexts/trackingConsentContext.mjs +12 -0
  367. package/esm/domain/contexts/trackingConsentContext.mjs.map +1 -0
  368. package/esm/domain/contexts/urlContexts.mjs +67 -0
  369. package/esm/domain/contexts/urlContexts.mjs.map +1 -0
  370. package/esm/domain/contexts/userAgentDataContext.mjs +22 -0
  371. package/esm/domain/contexts/userAgentDataContext.mjs.map +1 -0
  372. package/esm/domain/contexts/viewHistory.mjs +43 -0
  373. package/esm/domain/contexts/viewHistory.mjs.map +1 -0
  374. package/esm/domain/discardNegativeDuration.mjs +9 -0
  375. package/esm/domain/discardNegativeDuration.mjs.map +1 -0
  376. package/esm/domain/error/errorCollection.mjs +72 -0
  377. package/esm/domain/error/errorCollection.mjs.map +1 -0
  378. package/esm/domain/error/trackReportError.mjs +12 -0
  379. package/esm/domain/error/trackReportError.mjs.map +1 -0
  380. package/esm/domain/event/eventCollection.mjs +26 -0
  381. package/esm/domain/event/eventCollection.mjs.map +1 -0
  382. package/esm/domain/eventTracker.mjs +93 -0
  383. package/esm/domain/eventTracker.mjs.map +1 -0
  384. package/esm/domain/extractRegexMatch.mjs +16 -0
  385. package/esm/domain/extractRegexMatch.mjs.map +1 -0
  386. package/esm/domain/getComposedPathSelector.mjs +93 -0
  387. package/esm/domain/getComposedPathSelector.mjs.map +1 -0
  388. package/esm/domain/getSelectorFromElement.mjs +218 -0
  389. package/esm/domain/getSelectorFromElement.mjs.map +1 -0
  390. package/esm/domain/getSessionReplayUrl.mjs +20 -0
  391. package/esm/domain/getSessionReplayUrl.mjs.map +1 -0
  392. package/esm/domain/hooks.mjs +13 -0
  393. package/esm/domain/hooks.mjs.map +1 -0
  394. package/esm/domain/lifeCycle.mjs +28 -0
  395. package/esm/domain/lifeCycle.mjs.map +1 -0
  396. package/esm/domain/limitModification.mjs +42 -0
  397. package/esm/domain/limitModification.mjs.map +1 -0
  398. package/esm/domain/longTask/longTaskCollection.mjs +79 -0
  399. package/esm/domain/longTask/longTaskCollection.mjs.map +1 -0
  400. package/esm/domain/plugins.mjs +23 -0
  401. package/esm/domain/plugins.mjs.map +1 -0
  402. package/esm/domain/privacy.mjs +161 -0
  403. package/esm/domain/privacy.mjs.map +1 -0
  404. package/esm/domain/privacyConstants.mjs +36 -0
  405. package/esm/domain/privacyConstants.mjs.map +1 -0
  406. package/esm/domain/requestCollection.mjs +86 -0
  407. package/esm/domain/requestCollection.mjs.map +1 -0
  408. package/esm/domain/resource/graphql.mjs +93 -0
  409. package/esm/domain/resource/graphql.mjs.map +1 -0
  410. package/esm/domain/resource/requestRegistry.mjs +32 -0
  411. package/esm/domain/resource/requestRegistry.mjs.map +1 -0
  412. package/esm/domain/resource/resourceCollection.mjs +256 -0
  413. package/esm/domain/resource/resourceCollection.mjs.map +1 -0
  414. package/esm/domain/resource/resourceUtils.mjs +349 -0
  415. package/esm/domain/resource/resourceUtils.mjs.map +1 -0
  416. package/esm/domain/resource/trackManualResources.mjs +53 -0
  417. package/esm/domain/resource/trackManualResources.mjs.map +1 -0
  418. package/esm/domain/resource/webSocketCollection.mjs +160 -0
  419. package/esm/domain/resource/webSocketCollection.mjs.map +1 -0
  420. package/esm/domain/sessionReplayState.mjs +18 -0
  421. package/esm/domain/sessionReplayState.mjs.map +1 -0
  422. package/esm/domain/startCustomerDataTelemetry.mjs +51 -0
  423. package/esm/domain/startCustomerDataTelemetry.mjs.map +1 -0
  424. package/esm/domain/tracing/getDocumentTraceId.mjs +50 -0
  425. package/esm/domain/tracing/getDocumentTraceId.mjs.map +1 -0
  426. package/esm/domain/tracing/identifier.mjs +20 -0
  427. package/esm/domain/tracing/identifier.mjs.map +1 -0
  428. package/esm/domain/tracing/tracer.mjs +120 -0
  429. package/esm/domain/tracing/tracer.mjs.map +1 -0
  430. package/esm/domain/trackEventCounts.mjs +45 -0
  431. package/esm/domain/trackEventCounts.mjs.map +1 -0
  432. package/esm/domain/view/bfCacheSupport.mjs +12 -0
  433. package/esm/domain/view/bfCacheSupport.mjs.map +1 -0
  434. package/esm/domain/view/trackViewEventCounts.mjs +17 -0
  435. package/esm/domain/view/trackViewEventCounts.mjs.map +1 -0
  436. package/esm/domain/view/trackViews.mjs +230 -0
  437. package/esm/domain/view/trackViews.mjs.map +1 -0
  438. package/esm/domain/view/viewCollection.mjs +129 -0
  439. package/esm/domain/view/viewCollection.mjs.map +1 -0
  440. package/esm/domain/view/viewDiff.mjs +61 -0
  441. package/esm/domain/view/viewDiff.mjs.map +1 -0
  442. package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.mjs +30 -0
  443. package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.mjs.map +1 -0
  444. package/esm/domain/view/viewMetrics/interactionCountPolyfill.mjs +45 -0
  445. package/esm/domain/view/viewMetrics/interactionCountPolyfill.mjs.map +1 -0
  446. package/esm/domain/view/viewMetrics/trackBfcacheMetrics.mjs +18 -0
  447. package/esm/domain/view/viewMetrics/trackBfcacheMetrics.mjs.map +1 -0
  448. package/esm/domain/view/viewMetrics/trackCommonViewMetrics.mjs +54 -0
  449. package/esm/domain/view/viewMetrics/trackCommonViewMetrics.mjs.map +1 -0
  450. package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.mjs +117 -0
  451. package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.mjs.map +1 -0
  452. package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.mjs +29 -0
  453. package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.mjs.map +1 -0
  454. package/esm/domain/view/viewMetrics/trackFirstHidden.mjs +33 -0
  455. package/esm/domain/view/viewMetrics/trackFirstHidden.mjs.map +1 -0
  456. package/esm/domain/view/viewMetrics/trackInitialViewMetrics.mjs +36 -0
  457. package/esm/domain/view/viewMetrics/trackInitialViewMetrics.mjs.map +1 -0
  458. package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.mjs +210 -0
  459. package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.mjs.map +1 -0
  460. package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.mjs +70 -0
  461. package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.mjs.map +1 -0
  462. package/esm/domain/view/viewMetrics/trackLoadingTime.mjs +46 -0
  463. package/esm/domain/view/viewMetrics/trackLoadingTime.mjs.map +1 -0
  464. package/esm/domain/view/viewMetrics/trackNavigationTimings.mjs +35 -0
  465. package/esm/domain/view/viewMetrics/trackNavigationTimings.mjs.map +1 -0
  466. package/esm/domain/view/viewMetrics/trackScrollMetrics.mjs +66 -0
  467. package/esm/domain/view/viewMetrics/trackScrollMetrics.mjs.map +1 -0
  468. package/esm/domain/vital/vitalCollection.mjs +85 -0
  469. package/esm/domain/vital/vitalCollection.mjs.map +1 -0
  470. package/esm/domain/waitPageActivityEnd.mjs +107 -0
  471. package/esm/domain/waitPageActivityEnd.mjs.map +1 -0
  472. package/esm/index.mjs +23 -0
  473. package/esm/rawRumEvent.types.mjs +42 -0
  474. package/esm/rawRumEvent.types.mjs.map +1 -0
  475. package/esm/transport/formDataTransport.mjs +48 -0
  476. package/esm/transport/formDataTransport.mjs.map +1 -0
  477. package/esm/transport/startRumBatch.mjs +132 -0
  478. package/esm/transport/startRumBatch.mjs.map +1 -0
  479. package/esm/transport/startRumEventBridge.mjs +13 -0
  480. package/esm/transport/startRumEventBridge.mjs.map +1 -0
  481. package/package.json +19 -11
  482. package/src/boot/preStartRum.ts +216 -88
  483. package/src/boot/rumPublicApi.ts +358 -119
  484. package/src/boot/startRum.ts +88 -84
  485. package/src/browser/cookieObservable.ts +19 -28
  486. package/src/browser/domMutationObservable.ts +7 -12
  487. package/src/browser/htmlDomUtils.ts +15 -0
  488. package/src/browser/locationChangeObservable.ts +23 -12
  489. package/src/browser/performanceObservable.ts +23 -73
  490. package/src/browser/performanceUtils.ts +52 -4
  491. package/src/browser/viewportObservable.ts +4 -6
  492. package/src/domain/action/actionCollection.ts +94 -87
  493. package/src/domain/action/clickChain.ts +11 -10
  494. package/src/domain/action/computeFrustration.ts +19 -5
  495. package/src/domain/action/frustrationIgnore.ts +54 -0
  496. package/src/domain/action/getActionNameFromElement.ts +27 -61
  497. package/src/domain/action/interactionSelectorCache.ts +2 -2
  498. package/src/domain/action/isActionChildEvent.ts +6 -0
  499. package/src/domain/action/listenActionEvents.ts +2 -11
  500. package/src/domain/action/trackClickActions.ts +92 -82
  501. package/src/domain/action/trackManualActions.ts +104 -0
  502. package/src/domain/assembly.ts +57 -70
  503. package/src/domain/configuration/configuration.ts +587 -208
  504. package/src/domain/configuration/index.ts +1 -0
  505. package/src/domain/configuration/remoteConfiguration.ts +152 -29
  506. package/src/domain/configuration/remoteConfiguration.types.ts +51 -1
  507. package/src/domain/configuration/remoteConfigurationCache.ts +153 -0
  508. package/src/domain/configuration/remoteSdkConfiguration.ts +131 -13
  509. package/src/domain/configuration/sessionReplayRoutes.ts +2 -47
  510. package/src/domain/contexts/ciVisibilityContext.ts +23 -12
  511. package/src/domain/contexts/connectivityContext.ts +7 -10
  512. package/src/domain/contexts/defaultContext.ts +11 -14
  513. package/src/domain/contexts/displayContext.ts +8 -12
  514. package/src/domain/contexts/featureFlagContext.ts +5 -4
  515. package/src/domain/contexts/internalContext.ts +3 -3
  516. package/src/domain/contexts/pageStateHistory.ts +20 -31
  517. package/src/domain/contexts/sessionContext.ts +16 -22
  518. package/src/domain/contexts/sourceCodeMfeContext.ts +53 -0
  519. package/src/domain/contexts/syntheticsContext.ts +7 -17
  520. package/src/domain/contexts/trackingConsentContext.ts +7 -4
  521. package/src/domain/contexts/urlContexts.ts +13 -9
  522. package/src/domain/contexts/userAgentDataContext.ts +12 -13
  523. package/src/domain/contexts/viewHistory.ts +4 -3
  524. package/src/domain/discardNegativeDuration.ts +1 -1
  525. package/src/domain/error/errorCollection.ts +12 -22
  526. package/src/domain/error/trackReportError.ts +4 -7
  527. package/src/domain/event/eventCollection.ts +4 -2
  528. package/src/domain/eventTracker.ts +169 -0
  529. package/src/domain/extractRegexMatch.ts +15 -0
  530. package/src/domain/getComposedPathSelector.ts +130 -0
  531. package/src/domain/getSelectorFromElement.ts +125 -31
  532. package/src/domain/getSessionReplayUrl.ts +4 -13
  533. package/src/domain/hooks.ts +34 -21
  534. package/src/domain/lifeCycle.ts +21 -8
  535. package/src/domain/limitModification.ts +20 -4
  536. package/src/domain/longTask/longTaskCollection.ts +18 -47
  537. package/src/domain/plugins.ts +54 -25
  538. package/src/domain/privacy.ts +16 -24
  539. package/src/domain/requestCollection.ts +108 -97
  540. package/src/domain/resource/graphql.ts +71 -25
  541. package/src/domain/resource/requestRegistry.ts +1 -3
  542. package/src/domain/resource/resourceCollection.ts +319 -137
  543. package/src/domain/resource/resourceUtils.ts +24 -26
  544. package/src/domain/resource/trackManualResources.ts +121 -0
  545. package/src/domain/resource/webSocketCollection.ts +281 -0
  546. package/src/domain/session/session.types.ts +5 -0
  547. package/src/domain/sessionReplayState.ts +36 -0
  548. package/src/domain/startCustomerDataTelemetry.ts +2 -2
  549. package/src/domain/tracing/getDocumentTraceId.ts +5 -4
  550. package/src/domain/tracing/identifier.ts +6 -37
  551. package/src/domain/tracing/tracer.ts +22 -21
  552. package/src/domain/tracing/tracer.types.ts +3 -3
  553. package/src/domain/view/bfCacheSupport.ts +1 -6
  554. package/src/domain/view/trackViews.ts +40 -37
  555. package/src/domain/view/viewCollection.ts +29 -23
  556. package/src/domain/view/viewDiff.ts +115 -0
  557. package/src/domain/view/viewMetrics/interactionCountPolyfill.ts +13 -2
  558. package/src/domain/view/viewMetrics/trackBfcacheMetrics.ts +1 -1
  559. package/src/domain/view/viewMetrics/trackCommonViewMetrics.ts +27 -6
  560. package/src/domain/view/viewMetrics/trackCumulativeLayoutShift.ts +5 -3
  561. package/src/domain/view/viewMetrics/trackFirstContentfulPaint.ts +4 -9
  562. package/src/domain/view/viewMetrics/trackFirstHidden.ts +2 -8
  563. package/src/domain/view/viewMetrics/trackInitialViewMetrics.ts +4 -13
  564. package/src/domain/view/viewMetrics/trackInteractionToNextPaint.ts +180 -35
  565. package/src/domain/view/viewMetrics/trackLargestContentfulPaint.ts +47 -6
  566. package/src/domain/view/viewMetrics/trackLoadingTime.ts +4 -3
  567. package/src/domain/view/viewMetrics/trackNavigationTimings.ts +10 -18
  568. package/src/domain/view/viewMetrics/trackScrollMetrics.ts +23 -37
  569. package/src/domain/vital/vitalCollection.ts +83 -102
  570. package/src/domain/waitPageActivityEnd.ts +7 -11
  571. package/src/domainContext.types.ts +23 -15
  572. package/src/index.ts +17 -11
  573. package/src/rawRumEvent.types.ts +80 -26
  574. package/src/rumEvent.types.ts +730 -505
  575. package/src/transport/formDataTransport.ts +16 -6
  576. package/src/transport/startRumBatch.ts +181 -24
  577. package/cjs/browser/firstInputPolyfill.d.ts +0 -8
  578. package/cjs/browser/firstInputPolyfill.js +0 -68
  579. package/cjs/browser/firstInputPolyfill.js.map +0 -1
  580. package/cjs/domain/configuration/index.js.map +0 -1
  581. package/cjs/domain/configuration/remoteConfiguration.types.js +0 -7
  582. package/cjs/domain/configuration/remoteConfiguration.types.js.map +0 -1
  583. package/cjs/domain/error/trackConsoleError.d.ts +0 -4
  584. package/cjs/domain/error/trackConsoleError.js +0 -13
  585. package/cjs/domain/error/trackConsoleError.js.map +0 -1
  586. package/cjs/domain/resource/matchRequestResourceEntry.d.ts +0 -16
  587. package/cjs/domain/resource/matchRequestResourceEntry.js +0 -49
  588. package/cjs/domain/resource/matchRequestResourceEntry.js.map +0 -1
  589. package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.d.ts +0 -4
  590. package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.js +0 -24
  591. package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.js.map +0 -1
  592. package/cjs/domain/rumSessionManager.d.ts +0 -36
  593. package/cjs/domain/rumSessionManager.js +0 -77
  594. package/cjs/domain/rumSessionManager.js.map +0 -1
  595. package/cjs/domain/sampler/sampler.d.ts +0 -10
  596. package/cjs/domain/sampler/sampler.js +0 -63
  597. package/cjs/domain/sampler/sampler.js.map +0 -1
  598. package/cjs/domain/tracing/sampler.d.ts +0 -10
  599. package/cjs/domain/tracing/sampler.js +0 -69
  600. package/cjs/domain/tracing/sampler.js.map +0 -1
  601. package/cjs/domain/tracing/tracer.types.js +0 -3
  602. package/cjs/domain/tracing/tracer.types.js.map +0 -1
  603. package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.d.ts +0 -6
  604. package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js +0 -44
  605. package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js.map +0 -1
  606. package/cjs/domain/view/viewMetrics/trackFirstInput.d.ts +0 -19
  607. package/cjs/domain/view/viewMetrics/trackFirstInput.js +0 -43
  608. package/cjs/domain/view/viewMetrics/trackFirstInput.js.map +0 -1
  609. package/cjs/domainContext.types.js +0 -6
  610. package/cjs/domainContext.types.js.map +0 -1
  611. package/cjs/index.js.map +0 -1
  612. package/cjs/rumEvent.types.js +0 -7
  613. package/cjs/rumEvent.types.js.map +0 -1
  614. package/esm/boot/preStartRum.d.ts +0 -7
  615. package/esm/boot/preStartRum.js +0 -205
  616. package/esm/boot/preStartRum.js.map +0 -1
  617. package/esm/boot/rumPublicApi.d.ts +0 -409
  618. package/esm/boot/rumPublicApi.js +0 -165
  619. package/esm/boot/rumPublicApi.js.map +0 -1
  620. package/esm/boot/startRum.d.ts +0 -109
  621. package/esm/boot/startRum.js +0 -149
  622. package/esm/boot/startRum.js.map +0 -1
  623. package/esm/browser/cookieObservable.d.ts +0 -8
  624. package/esm/browser/cookieObservable.js +0 -35
  625. package/esm/browser/cookieObservable.js.map +0 -1
  626. package/esm/browser/domMutationObservable.d.ts +0 -27
  627. package/esm/browser/domMutationObservable.js +0 -54
  628. package/esm/browser/domMutationObservable.js.map +0 -1
  629. package/esm/browser/firstInputPolyfill.d.ts +0 -8
  630. package/esm/browser/firstInputPolyfill.js +0 -65
  631. package/esm/browser/firstInputPolyfill.js.map +0 -1
  632. package/esm/browser/htmlDomUtils.d.ts +0 -13
  633. package/esm/browser/htmlDomUtils.js +0 -36
  634. package/esm/browser/htmlDomUtils.js.map +0 -1
  635. package/esm/browser/locationChangeObservable.d.ts +0 -7
  636. package/esm/browser/locationChangeObservable.js +0 -48
  637. package/esm/browser/locationChangeObservable.js.map +0 -1
  638. package/esm/browser/performanceObservable.d.ts +0 -174
  639. package/esm/browser/performanceObservable.js +0 -121
  640. package/esm/browser/performanceObservable.js.map +0 -1
  641. package/esm/browser/performanceUtils.d.ts +0 -7
  642. package/esm/browser/performanceUtils.js +0 -38
  643. package/esm/browser/performanceUtils.js.map +0 -1
  644. package/esm/browser/scroll.d.ts +0 -2
  645. package/esm/browser/scroll.js +0 -29
  646. package/esm/browser/scroll.js.map +0 -1
  647. package/esm/browser/viewportObservable.d.ts +0 -10
  648. package/esm/browser/viewportObservable.js +0 -32
  649. package/esm/browser/viewportObservable.js.map +0 -1
  650. package/esm/browser/windowOpenObservable.d.ts +0 -5
  651. package/esm/browser/windowOpenObservable.js +0 -7
  652. package/esm/browser/windowOpenObservable.js.map +0 -1
  653. package/esm/domain/action/actionCollection.d.ts +0 -21
  654. package/esm/domain/action/actionCollection.js +0 -93
  655. package/esm/domain/action/actionCollection.js.map +0 -1
  656. package/esm/domain/action/actionNameConstants.d.ts +0 -18
  657. package/esm/domain/action/actionNameConstants.js +0 -8
  658. package/esm/domain/action/actionNameConstants.js.map +0 -1
  659. package/esm/domain/action/clickChain.d.ts +0 -8
  660. package/esm/domain/action/clickChain.js +0 -57
  661. package/esm/domain/action/clickChain.js.map +0 -1
  662. package/esm/domain/action/computeFrustration.d.ts +0 -6
  663. package/esm/domain/action/computeFrustration.js +0 -65
  664. package/esm/domain/action/computeFrustration.js.map +0 -1
  665. package/esm/domain/action/getActionNameFromElement.d.ts +0 -4
  666. package/esm/domain/action/getActionNameFromElement.js +0 -236
  667. package/esm/domain/action/getActionNameFromElement.js.map +0 -1
  668. package/esm/domain/action/interactionSelectorCache.d.ts +0 -5
  669. package/esm/domain/action/interactionSelectorCache.js +0 -18
  670. package/esm/domain/action/interactionSelectorCache.js.map +0 -1
  671. package/esm/domain/action/listenActionEvents.d.ts +0 -19
  672. package/esm/domain/action/listenActionEvents.js +0 -58
  673. package/esm/domain/action/listenActionEvents.js.map +0 -1
  674. package/esm/domain/action/trackClickActions.d.ts +0 -81
  675. package/esm/domain/action/trackClickActions.js +0 -232
  676. package/esm/domain/action/trackClickActions.js.map +0 -1
  677. package/esm/domain/assembly.d.ts +0 -5
  678. package/esm/domain/assembly.js +0 -99
  679. package/esm/domain/assembly.js.map +0 -1
  680. package/esm/domain/configuration/configuration.d.ts +0 -358
  681. package/esm/domain/configuration/configuration.js +0 -209
  682. package/esm/domain/configuration/configuration.js.map +0 -1
  683. package/esm/domain/configuration/index.d.ts +0 -4
  684. package/esm/domain/configuration/index.js +0 -5
  685. package/esm/domain/configuration/index.js.map +0 -1
  686. package/esm/domain/configuration/jsonPathParser.d.ts +0 -28
  687. package/esm/domain/configuration/jsonPathParser.js +0 -156
  688. package/esm/domain/configuration/jsonPathParser.js.map +0 -1
  689. package/esm/domain/configuration/remoteConfiguration.d.ts +0 -39
  690. package/esm/domain/configuration/remoteConfiguration.js +0 -236
  691. package/esm/domain/configuration/remoteConfiguration.js.map +0 -1
  692. package/esm/domain/configuration/remoteConfiguration.types.d.ts +0 -138
  693. package/esm/domain/configuration/remoteConfiguration.types.js +0 -6
  694. package/esm/domain/configuration/remoteConfiguration.types.js.map +0 -1
  695. package/esm/domain/configuration/remoteSdkConfiguration.d.ts +0 -18
  696. package/esm/domain/configuration/remoteSdkConfiguration.js +0 -137
  697. package/esm/domain/configuration/remoteSdkConfiguration.js.map +0 -1
  698. package/esm/domain/configuration/sessionReplayRoutes.d.ts +0 -35
  699. package/esm/domain/configuration/sessionReplayRoutes.js +0 -65
  700. package/esm/domain/configuration/sessionReplayRoutes.js.map +0 -1
  701. package/esm/domain/contexts/ciVisibilityContext.d.ts +0 -12
  702. package/esm/domain/contexts/ciVisibilityContext.js +0 -30
  703. package/esm/domain/contexts/ciVisibilityContext.js.map +0 -1
  704. package/esm/domain/contexts/connectivityContext.d.ts +0 -2
  705. package/esm/domain/contexts/connectivityContext.js +0 -8
  706. package/esm/domain/contexts/connectivityContext.js.map +0 -1
  707. package/esm/domain/contexts/defaultContext.d.ts +0 -4
  708. package/esm/domain/contexts/defaultContext.js +0 -31
  709. package/esm/domain/contexts/defaultContext.js.map +0 -1
  710. package/esm/domain/contexts/displayContext.d.ts +0 -6
  711. package/esm/domain/contexts/displayContext.js +0 -25
  712. package/esm/domain/contexts/displayContext.js.map +0 -1
  713. package/esm/domain/contexts/featureFlagContext.d.ts +0 -19
  714. package/esm/domain/contexts/featureFlagContext.js +0 -49
  715. package/esm/domain/contexts/featureFlagContext.js.map +0 -1
  716. package/esm/domain/contexts/internalContext.d.ts +0 -12
  717. package/esm/domain/contexts/internalContext.js +0 -23
  718. package/esm/domain/contexts/internalContext.js.map +0 -1
  719. package/esm/domain/contexts/pageStateHistory.d.ts +0 -23
  720. package/esm/domain/contexts/pageStateHistory.js +0 -100
  721. package/esm/domain/contexts/pageStateHistory.js.map +0 -1
  722. package/esm/domain/contexts/sessionContext.d.ts +0 -5
  723. package/esm/domain/contexts/sessionContext.js +0 -44
  724. package/esm/domain/contexts/sessionContext.js.map +0 -1
  725. package/esm/domain/contexts/syntheticsContext.d.ts +0 -2
  726. package/esm/domain/contexts/syntheticsContext.js +0 -22
  727. package/esm/domain/contexts/syntheticsContext.js.map +0 -1
  728. package/esm/domain/contexts/trackingConsentContext.d.ts +0 -3
  729. package/esm/domain/contexts/trackingConsentContext.js +0 -11
  730. package/esm/domain/contexts/trackingConsentContext.js.map +0 -1
  731. package/esm/domain/contexts/urlContexts.d.ts +0 -22
  732. package/esm/domain/contexts/urlContexts.js +0 -60
  733. package/esm/domain/contexts/urlContexts.js.map +0 -1
  734. package/esm/domain/contexts/userAgentDataContext.d.ts +0 -2
  735. package/esm/domain/contexts/userAgentDataContext.js +0 -28
  736. package/esm/domain/contexts/userAgentDataContext.js.map +0 -1
  737. package/esm/domain/contexts/viewHistory.d.ts +0 -17
  738. package/esm/domain/contexts/viewHistory.js +0 -44
  739. package/esm/domain/contexts/viewHistory.js.map +0 -1
  740. package/esm/domain/discardNegativeDuration.d.ts +0 -2
  741. package/esm/domain/discardNegativeDuration.js +0 -5
  742. package/esm/domain/discardNegativeDuration.js.map +0 -1
  743. package/esm/domain/error/errorCollection.d.ts +0 -17
  744. package/esm/domain/error/errorCollection.js +0 -70
  745. package/esm/domain/error/errorCollection.js.map +0 -1
  746. package/esm/domain/error/trackConsoleError.d.ts +0 -4
  747. package/esm/domain/error/trackConsoleError.js +0 -10
  748. package/esm/domain/error/trackConsoleError.js.map +0 -1
  749. package/esm/domain/error/trackReportError.d.ts +0 -5
  750. package/esm/domain/error/trackReportError.js +0 -13
  751. package/esm/domain/error/trackReportError.js.map +0 -1
  752. package/esm/domain/event/eventCollection.d.ts +0 -10
  753. package/esm/domain/event/eventCollection.js +0 -24
  754. package/esm/domain/event/eventCollection.js.map +0 -1
  755. package/esm/domain/getSelectorFromElement.d.ts +0 -64
  756. package/esm/domain/getSelectorFromElement.js +0 -213
  757. package/esm/domain/getSelectorFromElement.js.map +0 -1
  758. package/esm/domain/getSessionReplayUrl.d.ts +0 -9
  759. package/esm/domain/getSessionReplayUrl.js +0 -30
  760. package/esm/domain/getSessionReplayUrl.js.map +0 -1
  761. package/esm/domain/hooks.d.ts +0 -23
  762. package/esm/domain/hooks.js +0 -3
  763. package/esm/domain/hooks.js.map +0 -1
  764. package/esm/domain/lifeCycle.d.ts +0 -73
  765. package/esm/domain/lifeCycle.js +0 -3
  766. package/esm/domain/lifeCycle.js.map +0 -1
  767. package/esm/domain/limitModification.d.ts +0 -8
  768. package/esm/domain/limitModification.js +0 -43
  769. package/esm/domain/limitModification.js.map +0 -1
  770. package/esm/domain/longTask/longTaskCollection.d.ts +0 -18
  771. package/esm/domain/longTask/longTaskCollection.js +0 -87
  772. package/esm/domain/longTask/longTaskCollection.js.map +0 -1
  773. package/esm/domain/plugins.d.ts +0 -40
  774. package/esm/domain/plugins.js +0 -12
  775. package/esm/domain/plugins.js.map +0 -1
  776. package/esm/domain/privacy.d.ts +0 -44
  777. package/esm/domain/privacy.js +0 -302
  778. package/esm/domain/privacy.js.map +0 -1
  779. package/esm/domain/privacyConstants.d.ts +0 -23
  780. package/esm/domain/privacyConstants.js +0 -35
  781. package/esm/domain/privacyConstants.js.map +0 -1
  782. package/esm/domain/requestCollection.d.ts +0 -54
  783. package/esm/domain/requestCollection.js +0 -106
  784. package/esm/domain/requestCollection.js.map +0 -1
  785. package/esm/domain/resource/graphql.d.ts +0 -23
  786. package/esm/domain/resource/graphql.js +0 -91
  787. package/esm/domain/resource/graphql.js.map +0 -1
  788. package/esm/domain/resource/matchRequestResourceEntry.d.ts +0 -16
  789. package/esm/domain/resource/matchRequestResourceEntry.js +0 -46
  790. package/esm/domain/resource/matchRequestResourceEntry.js.map +0 -1
  791. package/esm/domain/resource/requestRegistry.d.ts +0 -9
  792. package/esm/domain/resource/requestRegistry.js +0 -37
  793. package/esm/domain/resource/requestRegistry.js.map +0 -1
  794. package/esm/domain/resource/resourceCollection.d.ts +0 -7
  795. package/esm/domain/resource/resourceCollection.js +0 -187
  796. package/esm/domain/resource/resourceCollection.js.map +0 -1
  797. package/esm/domain/resource/resourceUtils.d.ts +0 -55
  798. package/esm/domain/resource/resourceUtils.js +0 -244
  799. package/esm/domain/resource/resourceUtils.js.map +0 -1
  800. package/esm/domain/resource/retrieveInitialDocumentResourceTiming.d.ts +0 -4
  801. package/esm/domain/resource/retrieveInitialDocumentResourceTiming.js +0 -21
  802. package/esm/domain/resource/retrieveInitialDocumentResourceTiming.js.map +0 -1
  803. package/esm/domain/rumSessionManager.d.ts +0 -36
  804. package/esm/domain/rumSessionManager.js +0 -72
  805. package/esm/domain/rumSessionManager.js.map +0 -1
  806. package/esm/domain/sampler/sampler.d.ts +0 -10
  807. package/esm/domain/sampler/sampler.js +0 -58
  808. package/esm/domain/sampler/sampler.js.map +0 -1
  809. package/esm/domain/startCustomerDataTelemetry.d.ts +0 -4
  810. package/esm/domain/startCustomerDataTelemetry.js +0 -52
  811. package/esm/domain/startCustomerDataTelemetry.js.map +0 -1
  812. package/esm/domain/tracing/getDocumentTraceId.d.ts +0 -12
  813. package/esm/domain/tracing/getDocumentTraceId.js +0 -68
  814. package/esm/domain/tracing/getDocumentTraceId.js.map +0 -1
  815. package/esm/domain/tracing/identifier.d.ts +0 -13
  816. package/esm/domain/tracing/identifier.js +0 -50
  817. package/esm/domain/tracing/identifier.js.map +0 -1
  818. package/esm/domain/tracing/sampler.d.ts +0 -10
  819. package/esm/domain/tracing/sampler.js +0 -64
  820. package/esm/domain/tracing/sampler.js.map +0 -1
  821. package/esm/domain/tracing/tracer.d.ts +0 -30
  822. package/esm/domain/tracing/tracer.js +0 -156
  823. package/esm/domain/tracing/tracer.js.map +0 -1
  824. package/esm/domain/tracing/tracer.types.d.ts +0 -12
  825. package/esm/domain/tracing/tracer.types.js +0 -2
  826. package/esm/domain/tracing/tracer.types.js.map +0 -1
  827. package/esm/domain/trackEventCounts.d.ts +0 -17
  828. package/esm/domain/trackEventCounts.js +0 -47
  829. package/esm/domain/trackEventCounts.js.map +0 -1
  830. package/esm/domain/view/bfCacheSupport.d.ts +0 -2
  831. package/esm/domain/view/bfCacheSupport.js +0 -10
  832. package/esm/domain/view/bfCacheSupport.js.map +0 -1
  833. package/esm/domain/view/trackViewEventCounts.d.ts +0 -5
  834. package/esm/domain/view/trackViewEventCounts.js +0 -13
  835. package/esm/domain/view/trackViewEventCounts.js.map +0 -1
  836. package/esm/domain/view/trackViews.d.ts +0 -65
  837. package/esm/domain/view/trackViews.js +0 -278
  838. package/esm/domain/view/trackViews.js.map +0 -1
  839. package/esm/domain/view/viewCollection.d.ts +0 -18
  840. package/esm/domain/view/viewCollection.js +0 -150
  841. package/esm/domain/view/viewCollection.js.map +0 -1
  842. package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.d.ts +0 -6
  843. package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.js +0 -28
  844. package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.js.map +0 -1
  845. package/esm/domain/view/viewMetrics/interactionCountPolyfill.d.ts +0 -18
  846. package/esm/domain/view/viewMetrics/interactionCountPolyfill.js +0 -39
  847. package/esm/domain/view/viewMetrics/interactionCountPolyfill.js.map +0 -1
  848. package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.d.ts +0 -6
  849. package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js +0 -41
  850. package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js.map +0 -1
  851. package/esm/domain/view/viewMetrics/trackBfcacheMetrics.d.ts +0 -8
  852. package/esm/domain/view/viewMetrics/trackBfcacheMetrics.js +0 -14
  853. package/esm/domain/view/viewMetrics/trackBfcacheMetrics.js.map +0 -1
  854. package/esm/domain/view/viewMetrics/trackCommonViewMetrics.d.ts +0 -21
  855. package/esm/domain/view/viewMetrics/trackCommonViewMetrics.js +0 -34
  856. package/esm/domain/view/viewMetrics/trackCommonViewMetrics.js.map +0 -1
  857. package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.d.ts +0 -37
  858. package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js +0 -130
  859. package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js.map +0 -1
  860. package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.d.ts +0 -13
  861. package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js +0 -34
  862. package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js.map +0 -1
  863. package/esm/domain/view/viewMetrics/trackFirstHidden.d.ts +0 -10
  864. package/esm/domain/view/viewMetrics/trackFirstHidden.js +0 -30
  865. package/esm/domain/view/viewMetrics/trackFirstHidden.js.map +0 -1
  866. package/esm/domain/view/viewMetrics/trackFirstInput.d.ts +0 -19
  867. package/esm/domain/view/viewMetrics/trackFirstInput.js +0 -40
  868. package/esm/domain/view/viewMetrics/trackFirstInput.js.map +0 -1
  869. package/esm/domain/view/viewMetrics/trackInitialViewMetrics.d.ts +0 -15
  870. package/esm/domain/view/viewMetrics/trackInitialViewMetrics.js +0 -38
  871. package/esm/domain/view/viewMetrics/trackInitialViewMetrics.js.map +0 -1
  872. package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.d.ts +0 -25
  873. package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js +0 -149
  874. package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js.map +0 -1
  875. package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.d.ts +0 -18
  876. package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js +0 -57
  877. package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js.map +0 -1
  878. package/esm/domain/view/viewMetrics/trackLoadingTime.d.ts +0 -14
  879. package/esm/domain/view/viewMetrics/trackLoadingTime.js +0 -47
  880. package/esm/domain/view/viewMetrics/trackLoadingTime.js.map +0 -1
  881. package/esm/domain/view/viewMetrics/trackNavigationTimings.d.ts +0 -14
  882. package/esm/domain/view/viewMetrics/trackNavigationTimings.js +0 -40
  883. package/esm/domain/view/viewMetrics/trackNavigationTimings.js.map +0 -1
  884. package/esm/domain/view/viewMetrics/trackScrollMetrics.d.ts +0 -25
  885. package/esm/domain/view/viewMetrics/trackScrollMetrics.js +0 -72
  886. package/esm/domain/view/viewMetrics/trackScrollMetrics.js.map +0 -1
  887. package/esm/domain/vital/vitalCollection.d.ts +0 -55
  888. package/esm/domain/vital/vitalCollection.js +0 -107
  889. package/esm/domain/vital/vitalCollection.js.map +0 -1
  890. package/esm/domain/waitPageActivityEnd.d.ts +0 -54
  891. package/esm/domain/waitPageActivityEnd.js +0 -123
  892. package/esm/domain/waitPageActivityEnd.js.map +0 -1
  893. package/esm/domainContext.types.d.ts +0 -39
  894. package/esm/domainContext.types.js +0 -5
  895. package/esm/domainContext.types.js.map +0 -1
  896. package/esm/index.d.ts +0 -42
  897. package/esm/index.js +0 -22
  898. package/esm/index.js.map +0 -1
  899. package/esm/rawRumEvent.types.d.ts +0 -326
  900. package/esm/rawRumEvent.types.js +0 -31
  901. package/esm/rawRumEvent.types.js.map +0 -1
  902. package/esm/rumEvent.types.d.ts +0 -2038
  903. package/esm/rumEvent.types.js +0 -6
  904. package/esm/rumEvent.types.js.map +0 -1
  905. package/esm/transport/formDataTransport.d.ts +0 -16
  906. package/esm/transport/formDataTransport.js +0 -43
  907. package/esm/transport/formDataTransport.js.map +0 -1
  908. package/esm/transport/startRumBatch.d.ts +0 -5
  909. package/esm/transport/startRumBatch.js +0 -30
  910. package/esm/transport/startRumBatch.js.map +0 -1
  911. package/esm/transport/startRumEventBridge.d.ts +0 -2
  912. package/esm/transport/startRumEventBridge.js +0 -8
  913. package/esm/transport/startRumEventBridge.js.map +0 -1
  914. package/src/browser/firstInputPolyfill.ts +0 -87
  915. package/src/domain/error/trackConsoleError.ts +0 -14
  916. package/src/domain/resource/matchRequestResourceEntry.ts +0 -68
  917. package/src/domain/resource/retrieveInitialDocumentResourceTiming.ts +0 -27
  918. package/src/domain/rumSessionManager.ts +0 -134
  919. package/src/domain/sampler/sampler.ts +0 -63
  920. package/src/domain/tracing/sampler.ts +0 -69
  921. package/src/domain/view/viewMetrics/startInitialViewMetricsTelemetry.ts +0 -70
  922. package/src/domain/view/viewMetrics/trackFirstInput.ts +0 -59
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preStartRum.mjs","names":[],"sources":["../../src/boot/preStartRum.ts"],"sourcesContent":["import { isWorkerEnvironment } from '@kubesense/kubesense-js-core/util'\nimport { timeStampNow, clocksNow } from '@kubesense/kubesense-js-core/time'\nimport { monitorError } from '@kubesense/kubesense-js-core/monitor'\nimport type { TimeStamp } from '@kubesense/kubesense-js-core/time'\nimport type {\n TrackingConsentState,\n DeflateWorker,\n Context,\n Telemetry,\n SessionManager,\n} from '@kubesense/kubesense-browser-core'\nimport {\n BufferedObservable,\n display,\n canUseEventBridge,\n displayAlreadyInitializedError,\n willSyntheticsInjectRum,\n noop,\n getEventBridge,\n initFeatureFlags,\n addTelemetryConfiguration,\n CustomerContextKey,\n buildAccountContextManager,\n buildGlobalContextManager,\n buildUserContextManager,\n bufferContextCalls,\n sanitize,\n startSessionManager,\n startSessionManagerStub,\n startTelemetry,\n TelemetryService,\n mockable,\n startTelemetrySessionContext,\n addTelemetryDebug,\n setAllowUntrustedEvents,\n isAllowedTrackingOrigins,\n} from '@kubesense/kubesense-browser-core'\nimport type { Hooks } from '../domain/hooks'\nimport { createHooks } from '../domain/hooks'\nimport type { RemoteConfigurationMetadata, RumConfiguration, RumInitConfiguration } from '../domain/configuration'\n\nimport {\n fetchAndApplyRemoteConfiguration,\n getRemoteConfiguration,\n getRemoteConfigurationId,\n validateAndBuildRumConfiguration,\n serializeRumConfiguration,\n applyCachedSdkConfiguration,\n scheduleSdkConfigurationRefresh,\n} from '../domain/configuration'\nimport type { ViewOptions } from '../domain/view/trackViews'\nimport type { OperationOptions, FailureReason } from '../domain/vital/vitalCollection'\nimport { callPluginsOnInit } from '../domain/plugins'\nimport { startTrackingConsentContext } from '../domain/contexts/trackingConsentContext'\nimport type { StartRumResult } from './startRum'\nimport type { RumPublicApiOptions, Strategy } from './rumPublicApi'\n\nexport type DoStartRum = (\n configuration: RumConfiguration,\n sessionManager: SessionManager,\n deflateWorker: DeflateWorker | undefined,\n initialViewOptions: ViewOptions | undefined,\n telemetry: Telemetry,\n hooks: Hooks\n) => StartRumResult\n\nexport function createPreStartStrategy(\n { ignoreInitIfSyntheticsWillInjectRum = true, startDeflateWorker, sdkName }: RumPublicApiOptions,\n trackingConsentState: TrackingConsentState,\n doStartRum: DoStartRum\n): Strategy {\n const BUFFER_LIMIT = 500\n const bufferApiCalls = new BufferedObservable<(startRumResult: StartRumResult) => void>(BUFFER_LIMIT, (count) => {\n // monitor-until: 2026-10-14\n addTelemetryDebug('preStartRum buffer data lost', { count })\n })\n\n // TODO next major: remove the globalContextManager, userContextManager and accountContextManager from preStartStrategy and use an empty context instead\n const globalContext = buildGlobalContextManager()\n bufferContextCalls(globalContext, CustomerContextKey.globalContext, bufferApiCalls)\n\n const userContext = buildUserContextManager()\n bufferContextCalls(userContext, CustomerContextKey.userContext, bufferApiCalls)\n\n const accountContext = buildAccountContextManager()\n bufferContextCalls(accountContext, CustomerContextKey.accountContext, bufferApiCalls)\n\n let firstStartViewCall:\n { options: ViewOptions | undefined; callback: (startRumResult: StartRumResult) => void } | undefined\n let deflateWorker: DeflateWorker | undefined\n\n let cachedInitConfiguration: RumInitConfiguration | undefined\n let cachedConfiguration: RumConfiguration | undefined\n let sessionManager: SessionManager | undefined\n let telemetry: Telemetry | undefined\n const hooks = createHooks()\n\n const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartRum)\n\n const emptyContext: Context = {}\n\n let started = false\n\n function tryStartRum() {\n if (started || !cachedInitConfiguration || !cachedConfiguration || !sessionManager || !telemetry) {\n return\n }\n\n trackingConsentStateSubscription.unsubscribe()\n\n let initialViewOptions: ViewOptions | undefined\n\n if (cachedConfiguration.trackViewsManually) {\n if (!firstStartViewCall) {\n return\n }\n // An initial view is always created when starting RUM.\n // When tracking views automatically, any startView call before RUM start creates an extra\n // view.\n // When tracking views manually, we use the ViewOptions from the first startView call as the\n // initial view options, and we skip the actual startView callback so we don't create an extra\n // view.\n initialViewOptions = firstStartViewCall.options\n }\n\n const callbackToSkip = cachedConfiguration.trackViewsManually ? firstStartViewCall?.callback : undefined\n\n const startRumResult = doStartRum(\n cachedConfiguration,\n sessionManager,\n deflateWorker,\n initialViewOptions,\n telemetry,\n hooks\n )\n\n started = true\n\n bufferApiCalls.subscribe((callback) => {\n if (callback !== callbackToSkip) {\n callback(startRumResult)\n }\n })\n bufferApiCalls.unbuffer()\n }\n\n function doInit(\n initConfiguration: RumInitConfiguration,\n errorStack?: string,\n remoteConfigurationMetadata?: RemoteConfigurationMetadata\n ) {\n const eventBridgeAvailable = canUseEventBridge()\n if (eventBridgeAvailable) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration)\n }\n\n const remoteSdkConfigurationEnabled = !!initConfiguration.enableRemoteSdkConfiguration\n\n // A cached document that stops the SDK from starting must never be a one-way door: without a\n // refresh on those paths the browser replays the same bad document on every load and can never\n // learn about a corrected one. This covers a `features.rum: false` switch, an\n // `allowedTrackingOrigins` list that no longer matches this origin, and settings that fail\n // validation.\n const refreshRemoteSdkConfiguration = () => {\n if (remoteSdkConfigurationEnabled) {\n scheduleSdkConfigurationRefresh(initConfiguration).catch(monitorError)\n }\n }\n\n if (remoteSdkConfigurationEnabled) {\n // Reading the cached document is synchronous and network-free, so it does not delay\n // initialization. The document fetched below only applies from the next page load.\n const cachedSdkConfiguration = applyCachedSdkConfiguration(initConfiguration, { globalContext, userContext })\n initConfiguration = cachedSdkConfiguration.initConfiguration\n\n if (!cachedSdkConfiguration.rumEnabled) {\n // RUM is switched off from the dashboard. Still refresh the document, otherwise the\n // switch would be one-way: the SDK could never learn that it has been turned back on.\n cachedInitConfiguration = initConfiguration\n refreshRemoteSdkConfiguration()\n return\n }\n }\n\n // Update the exposed initConfiguration to reflect the bridge and remote configuration overrides\n cachedInitConfiguration = initConfiguration\n\n if (cachedConfiguration) {\n displayAlreadyInitializedError('KUBESENSE_SDK', initConfiguration)\n return\n }\n\n const configuration = validateAndBuildRumConfiguration(initConfiguration, sdkName)\n if (!configuration || !isAllowedTrackingOrigins(configuration, errorStack ?? '')) {\n refreshRemoteSdkConfiguration()\n return\n }\n\n if (configuration.compressIntakeRequests && !eventBridgeAvailable && startDeflateWorker) {\n deflateWorker = startDeflateWorker(\n configuration,\n 'KubeSense RUM',\n // Worker initialization can fail asynchronously, especially in Firefox where even CSP\n // issues are reported asynchronously. For now, the SDK will continue its execution even if\n // data won't be sent to KubeSense. We could improve this behavior in the future.\n noop\n )\n if (!deflateWorker) {\n // `startDeflateWorker` should have logged an error message explaining the issue\n refreshRemoteSdkConfiguration()\n return\n }\n }\n\n cachedConfiguration = configuration\n\n trackingConsentState.tryToInit(configuration.trackingConsent)\n\n trackingConsentState.onGrantedOnce(() => {\n const { assembleTelemetry: assembleTelemetryHook } = hooks\n startTrackingConsentContext(assembleTelemetryHook, trackingConsentState)\n telemetry = mockable(startTelemetry)(TelemetryService.RUM, configuration, assembleTelemetryHook, sdkName)\n\n if (isWorkerEnvironment) {\n display.warn('The RUM SDK is not supported in a web or service worker environment.')\n return\n }\n\n const sessionManagerPromise = canUseEventBridge()\n ? startSessionManagerStub()\n : mockable(startSessionManager)(configuration, trackingConsentState)\n\n void sessionManagerPromise\n .then((newSessionManager) => {\n if (!newSessionManager) {\n return\n }\n sessionManager = newSessionManager\n startTelemetrySessionContext(assembleTelemetryHook, sessionManager, {\n application: { id: configuration.applicationId },\n })\n addTelemetryConfiguration(serializeRumConfiguration(initConfiguration, sdkName, remoteConfigurationMetadata))\n\n tryStartRum()\n\n // Fire-and-forget, after the SDK is running: refreshes the cache for the next page load.\n refreshRemoteSdkConfiguration()\n })\n .catch(monitorError)\n })\n }\n\n const addOperationStepVital = (\n name: string,\n stepType: 'start' | 'end',\n options?: OperationOptions,\n failureReason?: FailureReason\n ) => {\n bufferApiCalls.notify((startRumResult) =>\n startRumResult.addOperationStepVital(\n sanitize(name)!,\n stepType,\n sanitize(options) as OperationOptions,\n sanitize(failureReason) as FailureReason | undefined\n )\n )\n }\n\n const strategy: Strategy = {\n init(initConfiguration, publicApi, errorStack) {\n if (!initConfiguration) {\n display.error('Missing configuration')\n return\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n initFeatureFlags(initConfiguration.enableExperimentalFeatures)\n setAllowUntrustedEvents(initConfiguration.allowUntrustedEvents)\n\n // Expose the initial configuration regardless of initialization success.\n cachedInitConfiguration = initConfiguration\n\n // If we are in a Synthetics test configured to automatically inject a RUM instance, we want\n // to completely discard the customer application RUM instance by ignoring their init() call.\n // But, we should not ignore the init() call from the Synthetics-injected RUM instance, so the\n // internal `ignoreInitIfSyntheticsWillInjectRum` option is here to bypass this condition.\n if (ignoreInitIfSyntheticsWillInjectRum && willSyntheticsInjectRum()) {\n return\n }\n\n const shouldContinue = callPluginsOnInit(initConfiguration.plugins, {\n initConfiguration,\n publicApi,\n registerAssembleEventHook: hooks.assembleEvent.register,\n })\n\n if (typeof shouldContinue === 'boolean') {\n if (shouldContinue) {\n proceedWithInit()\n }\n } else {\n shouldContinue\n .then((result) => {\n if (result) {\n proceedWithInit()\n }\n })\n .catch(monitorError)\n }\n\n function proceedWithInit() {\n const hasRemoteConfiguration = getRemoteConfigurationId(initConfiguration)\n\n if (hasRemoteConfiguration) {\n const supportedContextManagers = { user: userContext, context: globalContext }\n const isSyncLoading =\n !!initConfiguration.remoteConfigurationId || !!initConfiguration.remoteConfiguration?.sync\n\n if (isSyncLoading) {\n fetchAndApplyRemoteConfiguration(initConfiguration, supportedContextManagers)\n .then((resolvedInitConfiguration) => {\n if (resolvedInitConfiguration) {\n doInit(resolvedInitConfiguration, errorStack)\n }\n })\n .catch(monitorError)\n } else {\n const resolvedRemoteConfiguration = getRemoteConfiguration(initConfiguration, supportedContextManagers)\n\n if (resolvedRemoteConfiguration) {\n doInit(resolvedRemoteConfiguration.initConfiguration, errorStack, resolvedRemoteConfiguration.metadata)\n }\n }\n } else {\n doInit(initConfiguration, errorStack)\n }\n }\n },\n\n get initConfiguration() {\n return cachedInitConfiguration\n },\n\n getInternalContext: noop as () => undefined,\n\n stopSession: noop,\n\n addTiming(name, time = timeStampNow()) {\n bufferApiCalls.notify((startRumResult) => startRumResult.addTiming(name, time))\n },\n\n setLoadingTime: ((callTimestamp: TimeStamp) => {\n bufferApiCalls.notify((startRumResult) => startRumResult.setLoadingTime(callTimestamp))\n }) as Strategy['setLoadingTime'],\n\n startView(options, startClocks = clocksNow()) {\n const callback = (startRumResult: StartRumResult) => {\n startRumResult.startView(options, startClocks)\n }\n bufferApiCalls.notify(callback)\n\n if (!firstStartViewCall) {\n firstStartViewCall = { options, callback }\n tryStartRum()\n }\n },\n\n setViewName(name) {\n bufferApiCalls.notify((startRumResult) => startRumResult.setViewName(name))\n },\n\n // View context APIs\n\n setViewContext(context) {\n bufferApiCalls.notify((startRumResult) => startRumResult.setViewContext(context))\n },\n\n setViewContextProperty(key, value) {\n bufferApiCalls.notify((startRumResult) => startRumResult.setViewContextProperty(key, value))\n },\n\n getViewContext: () => emptyContext,\n\n globalContext,\n userContext,\n accountContext,\n\n addAction(action) {\n bufferApiCalls.notify((startRumResult) => startRumResult.addAction(action))\n },\n\n startAction(name, options) {\n const startClocks = clocksNow()\n bufferApiCalls.notify((startRumResult) => startRumResult.startAction(name, options, startClocks))\n },\n\n stopAction(name, options) {\n const stopClocks = clocksNow()\n bufferApiCalls.notify((startRumResult) => startRumResult.stopAction(name, options, stopClocks))\n },\n\n startResource(url, options) {\n const startClocks = clocksNow()\n bufferApiCalls.notify((startRumResult) => startRumResult.startResource(url, options, startClocks))\n },\n\n stopResource(url, options) {\n const stopClocks = clocksNow()\n bufferApiCalls.notify((startRumResult) => startRumResult.stopResource(url, options, stopClocks))\n },\n\n addError(providedError) {\n bufferApiCalls.notify((startRumResult) => startRumResult.addError(providedError))\n },\n\n addFeatureFlagEvaluation(key, value) {\n bufferApiCalls.notify((startRumResult) => startRumResult.addFeatureFlagEvaluation(key, value))\n },\n\n startDurationVital(name, options) {\n const startClocks = clocksNow()\n bufferApiCalls.notify((startRumResult) => startRumResult.startDurationVital(name, options, startClocks))\n },\n\n stopDurationVital(name, options) {\n const stopClocks = clocksNow()\n bufferApiCalls.notify((startRumResult) => startRumResult.stopDurationVital(name, options, stopClocks))\n },\n\n addDurationVital(vital) {\n bufferApiCalls.notify((startRumResult) => startRumResult.addDurationVital(vital))\n },\n addOperationStepVital,\n }\n\n return strategy\n}\n\nfunction overrideInitConfigurationForBridge(initConfiguration: RumInitConfiguration): RumInitConfiguration {\n return {\n ...initConfiguration,\n // Resolve the service default here, while the web application id is still available: the\n // placeholder below would otherwise be used, and it is shared by every bridge session.\n service: initConfiguration.service || initConfiguration.applicationId,\n applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n clientToken: 'empty',\n sessionSampleRate: 100,\n defaultPrivacyLevel: initConfiguration.defaultPrivacyLevel ?? getEventBridge()?.getPrivacyLevel(),\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,271 @@
1
+ import { ActionType, VitalType } from "../rawRumEvent.types.mjs";
2
+ import { DEFAULT_TRACKED_RESOURCE_HEADERS } from "../domain/configuration/configuration.mjs";
3
+ import "../domain/configuration/index.mjs";
4
+ import { callPluginsOnRumStart } from "../domain/plugins.mjs";
5
+ import { createPreStartStrategy } from "./preStartRum.mjs";
6
+ import { startRum } from "./startRum.mjs";
7
+ import { clocksNow, timeStampNow, timeStampToClocks } from "@kubesense/kubesense-js-core/time";
8
+ import { deepClone } from "@kubesense/kubesense-js-core/util";
9
+ import { ContextManagerMethod, CustomerContextKey, addTelemetryUsage, createHandlingStack, createIdentityEncoder, createTrackingConsentState, defineContextMethod, display, displayAlreadyInitializedError, generateUUID, makePublicApi, mockable, sanitize, startBufferingData } from "@kubesense/kubesense-browser-core";
10
+ import { callMonitored, monitor } from "@kubesense/kubesense-js-core/monitor";
11
+ //#region src/boot/rumPublicApi.ts
12
+ function makeRumPublicApi(recorderApi, profilerApi, options = {}) {
13
+ const trackingConsentState = createTrackingConsentState();
14
+ const bufferedData = startBufferingData();
15
+ let strategy = createPreStartStrategy(options, trackingConsentState, (configuration, sessionManager, deflateWorker, initialViewOptions, telemetry, hooks) => {
16
+ const createEncoder = deflateWorker && options.createDeflateEncoder ? (streamId) => options.createDeflateEncoder(deflateWorker, streamId) : createIdentityEncoder;
17
+ const startRumResult = mockable(startRum)(configuration, sessionManager, recorderApi, profilerApi, initialViewOptions, createEncoder, bufferedData.observable, telemetry, hooks, options.sdkName);
18
+ recorderApi.onRumStart(startRumResult.lifeCycle, configuration, sessionManager, startRumResult.viewHistory, deflateWorker, startRumResult.telemetry);
19
+ profilerApi.onRumStart(startRumResult.lifeCycle, startRumResult.hooks, configuration, sessionManager, startRumResult.viewHistory, createEncoder);
20
+ strategy = createPostStartStrategy(strategy, startRumResult);
21
+ callPluginsOnRumStart(configuration.plugins, {
22
+ addEvent: startRumResult.addEvent,
23
+ addError: startRumResult.addError
24
+ });
25
+ return startRumResult;
26
+ });
27
+ const getStrategy = () => strategy;
28
+ const startView = (options) => {
29
+ const handlingStack = createHandlingStack("view");
30
+ callMonitored(() => {
31
+ const sanitizedOptions = typeof options === "object" ? options : { name: options };
32
+ strategy.startView({
33
+ ...sanitizedOptions,
34
+ name: sanitizeStringOption(sanitizedOptions.name, "view name"),
35
+ service: sanitizeStringOption(sanitizedOptions.service, "view service"),
36
+ version: sanitizeStringOption(sanitizedOptions.version, "view version"),
37
+ handlingStack
38
+ });
39
+ addTelemetryUsage({ feature: "start-view" });
40
+ });
41
+ };
42
+ const startOperation = (name, options) => {
43
+ const handlingStack = createHandlingStack("vital");
44
+ callMonitored(() => {
45
+ addTelemetryUsage({
46
+ feature: "add-operation-step-vital",
47
+ action_type: "start"
48
+ });
49
+ strategy.addOperationStepVital(name, "start", {
50
+ ...options,
51
+ handlingStack
52
+ });
53
+ });
54
+ };
55
+ const succeedOperation = monitor((name, options) => {
56
+ addTelemetryUsage({
57
+ feature: "add-operation-step-vital",
58
+ action_type: "succeed"
59
+ });
60
+ strategy.addOperationStepVital(name, "end", options);
61
+ });
62
+ const failOperation = monitor((name, failureReason, options) => {
63
+ addTelemetryUsage({
64
+ feature: "add-operation-step-vital",
65
+ action_type: "fail"
66
+ });
67
+ strategy.addOperationStepVital(name, "end", options, failureReason);
68
+ });
69
+ const rumPublicApi = makePublicApi({
70
+ init: (initConfiguration) => {
71
+ const errorStack = (/* @__PURE__ */ new Error()).stack;
72
+ callMonitored(() => strategy.init(initConfiguration, rumPublicApi, errorStack));
73
+ },
74
+ setTrackingConsent: monitor((trackingConsent) => {
75
+ trackingConsentState.update(trackingConsent);
76
+ addTelemetryUsage({
77
+ feature: "set-tracking-consent",
78
+ tracking_consent: trackingConsent
79
+ });
80
+ }),
81
+ setViewName: monitor((name) => {
82
+ strategy.setViewName(sanitizeStringOption(name, "view name"));
83
+ addTelemetryUsage({ feature: "set-view-name" });
84
+ }),
85
+ setViewContext: monitor((context) => {
86
+ strategy.setViewContext(context);
87
+ addTelemetryUsage({ feature: "set-view-context" });
88
+ }),
89
+ setViewContextProperty: monitor((key, value) => {
90
+ strategy.setViewContextProperty(key, value);
91
+ addTelemetryUsage({ feature: "set-view-context-property" });
92
+ }),
93
+ getViewContext: monitor(() => {
94
+ addTelemetryUsage({ feature: "set-view-context-property" });
95
+ return strategy.getViewContext();
96
+ }),
97
+ getInternalContext: monitor((startTime) => strategy.getInternalContext(startTime)),
98
+ getInitConfiguration: monitor(() => deepClone(strategy.initConfiguration)),
99
+ addAction: (name, context) => {
100
+ const handlingStack = createHandlingStack("action");
101
+ callMonitored(() => {
102
+ strategy.addAction({
103
+ name: sanitize(name),
104
+ context: sanitize(context),
105
+ startClocks: clocksNow(),
106
+ type: ActionType.CUSTOM,
107
+ handlingStack
108
+ });
109
+ addTelemetryUsage({ feature: "add-action" });
110
+ });
111
+ },
112
+ startAction: monitor((name, options) => {
113
+ addTelemetryUsage({ feature: "start-action" });
114
+ strategy.startAction(sanitize(name), {
115
+ type: sanitize(options?.type),
116
+ context: sanitize(options?.context),
117
+ actionKey: options?.actionKey
118
+ });
119
+ }),
120
+ stopAction: monitor((name, options) => {
121
+ addTelemetryUsage({ feature: "stop-action" });
122
+ strategy.stopAction(sanitize(name), {
123
+ type: sanitize(options?.type),
124
+ context: sanitize(options?.context),
125
+ actionKey: options?.actionKey
126
+ });
127
+ }),
128
+ startResource: monitor((url, options) => {
129
+ addTelemetryUsage({ feature: "start-resource" });
130
+ strategy.startResource(sanitize(url), {
131
+ type: sanitize(options?.type),
132
+ method: sanitize(options?.method),
133
+ context: sanitize(options?.context),
134
+ resourceKey: options?.resourceKey
135
+ });
136
+ }),
137
+ stopResource: monitor((url, options) => {
138
+ addTelemetryUsage({ feature: "stop-resource" });
139
+ strategy.stopResource(sanitize(url), {
140
+ type: sanitize(options?.type),
141
+ statusCode: options?.statusCode,
142
+ size: options?.size,
143
+ context: sanitize(options?.context),
144
+ resourceKey: options?.resourceKey
145
+ });
146
+ }),
147
+ addError: (error, context) => {
148
+ const handlingStack = createHandlingStack("error");
149
+ callMonitored(() => {
150
+ strategy.addError({
151
+ error,
152
+ handlingStack,
153
+ context: sanitize(context),
154
+ startClocks: clocksNow()
155
+ });
156
+ addTelemetryUsage({ feature: "add-error" });
157
+ });
158
+ },
159
+ addTiming: monitor((name, time) => {
160
+ strategy.addTiming(sanitize(name), time);
161
+ }),
162
+ setViewLoadingTime: monitor(() => {
163
+ const callTimestamp = timeStampNow();
164
+ strategy.setLoadingTime(callTimestamp);
165
+ addTelemetryUsage({ feature: "addViewLoadingTime" });
166
+ }),
167
+ setGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.setContext, "set-global-context"),
168
+ getGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.getContext, "get-global-context"),
169
+ setGlobalContextProperty: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.setContextProperty, "set-global-context-property"),
170
+ removeGlobalContextProperty: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.removeContextProperty, "remove-global-context-property"),
171
+ clearGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.clearContext, "clear-global-context"),
172
+ setUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.setContext, "set-user"),
173
+ getUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.getContext, "get-user"),
174
+ setUserProperty: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.setContextProperty, "set-user-property"),
175
+ removeUserProperty: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.removeContextProperty, "remove-user-property"),
176
+ clearUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.clearContext, "clear-user"),
177
+ setAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.setContext, "set-account"),
178
+ getAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.getContext, "get-account"),
179
+ setAccountProperty: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.setContextProperty, "set-account-property"),
180
+ removeAccountProperty: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.removeContextProperty, "remove-account-property"),
181
+ clearAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.clearContext, "clear-account"),
182
+ startView,
183
+ stopSession: monitor(() => {
184
+ strategy.stopSession();
185
+ addTelemetryUsage({ feature: "stop-session" });
186
+ }),
187
+ addFeatureFlagEvaluation: monitor((key, value) => {
188
+ strategy.addFeatureFlagEvaluation(sanitize(key), sanitize(value));
189
+ addTelemetryUsage({ feature: "add-feature-flag-evaluation" });
190
+ }),
191
+ getSessionReplayLink: monitor(() => recorderApi.getSessionReplayLink()),
192
+ startSessionReplayRecording: monitor((options) => {
193
+ recorderApi.start(options);
194
+ addTelemetryUsage({
195
+ feature: "start-session-replay-recording",
196
+ force: options?.force
197
+ });
198
+ }),
199
+ stopSessionReplayRecording: monitor(() => recorderApi.stop()),
200
+ addDurationVital: (name, options) => {
201
+ const handlingStack = createHandlingStack("vital");
202
+ callMonitored(() => {
203
+ addTelemetryUsage({ feature: "add-duration-vital" });
204
+ strategy.addDurationVital({
205
+ id: generateUUID(),
206
+ name: sanitize(name),
207
+ type: VitalType.DURATION,
208
+ startClocks: timeStampToClocks(options.startTime),
209
+ duration: options.duration,
210
+ context: sanitize(options?.context),
211
+ description: sanitize(options?.description),
212
+ handlingStack
213
+ });
214
+ });
215
+ },
216
+ startDurationVital: (name, options) => {
217
+ const handlingStack = createHandlingStack("vital");
218
+ callMonitored(() => {
219
+ addTelemetryUsage({ feature: "start-duration-vital" });
220
+ strategy.startDurationVital(sanitize(name), {
221
+ vitalKey: options?.vitalKey,
222
+ context: sanitize(options?.context),
223
+ description: sanitize(options?.description),
224
+ handlingStack
225
+ });
226
+ });
227
+ },
228
+ stopDurationVital: monitor((name, options) => {
229
+ addTelemetryUsage({ feature: "stop-duration-vital" });
230
+ strategy.stopDurationVital(sanitize(name), {
231
+ vitalKey: options?.vitalKey,
232
+ context: sanitize(options?.context),
233
+ description: sanitize(options?.description)
234
+ });
235
+ }),
236
+ startOperation,
237
+ succeedOperation,
238
+ failOperation,
239
+ startFeatureOperation: startOperation,
240
+ succeedFeatureOperation: succeedOperation,
241
+ failFeatureOperation: failOperation,
242
+ DEFAULT_TRACKED_RESOURCE_HEADERS
243
+ });
244
+ return rumPublicApi;
245
+ }
246
+ function sanitizeStringOption(value, label) {
247
+ if (value === void 0) return;
248
+ if (typeof value !== "string") {
249
+ display.warn(`Invalid ${label} provided (expected a string, got ${typeof value}). Ignoring.`);
250
+ return;
251
+ }
252
+ return sanitize(value);
253
+ }
254
+ function createPostStartStrategy(preStartStrategy, startRumResult) {
255
+ return {
256
+ ...preStartStrategy,
257
+ init: (initConfiguration) => {
258
+ displayAlreadyInitializedError("KUBESENSE_SDK", initConfiguration);
259
+ },
260
+ getInternalContext: startRumResult.getInternalContext,
261
+ stopSession: startRumResult.stopSession,
262
+ getViewContext: startRumResult.getViewContext,
263
+ globalContext: startRumResult.globalContext,
264
+ userContext: startRumResult.userContext,
265
+ accountContext: startRumResult.accountContext
266
+ };
267
+ }
268
+ //#endregion
269
+ export { makeRumPublicApi };
270
+
271
+ //# sourceMappingURL=rumPublicApi.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rumPublicApi.mjs","names":[],"sources":["../../src/boot/rumPublicApi.ts"],"sourcesContent":["import { timeStampNow, clocksNow, timeStampToClocks } from '@kubesense/kubesense-js-core/time'\nimport { deepClone } from '@kubesense/kubesense-js-core/util'\nimport type { Duration, TimeStamp, RelativeTime } from '@kubesense/kubesense-js-core/time'\nimport type {\n Context,\n DeflateWorker,\n DeflateEncoderStreamId,\n DeflateEncoder,\n PublicApi,\n ContextManager,\n TrackingConsent,\n User,\n Account,\n RumInternalContext,\n Telemetry,\n Encoder,\n ResourceType,\n SessionManager,\n} from '@kubesense/kubesense-browser-core'\nimport {\n ContextManagerMethod,\n addTelemetryUsage,\n makePublicApi,\n createHandlingStack,\n sanitize,\n createIdentityEncoder,\n displayAlreadyInitializedError,\n createTrackingConsentState,\n CustomerContextKey,\n defineContextMethod,\n startBufferingData,\n mockable,\n generateUUID,\n display,\n} from '@kubesense/kubesense-browser-core'\nimport { monitor, callMonitored } from '@kubesense/kubesense-js-core/monitor'\n\nimport type { LifeCycle } from '../domain/lifeCycle'\nimport type { ViewHistory } from '../domain/contexts/viewHistory'\nimport type { ReplayStats } from '../rawRumEvent.types'\nimport { ActionType, VitalType } from '../rawRumEvent.types'\nimport { DEFAULT_TRACKED_RESOURCE_HEADERS } from '../domain/configuration'\nimport type { RumConfiguration, RumInitConfiguration } from '../domain/configuration'\nimport type { ViewOptions } from '../domain/view/trackViews'\nimport type {\n AddDurationVitalOptions,\n DurationVitalOptions,\n OperationOptions,\n FeatureOperationOptions,\n FailureReason,\n} from '../domain/vital/vitalCollection'\nimport { callPluginsOnRumStart } from '../domain/plugins'\nimport type { Hooks } from '../domain/hooks'\nimport type { SdkName } from '../domain/contexts/defaultContext'\nimport type { ActionOptions } from '../domain/action/trackManualActions'\nimport type { ResourceOptions, ResourceStopOptions } from '../domain/resource/trackManualResources'\nimport { createPreStartStrategy } from './preStartRum'\nimport type { StartRumResult } from './startRum'\nimport { startRum } from './startRum'\n\nexport interface StartRecordingOptions {\n force: boolean\n}\n\n/**\n * Public API for the RUM browser SDK.\n *\n * See [RUM Browser Monitoring Setup](https://docs.kubesense.ai/real_user_monitoring/browser) for further information.\n *\n * @category Main\n */\nexport interface RumPublicApi extends PublicApi {\n /**\n * Init the RUM browser SDK.\n *\n * See [RUM Browser Monitoring Setup](https://docs.kubesense.ai/real_user_monitoring/browser) for further information.\n *\n * @category Init\n * @param initConfiguration - Configuration options of the SDK\n * @example\n * ```ts\n * kubesenseSdk.init({\n * applicationId: '<KUBESENSE_APPLICATION_ID>',\n * clientToken: '<KUBESENSE_CLIENT_TOKEN>',\n * kubesenseRumEndpoint: '<KUBESENSE_RUM_ENDPOINT>',\n * // ...\n * })\n * ```\n */\n init: (initConfiguration: RumInitConfiguration) => void\n\n /**\n * Set the tracking consent of the current user.\n *\n * Data will be sent only if it is set to \"granted\". This value won't be stored by the library\n * across page loads: you will need to call this method or set the appropriate `trackingConsent`\n * field in the init() method at each page load.\n *\n * If this method is called before the init() method, the provided value will take precedence\n * over the one provided as initialization parameter.\n *\n * See [User tracking consent](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#user-tracking-consent) for further information.\n *\n * @category Privacy\n * @param trackingConsent - The user tracking consent\n */\n setTrackingConsent: (trackingConsent: TrackingConsent) => void\n\n /**\n * Set View Name.\n *\n * Enable to manually change the name of the current view.\n * See [Override default RUM view names](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#override-default-rum-view-names) for further information.\n *\n * @category Context - View\n * @param name - Name of the view\n */\n setViewName: (name: string) => void\n\n /**\n * Set View Context.\n *\n * Enable to manually set the context of the current view.\n *\n * @category Context - View\n * @param context - Context of the view\n */\n setViewContext: (context: Context) => void\n /**\n * Set View Context Property.\n *\n * Enable to manually set a property of the context of the current view.\n *\n * @category Context - View\n * @param key - key of the property\n * @param value - value of the property\n */\n setViewContextProperty: (key: string, value: any) => void\n\n /**\n * Get View Context.\n *\n * @category Context - View\n */\n getViewContext(): Context\n\n /**\n * [Internal API] Get the internal SDK context\n *\n * @internal\n */\n getInternalContext: (startTime?: number) => RumInternalContext | undefined\n\n /**\n * Get the init configuration\n *\n * @category Init\n * @returns RumInitConfiguration | undefined\n */\n getInitConfiguration: () => RumInitConfiguration | undefined\n\n /**\n * Add a custom action, stored in `@action`\n *\n * See [Send RUM Custom Actions](https://docs.kubesense.ai/real_user_monitoring/guide/send-rum-custom-actions) for further information.\n *\n * @category Data Collection\n * @param name - Name of the action\n * @param context - Context of the action\n */\n addAction: (name: string, context?: object) => void\n\n /**\n * Start tracking a custom action.\n *\n * Call {@link stopAction} with the same name (and optional `actionKey`) to send a RUM action event\n * with the elapsed duration. Errors and resources triggered between start and stop are associated\n * with the action.\n *\n * @category Data Collection\n * @param name - Name of the action\n * @param options - Options of the action (@default type: 'custom')\n * @example\n * ```ts\n * kubesenseSdk.startAction('checkout', { context: { cartId: 'abc' } })\n * // ... user completes checkout\n * kubesenseSdk.stopAction('checkout')\n * ```\n */\n startAction: (name: string, options?: ActionOptions) => void\n\n /**\n * Stop tracking a custom action started with {@link startAction}.\n *\n * Sends a RUM action event with the elapsed duration since the matching start call. Context from\n * start and stop calls is merged into the event.\n *\n * @category Data Collection\n * @param name - Name of the action\n * @param options - Options of the action\n */\n stopAction: (name: string, options?: ActionOptions) => void\n\n /**\n * Start tracking a resource manually.\n *\n * Use this for network activity that the SDK cannot automatically instrument. Call {@link stopResource}\n * with the same URL (and optional `resourceKey`) to send a RUM resource event with the elapsed duration.\n *\n * @category Data Collection\n * @param url - URL of the resource\n * @param options - Options of the resource (@default type: 'other')\n * @example\n * ```ts\n * kubesenseSdk.startResource('https://api.example.com/users', { type: 'fetch', method: 'POST' })\n * // ... perform the request\n * kubesenseSdk.stopResource('https://api.example.com/users', { statusCode: 201 })\n * ```\n */\n startResource: (url: string, options?: ResourceOptions) => void\n\n /**\n * Stop tracking a resource started with {@link startResource}.\n *\n * Sends a RUM resource event with the elapsed duration since the matching start call. Context from\n * start and stop calls is merged into the event.\n *\n * @category Data Collection\n * @param url - URL of the resource\n * @param options - Options of the resource\n */\n stopResource: (url: string, options?: ResourceStopOptions) => void\n\n /**\n * Add a custom error, stored in `@error`.\n *\n * See [Send RUM Custom Actions](https://docs.kubesense.ai/real_user_monitoring/guide/send-rum-custom-actions) for further information.\n *\n * @category Data Collection\n * @param error - Error. Favor sending a [Javascript Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) to have a stack trace attached to the error event.\n * @param context - Context of the error\n */\n addError: (error: unknown, context?: object) => void\n\n /**\n * Add a custom timing relative to the start of the current view,\n * stored in `@view.custom_timings.<timing_name>`\n *\n * Note: passing a relative time is discouraged since it is actually used as-is but displayed relative to the view start.\n * We currently don't provide a way to retrieve the view start time, so it can be challenging to provide a timing relative to the view start.\n *\n * @category Data Collection\n * @param name - Name of the custom timing\n * @param [time] - Epoch timestamp of the custom timing (if not set, will use current time)\n */\n addTiming: (name: string, time?: number) => void\n\n /**\n * [Experimental] Manually set the current view's loading time.\n *\n * Call this method when the view has finished loading. The loading time is computed as the\n * elapsed time since the view started. Each call replaces any previously set value (last-call-wins).\n *\n * @category Data Collection\n */\n setViewLoadingTime: () => void\n\n /**\n * Set the global context information to all events, stored in `@context`\n * See [Global context](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#global-context) for further information.\n *\n * @category Context - Global Context\n * @param context - Global context\n */\n setGlobalContext: (context: Context) => void\n\n /**\n * Get the global Context\n *\n * See [Global context](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#global-context) for further information.\n *\n * @category Context - Global Context\n */\n getGlobalContext: () => Context\n\n /**\n * Set or update a global context property, stored in `@context.<key>`\n *\n * See [Global context](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#global-context) for further information.\n *\n * @category Context - Global Context\n * @param key - Key of the property\n * @param value - Value of the property\n */\n setGlobalContextProperty: (key: any, value: any) => void\n\n /**\n * Remove a global context property\n *\n * See [Global context](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#global-context) for further information.\n *\n * @category Context - Global Context\n */\n removeGlobalContextProperty: (key: any) => void\n\n /**\n * Clear the global context\n *\n * See [Global context](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#global-context) for further information.\n *\n * @category Context - Global Context\n */\n clearGlobalContext(): void\n\n /**\n * Set user information to all events, stored in `@usr`\n *\n * See [User session](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#user-session) for further information.\n *\n * @category Context - User\n * @param newUser - User information\n */\n setUser(newUser: User & { id: string }): void\n\n /**\n * Set user information to all events, stored in `@usr`\n *\n * @category Context - User\n * @deprecated You must specify a user id, favor using {@link setUser} instead\n * @param newUser - User information with optional id\n */\n setUser(newUser: User): void\n\n /**\n * Get user information\n *\n * See [User session](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#user-session) for further information.\n *\n * @category Context - User\n * @returns User information\n */\n getUser: () => Context\n\n /**\n * Set or update the user property, stored in `@usr.<key>`\n *\n * See [User session](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#user-session) for further information.\n *\n * @category Context - User\n * @param key - Key of the property\n * @param property - Value of the property\n */\n setUserProperty: (key: any, property: any) => void\n\n /**\n * Remove a user property\n *\n * @category Context - User\n * @param key - Key of the property to remove\n * @see [User session](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#user-session) for further information.\n */\n removeUserProperty: (key: any) => void\n\n /**\n * Clear all user information\n *\n * See [User session](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#user-session) for further information.\n *\n * @category Context - User\n */\n clearUser: () => void\n\n /**\n * Set account information to all events, stored in `@account`\n *\n * @category Context - Account\n * @param newAccount - Account information\n */\n setAccount: (newAccount: Account) => void\n\n /**\n * Get account information\n *\n * @category Context - Account\n * @returns Account information\n */\n getAccount: () => Context\n\n /**\n * Set or update the account property, stored in `@account.<key>`\n *\n * @category Context - Account\n * @param key - Key of the property\n * @param property - Value of the property\n */\n setAccountProperty: (key: string, property: any) => void\n\n /**\n * Remove an account property\n *\n * @category Context - Account\n * @param key - Key of the property to remove\n */\n removeAccountProperty: (key: string) => void\n\n /**\n * Clear all account information\n *\n * @category Context - Account\n * @returns Clear all account information\n */\n clearAccount: () => void\n /**\n * Start a view manually.\n * Enable to manual start a view, use `trackViewsManually: true` init parameter and call `startView()` to create RUM views and be aligned with how you’ve defined them in your SPA application routing.\n *\n * See [Override default RUM view names](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/#override-default-rum-view-names) for further information.\n *\n * Context - @category Data Collection\n *\n * @param nameOrOptions - The view name, or a {@link ViewOptions} object to configure the view\n */\n startView(nameOrOptions?: string | ViewOptions): void\n\n /**\n * Stop the session. A new session will start at the next user interaction with the page.\n *\n * @category Session\n */\n stopSession(): void\n\n /**\n * Add a feature flag evaluation,\n * stored in `@feature_flags.<feature_flag_key>`\n *\n * We recommend enabling the intake request compression when using feature flags `compressIntakeRequests: true`.\n *\n * See [Feature Flag Tracking](https://docs.kubesense.ai/real_user_monitoring/feature_flag_tracking/) for further information.\n *\n * @category Data Collection\n * @param key - The key of the feature flag.\n * @param value - The value of the feature flag.\n */\n addFeatureFlagEvaluation: (key: string, value: any) => void\n\n /**\n * Get the Session Replay Link.\n *\n * See [Connect Session Replay To Your Third-Party Tools](https://docs.kubesense.ai/real_user_monitoring/guide/connect-session-replay-to-your-third-party-tools) for further information.\n *\n * @category Session Replay\n */\n getSessionReplayLink: () => string | undefined\n\n /**\n * Start Session Replay recording.\n * Enable to conditionally start the recording, use the `startSessionReplayRecordingManually:true` init parameter and call `startSessionReplayRecording()`\n *\n * See [Browser Session Replay](https://docs.kubesense.ai/real_user_monitoring/session_replay/browser) for further information.\n *\n * @category Session Replay\n */\n startSessionReplayRecording: (options?: StartRecordingOptions) => void\n\n /**\n * Stop Session Replay recording.\n *\n * See [Browser Session Replay](https://docs.kubesense.ai/real_user_monitoring/session_replay/browser) for further information.\n *\n * @category Session Replay\n */\n stopSessionReplayRecording: () => void\n\n /**\n * Add a custom duration vital\n *\n * @category Vital - Duration\n * @param name - Name of the custom vital\n * @param options - Options for the custom vital (startTime, duration, context, description)\n */\n addDurationVital: (name: string, options: AddDurationVitalOptions) => void\n\n /**\n * Start a custom duration vital.\n *\n * If you plan to have multiple durations for the same vital, use the `vitalKey` option to\n * differentiate them. Provide the same key when calling `stopDurationVital`.\n *\n * @category Vital - Duration\n * @param name - Name of the custom vital\n * @param options - Options for the custom vital (vitalKey, context, description)\n * @example\n * ```ts\n * // Simple usage\n * kubesenseSdk.startDurationVital('my-vital')\n * kubesenseSdk.stopDurationVital('my-vital')\n *\n * // Multiple simultaneous vitals with the same name\n * const key = crypto.randomUUID()\n * kubesenseSdk.startDurationVital('my-vital', { vitalKey: key })\n * kubesenseSdk.stopDurationVital('my-vital', { vitalKey: key })\n * ```\n */\n startDurationVital: (name: string, options?: DurationVitalOptions) => void\n\n /**\n * Stop a custom duration vital\n *\n * @category Vital - Duration\n * @param name - Name of the custom vital\n * @param options - Options for the custom vital (vitalKey, context, description)\n */\n stopDurationVital: (name: string, options?: DurationVitalOptions) => void\n\n /**\n * Start an operation.\n *\n * Call {@link succeedOperation} or {@link failOperation} with the same name (and optional\n * `operationKey`) to send a RUM vital event marking the end of the operation.\n *\n * @category Vital - Operation\n * @param name - Name of the operation\n * @param options - Options for the operation (operationKey, context, description)\n * @example\n * ```ts\n * kubesenseSdk.startOperation('checkout')\n * // ... perform the operation\n * kubesenseSdk.succeedOperation('checkout')\n * ```\n */\n startOperation: (name: string, options?: OperationOptions) => void\n\n /**\n * Mark an operation as successful.\n *\n * Sends a RUM vital event marking the end of the operation started with {@link startOperation}.\n *\n * @category Vital - Operation\n * @param name - Name of the operation\n * @param options - Options for the operation (operationKey, context, description)\n */\n succeedOperation: (name: string, options?: OperationOptions) => void\n\n /**\n * Mark an operation as failed.\n *\n * Sends a RUM vital event marking the end of the operation started with {@link startOperation}.\n *\n * @category Vital - Operation\n * @param name - Name of the operation\n * @param failureReason - Reason for the failure\n * @param options - Options for the operation (operationKey, context, description)\n */\n failOperation: (name: string, failureReason: FailureReason, options?: OperationOptions) => void\n\n /**\n * Start a feature operation.\n *\n * @category Vital - Feature Operation\n * @deprecated Use {@link startOperation} instead.\n * @param name - Name of the operation\n * @param options - Options for the operation (operationKey, context, description)\n */\n startFeatureOperation: (name: string, options?: FeatureOperationOptions) => void\n\n /**\n * Mark a feature operation as successful.\n *\n * @category Vital - Feature Operation\n * @deprecated Use {@link succeedOperation} instead.\n * @param name - Name of the operation\n * @param options - Options for the operation (operationKey, context, description)\n */\n succeedFeatureOperation: (name: string, options?: FeatureOperationOptions) => void\n\n /**\n * Mark a feature operation as failed.\n *\n * @category Vital - Feature Operation\n * @deprecated Use {@link failOperation} instead.\n * @param name - Name of the operation\n * @param failureReason - Reason for the failure\n * @param options - Options for the operation (operationKey, context, description)\n */\n failFeatureOperation: (name: string, failureReason: FailureReason, options?: FeatureOperationOptions) => void\n\n /**\n * List of default headers used by the {@link RumInitConfiguration.trackResourceHeaders | trackResourceHeaders} option.\n *\n * @deprecated You can now omit `name` from a MatchHeader entry to include default headers.\n */\n DEFAULT_TRACKED_RESOURCE_HEADERS: typeof DEFAULT_TRACKED_RESOURCE_HEADERS\n}\n\nexport interface RecorderApi {\n start: (options?: StartRecordingOptions) => void\n stop: () => void\n onRumStart: (\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n sessionManager: SessionManager,\n viewHistory: ViewHistory,\n deflateWorker: DeflateWorker | undefined,\n telemetry: Telemetry\n ) => void\n isRecording: () => boolean\n getReplayStats: (viewId: string) => ReplayStats | undefined\n getSessionReplayLink: () => string | undefined\n}\n\nexport interface ProfilerApi {\n stop: () => void\n onRumStart: (\n lifeCycle: LifeCycle,\n hooks: Hooks,\n configuration: RumConfiguration,\n sessionManager: SessionManager,\n viewHistory: ViewHistory,\n createEncoder: (streamId: DeflateEncoderStreamId) => Encoder\n ) => void\n}\n\nexport interface RumPublicApiOptions {\n ignoreInitIfSyntheticsWillInjectRum?: boolean\n startDeflateWorker?: (\n configuration: RumConfiguration,\n source: string,\n onInitializationFailure: () => void\n ) => DeflateWorker | undefined\n createDeflateEncoder?: (worker: DeflateWorker, streamId: DeflateEncoderStreamId) => DeflateEncoder\n sdkName?: SdkName\n}\n\nexport interface Strategy {\n init: (initConfiguration: RumInitConfiguration, publicApi: RumPublicApi, errorStack?: string) => void\n initConfiguration: RumInitConfiguration | undefined\n getInternalContext: StartRumResult['getInternalContext']\n stopSession: StartRumResult['stopSession']\n addTiming: StartRumResult['addTiming']\n setLoadingTime: StartRumResult['setLoadingTime']\n startView: StartRumResult['startView']\n setViewName: StartRumResult['setViewName']\n\n setViewContext: StartRumResult['setViewContext']\n setViewContextProperty: StartRumResult['setViewContextProperty']\n getViewContext: StartRumResult['getViewContext']\n\n globalContext: ContextManager\n userContext: ContextManager\n accountContext: ContextManager\n\n addAction: StartRumResult['addAction']\n startAction: StartRumResult['startAction']\n stopAction: StartRumResult['stopAction']\n startResource: StartRumResult['startResource']\n stopResource: StartRumResult['stopResource']\n addError: StartRumResult['addError']\n addFeatureFlagEvaluation: StartRumResult['addFeatureFlagEvaluation']\n startDurationVital: StartRumResult['startDurationVital']\n stopDurationVital: StartRumResult['stopDurationVital']\n addDurationVital: StartRumResult['addDurationVital']\n addOperationStepVital: StartRumResult['addOperationStepVital']\n}\n\nexport function makeRumPublicApi(\n recorderApi: RecorderApi,\n profilerApi: ProfilerApi,\n options: RumPublicApiOptions = {}\n): RumPublicApi {\n const trackingConsentState = createTrackingConsentState()\n const bufferedData = startBufferingData()\n\n let strategy = createPreStartStrategy(\n options,\n trackingConsentState,\n (configuration, sessionManager, deflateWorker, initialViewOptions, telemetry, hooks) => {\n const createEncoder =\n deflateWorker && options.createDeflateEncoder\n ? (streamId: DeflateEncoderStreamId) => options.createDeflateEncoder!(deflateWorker, streamId)\n : createIdentityEncoder\n\n const startRumResult = mockable(startRum)(\n configuration,\n sessionManager,\n recorderApi,\n profilerApi,\n initialViewOptions,\n createEncoder,\n bufferedData.observable,\n telemetry,\n hooks,\n options.sdkName\n )\n\n recorderApi.onRumStart(\n startRumResult.lifeCycle,\n configuration,\n sessionManager,\n startRumResult.viewHistory,\n deflateWorker,\n startRumResult.telemetry\n )\n\n profilerApi.onRumStart(\n startRumResult.lifeCycle,\n startRumResult.hooks,\n configuration,\n sessionManager,\n startRumResult.viewHistory,\n createEncoder\n )\n\n strategy = createPostStartStrategy(strategy, startRumResult)\n\n callPluginsOnRumStart(configuration.plugins, {\n addEvent: startRumResult.addEvent,\n addError: startRumResult.addError,\n })\n\n return startRumResult\n }\n )\n const getStrategy = () => strategy\n\n const startView: {\n (name?: string): void\n (options: ViewOptions): void\n } = (options?: string | ViewOptions) => {\n const handlingStack = createHandlingStack('view')\n callMonitored(() => {\n const sanitizedOptions = typeof options === 'object' ? options : { name: options }\n strategy.startView({\n ...sanitizedOptions,\n name: sanitizeStringOption(sanitizedOptions.name, 'view name'),\n service: sanitizeStringOption(sanitizedOptions.service, 'view service'),\n version: sanitizeStringOption(sanitizedOptions.version, 'view version'),\n handlingStack,\n })\n addTelemetryUsage({ feature: 'start-view' })\n })\n }\n\n const startOperation: RumPublicApi['startOperation'] = (name, options) => {\n const handlingStack = createHandlingStack('vital')\n callMonitored(() => {\n addTelemetryUsage({ feature: 'add-operation-step-vital', action_type: 'start' })\n strategy.addOperationStepVital(name, 'start', { ...options, handlingStack })\n })\n }\n\n const succeedOperation: RumPublicApi['succeedOperation'] = monitor((name, options) => {\n addTelemetryUsage({ feature: 'add-operation-step-vital', action_type: 'succeed' })\n strategy.addOperationStepVital(name, 'end', options)\n })\n\n const failOperation: RumPublicApi['failOperation'] = monitor((name, failureReason, options) => {\n addTelemetryUsage({ feature: 'add-operation-step-vital', action_type: 'fail' })\n strategy.addOperationStepVital(name, 'end', options, failureReason)\n })\n\n const rumPublicApi: RumPublicApi = makePublicApi<RumPublicApi>({\n init: (initConfiguration) => {\n const errorStack = new Error().stack\n callMonitored(() => strategy.init(initConfiguration, rumPublicApi, errorStack))\n },\n\n setTrackingConsent: monitor((trackingConsent) => {\n trackingConsentState.update(trackingConsent)\n addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent })\n }),\n\n setViewName: monitor((name: string) => {\n strategy.setViewName(sanitizeStringOption(name, 'view name')!)\n addTelemetryUsage({ feature: 'set-view-name' })\n }),\n\n setViewContext: monitor((context: Context) => {\n strategy.setViewContext(context)\n addTelemetryUsage({ feature: 'set-view-context' })\n }),\n\n setViewContextProperty: monitor((key: string, value: any) => {\n strategy.setViewContextProperty(key, value)\n addTelemetryUsage({ feature: 'set-view-context-property' })\n }),\n\n getViewContext: monitor(() => {\n addTelemetryUsage({ feature: 'set-view-context-property' })\n return strategy.getViewContext()\n }),\n\n getInternalContext: monitor((startTime) => strategy.getInternalContext(startTime)),\n\n getInitConfiguration: monitor(() => deepClone(strategy.initConfiguration)),\n\n addAction: (name, context) => {\n const handlingStack = createHandlingStack('action')\n\n callMonitored(() => {\n strategy.addAction({\n name: sanitize(name)!,\n context: sanitize(context) as Context,\n startClocks: clocksNow(),\n type: ActionType.CUSTOM,\n handlingStack,\n })\n addTelemetryUsage({ feature: 'add-action' })\n })\n },\n\n startAction: monitor((name, options) => {\n addTelemetryUsage({ feature: 'start-action' })\n strategy.startAction(sanitize(name)!, {\n type: sanitize(options?.type) as ActionType | undefined,\n context: sanitize(options?.context) as Context,\n actionKey: options?.actionKey,\n })\n }),\n\n stopAction: monitor((name, options) => {\n addTelemetryUsage({ feature: 'stop-action' })\n strategy.stopAction(sanitize(name)!, {\n type: sanitize(options?.type) as ActionType | undefined,\n context: sanitize(options?.context) as Context,\n actionKey: options?.actionKey,\n })\n }),\n\n startResource: monitor((url, options) => {\n addTelemetryUsage({ feature: 'start-resource' })\n strategy.startResource(sanitize(url)!, {\n type: sanitize(options?.type) as ResourceType | undefined,\n method: sanitize(options?.method) as string | undefined,\n context: sanitize(options?.context) as Context,\n resourceKey: options?.resourceKey,\n })\n }),\n\n stopResource: monitor((url, options) => {\n addTelemetryUsage({ feature: 'stop-resource' })\n strategy.stopResource(sanitize(url)!, {\n type: sanitize(options?.type) as ResourceType | undefined,\n statusCode: options?.statusCode,\n size: options?.size,\n context: sanitize(options?.context) as Context,\n resourceKey: options?.resourceKey,\n })\n }),\n\n addError: (error, context) => {\n const handlingStack = createHandlingStack('error')\n callMonitored(() => {\n strategy.addError({\n error, // Do not sanitize error here, it is needed unserialized by computeRawError()\n handlingStack,\n context: sanitize(context) as Context,\n startClocks: clocksNow(),\n })\n addTelemetryUsage({ feature: 'add-error' })\n })\n },\n\n addTiming: monitor((name, time) => {\n // TODO: next major decide to drop relative time support or update its behaviour\n strategy.addTiming(sanitize(name)!, time as RelativeTime | TimeStamp | undefined)\n }),\n\n setViewLoadingTime: monitor(() => {\n const callTimestamp = timeStampNow()\n strategy.setLoadingTime(callTimestamp)\n addTelemetryUsage({\n feature: 'addViewLoadingTime',\n })\n }),\n\n setGlobalContext: defineContextMethod(\n getStrategy,\n CustomerContextKey.globalContext,\n ContextManagerMethod.setContext,\n 'set-global-context'\n ),\n getGlobalContext: defineContextMethod(\n getStrategy,\n CustomerContextKey.globalContext,\n ContextManagerMethod.getContext,\n 'get-global-context'\n ),\n setGlobalContextProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.globalContext,\n ContextManagerMethod.setContextProperty,\n 'set-global-context-property'\n ),\n removeGlobalContextProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.globalContext,\n ContextManagerMethod.removeContextProperty,\n 'remove-global-context-property'\n ),\n clearGlobalContext: defineContextMethod(\n getStrategy,\n CustomerContextKey.globalContext,\n ContextManagerMethod.clearContext,\n 'clear-global-context'\n ),\n\n setUser: defineContextMethod(\n getStrategy,\n CustomerContextKey.userContext,\n ContextManagerMethod.setContext,\n 'set-user'\n ),\n getUser: defineContextMethod(\n getStrategy,\n CustomerContextKey.userContext,\n ContextManagerMethod.getContext,\n 'get-user'\n ),\n setUserProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.userContext,\n ContextManagerMethod.setContextProperty,\n 'set-user-property'\n ),\n removeUserProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.userContext,\n ContextManagerMethod.removeContextProperty,\n 'remove-user-property'\n ),\n clearUser: defineContextMethod(\n getStrategy,\n CustomerContextKey.userContext,\n ContextManagerMethod.clearContext,\n 'clear-user'\n ),\n\n setAccount: defineContextMethod(\n getStrategy,\n CustomerContextKey.accountContext,\n ContextManagerMethod.setContext,\n 'set-account'\n ),\n getAccount: defineContextMethod(\n getStrategy,\n CustomerContextKey.accountContext,\n ContextManagerMethod.getContext,\n 'get-account'\n ),\n setAccountProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.accountContext,\n ContextManagerMethod.setContextProperty,\n 'set-account-property'\n ),\n removeAccountProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.accountContext,\n ContextManagerMethod.removeContextProperty,\n 'remove-account-property'\n ),\n clearAccount: defineContextMethod(\n getStrategy,\n CustomerContextKey.accountContext,\n ContextManagerMethod.clearContext,\n 'clear-account'\n ),\n\n startView,\n\n stopSession: monitor(() => {\n strategy.stopSession()\n addTelemetryUsage({ feature: 'stop-session' })\n }),\n\n addFeatureFlagEvaluation: monitor((key, value) => {\n strategy.addFeatureFlagEvaluation(sanitize(key)!, sanitize(value))\n addTelemetryUsage({ feature: 'add-feature-flag-evaluation' })\n }),\n\n getSessionReplayLink: monitor(() => recorderApi.getSessionReplayLink()),\n\n startSessionReplayRecording: monitor((options?: StartRecordingOptions) => {\n recorderApi.start(options)\n addTelemetryUsage({ feature: 'start-session-replay-recording', force: options?.force })\n }),\n\n stopSessionReplayRecording: monitor(() => recorderApi.stop()),\n\n addDurationVital: (name, options) => {\n const handlingStack = createHandlingStack('vital')\n callMonitored(() => {\n addTelemetryUsage({ feature: 'add-duration-vital' })\n strategy.addDurationVital({\n id: generateUUID(),\n name: sanitize(name)!,\n type: VitalType.DURATION,\n startClocks: timeStampToClocks(options.startTime as TimeStamp),\n duration: options.duration as Duration,\n context: sanitize(options?.context) as Context,\n description: sanitize(options?.description) as string | undefined,\n handlingStack,\n })\n })\n },\n\n startDurationVital: (name, options) => {\n const handlingStack = createHandlingStack('vital')\n callMonitored(() => {\n addTelemetryUsage({ feature: 'start-duration-vital' })\n strategy.startDurationVital(sanitize(name)!, {\n vitalKey: options?.vitalKey,\n context: sanitize(options?.context) as Context,\n description: sanitize(options?.description) as string | undefined,\n handlingStack,\n })\n })\n },\n\n stopDurationVital: monitor((name, options) => {\n addTelemetryUsage({ feature: 'stop-duration-vital' })\n strategy.stopDurationVital(sanitize(name)!, {\n vitalKey: options?.vitalKey,\n context: sanitize(options?.context) as Context,\n description: sanitize(options?.description) as string | undefined,\n })\n }),\n\n startOperation,\n succeedOperation,\n failOperation,\n\n // Deprecated aliases — kept for backwards compatibility, forward to the renamed APIs above.\n // TODO: remove in the next major version (RUM-16921).\n startFeatureOperation: startOperation,\n succeedFeatureOperation: succeedOperation,\n failFeatureOperation: failOperation,\n\n DEFAULT_TRACKED_RESOURCE_HEADERS,\n })\n\n return rumPublicApi\n}\n\nfunction sanitizeStringOption(value: unknown, label: string): string | undefined {\n if (value === undefined) {\n return undefined\n }\n if (typeof value !== 'string') {\n display.warn(`Invalid ${label} provided (expected a string, got ${typeof value}). Ignoring.`)\n return undefined\n }\n return sanitize(value)\n}\n\nfunction createPostStartStrategy(preStartStrategy: Strategy, startRumResult: StartRumResult): Strategy {\n return {\n ...preStartStrategy,\n init: (initConfiguration: RumInitConfiguration) => {\n displayAlreadyInitializedError('KUBESENSE_SDK', initConfiguration)\n },\n getInternalContext: startRumResult.getInternalContext,\n stopSession: startRumResult.stopSession,\n getViewContext: startRumResult.getViewContext,\n globalContext: startRumResult.globalContext,\n userContext: startRumResult.userContext,\n accountContext: startRumResult.accountContext,\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ import { createDOMMutationObservable } from "../browser/domMutationObservable.mjs";
2
+ import { createWindowOpenObservable } from "../browser/windowOpenObservable.mjs";
3
+ import { startInternalContext } from "../domain/contexts/internalContext.mjs";
4
+ import { LifeCycle } from "../domain/lifeCycle.mjs";
5
+ import { startViewHistory } from "../domain/contexts/viewHistory.mjs";
6
+ import { startRequestCollection } from "../domain/requestCollection.mjs";
7
+ import { startWebSocketCollection } from "../domain/resource/webSocketCollection.mjs";
8
+ import { startActionCollection } from "../domain/action/actionCollection.mjs";
9
+ import { startErrorCollection } from "../domain/error/errorCollection.mjs";
10
+ import { startResourceCollection } from "../domain/resource/resourceCollection.mjs";
11
+ import { startViewCollection } from "../domain/view/viewCollection.mjs";
12
+ import { startRumBatch } from "../transport/startRumBatch.mjs";
13
+ import { startRumEventBridge } from "../transport/startRumEventBridge.mjs";
14
+ import { startUrlContexts } from "../domain/contexts/urlContexts.mjs";
15
+ import { createLocationChangeObservable } from "../browser/locationChangeObservable.mjs";
16
+ import { startFeatureFlagContexts } from "../domain/contexts/featureFlagContext.mjs";
17
+ import { startCustomerDataTelemetry } from "../domain/startCustomerDataTelemetry.mjs";
18
+ import { startPageStateHistory } from "../domain/contexts/pageStateHistory.mjs";
19
+ import { startDisplayContext } from "../domain/contexts/displayContext.mjs";
20
+ import { startVitalCollection } from "../domain/vital/vitalCollection.mjs";
21
+ import { startSessionContext } from "../domain/contexts/sessionContext.mjs";
22
+ import { startCiVisibilityContext } from "../domain/contexts/ciVisibilityContext.mjs";
23
+ import { startLongTaskCollection } from "../domain/longTask/longTaskCollection.mjs";
24
+ import { startSyntheticsContext } from "../domain/contexts/syntheticsContext.mjs";
25
+ import { startRumAssembly } from "../domain/assembly.mjs";
26
+ import { startConnectivityContext } from "../domain/contexts/connectivityContext.mjs";
27
+ import { startUserAgentDataContext } from "../domain/contexts/userAgentDataContext.mjs";
28
+ import { startDefaultContext } from "../domain/contexts/defaultContext.mjs";
29
+ import { startEventCollection } from "../domain/event/eventCollection.mjs";
30
+ import { startSourceCodeMfeContext } from "../domain/contexts/sourceCodeMfeContext.mjs";
31
+ import { clocksNow } from "@kubesense/kubesense-js-core/time";
32
+ import { DEFAULT_ERROR_TYPE, ErrorSource, ExperimentalFeature, addTelemetryDebug, canUseEventBridge, createPageMayExitObservable, getSessionEndClocks, isExperimentalFeatureEnabled, sendToExtension, startAccountContext, startGlobalContext, startTabContext, startUserContext } from "@kubesense/kubesense-browser-core";
33
+ //#region src/boot/startRum.ts
34
+ function startRum(configuration, sessionManager, recorderApi, profilerApi, initialViewOptions, createEncoder, bufferedDataObservable, telemetry, hooks, sdkName) {
35
+ const cleanupTasks = [];
36
+ const lifeCycle = new LifeCycle();
37
+ lifeCycle.subscribe(14, (event) => sendToExtension("rum", event));
38
+ sessionManager.expireObservable.subscribe(() => lifeCycle.notify(10, { endClocks: getSessionEndClocks(sessionManager.findSession()) }));
39
+ sessionManager.renewObservable.subscribe(() => lifeCycle.notify(11));
40
+ const reportError = (message) => {
41
+ lifeCycle.notify(15, { error: {
42
+ message,
43
+ type: DEFAULT_ERROR_TYPE,
44
+ source: ErrorSource.AGENT,
45
+ startClocks: clocksNow()
46
+ } });
47
+ addTelemetryDebug("Error reported to customer", { "error.message": message });
48
+ };
49
+ if (!canUseEventBridge()) {
50
+ const batch = startRumBatch(configuration, lifeCycle, reportError, sessionManager.expireObservable, createEncoder);
51
+ const preparePageExitSubscription = batch.prepareUrgentFlushObservable.subscribe((reason) => {
52
+ lifeCycle.notify(12, reason);
53
+ });
54
+ cleanupTasks.push(() => preparePageExitSubscription.unsubscribe());
55
+ cleanupTasks.push(() => batch.stop());
56
+ startCustomerDataTelemetry(telemetry, lifeCycle, batch.flushObservable);
57
+ } else {
58
+ startRumEventBridge(lifeCycle);
59
+ const pageMayExitSubscription = createPageMayExitObservable().subscribe((event) => {
60
+ lifeCycle.notify(12, event.reason);
61
+ });
62
+ cleanupTasks.push(() => pageMayExitSubscription.unsubscribe());
63
+ }
64
+ const { stop: stopRumEventCollection, ...startRumEventCollectionResult } = startRumEventCollection(lifeCycle, hooks, configuration, sessionManager, recorderApi, initialViewOptions, bufferedDataObservable, sdkName, reportError);
65
+ cleanupTasks.push(stopRumEventCollection);
66
+ bufferedDataObservable.unbuffer();
67
+ cleanupTasks.push(() => profilerApi.stop());
68
+ return {
69
+ ...startRumEventCollectionResult,
70
+ lifeCycle,
71
+ sessionManager,
72
+ stopSession: () => sessionManager.expire(),
73
+ telemetry,
74
+ stop: () => {
75
+ cleanupTasks.forEach((task) => task());
76
+ },
77
+ hooks
78
+ };
79
+ }
80
+ function startRumEventCollection(lifeCycle, hooks, configuration, sessionManager, recorderApi, initialViewOptions, bufferedDataObservable, sdkName, reportError) {
81
+ const cleanupTasks = [];
82
+ const domMutationObservable = createDOMMutationObservable();
83
+ const locationChangeObservable = createLocationChangeObservable();
84
+ const { observable: windowOpenObservable, stop: stopWindowOpen } = createWindowOpenObservable();
85
+ cleanupTasks.push(stopWindowOpen);
86
+ const { assembleEventDefaults: assembleHook } = hooks;
87
+ startDefaultContext(assembleHook, configuration, sdkName);
88
+ const pageStateHistory = startPageStateHistory(assembleHook);
89
+ cleanupTasks.push(() => pageStateHistory.stop());
90
+ const viewHistory = startViewHistory(lifeCycle);
91
+ cleanupTasks.push(() => viewHistory.stop());
92
+ const urlContexts = startUrlContexts(lifeCycle, assembleHook, locationChangeObservable);
93
+ cleanupTasks.push(() => urlContexts.stop());
94
+ const featureFlagContexts = startFeatureFlagContexts(lifeCycle, assembleHook, configuration);
95
+ startSessionContext(assembleHook, configuration, sessionManager, recorderApi, viewHistory);
96
+ startConnectivityContext(assembleHook);
97
+ startUserAgentDataContext(assembleHook);
98
+ startTabContext(assembleHook);
99
+ const globalContext = startGlobalContext(assembleHook, configuration, "rum", true);
100
+ const userContext = startUserContext(assembleHook, configuration, sessionManager, "rum");
101
+ const accountContext = startAccountContext(assembleHook, configuration, "rum");
102
+ const actionCollection = startActionCollection(lifeCycle, hooks, domMutationObservable, windowOpenObservable, configuration);
103
+ cleanupTasks.push(actionCollection.stop);
104
+ const eventCollection = startEventCollection(lifeCycle);
105
+ const displayContext = startDisplayContext(assembleHook);
106
+ cleanupTasks.push(displayContext.stop);
107
+ const ciVisibilityContext = startCiVisibilityContext(assembleHook);
108
+ cleanupTasks.push(ciVisibilityContext.stop);
109
+ startSyntheticsContext(assembleHook);
110
+ startRumAssembly(configuration, lifeCycle, hooks, reportError);
111
+ const { addTiming, setLoadingTime, startView, setViewName, setViewContext, setViewContextProperty, getViewContext, stop: stopViewCollection } = startViewCollection(lifeCycle, hooks, configuration, domMutationObservable, windowOpenObservable, locationChangeObservable, recorderApi, viewHistory, initialViewOptions);
112
+ startSourceCodeMfeContext(assembleHook);
113
+ cleanupTasks.push(stopViewCollection);
114
+ const resourceCollection = startResourceCollection(lifeCycle, configuration);
115
+ cleanupTasks.push(resourceCollection.stop);
116
+ const { stop: stopLongTaskCollection } = startLongTaskCollection(lifeCycle, configuration);
117
+ cleanupTasks.push(stopLongTaskCollection);
118
+ const { addError } = startErrorCollection(lifeCycle, bufferedDataObservable);
119
+ startRequestCollection(lifeCycle, configuration, sessionManager, userContext, accountContext, bufferedDataObservable);
120
+ const vitalCollection = startVitalCollection(lifeCycle, pageStateHistory);
121
+ if (configuration.trackResources && (configuration.betaTrackWebSockets || isExperimentalFeatureEnabled(ExperimentalFeature.TRACK_WEBSOCKETS))) {
122
+ const webSocketCollection = startWebSocketCollection(lifeCycle, viewHistory, vitalCollection.addDurationVital);
123
+ cleanupTasks.push(webSocketCollection.stop);
124
+ }
125
+ const internalContext = startInternalContext(configuration.applicationId, sessionManager, viewHistory, actionCollection.actionContexts, urlContexts);
126
+ return {
127
+ addAction: actionCollection.addAction,
128
+ startAction: actionCollection.startAction,
129
+ stopAction: actionCollection.stopAction,
130
+ startResource: resourceCollection.startResource,
131
+ stopResource: resourceCollection.stopResource,
132
+ addEvent: eventCollection.addEvent,
133
+ addError,
134
+ addTiming,
135
+ setLoadingTime,
136
+ addFeatureFlagEvaluation: featureFlagContexts.addFeatureFlagEvaluation,
137
+ startView,
138
+ setViewContext,
139
+ setViewContextProperty,
140
+ getViewContext,
141
+ setViewName,
142
+ viewHistory,
143
+ sessionManager,
144
+ stopSession: () => sessionManager.expire(),
145
+ getInternalContext: internalContext.get,
146
+ startDurationVital: vitalCollection.startDurationVital,
147
+ stopDurationVital: vitalCollection.stopDurationVital,
148
+ addDurationVital: vitalCollection.addDurationVital,
149
+ addOperationStepVital: vitalCollection.addOperationStepVital,
150
+ globalContext,
151
+ userContext,
152
+ accountContext,
153
+ stop: () => cleanupTasks.forEach((task) => task())
154
+ };
155
+ }
156
+ //#endregion
157
+ export { startRum, startRumEventCollection };
158
+
159
+ //# sourceMappingURL=startRum.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startRum.mjs","names":[],"sources":["../../src/boot/startRum.ts"],"sourcesContent":["import type {\n Observable,\n DeflateEncoderStreamId,\n Encoder,\n BufferedData,\n BufferedObservable,\n Telemetry,\n SessionManager,\n} from '@kubesense/kubesense-browser-core'\nimport {\n sendToExtension,\n createPageMayExitObservable,\n canUseEventBridge,\n addTelemetryDebug,\n startAccountContext,\n startGlobalContext,\n startUserContext,\n startTabContext,\n ErrorSource,\n DEFAULT_ERROR_TYPE,\n isExperimentalFeatureEnabled,\n ExperimentalFeature,\n getSessionEndClocks,\n} from '@kubesense/kubesense-browser-core'\nimport { clocksNow } from '@kubesense/kubesense-js-core/time'\nimport { createDOMMutationObservable } from '../browser/domMutationObservable'\nimport { createWindowOpenObservable } from '../browser/windowOpenObservable'\nimport { startInternalContext } from '../domain/contexts/internalContext'\nimport { LifeCycle, LifeCycleEventType } from '../domain/lifeCycle'\nimport { startViewHistory } from '../domain/contexts/viewHistory'\nimport { startRequestCollection } from '../domain/requestCollection'\nimport { startWebSocketCollection } from '../domain/resource/webSocketCollection'\nimport { startActionCollection } from '../domain/action/actionCollection'\nimport { startErrorCollection } from '../domain/error/errorCollection'\nimport { startResourceCollection } from '../domain/resource/resourceCollection'\nimport { startViewCollection } from '../domain/view/viewCollection'\nimport { startRumBatch } from '../transport/startRumBatch'\nimport { startRumEventBridge } from '../transport/startRumEventBridge'\nimport { startUrlContexts } from '../domain/contexts/urlContexts'\nimport { createLocationChangeObservable } from '../browser/locationChangeObservable'\nimport type { RumConfiguration } from '../domain/configuration'\nimport type { ViewOptions } from '../domain/view/trackViews'\nimport { startFeatureFlagContexts } from '../domain/contexts/featureFlagContext'\nimport { startCustomerDataTelemetry } from '../domain/startCustomerDataTelemetry'\nimport { startPageStateHistory } from '../domain/contexts/pageStateHistory'\nimport { startDisplayContext } from '../domain/contexts/displayContext'\nimport { startVitalCollection } from '../domain/vital/vitalCollection'\nimport { startCiVisibilityContext } from '../domain/contexts/ciVisibilityContext'\nimport { startLongTaskCollection } from '../domain/longTask/longTaskCollection'\nimport { startSyntheticsContext } from '../domain/contexts/syntheticsContext'\nimport { startRumAssembly } from '../domain/assembly'\nimport { startSessionContext } from '../domain/contexts/sessionContext'\nimport { startConnectivityContext } from '../domain/contexts/connectivityContext'\nimport { startUserAgentDataContext } from '../domain/contexts/userAgentDataContext'\nimport type { SdkName } from '../domain/contexts/defaultContext'\nimport { startDefaultContext } from '../domain/contexts/defaultContext'\nimport type { Hooks } from '../domain/hooks'\nimport { startEventCollection } from '../domain/event/eventCollection'\nimport { startSourceCodeMfeContext } from '../domain/contexts/sourceCodeMfeContext'\nimport type { RecorderApi, ProfilerApi } from './rumPublicApi'\n\nexport type StartRum = typeof startRum\nexport type StartRumResult = ReturnType<StartRum>\n\nexport function startRum(\n configuration: RumConfiguration,\n sessionManager: SessionManager,\n recorderApi: RecorderApi,\n profilerApi: ProfilerApi,\n initialViewOptions: ViewOptions | undefined,\n createEncoder: (streamId: DeflateEncoderStreamId) => Encoder,\n bufferedDataObservable: BufferedObservable<BufferedData>,\n telemetry: Telemetry,\n hooks: Hooks,\n sdkName?: SdkName\n) {\n const cleanupTasks: Array<() => void> = []\n const lifeCycle = new LifeCycle()\n\n lifeCycle.subscribe(LifeCycleEventType.RUM_EVENT_COLLECTED, (event) => sendToExtension('rum', event))\n\n // Dated to when the session ended rather than when this tab noticed: a hidden tab can learn of\n // a timeout long after it happened, and ending its views then would stretch the session past\n // SESSION_TIME_OUT_DELAY. The expiring session is still the active one while the observable\n // notifies (the history is closed after).\n sessionManager.expireObservable.subscribe(() =>\n lifeCycle.notify(LifeCycleEventType.SESSION_EXPIRED, {\n endClocks: getSessionEndClocks(sessionManager.findSession()),\n })\n )\n sessionManager.renewObservable.subscribe(() => lifeCycle.notify(LifeCycleEventType.SESSION_RENEWED))\n\n const reportError = (message: string) => {\n lifeCycle.notify(LifeCycleEventType.RAW_ERROR_COLLECTED, {\n error: { message, type: DEFAULT_ERROR_TYPE, source: ErrorSource.AGENT, startClocks: clocksNow() },\n })\n // monitor-until: forever, to keep an eye on the errors reported to customers\n addTelemetryDebug('Error reported to customer', { 'error.message': message })\n }\n\n if (!canUseEventBridge()) {\n const batch = startRumBatch(configuration, lifeCycle, reportError, sessionManager.expireObservable, createEncoder)\n const preparePageExitSubscription = batch.prepareUrgentFlushObservable.subscribe((reason) => {\n lifeCycle.notify(LifeCycleEventType.PREPARE_URGENT_FLUSH, reason)\n })\n cleanupTasks.push(() => preparePageExitSubscription.unsubscribe())\n cleanupTasks.push(() => batch.stop())\n startCustomerDataTelemetry(telemetry, lifeCycle, batch.flushObservable)\n } else {\n startRumEventBridge(lifeCycle)\n const pageMayExitObservable = createPageMayExitObservable()\n const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => {\n lifeCycle.notify(LifeCycleEventType.PREPARE_URGENT_FLUSH, event.reason)\n })\n cleanupTasks.push(() => pageMayExitSubscription.unsubscribe())\n }\n\n const { stop: stopRumEventCollection, ...startRumEventCollectionResult } = startRumEventCollection(\n lifeCycle,\n hooks,\n configuration,\n sessionManager,\n recorderApi,\n initialViewOptions,\n bufferedDataObservable,\n sdkName,\n reportError\n )\n cleanupTasks.push(stopRumEventCollection)\n bufferedDataObservable.unbuffer()\n\n // Add Clean-up tasks for Profiler API.\n cleanupTasks.push(() => profilerApi.stop())\n\n return {\n ...startRumEventCollectionResult,\n lifeCycle,\n sessionManager,\n stopSession: () => sessionManager.expire(),\n telemetry,\n stop: () => {\n cleanupTasks.forEach((task) => task())\n },\n hooks,\n }\n}\n\nexport function startRumEventCollection(\n lifeCycle: LifeCycle,\n hooks: Hooks,\n configuration: RumConfiguration,\n sessionManager: SessionManager,\n recorderApi: RecorderApi,\n initialViewOptions: ViewOptions | undefined,\n bufferedDataObservable: Observable<BufferedData>,\n sdkName: SdkName | undefined,\n reportError: (message: string) => void\n) {\n const cleanupTasks: Array<() => void> = []\n\n const domMutationObservable = createDOMMutationObservable()\n const locationChangeObservable = createLocationChangeObservable()\n const { observable: windowOpenObservable, stop: stopWindowOpen } = createWindowOpenObservable()\n cleanupTasks.push(stopWindowOpen)\n\n const { assembleEventDefaults: assembleHook } = hooks\n startDefaultContext(assembleHook, configuration, sdkName)\n const pageStateHistory = startPageStateHistory(assembleHook)\n cleanupTasks.push(() => pageStateHistory.stop())\n const viewHistory = startViewHistory(lifeCycle)\n cleanupTasks.push(() => viewHistory.stop())\n const urlContexts = startUrlContexts(lifeCycle, assembleHook, locationChangeObservable)\n cleanupTasks.push(() => urlContexts.stop())\n const featureFlagContexts = startFeatureFlagContexts(lifeCycle, assembleHook, configuration)\n startSessionContext(assembleHook, configuration, sessionManager, recorderApi, viewHistory)\n startConnectivityContext(assembleHook)\n startUserAgentDataContext(assembleHook)\n startTabContext(assembleHook)\n const globalContext = startGlobalContext(assembleHook, configuration, 'rum', true)\n const userContext = startUserContext(assembleHook, configuration, sessionManager, 'rum')\n const accountContext = startAccountContext(assembleHook, configuration, 'rum')\n\n const actionCollection = startActionCollection(\n lifeCycle,\n hooks,\n domMutationObservable,\n windowOpenObservable,\n configuration\n )\n cleanupTasks.push(actionCollection.stop)\n\n const eventCollection = startEventCollection(lifeCycle)\n\n const displayContext = startDisplayContext(assembleHook)\n cleanupTasks.push(displayContext.stop)\n const ciVisibilityContext = startCiVisibilityContext(assembleHook)\n cleanupTasks.push(ciVisibilityContext.stop)\n startSyntheticsContext(assembleHook)\n\n startRumAssembly(configuration, lifeCycle, hooks, reportError)\n\n const {\n addTiming,\n setLoadingTime,\n startView,\n setViewName,\n setViewContext,\n setViewContextProperty,\n getViewContext,\n stop: stopViewCollection,\n } = startViewCollection(\n lifeCycle,\n hooks,\n configuration,\n domMutationObservable,\n windowOpenObservable,\n locationChangeObservable,\n recorderApi,\n viewHistory,\n initialViewOptions\n )\n\n startSourceCodeMfeContext(assembleHook)\n\n cleanupTasks.push(stopViewCollection)\n\n const resourceCollection = startResourceCollection(lifeCycle, configuration)\n cleanupTasks.push(resourceCollection.stop)\n\n const { stop: stopLongTaskCollection } = startLongTaskCollection(lifeCycle, configuration)\n cleanupTasks.push(stopLongTaskCollection)\n\n const { addError } = startErrorCollection(lifeCycle, bufferedDataObservable)\n\n startRequestCollection(lifeCycle, configuration, sessionManager, userContext, accountContext, bufferedDataObservable)\n\n const vitalCollection = startVitalCollection(lifeCycle, pageStateHistory)\n\n if (\n configuration.trackResources &&\n (configuration.betaTrackWebSockets || isExperimentalFeatureEnabled(ExperimentalFeature.TRACK_WEBSOCKETS))\n ) {\n const webSocketCollection = startWebSocketCollection(lifeCycle, viewHistory, vitalCollection.addDurationVital)\n cleanupTasks.push(webSocketCollection.stop)\n }\n\n const internalContext = startInternalContext(\n configuration.applicationId,\n sessionManager,\n viewHistory,\n actionCollection.actionContexts,\n urlContexts\n )\n\n return {\n addAction: actionCollection.addAction,\n startAction: actionCollection.startAction,\n stopAction: actionCollection.stopAction,\n startResource: resourceCollection.startResource,\n stopResource: resourceCollection.stopResource,\n addEvent: eventCollection.addEvent,\n addError,\n addTiming,\n setLoadingTime,\n addFeatureFlagEvaluation: featureFlagContexts.addFeatureFlagEvaluation,\n startView,\n setViewContext,\n setViewContextProperty,\n getViewContext,\n setViewName,\n viewHistory,\n sessionManager,\n stopSession: () => sessionManager.expire(),\n getInternalContext: internalContext.get,\n startDurationVital: vitalCollection.startDurationVital,\n stopDurationVital: vitalCollection.stopDurationVital,\n addDurationVital: vitalCollection.addDurationVital,\n addOperationStepVital: vitalCollection.addOperationStepVital,\n globalContext,\n userContext,\n accountContext,\n stop: () => cleanupTasks.forEach((task) => task()),\n }\n}\n"],"mappings":"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"}