@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 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/domain/plugins.ts"],"names":[],"mappings":";;AA4CA,8CAcC;AAdD,SAAgB,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"}
1
+ {"version":3,"file":"plugins.js","names":["isThenable"],"sources":["../../src/domain/plugins.ts"],"sourcesContent":["import { isThenable } from '@kubesense/kubesense-browser-core'\nimport type { RumPublicApi } from '../boot/rumPublicApi'\nimport type { StartRumResult } from '../boot/startRum'\nimport type { RumInitConfiguration } from './configuration'\nimport type { AssembleHook } from './hooks'\n\n/**\n * onInit plugin API options.\n *\n * @experimental\n */\nexport interface RumPluginOnInitOptions {\n initConfiguration: RumInitConfiguration\n publicApi: RumPublicApi\n /**\n * Register a callback invoked when a RUM event is assembled, so plugins can enrich or override\n * event fields before they are sent. Callbacks registered in `onInit` run before any event is\n * assembled, including events buffered during the pre-start phase.\n */\n registerAssembleEventHook: AssembleHook['register']\n}\n\n/**\n * onRumStart plugin API options.\n *\n * @experimental\n */\nexport interface OnRumStartOptions {\n /**\n * Add an event to the RUM browser SDK.\n */\n addEvent?: StartRumResult['addEvent']\n /**\n * Add a custom error to the RUM browser SDK.\n */\n addError?: StartRumResult['addError']\n}\n\n/**\n * Plugin interface of the RUM browser SDK.\n *\n * The plugins API is unstable and experimental, and may change without\n * notice. Please use only plugins provided by KubeSense matching the version of the SDK you are\n * using.\n *\n * `onInit` may abort the SDK initialization by returning (or resolving to) `false`. All plugins'\n * `onInit` are called concurrently and independently; a Promise defers the actual initialization\n * until it resolves, but does not delay any other plugin's `onInit` call.\n *\n * @experimental\n */\nexport interface RumPlugin {\n name: string\n getConfigurationTelemetry?(): Record<string, unknown>\n onInit?(options: RumPluginOnInitOptions): false | void | Promise<false | void>\n onRumStart?(options: OnRumStartOptions): void\n}\n\n/**\n * Calls every plugin's `onInit` method concurrently, without waiting for one to resolve before\n * calling the next. Stays synchronous as long as no plugin returns a thenable.\n * Returns `false` if any plugin returned (or resolved to) `false`, `true` otherwise.\n */\nexport function callPluginsOnInit(\n plugins: RumPlugin[] | undefined,\n parameter: RumPluginOnInitOptions\n): boolean | Promise<boolean> {\n if (!plugins) {\n return true\n }\n\n const results = plugins.map((plugin) => plugin.onInit?.(parameter))\n\n if (results.some(isThenable)) {\n return Promise.all(results as Array<Promise<false | void>>).then((results) => !results.includes(false))\n }\n\n return !results.includes(false)\n}\n\n/**\n * Calls each plugin's `onRumStart` method in order.\n */\nexport function callPluginsOnRumStart(plugins: RumPlugin[] | undefined, options: OnRumStartOptions): void {\n for (const plugin of plugins ?? []) {\n plugin.onRumStart?.(options)\n }\n}\n"],"mappings":";;;;;;;AA+DA,SAAgB,kBACd,SACA,WAC4B;CAC5B,IAAI,CAAC,SACH,OAAO;CAGT,MAAM,UAAU,QAAQ,KAAK,WAAW,OAAO,SAAS,SAAS,CAAC;CAElE,IAAI,QAAQ,KAAKA,kCAAAA,UAAU,GACzB,OAAO,QAAQ,IAAI,OAAuC,CAAC,CAAC,MAAM,YAAY,CAAC,QAAQ,SAAS,KAAK,CAAC;CAGxG,OAAO,CAAC,QAAQ,SAAS,KAAK;AAChC;;;;AAKA,SAAgB,sBAAsB,SAAkC,SAAkC;CACxG,KAAK,MAAM,UAAU,WAAW,CAAC,GAC/B,OAAO,aAAa,OAAO;AAE/B"}
@@ -29,7 +29,12 @@ export declare function getNodeSelfPrivacyLevel(node: Node): NodePrivacyLevel |
29
29
  */
30
30
  export declare function shouldMaskNode(node: Node, privacyLevel: NodePrivacyLevel): boolean;
