@kubesense/kubesense-browser-rum-core 1.0.0

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 (689) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/cjs/boot/preStartRum.d.ts +7 -0
  4. package/cjs/boot/preStartRum.js +190 -0
  5. package/cjs/boot/preStartRum.js.map +1 -0
  6. package/cjs/boot/rumPublicApi.d.ts +409 -0
  7. package/cjs/boot/rumPublicApi.js +168 -0
  8. package/cjs/boot/rumPublicApi.js.map +1 -0
  9. package/cjs/boot/startRum.d.ts +109 -0
  10. package/cjs/boot/startRum.js +153 -0
  11. package/cjs/boot/startRum.js.map +1 -0
  12. package/cjs/browser/cookieObservable.d.ts +8 -0
  13. package/cjs/browser/cookieObservable.js +39 -0
  14. package/cjs/browser/cookieObservable.js.map +1 -0
  15. package/cjs/browser/domMutationObservable.d.ts +27 -0
  16. package/cjs/browser/domMutationObservable.js +58 -0
  17. package/cjs/browser/domMutationObservable.js.map +1 -0
  18. package/cjs/browser/firstInputPolyfill.d.ts +8 -0
  19. package/cjs/browser/firstInputPolyfill.js +68 -0
  20. package/cjs/browser/firstInputPolyfill.js.map +1 -0
  21. package/cjs/browser/htmlDomUtils.d.ts +13 -0
  22. package/cjs/browser/htmlDomUtils.js +46 -0
  23. package/cjs/browser/htmlDomUtils.js.map +1 -0
  24. package/cjs/browser/locationChangeObservable.d.ts +7 -0
  25. package/cjs/browser/locationChangeObservable.js +51 -0
  26. package/cjs/browser/locationChangeObservable.js.map +1 -0
  27. package/cjs/browser/performanceObservable.d.ts +174 -0
  28. package/cjs/browser/performanceObservable.js +126 -0
  29. package/cjs/browser/performanceObservable.js.map +1 -0
  30. package/cjs/browser/performanceUtils.d.ts +7 -0
  31. package/cjs/browser/performanceUtils.js +42 -0
  32. package/cjs/browser/performanceUtils.js.map +1 -0
  33. package/cjs/browser/scroll.d.ts +2 -0
  34. package/cjs/browser/scroll.js +33 -0
  35. package/cjs/browser/scroll.js.map +1 -0
  36. package/cjs/browser/viewportObservable.d.ts +10 -0
  37. package/cjs/browser/viewportObservable.js +37 -0
  38. package/cjs/browser/viewportObservable.js.map +1 -0
  39. package/cjs/browser/windowOpenObservable.d.ts +5 -0
  40. package/cjs/browser/windowOpenObservable.js +10 -0
  41. package/cjs/browser/windowOpenObservable.js.map +1 -0
  42. package/cjs/domain/action/actionCollection.d.ts +21 -0
  43. package/cjs/domain/action/actionCollection.js +96 -0
  44. package/cjs/domain/action/actionCollection.js.map +1 -0
  45. package/cjs/domain/action/actionNameConstants.d.ts +18 -0
  46. package/cjs/domain/action/actionNameConstants.js +11 -0
  47. package/cjs/domain/action/actionNameConstants.js.map +1 -0
  48. package/cjs/domain/action/clickChain.d.ts +8 -0
  49. package/cjs/domain/action/clickChain.js +61 -0
  50. package/cjs/domain/action/clickChain.js.map +1 -0
  51. package/cjs/domain/action/computeFrustration.d.ts +6 -0
  52. package/cjs/domain/action/computeFrustration.js +70 -0
  53. package/cjs/domain/action/computeFrustration.js.map +1 -0
  54. package/cjs/domain/action/getActionNameFromElement.d.ts +4 -0
  55. package/cjs/domain/action/getActionNameFromElement.js +239 -0
  56. package/cjs/domain/action/getActionNameFromElement.js.map +1 -0
  57. package/cjs/domain/action/interactionSelectorCache.d.ts +5 -0
  58. package/cjs/domain/action/interactionSelectorCache.js +23 -0
  59. package/cjs/domain/action/interactionSelectorCache.js.map +1 -0
  60. package/cjs/domain/action/listenActionEvents.d.ts +19 -0
  61. package/cjs/domain/action/listenActionEvents.js +61 -0
  62. package/cjs/domain/action/listenActionEvents.js.map +1 -0
  63. package/cjs/domain/action/trackClickActions.d.ts +81 -0
  64. package/cjs/domain/action/trackClickActions.js +237 -0
  65. package/cjs/domain/action/trackClickActions.js.map +1 -0
  66. package/cjs/domain/assembly.d.ts +5 -0
  67. package/cjs/domain/assembly.js +102 -0
  68. package/cjs/domain/assembly.js.map +1 -0
  69. package/cjs/domain/configuration/configuration.d.ts +325 -0
  70. package/cjs/domain/configuration/configuration.js +205 -0
  71. package/cjs/domain/configuration/configuration.js.map +1 -0
  72. package/cjs/domain/configuration/index.d.ts +2 -0
  73. package/cjs/domain/configuration/index.js +19 -0
  74. package/cjs/domain/configuration/index.js.map +1 -0
  75. package/cjs/domain/configuration/jsonPathParser.d.ts +28 -0
  76. package/cjs/domain/configuration/jsonPathParser.js +159 -0
  77. package/cjs/domain/configuration/jsonPathParser.js.map +1 -0
  78. package/cjs/domain/configuration/remoteConfiguration.d.ts +39 -0
  79. package/cjs/domain/configuration/remoteConfiguration.js +243 -0
  80. package/cjs/domain/configuration/remoteConfiguration.js.map +1 -0
  81. package/cjs/domain/configuration/remoteConfiguration.types.d.ts +138 -0
  82. package/cjs/domain/configuration/remoteConfiguration.types.js +7 -0
  83. package/cjs/domain/configuration/remoteConfiguration.types.js.map +1 -0
  84. package/cjs/domain/contexts/ciVisibilityContext.d.ts +12 -0
  85. package/cjs/domain/contexts/ciVisibilityContext.js +34 -0
  86. package/cjs/domain/contexts/ciVisibilityContext.js.map +1 -0
  87. package/cjs/domain/contexts/connectivityContext.d.ts +2 -0
  88. package/cjs/domain/contexts/connectivityContext.js +11 -0
  89. package/cjs/domain/contexts/connectivityContext.js.map +1 -0
  90. package/cjs/domain/contexts/defaultContext.d.ts +4 -0
  91. package/cjs/domain/contexts/defaultContext.js +34 -0
  92. package/cjs/domain/contexts/defaultContext.js.map +1 -0
  93. package/cjs/domain/contexts/displayContext.d.ts +6 -0
  94. package/cjs/domain/contexts/displayContext.js +28 -0
  95. package/cjs/domain/contexts/displayContext.js.map +1 -0
  96. package/cjs/domain/contexts/featureFlagContext.d.ts +19 -0
  97. package/cjs/domain/contexts/featureFlagContext.js +53 -0
  98. package/cjs/domain/contexts/featureFlagContext.js.map +1 -0
  99. package/cjs/domain/contexts/internalContext.d.ts +12 -0
  100. package/cjs/domain/contexts/internalContext.js +26 -0
  101. package/cjs/domain/contexts/internalContext.js.map +1 -0
  102. package/cjs/domain/contexts/pageStateHistory.d.ts +23 -0
  103. package/cjs/domain/contexts/pageStateHistory.js +104 -0
  104. package/cjs/domain/contexts/pageStateHistory.js.map +1 -0
  105. package/cjs/domain/contexts/sessionContext.d.ts +5 -0
  106. package/cjs/domain/contexts/sessionContext.js +47 -0
  107. package/cjs/domain/contexts/sessionContext.js.map +1 -0
  108. package/cjs/domain/contexts/syntheticsContext.d.ts +2 -0
  109. package/cjs/domain/contexts/syntheticsContext.js +25 -0
  110. package/cjs/domain/contexts/syntheticsContext.js.map +1 -0
  111. package/cjs/domain/contexts/trackingConsentContext.d.ts +3 -0
  112. package/cjs/domain/contexts/trackingConsentContext.js +14 -0
  113. package/cjs/domain/contexts/trackingConsentContext.js.map +1 -0
  114. package/cjs/domain/contexts/urlContexts.d.ts +22 -0
  115. package/cjs/domain/contexts/urlContexts.js +64 -0
  116. package/cjs/domain/contexts/urlContexts.js.map +1 -0
  117. package/cjs/domain/contexts/userAgentDataContext.d.ts +2 -0
  118. package/cjs/domain/contexts/userAgentDataContext.js +31 -0
  119. package/cjs/domain/contexts/userAgentDataContext.js.map +1 -0
  120. package/cjs/domain/contexts/viewHistory.d.ts +17 -0
  121. package/cjs/domain/contexts/viewHistory.js +48 -0
  122. package/cjs/domain/contexts/viewHistory.js.map +1 -0
  123. package/cjs/domain/discardNegativeDuration.d.ts +2 -0
  124. package/cjs/domain/discardNegativeDuration.js +8 -0
  125. package/cjs/domain/discardNegativeDuration.js.map +1 -0
  126. package/cjs/domain/error/errorCollection.d.ts +17 -0
  127. package/cjs/domain/error/errorCollection.js +74 -0
  128. package/cjs/domain/error/errorCollection.js.map +1 -0
  129. package/cjs/domain/error/trackConsoleError.d.ts +4 -0
  130. package/cjs/domain/error/trackConsoleError.js +13 -0
  131. package/cjs/domain/error/trackConsoleError.js.map +1 -0
  132. package/cjs/domain/error/trackReportError.d.ts +5 -0
  133. package/cjs/domain/error/trackReportError.js +16 -0
  134. package/cjs/domain/error/trackReportError.js.map +1 -0
  135. package/cjs/domain/event/eventCollection.d.ts +10 -0
  136. package/cjs/domain/event/eventCollection.js +27 -0
  137. package/cjs/domain/event/eventCollection.js.map +1 -0
  138. package/cjs/domain/getSelectorFromElement.d.ts +64 -0
  139. package/cjs/domain/getSelectorFromElement.js +218 -0
  140. package/cjs/domain/getSelectorFromElement.js.map +1 -0
  141. package/cjs/domain/getSessionReplayUrl.d.ts +9 -0
  142. package/cjs/domain/getSessionReplayUrl.js +34 -0
  143. package/cjs/domain/getSessionReplayUrl.js.map +1 -0
  144. package/cjs/domain/hooks.d.ts +23 -0
  145. package/cjs/domain/hooks.js +6 -0
  146. package/cjs/domain/hooks.js.map +1 -0
  147. package/cjs/domain/lifeCycle.d.ts +73 -0
  148. package/cjs/domain/lifeCycle.js +6 -0
  149. package/cjs/domain/lifeCycle.js.map +1 -0
  150. package/cjs/domain/limitModification.d.ts +8 -0
  151. package/cjs/domain/limitModification.js +46 -0
  152. package/cjs/domain/limitModification.js.map +1 -0
  153. package/cjs/domain/longTask/longTaskCollection.d.ts +18 -0
  154. package/cjs/domain/longTask/longTaskCollection.js +91 -0
  155. package/cjs/domain/longTask/longTaskCollection.js.map +1 -0
  156. package/cjs/domain/plugins.d.ts +40 -0
  157. package/cjs/domain/plugins.js +15 -0
  158. package/cjs/domain/plugins.js.map +1 -0
  159. package/cjs/domain/privacy.d.ts +44 -0
  160. package/cjs/domain/privacy.js +313 -0
  161. package/cjs/domain/privacy.js.map +1 -0
  162. package/cjs/domain/privacyConstants.d.ts +23 -0
  163. package/cjs/domain/privacyConstants.js +39 -0
  164. package/cjs/domain/privacyConstants.js.map +1 -0
  165. package/cjs/domain/requestCollection.d.ts +54 -0
  166. package/cjs/domain/requestCollection.js +111 -0
  167. package/cjs/domain/requestCollection.js.map +1 -0
  168. package/cjs/domain/resource/graphql.d.ts +23 -0
  169. package/cjs/domain/resource/graphql.js +97 -0
  170. package/cjs/domain/resource/graphql.js.map +1 -0
  171. package/cjs/domain/resource/matchRequestResourceEntry.d.ts +16 -0
  172. package/cjs/domain/resource/matchRequestResourceEntry.js +49 -0
  173. package/cjs/domain/resource/matchRequestResourceEntry.js.map +1 -0
  174. package/cjs/domain/resource/requestRegistry.d.ts +9 -0
  175. package/cjs/domain/resource/requestRegistry.js +41 -0
  176. package/cjs/domain/resource/requestRegistry.js.map +1 -0
  177. package/cjs/domain/resource/resourceCollection.d.ts +7 -0
  178. package/cjs/domain/resource/resourceCollection.js +190 -0
  179. package/cjs/domain/resource/resourceCollection.js.map +1 -0
  180. package/cjs/domain/resource/resourceUtils.d.ts +55 -0
  181. package/cjs/domain/resource/resourceUtils.js +259 -0
  182. package/cjs/domain/resource/resourceUtils.js.map +1 -0
  183. package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.d.ts +4 -0
  184. package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.js +24 -0
  185. package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.js.map +1 -0
  186. package/cjs/domain/rumSessionManager.d.ts +36 -0
  187. package/cjs/domain/rumSessionManager.js +77 -0
  188. package/cjs/domain/rumSessionManager.js.map +1 -0
  189. package/cjs/domain/sampler/sampler.d.ts +10 -0
  190. package/cjs/domain/sampler/sampler.js +63 -0
  191. package/cjs/domain/sampler/sampler.js.map +1 -0
  192. package/cjs/domain/startCustomerDataTelemetry.d.ts +4 -0
  193. package/cjs/domain/startCustomerDataTelemetry.js +56 -0
  194. package/cjs/domain/startCustomerDataTelemetry.js.map +1 -0
  195. package/cjs/domain/tracing/getDocumentTraceId.d.ts +12 -0
  196. package/cjs/domain/tracing/getDocumentTraceId.js +76 -0
  197. package/cjs/domain/tracing/getDocumentTraceId.js.map +1 -0
  198. package/cjs/domain/tracing/identifier.d.ts +13 -0
  199. package/cjs/domain/tracing/identifier.js +55 -0
  200. package/cjs/domain/tracing/identifier.js.map +1 -0
  201. package/cjs/domain/tracing/sampler.d.ts +10 -0
  202. package/cjs/domain/tracing/sampler.js +69 -0
  203. package/cjs/domain/tracing/sampler.js.map +1 -0
  204. package/cjs/domain/tracing/tracer.d.ts +30 -0
  205. package/cjs/domain/tracing/tracer.js +161 -0
  206. package/cjs/domain/tracing/tracer.js.map +1 -0
  207. package/cjs/domain/tracing/tracer.types.d.ts +12 -0
  208. package/cjs/domain/tracing/tracer.types.js +3 -0
  209. package/cjs/domain/tracing/tracer.types.js.map +1 -0
  210. package/cjs/domain/trackEventCounts.d.ts +17 -0
  211. package/cjs/domain/trackEventCounts.js +50 -0
  212. package/cjs/domain/trackEventCounts.js.map +1 -0
  213. package/cjs/domain/view/bfCacheSupport.d.ts +2 -0
  214. package/cjs/domain/view/bfCacheSupport.js +13 -0
  215. package/cjs/domain/view/bfCacheSupport.js.map +1 -0
  216. package/cjs/domain/view/trackViewEventCounts.d.ts +5 -0
  217. package/cjs/domain/view/trackViewEventCounts.js +16 -0
  218. package/cjs/domain/view/trackViewEventCounts.js.map +1 -0
  219. package/cjs/domain/view/trackViews.d.ts +65 -0
  220. package/cjs/domain/view/trackViews.js +275 -0
  221. package/cjs/domain/view/trackViews.js.map +1 -0
  222. package/cjs/domain/view/viewCollection.d.ts +18 -0
  223. package/cjs/domain/view/viewCollection.js +153 -0
  224. package/cjs/domain/view/viewCollection.js.map +1 -0
  225. package/cjs/domain/view/viewMetrics/getClsAttributionImpactedArea.d.ts +6 -0
  226. package/cjs/domain/view/viewMetrics/getClsAttributionImpactedArea.js +32 -0
  227. package/cjs/domain/view/viewMetrics/getClsAttributionImpactedArea.js.map +1 -0
  228. package/cjs/domain/view/viewMetrics/interactionCountPolyfill.d.ts +18 -0
  229. package/cjs/domain/view/viewMetrics/interactionCountPolyfill.js +44 -0
  230. package/cjs/domain/view/viewMetrics/interactionCountPolyfill.js.map +1 -0
  231. package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.d.ts +6 -0
  232. package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js +44 -0
  233. package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js.map +1 -0
  234. package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.d.ts +8 -0
  235. package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.js +17 -0
  236. package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.js.map +1 -0
  237. package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.d.ts +21 -0
  238. package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.js +37 -0
  239. package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.js.map +1 -0
  240. package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.d.ts +37 -0
  241. package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.js +135 -0
  242. package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.js.map +1 -0
  243. package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.d.ts +13 -0
  244. package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.js +39 -0
  245. package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.js.map +1 -0
  246. package/cjs/domain/view/viewMetrics/trackFirstHidden.d.ts +10 -0
  247. package/cjs/domain/view/viewMetrics/trackFirstHidden.js +33 -0
  248. package/cjs/domain/view/viewMetrics/trackFirstHidden.js.map +1 -0
  249. package/cjs/domain/view/viewMetrics/trackFirstInput.d.ts +19 -0
  250. package/cjs/domain/view/viewMetrics/trackFirstInput.js +43 -0
  251. package/cjs/domain/view/viewMetrics/trackFirstInput.js.map +1 -0
  252. package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.d.ts +15 -0
  253. package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.js +41 -0
  254. package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.js.map +1 -0
  255. package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.d.ts +25 -0
  256. package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.js +155 -0
  257. package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.js.map +1 -0
  258. package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.d.ts +18 -0
  259. package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.js +61 -0
  260. package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.js.map +1 -0
  261. package/cjs/domain/view/viewMetrics/trackLoadingTime.d.ts +14 -0
  262. package/cjs/domain/view/viewMetrics/trackLoadingTime.js +50 -0
  263. package/cjs/domain/view/viewMetrics/trackLoadingTime.js.map +1 -0
  264. package/cjs/domain/view/viewMetrics/trackNavigationTimings.d.ts +14 -0
  265. package/cjs/domain/view/viewMetrics/trackNavigationTimings.js +43 -0
  266. package/cjs/domain/view/viewMetrics/trackNavigationTimings.js.map +1 -0
  267. package/cjs/domain/view/viewMetrics/trackScrollMetrics.d.ts +25 -0
  268. package/cjs/domain/view/viewMetrics/trackScrollMetrics.js +78 -0
  269. package/cjs/domain/view/viewMetrics/trackScrollMetrics.js.map +1 -0
  270. package/cjs/domain/vital/vitalCollection.d.ts +55 -0
  271. package/cjs/domain/vital/vitalCollection.js +113 -0
  272. package/cjs/domain/vital/vitalCollection.js.map +1 -0
  273. package/cjs/domain/waitPageActivityEnd.d.ts +54 -0
  274. package/cjs/domain/waitPageActivityEnd.js +129 -0
  275. package/cjs/domain/waitPageActivityEnd.js.map +1 -0
  276. package/cjs/domainContext.types.d.ts +39 -0
  277. package/cjs/domainContext.types.js +6 -0
  278. package/cjs/domainContext.types.js.map +1 -0
  279. package/cjs/index.d.ts +41 -0
  280. package/cjs/index.js +59 -0
  281. package/cjs/index.js.map +1 -0
  282. package/cjs/rawRumEvent.types.d.ts +326 -0
  283. package/cjs/rawRumEvent.types.js +34 -0
  284. package/cjs/rawRumEvent.types.js.map +1 -0
  285. package/cjs/rumEvent.types.d.ts +2026 -0
  286. package/cjs/rumEvent.types.js +7 -0
  287. package/cjs/rumEvent.types.js.map +1 -0
  288. package/cjs/transport/formDataTransport.d.ts +16 -0
  289. package/cjs/transport/formDataTransport.js +46 -0
  290. package/cjs/transport/formDataTransport.js.map +1 -0
  291. package/cjs/transport/startRumBatch.d.ts +5 -0
  292. package/cjs/transport/startRumBatch.js +33 -0
  293. package/cjs/transport/startRumBatch.js.map +1 -0
  294. package/cjs/transport/startRumEventBridge.d.ts +2 -0
  295. package/cjs/transport/startRumEventBridge.js +11 -0
  296. package/cjs/transport/startRumEventBridge.js.map +1 -0
  297. package/esm/boot/preStartRum.d.ts +7 -0
  298. package/esm/boot/preStartRum.js +187 -0
  299. package/esm/boot/preStartRum.js.map +1 -0
  300. package/esm/boot/rumPublicApi.d.ts +409 -0
  301. package/esm/boot/rumPublicApi.js +165 -0
  302. package/esm/boot/rumPublicApi.js.map +1 -0
  303. package/esm/boot/startRum.d.ts +109 -0
  304. package/esm/boot/startRum.js +149 -0
  305. package/esm/boot/startRum.js.map +1 -0
  306. package/esm/browser/cookieObservable.d.ts +8 -0
  307. package/esm/browser/cookieObservable.js +35 -0
  308. package/esm/browser/cookieObservable.js.map +1 -0
  309. package/esm/browser/domMutationObservable.d.ts +27 -0
  310. package/esm/browser/domMutationObservable.js +54 -0
  311. package/esm/browser/domMutationObservable.js.map +1 -0
  312. package/esm/browser/firstInputPolyfill.d.ts +8 -0
  313. package/esm/browser/firstInputPolyfill.js +65 -0
  314. package/esm/browser/firstInputPolyfill.js.map +1 -0
  315. package/esm/browser/htmlDomUtils.d.ts +13 -0
  316. package/esm/browser/htmlDomUtils.js +36 -0
  317. package/esm/browser/htmlDomUtils.js.map +1 -0
  318. package/esm/browser/locationChangeObservable.d.ts +7 -0
  319. package/esm/browser/locationChangeObservable.js +48 -0
  320. package/esm/browser/locationChangeObservable.js.map +1 -0
  321. package/esm/browser/performanceObservable.d.ts +174 -0
  322. package/esm/browser/performanceObservable.js +121 -0
  323. package/esm/browser/performanceObservable.js.map +1 -0
  324. package/esm/browser/performanceUtils.d.ts +7 -0
  325. package/esm/browser/performanceUtils.js +38 -0
  326. package/esm/browser/performanceUtils.js.map +1 -0
  327. package/esm/browser/scroll.d.ts +2 -0
  328. package/esm/browser/scroll.js +29 -0
  329. package/esm/browser/scroll.js.map +1 -0
  330. package/esm/browser/viewportObservable.d.ts +10 -0
  331. package/esm/browser/viewportObservable.js +32 -0
  332. package/esm/browser/viewportObservable.js.map +1 -0
  333. package/esm/browser/windowOpenObservable.d.ts +5 -0
  334. package/esm/browser/windowOpenObservable.js +7 -0
  335. package/esm/browser/windowOpenObservable.js.map +1 -0
  336. package/esm/domain/action/actionCollection.d.ts +21 -0
  337. package/esm/domain/action/actionCollection.js +93 -0
  338. package/esm/domain/action/actionCollection.js.map +1 -0
  339. package/esm/domain/action/actionNameConstants.d.ts +18 -0
  340. package/esm/domain/action/actionNameConstants.js +8 -0
  341. package/esm/domain/action/actionNameConstants.js.map +1 -0
  342. package/esm/domain/action/clickChain.d.ts +8 -0
  343. package/esm/domain/action/clickChain.js +57 -0
  344. package/esm/domain/action/clickChain.js.map +1 -0
  345. package/esm/domain/action/computeFrustration.d.ts +6 -0
  346. package/esm/domain/action/computeFrustration.js +65 -0
  347. package/esm/domain/action/computeFrustration.js.map +1 -0
  348. package/esm/domain/action/getActionNameFromElement.d.ts +4 -0
  349. package/esm/domain/action/getActionNameFromElement.js +236 -0
  350. package/esm/domain/action/getActionNameFromElement.js.map +1 -0
  351. package/esm/domain/action/interactionSelectorCache.d.ts +5 -0
  352. package/esm/domain/action/interactionSelectorCache.js +18 -0
  353. package/esm/domain/action/interactionSelectorCache.js.map +1 -0
  354. package/esm/domain/action/listenActionEvents.d.ts +19 -0
  355. package/esm/domain/action/listenActionEvents.js +58 -0
  356. package/esm/domain/action/listenActionEvents.js.map +1 -0
  357. package/esm/domain/action/trackClickActions.d.ts +81 -0
  358. package/esm/domain/action/trackClickActions.js +232 -0
  359. package/esm/domain/action/trackClickActions.js.map +1 -0
  360. package/esm/domain/assembly.d.ts +5 -0
  361. package/esm/domain/assembly.js +99 -0
  362. package/esm/domain/assembly.js.map +1 -0
  363. package/esm/domain/configuration/configuration.d.ts +325 -0
  364. package/esm/domain/configuration/configuration.js +200 -0
  365. package/esm/domain/configuration/configuration.js.map +1 -0
  366. package/esm/domain/configuration/index.d.ts +2 -0
  367. package/esm/domain/configuration/index.js +3 -0
  368. package/esm/domain/configuration/index.js.map +1 -0
  369. package/esm/domain/configuration/jsonPathParser.d.ts +28 -0
  370. package/esm/domain/configuration/jsonPathParser.js +156 -0
  371. package/esm/domain/configuration/jsonPathParser.js.map +1 -0
  372. package/esm/domain/configuration/remoteConfiguration.d.ts +39 -0
  373. package/esm/domain/configuration/remoteConfiguration.js +236 -0
  374. package/esm/domain/configuration/remoteConfiguration.js.map +1 -0
  375. package/esm/domain/configuration/remoteConfiguration.types.d.ts +138 -0
  376. package/esm/domain/configuration/remoteConfiguration.types.js +6 -0
  377. package/esm/domain/configuration/remoteConfiguration.types.js.map +1 -0
  378. package/esm/domain/contexts/ciVisibilityContext.d.ts +12 -0
  379. package/esm/domain/contexts/ciVisibilityContext.js +30 -0
  380. package/esm/domain/contexts/ciVisibilityContext.js.map +1 -0
  381. package/esm/domain/contexts/connectivityContext.d.ts +2 -0
  382. package/esm/domain/contexts/connectivityContext.js +8 -0
  383. package/esm/domain/contexts/connectivityContext.js.map +1 -0
  384. package/esm/domain/contexts/defaultContext.d.ts +4 -0
  385. package/esm/domain/contexts/defaultContext.js +31 -0
  386. package/esm/domain/contexts/defaultContext.js.map +1 -0
  387. package/esm/domain/contexts/displayContext.d.ts +6 -0
  388. package/esm/domain/contexts/displayContext.js +25 -0
  389. package/esm/domain/contexts/displayContext.js.map +1 -0
  390. package/esm/domain/contexts/featureFlagContext.d.ts +19 -0
  391. package/esm/domain/contexts/featureFlagContext.js +49 -0
  392. package/esm/domain/contexts/featureFlagContext.js.map +1 -0
  393. package/esm/domain/contexts/internalContext.d.ts +12 -0
  394. package/esm/domain/contexts/internalContext.js +23 -0
  395. package/esm/domain/contexts/internalContext.js.map +1 -0
  396. package/esm/domain/contexts/pageStateHistory.d.ts +23 -0
  397. package/esm/domain/contexts/pageStateHistory.js +100 -0
  398. package/esm/domain/contexts/pageStateHistory.js.map +1 -0
  399. package/esm/domain/contexts/sessionContext.d.ts +5 -0
  400. package/esm/domain/contexts/sessionContext.js +44 -0
  401. package/esm/domain/contexts/sessionContext.js.map +1 -0
  402. package/esm/domain/contexts/syntheticsContext.d.ts +2 -0
  403. package/esm/domain/contexts/syntheticsContext.js +22 -0
  404. package/esm/domain/contexts/syntheticsContext.js.map +1 -0
  405. package/esm/domain/contexts/trackingConsentContext.d.ts +3 -0
  406. package/esm/domain/contexts/trackingConsentContext.js +11 -0
  407. package/esm/domain/contexts/trackingConsentContext.js.map +1 -0
  408. package/esm/domain/contexts/urlContexts.d.ts +22 -0
  409. package/esm/domain/contexts/urlContexts.js +60 -0
  410. package/esm/domain/contexts/urlContexts.js.map +1 -0
  411. package/esm/domain/contexts/userAgentDataContext.d.ts +2 -0
  412. package/esm/domain/contexts/userAgentDataContext.js +28 -0
  413. package/esm/domain/contexts/userAgentDataContext.js.map +1 -0
  414. package/esm/domain/contexts/viewHistory.d.ts +17 -0
  415. package/esm/domain/contexts/viewHistory.js +44 -0
  416. package/esm/domain/contexts/viewHistory.js.map +1 -0
  417. package/esm/domain/discardNegativeDuration.d.ts +2 -0
  418. package/esm/domain/discardNegativeDuration.js +5 -0
  419. package/esm/domain/discardNegativeDuration.js.map +1 -0
  420. package/esm/domain/error/errorCollection.d.ts +17 -0
  421. package/esm/domain/error/errorCollection.js +70 -0
  422. package/esm/domain/error/errorCollection.js.map +1 -0
  423. package/esm/domain/error/trackConsoleError.d.ts +4 -0
  424. package/esm/domain/error/trackConsoleError.js +10 -0
  425. package/esm/domain/error/trackConsoleError.js.map +1 -0
  426. package/esm/domain/error/trackReportError.d.ts +5 -0
  427. package/esm/domain/error/trackReportError.js +13 -0
  428. package/esm/domain/error/trackReportError.js.map +1 -0
  429. package/esm/domain/event/eventCollection.d.ts +10 -0
  430. package/esm/domain/event/eventCollection.js +24 -0
  431. package/esm/domain/event/eventCollection.js.map +1 -0
  432. package/esm/domain/getSelectorFromElement.d.ts +64 -0
  433. package/esm/domain/getSelectorFromElement.js +213 -0
  434. package/esm/domain/getSelectorFromElement.js.map +1 -0
  435. package/esm/domain/getSessionReplayUrl.d.ts +9 -0
  436. package/esm/domain/getSessionReplayUrl.js +30 -0
  437. package/esm/domain/getSessionReplayUrl.js.map +1 -0
  438. package/esm/domain/hooks.d.ts +23 -0
  439. package/esm/domain/hooks.js +3 -0
  440. package/esm/domain/hooks.js.map +1 -0
  441. package/esm/domain/lifeCycle.d.ts +73 -0
  442. package/esm/domain/lifeCycle.js +3 -0
  443. package/esm/domain/lifeCycle.js.map +1 -0
  444. package/esm/domain/limitModification.d.ts +8 -0
  445. package/esm/domain/limitModification.js +43 -0
  446. package/esm/domain/limitModification.js.map +1 -0
  447. package/esm/domain/longTask/longTaskCollection.d.ts +18 -0
  448. package/esm/domain/longTask/longTaskCollection.js +87 -0
  449. package/esm/domain/longTask/longTaskCollection.js.map +1 -0
  450. package/esm/domain/plugins.d.ts +40 -0
  451. package/esm/domain/plugins.js +12 -0
  452. package/esm/domain/plugins.js.map +1 -0
  453. package/esm/domain/privacy.d.ts +44 -0
  454. package/esm/domain/privacy.js +302 -0
  455. package/esm/domain/privacy.js.map +1 -0
  456. package/esm/domain/privacyConstants.d.ts +23 -0
  457. package/esm/domain/privacyConstants.js +35 -0
  458. package/esm/domain/privacyConstants.js.map +1 -0
  459. package/esm/domain/requestCollection.d.ts +54 -0
  460. package/esm/domain/requestCollection.js +106 -0
  461. package/esm/domain/requestCollection.js.map +1 -0
  462. package/esm/domain/resource/graphql.d.ts +23 -0
  463. package/esm/domain/resource/graphql.js +91 -0
  464. package/esm/domain/resource/graphql.js.map +1 -0
  465. package/esm/domain/resource/matchRequestResourceEntry.d.ts +16 -0
  466. package/esm/domain/resource/matchRequestResourceEntry.js +46 -0
  467. package/esm/domain/resource/matchRequestResourceEntry.js.map +1 -0
  468. package/esm/domain/resource/requestRegistry.d.ts +9 -0
  469. package/esm/domain/resource/requestRegistry.js +37 -0
  470. package/esm/domain/resource/requestRegistry.js.map +1 -0
  471. package/esm/domain/resource/resourceCollection.d.ts +7 -0
  472. package/esm/domain/resource/resourceCollection.js +187 -0
  473. package/esm/domain/resource/resourceCollection.js.map +1 -0
  474. package/esm/domain/resource/resourceUtils.d.ts +55 -0
  475. package/esm/domain/resource/resourceUtils.js +244 -0
  476. package/esm/domain/resource/resourceUtils.js.map +1 -0
  477. package/esm/domain/resource/retrieveInitialDocumentResourceTiming.d.ts +4 -0
  478. package/esm/domain/resource/retrieveInitialDocumentResourceTiming.js +21 -0
  479. package/esm/domain/resource/retrieveInitialDocumentResourceTiming.js.map +1 -0
  480. package/esm/domain/rumSessionManager.d.ts +36 -0
  481. package/esm/domain/rumSessionManager.js +72 -0
  482. package/esm/domain/rumSessionManager.js.map +1 -0
  483. package/esm/domain/sampler/sampler.d.ts +10 -0
  484. package/esm/domain/sampler/sampler.js +58 -0
  485. package/esm/domain/sampler/sampler.js.map +1 -0
  486. package/esm/domain/startCustomerDataTelemetry.d.ts +4 -0
  487. package/esm/domain/startCustomerDataTelemetry.js +52 -0
  488. package/esm/domain/startCustomerDataTelemetry.js.map +1 -0
  489. package/esm/domain/tracing/getDocumentTraceId.d.ts +12 -0
  490. package/esm/domain/tracing/getDocumentTraceId.js +68 -0
  491. package/esm/domain/tracing/getDocumentTraceId.js.map +1 -0
  492. package/esm/domain/tracing/identifier.d.ts +13 -0
  493. package/esm/domain/tracing/identifier.js +50 -0
  494. package/esm/domain/tracing/identifier.js.map +1 -0
  495. package/esm/domain/tracing/sampler.d.ts +10 -0
  496. package/esm/domain/tracing/sampler.js +64 -0
  497. package/esm/domain/tracing/sampler.js.map +1 -0
  498. package/esm/domain/tracing/tracer.d.ts +30 -0
  499. package/esm/domain/tracing/tracer.js +156 -0
  500. package/esm/domain/tracing/tracer.js.map +1 -0
  501. package/esm/domain/tracing/tracer.types.d.ts +12 -0
  502. package/esm/domain/tracing/tracer.types.js +2 -0
  503. package/esm/domain/tracing/tracer.types.js.map +1 -0
  504. package/esm/domain/trackEventCounts.d.ts +17 -0
  505. package/esm/domain/trackEventCounts.js +47 -0
  506. package/esm/domain/trackEventCounts.js.map +1 -0
  507. package/esm/domain/view/bfCacheSupport.d.ts +2 -0
  508. package/esm/domain/view/bfCacheSupport.js +10 -0
  509. package/esm/domain/view/bfCacheSupport.js.map +1 -0
  510. package/esm/domain/view/trackViewEventCounts.d.ts +5 -0
  511. package/esm/domain/view/trackViewEventCounts.js +13 -0
  512. package/esm/domain/view/trackViewEventCounts.js.map +1 -0
  513. package/esm/domain/view/trackViews.d.ts +65 -0
  514. package/esm/domain/view/trackViews.js +271 -0
  515. package/esm/domain/view/trackViews.js.map +1 -0
  516. package/esm/domain/view/viewCollection.d.ts +18 -0
  517. package/esm/domain/view/viewCollection.js +150 -0
  518. package/esm/domain/view/viewCollection.js.map +1 -0
  519. package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.d.ts +6 -0
  520. package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.js +28 -0
  521. package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.js.map +1 -0
  522. package/esm/domain/view/viewMetrics/interactionCountPolyfill.d.ts +18 -0
  523. package/esm/domain/view/viewMetrics/interactionCountPolyfill.js +39 -0
  524. package/esm/domain/view/viewMetrics/interactionCountPolyfill.js.map +1 -0
  525. package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.d.ts +6 -0
  526. package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js +41 -0
  527. package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js.map +1 -0
  528. package/esm/domain/view/viewMetrics/trackBfcacheMetrics.d.ts +8 -0
  529. package/esm/domain/view/viewMetrics/trackBfcacheMetrics.js +14 -0
  530. package/esm/domain/view/viewMetrics/trackBfcacheMetrics.js.map +1 -0
  531. package/esm/domain/view/viewMetrics/trackCommonViewMetrics.d.ts +21 -0
  532. package/esm/domain/view/viewMetrics/trackCommonViewMetrics.js +34 -0
  533. package/esm/domain/view/viewMetrics/trackCommonViewMetrics.js.map +1 -0
  534. package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.d.ts +37 -0
  535. package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js +130 -0
  536. package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js.map +1 -0
  537. package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.d.ts +13 -0
  538. package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js +34 -0
  539. package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js.map +1 -0
  540. package/esm/domain/view/viewMetrics/trackFirstHidden.d.ts +10 -0
  541. package/esm/domain/view/viewMetrics/trackFirstHidden.js +30 -0
  542. package/esm/domain/view/viewMetrics/trackFirstHidden.js.map +1 -0
  543. package/esm/domain/view/viewMetrics/trackFirstInput.d.ts +19 -0
  544. package/esm/domain/view/viewMetrics/trackFirstInput.js +40 -0
  545. package/esm/domain/view/viewMetrics/trackFirstInput.js.map +1 -0
  546. package/esm/domain/view/viewMetrics/trackInitialViewMetrics.d.ts +15 -0
  547. package/esm/domain/view/viewMetrics/trackInitialViewMetrics.js +38 -0
  548. package/esm/domain/view/viewMetrics/trackInitialViewMetrics.js.map +1 -0
  549. package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.d.ts +25 -0
  550. package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js +149 -0
  551. package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js.map +1 -0
  552. package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.d.ts +18 -0
  553. package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js +57 -0
  554. package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js.map +1 -0
  555. package/esm/domain/view/viewMetrics/trackLoadingTime.d.ts +14 -0
  556. package/esm/domain/view/viewMetrics/trackLoadingTime.js +47 -0
  557. package/esm/domain/view/viewMetrics/trackLoadingTime.js.map +1 -0
  558. package/esm/domain/view/viewMetrics/trackNavigationTimings.d.ts +14 -0
  559. package/esm/domain/view/viewMetrics/trackNavigationTimings.js +40 -0
  560. package/esm/domain/view/viewMetrics/trackNavigationTimings.js.map +1 -0
  561. package/esm/domain/view/viewMetrics/trackScrollMetrics.d.ts +25 -0
  562. package/esm/domain/view/viewMetrics/trackScrollMetrics.js +72 -0
  563. package/esm/domain/view/viewMetrics/trackScrollMetrics.js.map +1 -0
  564. package/esm/domain/vital/vitalCollection.d.ts +55 -0
  565. package/esm/domain/vital/vitalCollection.js +107 -0
  566. package/esm/domain/vital/vitalCollection.js.map +1 -0
  567. package/esm/domain/waitPageActivityEnd.d.ts +54 -0
  568. package/esm/domain/waitPageActivityEnd.js +123 -0
  569. package/esm/domain/waitPageActivityEnd.js.map +1 -0
  570. package/esm/domainContext.types.d.ts +39 -0
  571. package/esm/domainContext.types.js +5 -0
  572. package/esm/domainContext.types.js.map +1 -0
  573. package/esm/index.d.ts +41 -0
  574. package/esm/index.js +21 -0
  575. package/esm/index.js.map +1 -0
  576. package/esm/rawRumEvent.types.d.ts +326 -0
  577. package/esm/rawRumEvent.types.js +31 -0
  578. package/esm/rawRumEvent.types.js.map +1 -0
  579. package/esm/rumEvent.types.d.ts +2026 -0
  580. package/esm/rumEvent.types.js +6 -0
  581. package/esm/rumEvent.types.js.map +1 -0
  582. package/esm/transport/formDataTransport.d.ts +16 -0
  583. package/esm/transport/formDataTransport.js +43 -0
  584. package/esm/transport/formDataTransport.js.map +1 -0
  585. package/esm/transport/startRumBatch.d.ts +5 -0
  586. package/esm/transport/startRumBatch.js +30 -0
  587. package/esm/transport/startRumBatch.js.map +1 -0
  588. package/esm/transport/startRumEventBridge.d.ts +2 -0
  589. package/esm/transport/startRumEventBridge.js +8 -0
  590. package/esm/transport/startRumEventBridge.js.map +1 -0
  591. package/package.json +29 -0
  592. package/src/boot/preStartRum.ts +298 -0
  593. package/src/boot/rumPublicApi.ts +830 -0
  594. package/src/boot/startRum.ts +280 -0
  595. package/src/browser/cookieObservable.ts +63 -0
  596. package/src/browser/domMutationObservable.ts +98 -0
  597. package/src/browser/firstInputPolyfill.ts +87 -0
  598. package/src/browser/htmlDomUtils.ts +45 -0
  599. package/src/browser/locationChangeObservable.ts +69 -0
  600. package/src/browser/performanceObservable.ts +324 -0
  601. package/src/browser/performanceUtils.ts +50 -0
  602. package/src/browser/scroll.ts +25 -0
  603. package/src/browser/viewportObservable.ts +44 -0
  604. package/src/browser/windowOpenObservable.ts +7 -0
  605. package/src/domain/action/actionCollection.ts +146 -0
  606. package/src/domain/action/actionNameConstants.ts +20 -0
  607. package/src/domain/action/clickChain.ts +83 -0
  608. package/src/domain/action/computeFrustration.ts +77 -0
  609. package/src/domain/action/getActionNameFromElement.ts +337 -0
  610. package/src/domain/action/interactionSelectorCache.ts +21 -0
  611. package/src/domain/action/listenActionEvents.ts +119 -0
  612. package/src/domain/action/trackClickActions.ts +388 -0
  613. package/src/domain/assembly.ts +141 -0
  614. package/src/domain/configuration/configuration.ts +548 -0
  615. package/src/domain/configuration/index.ts +2 -0
  616. package/src/domain/configuration/jsonPathParser.ts +214 -0
  617. package/src/domain/configuration/remoteConfiguration.ts +304 -0
  618. package/src/domain/configuration/remoteConfiguration.types.ts +147 -0
  619. package/src/domain/contexts/ciVisibilityContext.ts +50 -0
  620. package/src/domain/contexts/connectivityContext.ts +12 -0
  621. package/src/domain/contexts/defaultContext.ts +43 -0
  622. package/src/domain/contexts/displayContext.ts +38 -0
  623. package/src/domain/contexts/featureFlagContext.ts +71 -0
  624. package/src/domain/contexts/internalContext.ts +34 -0
  625. package/src/domain/contexts/pageStateHistory.ts +171 -0
  626. package/src/domain/contexts/sessionContext.ts +59 -0
  627. package/src/domain/contexts/syntheticsContext.ts +33 -0
  628. package/src/domain/contexts/trackingConsentContext.ts +15 -0
  629. package/src/domain/contexts/urlContexts.ts +97 -0
  630. package/src/domain/contexts/userAgentDataContext.ts +36 -0
  631. package/src/domain/contexts/viewHistory.ts +70 -0
  632. package/src/domain/discardNegativeDuration.ts +6 -0
  633. package/src/domain/error/errorCollection.ts +107 -0
  634. package/src/domain/error/trackConsoleError.ts +14 -0
  635. package/src/domain/error/trackReportError.ts +16 -0
  636. package/src/domain/event/eventCollection.ts +53 -0
  637. package/src/domain/getSelectorFromElement.ts +268 -0
  638. package/src/domain/getSessionReplayUrl.ts +47 -0
  639. package/src/domain/hooks.ts +31 -0
  640. package/src/domain/lifeCycle.ts +103 -0
  641. package/src/domain/limitModification.ts +66 -0
  642. package/src/domain/longTask/longTaskCollection.ts +133 -0
  643. package/src/domain/plugins.ts +59 -0
  644. package/src/domain/privacy.ts +355 -0
  645. package/src/domain/privacyConstants.ts +43 -0
  646. package/src/domain/requestCollection.ts +179 -0
  647. package/src/domain/resource/graphql.ts +135 -0
  648. package/src/domain/resource/matchRequestResourceEntry.ts +68 -0
  649. package/src/domain/resource/requestRegistry.ts +52 -0
  650. package/src/domain/resource/resourceCollection.ts +273 -0
  651. package/src/domain/resource/resourceUtils.ts +355 -0
  652. package/src/domain/resource/retrieveInitialDocumentResourceTiming.ts +27 -0
  653. package/src/domain/rumSessionManager.ts +134 -0
  654. package/src/domain/sampler/sampler.ts +63 -0
  655. package/src/domain/startCustomerDataTelemetry.ts +83 -0
  656. package/src/domain/tracing/getDocumentTraceId.ts +90 -0
  657. package/src/domain/tracing/identifier.ts +69 -0
  658. package/src/domain/tracing/sampler.ts +69 -0
  659. package/src/domain/tracing/tracer.ts +248 -0
  660. package/src/domain/tracing/tracer.types.ts +13 -0
  661. package/src/domain/trackEventCounts.ts +67 -0
  662. package/src/domain/view/bfCacheSupport.ts +20 -0
  663. package/src/domain/view/trackViewEventCounts.ts +15 -0
  664. package/src/domain/view/trackViews.ts +431 -0
  665. package/src/domain/view/viewCollection.ts +203 -0
  666. package/src/domain/view/viewMetrics/getClsAttributionImpactedArea.ts +34 -0
  667. package/src/domain/view/viewMetrics/interactionCountPolyfill.ts +55 -0
  668. package/src/domain/view/viewMetrics/startInitialViewMetricsTelemetry.ts +70 -0
  669. package/src/domain/view/viewMetrics/trackBfcacheMetrics.ts +20 -0
  670. package/src/domain/view/viewMetrics/trackCommonViewMetrics.ts +78 -0
  671. package/src/domain/view/viewMetrics/trackCumulativeLayoutShift.ts +180 -0
  672. package/src/domain/view/viewMetrics/trackFirstContentfulPaint.ts +47 -0
  673. package/src/domain/view/viewMetrics/trackFirstHidden.ts +53 -0
  674. package/src/domain/view/viewMetrics/trackFirstInput.ts +59 -0
  675. package/src/domain/view/viewMetrics/trackInitialViewMetrics.ts +66 -0
  676. package/src/domain/view/viewMetrics/trackInteractionToNextPaint.ts +193 -0
  677. package/src/domain/view/viewMetrics/trackLargestContentfulPaint.ts +87 -0
  678. package/src/domain/view/viewMetrics/trackLoadingTime.ts +69 -0
  679. package/src/domain/view/viewMetrics/trackNavigationTimings.ts +66 -0
  680. package/src/domain/view/viewMetrics/trackScrollMetrics.ts +119 -0
  681. package/src/domain/vital/vitalCollection.ts +207 -0
  682. package/src/domain/waitPageActivityEnd.ts +189 -0
  683. package/src/domainContext.types.ts +61 -0
  684. package/src/index.ts +76 -0
  685. package/src/rawRumEvent.types.ts +409 -0
  686. package/src/rumEvent.types.ts +2151 -0
  687. package/src/transport/formDataTransport.ts +85 -0
  688. package/src/transport/startRumBatch.ts +46 -0
  689. package/src/transport/startRumEventBridge.ts +12 -0
