@kubesense/kubesense-browser-rum-core 1.7.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
@@ -1,218 +1,226 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.STABLE_ATTRIBUTES = void 0;
4
- exports.getSelectorFromElement = getSelectorFromElement;
5
- exports.isSelectorUniqueAmongSiblings = isSelectorUniqueAmongSiblings;
6
- const actionNameConstants_1 = require("./action/actionNameConstants");
1
+ const require_htmlDomUtils = require("../browser/htmlDomUtils.js");
2
+ const require_actionNameConstants = require("./action/actionNameConstants.js");
3
+ //#region src/domain/getSelectorFromElement.ts
4
+ /**
5
+ * Marker used to indicate shadow DOM boundaries in selectors.
6
+ * Named after the deprecated Shadow DOM v0 '::shadow' pseudo-element which served the same
7
+ * purpose of marking entry into a shadow root.
8
+ * Note: This is NOT a valid CSS selector, it's an internal marker that requires custom
9
+ * parsing logic.
10
+ */
11
+ const SHADOW_DOM_MARKER = "::shadow ";
7
12
  /**
8
- * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:
9
- * component). Those attribute values should not be generated randomly (hardcoded most of the time)
10
- * and stay the same across deploys. They are not necessarily unique across the document.
11
- */
12
- exports.STABLE_ATTRIBUTES = [
13
- actionNameConstants_1.DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,
14
- // Common test attributes (list provided by google recorder)
15
- 'data-testid',
16
- 'data-test',
17
- 'data-qa',
18
- 'data-cy',
19
- 'data-test-id',
20
- 'data-qa-id',
21
- 'data-testing',
22
- // FullStory decorator attributes:
23
- 'data-component',
24
- 'data-element',
25
- 'data-source-file',
13
+ * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:
14
+ * component). Those attribute values should not be generated randomly (hardcoded most of the time)
15
+ * and stay the same across deploys. They are not necessarily unique across the document.
16
+ */
17
+ const STABLE_ATTRIBUTES = [
18
+ require_actionNameConstants.DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,
19
+ "data-testid",
20
+ "data-test",
21
+ "data-qa",
22
+ "data-cy",
23
+ "data-test-id",
24
+ "data-qa-id",
25
+ "data-testing",
26
+ "data-component",
27
+ "data-element",
28
+ "data-source-file"
26
29
  ];
27
- // Selectors to use if they target a single element on the whole document. Those selectors are
28
- // considered as "stable" and uniquely identify an element regardless of the page state. If we find
29
- // one, we should consider the selector "complete" and stop iterating over ancestors.
30
30
  const GLOBALLY_UNIQUE_SELECTOR_GETTERS = [getStableAttributeSelector, getIDSelector];
31
- // Selectors to use if they target a single element among an element descendants. Those selectors
32
- // are more brittle than "globally unique" selectors and should be combined with ancestor selectors
33
- // to improve specificity.
34
31
  const UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS = [
35
- getStableAttributeSelector,
36
- getClassSelector,
37
- getTagNameSelector,
32
+ getStableAttributeSelector,
33
+ getClassSelector,
34
+ getTagNameSelector
38
35
  ];
39
36
  function getSelectorFromElement(targetElement, actionNameAttribute) {
40
- if (!targetElement.isConnected) {
41
- // We cannot compute a selector for a detached element, as we don't have access to all of its
42
- // parents, and we cannot determine if it's unique in the document.
43
- return;
44
- }
45
- let targetElementSelector;
46
- let currentElement = targetElement;
47
- while (currentElement && currentElement.nodeName !== 'HTML') {
48
- const globallyUniqueSelector = findSelector(currentElement, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueGlobally, actionNameAttribute, targetElementSelector);
49
- if (globallyUniqueSelector) {
50
- return globallyUniqueSelector;
51
- }
52
- const uniqueSelectorAmongChildren = findSelector(currentElement, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, targetElementSelector);
53
- targetElementSelector =
54
- uniqueSelectorAmongChildren || combineSelector(getPositionSelector(currentElement), targetElementSelector);
55
- currentElement = currentElement.parentElement;
56
- }
57
- return targetElementSelector;
37
+ if (!targetElement.isConnected) return;
38
+ const subtrees = getAllSubtreeTargets(targetElement);
39
+ const selectorParts = [];
40
+ for (const { rootNode, target } of subtrees) {
41
+ const selector = getSelectorFromElementWithinSubtree(target, rootNode, actionNameAttribute);
42
+ if (!selector) return;
43
+ selectorParts.push(selector);
44
+ }
45
+ return selectorParts.join(SHADOW_DOM_MARKER);
46
+ }
47
+ /**
48
+ * Returns all (rootNode, target) pairs from the document down to the element.
49
+ */
50
+ function getAllSubtreeTargets(element) {
51
+ const result = [];
52
+ let currentTarget = element;
53
+ while (currentTarget) {
54
+ const rootNode = currentTarget.getRootNode();
55
+ result.push({
56
+ rootNode,
57
+ target: currentTarget
58
+ });
59
+ if (require_htmlDomUtils.isNodeShadowRoot(rootNode)) currentTarget = rootNode.host;
60
+ else break;
61
+ }
62
+ return result.reverse();
63
+ }
64
+ /**
65
+ * Computes a CSS selector for an element within a specific subtree (document or shadow root).
66
+ */
67
+ function getSelectorFromElementWithinSubtree(targetElement, rootNode, actionNameAttribute) {
68
+ let currentSelector;
69
+ let currentElement = targetElement;
70
+ while (currentElement && currentElement.nodeName !== "HTML") {
71
+ const globallyUniqueSelector = findSelector(currentElement, rootNode, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueWithinRoot, actionNameAttribute, currentSelector);
72
+ if (globallyUniqueSelector) return combineSelector(globallyUniqueSelector, currentSelector);
73
+ currentSelector = combineSelector(findSelector(currentElement, rootNode, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, currentSelector) || getPositionSelector(currentElement), currentSelector);
74
+ currentElement = currentElement.parentElement;
75
+ }
76
+ return currentSelector;
58
77
  }