31
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;
32
+ /**
33
+ * Text censoring non-destructively maintains whitespace characters in order to preserve text shape
34
+ * during replay.
35
+ */
36
+ export declare function censorText(text: string): string;
37
+ export declare function getTextContent(textNode: Node, parentNodePrivacyLevel: NodePrivacyLevel): string;
33
38
  /**
34
39
  * TODO: Preserve CSS element order, and record the presence of the tag, just don't render
35
40
  * We don't need this logic on the recorder side.
@@ -1,313 +1,170 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getNodePrivacyLevel = getNodePrivacyLevel;
4
- exports.reducePrivacyLevel = reducePrivacyLevel;
5
- exports.getNodeSelfPrivacyLevel = getNodeSelfPrivacyLevel;
6
- exports.shouldMaskNode = shouldMaskNode;
7
- exports.shouldMaskAttribute = shouldMaskAttribute;
8
- exports.getTextContent = getTextContent;
9
- exports.shouldIgnoreElement = shouldIgnoreElement;
10
- exports.isAllowlisted = isAllowlisted;
11
- exports.maskDisallowedTextContent = maskDisallowedTextContent;
12
- const htmlDomUtils_1 = require("../browser/htmlDomUtils");
13
- const privacyConstants_1 = require("./privacyConstants");
14
- const getSelectorFromElement_1 = require("./getSelectorFromElement");
1
+ const require_htmlDomUtils = require("../browser/htmlDomUtils.js");
2
+ const require_getSelectorFromElement = require("./getSelectorFromElement.js");
3
+ const require_privacyConstants = require("./privacyConstants.js");
4
+ //#region src/domain/privacy.ts
15
5
  /**
16
- * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is
17
- * know, it is best to use something like:
18
- *
19
- * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)
20
- */
6
+ * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is
7
+ * know, it is best to use something like:
8
+ *
9
+ * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)
10
+ */
21
11
  function getNodePrivacyLevel(node, defaultPrivacyLevel, cache) {
22
- if (cache && cache.has(node)) {
23
- return cache.get(node);
24
- }
25
- const parentNode = (0, htmlDomUtils_1.getParentNode)(node);
26
- const parentNodePrivacyLevel = parentNode
27
- ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache)
28
- : defaultPrivacyLevel;
29
- const selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);
30
- const nodePrivacyLevel = reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);
31
- if (cache) {
32
- cache.set(node, nodePrivacyLevel);
33
- }
34
- return nodePrivacyLevel;
12
+ if (cache?.has(node)) return cache.get(node);
13
+ const parentNode = require_htmlDomUtils.getParentNode(node);
14
+ const parentNodePrivacyLevel = parentNode ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache) : defaultPrivacyLevel;
15
+ const nodePrivacyLevel = reducePrivacyLevel(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel);
16
+ if (cache) cache.set(node, nodePrivacyLevel);
17
+ return nodePrivacyLevel;
35
18
  }
36
19
  /**
37
- * Reduces the next privacy level based on self + parent privacy levels
38
- */
20
+ * Reduces the next privacy level based on self + parent privacy levels
21
+ */
39
22
  function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {
40
- switch (parentNodePrivacyLevel) {
41
- // These values cannot be overridden
42
- case privacyConstants_1.NodePrivacyLevel.HIDDEN:
43
- case privacyConstants_1.NodePrivacyLevel.IGNORE:
44
- return parentNodePrivacyLevel;
45
- }
46
- switch (childPrivacyLevel) {
47
- case privacyConstants_1.NodePrivacyLevel.ALLOW:
48
- case privacyConstants_1.NodePrivacyLevel.MASK:
49
- case privacyConstants_1.NodePrivacyLevel.MASK_USER_INPUT:
50
- case privacyConstants_1.NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED:
51
- case privacyConstants_1.NodePrivacyLevel.HIDDEN:
52
- case privacyConstants_1.NodePrivacyLevel.IGNORE:
53
- return childPrivacyLevel;
54
- default:
55
- return parentNodePrivacyLevel;
56
- }
23
+ switch (parentNodePrivacyLevel) {
24
+ case require_privacyConstants.NodePrivacyLevel.HIDDEN:
25
+ case require_privacyConstants.NodePrivacyLevel.IGNORE: return parentNodePrivacyLevel;
26
+ }
27
+ switch (childPrivacyLevel) {
28
+ case require_privacyConstants.NodePrivacyLevel.ALLOW:
29
+ case require_privacyConstants.NodePrivacyLevel.MASK:
30
+ case require_privacyConstants.NodePrivacyLevel.MASK_USER_INPUT:
31
+ case require_privacyConstants.NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED:
32
+ case require_privacyConstants.NodePrivacyLevel.HIDDEN:
33
+ case require_privacyConstants.NodePrivacyLevel.IGNORE: return childPrivacyLevel;
34
+ default: return parentNodePrivacyLevel;
35
+ }
57
36
  }
