@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,27 +1,51 @@
1
- import type { Configuration, InitConfiguration, MatchOption, RawTelemetryConfiguration } from '@kubesense/kubesense-browser-core'
1
+ import type { InitConfiguration, RawTelemetryConfiguration } from '@kubesense/kubesense-browser-core'
2
2
  import {
3
- getType,
4
- isMatchOption,
3
+ canUseEventBridge,
4
+ catchUserErrors,
5
5
  serializeConfiguration,
6
6
  DefaultPrivacyLevel,
7
7
  TraceContextInjection,
8
8
  display,
9
- objectHasValue,
10
- validateAndBuildConfiguration,
11
- isSampleRate,
12
9
  isNumber,
13
10
  isNonEmptyArray,
11
+ BROWSER_CORE_SCHEMA,
14
12
  } from '@kubesense/kubesense-browser-core'
13
+ import { isIndexableObject, isMatchOption } from '@kubesense/kubesense-js-core/util'
14
+ import { validateAndBuildConfiguration } from '@kubesense/kubesense-js-core/configuration'
15
+ import type { InferredConfig, MatchOption } from '@kubesense/kubesense-js-core/configuration'
15
16
  import type { RumEventDomainContext } from '../../domainContext.types'
16
17
  import type { RumEvent } from '../../rumEvent.types'
18
+ import type { SdkName } from '../contexts/defaultContext'
17
19
  import type { RumPlugin } from '../plugins'
18
- import { isTracingOption } from '../tracing/tracer'
19
20
  import type { PropagatorType, TracingOption } from '../tracing/tracer.types'
21
+ import { getRemoteConfigurationId } from './remoteConfiguration'
22
+ import type { RemoteConfigurationMetadata } from './remoteConfigurationCache'
20
23
  import type { SessionReplayRoutes } from './sessionReplayRoutes'
21
- import { validateSessionReplayRoutes } from './sessionReplayRoutes'
24
+
25
+ // replaced at build time
26
+ declare const __BUILD_ENV__SDK_SETUP__: string
22
27
 
23
28
  export const DEFAULT_PROPAGATOR_TYPES: PropagatorType[] = ['tracecontext', 'kubesense']
24
29
 
30
+ /**
31
+ * Default list of headers collected on resource events when {@link RumInitConfiguration.trackResourceHeaders | trackResourceHeaders}
32
+ * is set to `true`.
33
+ */
34
+ export const DEFAULT_TRACKED_RESOURCE_HEADERS = [
35
+ 'cache-control',
36
+ 'etag',
37
+ 'age',
38
+ 'expires',
39
+ 'content-type',
40
+ 'content-encoding',
41
+ 'vary',
42
+ 'content-length',
43
+ 'server-timing',
44
+ 'x-cache',
45
+ 'cf-cache-status',
46
+ 'x-vercel-cache',
47
+ ] as const
48
+
25
49
  /**
26
50
  * Init Configuration for the RUM browser SDK.
27
51
  *
@@ -33,6 +57,7 @@ export const DEFAULT_PROPAGATOR_TYPES: PropagatorType[] = ['tracecontext', 'kube
33
57
  * kubesenseSdk.init({
34
58
  * applicationId: '<KUBESENSE_APPLICATION_ID>',
35
59
  * clientToken: '<KUBESENSE_CLIENT_TOKEN>',
60
+ * kubesenseRumEndpoint: '<KUBESENSE_RUM_ENDPOINT>',
36
61
  * // ...
37
62
  * })
38
63
  * ```
@@ -41,6 +66,7 @@ export const DEFAULT_PROPAGATOR_TYPES: PropagatorType[] = ['tracecontext', 'kube
41
66
  * KUBESENSE_SDK.init({
42
67
  * applicationId: '<KUBESENSE_APPLICATION_ID>',
43
68
  * clientToken: '<KUBESENSE_CLIENT_TOKEN>',
69
+ * kubesenseRumEndpoint: '<KUBESENSE_RUM_ENDPOINT>',
44
70
  * ...
45
71
  * })
46
72
  * ```
@@ -54,11 +80,21 @@ export interface RumInitConfiguration extends InitConfiguration {
54
80
  */
55
81
  applicationId: string
56
82
 
83
+ /**
84
+ * The service name for your application. Follows the [tag syntax requirements](https://docs.kubesense.ai/getting_started/tagging/#define-tags).
85
+ *
86
+ * `allowedTracingUrls` still requires an explicitly configured service.
87
+ *
88
+ * @category Data Collection
89
+ * @defaultValue the `applicationId`
90
+ */
91
+ service?: string | undefined | null
92
+
57
93
  /**
58
94
  * Whether to propagate user and account IDs in the baggage header of trace requests.
59
95
  *
60
96
  * @category Tracing
61
- * @defaultValue false
97
+ * @defaultValue true
62
98
  */
63
99
  propagateTraceBaggage?: boolean | undefined
64
100
 