59
78
  function isGeneratedValue(value) {
60
- // To compute the "URL path group", the backend replaces every URL path parts as a question mark
61
- // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is
62
- // present.
63
- //
64
- // Here, we use the same strategy: if the value contains a digit, we consider it generated. This
65
- // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate
66
- // CSS selectors so it should be fine most of the time.
67
- return /[0-9]/.test(value);
79
+ return /[0-9]/.test(value);
68
80
  }
69
81
  function getIDSelector(element) {
70
- if (element.id && !isGeneratedValue(element.id)) {
71
- return `#${CSS.escape(element.id)}`;
72
- }
82
+ if (element.id && !isGeneratedValue(element.id)) return `#${CSS.escape(element.id)}`;
73
83
  }
74
84
  function getClassSelector(element) {
75
- if (element.tagName === 'BODY') {
76
- return;
77
- }
78
- const classList = element.classList;
79
- for (let i = 0; i < classList.length; i += 1) {
80
- const className = classList[i];
81
- if (isGeneratedValue(className)) {
82
- continue;
83
- }
84
- return `${CSS.escape(element.tagName)}.${CSS.escape(className)}`;
85
- }
85
+ if (element.tagName === "BODY") return;
86
+ const classList = element.classList;
87
+ for (let i = 0; i < classList.length; i += 1) {
88
+ const className = classList[i];
89
+ if (isGeneratedValue(className)) continue;
90
+ return `${CSS.escape(element.tagName)}.${CSS.escape(className)}`;
91
+ }
86
92
  }
87
93
  function getTagNameSelector(element) {
88
- return CSS.escape(element.tagName);
94
+ return CSS.escape(element.tagName);
89
95
  }
90
96
  function getStableAttributeSelector(element, actionNameAttribute) {
91
- if (actionNameAttribute) {
92
- const selector = getAttributeSelector(actionNameAttribute);
93
- if (selector) {
94
- return selector;
95
- }
96
- }
97
- for (const attributeName of exports.STABLE_ATTRIBUTES) {
98
- const selector = getAttributeSelector(attributeName);
99
- if (selector) {
100
- return selector;
101
- }
102
- }
103
- function getAttributeSelector(attributeName) {
104
- if (element.hasAttribute(attributeName)) {
105
- return `${CSS.escape(element.tagName)}[${attributeName}="${CSS.escape(element.getAttribute(attributeName))}"]`;
106
- }
107
- }
97
+ if (actionNameAttribute) {
98
+ const selector = getAttributeSelector(actionNameAttribute);
99
+ if (selector) return selector;
100
+ }
101
+ for (const attributeName of STABLE_ATTRIBUTES) {
102
+ const selector = getAttributeSelector(attributeName);
103
+ if (selector) return selector;
104
+ }
105
+ function getAttributeSelector(attributeName) {
106
+ if (element.hasAttribute(attributeName)) return `${CSS.escape(element.tagName)}${getAttributeValueSelector(attributeName, element.getAttribute(attributeName))}`;
107
+ }
108
+ }
109
+ function getAttributeValueSelector(attributeName, attributeValue) {
110
+ return `[${attributeName}="${CSS.escape(attributeValue)}"]`;
108
111
  }
109
112
  function getPositionSelector(element) {
110
- let sibling = element.parentElement.firstElementChild;
111
- let elementIndex = 1;
112
- while (sibling && sibling !== element) {
113
- if (sibling.tagName === element.tagName) {
114
- elementIndex += 1;
115
- }
116
- sibling = sibling.nextElementSibling;
117
- }
118
- return `${CSS.escape(element.tagName)}:nth-of-type(${elementIndex})`;
113
+ const nthOfType = getNthOfTypeSelector(element);
114
+ return `${CSS.escape(element.tagName)}:nth-of-type(${nthOfType})`;
115
+ }
116
+ function getNthOfTypeSelector(element) {
117
+ let sibling = element.parentNode.firstElementChild;
118
+ let nthOfType = 1;
119
+ while (sibling && sibling !== element) {
120
+ if (sibling.tagName === element.tagName) nthOfType += 1;
121
+ sibling = sibling.nextElementSibling;
122
+ }
123
+ return nthOfType;
119
124
  }