58
37
  /**
59
- * Determines the node's own privacy level without checking for ancestors.
60
- */
38
+ * Determines the node's own privacy level without checking for ancestors.
39
+ */
61
40
  function getNodeSelfPrivacyLevel(node) {
62
- // Only Element types can have a privacy level set
63
- if (!(0, htmlDomUtils_1.isElementNode)(node)) {
64
- return;
65
- }
66
- // Overrules for replay purpose
67
- if (node.tagName === 'BASE') {
68
- return privacyConstants_1.NodePrivacyLevel.ALLOW;
69
- }
70
- // Overrules to enforce end-user protection
71
- if (node.tagName === 'INPUT') {
72
- const inputElement = node;
73
- if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {
74
- return privacyConstants_1.NodePrivacyLevel.MASK;
75
- }
76
- if (inputElement.type === 'hidden') {
77
- return privacyConstants_1.NodePrivacyLevel.MASK;
78
- }
79
- const autocomplete = inputElement.getAttribute('autocomplete');
80
- // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year/new-password/current-password]
81
- if (autocomplete && (autocomplete.startsWith('cc-') || autocomplete.endsWith('-password'))) {
82
- return privacyConstants_1.NodePrivacyLevel.MASK;
83
- }
84
- }
85
- // Check HTML privacy attributes and classes
86
- if (node.matches((0, privacyConstants_1.getPrivacySelector)(privacyConstants_1.NodePrivacyLevel.HIDDEN))) {
87
- return privacyConstants_1.NodePrivacyLevel.HIDDEN;
88
- }
89
- if (node.matches((0, privacyConstants_1.getPrivacySelector)(privacyConstants_1.NodePrivacyLevel.MASK))) {
90
- return privacyConstants_1.NodePrivacyLevel.MASK;
91
- }
92
- if (node.matches((0, privacyConstants_1.getPrivacySelector)(privacyConstants_1.NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED))) {
93
- return privacyConstants_1.NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED;
94
- }
95
- if (node.matches((0, privacyConstants_1.getPrivacySelector)(privacyConstants_1.NodePrivacyLevel.MASK_USER_INPUT))) {
96
- return privacyConstants_1.NodePrivacyLevel.MASK_USER_INPUT;
97
- }
98
- if (node.matches((0, privacyConstants_1.getPrivacySelector)(privacyConstants_1.NodePrivacyLevel.ALLOW))) {
99
- return privacyConstants_1.NodePrivacyLevel.ALLOW;
100
- }
101
- if (shouldIgnoreElement(node)) {
102
- return privacyConstants_1.NodePrivacyLevel.IGNORE;
103
- }
41
+ if (!require_htmlDomUtils.isElementNode(node)) return;
42
+ if (node.tagName === "BASE") return require_privacyConstants.NodePrivacyLevel.ALLOW;
43
+ if (node.tagName === "INPUT") {
44
+ const inputElement = node;
45
+ if (inputElement.type === "password" || inputElement.type === "email" || inputElement.type === "tel") return require_privacyConstants.NodePrivacyLevel.MASK;
46
+ if (inputElement.type === "hidden") return require_privacyConstants.NodePrivacyLevel.MASK;
47
+ const autocomplete = inputElement.getAttribute("autocomplete");
48
+ if (autocomplete && (autocomplete.startsWith("cc-") || autocomplete.endsWith("-password"))) return require_privacyConstants.NodePrivacyLevel.MASK;
49
+ }
50
+ if (node.matches(require_privacyConstants.getPrivacySelector(require_privacyConstants.NodePrivacyLevel.HIDDEN))) return require_privacyConstants.NodePrivacyLevel.HIDDEN;
51
+ if (node.matches(require_privacyConstants.getPrivacySelector(require_privacyConstants.NodePrivacyLevel.MASK))) return require_privacyConstants.NodePrivacyLevel.MASK;
52
+ if (node.matches(require_privacyConstants.getPrivacySelector(require_privacyConstants.NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED))) return require_privacyConstants.NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED;
53
+ if (node.matches(require_privacyConstants.getPrivacySelector(require_privacyConstants.NodePrivacyLevel.MASK_USER_INPUT))) return require_privacyConstants.NodePrivacyLevel.MASK_USER_INPUT;
54
+ if (node.matches(require_privacyConstants.getPrivacySelector(require_privacyConstants.NodePrivacyLevel.ALLOW))) return require_privacyConstants.NodePrivacyLevel.ALLOW;
55
+ if (shouldIgnoreElement(node)) return require_privacyConstants.NodePrivacyLevel.IGNORE;
104
56
  }
105
57
  /**
106
- * Helper aiming to unify `mask` and `mask-user-input` privacy levels:
107
- *
108
- * In the `mask` case, it is trivial: we should mask the element.
109
- *
110
- * In the `mask-user-input` case, we should mask the element only if it is a "form" element or the
111
- * direct parent is a form element for text nodes).
112
- *
113
- * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a
114
- * node if it is ignored or hidden? it doesn't matter since it won't be serialized).
115
- */
58
+ * Helper aiming to unify `mask` and `mask-user-input` privacy levels:
59
+ *
60
+ * In the `mask` case, it is trivial: we should mask the element.
61
+ *
62
+ * In the `mask-user-input` case, we should mask the element only if it is a "form" element or the
63
+ * direct parent is a form element for text nodes).
64
+ *
65
+ * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a
66
+ * node if it is ignored or hidden? it doesn't matter since it won't be serialized).
67
+ */
116
68
  function shouldMaskNode(node, privacyLevel) {
117
- switch (privacyLevel) {
118
- case privacyConstants_1.NodePrivacyLevel.MASK:
119
- case privacyConstants_1.NodePrivacyLevel.HIDDEN:
120
- case privacyConstants_1.NodePrivacyLevel.IGNORE:
121
- return true;
122
- case privacyConstants_1.NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED:
123
- if ((0, htmlDomUtils_1.isTextNode)(node)) {
124
- // Always return true if our parent is a form element, like MASK_USER_INPUT.
125
- // Otherwise, decide whether to mask based on the allowlist.
126
- return isFormElement(node.parentNode) ? true : !isAllowlisted(node.textContent || '');
127
- }
128
- // Always return true if we're a form element, like MASK_USER_INPUT.
129
- // Otherwise, return false; MASK_UNLESS_ALLOWLISTED only directly masks text nodes.
130
- return isFormElement(node);
131
- case privacyConstants_1.NodePrivacyLevel.MASK_USER_INPUT:
132
- return (0, htmlDomUtils_1.isTextNode)(node) ? isFormElement(node.parentNode) : isFormElement(node);
133
- default:
134
- return false;
135
- }
69
+ switch (privacyLevel) {
70
+ case require_privacyConstants.NodePrivacyLevel.MASK:
71
+ case require_privacyConstants.NodePrivacyLevel.HIDDEN:
72
+ case require_privacyConstants.NodePrivacyLevel.IGNORE: return true;
73
+ case require_privacyConstants.NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED:
74
+ if (require_htmlDomUtils.isTextNode(node)) return isFormElement(node.parentNode) ? true : !isAllowlisted(node.textContent || "");
75
+ return isFormElement(node);
76
+ case require_privacyConstants.NodePrivacyLevel.MASK_USER_INPUT: return require_htmlDomUtils.isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);
77
+ default: return false;
78
+ }
136
79
  }