@@ -72,11 +108,8 @@ export interface RumInitConfiguration extends InitConfiguration {
72
108
  * See [Enrich And Control Browser RUM Data With beforeSend](https://docs.kubesense.ai/real_user_monitoring/guide/enrich-and-control-rum-data) for further information.
73
109
  *
74
110
  * @category Data Collection
75
- * @param event - The RUM event
76
- * @param context - The RUM event domain context providing access to native browser data based on the event type (e.g. error, performance entry).
77
- * @returns true if the event should be sent to Kubesense, false otherwise
78
111
  */
79
- beforeSend?: ((event: RumEvent, context: RumEventDomainContext) => boolean) | undefined
112
+ beforeSend?: RumBeforeSend | undefined
80
113
 
81
114
  /**
82
115
  * A list of request origins ignored when computing the page activity.
@@ -85,7 +118,7 @@ export interface RumInitConfiguration extends InitConfiguration {
85
118
  excludedActivityUrls?: MatchOption[] | undefined
86
119
 
87
120
  /**
88
- * URL pointing to the Kubesense Browser SDK Worker JavaScript file. The URL can be relative or absolute, but is required to have the same origin as the web application.
121
+ * URL pointing to the KubeSense Browser SDK Worker JavaScript file. The URL can be relative or absolute, but is required to have the same origin as the web application.
89
122
  * See [Content Security Policy guidelines](https://docs.kubesense.ai/integrations/content_security_policy_logs/?tab=firefox#use-csp-with-real-user-monitoring-and-session-replay) for further information.
90
123
  *
91
124
  * @category Transport
@@ -93,7 +126,7 @@ export interface RumInitConfiguration extends InitConfiguration {
93
126
  workerUrl?: string
94
127
 
95
128
  /**
96
- * Compress requests sent to the Kubesense intake to reduce bandwidth usage when sending large amounts of data. The compression is done in a Worker thread.
129
+ * Compress requests sent to the KubeSense intake to reduce bandwidth usage when sending large amounts of data. The compression is done in a Worker thread.
97
130
  * See [Content Security Policy guidelines](https://docs.kubesense.ai/integrations/content_security_policy_logs/?tab=firefox#use-csp-with-real-user-monitoring-and-session-replay) for further information.
98
131
  *
99
132
  * @category Transport
@@ -101,12 +134,25 @@ export interface RumInitConfiguration extends InitConfiguration {
101
134
  compressIntakeRequests?: boolean | undefined
102
135
 
103
136
  /**
104
- * [Internal option] Id of the remote configuration
137
+ * [Internal option] Id of the remote configuration.
138
+ * Prefer `remoteConfiguration.id` for the non-blocking cache-and-reload path.
105
139
  *
106
140
  * @internal
107
141
  */
108
142
  remoteConfigurationId?: string | undefined
109
143
 
144
+ /**
145
+ * [Internal option] Remote configuration descriptor. By default the SDK reads a cached
146
+ * configuration synchronously and refreshes it in the background. Set `sync: true` to fall back
147
+ * to the legacy blocking fetch. Set `required: true` to prevent the SDK from starting on the
148
+ * current page load when the remote configuration cache is empty or unreadable (the background
149
+ * fetch still runs to populate the cache for the next load). Ignored when `sync: true` is set
150
+ * or when the legacy `remoteConfigurationId` field is used.
151
+ *
152
+ * @internal
153
+ */
154
+ remoteConfiguration?: { id: string; sync?: boolean; required?: boolean } | undefined
155
+
110
156
  /**
111
157
  * [Internal option] set a proxy URL for the remote configuration
112
158
  *
@@ -115,17 +161,47 @@ export interface RumInitConfiguration extends InitConfiguration {
115
161
  remoteConfigurationProxy?: string | undefined
116
162
 
117
163
  /**
118
- * Enable dashboard-managed SDK settings served by the Kubesense collector.
164
+ * Enable dashboard-managed SDK settings served by the KubeSense collector.
119
165
  *
120
166
  * The configuration document is fetched asynchronously after the SDK starts and cached in
121
167
  * local storage, so it never delays initialization. Cached settings are applied on the next
122
168
  * page load. Local `init()` values are used until a document has been fetched, and any
123
169
  * setting absent from the document keeps its local value.
124
170
  *
171
+ * @category Data Collection
125
172
  * @defaultValue false
126
173
  */
127
174
  enableRemoteSdkConfiguration?: boolean | undefined
128
175
 
176
+ /**
177
+ * Restrict Session Replay recording to specific routes.
178
+ *
179
+ * Recording starts and stops as the user navigates: it runs only while the current route
180
+ * matches `include` (when provided) and does not match `exclude`. Rules are matched against
181
+ * the path (`pathname` + `search` + `hash`), and string entries match by prefix, so
182
+ * `/checkout` also covers `/checkout/payment`.
183
+ *
184
+ * These rules only narrow recording — a session that was not sampled in by
185
+ * `sessionReplaySampleRate` is never recorded, whatever the routes say.
186
+ *
187
+ * @category Session Replay
188
+ * @example
189
+ * ```ts
190
+ * sessionReplayRoutes: { include: ['/checkout', '/signup'], exclude: ['/checkout/card'] }
191
+ * ```
192
+ */
193
+ sessionReplayRoutes?: SessionReplayRoutes | undefined
194
+
195
+ /**
196
+ * A list of domains to treat as first-party in resource provider classification.
197
+ * Accepts strings (exact hostname match), RegExp, or functions.
198
+ * The current page hostname is always treated as first-party.
199
+ *
200
+ * @category Data Collection
201
+ * @example ['api.myapp.com', /\.myapp\.com$/, (host) => host.endsWith('.internal')]
202
+ */
203
+ firstPartyDomains?: MatchOption[] | undefined
204
+
129
205
  // tracing options
130
206
  /**
131
207
  * A list of request URLs used to inject tracing headers.
@@ -133,13 +209,15 @@ export interface RumInitConfiguration extends InitConfiguration {
133
209
  *
134
210
  * @category Tracing
135
211
  */
136
- allowedTracingUrls?: Array<MatchOption | TracingOption> | undefined
212
+ allowedTracingUrls?:
213
+ Array<MatchOption | { match: MatchOption; propagatorTypes?: PropagatorType[] | null | undefined }> | undefined
137
214
 
138
215
  /**
139
216
  * The percentage of requests to trace: 100 for all, 0 for none.
140
217
  * See [Connect RUM and Traces](https://docs.kubesense.ai/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.
141
218
  *
142
219
  * @category Tracing
220
+ * @defaultValue 100
143
221
  */
144
222
  traceSampleRate?: number | undefined
145
223
  /**
@@ -159,65 +237,99 @@ export interface RumInitConfiguration extends InitConfiguration {
159
237
  * See [Replay Privacy Options](https://docs.kubesense.ai/real_user_monitoring/session_replay/browser/privacy_options) for further information.
160
238
  *
161
239
  * @category Privacy
162
- * @defaultValue mask
240
+ * @defaultValue mask-user-input
163
241
  */
164
242
  defaultPrivacyLevel?: DefaultPrivacyLevel | undefined
165
243
 
166
244
  /**
167
- * If you are accessing Kubesense through a custom subdomain, you can set `subdomain` to include your custom domain in the `getSessionReplayLink()` returned URL .
245
+ * If you are accessing KubeSense through a custom subdomain, you can set `subdomain` to include your custom domain in the `getSessionReplayLink()` returned URL .
168
246
  *
169
247
  * See [Connect Session Replay To Your Third-Party Tools](https://docs.kubesense.ai/real_user_monitoring/guide/connect-session-replay-to-your-third-party-tools) for further information.
170
248
  *
249
+ * @category Session Replay
171
250
  */
172
251
  subdomain?: string
173
252
 
174
253
  /**
175
- * The percentage of tracked sessions with [Browser RUM & Session Replay pricing](https://www.kubesense.ai/pricing/?product=real-user-monitoring--session-replay#real-user-monitoring--session-replay) features: 100 for all, 0 for none.
254
+ * The percentage of tracked sessions with [Browser RUM & Session Replay pricing](https://rum.kubesense.ai/pricing/?product=real-user-monitoring--session-replay#real-user-monitoring--session-replay) features: 100 for all, 0 for none.
176
255
  *
177
256
  * See [Configure Your Setup For Browser RUM and Browser RUM & Session Replay Sampling](https://docs.kubesense.ai/real_user_monitoring/guide/sampling-browser-plans) for further information.
178
257
  *
179
258
  * @category Session Replay
259
+ * @defaultValue 0
180
260
  */
181
261
  sessionReplaySampleRate?: number | undefined
182
262
 
183
263
  /**
184
- * If the session is sampled for Session Replay, only start the recording when `startSessionReplayRecording()` is called, instead of at the beginning of the session. Default: if startSessionReplayRecording is 0, true; otherwise, false.
264
+ * If the session is sampled for Session Replay, only start the recording when `startSessionReplayRecording()` is called, instead of at the beginning of the session.
185
265
  *
186
266
  * See [Session Replay Usage](https://docs.kubesense.ai/real_user_monitoring/session_replay/browser/#usage) for further information.
187
267
  *
188
268
  * @category Session Replay
269
+ * @defaultValue false
189
270
  */
190
271
  startSessionReplayRecordingManually?: boolean | undefined
191
272
 
192
273
  /**
193
- * Restrict Session Replay recording to specific routes.
274
+ * Records `<canvas>` content (most chart libraries draw on one) in Session Replay as captured frames.
275
+ * Canvas recording is disabled when this option is omitted.
194
276
  *
195
- * Recording starts and stops as the user navigates: it runs only while the current route
196
- * matches `include` (when provided) and does not match `exclude`. Rules are matched against
197
- * the path (`pathname` + `search` + `hash`), and string entries match by prefix, so
198
- * `/checkout` also covers `/checkout/payment`.
277
+ * A canvas is captured only when its privacy level is `allow` — set with `data-kubesense-privacy="allow"`
278
+ * or the `kubesense-privacy-allow` class on it or an ancestor — and only when its content changed.
279
+ * Frames are WebP images (PNG where the browser cannot encode WebP), uploaded next to the replay
280
+ * segments and deduplicated by content.
199
281
  *
200
- * These rules only narrow recording — a session that was not sampled in by
201
- * `sessionReplaySampleRate` is never recorded, whatever the routes say.
282
+ * `quality` picks a preset; the other fields override single values of that preset.
202
283
  *
203
284
  * @category Session Replay
204
- * @example
205
- * ```ts
206
- * sessionReplayRoutes: { include: ['/checkout', '/signup'], exclude: ['/checkout/card'] }
207
- * ```
208
285
  */
209
- sessionReplayRoutes?: SessionReplayRoutes | undefined
286
+ sessionReplayCanvasRecording?:
287
+ | {
288
+ /**
289
+ * Enables recording canvas elements in Session Replay.
290
+ */
291
+ enable: boolean
292
+
293
+ /**
294
+ * Trades frame rate and image resolution for bandwidth. See {@link CanvasRecordingQuality}.
295
+ *
296
+ * @defaultValue 'medium'
297
+ */
298
+ quality?: CanvasRecordingQuality | undefined
299
+
300
+ /**
301
+ * Overrides the preset's maximum number of frames captured per second, between 0 and 8. `0`
302
+ * stops capturing frames.
303
+ */
304
+ maxFramesPerSecond?: number | undefined
305
+
306
+ /**
307
+ * Overrides the preset's longest side of a captured frame, in pixels, between 1 and 1280. Larger
308
+ * canvases are downscaled proportionally.
309
+ */
310
+ maxImageDimension?: number | undefined
311
+
312
+ /**
313
+ * Overrides the preset's size of the thumbnail compared to detect a changed canvas, in pixels,
314
+ * between 1 and 100.
315
+ */
316
+ hashingMaxDimension?: number | undefined
317
+ }
318
+ | undefined
210
319
 
211
320
  /**
212
321
  * Enables privacy control for action names.
213
322
  *
214
323
  * @category Privacy
324
+ * @defaultValue true
215
325
  */
216
- enablePrivacyForActionName?: boolean | undefined // TODO next major: remove this option and make privacy for action name the default behavior
326
+ enablePrivacyForActionName?: boolean | undefined
217
327
 
218
328
  /**
219
329
  * Enables automatic collection of users actions.
220
330
  *
331
+ * Add `data-dd-ignore-frustration` without a value, or set it to `all`, to ignore all frustration signals for an element and its descendants. To ignore specific signals, use a space-separated list of `rage-click`, `dead-click`, and `error-click`.
332
+ *
221
333
  * See [Tracking User Actions](https://docs.kubesense.ai/real_user_monitoring/browser/tracking_user_actions) for further information.
222
334
  *
223
335
  * @category Data Collection
@@ -242,14 +354,6 @@ export interface RumInitConfiguration extends InitConfiguration {
242
354
  */
243
355
  trackViewsManually?: boolean | undefined
244
356
 
245
- /**
246
- * Enable the creation of dedicated views for pages restored from the Back-Forward cache.
247
- *
248
- * @category Data Collection
249
- * @defaultValue false
250
- */
251
- trackBfcacheViews?: boolean | undefined
252
-
253
357
  /**
254
358
  * Enables collection of resource events.
255
359
  *
@@ -259,24 +363,47 @@ export interface RumInitConfiguration extends InitConfiguration {
259
363
  trackResources?: boolean | undefined
260
364
 
261
365
  /**
262
- * Enables collection of long task events.
366
+ * Enables collection of request and response headers on resource events.
367
+ *
368
+ * - `true`: collect {@link DEFAULT_TRACKED_RESOURCE_HEADERS} for all URLs, both directions
369
+ * - `MatchHeader[]`: each {@link MatchHeader} targets a header name, with optional URL scope
370
+ * (`url`), value extraction (`extractor`), and `location`. When `name` is omitted, the matcher
371
+ * applies to {@link DEFAULT_TRACKED_RESOURCE_HEADERS}. By default, both request and response
372
+ * headers are captured; set `location` to `'request'` or `'response'` to restrict to one.
373
+ *
374
+ * Headers whose names match a built-in sensitive-data pattern are always dropped, regardless
375
+ * of the configured matchers. The pattern blocks headers whose names contain: `token`, `cookie`,
376
+ * `secret`, `authorization`, `api-key`, `secret-key`, `access-key`, `app-key`, `client-ip`,
377
+ * `connecting-ip`, `real-ip`, or `forwarded`.
263
378
  *
264
379
  * @category Data Collection
265
- * @defaultValue true
380
+ * @defaultValue false (disabled)
381
+ * @example
382
+ * // Collect default headers plus custom ones for all URLs
383
+ * trackResourceHeaders: [{}, { name: 'x-request-id' }]
384
+ * @example
385
+ * // Collect default headers from responses only
386
+ * trackResourceHeaders: [{ location: 'response' }]
387
+ * @example
388
+ * // URL-scoped rule: capture specific response headers only for calls to /api
389
+ * trackResourceHeaders: [{ url: /\/api\//, name: 'cache-control', location: 'response' }]
390
+ * @example
391
+ * // Extract a partial value from a header
392
+ * trackResourceHeaders: [{ url: /\/api\//, name: 'server-timing', extractor: /dur=(\d+)/, location: 'response' }]
266
393
  */
267
- trackLongTasks?: boolean | undefined
394
+ trackResourceHeaders?: boolean | MatchHeader[] | undefined
268
395
 
269
396
  /**
270
- * Enables early request collection before resource timing entries are available.
397
+ * Enables collection of long task events.
271
398
  *
272
399
  * @category Data Collection
273
- * @defaultValue false
400
+ * @defaultValue true
274
401
  */
275
- trackEarlyRequests?: boolean | undefined
402
+ trackLongTasks?: boolean | undefined
276
403
 
277
404
  /**
278
405
  * List of plugins to enable. The plugins API is unstable and experimental, and may change without
279
- * notice. Please use only plugins provided by Kubesense matching the version of the SDK you are
406
+ * notice. Please use only plugins provided by KubeSense matching the version of the SDK you are
280
407
  * using.
281
408
  */
282
409
  plugins?: RumPlugin[] | undefined
@@ -304,170 +431,334 @@ export interface RumInitConfiguration extends InitConfiguration {
304
431
  allowedGraphQlUrls?: Array<MatchOption | GraphQlUrlOption> | undefined
305
432
 
306
433
  /**
307
- * A list of domains to treat as first-party in resource provider classification.
308
- * Accepts strings (exact hostname match), RegExp, or functions.
309
- * The current page hostname is always treated as first-party.
434
+ * Enable partial view updates, which reduces bandwidth by sending only changed
435
+ * fields instead of full view events on intermediate updates.
310
436
  *
311
- * @category Data Collection
312
- * @example ['api.myapp.com', /\.myapp\.com$/, (host) => host.endsWith('.internal')]
437
+ * Enabled by default when the SDK is loaded from the CDN and no `proxy` is configured.
438
+ * Disabled by default otherwise, because a proxy may not forward the `view_update` event type.
439
+ *
440
+ * @category Beta
313
441
  */
314
- firstPartyDomains?: MatchOption[] | undefined
442
+ betaEnableViewUpdates?: boolean | undefined
443
+
444
+ /**
445
+ * Enables collection of WebSocket resource events.
446
+ *
447
+ * Warning: enabling this option introduces WebSocket resource events to the `beforeSend` hook.
448
+ * Their domain context is WebSocket-specific and does not contain the XHR, Fetch, or performance
449
+ * entry fields available on regular resource events. Narrow the context using the existing
450
+ * `isManual` and `isWebSocket` discriminants before accessing those fields.
451
+ *
452
+ * @category Beta
453
+ */
454
+ betaTrackWebSockets?: boolean | undefined
315
455
  }
316
456
 
317
- export type HybridInitConfiguration = Omit<RumInitConfiguration, 'applicationId' | 'clientToken'>
457
+ /**
458
+ * Recording quality presets for canvas capture. See {@link RumInitConfiguration.sessionReplayCanvasRecording}.
459
+ *
460
+ * | Preset | Frames per second | Longest side | WebP quality |
461
+ * | -------- | ----------------- | ------------ | ------------ |
462
+ * | `low` | 1 | 600 px | 0.3 |
463
+ * | `medium` | 4 | 1000 px | 0.5 |
464
+ * | `high` | 8 | 1280 px | 0.75 |
465
+ *
466
+ * @example
467
+ * ```ts
468
+ * kubesenseSdk.init({
469
+ * // ...
470
+ * sessionReplayCanvasRecording: {
471
+ * enable: true,
472
+ * quality: CanvasRecordingQuality.MEDIUM,
473
+ * },
474
+ * })
475
+ * ```
476
+ */
477
+ export const CanvasRecordingQuality = {
478
+ LOW: 'low',
479
+ MEDIUM: 'medium',
480
+ HIGH: 'high',
481
+ } as const
482
+ export type CanvasRecordingQuality = (typeof CanvasRecordingQuality)[keyof typeof CanvasRecordingQuality]
483
+
484
+ /**
485
+ * The resolved canvas recording tuning behind each {@link CanvasRecordingQuality} preset.
486
+ */
487
+ export interface CanvasRecordingConfiguration {
488
+ enable: true
489
+ maxFramesPerSecond: number
490
+ hashingMaxDimension: number
491
+ maxImageDimension: number
492
+ encodeQuality: number
493
+ }
494
+
495
+ const CANVAS_RECORDING_QUALITY_PRESETS: Record<CanvasRecordingQuality, Omit<CanvasRecordingConfiguration, 'enable'>> = {
496
+ [CanvasRecordingQuality.LOW]: {
497
+ maxFramesPerSecond: 1,
498
+ hashingMaxDimension: 50,
499
+ maxImageDimension: 600,
500
+ encodeQuality: 0.3,
501
+ },
502
+ [CanvasRecordingQuality.MEDIUM]: {
503
+ maxFramesPerSecond: 4,
504
+ hashingMaxDimension: 100,
505
+ maxImageDimension: 1000,
506
+ encodeQuality: 0.5,
507
+ },
508
+ [CanvasRecordingQuality.HIGH]: {
509
+ maxFramesPerSecond: 8,
510
+ hashingMaxDimension: 100,
511
+ maxImageDimension: 1280,
512
+ encodeQuality: 0.75,
513
+ },
514
+ }
515
+
516
+ /**
517
+ * Upstream gates canvas recording behind the `session_replay_record_canvas` experimental flag; in
518
+ * this SDK it is a regular option. The preset's values can be overridden one by one, which is how the
519
+ * dashboard's remote configuration tunes them.
520
+ */
521
+ function resolveCanvasRecordingConfiguration(
522
+ configuration:
523
+ | {
524
+ enable: boolean
525
+ quality: CanvasRecordingQuality
526
+ maxFramesPerSecond?: number
527
+ maxImageDimension?: number
528
+ hashingMaxDimension?: number
529
+ }
530
+ | undefined
531
+ ): CanvasRecordingConfiguration | undefined {
532
+ const preset = configuration && CANVAS_RECORDING_QUALITY_PRESETS[configuration.quality]
533
+ if (!configuration?.enable || !preset) {
534
+ return undefined
535
+ }
536
+
537
+ return {
538
+ enable: true,
539
+ ...preset,
540
+ maxFramesPerSecond: configuration.maxFramesPerSecond ?? preset.maxFramesPerSecond,
541
+ maxImageDimension: configuration.maxImageDimension ?? preset.maxImageDimension,
542
+ hashingMaxDimension: configuration.hashingMaxDimension ?? preset.hashingMaxDimension,
543
+ }
544
+ }
318
545
 
319
546
  export type FeatureFlagsForEvents = 'vital' | 'action' | 'long_task' | 'resource'
320
547
 
548
+ /**
549
+ * Function called before a RUM event is sent to KubeSense. See {@link RumInitConfiguration.beforeSend}
550
+ *
551
+ * @param event - The RUM event
552
+ * @param context - The RUM event domain context providing access to native browser data based on the event type (e.g. error, performance entry).
553
+ * @returns true if the event should be sent to KubeSense, false otherwise
554
+ */
555
+ export type RumBeforeSend = (event: RumEvent, context: RumEventDomainContext) => boolean
556
+
321
557
  export interface GraphQlUrlOption {
322
558
  match: MatchOption
323
559
  trackPayload?: boolean
324
560
  trackResponseErrors?: boolean
325
561
  }
326
562
 
327
- export interface RumConfiguration extends Configuration {
328
- // Built from init configuration
329
- actionNameAttribute: string | undefined
330
- traceSampleRate: number
331
- rulePsr: number | undefined
563
+ export interface MatchHeader {
564
+ url?: MatchOption
565
+ name?: MatchOption
566
+ extractor?: RegExp
567
+ location?: 'request' | 'response' | 'any'
568
+ }
569
+
570
+ export const RUM_SCHEMA = {
571
+ ...BROWSER_CORE_SCHEMA,
572
+
573
+ // Required
574
+ applicationId: { type: 'string', required: true },
575
+
576
+ // Optional strings
577
+ actionNameAttribute: { type: 'string' },
578
+ workerUrl: { type: 'string' },
579
+ subdomain: { type: 'string' },
580
+
581
+ // Sample rates
582
+ sessionReplaySampleRate: { type: 'percentage', default: 0 },
583
+ traceSampleRate: { type: 'percentage', default: 100 },
584
+ profilingSampleRate: { type: 'percentage', default: 0 },
585
+
586
+ // Booleans
587
+ compressIntakeRequests: { type: 'boolean', default: false },
588
+ trackUserInteractions: { type: 'boolean', default: true, strict: false },
589
+ trackResources: { type: 'boolean', default: true, strict: false },
590
+ trackLongTasks: { type: 'boolean', default: true, strict: false },
591
+ trackViewsManually: { type: 'boolean', default: false, strict: false },
592
+ betaEnableViewUpdates: { type: 'boolean' },
593
+ betaTrackWebSockets: { type: 'boolean', default: false, strict: false },
594
+ enablePrivacyForActionName: { type: 'boolean', default: true },
595
+ propagateTraceBaggage: { type: 'boolean', default: true },
596
+ startSessionReplayRecordingManually: { type: 'boolean', default: false, strict: false },
597
+ enableRemoteSdkConfiguration: { type: 'boolean', default: false, strict: false },
598
+ // KubeSense extensions
599
+ firstPartyDomains: { type: 'match-option', multiple: true, default: [] as MatchOption[] },
600
+ sessionReplayRoutes: {
601
+ type: 'schema',
602
+ strict: false,
603
+ schema: {
604
+ // Not strict: an unusable entry is dropped rather than failing the whole configuration, so a
605
+ // typo in one route does not take Session Replay down entirely.
606
+ include: { type: 'match-option', multiple: true, strict: false },
607
+ exclude: { type: 'match-option', multiple: true, strict: false },
608
+ },
609
+ },
610
+
611
+ sessionReplayCanvasRecording: {
612
+ type: 'schema',
613
+ schema: {
614
+ enable: { type: 'boolean', required: true },
615
+ quality: { type: 'enum', values: CanvasRecordingQuality, default: CanvasRecordingQuality.MEDIUM },
616
+ maxFramesPerSecond: { type: 'number', min: 0, max: 8 },
617
+ maxImageDimension: { type: 'number', min: 1, max: 1280 },
618
+ hashingMaxDimension: { type: 'number', min: 1, max: 100 },
619
+ },
620
+ },
621
+
622
+ // Enums
623
+ defaultPrivacyLevel: {
624
+ type: 'enum',
625
+ values: DefaultPrivacyLevel,
626
+ default: DefaultPrivacyLevel.MASK_USER_INPUT,
627
+ strict: false,
628
+ },
629
+ traceContextInjection: {
630
+ type: 'enum',
631
+ values: TraceContextInjection,
632
+ default: TraceContextInjection.SAMPLED,
633
+ strict: false,
634
+ },
635
+
636
+ // Arrays
637
+ excludedActivityUrls: { type: 'match-option', multiple: true, default: [] as MatchOption[] },
638
+ allowedTracingUrls: {
639
+ type: 'union',
640
+ multiple: true,
641
+ strict: false,
642
+ default: [] as Array<MatchOption | { match: MatchOption; propagatorTypes: PropagatorType[] }>,
643
+ variants: [
644
+ { type: 'match-option' },
645
+ {
646
+ type: 'schema',
647
+ schema: {
648
+ match: { type: 'match-option', required: true },
649
+ propagatorTypes: {
650
+ type: 'enum',
651
+ values: ['kubesense', 'b3', 'b3multi', 'tracecontext'] as const,
652
+ multiple: true,
653
+ strict: false,
654
+ default: DEFAULT_PROPAGATOR_TYPES,
655
+ },
656
+ },
657
+ },
658
+ ],
659
+ },
660
+ plugins: {
661
+ type: 'schema',
662
+ multiple: true,
663
+ strict: false,
664
+ default: [] as RumPlugin[],
665
+ schema: {
666
+ name: { type: 'string', required: true },
667
+ getConfigurationTelemetry: {
668
+ type: 'function',
669
+ strict: false,
670
+ signature: undefined as RumPlugin['getConfigurationTelemetry'],
671
+ },
672
+ onInit: { type: 'function', strict: false, signature: undefined as RumPlugin['onInit'] },
673
+ onRumStart: { type: 'function', strict: false, signature: undefined as RumPlugin['onRumStart'] },
674
+ },
675
+ },
676
+ trackFeatureFlagsForEvents: {
677
+ type: 'enum',
678
+ values: ['vital', 'action', 'long_task', 'resource'] as const,
679
+ multiple: true,
680
+ strict: false,
681
+ default: [] as FeatureFlagsForEvents[],
682
+ },
683
+ } as const
684
+
685
+ export type RumConfiguration = Omit<
686
+ InferredConfig<typeof RUM_SCHEMA>,
687
+ 'allowedTracingUrls' | 'sessionReplayCanvasRecording'
688
+ > & {
332
689
  allowedTracingUrls: TracingOption[]
333
- excludedActivityUrls: MatchOption[]
334
- workerUrl: string | undefined
335
- compressIntakeRequests: boolean
336
- applicationId: string
337
- defaultPrivacyLevel: DefaultPrivacyLevel
338
- enablePrivacyForActionName: boolean
339
- sessionReplaySampleRate: number
340
- startSessionReplayRecordingManually: boolean
341
- sessionReplayRoutes: SessionReplayRoutes | undefined
342
- trackUserInteractions: boolean
343
- trackViewsManually: boolean
344
- trackResources: boolean
345
- trackLongTasks: boolean
346
- trackBfcacheViews: boolean
347
- trackEarlyRequests: boolean
348
- subdomain?: string
349
- traceContextInjection: TraceContextInjection
350
- plugins: RumPlugin[]
351
- trackFeatureFlagsForEvents: FeatureFlagsForEvents[]
352
- profilingSampleRate: number
353
- propagateTraceBaggage: boolean
690
+ betaEnableViewUpdates: boolean
691
+ rulePsr: number | undefined
692
+ trackResourceHeaders: MatchHeader[]
354
693
  allowedGraphQlUrls: GraphQlUrlOption[]
355
- firstPartyDomains: MatchOption[]
694
+ remoteConfigurationId: string | undefined
695
+ sessionReplayCanvasRecording: CanvasRecordingConfiguration | undefined
356
696
  }
357
697
 
358
- export function validateAndBuildRumConfiguration(
359
- initConfiguration: RumInitConfiguration,
360
- errorStack?: string
361
- ): RumConfiguration | undefined {
362
- if (
363
- initConfiguration.trackFeatureFlagsForEvents !== undefined &&
364
- !Array.isArray(initConfiguration.trackFeatureFlagsForEvents)
365
- ) {
366
- display.warn('trackFeatureFlagsForEvents should be an array')
367
- }
368
-
369
- if (!initConfiguration.applicationId) {
370
- display.error('Application ID is not configured, no RUM data will be collected.')
371
- return
698
+ /**
699
+ * Resolves whether partial view updates are enabled. Never enabled when the event bridge is used.
700
+ * Otherwise an explicit `betaEnableViewUpdates` takes precedence, and it defaults to true for CDN
701
+ * users that do not go through a proxy: a proxy may not forward the `view_update` event type yet,
702
+ * and npm users pin an SDK version so they opt in explicitly.
703
+ *
704
+ * The CDN check is temporary, the next step is to default this to true unless `proxy` is set.
705
+ * TODO next major: remove the option.
706
+ */
707
+ function isViewUpdatesEnabled(
708
+ explicit: boolean | undefined,
709
+ proxy: InitConfiguration['proxy'],
710
+ sdkName: SdkName | undefined
711
+ ): boolean {
712
+ if (canUseEventBridge()) {
713
+ // The bridge replaces the batch transport, and `view_update` events are only created by the
714
+ // batch dispatcher, so partial updates never happen in a WebView. Ignore the explicit value
715
+ // too, otherwise telemetry reports updates that cannot be sent.
716
+ return false
372
717
  }
373
718
 
374
- if (
375
- !isSampleRate(initConfiguration.sessionReplaySampleRate, 'Session Replay') ||
376
- !isSampleRate(initConfiguration.traceSampleRate, 'Trace')
377
- ) {
378
- return
379
- }
719
+ // The Salesforce bundle is a CDN build, but the supported install flow uploads it as a static
720
+ // resource, so publishing a new bundle does not roll those deployments back. Keep them out of
721
+ // the default, they can still opt in explicitly.
722
+ return explicit ?? (__BUILD_ENV__SDK_SETUP__ === 'cdn' && !proxy && sdkName !== 'rum-salesforce')
723
+ }
380
724
 
381
- if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {
382
- display.error('Excluded Activity Urls should be an array')
383
- return
384
- }
725
+ export function validateAndBuildRumConfiguration(
726
+ initConfiguration: RumInitConfiguration,
727
+ sdkName?: SdkName
728
+ ): RumConfiguration | undefined {
729
+ const config = validateAndBuildConfiguration(
730
+ initConfiguration as unknown as Record<string, unknown>,
731
+ RUM_SCHEMA,
732
+ display
733
+ )
385
734
 
386
- const allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration)
387
- if (!allowedTracingUrls) {
735
+ if (!config) {
388
736
  return
389
737
  }
390
738
 
391
- const baseConfiguration = validateAndBuildConfiguration(initConfiguration, errorStack)
392
-
393
- const allowedGraphQlUrls = validateAndBuildGraphQlOptions(initConfiguration)
739
+ const allowedTracingUrls = config.allowedTracingUrls.map(normalizeTracingOption).filter(Boolean) as TracingOption[]
394
740
 
395
- if (!baseConfiguration) {
741
+ if (allowedTracingUrls.length > 0 && !config.service) {
742
+ display.error('Service needs to be configured when tracing is enabled')
396
743
  return
397
744
  }
398
745
 
399
- const sessionReplaySampleRate = initConfiguration.sessionReplaySampleRate ?? 0
746
+ const sessionReplayCanvasRecording = resolveCanvasRecordingConfiguration(config.sessionReplayCanvasRecording)
400
747
 
401
748
  return {
402
- applicationId: initConfiguration.applicationId,
403
- actionNameAttribute: initConfiguration.actionNameAttribute,
404
- sessionReplaySampleRate,
405
- startSessionReplayRecordingManually:
406
- initConfiguration.startSessionReplayRecordingManually !== undefined
407
- ? !!initConfiguration.startSessionReplayRecordingManually
408
- : sessionReplaySampleRate === 0,
409
- sessionReplayRoutes: validateSessionReplayRoutes(initConfiguration.sessionReplayRoutes),
410
- traceSampleRate: initConfiguration.traceSampleRate ?? 100,
411
- rulePsr: isNumber(initConfiguration.traceSampleRate) ? initConfiguration.traceSampleRate / 100 : undefined,
749
+ ...config,
750
+ service: config.service || config.applicationId,
751
+ sessionReplayCanvasRecording,
752
+ betaEnableViewUpdates: isViewUpdatesEnabled(config.betaEnableViewUpdates, config.proxy, sdkName),
412
753
  allowedTracingUrls,
413
- excludedActivityUrls: initConfiguration.excludedActivityUrls ?? [],
414
- workerUrl: initConfiguration.workerUrl,
415
- compressIntakeRequests: !!initConfiguration.compressIntakeRequests,
416
- trackUserInteractions: !!(initConfiguration.trackUserInteractions ?? true),
417
- trackViewsManually: !!initConfiguration.trackViewsManually,
418
- trackResources: !!(initConfiguration.trackResources ?? true),
419
- trackLongTasks: !!(initConfiguration.trackLongTasks ?? true),
420
- trackBfcacheViews: !!initConfiguration.trackBfcacheViews,
421
- trackEarlyRequests: !!initConfiguration.trackEarlyRequests,
422
- subdomain: initConfiguration.subdomain,
423
- defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)
424
- ? initConfiguration.defaultPrivacyLevel
425
- : DefaultPrivacyLevel.MASK,
426
- enablePrivacyForActionName: !!initConfiguration.enablePrivacyForActionName,
427
- traceContextInjection: objectHasValue(TraceContextInjection, initConfiguration.traceContextInjection)
428
- ? initConfiguration.traceContextInjection
429
- : TraceContextInjection.SAMPLED,
430
- plugins: initConfiguration.plugins || [],
431
- trackFeatureFlagsForEvents: initConfiguration.trackFeatureFlagsForEvents || [],
432
- profilingSampleRate: initConfiguration.profilingSampleRate ?? 0,
433
- propagateTraceBaggage: !!initConfiguration.propagateTraceBaggage,
434
- allowedGraphQlUrls,
435
- firstPartyDomains: initConfiguration.firstPartyDomains ?? [],
436
- ...baseConfiguration,
437
- }
438
- }
439
-
440
- /**
441
- * Validates allowedTracingUrls and converts match options to tracing options
442
- */
443
- function validateAndBuildTracingOptions(initConfiguration: RumInitConfiguration): TracingOption[] | undefined {
444
- if (initConfiguration.allowedTracingUrls === undefined) {
445
- return []
446
- }
447
- if (!Array.isArray(initConfiguration.allowedTracingUrls)) {
448
- display.error('Allowed Tracing URLs should be an array')
449
- return
450
- }
451
- if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {
452
- display.error('Service needs to be configured when tracing is enabled')
453
- return
754
+ beforeSend: config.beforeSend
755
+ ? (catchUserErrors(config.beforeSend, 'beforeSend threw an error:') as typeof config.beforeSend)
756
+ : undefined,
757
+ rulePsr: isNumber(initConfiguration.traceSampleRate) ? initConfiguration.traceSampleRate / 100 : undefined,
758
+ trackResourceHeaders: validateAndBuildTrackResourceHeaders(initConfiguration),
759
+ allowedGraphQlUrls: validateAndBuildGraphQlOptions(initConfiguration),
760
+ remoteConfigurationId: getRemoteConfigurationId(initConfiguration),
454
761
  }
455
- // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties
456
- const tracingOptions: TracingOption[] = []
457
- initConfiguration.allowedTracingUrls.forEach((option) => {
458
- if (isMatchOption(option)) {
459
- tracingOptions.push({ match: option, propagatorTypes: DEFAULT_PROPAGATOR_TYPES })
460
- } else if (isTracingOption(option)) {
461
- tracingOptions.push(option)
462
- } else {
463
- display.warn(
464
- 'Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter',
465
- option
466
- )
467
- }
468
- })
469
-
470
- return tracingOptions
471
762
  }
472
763
 
473
764
  /**
@@ -478,18 +769,32 @@ function getSelectedTracingPropagators(configuration: RumInitConfiguration): Pro
478
769
 
479
770
  if (isNonEmptyArray(configuration.allowedTracingUrls)) {
480
771
  configuration.allowedTracingUrls.forEach((option) => {
481
- if (isMatchOption(option)) {
482
- DEFAULT_PROPAGATOR_TYPES.forEach((propagatorType) => usedTracingPropagators.add(propagatorType))
483
- } else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {
484
- // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)
485
- option.propagatorTypes.forEach((propagatorType) => usedTracingPropagators.add(propagatorType))
486
- }
772
+ normalizeTracingOption(option)?.propagatorTypes.forEach((propagatorType) =>
773
+ usedTracingPropagators.add(propagatorType)
774
+ )
487
775
  })
488
776
  }
489
777
 
490
778
  return Array.from(usedTracingPropagators)
491
779
  }
492
780
 
781
+ function normalizeTracingOption(option: unknown): TracingOption | undefined {
782
+ if (isMatchOption(option)) {
783
+ return { match: option, propagatorTypes: DEFAULT_PROPAGATOR_TYPES }
784
+ }
785
+
786
+ if (
787
+ isIndexableObject(option) &&
788
+ isMatchOption(option.match) &&
789
+ (option.propagatorTypes === null || option.propagatorTypes === undefined || Array.isArray(option.propagatorTypes))
790
+ ) {
791
+ return {
792
+ match: option.match,
793
+ propagatorTypes: option.propagatorTypes || DEFAULT_PROPAGATOR_TYPES,
794
+ }
795
+ }
796
+ }
797
+
493
798
  /**
494
799
  * Build GraphQL options from configuration
495
800
  */
@@ -508,7 +813,7 @@ function validateAndBuildGraphQlOptions(initConfiguration: RumInitConfiguration)
508
813
  initConfiguration.allowedGraphQlUrls.forEach((option) => {
509
814
  if (isMatchOption(option)) {
510
815
  graphQlOptions.push({ match: option, trackPayload: false, trackResponseErrors: false })
511
- } else if (option && typeof option === 'object' && 'match' in option && isMatchOption(option.match)) {
816
+ } else if (isIndexableObject(option) && isMatchOption(option.match)) {
512
817
  graphQlOptions.push({
513
818
  match: option.match,
514
819
  trackPayload: !!option.trackPayload,
@@ -520,33 +825,99 @@ function validateAndBuildGraphQlOptions(initConfiguration: RumInitConfiguration)
520
825
  return graphQlOptions
521
826
  }
522
827
 
828
+ const VALID_HEADER_LOCATIONS = ['request', 'response', 'any']
829
+
830
+ function validateAndBuildTrackResourceHeaders(initConfiguration: RumInitConfiguration): MatchHeader[] {
831
+ const option = initConfiguration.trackResourceHeaders
832
+
833
+ if (option === undefined || option === false) {
834
+ return []
835
+ }
836
+
837
+ if (option === true) {
838
+ return DEFAULT_TRACKED_RESOURCE_HEADERS.map((name) => ({ name }))
839
+ }
840
+
841
+ if (!Array.isArray(option)) {
842
+ display.warn('trackResourceHeaders should be true or an array of MatchHeader')
843
+ return []
844
+ }
845
+
846
+ if (option.length === 0) {
847
+ display.warn('trackResourceHeaders is an empty array, no headers will be captured')
848
+ return []
849
+ }
850
+
851
+ const result: MatchHeader[] = []
852
+
853
+ option.forEach((item, index) => {
854
+ if (!isIndexableObject(item)) {
855
+ display.warn(`trackResourceHeaders[${index}] should be a MatchHeader object`)
856
+ return
857
+ }
858
+ if (item.name !== undefined && !isMatchOption(item.name)) {
859
+ display.warn(`trackResourceHeaders[${index}].name should be a MatchOption`)
860
+ return
861
+ }
862
+ if (item.url !== undefined && !isMatchOption(item.url)) {
863
+ display.warn(`trackResourceHeaders[${index}].url should be a MatchOption`)
864
+ return
865
+ }
866
+ if (item.extractor !== undefined && !(item.extractor instanceof RegExp)) {
867
+ display.warn(`trackResourceHeaders[${index}].extractor should be a RegExp`)
868
+ return
869
+ }
870
+ if (
871
+ item.location !== undefined &&
872
+ (typeof item.location !== 'string' || !VALID_HEADER_LOCATIONS.includes(item.location))
873
+ ) {
874
+ display.warn(`trackResourceHeaders[${index}].location should be 'request', 'response', or 'any'`)
875
+ return
876
+ }
877
+
878
+ const { name, ...rest } = item
879
+ result.push({
880
+ ...rest,
881
+ ...(name !== undefined ? { name: typeof name === 'string' ? name.toLowerCase() : name } : {}),
882
+ })
883
+ })
884
+
885
+ return result
886
+ }
887
+
523
888
  function hasGraphQlPayloadTracking(allowedGraphQlUrls: RumInitConfiguration['allowedGraphQlUrls']): boolean {
524
889
  return (
525
890
  isNonEmptyArray(allowedGraphQlUrls) &&
526
- allowedGraphQlUrls.some((option) => {
527
- if (typeof option === 'object' && 'trackPayload' in option) {
528
- return !!option.trackPayload
529
- }
530
- return false
531
- })
891
+ allowedGraphQlUrls.some((option) => isIndexableObject(option) && option.trackPayload)
532
892
  )
533
893
  }
534
894
 
535
895
  function hasGraphQlResponseErrorsTracking(allowedGraphQlUrls: RumInitConfiguration['allowedGraphQlUrls']): boolean {
536
896
  return (
537
897
  isNonEmptyArray(allowedGraphQlUrls) &&
538
- allowedGraphQlUrls.some((option) => {
539
- if (typeof option === 'object' && 'trackResponseErrors' in option) {
540
- return !!option.trackResponseErrors
541
- }
542
- return false
543
- })
898
+ allowedGraphQlUrls.some((option) => isIndexableObject(option) && option.trackResponseErrors)
544
899
  )
545
900
  }
546
901
 
547
- export function serializeRumConfiguration(configuration: RumInitConfiguration) {
902
+ function getTrackResourceHeadersTelemetryValue(
903
+ trackResourceHeaders: RumInitConfiguration['trackResourceHeaders']
904
+ ): 'default_headers' | 'custom' | undefined {
905
+ if (trackResourceHeaders === true) {
906
+ return 'default_headers'
907
+ }
908
+ if (Array.isArray(trackResourceHeaders)) {
909
+ return 'custom'
910
+ }
911
+ }
912
+
913
+ export function serializeRumConfiguration(
914
+ configuration: RumInitConfiguration,
915
+ sdkName?: SdkName,
916
+ remoteConfigurationMetadata?: RemoteConfigurationMetadata
917
+ ) {
548
918
  const baseSerializedConfiguration = serializeConfiguration(configuration)
549
919
 
920
+ // `use_` prefix is for telemetry options that track usage of a configuration option as a boolean to avoid capturing customer data
550
921
  return {
551
922
  session_replay_sample_rate: configuration.sessionReplaySampleRate,
552
923
  start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,
@@ -568,24 +939,32 @@ export function serializeRumConfiguration(configuration: RumInitConfiguration) {
568
939
  track_user_interactions: configuration.trackUserInteractions,
569
940
  track_resources: configuration.trackResources,
570
941
  track_long_task: configuration.trackLongTasks,
571
- track_bfcache_views: configuration.trackBfcacheViews,
572
- track_early_requests: configuration.trackEarlyRequests,
573
942
  plugins: configuration.plugins?.map((plugin) => ({
574
943
  name: plugin.name,
575
944
  ...plugin.getConfigurationTelemetry?.(),
576
945
  })),
577
946
  track_feature_flags_for_events: configuration.trackFeatureFlagsForEvents,
578
- remote_configuration_id: configuration.remoteConfigurationId,
947
+ remote_configuration_id: getRemoteConfigurationId(configuration),
948
+ remote_configuration: remoteConfigurationMetadata && {
949
+ last_modified: remoteConfigurationMetadata.lastModified,
950
+ last_synced: remoteConfigurationMetadata.lastSynced,
951
+ first_applied: remoteConfigurationMetadata.firstApplied,
952
+ sync_id: remoteConfigurationMetadata.syncId,
953
+ },
579
954
  profiling_sample_rate: configuration.profilingSampleRate,
580
955
  use_remote_configuration_proxy: !!configuration.remoteConfigurationProxy,
581
- // Kubesense extensions: whether the dashboard-managed remote document is
582
- // in play, and whether replay recording is route-scoped — both needed to
583
- // interpret the reported values on the dashboard side.
956
+ // KubeSense extensions: whether the dashboard-managed remote document is in play, whether
957
+ // replay recording is route-scoped, and whether resource classification has an explicit
958
+ // first-party list — all needed to interpret the reported values on the dashboard side.
584
959
  enable_remote_sdk_configuration: !!configuration.enableRemoteSdkConfiguration,
585
960
  use_session_replay_routes:
586
961
  !!configuration.sessionReplayRoutes &&
587
962
  (isNonEmptyArray(configuration.sessionReplayRoutes.include) ||
588
963
  isNonEmptyArray(configuration.sessionReplayRoutes.exclude)),
964
+ use_first_party_domains: isNonEmptyArray(configuration.firstPartyDomains),
965
+ track_resource_headers: getTrackResourceHeadersTelemetryValue(configuration.trackResourceHeaders),
966
+ beta_enable_view_updates: isViewUpdatesEnabled(configuration.betaEnableViewUpdates, configuration.proxy, sdkName),
967
+ beta_track_web_sockets: configuration.betaTrackWebSockets,
589
968
  ...baseSerializedConfiguration,
590
969
  } satisfies RawTelemetryConfiguration
591
970
  }