@@ -0,0 +1,73 @@
1
+ import type { Context, Duration, PageMayExitEvent, RawError, RelativeTime } from '@kubesense/kubesense-browser-core';
2
+ import { AbstractLifeCycle } from '@kubesense/kubesense-browser-core';
3
+ import type { RumEventDomainContext } from '../domainContext.types';
4
+ import type { RawRumEvent, AssembledRumEvent } from '../rawRumEvent.types';
5
+ import type { RequestCompleteEvent, RequestStartEvent } from './requestCollection';
6
+ import type { AutoAction } from './action/actionCollection';
7
+ import type { ViewEvent, ViewCreatedEvent, ViewEndedEvent, BeforeViewUpdateEvent } from './view/trackViews';
8
+ export declare const enum LifeCycleEventType {
9
+ AUTO_ACTION_COMPLETED = 0,
10
+ BEFORE_VIEW_CREATED = 1,
11
+ VIEW_CREATED = 2,
12
+ BEFORE_VIEW_UPDATED = 3,
13
+ VIEW_UPDATED = 4,
14
+ VIEW_ENDED = 5,
15
+ AFTER_VIEW_ENDED = 6,
16
+ REQUEST_STARTED = 7,
17
+ REQUEST_COMPLETED = 8,
18
+ SESSION_EXPIRED = 9,
19
+ SESSION_RENEWED = 10,
20
+ PAGE_MAY_EXIT = 11,
21
+ RAW_RUM_EVENT_COLLECTED = 12,
22
+ RUM_EVENT_COLLECTED = 13,
23
+ RAW_ERROR_COLLECTED = 14
24
+ }
25
+ declare const LifeCycleEventTypeAsConst: {
26
+ AUTO_ACTION_COMPLETED: LifeCycleEventType.AUTO_ACTION_COMPLETED;
27
+ BEFORE_VIEW_CREATED: LifeCycleEventType.BEFORE_VIEW_CREATED;
28
+ VIEW_CREATED: LifeCycleEventType.VIEW_CREATED;
29
+ BEFORE_VIEW_UPDATED: LifeCycleEventType.BEFORE_VIEW_UPDATED;
30
+ VIEW_UPDATED: LifeCycleEventType.VIEW_UPDATED;
31
+ VIEW_ENDED: LifeCycleEventType.VIEW_ENDED;
32
+ AFTER_VIEW_ENDED: LifeCycleEventType.AFTER_VIEW_ENDED;
33
+ REQUEST_STARTED: LifeCycleEventType.REQUEST_STARTED;
34
+ REQUEST_COMPLETED: LifeCycleEventType.REQUEST_COMPLETED;
35
+ SESSION_EXPIRED: LifeCycleEventType.SESSION_EXPIRED;
36
+ SESSION_RENEWED: LifeCycleEventType.SESSION_RENEWED;
37
+ PAGE_MAY_EXIT: LifeCycleEventType.PAGE_MAY_EXIT;
38
+ RAW_RUM_EVENT_COLLECTED: LifeCycleEventType.RAW_RUM_EVENT_COLLECTED;
39
+ RUM_EVENT_COLLECTED: LifeCycleEventType.RUM_EVENT_COLLECTED;
40
+ RAW_ERROR_COLLECTED: LifeCycleEventType.RAW_ERROR_COLLECTED;
41
+ };
42
+ export interface LifeCycleEventMap {
43
+ [LifeCycleEventTypeAsConst.AUTO_ACTION_COMPLETED]: AutoAction;
44
+ [LifeCycleEventTypeAsConst.BEFORE_VIEW_CREATED]: ViewCreatedEvent;
45
+ [LifeCycleEventTypeAsConst.VIEW_CREATED]: ViewCreatedEvent;
46
+ [LifeCycleEventTypeAsConst.BEFORE_VIEW_UPDATED]: BeforeViewUpdateEvent;
47
+ [LifeCycleEventTypeAsConst.VIEW_UPDATED]: ViewEvent;
48
+ [LifeCycleEventTypeAsConst.VIEW_ENDED]: ViewEndedEvent;
49
+ [LifeCycleEventTypeAsConst.AFTER_VIEW_ENDED]: ViewEndedEvent;
50
+ [LifeCycleEventTypeAsConst.REQUEST_STARTED]: RequestStartEvent;
51
+ [LifeCycleEventTypeAsConst.REQUEST_COMPLETED]: RequestCompleteEvent;
52
+ [LifeCycleEventTypeAsConst.SESSION_EXPIRED]: void;
53
+ [LifeCycleEventTypeAsConst.SESSION_RENEWED]: void;
54
+ [LifeCycleEventTypeAsConst.PAGE_MAY_EXIT]: PageMayExitEvent;
55
+ [LifeCycleEventTypeAsConst.RAW_RUM_EVENT_COLLECTED]: RawRumEventCollectedData;
56
+ [LifeCycleEventTypeAsConst.RUM_EVENT_COLLECTED]: AssembledRumEvent;
57
+ [LifeCycleEventTypeAsConst.RAW_ERROR_COLLECTED]: {
58
+ error: RawError;
59
+ customerContext?: Context;
60
+ };
61
+ }
62
+ export interface RawRumEventCollectedData<E extends RawRumEvent = RawRumEvent> {
63
+ startTime: RelativeTime;
64
+ duration?: Duration;
65
+ customerContext?: Context;
66
+ rawRumEvent: E;
67
+ domainContext: RumEventDomainContext<E['type']>;
68
+ }
69
+ export declare const LifeCycle: {
70
+ new (): AbstractLifeCycle<LifeCycleEventMap>;
71
+ };
72
+ export type LifeCycle = AbstractLifeCycle<LifeCycleEventMap>;
73
+ export {};
@@ -0,0 +1,3 @@
1
+ import { AbstractLifeCycle } from '@kubesense/kubesense-browser-core';
2
+ export const LifeCycle = (AbstractLifeCycle);
3
+ //# sourceMappingURL=lifeCycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifeCycle.js","sourceRoot":"","sources":["../../src/domain/lifeCycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAoGrE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAA,iBAAoC,CAAA,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { Context } from '@kubesense/kubesense-browser-core';
2
+ export type ModifiableFieldPaths = Record<string, 'string' | 'object'>;
3
+ /**
4
+ * Allows declaring and enforcing modifications to specific fields of an object.
5
+ * Only supports modifying properties of an object (even if nested in an array).
6
+ * Does not support array manipulation (adding/removing items).
7
+ */
8
+ export declare function limitModification<T extends Context, Result>(object: T, modifiableFieldPaths: ModifiableFieldPaths, modifier: (object: T) => Result): Result | undefined;
@@ -0,0 +1,43 @@
1
+ import { sanitize, deepClone, getType, objectEntries } from '@kubesense/kubesense-browser-core';
2
+ /**
3
+ * Allows declaring and enforcing modifications to specific fields of an object.
4
+ * Only supports modifying properties of an object (even if nested in an array).
5
+ * Does not support array manipulation (adding/removing items).
6
+ */
7
+ export function limitModification(object, modifiableFieldPaths, modifier) {
8
+ const clone = deepClone(object);
9
+ const result = modifier(clone);
10
+ objectEntries(modifiableFieldPaths).forEach(([fieldPath, fieldType]) =>
11
+ // Traverse both object and clone simultaneously up to the path and apply the modification from the clone to the original object when the type is valid
12
+ setValueAtPath(object, clone, fieldPath.split(/\.|(?=\[\])/), fieldType));
13
+ return result;
14
+ }
15
+ function setValueAtPath(object, clone, pathSegments, fieldType) {
16
+ const [field, ...restPathSegments] = pathSegments;
17
+ if (field === '[]') {
18
+ if (Array.isArray(object) && Array.isArray(clone)) {
19
+ object.forEach((item, i) => setValueAtPath(item, clone[i], restPathSegments, fieldType));
20
+ }
21
+ return;
22
+ }
23
+ if (!isValidObject(object) || !isValidObject(clone)) {
24
+ return;
25
+ }
26
+ if (restPathSegments.length > 0) {
27
+ return setValueAtPath(object[field], clone[field], restPathSegments, fieldType);
28
+ }
29
+ setNestedValue(object, field, clone[field], fieldType);
30
+ }
31
+ function setNestedValue(object, field, value, fieldType) {
32
+ const newType = getType(value);
33
+ if (newType === fieldType) {
34
+ object[field] = sanitize(value);
35
+ }
36
+ else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {
37
+ object[field] = {};
38
+ }
39
+ }
40
+ function isValidObject(object) {
41
+ return getType(object) === 'object';
42
+ }
43
+ //# sourceMappingURL=limitModification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limitModification.js","sourceRoot":"","sources":["../../src/domain/limitModification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AAK/F;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAS,EACT,oBAA0C,EAC1C,QAA+B;IAE/B,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;IAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE9B,aAAa,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE;IACrE,uJAAuJ;IACvJ,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CACzE,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,cAAc,CAAC,MAAe,EAAE,KAAc,EAAE,YAAsB,EAAE,SAA8B;IAC7G,MAAM,CAAC,KAAK,EAAE,GAAG,gBAAgB,CAAC,GAAG,YAAY,CAAA;IAEjD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAA;QAC1F,CAAC;QAED,OAAM;IACR,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,OAAM;IACR,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAA;IACjF,CAAC;IAED,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAA;AACxD,CAAC;AAED,SAAS,cAAc,CACrB,MAA+B,EAC/B,KAAa,EACb,KAAc,EACd,SAA8B;IAE9B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAE9B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;SAAM,IAAI,SAAS,KAAK,QAAQ,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,MAAM,CAAC,EAAE,CAAC;QACrF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;IACpB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAe;IACpC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAA;AACrC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { RelativeTime, ClocksState, Duration } from '@kubesense/kubesense-browser-core';
2
+ import type { LifeCycle } from '../lifeCycle';
3
+ import { RumPerformanceEntryType } from '../../browser/performanceObservable';
4
+ import type { RumConfiguration } from '../configuration';
5
+ export declare const LONG_TASK_ID_HISTORY_TIME_OUT_DELAY: number;
6
+ export interface LongTaskContext {
7
+ id: string;
8
+ startClocks: ClocksState;
9
+ duration: Duration;
10
+ entryType: RumPerformanceEntryType.LONG_ANIMATION_FRAME | RumPerformanceEntryType.LONG_TASK;
11
+ }
12
+ export interface LongTaskContexts {
13
+ findLongTasks: (startTime: RelativeTime) => LongTaskContext[];
14
+ }
15
+ export declare function startLongTaskCollection(lifeCycle: LifeCycle, configuration: RumConfiguration): {
16
+ stop: () => void;
17
+ longTaskContexts: LongTaskContexts;
18
+ };
@@ -0,0 +1,87 @@
1
+ import { toServerDuration, relativeToClocks, generateUUID, createValueHistory, SESSION_TIME_OUT_DELAY, addDuration, } from '@kubesense/kubesense-browser-core';
2
+ import { RumEventType, RumLongTaskEntryType } from '../../rawRumEvent.types';
3
+ import { createPerformanceObservable, RumPerformanceEntryType, supportPerformanceTimingEvent, } from '../../browser/performanceObservable';
4
+ export const LONG_TASK_ID_HISTORY_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;
5
+ export function startLongTaskCollection(lifeCycle, configuration) {
6
+ const history = createValueHistory({
7
+ expireDelay: LONG_TASK_ID_HISTORY_TIME_OUT_DELAY,
8
+ });
9
+ const entryType = supportPerformanceTimingEvent(RumPerformanceEntryType.LONG_ANIMATION_FRAME)
10
+ ? RumPerformanceEntryType.LONG_ANIMATION_FRAME
11
+ : RumPerformanceEntryType.LONG_TASK;
12
+ const subscription = createPerformanceObservable(configuration, {
13
+ type: entryType,
14
+ buffered: true,
15
+ }).subscribe((entries) => {
16
+ for (const entry of entries) {
17
+ if (!configuration.trackLongTasks) {
18
+ break;
19
+ }
20
+ const startClocks = relativeToClocks(entry.startTime);
21
+ const taskId = generateUUID();
22
+ const rawRumEvent = processEntry(entry, startClocks, taskId);
23
+ lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {
24
+ rawRumEvent,
25
+ startTime: startClocks.relative,
26
+ duration: entry.duration,
27
+ domainContext: { performanceEntry: entry },
28
+ });
29
+ history.add({ id: taskId, startClocks, duration: entry.duration, entryType }, startClocks.relative);
30
+ history.closeActive(addDuration(startClocks.relative, entry.duration));
31
+ }
32
+ });
33
+ const longTaskContexts = {
34
+ findLongTasks: (startTime) => history.findAll(startTime),
35
+ };
36
+ return {
37
+ stop: () => {
38
+ subscription.unsubscribe();
39
+ history.stop();
40
+ },
41
+ longTaskContexts,
42
+ };
43
+ }
44
+ function processEntry(entry, startClocks, taskId) {
45
+ const baseEvent = {
46
+ date: startClocks.timeStamp,
47
+ type: RumEventType.LONG_TASK,
48
+ _kubesense: { discarded: false },
49
+ };
50
+ if (entry.entryType === RumPerformanceEntryType.LONG_TASK) {
51
+ return {
52
+ ...baseEvent,
53
+ long_task: {
54
+ id: taskId,
55
+ entry_type: RumLongTaskEntryType.LONG_TASK,
56
+ duration: toServerDuration(entry.duration),
57
+ },
58
+ };
59
+ }
60
+ return {
61
+ ...baseEvent,
62
+ long_task: {
63
+ id: taskId,
64
+ entry_type: RumLongTaskEntryType.LONG_ANIMATION_FRAME,
65
+ duration: toServerDuration(entry.duration),
66
+ blocking_duration: toServerDuration(entry.blockingDuration),
67
+ first_ui_event_timestamp: toServerDuration(entry.firstUIEventTimestamp),
68
+ render_start: toServerDuration(entry.renderStart),
69
+ style_and_layout_start: toServerDuration(entry.styleAndLayoutStart),
70
+ start_time: toServerDuration(entry.startTime),
71
+ scripts: entry.scripts.map((script) => ({
72
+ duration: toServerDuration(script.duration),
73
+ pause_duration: toServerDuration(script.pauseDuration),
74
+ forced_style_and_layout_duration: toServerDuration(script.forcedStyleAndLayoutDuration),
75
+ start_time: toServerDuration(script.startTime),
76
+ execution_start: toServerDuration(script.executionStart),
77
+ source_url: script.sourceURL,
78
+ source_function_name: script.sourceFunctionName,
79
+ source_char_position: script.sourceCharPosition,
80
+ invoker: script.invoker,
81
+ invoker_type: script.invokerType,
82
+ window_attribution: script.windowAttribution,
83
+ })),
84
+ },
85
+ };
86
+ }
87
+ //# sourceMappingURL=longTaskCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"longTaskCollection.js","sourceRoot":"","sources":["../../../src/domain/longTask/longTaskCollection.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,GACZ,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAG5E,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,qCAAqC,CAAA;AAQ5C,MAAM,CAAC,MAAM,mCAAmC,GAAG,sBAAsB,CAAA;AAazE,MAAM,UAAU,uBAAuB,CAAC,SAAoB,EAAE,aAA+B;IAC3F,MAAM,OAAO,GAAG,kBAAkB,CAAkB;QAClD,WAAW,EAAE,mCAAmC;KACjD,CAAC,CAAA;IACF,MAAM,SAAS,GAAG,6BAA6B,CAAC,uBAAuB,CAAC,oBAAoB,CAAC;QAC3F,CAAC,CAAC,uBAAuB,CAAC,oBAAoB;QAC9C,CAAC,CAAC,uBAAuB,CAAC,SAAS,CAAA;IAErC,MAAM,YAAY,GAAG,2BAA2B,CAAC,aAAa,EAAE;QAC9D,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;QACvB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;gBAClC,MAAK;YACP,CAAC;YAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACrD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;YAC7B,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;YAE5D,SAAS,CAAC,MAAM,sDAA6C;gBAC3D,WAAW;gBACX,SAAS,EAAE,WAAW,CAAC,QAAQ;gBAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,aAAa,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE;aAC3C,CAAC,CAAA;YAEF,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;YACnG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxE,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAqB;QACzC,aAAa,EAAE,CAAC,SAAuB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;KACvE,CAAA;IAED,OAAO;QACL,IAAI,EAAE,GAAG,EAAE;YACT,YAAY,CAAC,WAAW,EAAE,CAAA;YAC1B,OAAO,CAAC,IAAI,EAAE,CAAA;QAChB,CAAC;QACD,gBAAgB;KACjB,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CACnB,KAA4E,EAC5E,WAAwB,EACxB,MAAc;IAEd,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,WAAW,CAAC,SAAS;QAC3B,IAAI,EAAE,YAAY,CAAC,SAAS;QAC5B,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;KACjC,CAAA;IAED,IAAI,KAAK,CAAC,SAAS,KAAK,uBAAuB,CAAC,SAAS,EAAE,CAAC;QAC1D,OAAO;YACL,GAAG,SAAS;YACZ,SAAS,EAAE;gBACT,EAAE,EAAE,MAAM;gBACV,UAAU,EAAE,oBAAoB,CAAC,SAAS;gBAC1C,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;aAC3C;SACF,CAAA;IACH,CAAC;IAED,OAAO;QACL,GAAG,SAAS;QACZ,SAAS,EAAE;YACT,EAAE,EAAE,MAAM;YACV,UAAU,EAAE,oBAAoB,CAAC,oBAAoB;YACrD,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC1C,iBAAiB,EAAE,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAC3D,wBAAwB,EAAE,gBAAgB,CAAC,KAAK,CAAC,qBAAqB,CAAC;YACvE,YAAY,EAAE,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC;YACjD,sBAAsB,EAAE,gBAAgB,CAAC,KAAK,CAAC,mBAAmB,CAAC;YACnE,UAAU,EAAE,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC;YAC7C,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAkC,EAAE,EAAE,CAAC,CAAC;gBAClE,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC3C,cAAc,EAAE,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC;gBACtD,gCAAgC,EAAE,gBAAgB,CAAC,MAAM,CAAC,4BAA4B,CAAC;gBACvF,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC9C,eAAe,EAAE,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC;gBACxD,UAAU,EAAE,MAAM,CAAC,SAAS;gBAC5B,oBAAoB,EAAE,MAAM,CAAC,kBAAkB;gBAC/C,oBAAoB,EAAE,MAAM,CAAC,kBAAkB;gBAC/C,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,YAAY,EAAE,MAAM,CAAC,WAAW;gBAChC,kBAAkB,EAAE,MAAM,CAAC,iBAAiB;aAC7C,CAAC,CAAC;SACJ;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { RumPublicApi, Strategy } from '../boot/rumPublicApi';
2
+ import type { StartRumResult } from '../boot/startRum';
3
+ import type { RumInitConfiguration } from './configuration';
4
+ /**
5
+ * onRumStart plugin API options.
6
+ *
7
+ * @experimental
8
+ */
9
+ export interface OnRumStartOptions {
10
+ /**
11
+ * @deprecated Use `addEvent` instead.
12
+ */
13
+ strategy?: Strategy;
14
+ /**
15
+ * Add an event to the RUM browser SDK.
16
+ */
17
+ addEvent?: StartRumResult['addEvent'];
18
+ }
19
+ /**
20
+ * Plugin interface of the RUM browser SDK.
21
+ *
22
+ * The plugins API is unstable and experimental, and may change without
23
+ * notice. Please use only plugins provided by Kubesense matching the version of the SDK you are
24
+ * using.
25
+ *
26
+ * @experimental
27
+ */
28
+ export interface RumPlugin {
29
+ name: string;
30
+ getConfigurationTelemetry?(): Record<string, unknown>;
31
+ onInit?(options: {
32
+ initConfiguration: RumInitConfiguration;
33
+ publicApi: RumPublicApi;
34
+ }): void;
35
+ onRumStart?(options: OnRumStartOptions): void;
36
+ }
37
+ type MethodNames = 'onInit' | 'onRumStart';
38
+ type MethodParameter<MethodName extends MethodNames> = Parameters<NonNullable<RumPlugin[MethodName]>>[0];
39
+ export declare function callPluginsMethod<MethodName extends MethodNames>(plugins: RumPlugin[] | undefined, methodName: MethodName, parameter: MethodParameter<MethodName>): void;
40
+ export {};
@@ -0,0 +1,12 @@
1
+ export function callPluginsMethod(plugins, methodName, parameter) {
2
+ if (!plugins) {
3
+ return;
4
+ }
5
+ for (const plugin of plugins) {
6
+ const method = plugin[methodName];
7
+ if (method) {
8
+ method(parameter);
9
+ }
10
+ }
11
+ }
12
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/domain/plugins.ts"],"names":[],"mappings":"AA4CA,MAAM,UAAU,iBAAiB,CAC/B,OAAgC,EAChC,UAAsB,EACtB,SAAc;IAEd,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAM;IACR,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QACjC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,SAAS,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { NodePrivacyLevel } from './privacyConstants';
2
+ import type { RumConfiguration } from './configuration';
3
+ export type NodePrivacyLevelCache = Map<Node, NodePrivacyLevel>;
4
+ /**
5
+ * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is
6
+ * know, it is best to use something like:
7
+ *
8
+ * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)
9
+ */
10
+ export declare function getNodePrivacyLevel(node: Node, defaultPrivacyLevel: NodePrivacyLevel, cache?: NodePrivacyLevelCache): NodePrivacyLevel;
11
+ /**
12
+ * Reduces the next privacy level based on self + parent privacy levels
13
+ */
14
+ export declare function reducePrivacyLevel(childPrivacyLevel: NodePrivacyLevel | undefined, parentNodePrivacyLevel: NodePrivacyLevel): NodePrivacyLevel;
15
+ /**
16
+ * Determines the node's own privacy level without checking for ancestors.
17
+ */
18
+ export declare function getNodeSelfPrivacyLevel(node: Node): NodePrivacyLevel | undefined;
19
+ /**
20
+ * Helper aiming to unify `mask` and `mask-user-input` privacy levels:
21
+ *
22
+ * In the `mask` case, it is trivial: we should mask the element.
23
+ *
24
+ * In the `mask-user-input` case, we should mask the element only if it is a "form" element or the
25
+ * direct parent is a form element for text nodes).
26
+ *
27
+ * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a
28
+ * node if it is ignored or hidden? it doesn't matter since it won't be serialized).
29
+ */
30
+ export declare function shouldMaskNode(node: Node, privacyLevel: NodePrivacyLevel): boolean;
31
+ export declare function shouldMaskAttribute(tagName: string, attributeName: string, attributeValue: string | null, nodePrivacyLevel: NodePrivacyLevel, configuration: RumConfiguration): boolean;
32
+ export declare function getTextContent(textNode: Node, parentNodePrivacyLevel: NodePrivacyLevel): string | undefined;
33
+ /**
34
+ * TODO: Preserve CSS element order, and record the presence of the tag, just don't render
35
+ * We don't need this logic on the recorder side.
36
+ * For security related meta's, customer can mask themmanually given they
37
+ * are easy to identify in the HEAD tag.
38
+ */
39
+ export declare function shouldIgnoreElement(element: Element): boolean;
40
+ export interface BrowserWindow extends Window {
41
+ $KUBESENSE_ALLOW?: Set<string>;
42
+ }
43
+ export declare function isAllowlisted(text: string): boolean;
44
+ export declare function maskDisallowedTextContent(text: string, fixedMask?: string): string;
@@ -0,0 +1,302 @@
1
+ import { isElementNode, getParentNode, isTextNode } from '../browser/htmlDomUtils';
2
+ import { NodePrivacyLevel, FORM_PRIVATE_TAG_NAMES, CENSORED_STRING_MARK, getPrivacySelector, TEXT_MASKING_CHAR, PRIVACY_ATTR_NAME, } from './privacyConstants';
3
+ import { STABLE_ATTRIBUTES } from './getSelectorFromElement';
4
+ /**
5
+ * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is
6
+ * know, it is best to use something like:
7
+ *
8
+ * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)
9
+ */
10
+ export function getNodePrivacyLevel(node, defaultPrivacyLevel, cache) {
11
+ if (cache && cache.has(node)) {
12
+ return cache.get(node);
13
+ }
14
+ const parentNode = getParentNode(node);
15
+ const parentNodePrivacyLevel = parentNode
16
+ ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache)
17
+ : defaultPrivacyLevel;
18
+ const selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);
19
+ const nodePrivacyLevel = reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);
20
+ if (cache) {
21
+ cache.set(node, nodePrivacyLevel);
22
+ }
23
+ return nodePrivacyLevel;
24
+ }
25
+ /**
26
+ * Reduces the next privacy level based on self + parent privacy levels
27
+ */
28
+ export function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {
29
+ switch (parentNodePrivacyLevel) {
30
+ // These values cannot be overridden
31
+ case NodePrivacyLevel.HIDDEN:
32
+ case NodePrivacyLevel.IGNORE:
33
+ return parentNodePrivacyLevel;
34
+ }
35
+ switch (childPrivacyLevel) {
36
+ case NodePrivacyLevel.ALLOW:
37
+ case NodePrivacyLevel.MASK:
38
+ case NodePrivacyLevel.MASK_USER_INPUT:
39
+ case NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED:
40
+ case NodePrivacyLevel.HIDDEN:
41
+ case NodePrivacyLevel.IGNORE:
42
+ return childPrivacyLevel;
43
+ default:
44
+ return parentNodePrivacyLevel;
45
+ }
46
+ }
47
+ /**
48
+ * Determines the node's own privacy level without checking for ancestors.
49
+ */
50
+ export function getNodeSelfPrivacyLevel(node) {
51
+ // Only Element types can have a privacy level set
52
+ if (!isElementNode(node)) {
53
+ return;
54
+ }
55
+ // Overrules for replay purpose
56
+ if (node.tagName === 'BASE') {
57
+ return NodePrivacyLevel.ALLOW;
58
+ }
59
+ // Overrules to enforce end-user protection
60
+ if (node.tagName === 'INPUT') {
61
+ const inputElement = node;
62
+ if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {
63
+ return NodePrivacyLevel.MASK;
64
+ }
65
+ if (inputElement.type === 'hidden') {
66
+ return NodePrivacyLevel.MASK;
67
+ }
68
+ const autocomplete = inputElement.getAttribute('autocomplete');
69
+ // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year/new-password/current-password]
70
+ if (autocomplete && (autocomplete.startsWith('cc-') || autocomplete.endsWith('-password'))) {
71
+ return NodePrivacyLevel.MASK;
72
+ }
73
+ }
74
+ // Check HTML privacy attributes and classes
75
+ if (node.matches(getPrivacySelector(NodePrivacyLevel.HIDDEN))) {
76
+ return NodePrivacyLevel.HIDDEN;
77
+ }
78
+ if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK))) {
79
+ return NodePrivacyLevel.MASK;
80
+ }
81
+ if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED))) {
82
+ return NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED;
83
+ }
84
+ if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK_USER_INPUT))) {
85
+ return NodePrivacyLevel.MASK_USER_INPUT;
86
+ }
87
+ if (node.matches(getPrivacySelector(NodePrivacyLevel.ALLOW))) {
88
+ return NodePrivacyLevel.ALLOW;
89
+ }
90
+ if (shouldIgnoreElement(node)) {
91
+ return NodePrivacyLevel.IGNORE;
92
+ }
93
+ }
94
+ /**
95
+ * Helper aiming to unify `mask` and `mask-user-input` privacy levels:
96
+ *
97
+ * In the `mask` case, it is trivial: we should mask the element.
98
+ *
99
+ * In the `mask-user-input` case, we should mask the element only if it is a "form" element or the
100
+ * direct parent is a form element for text nodes).
101
+ *
102
+ * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a
103
+ * node if it is ignored or hidden? it doesn't matter since it won't be serialized).
104
+ */
105
+ export function shouldMaskNode(node, privacyLevel) {
106
+ switch (privacyLevel) {
107
+ case NodePrivacyLevel.MASK:
108
+ case NodePrivacyLevel.HIDDEN:
109
+ case NodePrivacyLevel.IGNORE:
110
+ return true;
111
+ case NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED:
112
+ if (isTextNode(node)) {
113
+ // Always return true if our parent is a form element, like MASK_USER_INPUT.
114
+ // Otherwise, decide whether to mask based on the allowlist.
115
+ return isFormElement(node.parentNode) ? true : !isAllowlisted(node.textContent || '');
116
+ }
117
+ // Always return true if we're a form element, like MASK_USER_INPUT.
118
+ // Otherwise, return false; MASK_UNLESS_ALLOWLISTED only directly masks text nodes.
119
+ return isFormElement(node);
120
+ case NodePrivacyLevel.MASK_USER_INPUT:
121
+ return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);
122
+ default:
123
+ return false;
124
+ }
125
+ }
126
+ export function shouldMaskAttribute(tagName, attributeName, attributeValue, nodePrivacyLevel, configuration) {
127
+ if (nodePrivacyLevel !== NodePrivacyLevel.MASK && nodePrivacyLevel !== NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED) {
128
+ return false;
129
+ }
130
+ if (attributeName === PRIVACY_ATTR_NAME ||
131
+ STABLE_ATTRIBUTES.includes(attributeName) ||
132
+ attributeName === configuration.actionNameAttribute) {
133
+ return false;
134
+ }
135
+ switch (attributeName) {
136
+ case 'title':
137
+ case 'alt':
138
+ case 'placeholder':
139
+ case 'aria-label':
140
+ case 'name':
141
+ return true;
142
+ }
143
+ if (tagName === 'A' && attributeName === 'href') {
144
+ return true;
145
+ }
146
+ if (tagName === 'IFRAME' && attributeName === 'srcdoc') {
147
+ return true;
148
+ }
149
+ if (attributeValue && attributeName.startsWith('data-')) {
150
+ return true;
151
+ }
152
+ if ((tagName === 'IMG' || tagName === 'SOURCE') && (attributeName === 'src' || attributeName === 'srcset')) {
153
+ return true;
154
+ }
155
+ return false;
156
+ }
157
+ function isFormElement(node) {
158
+ if (!node || node.nodeType !== node.ELEMENT_NODE) {
159
+ return false;
160
+ }
161
+ const element = node;
162
+ if (element.tagName === 'INPUT') {
163
+ switch (element.type) {
164
+ case 'button':
165
+ case 'color':
166
+ case 'reset':
167
+ case 'submit':
168
+ return false;
169
+ }
170
+ }
171
+ return !!FORM_PRIVATE_TAG_NAMES[element.tagName];
172
+ }
173
+ /**
174
+ * Text censoring non-destructively maintains whitespace characters in order to preserve text shape
175
+ * during replay.
176
+ */
177
+ const censorText = (text) => text.replace(/\S/g, TEXT_MASKING_CHAR);
178
+ export function getTextContent(textNode, parentNodePrivacyLevel) {
179
+ var _a;
180
+ // The parent node may not be a html element which has a tagName attribute.
181
+ // So just let it be undefined which is ok in this use case.
182
+ const parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;
183
+ let textContent = textNode.textContent || '';
184
+ const shouldIgnoreWhiteSpace = parentTagName === 'HEAD';
185
+ if (shouldIgnoreWhiteSpace && !textContent.trim()) {
186
+ return;
187
+ }
188
+ const nodePrivacyLevel = parentNodePrivacyLevel;
189
+ const isScript = parentTagName === 'SCRIPT';
190
+ if (isScript) {
191
+ // For perf reasons, we don't record script (heuristic)
192
+ textContent = CENSORED_STRING_MARK;
193
+ }
194
+ else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {
195
+ // Should never occur, but just in case, we set to CENSORED_MARK.
196
+ textContent = CENSORED_STRING_MARK;
197
+ }
198
+ else if (shouldMaskNode(textNode, nodePrivacyLevel)) {
199
+ if (
200
+ // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP
201
+ parentTagName === 'DATALIST' ||
202
+ parentTagName === 'SELECT' ||
203
+ parentTagName === 'OPTGROUP') {
204
+ if (!textContent.trim()) {
205
+ return;
206
+ }
207
+ }
208
+ else if (parentTagName === 'OPTION') {
209
+ // <Option> has low entropy in charset + text length, so use `CENSORED_STRING_MARK` when masked
210
+ textContent = CENSORED_STRING_MARK;
211
+ }
212
+ else if (nodePrivacyLevel === NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED) {
213
+ textContent = maskDisallowedTextContent(textContent);
214
+ }
215
+ else {
216
+ textContent = censorText(textContent);
217
+ }
218
+ }
219
+ return textContent;
220
+ }
221
+ /**
222
+ * TODO: Preserve CSS element order, and record the presence of the tag, just don't render
223
+ * We don't need this logic on the recorder side.
224
+ * For security related meta's, customer can mask themmanually given they
225
+ * are easy to identify in the HEAD tag.
226
+ */
227
+ export function shouldIgnoreElement(element) {
228
+ if (element.nodeName === 'SCRIPT') {
229
+ return true;
230
+ }
231
+ if (element.nodeName === 'LINK') {
232
+ const relAttribute = getLowerCaseAttribute('rel');
233
+ return (
234
+ // Link as script - Ignore only when rel=preload, modulepreload or prefetch
235
+ (/preload|prefetch/i.test(relAttribute) && getLowerCaseAttribute('as') === 'script') ||
236
+ // Favicons
237
+ relAttribute === 'shortcut icon' ||
238
+ relAttribute === 'icon');
239
+ }
240
+ if (element.nodeName === 'META') {
241
+ const nameAttribute = getLowerCaseAttribute('name');
242
+ const relAttribute = getLowerCaseAttribute('rel');
243
+ const propertyAttribute = getLowerCaseAttribute('property');
244
+ return (
245
+ // Favicons
246
+ /^msapplication-tile(image|color)$/.test(nameAttribute) ||
247
+ nameAttribute === 'application-name' ||
248
+ relAttribute === 'icon' ||
249
+ relAttribute === 'apple-touch-icon' ||
250
+ relAttribute === 'shortcut icon' ||
251
+ // Description
252
+ nameAttribute === 'keywords' ||
253
+ nameAttribute === 'description' ||
254
+ // Social
255
+ /^(og|twitter|fb):/.test(propertyAttribute) ||
256
+ /^(og|twitter):/.test(nameAttribute) ||
257
+ nameAttribute === 'pinterest' ||
258
+ // Robots
259
+ nameAttribute === 'robots' ||
260
+ nameAttribute === 'googlebot' ||
261
+ nameAttribute === 'bingbot' ||
262
+ // Http headers. Ex: X-UA-Compatible, Content-Type, Content-Language, cache-control,
263
+ // X-Translated-By
264
+ element.hasAttribute('http-equiv') ||
265
+ // Authorship
266
+ nameAttribute === 'author' ||
267
+ nameAttribute === 'generator' ||
268
+ nameAttribute === 'framework' ||
269
+ nameAttribute === 'publisher' ||
270
+ nameAttribute === 'progid' ||
271
+ /^article:/.test(propertyAttribute) ||
272
+ /^product:/.test(propertyAttribute) ||
273
+ // Verification
274
+ nameAttribute === 'google-site-verification' ||
275
+ nameAttribute === 'yandex-verification' ||
276
+ nameAttribute === 'csrf-token' ||
277
+ nameAttribute === 'p:domain_verify' ||
278
+ nameAttribute === 'verify-v1' ||
279
+ nameAttribute === 'verification' ||
280
+ nameAttribute === 'shopify-checkout-api-token');
281
+ }
282
+ function getLowerCaseAttribute(name) {
283
+ return (element.getAttribute(name) || '').toLowerCase();
284
+ }
285
+ return false;
286
+ }
287
+ export function isAllowlisted(text) {
288
+ var _a;
289
+ if (!text || !text.trim()) {
290
+ return true;
291
+ }
292
+ // We are using toLocaleLowerCase when adding to the allowlist to avoid case sensitivity
293
+ // so we need to do the same here
294
+ return ((_a = window.$KUBESENSE_ALLOW) === null || _a === void 0 ? void 0 : _a.has(text.toLocaleLowerCase())) || false;
295
+ }
296
+ export function maskDisallowedTextContent(text, fixedMask) {
297
+ if (isAllowlisted(text)) {
298
+ return text;
299
+ }
300
+ return fixedMask || censorText(text);
301
+ }
302
+ //# sourceMappingURL=privacy.js.map