137
80
  function shouldMaskAttribute(tagName, attributeName, attributeValue, nodePrivacyLevel, configuration) {
138
- if (nodePrivacyLevel !== privacyConstants_1.NodePrivacyLevel.MASK && nodePrivacyLevel !== privacyConstants_1.NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED) {
139
- return false;
140
- }
141
- if (attributeName === privacyConstants_1.PRIVACY_ATTR_NAME ||
142
- getSelectorFromElement_1.STABLE_ATTRIBUTES.includes(attributeName) ||
143
- attributeName === configuration.actionNameAttribute) {
144
- return false;
145
- }
146
- switch (attributeName) {
147
- case 'title':
148
- case 'alt':
149
- case 'placeholder':
150
- case 'aria-label':
151
- case 'name':
152
- return true;
153
- }
154
- if (tagName === 'A' && attributeName === 'href') {
155
- return true;
156
- }
157
- if (tagName === 'IFRAME' && attributeName === 'srcdoc') {
158
- return true;
159
- }
160
- if (attributeValue && attributeName.startsWith('data-')) {
161
- return true;
162
- }
163
- if ((tagName === 'IMG' || tagName === 'SOURCE') && (attributeName === 'src' || attributeName === 'srcset')) {
164
- return true;
165
- }
166
- return false;
81
+ if (nodePrivacyLevel !== require_privacyConstants.NodePrivacyLevel.MASK && nodePrivacyLevel !== require_privacyConstants.NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED) return false;
82
+ if (attributeName === "data-kubesense-privacy" || require_getSelectorFromElement.STABLE_ATTRIBUTES.includes(attributeName) || attributeName === configuration.actionNameAttribute) return false;
83
+ switch (attributeName) {
84
+ case "title":
85
+ case "alt":
86
+ case "placeholder":
87
+ case "aria-label":
88
+ case "name": return true;
89
+ }
90
+ if (tagName === "A" && attributeName === "href") return true;
91
+ if (tagName === "IFRAME" && attributeName === "srcdoc") return true;
92
+ if (attributeValue && attributeName.startsWith("data-")) return true;
93
+ if ((tagName === "IMG" || tagName === "SOURCE") && (attributeName === "src" || attributeName === "srcset")) return true;
94
+ return false;
167
95
  }
168
96
  function isFormElement(node) {
169
- if (!node || node.nodeType !== node.ELEMENT_NODE) {
170
- return false;
171
- }
172
- const element = node;
173
- if (element.tagName === 'INPUT') {
174
- switch (element.type) {
175
- case 'button':
176
- case 'color':
177
- case 'reset':
178
- case 'submit':
179
- return false;
180
- }
181
- }
182
- return !!privacyConstants_1.FORM_PRIVATE_TAG_NAMES[element.tagName];
97
+ if (!node || node.nodeType !== node.ELEMENT_NODE) return false;
98
+ const element = node;
99
+ if (element.tagName === "INPUT") switch (element.type) {
100
+ case "button":
101
+ case "color":
102
+ case "reset":
103
+ case "submit": return false;
104
+ }
105
+ return !!require_privacyConstants.FORM_PRIVATE_TAG_NAMES[element.tagName];
183
106
  }