120
- function findSelector(element, selectorGetters, predicate, actionNameAttribute, childSelector) {
121
- for (const selectorGetter of selectorGetters) {
122
- const elementSelector = selectorGetter(element, actionNameAttribute);
123
- if (!elementSelector) {
124
- continue;
125
- }
126
- if (predicate(element, elementSelector, childSelector)) {
127
- return combineSelector(elementSelector, childSelector);
128
- }
129
- }
125
+ function findSelector(element, rootNode, selectorGetters, predicate, actionNameAttribute, childSelector) {
126
+ for (const selectorGetter of selectorGetters) {
127
+ const elementSelector = selectorGetter(element, actionNameAttribute);
128
+ if (!elementSelector) continue;
129
+ if (predicate(element, rootNode, elementSelector, childSelector)) return elementSelector;
130
+ }
130
131
  }
131
132
  /**
132
- * Check whether the selector is unique among the whole document.
133
- */
134
- function isSelectorUniqueGlobally(element, elementSelector, childSelector) {
135
- return element.ownerDocument.querySelectorAll(combineSelector(elementSelector, childSelector)).length === 1;
133
+ * Check whether the selector is unique within the root node (document or shadow root).
134
+ */
135
+ function isSelectorUniqueWithinRoot(_element, rootNode, elementSelector, childSelector) {
136
+ return rootNode.querySelectorAll(combineSelector(elementSelector, childSelector)).length === 1;
136
137
  }
137
138
  /**
138
- * Check whether the selector is unique among the element siblings. In other words, it returns true
139
- * if "ELEMENT_PARENT > CHILD_SELECTOR" returns a single element.
140
- *
141
- * @param {Element} currentElement - the element being considered while iterating over the target
142
- * element ancestors.
143
- *
144
- * @param {string} currentElementSelector - a selector that matches the current element. That
145
- * selector is not a composed selector (i.e. it might be a single tag name, class name...).
146
- *
147
- * @param {string|undefined} childSelector - child selector is a selector that targets a descendant
148
- * of the current element. When undefined, the current element is the target element.
149
- *
150
- * # Scope selector usage
151
- *
152
- * When composed together, the final selector will be joined with `>` operators to make sure we
153
- * target direct descendants at each level. In this function, we'll use `querySelector` to check if
154
- * a selector matches descendants of the current element. But by default, the query selector match
155
- * elements at any level. Example:
156
- *
157
- * ```html
158
- * <main>
159
- * <div>
160
- * <span></span>
161
- * </div>
162
- * <marquee>
163
- * <div>
164
- * <span></span>
165
- * </div>
166
- * </marquee>
167
- * </main>
168
- * ```
169
- *
170
- * `sibling.querySelector('DIV > SPAN')` will match both span elements, so we would consider the
171
- * selector to be not unique, even if it is unique when we'll compose it with the parent with a `>`
172
- * operator (`MAIN > DIV > SPAN`).
173
- *
174
- * To avoid this, we can use the `:scope` selector to make sure the selector starts from the current
175
- * sibling (i.e. `sibling.querySelector('DIV:scope > SPAN')` will only match the first span).
176
- *
177
- * [1]: https://developer.mozilla.org/fr/docs/Web/CSS/:scope
178
- *
179
- * # Performance considerations
180
- *
181
- * We compute selectors in performance-critical operations (ex: during a click), so we need to make
182
- * sure the function is as fast as possible. We observed that naively using `querySelectorAll` to
183
- * check if the selector matches more than 1 element is quite expensive, so we want to avoid it.
184
- *
185
- * Because we are iterating the DOM upward and we use that function at every level, we know the
186
- * child selector is already unique among the current element children, so we don't need to check
187
- * for the current element subtree.
188
- *
189
- * Instead, we can focus on the current element siblings. If we find a single element matching the
190
- * selector within a sibling, we know that it's not unique. This allows us to use `querySelector`
191
- * (or `matches`, when the current element is the target element) instead of `querySelectorAll`.
192
- */
193
- function isSelectorUniqueAmongSiblings(currentElement, currentElementSelector, childSelector) {
194
- let isSiblingMatching;
195
- if (childSelector === undefined) {
196
- // If the child selector is undefined (meaning `currentElement` is the target element, not one
197
- // of its ancestor), we need to use `matches` to check if the sibling is matching the selector,
198
- // as `querySelector` only returns a descendant of the element.
199
- isSiblingMatching = (sibling) => sibling.matches(currentElementSelector);
200
- }
201
- else {
202
- const scopedSelector = combineSelector(`${currentElementSelector}:scope`, childSelector);
203
- isSiblingMatching = (sibling) => sibling.querySelector(scopedSelector) !== null;
204
- }
205
- const parent = currentElement.parentElement;
206
- let sibling = parent.firstElementChild;
207
- while (sibling) {
208
- if (sibling !== currentElement && isSiblingMatching(sibling)) {
209
- return false;
210
- }
211
- sibling = sibling.nextElementSibling;
212
- }
213
- return true;
139
+ * Check whether the selector is unique among the element siblings. In other words, it returns true
140
+ * if "ELEMENT_PARENT > CHILD_SELECTOR" returns a single element.
141
+ *
142
+ * @param currentElement - the element being considered while iterating over the target
143
+ * element ancestors.
144
+ * @param _rootNode - the root node (document or shadow root) - unused but required for predicate signature.
145
+ * @param currentElementSelector - a selector that matches the current element. That
146
+ * selector is not a composed selector (i.e. it might be a single tag name, class name...).
147
+ * @param childSelector - child selector is a selector that targets a descendant
148
+ * of the current element. When undefined, the current element is the target element.
149
+ *
150
+ * # Scope selector usage
151
+ *
152
+ * When composed together, the final selector will be joined with `>` operators to make sure we
153
+ * target direct descendants at each level. In this function, we'll use `querySelector` to check if
154
+ * a selector matches descendants of the current element. But by default, the query selector match
155
+ * elements at any level. Example:
156
+ *
157
+ * ```html
158
+ * <main>
159
+ * <div>
160
+ * <span></span>
161
+ * </div>
162
+ * <marquee>
163
+ * <div>
164
+ * <span></span>
165
+ * </div>
166
+ * </marquee>
167
+ * </main>
168
+ * ```
169
+ *
170
+ * `sibling.querySelector('DIV > SPAN')` will match both span elements, so we would consider the
171
+ * selector to be not unique, even if it is unique when we'll compose it with the parent with a `>`
172
+ * operator (`MAIN > DIV > SPAN`).
173
+ *
174
+ * To avoid this, we can use the `:scope` selector to make sure the selector starts from the current
175
+ * sibling (i.e. `sibling.querySelector('DIV:scope > SPAN')` will only match the first span).
176
+ *
177
+ * [1]: https://developer.mozilla.org/fr/docs/Web/CSS/:scope
178
+ *
179
+ * # Performance considerations
180
+ *
181
+ * We compute selectors in performance-critical operations (ex: during a click), so we need to make
182
+ * sure the function is as fast as possible. We observed that naively using `querySelectorAll` to
183
+ * check if the selector matches more than 1 element is quite expensive, so we want to avoid it.
184
+ *
185
+ * Because we are iterating the DOM upward and we use that function at every level, we know the
186
+ * child selector is already unique among the current element children, so we don't need to check
187
+ * for the current element subtree.
188
+ *
189
+ * Instead, we can focus on the current element siblings. If we find a single element matching the
190
+ * selector within a sibling, we know that it's not unique. This allows us to use `querySelector`
191
+ * (or `matches`, when the current element is the target element) instead of `querySelectorAll`.
192
+ */
193
+ function isSelectorUniqueAmongSiblings(currentElement, _rootNode, currentElementSelector, childSelector) {
194
+ let isSiblingMatching;
195
+ if (childSelector === void 0) isSiblingMatching = (sibling) => sibling.matches(currentElementSelector);
196
+ else {
197
+ const scopedSelector = combineSelector(`${currentElementSelector}:scope`, childSelector);
198
+ isSiblingMatching = (sibling) => sibling.querySelector(scopedSelector) !== null;
199
+ }
200
+ let sibling = currentElement.previousElementSibling;
201
+ while (sibling) {
202
+ if (isSiblingMatching(sibling)) return false;
203
+ sibling = sibling.previousElementSibling;
204
+ }
205
+ sibling = currentElement.nextElementSibling;
206
+ while (sibling) {
207
+ if (isSiblingMatching(sibling)) return false;
208
+ sibling = sibling.nextElementSibling;
209
+ }
210
+ return true;
214
211
  }
215
212
  function combineSelector(parent, child) {
216
- return child ? `${parent}>${child}` : parent;
213
+ return child ? `${parent}>${child}` : parent;
217
214
  }
215
+ //#endregion
216
+ exports.SHADOW_DOM_MARKER = SHADOW_DOM_MARKER;
217
+ exports.STABLE_ATTRIBUTES = STABLE_ATTRIBUTES;
218
+ exports.getAttributeValueSelector = getAttributeValueSelector;
219
+ exports.getIDSelector = getIDSelector;
220
+ exports.getNthOfTypeSelector = getNthOfTypeSelector;
221
+ exports.getSelectorFromElement = getSelectorFromElement;
222
+ exports.getTagNameSelector = getTagNameSelector;
223
+ exports.isGeneratedValue = isGeneratedValue;
224
+ exports.isSelectorUniqueAmongSiblings = isSelectorUniqueAmongSiblings;
225
+
218
226
  //# sourceMappingURL=getSelectorFromElement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSelectorFromElement.js","sourceRoot":"","sources":["../../src/domain/getSelectorFromElement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getSelectorFromElement.js","names":["DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","isNodeShadowRoot"],"sources":["../../src/domain/getSelectorFromElement.ts"],"sourcesContent":["import { isNodeShadowRoot } from '../browser/htmlDomUtils'\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './action/actionNameConstants'\n\n/**\n * Marker used to indicate shadow DOM boundaries in selectors.\n * Named after the deprecated Shadow DOM v0 '::shadow' pseudo-element which served the same\n * purpose of marking entry into a shadow root.\n * Note: This is NOT a valid CSS selector, it's an internal marker that requires custom\n * parsing logic.\n */\nexport const SHADOW_DOM_MARKER = '::shadow '\n\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport const STABLE_ATTRIBUTES = [\n DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n // Common test attributes (list provided by google recorder)\n 'data-testid',\n 'data-test',\n 'data-qa',\n 'data-cy',\n 'data-test-id',\n 'data-qa-id',\n 'data-testing',\n // FullStory decorator attributes:\n 'data-component',\n 'data-element',\n 'data-source-file',\n]\n\ntype SelectorGetter = (element: Element, actionNameAttribute: string | undefined) => string | undefined\n\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nconst GLOBALLY_UNIQUE_SELECTOR_GETTERS: SelectorGetter[] = [getStableAttributeSelector, getIDSelector]\n\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nconst UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS: SelectorGetter[] = [\n getStableAttributeSelector,\n getClassSelector,\n getTagNameSelector,\n]\n\ninterface SubtreeTarget {\n rootNode: Document | ShadowRoot\n target: Element\n}\n\nexport function getSelectorFromElement(\n targetElement: Element,\n actionNameAttribute: string | undefined\n): string | undefined {\n if (!targetElement.isConnected) {\n // We cannot compute a selector for a detached element, as we don't have access to all of its\n // parents, and we cannot determine if it's unique in the document.\n return\n }\n\n const subtrees = getAllSubtreeTargets(targetElement)\n const selectorParts: string[] = []\n\n for (const { rootNode, target } of subtrees) {\n const selector = getSelectorFromElementWithinSubtree(target, rootNode, actionNameAttribute)\n if (!selector) {\n return undefined\n }\n selectorParts.push(selector)\n }\n\n return selectorParts.join(SHADOW_DOM_MARKER)\n}\n\n/**\n * Returns all (rootNode, target) pairs from the document down to the element.\n */\nfunction getAllSubtreeTargets(element: Element): SubtreeTarget[] {\n const result: SubtreeTarget[] = []\n let currentTarget: Element | undefined = element\n\n while (currentTarget) {\n const rootNode = currentTarget.getRootNode() as Document | ShadowRoot\n result.push({ rootNode, target: currentTarget })\n\n if (isNodeShadowRoot(rootNode)) {\n currentTarget = rootNode.host\n } else {\n break\n }\n }\n\n return result.reverse()\n}\n\n/**\n * Computes a CSS selector for an element within a specific subtree (document or shadow root).\n */\nfunction getSelectorFromElementWithinSubtree(\n targetElement: Element,\n rootNode: Document | ShadowRoot,\n actionNameAttribute: string | undefined\n): string | undefined {\n let currentSelector: string | undefined\n let currentElement: Element | null = targetElement\n\n while (currentElement && currentElement.nodeName !== 'HTML') {\n const globallyUniqueSelector = findSelector(\n currentElement,\n rootNode,\n GLOBALLY_UNIQUE_SELECTOR_GETTERS,\n isSelectorUniqueWithinRoot,\n actionNameAttribute,\n currentSelector\n )\n if (globallyUniqueSelector) {\n return combineSelector(globallyUniqueSelector, currentSelector)\n }\n\n const uniqueSelectorAmongChildren = findSelector(\n currentElement,\n rootNode,\n UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS,\n isSelectorUniqueAmongSiblings,\n actionNameAttribute,\n currentSelector\n )\n\n const elementSelector = uniqueSelectorAmongChildren || getPositionSelector(currentElement)\n currentSelector = combineSelector(elementSelector, currentSelector)\n\n currentElement = currentElement.parentElement\n }\n\n return currentSelector\n}\n\nexport function isGeneratedValue(value: string) {\n // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n // present.\n //\n // Here, we use the same strategy: if the value contains a digit, we consider it generated. This\n // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n // CSS selectors so it should be fine most of the time.\n return /[0-9]/.test(value)\n}\n\nexport function getIDSelector(element: Element): string | undefined {\n if (element.id && !isGeneratedValue(element.id)) {\n return `#${CSS.escape(element.id)}`\n }\n}\n\nfunction getClassSelector(element: Element): string | undefined {\n if (element.tagName === 'BODY') {\n return\n }\n const classList = element.classList\n for (let i = 0; i < classList.length; i += 1) {\n const className = classList[i]\n if (isGeneratedValue(className)) {\n continue\n }\n\n return `${CSS.escape(element.tagName)}.${CSS.escape(className)}`\n }\n}\n\nexport function getTagNameSelector(element: Element): string {\n return CSS.escape(element.tagName)\n}\n\nfunction getStableAttributeSelector(element: Element, actionNameAttribute: string | undefined): string | undefined {\n if (actionNameAttribute) {\n const selector = getAttributeSelector(actionNameAttribute)\n if (selector) {\n return selector\n }\n }\n\n for (const attributeName of STABLE_ATTRIBUTES) {\n const selector = getAttributeSelector(attributeName)\n if (selector) {\n return selector\n }\n }\n\n function getAttributeSelector(attributeName: string) {\n if (element.hasAttribute(attributeName)) {\n return `${CSS.escape(element.tagName)}${getAttributeValueSelector(attributeName, element.getAttribute(attributeName)!)}`\n }\n }\n}\n\nexport function getAttributeValueSelector(attributeName: string, attributeValue: string) {\n return `[${attributeName}=\"${CSS.escape(attributeValue)}\"]`\n}\n\nfunction getPositionSelector(element: Element): string {\n const nthOfType = getNthOfTypeSelector(element)\n\n return `${CSS.escape(element.tagName)}:nth-of-type(${nthOfType})`\n}\n\nexport function getNthOfTypeSelector(element: Element): number {\n const parent = element.parentNode!\n\n let sibling = parent.firstElementChild\n\n let nthOfType = 1\n\n while (sibling && sibling !== element) {\n if (sibling.tagName === element.tagName) {\n nthOfType += 1\n }\n sibling = sibling.nextElementSibling\n }\n\n return nthOfType\n}\n\nfunction findSelector(\n element: Element,\n rootNode: Document | ShadowRoot,\n selectorGetters: SelectorGetter[],\n predicate: (\n element: Element,\n rootNode: Document | ShadowRoot,\n elementSelector: string,\n childSelector: string | undefined\n ) => boolean,\n actionNameAttribute: string | undefined,\n childSelector: string | undefined\n) {\n for (const selectorGetter of selectorGetters) {\n const elementSelector = selectorGetter(element, actionNameAttribute)\n if (!elementSelector) {\n continue\n }\n if (predicate(element, rootNode, elementSelector, childSelector)) {\n return elementSelector\n }\n }\n}\n\n/**\n * Check whether the selector is unique within the root node (document or shadow root).\n */\nfunction isSelectorUniqueWithinRoot(\n _element: Element,\n rootNode: Document | ShadowRoot,\n elementSelector: string,\n childSelector: string | undefined\n): boolean {\n return rootNode.querySelectorAll(combineSelector(elementSelector, childSelector)).length === 1\n}\n\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > CHILD_SELECTOR\" returns a single element.\n *\n * @param currentElement - the element being considered while iterating over the target\n * element ancestors.\n * @param _rootNode - the root node (document or shadow root) - unused but required for predicate signature.\n * @param currentElementSelector - a selector that matches the current element. That\n * selector is not a composed selector (i.e. it might be a single tag name, class name...).\n * @param childSelector - child selector is a selector that targets a descendant\n * of the current element. When undefined, the current element is the target element.\n *\n * # Scope selector usage\n *\n * When composed together, the final selector will be joined with `>` operators to make sure we\n * target direct descendants at each level. In this function, we'll use `querySelector` to check if\n * a selector matches descendants of the current element. But by default, the query selector match\n * elements at any level. Example:\n *\n * ```html\n * <main>\n * <div>\n * <span></span>\n * </div>\n * <marquee>\n * <div>\n * <span></span>\n * </div>\n * </marquee>\n * </main>\n * ```\n *\n * `sibling.querySelector('DIV > SPAN')` will match both span elements, so we would consider the\n * selector to be not unique, even if it is unique when we'll compose it with the parent with a `>`\n * operator (`MAIN > DIV > SPAN`).\n *\n * To avoid this, we can use the `:scope` selector to make sure the selector starts from the current\n * sibling (i.e. `sibling.querySelector('DIV:scope > SPAN')` will only match the first span).\n *\n * [1]: https://developer.mozilla.org/fr/docs/Web/CSS/:scope\n *\n * # Performance considerations\n *\n * We compute selectors in performance-critical operations (ex: during a click), so we need to make\n * sure the function is as fast as possible. We observed that naively using `querySelectorAll` to\n * check if the selector matches more than 1 element is quite expensive, so we want to avoid it.\n *\n * Because we are iterating the DOM upward and we use that function at every level, we know the\n * child selector is already unique among the current element children, so we don't need to check\n * for the current element subtree.\n *\n * Instead, we can focus on the current element siblings. If we find a single element matching the\n * selector within a sibling, we know that it's not unique. This allows us to use `querySelector`\n * (or `matches`, when the current element is the target element) instead of `querySelectorAll`.\n */\nexport function isSelectorUniqueAmongSiblings(\n currentElement: Element,\n _rootNode: Document | ShadowRoot,\n currentElementSelector: string,\n childSelector: string | undefined\n): boolean {\n let isSiblingMatching: (sibling: Element) => boolean\n\n if (childSelector === undefined) {\n // If the child selector is undefined (meaning `currentElement` is the target element, not one\n // of its ancestor), we need to use `matches` to check if the sibling is matching the selector,\n // as `querySelector` only returns a descendant of the element.\n isSiblingMatching = (sibling) => sibling.matches(currentElementSelector)\n } else {\n const scopedSelector = combineSelector(`${currentElementSelector}:scope`, childSelector)\n isSiblingMatching = (sibling) => sibling.querySelector(scopedSelector) !== null\n }\n\n // Check siblings by iterating directly through previousElementSibling and nextElementSibling.\n // This works even when parentElement is null (e.g., when parent is a DocumentFragment).\n\n // Check previous siblings\n let sibling = currentElement.previousElementSibling\n while (sibling) {\n if (isSiblingMatching(sibling)) {\n return false\n }\n sibling = sibling.previousElementSibling\n }\n\n // Check next siblings\n sibling = currentElement.nextElementSibling\n while (sibling) {\n if (isSiblingMatching(sibling)) {\n return false\n }\n sibling = sibling.nextElementSibling\n }\n\n return true\n}\n\nfunction combineSelector(parent: string, child: string | undefined): string {\n return child ? `${parent}>${child}` : parent\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
+ import type { SessionContext } from '@kubesense/kubesense-browser-core';
1
2
  import type { RumConfiguration } from './configuration';
2
3
  import type { ViewHistoryEntry } from './contexts/viewHistory';
3
- import type { RumSession } from './rumSessionManager';
4
4
  export declare function getSessionReplayUrl(configuration: RumConfiguration, { session, viewContext, errorType, }: {
5
- session?: RumSession;
5
+ session?: SessionContext;
6
6
  viewContext?: ViewHistoryEntry;
7
7
  errorType?: string;
8
8
  }): string;
@@ -1,34 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSessionReplayUrl = getSessionReplayUrl;
4
- exports.getKubeSenseSiteUrl = getKubeSenseSiteUrl;
5
- const kubesense_browser_core_1 = require("@kubesense/kubesense-browser-core");
6
- function getSessionReplayUrl(configuration, { session, viewContext, errorType, }) {
7
- const sessionId = session ? session.id : 'no-session-id';
8
- const parameters = [];
9
- if (errorType !== undefined) {
10
- parameters.push(`error-type=${errorType}`);
11
- }
12
- if (viewContext) {
13
- parameters.push(`seed=${viewContext.id}`);
14
- parameters.push(`from=${viewContext.startClocks.timeStamp}`);
15
- }
16
- const origin = getKubeSenseSiteUrl(configuration);
17
- const path = `/rum/replay/sessions/${sessionId}`;
18
- return `${origin}${path}?${parameters.join('&')}`;
1
+ //#region src/domain/getSessionReplayUrl.ts
2
+ function getSessionReplayUrl(configuration, { session, viewContext, errorType }) {
3
+ const sessionId = session ? session.id : "no-session-id";
4
+ const parameters = [];
5
+ if (errorType !== void 0) parameters.push(`error-type=${errorType}`);
6
+ if (viewContext) {
7
+ parameters.push(`seed=${viewContext.id}`);
8
+ parameters.push(`from=${viewContext.startClocks.timeStamp}`);
9
+ }
10
+ return `${getKubeSenseSiteUrl(configuration)}${`/rum/replay/sessions/${sessionId}`}?${parameters.join("&")}`;
19
11
  }
20
12
  function getKubeSenseSiteUrl(rumConfiguration) {
21
- const site = rumConfiguration.kubesenseRumEndpoint;
22
- const subdomain = rumConfiguration.subdomain;
23
- return `https://${subdomain ? `${subdomain}.` : ''}${site}`;
24
- }
25
- function getSiteDefaultSubdomain(configuration) {
26
- switch (configuration.kubesenseRumEndpoint) {
27
- case kubesense_browser_core_1.INTAKE_SITE_PROD:
28
- case kubesense_browser_core_1.INTAKE_SITE_STAGING:
29
- return 'staging';
30
- default:
31
- return undefined;
32
- }
13
+ const site = rumConfiguration.kubesenseRumEndpoint;
14
+ const subdomain = rumConfiguration.subdomain;
15
+ return `https://${subdomain ? `${subdomain}.` : ""}${site}`;
33
16
  }
17
+ //#endregion
18
+ exports.getKubeSenseSiteUrl = getKubeSenseSiteUrl;
19
+ exports.getSessionReplayUrl = getSessionReplayUrl;
20
+
34
21
  //# sourceMappingURL=getSessionReplayUrl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSessionReplayUrl.js","sourceRoot":"","sources":["../../src/domain/getSessionReplayUrl.ts"],"names":[],"mappings":";;AAKA,kDAyBC;AAED,kDAIC;AApCD,8EAAyF;AAKzF,SAAgB,mBAAmB,CACjC,aAA+B,EAC/B,EACE,OAAO,EACP,WAAW,EACX,SAAS,GAKV;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAA;IACxD,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC,cAAc,SAAS,EAAE,CAAC,CAAA;IAC5C,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC,QAAQ,WAAW,CAAC,EAAE,EAAE,CAAC,CAAA;QACzC,UAAU,CAAC,IAAI,CAAC,QAAQ,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAA;IACjD,MAAM,IAAI,GAAG,wBAAwB,SAAS,EAAE,CAAA;IAChD,OAAO,GAAG,MAAM,GAAG,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;AACnD,CAAC;AAED,SAAgB,mBAAmB,CAAC,gBAAkC;IACpE,MAAM,IAAI,GAAG,gBAAgB,CAAC,oBAAoB,CAAA;IAClD,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAA;IAC5C,OAAO,WAAW,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAA;AAC7D,CAAC;AAED,SAAS,uBAAuB,CAAC,aAA+B;IAC9D,QAAQ,aAAa,CAAC,oBAAoB,EAAE,CAAC;QAC3C,KAAK,yCAAgB,CAAC;QACtB,KAAK,4CAAmB;YACtB,OAAO,SAAS,CAAA;QAClB;YACE,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"getSessionReplayUrl.js","names":[],"sources":["../../src/domain/getSessionReplayUrl.ts"],"sourcesContent":["import type { SessionContext } from '@kubesense/kubesense-browser-core'\nimport type { RumConfiguration } from './configuration'\nimport type { ViewHistoryEntry } from './contexts/viewHistory'\n\nexport function getSessionReplayUrl(\n configuration: RumConfiguration,\n {\n session,\n viewContext,\n errorType,\n }: {\n session?: SessionContext\n viewContext?: ViewHistoryEntry\n errorType?: string\n }\n): string {\n const sessionId = session ? session.id : 'no-session-id'\n const parameters: string[] = []\n if (errorType !== undefined) {\n parameters.push(`error-type=${errorType}`)\n }\n if (viewContext) {\n parameters.push(`seed=${viewContext.id}`)\n parameters.push(`from=${viewContext.startClocks.timeStamp}`)\n }\n\n const origin = getKubeSenseSiteUrl(configuration)\n const path = `/rum/replay/sessions/${sessionId}`\n return `${origin}${path}?${parameters.join('&')}`\n}\n\nexport function getKubeSenseSiteUrl(rumConfiguration: RumConfiguration) {\n // KubeSense installations address the collector host directly, so there is no per-site default\n // subdomain to derive: only an explicitly configured `subdomain` is prepended.\n const site = rumConfiguration.kubesenseRumEndpoint\n const subdomain = rumConfiguration.subdomain\n return `https://${subdomain ? `${subdomain}.` : ''}${site}`\n}\n"],"mappings":";AAIA,SAAgB,oBACd,eACA,EACE,SACA,aACA,aAMM;CACR,MAAM,YAAY,UAAU,QAAQ,KAAK;CACzC,MAAM,aAAuB,CAAC;CAC9B,IAAI,cAAc,KAAA,GAChB,WAAW,KAAK,cAAc,WAAW;CAE3C,IAAI,aAAa;EACf,WAAW,KAAK,QAAQ,YAAY,IAAI;EACxC,WAAW,KAAK,QAAQ,YAAY,YAAY,WAAW;CAC7D;CAIA,OAAO,GAFQ,oBAAoB,aAEpB,IAAI,wBADkB,YACb,GAAG,WAAW,KAAK,GAAG;AAChD;AAEA,SAAgB,oBAAoB,kBAAoC;CAGtE,MAAM,OAAO,iBAAiB;CAC9B,MAAM,YAAY,iBAAiB;CACnC,OAAO,WAAW,YAAY,GAAG,UAAU,KAAK,KAAK;AACvD"}
@@ -1,23 +1,32 @@
1
- import type { DISCARDED, Duration, HookNamesAsConst, RecursivePartial, RelativeTime, SKIPPED, TelemetryEvent } from '@kubesense/kubesense-browser-core';
1
+ import type { Duration, RelativeTime } from '@kubesense/kubesense-js-core/time';
2
+ import type { TelemetryEvent } from '@kubesense/kubesense-browser-core';
3
+ import type { Hook } from '@kubesense/kubesense-js-core/assembly';
4
+ import type { RecursivePartial } from '@kubesense/kubesense-js-core/util';
2
5
  import type { RumEvent } from '../rumEvent.types';
6
+ import type { RawRumEvent } from '../rawRumEvent.types';
7
+ import type { RumEventDomainContext } from '../domainContext.types';
3
8
  export type DefaultRumEventAttributes = RecursivePartial<RumEvent> & {
4
9
  type: RumEvent['type'];
5
10
  };
6
11
  export type DefaultTelemetryEventAttributes = RecursivePartial<TelemetryEvent>;
7
- export interface HookCallbackMap {
8
- [HookNamesAsConst.ASSEMBLE]: (param: {
9
- eventType: RumEvent['type'];
10
- startTime: RelativeTime;
11
- duration?: Duration | undefined;
12
- }) => DefaultRumEventAttributes | SKIPPED | DISCARDED;
13
- [HookNamesAsConst.ASSEMBLE_TELEMETRY]: (param: {
14
- startTime: RelativeTime;
15
- }) => DefaultTelemetryEventAttributes | SKIPPED | DISCARDED;
16
- }
17
- export type Hooks = ReturnType<typeof createHooks>;
18
- export declare const createHooks: () => {
19
- register<K extends import("@kubesense/kubesense-browser-core").HookNames>(hookName: K, callback: HookCallbackMap[K]): {
20
- unregister: () => void;
21
- };
22
- triggerHook<K extends import("@kubesense/kubesense-browser-core").HookNames>(hookName: K, param: Parameters<HookCallbackMap[K]>[0]): "DISCARDED" | Exclude<ReturnType<HookCallbackMap[K]>, "SKIPPED"> | undefined;
12
+ type DeepReadonly<T> = {
13
+ readonly [K in keyof T]: DeepReadonly<T[K]>;
23
14
  };
15
+ export interface AssembleHookParams {
16
+ readonly eventType: RumEvent['type'];
17
+ rawRumEvent: DeepReadonly<RawRumEvent>;
18
+ domainContext: DeepReadonly<RumEventDomainContext<RawRumEvent['type']>>;
19
+ readonly startTime: RelativeTime;
20
+ readonly duration?: Duration | undefined;
21
+ }
22
+ export type AssembleHook = Hook<AssembleHookParams, DefaultRumEventAttributes>;
23
+ export type AssembleTelemetryHook = Hook<{
24
+ startTime: RelativeTime;
25
+ }, DefaultTelemetryEventAttributes>;
26
+ export interface Hooks {
27
+ assembleEventDefaults: AssembleHook;
28
+ assembleTelemetry: AssembleTelemetryHook;
29
+ assembleEvent: AssembleHook;
30
+ }
31
+ export declare function createHooks(): Hooks;
32
+ export {};
@@ -1,6 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createHooks = void 0;
4
- const kubesense_browser_core_1 = require("@kubesense/kubesense-browser-core");
5
- exports.createHooks = (kubesense_browser_core_1.abstractHooks);
1
+ let _kubesense_kubesense_js_core_assembly = require("@kubesense/kubesense-js-core/assembly");
2
+ //#region src/domain/hooks.ts
3
+ function createHooks() {
4
+ return {
5
+ assembleEventDefaults: (0, _kubesense_kubesense_js_core_assembly.createHook)(),
6
+ assembleTelemetry: (0, _kubesense_kubesense_js_core_assembly.createHook)(),
7
+ assembleEvent: (0, _kubesense_kubesense_js_core_assembly.createHook)()
8
+ };
9
+ }
10
+ //#endregion
11
+ exports.createHooks = createHooks;
12
+
6
13
  //# sourceMappingURL=hooks.js.map