184
107
  /**
185
- * Text censoring non-destructively maintains whitespace characters in order to preserve text shape
186
- * during replay.
187
- */
188
- const censorText = (text) => text.replace(/\S/g, privacyConstants_1.TEXT_MASKING_CHAR);
108
+ * Text censoring non-destructively maintains whitespace characters in order to preserve text shape
109
+ * during replay.
110
+ */
111
+ function censorText(text) {
112
+ return text.replace(/\S/g, "x");
113
+ }
189
114
  function getTextContent(textNode, parentNodePrivacyLevel) {
190
- var _a;
191
- // The parent node may not be a html element which has a tagName attribute.
192
- // So just let it be undefined which is ok in this use case.
193
- const parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;
194
- let textContent = textNode.textContent || '';
195
- const shouldIgnoreWhiteSpace = parentTagName === 'HEAD';
196
- if (shouldIgnoreWhiteSpace && !textContent.trim()) {
197
- return;
198
- }
199
- const nodePrivacyLevel = parentNodePrivacyLevel;
200
- const isScript = parentTagName === 'SCRIPT';
201
- if (isScript) {
202
- // For perf reasons, we don't record script (heuristic)
203
- textContent = privacyConstants_1.CENSORED_STRING_MARK;
204
- }
205
- else if (nodePrivacyLevel === privacyConstants_1.NodePrivacyLevel.HIDDEN) {
206
- // Should never occur, but just in case, we set to CENSORED_MARK.
207
- textContent = privacyConstants_1.CENSORED_STRING_MARK;
208
- }
209
- else if (shouldMaskNode(textNode, nodePrivacyLevel)) {
210
- if (
211
- // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP
212
- parentTagName === 'DATALIST' ||
213
- parentTagName === 'SELECT' ||
214
- parentTagName === 'OPTGROUP') {
215
- if (!textContent.trim()) {
216
- return;
217
- }
218
- }
219
- else if (parentTagName === 'OPTION') {
220
- // <Option> has low entropy in charset + text length, so use `CENSORED_STRING_MARK` when masked
221
- textContent = privacyConstants_1.CENSORED_STRING_MARK;
222
- }
223
- else if (nodePrivacyLevel === privacyConstants_1.NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED) {
224
- textContent = maskDisallowedTextContent(textContent);
225
- }
226
- else {
227
- textContent = censorText(textContent);
228
- }
229
- }
230
- return textContent;
115
+ const parentTagName = textNode.parentElement?.tagName;
116
+ let textContent = textNode.textContent || "";
117
+ const nodePrivacyLevel = parentNodePrivacyLevel;
118
+ if (parentTagName === "SCRIPT") textContent = "***";
119
+ else if (nodePrivacyLevel === require_privacyConstants.NodePrivacyLevel.HIDDEN) textContent = "***";
120
+ else if (shouldMaskNode(textNode, nodePrivacyLevel)) {
121
+ if (parentTagName === "DATALIST" || parentTagName === "SELECT" || parentTagName === "OPTGROUP") {} else if (parentTagName === "OPTION") textContent = "***";
122
+ else textContent = censorText(textContent);
123
+ }
124
+ if (parentTagName === "HEAD" && !textContent.trim()) return "";
125
+ return textContent;
231
126
  }
232
127
  /**
233
- * TODO: Preserve CSS element order, and record the presence of the tag, just don't render
234
- * We don't need this logic on the recorder side.
235
- * For security related meta's, customer can mask themmanually given they
236
- * are easy to identify in the HEAD tag.
237
- */
128
+ * TODO: Preserve CSS element order, and record the presence of the tag, just don't render
129
+ * We don't need this logic on the recorder side.
130
+ * For security related meta's, customer can mask themmanually given they
131
+ * are easy to identify in the HEAD tag.
132
+ */
238
133
  function shouldIgnoreElement(element) {
239
- if (element.nodeName === 'SCRIPT') {
240
- return true;
241
- }
242
- if (element.nodeName === 'LINK') {
243
- const relAttribute = getLowerCaseAttribute('rel');
244
- return (
245
- // Link as script - Ignore only when rel=preload, modulepreload or prefetch
246
- (/preload|prefetch/i.test(relAttribute) && getLowerCaseAttribute('as') === 'script') ||
247
- // Favicons
248
- relAttribute === 'shortcut icon' ||
249
- relAttribute === 'icon');
250
- }
251
- if (element.nodeName === 'META') {
252
- const nameAttribute = getLowerCaseAttribute('name');
253
- const relAttribute = getLowerCaseAttribute('rel');
254
- const propertyAttribute = getLowerCaseAttribute('property');
255
- return (
256
- // Favicons
257
- /^msapplication-tile(image|color)$/.test(nameAttribute) ||
258
- nameAttribute === 'application-name' ||
259
- relAttribute === 'icon' ||
260
- relAttribute === 'apple-touch-icon' ||
261
- relAttribute === 'shortcut icon' ||
262
- // Description
263
- nameAttribute === 'keywords' ||
264
- nameAttribute === 'description' ||
265
- // Social
266
- /^(og|twitter|fb):/.test(propertyAttribute) ||
267
- /^(og|twitter):/.test(nameAttribute) ||
268
- nameAttribute === 'pinterest' ||
269
- // Robots
270
- nameAttribute === 'robots' ||
271
- nameAttribute === 'googlebot' ||
272
- nameAttribute === 'bingbot' ||
273
- // Http headers. Ex: X-UA-Compatible, Content-Type, Content-Language, cache-control,
274
- // X-Translated-By
275
- element.hasAttribute('http-equiv') ||
276
- // Authorship
277
- nameAttribute === 'author' ||
278
- nameAttribute === 'generator' ||
279
- nameAttribute === 'framework' ||
280
- nameAttribute === 'publisher' ||
281
- nameAttribute === 'progid' ||
282
- /^article:/.test(propertyAttribute) ||
283
- /^product:/.test(propertyAttribute) ||
284
- // Verification
285
- nameAttribute === 'google-site-verification' ||
286
- nameAttribute === 'yandex-verification' ||
287
- nameAttribute === 'csrf-token' ||
288
- nameAttribute === 'p:domain_verify' ||
289
- nameAttribute === 'verify-v1' ||
290
- nameAttribute === 'verification' ||
291
- nameAttribute === 'shopify-checkout-api-token');
292
- }
293
- function getLowerCaseAttribute(name) {
294
- return (element.getAttribute(name) || '').toLowerCase();
295
- }
296
- return false;
134
+ if (element.nodeName === "SCRIPT") return true;
135
+ if (element.nodeName === "LINK") {
136
+ const relAttribute = getLowerCaseAttribute("rel");
137
+ return /preload|prefetch/i.test(relAttribute) && getLowerCaseAttribute("as") === "script" || relAttribute === "shortcut icon" || relAttribute === "icon";
138
+ }
139
+ if (element.nodeName === "META") {
140
+ const nameAttribute = getLowerCaseAttribute("name");
141
+ const relAttribute = getLowerCaseAttribute("rel");
142
+ const propertyAttribute = getLowerCaseAttribute("property");
143
+ return /^msapplication-tile(image|color)$/.test(nameAttribute) || nameAttribute === "application-name" || relAttribute === "icon" || relAttribute === "apple-touch-icon" || relAttribute === "shortcut icon" || nameAttribute === "keywords" || nameAttribute === "description" || /^(og|twitter|fb):/.test(propertyAttribute) || /^(og|twitter):/.test(nameAttribute) || nameAttribute === "pinterest" || nameAttribute === "robots" || nameAttribute === "googlebot" || nameAttribute === "bingbot" || element.hasAttribute("http-equiv") || nameAttribute === "author" || nameAttribute === "generator" || nameAttribute === "framework" || nameAttribute === "publisher" || nameAttribute === "progid" || /^article:/.test(propertyAttribute) || /^product:/.test(propertyAttribute) || nameAttribute === "google-site-verification" || nameAttribute === "yandex-verification" || nameAttribute === "csrf-token" || nameAttribute === "p:domain_verify" || nameAttribute === "verify-v1" || nameAttribute === "verification" || nameAttribute === "shopify-checkout-api-token";
144
+ }
145
+ function getLowerCaseAttribute(name) {
146
+ return (element.getAttribute(name) || "").toLowerCase();
147
+ }
148
+ return false;
297
149
  }
298
150
  function isAllowlisted(text) {
299
- var _a;
300
- if (!text || !text.trim()) {
301
- return true;
302
- }
303
- // We are using toLocaleLowerCase when adding to the allowlist to avoid case sensitivity
304
- // so we need to do the same here
305
- return ((_a = window.$KUBESENSE_ALLOW) === null || _a === void 0 ? void 0 : _a.has(text.toLocaleLowerCase())) || false;
151
+ if (!text?.trim()) return true;
152
+ return window.$KUBESENSE_ALLOW?.has(text.toLocaleLowerCase()) || false;
306
153
  }
307
154
  function maskDisallowedTextContent(text, fixedMask) {
308
- if (isAllowlisted(text)) {
309
- return text;
310
- }
311
- return fixedMask || censorText(text);
155
+ if (isAllowlisted(text)) return text;
156
+ return fixedMask || censorText(text);
312
157
  }
158
+ //#endregion
159
+ exports.censorText = censorText;
160
+ exports.getNodePrivacyLevel = getNodePrivacyLevel;
161
+ exports.getNodeSelfPrivacyLevel = getNodeSelfPrivacyLevel;
162
+ exports.getTextContent = getTextContent;
163
+ exports.isAllowlisted = isAllowlisted;
164
+ exports.maskDisallowedTextContent = maskDisallowedTextContent;
165
+ exports.reducePrivacyLevel = reducePrivacyLevel;
166
+ exports.shouldIgnoreElement = shouldIgnoreElement;
167
+ exports.shouldMaskAttribute = shouldMaskAttribute;
168
+ exports.shouldMaskNode = shouldMaskNode;
169
+
313
170
  //# sourceMappingURL=privacy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"privacy.js","sourceRoot":"","sources":["../../src/domain/privacy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"privacy.js","names":["getParentNode","NodePrivacyLevel","isElementNode","getPrivacySelector","isTextNode","STABLE_ATTRIBUTES","FORM_PRIVATE_TAG_NAMES"],"sources":["../../src/domain/privacy.ts"],"sourcesContent":["import { isElementNode, getParentNode, isTextNode } from '../browser/htmlDomUtils'\nimport {\n NodePrivacyLevel,\n FORM_PRIVATE_TAG_NAMES,\n CENSORED_STRING_MARK,\n getPrivacySelector,\n TEXT_MASKING_CHAR,\n PRIVACY_ATTR_NAME,\n} from './privacyConstants'\nimport { STABLE_ATTRIBUTES } from './getSelectorFromElement'\nimport type { RumConfiguration } from './configuration'\n\nexport type NodePrivacyLevelCache = Map<Node, NodePrivacyLevel>\n\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(\n node: Node,\n defaultPrivacyLevel: NodePrivacyLevel,\n cache?: NodePrivacyLevelCache\n): NodePrivacyLevel {\n if (cache?.has(node)) {\n return cache.get(node)!\n }\n const parentNode = getParentNode(node)\n const parentNodePrivacyLevel = parentNode\n ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache)\n : defaultPrivacyLevel\n const selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node)\n const nodePrivacyLevel = reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel)\n if (cache) {\n cache.set(node, nodePrivacyLevel)\n }\n return nodePrivacyLevel\n}\n\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(\n childPrivacyLevel: NodePrivacyLevel | undefined,\n parentNodePrivacyLevel: NodePrivacyLevel\n): NodePrivacyLevel {\n switch (parentNodePrivacyLevel) {\n // These values cannot be overridden\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return parentNodePrivacyLevel\n }\n switch (childPrivacyLevel) {\n case NodePrivacyLevel.ALLOW:\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.MASK_USER_INPUT:\n case NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return childPrivacyLevel\n default:\n return parentNodePrivacyLevel\n }\n}\n\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node: Node): NodePrivacyLevel | undefined {\n // Only Element types can have a privacy level set\n if (!isElementNode(node)) {\n return\n }\n\n // Overrules for replay purpose\n if (node.tagName === 'BASE') {\n return NodePrivacyLevel.ALLOW\n }\n\n // Overrules to enforce end-user protection\n if (node.tagName === 'INPUT') {\n const inputElement = node as HTMLInputElement\n if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n return NodePrivacyLevel.MASK\n }\n if (inputElement.type === 'hidden') {\n return NodePrivacyLevel.MASK\n }\n const autocomplete = inputElement.getAttribute('autocomplete')\n // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year/new-password/current-password]\n if (autocomplete && (autocomplete.startsWith('cc-') || autocomplete.endsWith('-password'))) {\n return NodePrivacyLevel.MASK\n }\n }\n\n // Check HTML privacy attributes and classes\n if (node.matches(getPrivacySelector(NodePrivacyLevel.HIDDEN))) {\n return NodePrivacyLevel.HIDDEN\n }\n\n if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK))) {\n return NodePrivacyLevel.MASK\n }\n\n if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED))) {\n return NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED\n }\n\n if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK_USER_INPUT))) {\n return NodePrivacyLevel.MASK_USER_INPUT\n }\n\n if (node.matches(getPrivacySelector(NodePrivacyLevel.ALLOW))) {\n return NodePrivacyLevel.ALLOW\n }\n\n if (shouldIgnoreElement(node)) {\n return NodePrivacyLevel.IGNORE\n }\n}\n\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node: Node, privacyLevel: NodePrivacyLevel) {\n switch (privacyLevel) {\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return true\n case NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED:\n if (isTextNode(node)) {\n // Always return true if our parent is a form element, like MASK_USER_INPUT.\n // Otherwise, decide whether to mask based on the allowlist.\n return isFormElement(node.parentNode) ? true : !isAllowlisted(node.textContent || '')\n }\n // Always return true if we're a form element, like MASK_USER_INPUT.\n // Otherwise, return false; MASK_UNLESS_ALLOWLISTED only directly masks text nodes.\n return isFormElement(node)\n case NodePrivacyLevel.MASK_USER_INPUT:\n return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node)\n default:\n return false\n }\n}\n\nexport function shouldMaskAttribute(\n tagName: string,\n attributeName: string,\n attributeValue: string | null,\n nodePrivacyLevel: NodePrivacyLevel,\n configuration: RumConfiguration\n) {\n if (nodePrivacyLevel !== NodePrivacyLevel.MASK && nodePrivacyLevel !== NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED) {\n return false\n }\n if (\n attributeName === PRIVACY_ATTR_NAME ||\n STABLE_ATTRIBUTES.includes(attributeName) ||\n attributeName === configuration.actionNameAttribute\n ) {\n return false\n }\n\n switch (attributeName) {\n case 'title':\n case 'alt':\n case 'placeholder':\n case 'aria-label':\n case 'name':\n return true\n }\n if (tagName === 'A' && attributeName === 'href') {\n return true\n }\n if (tagName === 'IFRAME' && attributeName === 'srcdoc') {\n return true\n }\n if (attributeValue && attributeName.startsWith('data-')) {\n return true\n }\n if ((tagName === 'IMG' || tagName === 'SOURCE') && (attributeName === 'src' || attributeName === 'srcset')) {\n return true\n }\n\n return false\n}\n\nfunction isFormElement(node: Node | null): boolean {\n if (!node || node.nodeType !== node.ELEMENT_NODE) {\n return false\n }\n const element = node as HTMLInputElement\n if (element.tagName === 'INPUT') {\n switch (element.type) {\n case 'button':\n case 'color':\n case 'reset':\n case 'submit':\n return false\n }\n }\n return !!FORM_PRIVATE_TAG_NAMES[element.tagName]\n}\n\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport function censorText(text: string): string {\n return text.replace(/\\S/g, TEXT_MASKING_CHAR)\n}\n\nexport function getTextContent(textNode: Node, parentNodePrivacyLevel: NodePrivacyLevel): string {\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n const parentTagName = textNode.parentElement?.tagName\n let textContent = textNode.textContent || ''\n const nodePrivacyLevel = parentNodePrivacyLevel\n\n if (parentTagName === 'SCRIPT') {\n // For perf reasons, we don't record script (heuristic)\n textContent = CENSORED_STRING_MARK\n } else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // Should never occur, but just in case, we set to CENSORED_MARK.\n textContent = CENSORED_STRING_MARK\n } else if (shouldMaskNode(textNode, nodePrivacyLevel)) {\n if (parentTagName === 'DATALIST' || parentTagName === 'SELECT' || parentTagName === 'OPTGROUP') {\n // Masking the child list breaks text nodes for DATALIST/SELECT/OPTGROUP.\n // TODO: Reinvestigate this.\n } else if (parentTagName === 'OPTION') {\n // <Option> has low entropy in charset + text length, so use `CENSORED_STRING_MARK` when masked\n textContent = CENSORED_STRING_MARK\n } else {\n textContent = censorText(textContent)\n }\n }\n\n const shouldCollapseWhiteSpace = parentTagName === 'HEAD'\n if (shouldCollapseWhiteSpace && !textContent.trim()) {\n return ''\n }\n\n return textContent\n}\n\n/**\n * TODO: Preserve CSS element order, and record the presence of the tag, just don't render\n * We don't need this logic on the recorder side.\n * For security related meta's, customer can mask themmanually given they\n * are easy to identify in the HEAD tag.\n */\nexport function shouldIgnoreElement(element: Element): boolean {\n if (element.nodeName === 'SCRIPT') {\n return true\n }\n\n if (element.nodeName === 'LINK') {\n const relAttribute = getLowerCaseAttribute('rel')\n return (\n // Link as script - Ignore only when rel=preload, modulepreload or prefetch\n (/preload|prefetch/i.test(relAttribute) && getLowerCaseAttribute('as') === 'script') ||\n // Favicons\n relAttribute === 'shortcut icon' ||\n relAttribute === 'icon'\n )\n }\n\n if (element.nodeName === 'META') {\n const nameAttribute = getLowerCaseAttribute('name')\n const relAttribute = getLowerCaseAttribute('rel')\n const propertyAttribute = getLowerCaseAttribute('property')\n return (\n // Favicons\n /^msapplication-tile(image|color)$/.test(nameAttribute) ||\n nameAttribute === 'application-name' ||\n relAttribute === 'icon' ||\n relAttribute === 'apple-touch-icon' ||\n relAttribute === 'shortcut icon' ||\n // Description\n nameAttribute === 'keywords' ||\n nameAttribute === 'description' ||\n // Social\n /^(og|twitter|fb):/.test(propertyAttribute) ||\n /^(og|twitter):/.test(nameAttribute) ||\n nameAttribute === 'pinterest' ||\n // Robots\n nameAttribute === 'robots' ||\n nameAttribute === 'googlebot' ||\n nameAttribute === 'bingbot' ||\n // Http headers. Ex: X-UA-Compatible, Content-Type, Content-Language, cache-control,\n // X-Translated-By\n element.hasAttribute('http-equiv') ||\n // Authorship\n nameAttribute === 'author' ||\n nameAttribute === 'generator' ||\n nameAttribute === 'framework' ||\n nameAttribute === 'publisher' ||\n nameAttribute === 'progid' ||\n /^article:/.test(propertyAttribute) ||\n /^product:/.test(propertyAttribute) ||\n // Verification\n nameAttribute === 'google-site-verification' ||\n nameAttribute === 'yandex-verification' ||\n nameAttribute === 'csrf-token' ||\n nameAttribute === 'p:domain_verify' ||\n nameAttribute === 'verify-v1' ||\n nameAttribute === 'verification' ||\n nameAttribute === 'shopify-checkout-api-token'\n )\n }\n\n function getLowerCaseAttribute(name: string) {\n return (element.getAttribute(name) || '').toLowerCase()\n }\n\n return false\n}\n\nexport interface BrowserWindow extends Window {\n $KUBESENSE_ALLOW?: Set<string>\n}\n\nexport function isAllowlisted(text: string): boolean {\n if (!text?.trim()) {\n return true\n }\n // We are using toLocaleLowerCase when adding to the allowlist to avoid case sensitivity\n // so we need to do the same here\n return (window as BrowserWindow).$KUBESENSE_ALLOW?.has(text.toLocaleLowerCase()) || false\n}\n\nexport function maskDisallowedTextContent(text: string, fixedMask?: string): string {\n if (isAllowlisted(text)) {\n return text\n }\n return fixedMask || censorText(text)\n}\n"],"mappings":"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"}