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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (784) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +23 -0
  3. package/bundle/chunks/kubesenseProfiler-4b8cfd8f889074788478-kubesense-rum.js +1 -0
  4. package/bundle/chunks/kubesenseRecorder-db948e96649585a2b3e9-kubesense-rum.js +1 -0
  5. package/bundle/kubesense-rum.js +1 -1
  6. package/cjs/boot/kubesenseRecorder.d.ts +6 -0
  7. package/cjs/boot/kubesenseRecorder.js +75 -0
  8. package/cjs/boot/kubesenseRecorder.js.map +1 -0
  9. package/cjs/boot/lazyLoadProfiler.d.ts +3 -4
  10. package/cjs/boot/lazyLoadProfiler.js +18 -50
  11. package/cjs/boot/lazyLoadProfiler.js.map +1 -1
  12. package/cjs/boot/lazyLoadRecorder.d.ts +3 -4
  13. package/cjs/boot/lazyLoadRecorder.js +18 -50
  14. package/cjs/boot/lazyLoadRecorder.js.map +1 -1
  15. package/cjs/boot/postStartStrategy.d.ts +4 -4
  16. package/cjs/boot/postStartStrategy.js +89 -110
  17. package/cjs/boot/postStartStrategy.js.map +1 -1
  18. package/cjs/boot/preStartStrategy.js +21 -21
  19. package/cjs/boot/preStartStrategy.js.map +1 -1
  20. package/cjs/boot/profilerApi.js +44 -50
  21. package/cjs/boot/profilerApi.js.map +1 -1
  22. package/cjs/boot/recorderApi.d.ts +1 -3
  23. package/cjs/boot/recorderApi.js +41 -71
  24. package/cjs/boot/recorderApi.js.map +1 -1
  25. package/cjs/domain/deflate/deflateEncoder.d.ts +1 -2
  26. package/cjs/domain/deflate/deflateEncoder.js +94 -108
  27. package/cjs/domain/deflate/deflateEncoder.js.map +1 -1
  28. package/cjs/domain/deflate/deflateWorker.d.ts +3 -4
  29. package/cjs/domain/deflate/deflateWorker.js +79 -90
  30. package/cjs/domain/deflate/deflateWorker.js.map +1 -1
  31. package/cjs/domain/deflate/index.d.ts +1 -1
  32. package/cjs/domain/deflate/index.js +5 -10
  33. package/cjs/domain/getSessionReplayLink.d.ts +3 -2
  34. package/cjs/domain/getSessionReplayLink.js +17 -31
  35. package/cjs/domain/getSessionReplayLink.js.map +1 -1
  36. package/cjs/domain/profiling/actionHistory.d.ts +10 -0
  37. package/cjs/domain/profiling/actionHistory.js +37 -0
  38. package/cjs/domain/profiling/actionHistory.js.map +1 -0
  39. package/cjs/domain/profiling/kubesenseProfiler.d.ts +6 -0
  40. package/cjs/domain/profiling/kubesenseProfiler.js +243 -0
  41. package/cjs/domain/profiling/kubesenseProfiler.js.map +1 -0
  42. package/cjs/domain/profiling/longTaskHistory.d.ts +11 -0
  43. package/cjs/domain/profiling/longTaskHistory.js +22 -0
  44. package/cjs/domain/profiling/longTaskHistory.js.map +1 -0
  45. package/cjs/domain/profiling/profilerDebugIds.d.ts +2 -0
  46. package/cjs/domain/profiling/profilerDebugIds.js +18 -0
  47. package/cjs/domain/profiling/profilerDebugIds.js.map +1 -0
  48. package/cjs/domain/profiling/profilingContext.js +20 -25
  49. package/cjs/domain/profiling/profilingContext.js.map +1 -1
  50. package/cjs/domain/profiling/profilingSupported.js +6 -8
  51. package/cjs/domain/profiling/profilingSupported.js.map +1 -1
  52. package/cjs/domain/profiling/quotaCheck.d.ts +9 -0
  53. package/cjs/domain/profiling/quotaCheck.js +66 -0
  54. package/cjs/domain/profiling/quotaCheck.js.map +1 -0
  55. package/cjs/domain/profiling/test-utils/mockedTrace.d.ts +1 -1
  56. package/cjs/domain/profiling/transport/buildProfileEvent.d.ts +38 -0
  57. package/cjs/domain/profiling/transport/buildProfileEvent.js +91 -0
  58. package/cjs/domain/profiling/transport/buildProfileEvent.js.map +1 -0
  59. package/cjs/domain/profiling/transport/formDataEmitter.d.ts +5 -0
  60. package/cjs/domain/profiling/transport/formDataEmitter.js +17 -0
  61. package/cjs/domain/profiling/transport/formDataEmitter.js.map +1 -0
  62. package/cjs/domain/profiling/transport/profilingBridge.d.ts +2 -0
  63. package/cjs/domain/profiling/transport/profilingBridge.js +12 -0
  64. package/cjs/domain/profiling/transport/profilingBridge.js.map +1 -0
  65. package/cjs/domain/profiling/{types/rumProfiler.types.d.ts → types.d.ts} +13 -24
  66. package/cjs/domain/profiling/utils/getCustomOrDefaultViewName.js +5 -5
  67. package/cjs/domain/profiling/utils/getCustomOrDefaultViewName.js.map +1 -1
  68. package/cjs/domain/profiling/utils/getDefaultViewName.js +6 -10
  69. package/cjs/domain/profiling/utils/getDefaultViewName.js.map +1 -1
  70. package/cjs/domain/profiling/vitalHistory.d.ts +13 -0
  71. package/cjs/domain/profiling/vitalHistory.js +56 -0
  72. package/cjs/domain/profiling/vitalHistory.js.map +1 -0
  73. package/cjs/domain/record/assembly.d.ts +2 -1
  74. package/cjs/domain/record/assembly.js +15 -14
  75. package/cjs/domain/record/assembly.js.map +1 -1
  76. package/cjs/domain/record/canvas/canvasHash.d.ts +2 -0
  77. package/cjs/domain/record/canvas/canvasHash.js +33 -0
  78. package/cjs/domain/record/canvas/canvasHash.js.map +1 -0
  79. package/cjs/domain/record/canvas/canvasManager.d.ts +42 -0
  80. package/cjs/domain/record/canvas/canvasManager.js +99 -0
  81. package/cjs/domain/record/canvas/canvasManager.js.map +1 -0
  82. package/cjs/domain/record/canvas/canvasSnapshot.d.ts +8 -0
  83. package/cjs/domain/record/canvas/canvasSnapshot.js +40 -0
  84. package/cjs/domain/record/canvas/canvasSnapshot.js.map +1 -0
  85. package/cjs/domain/record/canvas/canvasUtils.d.ts +2 -0
  86. package/cjs/domain/record/canvas/canvasUtils.js +14 -0
  87. package/cjs/domain/record/canvas/canvasUtils.js.map +1 -0
  88. package/cjs/domain/record/elementsScrollPositions.js +17 -20
  89. package/cjs/domain/record/elementsScrollPositions.js.map +1 -1
  90. package/cjs/domain/record/encoding/changeDecoder.d.ts +39 -0
  91. package/cjs/domain/record/encoding/changeDecoder.js +152 -0
  92. package/cjs/domain/record/encoding/changeDecoder.js.map +1 -0
  93. package/cjs/domain/record/encoding/changeEncoder.d.ts +39 -0
  94. package/cjs/domain/record/encoding/changeEncoder.js +146 -0
  95. package/cjs/domain/record/encoding/changeEncoder.js.map +1 -0
  96. package/cjs/domain/record/encoding/index.d.ts +10 -0
  97. package/cjs/domain/record/encoding/itemIds.d.ts +32 -0
  98. package/cjs/domain/record/encoding/itemIds.js +49 -0
  99. package/cjs/domain/record/encoding/itemIds.js.map +1 -0
  100. package/cjs/domain/record/encoding/roles.d.ts +52 -0
  101. package/cjs/domain/record/encoding/roles.js +66 -0
  102. package/cjs/domain/record/encoding/roles.js.map +1 -0
  103. package/cjs/domain/record/encoding/stringIds.d.ts +15 -0
  104. package/cjs/domain/record/encoding/stringIds.js +47 -0
  105. package/cjs/domain/record/encoding/stringIds.js.map +1 -0
  106. package/cjs/domain/record/encoding/stringTable.d.ts +15 -0
  107. package/cjs/domain/record/encoding/stringTable.js +38 -0
  108. package/cjs/domain/record/encoding/stringTable.js.map +1 -0
  109. package/cjs/domain/record/eventsUtils.js +9 -10
  110. package/cjs/domain/record/eventsUtils.js.map +1 -1
  111. package/cjs/domain/record/index.d.ts +5 -2
  112. package/cjs/domain/record/index.js +13 -17
  113. package/cjs/domain/record/internalApi.d.ts +6 -6
  114. package/cjs/domain/record/internalApi.js +55 -49
  115. package/cjs/domain/record/internalApi.js.map +1 -1
  116. package/cjs/domain/record/mutationBatch.d.ts +1 -0
  117. package/cjs/domain/record/mutationBatch.js +38 -39
  118. package/cjs/domain/record/mutationBatch.js.map +1 -1
  119. package/cjs/domain/record/record.d.ts +7 -1
  120. package/cjs/domain/record/record.js +76 -87
  121. package/cjs/domain/record/record.js.map +1 -1
  122. package/cjs/domain/record/record.types.d.ts +1 -0
  123. package/cjs/domain/record/recordingScope.d.ts +7 -3
  124. package/cjs/domain/record/recordingScope.js +25 -11
  125. package/cjs/domain/record/recordingScope.js.map +1 -1
  126. package/cjs/domain/record/serialization/index.d.ts +4 -2
  127. package/cjs/domain/record/serialization/index.js +16 -18
  128. package/cjs/domain/record/serialization/insertionCursor.d.ts +57 -0
  129. package/cjs/domain/record/serialization/insertionCursor.js +55 -0
  130. package/cjs/domain/record/serialization/insertionCursor.js.map +1 -0
  131. package/cjs/domain/record/serialization/serialization.types.d.ts +0 -6
  132. package/cjs/domain/record/serialization/serializationStats.js +26 -25
  133. package/cjs/domain/record/serialization/serializationStats.js.map +1 -1
  134. package/cjs/domain/record/serialization/serializationTransaction.d.ts +44 -22
  135. package/cjs/domain/record/serialization/serializationTransaction.js +90 -36
  136. package/cjs/domain/record/serialization/serializationTransaction.js.map +1 -1
  137. package/cjs/domain/record/serialization/serializationUtils.d.ts +0 -1
  138. package/cjs/domain/record/serialization/serializationUtils.js +46 -75
  139. package/cjs/domain/record/serialization/serializationUtils.js.map +1 -1
  140. package/cjs/domain/record/serialization/serializeAttribute.js +24 -39
  141. package/cjs/domain/record/serialization/serializeAttribute.js.map +1 -1
  142. package/cjs/domain/record/serialization/serializeAttributes.d.ts +2 -2
  143. package/cjs/domain/record/serialization/serializeAttributes.js +100 -152
  144. package/cjs/domain/record/serialization/serializeAttributes.js.map +1 -1
  145. package/cjs/domain/record/serialization/serializeFullSnapshot.d.ts +5 -0
  146. package/cjs/domain/record/serialization/serializeFullSnapshot.js +14 -0
  147. package/cjs/domain/record/serialization/serializeFullSnapshot.js.map +1 -0
  148. package/cjs/domain/record/serialization/serializeMutations.d.ts +5 -0
  149. package/cjs/domain/record/serialization/serializeMutations.js +152 -0
  150. package/cjs/domain/record/serialization/serializeMutations.js.map +1 -0
  151. package/cjs/domain/record/serialization/serializeNode.d.ts +3 -6
  152. package/cjs/domain/record/serialization/serializeNode.js +116 -144
  153. package/cjs/domain/record/serialization/serializeNode.js.map +1 -1
  154. package/cjs/domain/record/shadowRootsController.d.ts +2 -2
  155. package/cjs/domain/record/shadowRootsController.js +37 -42
  156. package/cjs/domain/record/shadowRootsController.js.map +1 -1
  157. package/cjs/domain/record/startFullSnapshots.d.ts +1 -1
  158. package/cjs/domain/record/startFullSnapshots.js +38 -54
  159. package/cjs/domain/record/startFullSnapshots.js.map +1 -1
  160. package/cjs/domain/record/trackers/index.d.ts +2 -1
  161. package/cjs/domain/record/trackers/index.js +25 -27
  162. package/cjs/domain/record/trackers/trackCanvasCapture.d.ts +3 -0
  163. package/cjs/domain/record/trackers/trackCanvasCapture.js +102 -0
  164. package/cjs/domain/record/trackers/trackCanvasCapture.js.map +1 -0
  165. package/cjs/domain/record/trackers/trackCanvasContent.d.ts +3 -0
  166. package/cjs/domain/record/trackers/trackCanvasContent.js +31 -0
  167. package/cjs/domain/record/trackers/trackCanvasContent.js.map +1 -0
  168. package/cjs/domain/record/trackers/trackFocus.d.ts +1 -2
  169. package/cjs/domain/record/trackers/trackFocus.js +15 -13
  170. package/cjs/domain/record/trackers/trackFocus.js.map +1 -1
  171. package/cjs/domain/record/trackers/trackInput.d.ts +2 -2
  172. package/cjs/domain/record/trackers/trackInput.js +129 -102
  173. package/cjs/domain/record/trackers/trackInput.js.map +1 -1
  174. package/cjs/domain/record/trackers/trackMediaInteraction.js +22 -26
  175. package/cjs/domain/record/trackers/trackMediaInteraction.js.map +1 -1
  176. package/cjs/domain/record/trackers/trackMouseInteraction.js +47 -54
  177. package/cjs/domain/record/trackers/trackMouseInteraction.js.map +1 -1
  178. package/cjs/domain/record/trackers/trackMove.js +43 -49
  179. package/cjs/domain/record/trackers/trackMove.js.map +1 -1
  180. package/cjs/domain/record/trackers/trackMutation.d.ts +3 -3
  181. package/cjs/domain/record/trackers/trackMutation.js +42 -267
  182. package/cjs/domain/record/trackers/trackMutation.js.map +1 -1
  183. package/cjs/domain/record/trackers/trackScroll.js +36 -44
  184. package/cjs/domain/record/trackers/trackScroll.js.map +1 -1
  185. package/cjs/domain/record/trackers/trackStyleSheet.js +75 -84
  186. package/cjs/domain/record/trackers/trackStyleSheet.js.map +1 -1
  187. package/cjs/domain/record/trackers/trackViewEnd.js +17 -17
  188. package/cjs/domain/record/trackers/trackViewEnd.js.map +1 -1
  189. package/cjs/domain/record/trackers/trackViewportResize.d.ts +2 -3
  190. package/cjs/domain/record/trackers/trackViewportResize.js +36 -42
  191. package/cjs/domain/record/trackers/trackViewportResize.js.map +1 -1
  192. package/cjs/domain/record/viewports.js +32 -50
  193. package/cjs/domain/record/viewports.js.map +1 -1
  194. package/cjs/domain/replayStats.d.ts +1 -0
  195. package/cjs/domain/replayStats.js +36 -44
  196. package/cjs/domain/replayStats.js.map +1 -1
  197. package/cjs/domain/scriptLoadingError.js +15 -22
  198. package/cjs/domain/scriptLoadingError.js.map +1 -1
  199. package/cjs/domain/segmentCollection/buildReplayPayload.js +22 -23
  200. package/cjs/domain/segmentCollection/buildReplayPayload.js.map +1 -1
  201. package/cjs/domain/segmentCollection/buildResourcePayload.d.ts +5 -0
  202. package/cjs/domain/segmentCollection/buildResourcePayload.js +19 -0
  203. package/cjs/domain/segmentCollection/buildResourcePayload.js.map +1 -0
  204. package/cjs/domain/segmentCollection/index.d.ts +3 -0
  205. package/cjs/domain/segmentCollection/index.js +14 -11
  206. package/cjs/domain/segmentCollection/replayResourceCollection.d.ts +10 -0
  207. package/cjs/domain/segmentCollection/replayResourceCollection.js +52 -0
  208. package/cjs/domain/segmentCollection/replayResourceCollection.js.map +1 -0
  209. package/cjs/domain/segmentCollection/segment.js +50 -80
  210. package/cjs/domain/segmentCollection/segment.js.map +1 -1
  211. package/cjs/domain/segmentCollection/segmentCollection.d.ts +4 -4
  212. package/cjs/domain/segmentCollection/segmentCollection.js +87 -105
  213. package/cjs/domain/segmentCollection/segmentCollection.js.map +1 -1
  214. package/cjs/domain/segmentCollection/startDroppedSegmentRecovery.d.ts +16 -0
  215. package/cjs/domain/segmentCollection/startDroppedSegmentRecovery.js +29 -0
  216. package/cjs/domain/segmentCollection/startDroppedSegmentRecovery.js.map +1 -0
  217. package/cjs/domain/segmentCollection/startSegmentTelemetry.js +40 -42
  218. package/cjs/domain/segmentCollection/startSegmentTelemetry.js.map +1 -1
  219. package/cjs/domain/startRecordBridge.js +10 -14
  220. package/cjs/domain/startRecordBridge.js.map +1 -1
  221. package/cjs/domain/startRecorderInitTelemetry.js +42 -50
  222. package/cjs/domain/startRecorderInitTelemetry.js.map +1 -1
  223. package/cjs/entries/internal.d.ts +11 -2
  224. package/cjs/entries/internal.js +47 -28
  225. package/cjs/entries/internalSynthetics.js +26 -24
  226. package/cjs/entries/internalSynthetics.js.map +1 -1
  227. package/cjs/entries/main.d.ts +5 -3
  228. package/cjs/entries/main.js +50 -31
  229. package/cjs/entries/main.js.map +1 -1
  230. package/cjs/types/index.d.ts +1 -0
  231. package/cjs/types/profiling.d.ts +313 -0
  232. package/cjs/types/sessionReplay.d.ts +381 -3
  233. package/cjs/types/sessionReplayConstants.d.ts +57 -0
  234. package/cjs/types/sessionReplayConstants.js +104 -47
  235. package/cjs/types/sessionReplayConstants.js.map +1 -1
  236. package/esm/boot/kubesenseRecorder.mjs +75 -0
  237. package/esm/boot/kubesenseRecorder.mjs.map +1 -0
  238. package/esm/boot/lazyLoadProfiler.mjs +24 -0
  239. package/esm/boot/lazyLoadProfiler.mjs.map +1 -0
  240. package/esm/boot/lazyLoadRecorder.mjs +24 -0
  241. package/esm/boot/lazyLoadRecorder.mjs.map +1 -0
  242. package/esm/boot/postStartStrategy.mjs +97 -0
  243. package/esm/boot/postStartStrategy.mjs.map +1 -0
  244. package/esm/boot/preStartStrategy.mjs +24 -0
  245. package/esm/boot/preStartStrategy.mjs.map +1 -0
  246. package/esm/boot/profilerApi.mjs +47 -0
  247. package/esm/boot/profilerApi.mjs.map +1 -0
  248. package/esm/boot/recorderApi.mjs +43 -0
  249. package/esm/boot/recorderApi.mjs.map +1 -0
  250. package/esm/domain/deflate/deflateEncoder.mjs +96 -0
  251. package/esm/domain/deflate/deflateEncoder.mjs.map +1 -0
  252. package/esm/domain/deflate/deflateWorker.mjs +90 -0
  253. package/esm/domain/deflate/deflateWorker.mjs.map +1 -0
  254. package/esm/domain/deflate/index.mjs +3 -0
  255. package/esm/domain/getSessionReplayLink.mjs +21 -0
  256. package/esm/domain/getSessionReplayLink.mjs.map +1 -0
  257. package/esm/domain/profiling/actionHistory.mjs +36 -0
  258. package/esm/domain/profiling/actionHistory.mjs.map +1 -0
  259. package/esm/domain/profiling/kubesenseProfiler.mjs +242 -0
  260. package/esm/domain/profiling/kubesenseProfiler.mjs.map +1 -0
  261. package/esm/domain/profiling/longTaskHistory.mjs +21 -0
  262. package/esm/domain/profiling/longTaskHistory.mjs.map +1 -0
  263. package/esm/domain/profiling/profilerDebugIds.mjs +18 -0
  264. package/esm/domain/profiling/profilerDebugIds.mjs.map +1 -0
  265. package/esm/domain/profiling/profilingContext.mjs +23 -0
  266. package/esm/domain/profiling/profilingContext.mjs.map +1 -0
  267. package/esm/domain/profiling/profilingSupported.mjs +9 -0
  268. package/esm/domain/profiling/profilingSupported.mjs.map +1 -0
  269. package/esm/domain/profiling/quotaCheck.mjs +66 -0
  270. package/esm/domain/profiling/quotaCheck.mjs.map +1 -0
  271. package/esm/domain/profiling/transport/buildProfileEvent.mjs +90 -0
  272. package/esm/domain/profiling/transport/buildProfileEvent.mjs.map +1 -0
  273. package/esm/domain/profiling/transport/formDataEmitter.mjs +17 -0
  274. package/esm/domain/profiling/transport/formDataEmitter.mjs.map +1 -0
  275. package/esm/domain/profiling/transport/profilingBridge.mjs +12 -0
  276. package/esm/domain/profiling/transport/profilingBridge.mjs.map +1 -0
  277. package/esm/domain/profiling/utils/getCustomOrDefaultViewName.mjs +7 -0
  278. package/esm/domain/profiling/utils/getCustomOrDefaultViewName.mjs.map +1 -0
  279. package/esm/domain/profiling/utils/getDefaultViewName.mjs +10 -0
  280. package/esm/domain/profiling/utils/getDefaultViewName.mjs.map +1 -0
  281. package/esm/domain/profiling/vitalHistory.mjs +55 -0
  282. package/esm/domain/profiling/vitalHistory.mjs.map +1 -0
  283. package/esm/domain/record/assembly.mjs +17 -0
  284. package/esm/domain/record/assembly.mjs.map +1 -0
  285. package/esm/domain/record/canvas/canvasHash.mjs +33 -0
  286. package/esm/domain/record/canvas/canvasHash.mjs.map +1 -0
  287. package/esm/domain/record/canvas/canvasManager.mjs +99 -0
  288. package/esm/domain/record/canvas/canvasManager.mjs.map +1 -0
  289. package/esm/domain/record/canvas/canvasSnapshot.mjs +38 -0
  290. package/esm/domain/record/canvas/canvasSnapshot.mjs.map +1 -0
  291. package/esm/domain/record/canvas/canvasUtils.mjs +13 -0
  292. package/esm/domain/record/canvas/canvasUtils.mjs.map +1 -0
  293. package/esm/domain/record/elementsScrollPositions.mjs +20 -0
  294. package/esm/domain/record/elementsScrollPositions.mjs.map +1 -0
  295. package/esm/domain/record/encoding/changeDecoder.mjs +152 -0
  296. package/esm/domain/record/encoding/changeDecoder.mjs.map +1 -0
  297. package/esm/domain/record/encoding/changeEncoder.mjs +146 -0
  298. package/esm/domain/record/encoding/changeEncoder.mjs.map +1 -0
  299. package/esm/domain/record/encoding/itemIds.mjs +47 -0
  300. package/esm/domain/record/encoding/itemIds.mjs.map +1 -0
  301. package/esm/domain/record/encoding/roles.mjs +64 -0
  302. package/esm/domain/record/encoding/roles.mjs.map +1 -0
  303. package/esm/domain/record/encoding/stringIds.mjs +47 -0
  304. package/esm/domain/record/encoding/stringIds.mjs.map +1 -0
  305. package/esm/domain/record/encoding/stringTable.mjs +38 -0
  306. package/esm/domain/record/encoding/stringTable.mjs.map +1 -0
  307. package/esm/domain/record/eventsUtils.mjs +13 -0
  308. package/esm/domain/record/eventsUtils.mjs.map +1 -0
  309. package/esm/domain/record/index.mjs +8 -0
  310. package/esm/domain/record/internalApi.mjs +62 -0
  311. package/esm/domain/record/internalApi.mjs.map +1 -0
  312. package/esm/domain/record/mutationBatch.mjs +43 -0
  313. package/esm/domain/record/mutationBatch.mjs.map +1 -0
  314. package/esm/domain/record/record.mjs +79 -0
  315. package/esm/domain/record/record.mjs.map +1 -0
  316. package/esm/domain/record/recordingScope.mjs +27 -0
  317. package/esm/domain/record/recordingScope.mjs.map +1 -0
  318. package/esm/domain/record/serialization/index.mjs +9 -0
  319. package/esm/domain/record/serialization/insertionCursor.mjs +54 -0
  320. package/esm/domain/record/serialization/insertionCursor.mjs.map +1 -0
  321. package/esm/domain/record/serialization/serializationStats.mjs +31 -0
  322. package/esm/domain/record/serialization/serializationStats.mjs.map +1 -0
  323. package/esm/domain/record/serialization/serializationTransaction.mjs +92 -0
  324. package/esm/domain/record/serialization/serializationTransaction.mjs.map +1 -0
  325. package/esm/domain/record/serialization/serializationUtils.mjs +53 -0
  326. package/esm/domain/record/serialization/serializationUtils.mjs.map +1 -0
  327. package/esm/domain/record/serialization/serializeAttribute.mjs +26 -0
  328. package/esm/domain/record/serialization/serializeAttribute.mjs.map +1 -0
  329. package/esm/domain/record/serialization/serializeAttributes.mjs +113 -0
  330. package/esm/domain/record/serialization/serializeAttributes.mjs.map +1 -0
  331. package/esm/domain/record/serialization/serializeFullSnapshot.mjs +14 -0
  332. package/esm/domain/record/serialization/serializeFullSnapshot.mjs.map +1 -0
  333. package/esm/domain/record/serialization/serializeMutations.mjs +152 -0
  334. package/esm/domain/record/serialization/serializeMutations.mjs.map +1 -0
  335. package/esm/domain/record/serialization/serializeNode.mjs +126 -0
  336. package/esm/domain/record/serialization/serializeNode.mjs.map +1 -0
  337. package/esm/domain/record/shadowRootsController.mjs +40 -0
  338. package/esm/domain/record/shadowRootsController.mjs.map +1 -0
  339. package/esm/domain/record/startFullSnapshots.mjs +42 -0
  340. package/esm/domain/record/startFullSnapshots.mjs.map +1 -0
  341. package/esm/domain/record/trackers/index.mjs +13 -0
  342. package/esm/domain/record/trackers/trackCanvasCapture.mjs +102 -0
  343. package/esm/domain/record/trackers/trackCanvasCapture.mjs.map +1 -0
  344. package/esm/domain/record/trackers/trackCanvasContent.mjs +31 -0
  345. package/esm/domain/record/trackers/trackCanvasContent.mjs.map +1 -0
  346. package/esm/domain/record/trackers/trackFocus.mjs +17 -0
  347. package/esm/domain/record/trackers/trackFocus.mjs.map +1 -0
  348. package/esm/domain/record/trackers/trackInput.mjs +131 -0
  349. package/esm/domain/record/trackers/trackInput.mjs.map +1 -0
  350. package/esm/domain/record/trackers/trackMediaInteraction.mjs +25 -0
  351. package/esm/domain/record/trackers/trackMediaInteraction.mjs.map +1 -0
  352. package/esm/domain/record/trackers/trackMouseInteraction.mjs +52 -0
  353. package/esm/domain/record/trackers/trackMouseInteraction.mjs.map +1 -0
  354. package/esm/domain/record/trackers/trackMove.mjs +48 -0
  355. package/esm/domain/record/trackers/trackMove.mjs.map +1 -0
  356. package/esm/domain/record/trackers/trackMutation.mjs +45 -0
  357. package/esm/domain/record/trackers/trackMutation.mjs.map +1 -0
  358. package/esm/domain/record/trackers/trackScroll.mjs +40 -0
  359. package/esm/domain/record/trackers/trackScroll.mjs.map +1 -0
  360. package/esm/domain/record/trackers/trackStyleSheet.mjs +79 -0
  361. package/esm/domain/record/trackers/trackStyleSheet.mjs.map +1 -0
  362. package/esm/domain/record/trackers/trackViewEnd.mjs +20 -0
  363. package/esm/domain/record/trackers/trackViewEnd.mjs.map +1 -0
  364. package/esm/domain/record/trackers/trackViewportResize.mjs +39 -0
  365. package/esm/domain/record/trackers/trackViewportResize.mjs.map +1 -0
  366. package/esm/domain/record/viewports.mjs +41 -0
  367. package/esm/domain/record/viewports.mjs.map +1 -0
  368. package/esm/domain/replayStats.mjs +46 -0
  369. package/esm/domain/replayStats.mjs.map +1 -0
  370. package/esm/domain/scriptLoadingError.mjs +19 -0
  371. package/esm/domain/scriptLoadingError.mjs.map +1 -0
  372. package/esm/domain/segmentCollection/buildReplayPayload.mjs +25 -0
  373. package/esm/domain/segmentCollection/buildReplayPayload.mjs.map +1 -0
  374. package/esm/domain/segmentCollection/buildResourcePayload.mjs +19 -0
  375. package/esm/domain/segmentCollection/buildResourcePayload.mjs.map +1 -0
  376. package/esm/domain/segmentCollection/index.mjs +5 -0
  377. package/esm/domain/segmentCollection/replayResourceCollection.mjs +52 -0
  378. package/esm/domain/segmentCollection/replayResourceCollection.mjs.map +1 -0
  379. package/esm/domain/segmentCollection/segment.mjs +52 -0
  380. package/esm/domain/segmentCollection/segment.mjs.map +1 -0
  381. package/esm/domain/segmentCollection/segmentCollection.mjs +87 -0
  382. package/esm/domain/segmentCollection/segmentCollection.mjs.map +1 -0
  383. package/esm/domain/segmentCollection/startDroppedSegmentRecovery.mjs +28 -0
  384. package/esm/domain/segmentCollection/startDroppedSegmentRecovery.mjs.map +1 -0
  385. package/esm/domain/segmentCollection/startSegmentTelemetry.mjs +45 -0
  386. package/esm/domain/segmentCollection/startSegmentTelemetry.mjs.map +1 -0
  387. package/esm/domain/startRecordBridge.mjs +13 -0
  388. package/esm/domain/startRecordBridge.mjs.map +1 -0
  389. package/esm/domain/startRecorderInitTelemetry.mjs +47 -0
  390. package/esm/domain/startRecorderInitTelemetry.mjs.map +1 -0
  391. package/esm/entries/internal.mjs +8 -0
  392. package/esm/entries/internalSynthetics.mjs +22 -0
  393. package/esm/entries/internalSynthetics.mjs.map +1 -0
  394. package/esm/entries/main.mjs +35 -0
  395. package/esm/entries/main.mjs.map +1 -0
  396. package/esm/types/sessionReplayConstants.mjs +97 -0
  397. package/esm/types/sessionReplayConstants.mjs.map +1 -0
  398. package/internal/package.json +1 -1
  399. package/internal-synthetics/package.json +1 -1
  400. package/package.json +26 -15
  401. package/src/boot/kubesenseRecorder.ts +134 -0
  402. package/src/boot/lazyLoadProfiler.ts +6 -7
  403. package/src/boot/lazyLoadRecorder.ts +6 -7
  404. package/src/boot/postStartStrategy.ts +18 -16
  405. package/src/boot/profilerApi.ts +29 -19
  406. package/src/boot/recorderApi.ts +6 -21
  407. package/src/domain/deflate/deflateEncoder.ts +3 -8
  408. package/src/domain/deflate/deflateWorker.ts +8 -13
  409. package/src/domain/deflate/index.ts +1 -0
  410. package/src/domain/getSessionReplayLink.ts +15 -11
  411. package/src/domain/profiling/actionHistory.ts +66 -0
  412. package/src/domain/profiling/{profiler.ts → kubesenseProfiler.ts} +166 -79
  413. package/src/domain/profiling/longTaskHistory.ts +45 -0
  414. package/src/domain/profiling/profilerDebugIds.ts +17 -0
  415. package/src/domain/profiling/profilingContext.ts +8 -3
  416. package/src/domain/profiling/profilingSupported.ts +2 -7
  417. package/src/domain/profiling/quotaCheck.ts +89 -0
  418. package/src/domain/profiling/test-utils/mockedTrace.ts +1 -2
  419. package/src/domain/profiling/transport/buildProfileEvent.ts +143 -0
  420. package/src/domain/profiling/transport/formDataEmitter.ts +17 -0
  421. package/src/domain/profiling/transport/profilingBridge.ts +9 -0
  422. package/src/domain/profiling/{types/rumProfiler.types.ts → types.ts} +14 -26
  423. package/src/domain/profiling/vitalHistory.ts +106 -0
  424. package/src/domain/record/assembly.ts +5 -3
  425. package/src/domain/record/canvas/canvasHash.ts +54 -0
  426. package/src/domain/record/canvas/canvasManager.ts +175 -0
  427. package/src/domain/record/canvas/canvasSnapshot.ts +52 -0
  428. package/src/domain/record/canvas/canvasUtils.ts +11 -0
  429. package/src/domain/record/encoding/changeDecoder.ts +287 -0
  430. package/src/domain/record/encoding/changeEncoder.ts +327 -0
  431. package/src/domain/record/encoding/index.ts +19 -0
  432. package/src/domain/record/encoding/itemIds.ts +84 -0
  433. package/src/domain/record/encoding/roles.ts +136 -0
  434. package/src/domain/record/encoding/stringIds.ts +70 -0
  435. package/src/domain/record/encoding/stringTable.ts +68 -0
  436. package/src/domain/record/index.ts +5 -2
  437. package/src/domain/record/internalApi.ts +21 -18
  438. package/src/domain/record/mutationBatch.ts +14 -3
  439. package/src/domain/record/record.ts +35 -16
  440. package/src/domain/record/record.types.ts +1 -0
  441. package/src/domain/record/recordingScope.ts +28 -5
  442. package/src/domain/record/serialization/index.ts +4 -2
  443. package/src/domain/record/serialization/insertionCursor.ts +131 -0
  444. package/src/domain/record/serialization/serialization.types.ts +0 -16
  445. package/src/domain/record/serialization/serializationTransaction.ts +191 -37
  446. package/src/domain/record/serialization/serializationUtils.ts +1 -15
  447. package/src/domain/record/serialization/serializeAttributes.ts +36 -32
  448. package/src/domain/record/serialization/serializeFullSnapshot.ts +26 -0
  449. package/src/domain/record/serialization/serializeMutations.ts +357 -0
  450. package/src/domain/record/serialization/serializeNode.ts +200 -164
  451. package/src/domain/record/shadowRootsController.ts +4 -3
  452. package/src/domain/record/startFullSnapshots.ts +28 -41
  453. package/src/domain/record/trackers/index.ts +2 -1
  454. package/src/domain/record/trackers/trackCanvasCapture.ts +137 -0
  455. package/src/domain/record/trackers/trackCanvasContent.ts +46 -0
  456. package/src/domain/record/trackers/trackFocus.ts +4 -4
  457. package/src/domain/record/trackers/trackInput.ts +146 -41
  458. package/src/domain/record/trackers/trackMediaInteraction.ts +0 -1
  459. package/src/domain/record/trackers/trackMouseInteraction.ts +1 -2
  460. package/src/domain/record/trackers/trackMove.ts +0 -1
  461. package/src/domain/record/trackers/trackMutation.ts +17 -355
  462. package/src/domain/record/trackers/trackScroll.ts +1 -1
  463. package/src/domain/record/trackers/trackStyleSheet.ts +1 -1
  464. package/src/domain/record/trackers/trackViewEnd.ts +1 -1
  465. package/src/domain/record/trackers/trackViewportResize.ts +7 -16
  466. package/src/domain/record/trackers/tracker.types.ts +1 -1
  467. package/src/domain/replayStats.ts +5 -0
  468. package/src/domain/scriptLoadingError.ts +2 -1
  469. package/src/domain/segmentCollection/buildResourcePayload.ts +20 -0
  470. package/src/domain/segmentCollection/index.ts +3 -0
  471. package/src/domain/segmentCollection/replayResourceCollection.ts +79 -0
  472. package/src/domain/segmentCollection/segment.ts +2 -1
  473. package/src/domain/segmentCollection/segmentCollection.ts +14 -13
  474. package/src/domain/segmentCollection/startDroppedSegmentRecovery.ts +37 -0
  475. package/src/domain/segmentCollection/startSegmentTelemetry.ts +16 -2
  476. package/src/domain/startRecorderInitTelemetry.ts +5 -3
  477. package/src/entries/internal.ts +13 -2
  478. package/src/entries/internalSynthetics.ts +3 -4
  479. package/src/entries/main.ts +23 -14
  480. package/src/types/index.ts +1 -0
  481. package/src/types/profiling.ts +315 -0
  482. package/src/types/sessionReplay.ts +395 -3
  483. package/src/types/sessionReplayConstants.ts +109 -0
  484. package/bundle/chunks/profiler-6f621c66a29d9f39a9bd-kubesense-rum.js +0 -1
  485. package/bundle/chunks/recorder-c73b8d42b98d4a01f120-kubesense-rum.js +0 -1
  486. package/cjs/boot/isBrowserSupported.d.ts +0 -4
  487. package/cjs/boot/isBrowserSupported.js +0 -17
  488. package/cjs/boot/isBrowserSupported.js.map +0 -1
  489. package/cjs/boot/startRecording.d.ts +0 -6
  490. package/cjs/boot/startRecording.js +0 -45
  491. package/cjs/boot/startRecording.js.map +0 -1
  492. package/cjs/domain/deflate/index.js.map +0 -1
  493. package/cjs/domain/profiling/profiler.d.ts +0 -7
  494. package/cjs/domain/profiling/profiler.js +0 -244
  495. package/cjs/domain/profiling/profiler.js.map +0 -1
  496. package/cjs/domain/profiling/test-utils/mockedTrace.js +0 -57
  497. package/cjs/domain/profiling/test-utils/mockedTrace.js.map +0 -1
  498. package/cjs/domain/profiling/transport/assembly.d.ts +0 -21
  499. package/cjs/domain/profiling/transport/assembly.js +0 -45
  500. package/cjs/domain/profiling/transport/assembly.js.map +0 -1
  501. package/cjs/domain/profiling/transport/buildProfileEventAttributes.d.ts +0 -25
  502. package/cjs/domain/profiling/transport/buildProfileEventAttributes.js +0 -50
  503. package/cjs/domain/profiling/transport/buildProfileEventAttributes.js.map +0 -1
  504. package/cjs/domain/profiling/types/index.d.ts +0 -2
  505. package/cjs/domain/profiling/types/index.js +0 -3
  506. package/cjs/domain/profiling/types/index.js.map +0 -1
  507. package/cjs/domain/profiling/types/profilerApi.types.d.ts +0 -58
  508. package/cjs/domain/profiling/types/profilerApi.types.js +0 -5
  509. package/cjs/domain/profiling/types/profilerApi.types.js.map +0 -1
  510. package/cjs/domain/profiling/types/rumProfiler.types.js +0 -3
  511. package/cjs/domain/profiling/types/rumProfiler.types.js.map +0 -1
  512. package/cjs/domain/profiling/utils/getNumberOfSamples.d.ts +0 -7
  513. package/cjs/domain/profiling/utils/getNumberOfSamples.js +0 -18
  514. package/cjs/domain/profiling/utils/getNumberOfSamples.js.map +0 -1
  515. package/cjs/domain/record/eventIds.d.ts +0 -4
  516. package/cjs/domain/record/eventIds.js +0 -16
  517. package/cjs/domain/record/eventIds.js.map +0 -1
  518. package/cjs/domain/record/index.js.map +0 -1
  519. package/cjs/domain/record/nodeIds.d.ts +0 -15
  520. package/cjs/domain/record/nodeIds.js +0 -32
  521. package/cjs/domain/record/nodeIds.js.map +0 -1
  522. package/cjs/domain/record/record.types.js +0 -3
  523. package/cjs/domain/record/record.types.js.map +0 -1
  524. package/cjs/domain/record/serialization/index.js.map +0 -1
  525. package/cjs/domain/record/serialization/serialization.types.js +0 -3
  526. package/cjs/domain/record/serialization/serialization.types.js.map +0 -1
  527. package/cjs/domain/record/serialization/serializeDocument.d.ts +0 -3
  528. package/cjs/domain/record/serialization/serializeDocument.js +0 -11
  529. package/cjs/domain/record/serialization/serializeDocument.js.map +0 -1
  530. package/cjs/domain/record/serialization/serializeStyleSheets.d.ts +0 -2
  531. package/cjs/domain/record/serialization/serializeStyleSheets.js +0 -19
  532. package/cjs/domain/record/serialization/serializeStyleSheets.js.map +0 -1
  533. package/cjs/domain/record/trackers/index.js.map +0 -1
  534. package/cjs/domain/record/trackers/trackFrustration.d.ts +0 -7
  535. package/cjs/domain/record/trackers/trackFrustration.js +0 -31
  536. package/cjs/domain/record/trackers/trackFrustration.js.map +0 -1
  537. package/cjs/domain/record/trackers/tracker.types.js +0 -3
  538. package/cjs/domain/record/trackers/tracker.types.js.map +0 -1
  539. package/cjs/domain/segmentCollection/index.js.map +0 -1
  540. package/cjs/entries/internal.js.map +0 -1
  541. package/cjs/types/index.js +0 -18
  542. package/cjs/types/index.js.map +0 -1
  543. package/cjs/types/sessionReplay.js +0 -7
  544. package/cjs/types/sessionReplay.js.map +0 -1
  545. package/esm/boot/isBrowserSupported.d.ts +0 -4
  546. package/esm/boot/isBrowserSupported.js +0 -14
  547. package/esm/boot/isBrowserSupported.js.map +0 -1
  548. package/esm/boot/lazyLoadProfiler.d.ts +0 -4
  549. package/esm/boot/lazyLoadProfiler.js +0 -18
  550. package/esm/boot/lazyLoadProfiler.js.map +0 -1
  551. package/esm/boot/lazyLoadRecorder.d.ts +0 -4
  552. package/esm/boot/lazyLoadRecorder.js +0 -18
  553. package/esm/boot/lazyLoadRecorder.js.map +0 -1
  554. package/esm/boot/postStartStrategy.d.ts +0 -33
  555. package/esm/boot/postStartStrategy.js +0 -115
  556. package/esm/boot/postStartStrategy.js.map +0 -1
  557. package/esm/boot/preStartStrategy.d.ts +0 -6
  558. package/esm/boot/preStartStrategy.js +0 -21
  559. package/esm/boot/preStartStrategy.js.map +0 -1
  560. package/esm/boot/profilerApi.d.ts +0 -2
  561. package/esm/boot/profilerApi.js +0 -50
  562. package/esm/boot/profilerApi.js.map +0 -1
  563. package/esm/boot/recorderApi.d.ts +0 -4
  564. package/esm/boot/recorderApi.js +0 -70
  565. package/esm/boot/recorderApi.js.map +0 -1
  566. package/esm/boot/startRecording.d.ts +0 -6
  567. package/esm/boot/startRecording.js +0 -42
  568. package/esm/boot/startRecording.js.map +0 -1
  569. package/esm/domain/deflate/deflateEncoder.d.ts +0 -3
  570. package/esm/domain/deflate/deflateEncoder.js +0 -107
  571. package/esm/domain/deflate/deflateEncoder.js.map +0 -1
  572. package/esm/domain/deflate/deflateWorker.d.ts +0 -30
  573. package/esm/domain/deflate/deflateWorker.js +0 -97
  574. package/esm/domain/deflate/deflateWorker.js.map +0 -1
  575. package/esm/domain/deflate/index.d.ts +0 -3
  576. package/esm/domain/deflate/index.js +0 -3
  577. package/esm/domain/deflate/index.js.map +0 -1
  578. package/esm/domain/getSessionReplayLink.d.ts +0 -2
  579. package/esm/domain/getSessionReplayLink.js +0 -32
  580. package/esm/domain/getSessionReplayLink.js.map +0 -1
  581. package/esm/domain/profiling/profiler.d.ts +0 -7
  582. package/esm/domain/profiling/profiler.js +0 -240
  583. package/esm/domain/profiling/profiler.js.map +0 -1
  584. package/esm/domain/profiling/profilingContext.d.ts +0 -6
  585. package/esm/domain/profiling/profilingContext.js +0 -25
  586. package/esm/domain/profiling/profilingContext.js.map +0 -1
  587. package/esm/domain/profiling/profilingSupported.d.ts +0 -1
  588. package/esm/domain/profiling/profilingSupported.js +0 -8
  589. package/esm/domain/profiling/profilingSupported.js.map +0 -1
  590. package/esm/domain/profiling/test-utils/mockedTrace.d.ts +0 -3
  591. package/esm/domain/profiling/test-utils/mockedTrace.js +0 -54
  592. package/esm/domain/profiling/test-utils/mockedTrace.js.map +0 -1
  593. package/esm/domain/profiling/transport/assembly.d.ts +0 -21
  594. package/esm/domain/profiling/transport/assembly.js +0 -42
  595. package/esm/domain/profiling/transport/assembly.js.map +0 -1
  596. package/esm/domain/profiling/transport/buildProfileEventAttributes.d.ts +0 -25
  597. package/esm/domain/profiling/transport/buildProfileEventAttributes.js +0 -47
  598. package/esm/domain/profiling/transport/buildProfileEventAttributes.js.map +0 -1
  599. package/esm/domain/profiling/types/index.d.ts +0 -2
  600. package/esm/domain/profiling/types/index.js +0 -2
  601. package/esm/domain/profiling/types/index.js.map +0 -1
  602. package/esm/domain/profiling/types/profilerApi.types.d.ts +0 -58
  603. package/esm/domain/profiling/types/profilerApi.types.js +0 -4
  604. package/esm/domain/profiling/types/profilerApi.types.js.map +0 -1
  605. package/esm/domain/profiling/types/rumProfiler.types.d.ts +0 -72
  606. package/esm/domain/profiling/types/rumProfiler.types.js +0 -2
  607. package/esm/domain/profiling/types/rumProfiler.types.js.map +0 -1
  608. package/esm/domain/profiling/utils/getCustomOrDefaultViewName.d.ts +0 -1
  609. package/esm/domain/profiling/utils/getCustomOrDefaultViewName.js +0 -3
  610. package/esm/domain/profiling/utils/getCustomOrDefaultViewName.js.map +0 -1
  611. package/esm/domain/profiling/utils/getDefaultViewName.d.ts +0 -1
  612. package/esm/domain/profiling/utils/getDefaultViewName.js +0 -11
  613. package/esm/domain/profiling/utils/getDefaultViewName.js.map +0 -1
  614. package/esm/domain/profiling/utils/getNumberOfSamples.d.ts +0 -7
  615. package/esm/domain/profiling/utils/getNumberOfSamples.js +0 -15
  616. package/esm/domain/profiling/utils/getNumberOfSamples.js.map +0 -1
  617. package/esm/domain/record/assembly.d.ts +0 -2
  618. package/esm/domain/record/assembly.js +0 -13
  619. package/esm/domain/record/assembly.js.map +0 -1
  620. package/esm/domain/record/elementsScrollPositions.d.ts +0 -10
  621. package/esm/domain/record/elementsScrollPositions.js +0 -20
  622. package/esm/domain/record/elementsScrollPositions.js.map +0 -1
  623. package/esm/domain/record/eventIds.d.ts +0 -4
  624. package/esm/domain/record/eventIds.js +0 -13
  625. package/esm/domain/record/eventIds.js.map +0 -1
  626. package/esm/domain/record/eventsUtils.d.ts +0 -2
  627. package/esm/domain/record/eventsUtils.js +0 -11
  628. package/esm/domain/record/eventsUtils.js.map +0 -1
  629. package/esm/domain/record/index.d.ts +0 -7
  630. package/esm/domain/record/index.js +0 -6
  631. package/esm/domain/record/index.js.map +0 -1
  632. package/esm/domain/record/internalApi.d.ts +0 -22
  633. package/esm/domain/record/internalApi.js +0 -53
  634. package/esm/domain/record/internalApi.js.map +0 -1
  635. package/esm/domain/record/mutationBatch.d.ts +0 -12
  636. package/esm/domain/record/mutationBatch.js +0 -40
  637. package/esm/domain/record/mutationBatch.js.map +0 -1
  638. package/esm/domain/record/nodeIds.d.ts +0 -15
  639. package/esm/domain/record/nodeIds.js +0 -29
  640. package/esm/domain/record/nodeIds.js.map +0 -1
  641. package/esm/domain/record/record.d.ts +0 -16
  642. package/esm/domain/record/record.js +0 -54
  643. package/esm/domain/record/record.js.map +0 -1
  644. package/esm/domain/record/record.types.d.ts +0 -4
  645. package/esm/domain/record/record.types.js +0 -2
  646. package/esm/domain/record/record.types.js.map +0 -1
  647. package/esm/domain/record/recordingScope.d.ts +0 -19
  648. package/esm/domain/record/recordingScope.js +0 -10
  649. package/esm/domain/record/recordingScope.js.map +0 -1
  650. package/esm/domain/record/serialization/index.d.ts +0 -8
  651. package/esm/domain/record/serialization/index.js +0 -7
  652. package/esm/domain/record/serialization/index.js.map +0 -1
  653. package/esm/domain/record/serialization/serialization.types.d.ts +0 -28
  654. package/esm/domain/record/serialization/serialization.types.js +0 -2
  655. package/esm/domain/record/serialization/serialization.types.js.map +0 -1
  656. package/esm/domain/record/serialization/serializationStats.d.ts +0 -12
  657. package/esm/domain/record/serialization/serializationStats.js +0 -27
  658. package/esm/domain/record/serialization/serializationStats.js.map +0 -1
  659. package/esm/domain/record/serialization/serializationTransaction.d.ts +0 -45
  660. package/esm/domain/record/serialization/serializationTransaction.js +0 -35
  661. package/esm/domain/record/serialization/serializationTransaction.js.map +0 -1
  662. package/esm/domain/record/serialization/serializationUtils.d.ts +0 -18
  663. package/esm/domain/record/serialization/serializationUtils.js +0 -80
  664. package/esm/domain/record/serialization/serializationUtils.js.map +0 -1
  665. package/esm/domain/record/serialization/serializeAttribute.d.ts +0 -4
  666. package/esm/domain/record/serialization/serializeAttribute.js +0 -38
  667. package/esm/domain/record/serialization/serializeAttribute.js.map +0 -1
  668. package/esm/domain/record/serialization/serializeAttributes.d.ts +0 -7
  669. package/esm/domain/record/serialization/serializeAttributes.js +0 -161
  670. package/esm/domain/record/serialization/serializeAttributes.js.map +0 -1
  671. package/esm/domain/record/serialization/serializeDocument.d.ts +0 -3
  672. package/esm/domain/record/serialization/serializeDocument.js +0 -8
  673. package/esm/domain/record/serialization/serializeDocument.js.map +0 -1
  674. package/esm/domain/record/serialization/serializeNode.d.ts +0 -7
  675. package/esm/domain/record/serialization/serializeNode.js +0 -149
  676. package/esm/domain/record/serialization/serializeNode.js.map +0 -1
  677. package/esm/domain/record/serialization/serializeStyleSheets.d.ts +0 -2
  678. package/esm/domain/record/serialization/serializeStyleSheets.js +0 -16
  679. package/esm/domain/record/serialization/serializeStyleSheets.js.map +0 -1
  680. package/esm/domain/record/shadowRootsController.d.ts +0 -11
  681. package/esm/domain/record/shadowRootsController.js +0 -41
  682. package/esm/domain/record/shadowRootsController.js.map +0 -1
  683. package/esm/domain/record/startFullSnapshots.d.ts +0 -9
  684. package/esm/domain/record/startFullSnapshots.js +0 -55
  685. package/esm/domain/record/startFullSnapshots.js.map +0 -1
  686. package/esm/domain/record/trackers/index.d.ts +0 -12
  687. package/esm/domain/record/trackers/index.js +0 -12
  688. package/esm/domain/record/trackers/index.js.map +0 -1
  689. package/esm/domain/record/trackers/trackFocus.d.ts +0 -5
  690. package/esm/domain/record/trackers/trackFocus.js +0 -12
  691. package/esm/domain/record/trackers/trackFocus.js.map +0 -1
  692. package/esm/domain/record/trackers/trackFrustration.d.ts +0 -7
  693. package/esm/domain/record/trackers/trackFrustration.js +0 -28
  694. package/esm/domain/record/trackers/trackFrustration.js.map +0 -1
  695. package/esm/domain/record/trackers/trackInput.d.ts +0 -4
  696. package/esm/domain/record/trackers/trackInput.js +0 -101
  697. package/esm/domain/record/trackers/trackInput.js.map +0 -1
  698. package/esm/domain/record/trackers/trackMediaInteraction.d.ts +0 -5
  699. package/esm/domain/record/trackers/trackMediaInteraction.js +0 -26
  700. package/esm/domain/record/trackers/trackMediaInteraction.js.map +0 -1
  701. package/esm/domain/record/trackers/trackMouseInteraction.d.ts +0 -5
  702. package/esm/domain/record/trackers/trackMouseInteraction.js +0 -56
  703. package/esm/domain/record/trackers/trackMouseInteraction.js.map +0 -1
  704. package/esm/domain/record/trackers/trackMove.d.ts +0 -9
  705. package/esm/domain/record/trackers/trackMove.js +0 -51
  706. package/esm/domain/record/trackers/trackMove.js.map +0 -1
  707. package/esm/domain/record/trackers/trackMutation.d.ts +0 -11
  708. package/esm/domain/record/trackers/trackMutation.js +0 -266
  709. package/esm/domain/record/trackers/trackMutation.js.map +0 -1
  710. package/esm/domain/record/trackers/trackScroll.d.ts +0 -5
  711. package/esm/domain/record/trackers/trackScroll.js +0 -45
  712. package/esm/domain/record/trackers/trackScroll.js.map +0 -1
  713. package/esm/domain/record/trackers/trackStyleSheet.d.ts +0 -6
  714. package/esm/domain/record/trackers/trackStyleSheet.js +0 -85
  715. package/esm/domain/record/trackers/trackStyleSheet.js.map +0 -1
  716. package/esm/domain/record/trackers/trackViewEnd.d.ts +0 -5
  717. package/esm/domain/record/trackers/trackViewEnd.js +0 -17
  718. package/esm/domain/record/trackers/trackViewEnd.js.map +0 -1
  719. package/esm/domain/record/trackers/trackViewportResize.d.ts +0 -6
  720. package/esm/domain/record/trackers/trackViewportResize.js +0 -42
  721. package/esm/domain/record/trackers/trackViewportResize.js.map +0 -1
  722. package/esm/domain/record/trackers/tracker.types.d.ts +0 -3
  723. package/esm/domain/record/trackers/tracker.types.js +0 -2
  724. package/esm/domain/record/trackers/tracker.types.js.map +0 -1
  725. package/esm/domain/record/viewports.d.ts +0 -20
  726. package/esm/domain/record/viewports.js +0 -55
  727. package/esm/domain/record/viewports.js.map +0 -1
  728. package/esm/domain/replayStats.d.ts +0 -8
  729. package/esm/domain/replayStats.js +0 -51
  730. package/esm/domain/replayStats.js.map +0 -1
  731. package/esm/domain/scriptLoadingError.d.ts +0 -6
  732. package/esm/domain/scriptLoadingError.js +0 -23
  733. package/esm/domain/scriptLoadingError.js.map +0 -1
  734. package/esm/domain/segmentCollection/buildReplayPayload.d.ts +0 -15
  735. package/esm/domain/segmentCollection/buildReplayPayload.js +0 -23
  736. package/esm/domain/segmentCollection/buildReplayPayload.js.map +0 -1
  737. package/esm/domain/segmentCollection/index.d.ts +0 -4
  738. package/esm/domain/segmentCollection/index.js +0 -4
  739. package/esm/domain/segmentCollection/index.js.map +0 -1
  740. package/esm/domain/segmentCollection/segment.d.ts +0 -16
  741. package/esm/domain/segmentCollection/segment.js +0 -46
  742. package/esm/domain/segmentCollection/segment.js.map +0 -1
  743. package/esm/domain/segmentCollection/segmentCollection.d.ts +0 -31
  744. package/esm/domain/segmentCollection/segmentCollection.js +0 -106
  745. package/esm/domain/segmentCollection/segmentCollection.js.map +0 -1
  746. package/esm/domain/segmentCollection/startSegmentTelemetry.d.ts +0 -6
  747. package/esm/domain/segmentCollection/startSegmentTelemetry.js +0 -44
  748. package/esm/domain/segmentCollection/startSegmentTelemetry.js.map +0 -1
  749. package/esm/domain/startRecordBridge.d.ts +0 -5
  750. package/esm/domain/startRecordBridge.js +0 -14
  751. package/esm/domain/startRecordBridge.js.map +0 -1
  752. package/esm/domain/startRecorderInitTelemetry.d.ts +0 -15
  753. package/esm/domain/startRecorderInitTelemetry.js +0 -52
  754. package/esm/domain/startRecorderInitTelemetry.js.map +0 -1
  755. package/esm/entries/internal.d.ts +0 -11
  756. package/esm/entries/internal.js +0 -4
  757. package/esm/entries/internal.js.map +0 -1
  758. package/esm/entries/internalSynthetics.d.ts +0 -2
  759. package/esm/entries/internalSynthetics.js +0 -23
  760. package/esm/entries/internalSynthetics.js.map +0 -1
  761. package/esm/entries/main.d.ts +0 -23
  762. package/esm/entries/main.js +0 -31
  763. package/esm/entries/main.js.map +0 -1
  764. package/esm/types/index.d.ts +0 -2
  765. package/esm/types/index.js +0 -2
  766. package/esm/types/index.js.map +0 -1
  767. package/esm/types/sessionReplay.d.ts +0 -703
  768. package/esm/types/sessionReplay.js +0 -6
  769. package/esm/types/sessionReplay.js.map +0 -1
  770. package/esm/types/sessionReplayConstants.d.ts +0 -49
  771. package/esm/types/sessionReplayConstants.js +0 -46
  772. package/esm/types/sessionReplayConstants.js.map +0 -1
  773. package/src/boot/isBrowserSupported.ts +0 -14
  774. package/src/boot/startRecording.ts +0 -70
  775. package/src/domain/profiling/transport/assembly.ts +0 -78
  776. package/src/domain/profiling/transport/buildProfileEventAttributes.ts +0 -66
  777. package/src/domain/profiling/types/index.ts +0 -2
  778. package/src/domain/profiling/types/profilerApi.types.ts +0 -87
  779. package/src/domain/profiling/utils/getNumberOfSamples.ts +0 -16
  780. package/src/domain/record/eventIds.ts +0 -17
  781. package/src/domain/record/nodeIds.ts +0 -46
  782. package/src/domain/record/serialization/serializeDocument.ts +0 -13
  783. package/src/domain/record/serialization/serializeStyleSheets.ts +0 -18
  784. package/src/domain/record/trackers/trackFrustration.ts +0 -41
@@ -1,32 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSerializationStats = createSerializationStats;
4
- exports.updateSerializationStats = updateSerializationStats;
5
- exports.aggregateSerializationStats = aggregateSerializationStats;
1
+ //#region src/domain/record/serialization/serializationStats.ts
6
2
  function createSerializationStats() {
7
- return {
8
- cssText: {
9
- count: 0,
10
- max: 0,
11
- sum: 0,
12
- },
13
- serializationDuration: {
14
- count: 0,
15
- max: 0,
16
- sum: 0,
17
- },
18
- };
3
+ return {
4
+ cssText: {
5
+ count: 0,
6
+ max: 0,
7
+ sum: 0
8
+ },
9
+ serializationDuration: {
10
+ count: 0,
11
+ max: 0,
12
+ sum: 0
13
+ }
14
+ };
19
15
  }
20
16
  function updateSerializationStats(stats, metric, value) {
21
- stats[metric].count += 1;
22
- stats[metric].max = Math.max(stats[metric].max, value);
23
- stats[metric].sum += value;
17
+ stats[metric].count += 1;
18
+ stats[metric].max = Math.max(stats[metric].max, value);
19
+ stats[metric].sum += value;
24
20
  }
25
21
  function aggregateSerializationStats(aggregateStats, stats) {
26
- for (const metric of ['cssText', 'serializationDuration']) {
27
- aggregateStats[metric].count += stats[metric].count;
28
- aggregateStats[metric].max = Math.max(aggregateStats[metric].max, stats[metric].max);
29
- aggregateStats[metric].sum += stats[metric].sum;
30
- }
22
+ for (const metric of ["cssText", "serializationDuration"]) {
23
+ aggregateStats[metric].count += stats[metric].count;
24
+ aggregateStats[metric].max = Math.max(aggregateStats[metric].max, stats[metric].max);
25
+ aggregateStats[metric].sum += stats[metric].sum;
26
+ }
31
27
  }
28
+ //#endregion
29
+ exports.aggregateSerializationStats = aggregateSerializationStats;
30
+ exports.createSerializationStats = createSerializationStats;
31
+ exports.updateSerializationStats = updateSerializationStats;
32
+
32
33
  //# sourceMappingURL=serializationStats.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializationStats.js","sourceRoot":"","sources":["../../../../src/domain/record/serialization/serializationStats.ts"],"names":[],"mappings":";;AAWA,4DAaC;AAED,4DAQC;AAED,kEAMC;AA/BD,SAAgB,wBAAwB;IACtC,OAAO;QACL,OAAO,EAAE;YACP,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;QACD,qBAAqB,EAAE;YACrB,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF,CAAA;AACH,CAAC;AAED,SAAgB,wBAAwB,CACtC,KAAyB,EACzB,MAAgC,EAChC,KAAa;IAEb,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;IACxB,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACtD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAK,CAAA;AAC5B,CAAC;AAED,SAAgB,2BAA2B,CAAC,cAAkC,EAAE,KAAyB;IACvG,KAAK,MAAM,MAAM,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAU,EAAE,CAAC;QACnE,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAA;QACnD,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAA;QACpF,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAA;IACjD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"serializationStats.js","names":[],"sources":["../../../../src/domain/record/serialization/serializationStats.ts"],"sourcesContent":["export interface SerializationMetric {\n count: number\n max: number\n sum: number\n}\n\nexport interface SerializationStats {\n cssText: SerializationMetric\n serializationDuration: SerializationMetric\n}\n\nexport function createSerializationStats(): SerializationStats {\n return {\n cssText: {\n count: 0,\n max: 0,\n sum: 0,\n },\n serializationDuration: {\n count: 0,\n max: 0,\n sum: 0,\n },\n }\n}\n\nexport function updateSerializationStats(\n stats: SerializationStats,\n metric: keyof SerializationStats,\n value: number\n): void {\n stats[metric].count += 1\n stats[metric].max = Math.max(stats[metric].max, value)\n stats[metric].sum += value\n}\n\nexport function aggregateSerializationStats(aggregateStats: SerializationStats, stats: SerializationStats) {\n for (const metric of ['cssText', 'serializationDuration'] as const) {\n aggregateStats[metric].count += stats[metric].count\n aggregateStats[metric].max = Math.max(aggregateStats[metric].max, stats[metric].max)\n aggregateStats[metric].sum += stats[metric].sum\n }\n}\n"],"mappings":";AAWA,SAAgB,2BAA+C;CAC7D,OAAO;EACL,SAAS;GACP,OAAO;GACP,KAAK;GACL,KAAK;EACP;EACA,uBAAuB;GACrB,OAAO;GACP,KAAK;GACL,KAAK;EACP;CACF;AACF;AAEA,SAAgB,yBACd,OACA,QACA,OACM;CACN,MAAM,OAAO,CAAC,SAAS;CACvB,MAAM,OAAO,CAAC,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,KAAK,KAAK;CACrD,MAAM,OAAO,CAAC,OAAO;AACvB;AAEA,SAAgB,4BAA4B,gBAAoC,OAA2B;CACzG,KAAK,MAAM,UAAU,CAAC,WAAW,uBAAuB,GAAY;EAClE,eAAe,OAAO,CAAC,SAAS,MAAM,OAAO,CAAC;EAC9C,eAAe,OAAO,CAAC,MAAM,KAAK,IAAI,eAAe,OAAO,CAAC,KAAK,MAAM,OAAO,CAAC,GAAG;EACnF,eAAe,OAAO,CAAC,OAAO,MAAM,OAAO,CAAC;CAC9C;AACF"}
@@ -1,45 +1,67 @@
1
- import type { BrowserRecord } from '../../../types';
2
- import type { NodeId } from '../nodeIds';
1
+ import type { TimeStamp } from '@kubesense/kubesense-js-core/time';
2
+ import type { AddCDataSectionNodeChange, AddDocTypeNodeChange, AddDocumentFragmentNodeChange, AddDocumentNodeChange, AddElementNodeChange, AddShadowRootNodeChange, AddTextNodeChange, InputSelectionState, InsertionPoint, MediaInteractionType, RoleAnnotatedStringLiteral } from '../../../types';
3
+ import type { NodeId, RoleAnnotatedAddNodeName, RoleAnnotatedAddNodeParams, RoleAnnotatedAttributeChange, RoleAnnotatedStringLiteralValue, RoleAnnotatedStyleSheetMediaList, RoleAnnotatedStyleSheetRules, StyleSheetId } from '../encoding';
3
4
  import type { EmitRecordCallback, EmitStatsCallback } from '../record.types';
4
5
  import type { RecordingScope } from '../recordingScope';
5
6
  import type { SerializationStats } from './serializationStats';
6
- export type SerializationTransactionCallback = (transaction: SerializationTransaction) => void;
7
7
  export declare const enum SerializationKind {
8
8
  INITIAL_FULL_SNAPSHOT = 0,
9
9
  SUBSEQUENT_FULL_SNAPSHOT = 1,
10
10
  INCREMENTAL_SNAPSHOT = 2
11
11
  }
12
+ export type SerializationTransactionCallback = (transaction: SerializationTransaction) => void;
12
13
  /**
13
- * A serialization transaction is used to build and emit a sequence of session replay
14
- * records containing a serialized snapshot of the DOM.
14
+ * SerializationTransaction is used to build and emit a `BrowserChangeRecord` containing a
15
+ * serialized snapshot of the DOM. The term "transaction" is used because all the changes
16
+ * in a serialization transaction are applied together, atomically. A serialization
17
+ * transaction is thus always associated with a single timestamp.
18
+ *
19
+ * To use `SerializationTransaction`, call the builder methods it exposes to add changes
20
+ * to the transaction. At the end of the transaction, the changes will be combined into a
21
+ * single `BrowserChangeRecord` and emitted.
15
22
  */
16
23
  export interface SerializationTransaction {
17
- /** Add a record to the transaction. It will be emitted when the transaction ends. */
18
- add(record: BrowserRecord): void;
19
24
  /**
20
25
  * Add a metric to the transaction's statistics. The aggregated statistics will be
21
26
  * emitted when the transaction ends.
22
27
  */
23
28
  addMetric(metric: keyof SerializationStats, value: number): void;
29
+ /** Add a node to the document at the given insertion point. */
30
+ addNode(pos: InsertionPoint, nodeName: RoleAnnotatedAddNodeName<AddCDataSectionNodeChange>, ...params: RoleAnnotatedAddNodeParams<AddCDataSectionNodeChange>): void;
31
+ addNode(pos: InsertionPoint, nodeName: RoleAnnotatedAddNodeName<AddDocTypeNodeChange>, ...params: RoleAnnotatedAddNodeParams<AddDocTypeNodeChange>): void;
32
+ addNode(pos: InsertionPoint, nodeName: RoleAnnotatedAddNodeName<AddDocumentNodeChange>, ...params: RoleAnnotatedAddNodeParams<AddDocumentNodeChange>): void;
33
+ addNode(pos: InsertionPoint, nodeName: RoleAnnotatedAddNodeName<AddDocumentFragmentNodeChange>, ...params: RoleAnnotatedAddNodeParams<AddDocumentFragmentNodeChange>): void;
34
+ addNode(pos: InsertionPoint, nodeName: RoleAnnotatedAddNodeName<AddShadowRootNodeChange>, ...params: RoleAnnotatedAddNodeParams<AddShadowRootNodeChange>): void;
35
+ addNode(pos: InsertionPoint, nodeName: RoleAnnotatedAddNodeName<AddTextNodeChange>, ...params: RoleAnnotatedAddNodeParams<AddTextNodeChange>): void;
36
+ addNode<Name extends RoleAnnotatedAddNodeName<AddElementNodeChange>>(pos: InsertionPoint, nodeName: Name, ...params: RoleAnnotatedStringLiteralValue<Name> extends `#${string}` ? [never] : RoleAnnotatedAddNodeParams<AddElementNodeChange>): void;
37
+ /** Add a stylesheet to the document. */
38
+ addStyleSheet(rules: RoleAnnotatedStyleSheetRules, mediaList?: RoleAnnotatedStyleSheetMediaList, disabled?: boolean): void;
24
39
  /**
25
- * Assign and return an id to the given node. If the node has previously been assigned
26
- * an id, the existing id will be reused.
40
+ * Attach one or more stylesheets to a <link>, <style>, #document, #document-fragment,
41
+ * or #shadow-root node.
27
42
  */
28
- assignId(node: Node): NodeId;
43
+ attachStyleSheets(nodeId: NodeId, sheetIds: StyleSheetId[]): void;
44
+ /** Remove a node from the document. */
45
+ removeNode(nodeId: NodeId): void;
46
+ /** Set a node's attributes to the given values. */
47
+ setAttributes(change: RoleAnnotatedAttributeChange): void;
48
+ /** Set the content of a canvas node to the given resource ID. */
49
+ setImageContent(nodeId: NodeId, resourceId: RoleAnnotatedStringLiteral): void;
50
+ /** Set the selection state of one or more checkboxes, radio buttons, or <option> elements. */
51
+ setInputSelection(state: InputSelectionState, nodeIds: NodeId[]): void;
52
+ /** Set the value of a form element. */
53
+ setInputValue(nodeId: NodeId, value: RoleAnnotatedStringLiteral): void;
54
+ /** Set the media playback state of an <audio> or <video> element. */
55
+ setMediaPlaybackState(nodeId: NodeId, state: MediaInteractionType): void;
56
+ /** Set the given node's scroll position in CSS pixels. */
57
+ setScrollPosition(nodeId: NodeId, x: number, y: number): void;
58
+ /** Set the given node's size in CSS pixels. */
59
+ setSize(nodeId: NodeId, width: number, height: number): void;
60
+ /** Set the given node's text content. */
61
+ setText(nodeId: NodeId, content: RoleAnnotatedStringLiteral): void;
29
62
  /** The kind of serialization being performed in this transaction. */
30
63
  kind: SerializationKind;
31
- /**
32
- * A set used to track nodes which have been serialized in the current transaction. If
33
- * undefined, this feature is disabled; this is the default state in new transactions
34
- * for performance reasons. Set the property to a non-undefined value if you need this
35
- * capability.
36
- */
37
- serializedNodeIds?: Set<NodeId>;
38
64
  /** The recording scope in which this transaction is occurring. */
39
65
  scope: RecordingScope;
40
66
  }
41
- /**
42
- * Perform serialization within a transaction. At the end of the transaction, the
43
- * generated records and statistics will be emitted.
44
- */
45
- export declare function serializeInTransaction(kind: SerializationKind, emitRecord: EmitRecordCallback, emitStats: EmitStatsCallback, scope: RecordingScope, serialize: SerializationTransactionCallback): void;
67
+ export declare function serializeInTransaction(kind: SerializationKind, emitRecord: EmitRecordCallback, emitStats: EmitStatsCallback, scope: RecordingScope, timestamp: TimeStamp, serialize: SerializationTransactionCallback): void;
@@ -1,38 +1,92 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.serializeInTransaction = serializeInTransaction;
4
- const kubesense_browser_core_1 = require("@kubesense/kubesense-browser-core");
5
- const serializationStats_1 = require("./serializationStats");
6
- /**
7
- * Perform serialization within a transaction. At the end of the transaction, the
8
- * generated records and statistics will be emitted.
9
- */
10
- function serializeInTransaction(kind, emitRecord, emitStats, scope, serialize) {
11
- const records = [];
12
- const stats = (0, serializationStats_1.createSerializationStats)();
13
- const transaction = {
14
- add(record) {
15
- records.push(record);
16
- },
17
- addMetric(metric, value) {
18
- (0, serializationStats_1.updateSerializationStats)(stats, metric, value);
19
- },
20
- assignId(node) {
21
- const id = scope.nodeIds.assign(node);
22
- if (transaction.serializedNodeIds) {
23
- transaction.serializedNodeIds.add(id);
24
- }
25
- return id;
26
- },
27
- kind,
28
- scope,
29
- };
30
- const start = (0, kubesense_browser_core_1.timeStampNow)();
31
- serialize(transaction);
32
- (0, serializationStats_1.updateSerializationStats)(stats, 'serializationDuration', (0, kubesense_browser_core_1.elapsed)(start, (0, kubesense_browser_core_1.timeStampNow)()));
33
- for (const record of records) {
34
- emitRecord(record);
35
- }
36
- emitStats(stats);
1
+ const require_sessionReplayConstants = require("../../../types/sessionReplayConstants.js");
2
+ const require_changeEncoder = require("../encoding/changeEncoder.js");
3
+ const require_serializationStats = require("./serializationStats.js");
4
+ let _kubesense_kubesense_js_core_time = require("@kubesense/kubesense-js-core/time");
5
+ //#region src/domain/record/serialization/serializationTransaction.ts
6
+ function serializeInTransaction(kind, emitRecord, emitStats, scope, timestamp, serialize) {
7
+ const encoder = require_changeEncoder.createChangeEncoder(scope.stringIds);
8
+ const stats = require_serializationStats.createSerializationStats();
9
+ const transaction = {
10
+ addMetric(metric, value) {
11
+ require_serializationStats.updateSerializationStats(stats, metric, value);
12
+ },
13
+ addNode(...change) {
14
+ encoder.add(require_sessionReplayConstants.ChangeType.AddNode, change);
15
+ },
16
+ addStyleSheet(rules, mediaList, disabled) {
17
+ if (disabled) encoder.add(require_sessionReplayConstants.ChangeType.AddStyleSheet, [
18
+ rules,
19
+ mediaList || [],
20
+ disabled
21
+ ]);
22
+ else if (mediaList) encoder.add(require_sessionReplayConstants.ChangeType.AddStyleSheet, [rules, mediaList]);
23
+ else encoder.add(require_sessionReplayConstants.ChangeType.AddStyleSheet, [rules]);
24
+ },
25
+ attachStyleSheets(nodeId, sheetIds) {
26
+ const change = [nodeId];
27
+ for (const sheetId of sheetIds) change.push(sheetId);
28
+ encoder.add(require_sessionReplayConstants.ChangeType.AttachedStyleSheets, change);
29
+ },
30
+ removeNode(nodeId) {
31
+ encoder.add(require_sessionReplayConstants.ChangeType.RemoveNode, nodeId);
32
+ },
33
+ setAttributes(change) {
34
+ encoder.add(require_sessionReplayConstants.ChangeType.Attribute, change);
35
+ },
36
+ setInputSelection(state, nodeIds) {
37
+ const change = [state];
38
+ for (const nodeId of nodeIds) change.push(nodeId);
39
+ encoder.add(require_sessionReplayConstants.ChangeType.InputSelection, change);
40
+ },
41
+ setInputValue(nodeId, value) {
42
+ encoder.add(require_sessionReplayConstants.ChangeType.InputValue, [nodeId, value]);
43
+ },
44
+ setMediaPlaybackState(nodeId, state) {
45
+ encoder.add(require_sessionReplayConstants.ChangeType.MediaPlaybackState, [nodeId, state]);
46
+ },
47
+ setScrollPosition(nodeId, x, y) {
48
+ encoder.add(require_sessionReplayConstants.ChangeType.ScrollPosition, [
49
+ nodeId,
50
+ x,
51
+ y
52
+ ]);
53
+ },
54
+ setSize(nodeId, width, height) {
55
+ encoder.add(require_sessionReplayConstants.ChangeType.Size, [
56
+ nodeId,
57
+ width,
58
+ height
59
+ ]);
60
+ },
61
+ setText(nodeId, content) {
62
+ encoder.add(require_sessionReplayConstants.ChangeType.Text, [nodeId, content]);
63
+ },
64
+ setImageContent(nodeId, resourceId) {
65
+ encoder.add(require_sessionReplayConstants.ChangeType.ImageContent, [nodeId, resourceId]);
66
+ },
67
+ kind,
68
+ scope
69
+ };
70
+ const start = (0, _kubesense_kubesense_js_core_time.timeStampNow)();
71
+ serialize(transaction);
72
+ require_serializationStats.updateSerializationStats(stats, "serializationDuration", (0, _kubesense_kubesense_js_core_time.elapsed)(start, (0, _kubesense_kubesense_js_core_time.timeStampNow)()));
73
+ const changes = encoder.flush();
74
+ if (changes.length > 0) {
75
+ if (kind === 0 || kind === 1) emitRecord({
76
+ data: changes,
77
+ format: require_sessionReplayConstants.SnapshotFormat.Change,
78
+ type: require_sessionReplayConstants.RecordType.FullSnapshot,
79
+ timestamp
80
+ });
81
+ else emitRecord({
82
+ data: changes,
83
+ type: require_sessionReplayConstants.RecordType.Change,
84
+ timestamp
85
+ });
86
+ }
87
+ emitStats(stats);
37
88
  }
89
+ //#endregion
90
+ exports.serializeInTransaction = serializeInTransaction;
91
+
38
92
  //# sourceMappingURL=serializationTransaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializationTransaction.js","sourceRoot":"","sources":["../../../../src/domain/record/serialization/serializationTransaction.ts"],"names":[],"mappings":";;AAwDA,wDAqCC;AA7FD,8EAAyE;AAOzE,6DAAyF;AA6CzF;;;GAGG;AACH,SAAgB,sBAAsB,CACpC,IAAuB,EACvB,UAA8B,EAC9B,SAA4B,EAC5B,KAAqB,EACrB,SAA2C;IAE3C,MAAM,OAAO,GAAoB,EAAE,CAAA;IACnC,MAAM,KAAK,GAAG,IAAA,6CAAwB,GAAE,CAAA;IAExC,MAAM,WAAW,GAA6B;QAC5C,GAAG,CAAC,MAAqB;YACvB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QACD,SAAS,CAAC,MAAgC,EAAE,KAAa;YACvD,IAAA,6CAAwB,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;QAChD,CAAC;QACD,QAAQ,CAAC,IAAU;YACjB,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACrC,IAAI,WAAW,CAAC,iBAAiB,EAAE,CAAC;gBAClC,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACvC,CAAC;YACD,OAAO,EAAE,CAAA;QACX,CAAC;QACD,IAAI;QACJ,KAAK;KACN,CAAA;IAED,MAAM,KAAK,GAAG,IAAA,qCAAY,GAAE,CAAA;IAC5B,SAAS,CAAC,WAAW,CAAC,CAAA;IACtB,IAAA,6CAAwB,EAAC,KAAK,EAAE,uBAAuB,EAAE,IAAA,gCAAO,EAAC,KAAK,EAAE,IAAA,qCAAY,GAAE,CAAC,CAAC,CAAA;IAExF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,UAAU,CAAC,MAAM,CAAC,CAAA;IACpB,CAAC;IAED,SAAS,CAAC,KAAK,CAAC,CAAA;AAClB,CAAC"}
1
+ {"version":3,"file":"serializationTransaction.js","names":["createChangeEncoder","createSerializationStats","ChangeType","timeStampNow","elapsed","SnapshotFormat","RecordType"],"sources":["../../../../src/domain/record/serialization/serializationTransaction.ts"],"sourcesContent":["import { elapsed, timeStampNow } from '@kubesense/kubesense-js-core/time'\nimport type { TimeStamp } from '@kubesense/kubesense-js-core/time'\nimport { ChangeType, RecordType, SnapshotFormat } from '../../../types'\nimport type {\n AddCDataSectionNodeChange,\n AddDocTypeNodeChange,\n AddDocumentFragmentNodeChange,\n AddDocumentNodeChange,\n AddElementNodeChange,\n AddNodeChange,\n AddShadowRootNodeChange,\n AddTextNodeChange,\n AttachedStyleSheetsChange,\n InputSelectionChange,\n InputSelectionState,\n InsertionPoint,\n MediaInteractionType,\n RoleAnnotatedStringLiteral,\n} from '../../../types'\nimport type {\n NodeId,\n RoleAnnotatedAddNodeName,\n RoleAnnotatedAddNodeParams,\n RoleAnnotatedAttributeChange,\n RoleAnnotatedStringLiteralValue,\n RoleAnnotatedStyleSheetMediaList,\n RoleAnnotatedStyleSheetRules,\n StyleSheetId,\n} from '../encoding'\nimport { createChangeEncoder } from '../encoding'\nimport type { EmitRecordCallback, EmitStatsCallback } from '../record.types'\nimport type { RecordingScope } from '../recordingScope'\nimport type { SerializationStats } from './serializationStats'\nimport { createSerializationStats, updateSerializationStats } from './serializationStats'\n\nexport const enum SerializationKind {\n INITIAL_FULL_SNAPSHOT,\n SUBSEQUENT_FULL_SNAPSHOT,\n INCREMENTAL_SNAPSHOT,\n}\n\nexport type SerializationTransactionCallback = (transaction: SerializationTransaction) => void\n\n/**\n * SerializationTransaction is used to build and emit a `BrowserChangeRecord` containing a\n * serialized snapshot of the DOM. The term \"transaction\" is used because all the changes\n * in a serialization transaction are applied together, atomically. A serialization\n * transaction is thus always associated with a single timestamp.\n *\n * To use `SerializationTransaction`, call the builder methods it exposes to add changes\n * to the transaction. At the end of the transaction, the changes will be combined into a\n * single `BrowserChangeRecord` and emitted.\n */\nexport interface SerializationTransaction {\n /**\n * Add a metric to the transaction's statistics. The aggregated statistics will be\n * emitted when the transaction ends.\n */\n addMetric(metric: keyof SerializationStats, value: number): void\n\n /** Add a node to the document at the given insertion point. */\n addNode(\n pos: InsertionPoint,\n nodeName: RoleAnnotatedAddNodeName<AddCDataSectionNodeChange>,\n ...params: RoleAnnotatedAddNodeParams<AddCDataSectionNodeChange>\n ): void\n addNode(\n pos: InsertionPoint,\n nodeName: RoleAnnotatedAddNodeName<AddDocTypeNodeChange>,\n ...params: RoleAnnotatedAddNodeParams<AddDocTypeNodeChange>\n ): void\n addNode(\n pos: InsertionPoint,\n nodeName: RoleAnnotatedAddNodeName<AddDocumentNodeChange>,\n ...params: RoleAnnotatedAddNodeParams<AddDocumentNodeChange>\n ): void\n addNode(\n pos: InsertionPoint,\n nodeName: RoleAnnotatedAddNodeName<AddDocumentFragmentNodeChange>,\n ...params: RoleAnnotatedAddNodeParams<AddDocumentFragmentNodeChange>\n ): void\n addNode(\n pos: InsertionPoint,\n nodeName: RoleAnnotatedAddNodeName<AddShadowRootNodeChange>,\n ...params: RoleAnnotatedAddNodeParams<AddShadowRootNodeChange>\n ): void\n addNode(\n pos: InsertionPoint,\n nodeName: RoleAnnotatedAddNodeName<AddTextNodeChange>,\n ...params: RoleAnnotatedAddNodeParams<AddTextNodeChange>\n ): void\n addNode<Name extends RoleAnnotatedAddNodeName<AddElementNodeChange>>(\n pos: InsertionPoint,\n nodeName: Name,\n // This overload is deliberately unsatisfiable; a '#'-prefixed name belongs to one of\n // the node kinds above, so we should never reach it unless the caller provided\n // invalid parameters.\n ...params: RoleAnnotatedStringLiteralValue<Name> extends `#${string}`\n ? [never]\n : RoleAnnotatedAddNodeParams<AddElementNodeChange>\n ): void\n\n /** Add a stylesheet to the document. */\n addStyleSheet(\n rules: RoleAnnotatedStyleSheetRules,\n mediaList?: RoleAnnotatedStyleSheetMediaList,\n disabled?: boolean\n ): void\n\n /**\n * Attach one or more stylesheets to a <link>, <style>, #document, #document-fragment,\n * or #shadow-root node.\n */\n attachStyleSheets(nodeId: NodeId, sheetIds: StyleSheetId[]): void\n\n /** Remove a node from the document. */\n removeNode(nodeId: NodeId): void\n\n /** Set a node's attributes to the given values. */\n setAttributes(change: RoleAnnotatedAttributeChange): void\n\n /** Set the content of a canvas node to the given resource ID. */\n setImageContent(nodeId: NodeId, resourceId: RoleAnnotatedStringLiteral): void\n\n /** Set the selection state of one or more checkboxes, radio buttons, or <option> elements. */\n setInputSelection(state: InputSelectionState, nodeIds: NodeId[]): void\n\n /** Set the value of a form element. */\n setInputValue(nodeId: NodeId, value: RoleAnnotatedStringLiteral): void\n\n /** Set the media playback state of an <audio> or <video> element. */\n setMediaPlaybackState(nodeId: NodeId, state: MediaInteractionType): void\n\n /** Set the given node's scroll position in CSS pixels. */\n setScrollPosition(nodeId: NodeId, x: number, y: number): void\n\n /** Set the given node's size in CSS pixels. */\n setSize(nodeId: NodeId, width: number, height: number): void\n\n /** Set the given node's text content. */\n setText(nodeId: NodeId, content: RoleAnnotatedStringLiteral): void\n\n /** The kind of serialization being performed in this transaction. */\n kind: SerializationKind\n\n /** The recording scope in which this transaction is occurring. */\n scope: RecordingScope\n}\n\nexport function serializeInTransaction(\n kind: SerializationKind,\n emitRecord: EmitRecordCallback,\n emitStats: EmitStatsCallback,\n scope: RecordingScope,\n timestamp: TimeStamp,\n serialize: SerializationTransactionCallback\n): void {\n const encoder = createChangeEncoder(scope.stringIds)\n const stats = createSerializationStats()\n\n const transaction: SerializationTransaction = {\n addMetric(metric: keyof SerializationStats, value: number): void {\n updateSerializationStats(stats, metric, value)\n },\n // The overloads declared above are what callers are checked against; this implementation\n // takes the parameters of any of them.\n addNode(...change: unknown[]): void {\n encoder.add(ChangeType.AddNode, change as AddNodeChange)\n },\n addStyleSheet(\n rules: RoleAnnotatedStyleSheetRules,\n mediaList?: RoleAnnotatedStyleSheetMediaList,\n disabled?: boolean\n ): void {\n if (disabled) {\n encoder.add(ChangeType.AddStyleSheet, [rules, mediaList || [], disabled])\n } else if (mediaList) {\n encoder.add(ChangeType.AddStyleSheet, [rules, mediaList])\n } else {\n encoder.add(ChangeType.AddStyleSheet, [rules])\n }\n },\n attachStyleSheets(nodeId: NodeId, sheetIds: StyleSheetId[]): void {\n const change: AttachedStyleSheetsChange = [nodeId]\n for (const sheetId of sheetIds) {\n change.push(sheetId)\n }\n encoder.add(ChangeType.AttachedStyleSheets, change)\n },\n removeNode(nodeId: NodeId): void {\n encoder.add(ChangeType.RemoveNode, nodeId)\n },\n setAttributes(change: RoleAnnotatedAttributeChange): void {\n encoder.add(ChangeType.Attribute, change)\n },\n setInputSelection(state: InputSelectionState, nodeIds: NodeId[]): void {\n const change: InputSelectionChange = [state]\n for (const nodeId of nodeIds) {\n change.push(nodeId)\n }\n encoder.add(ChangeType.InputSelection, change)\n },\n setInputValue(nodeId: NodeId, value: RoleAnnotatedStringLiteral): void {\n encoder.add(ChangeType.InputValue, [nodeId, value])\n },\n setMediaPlaybackState(nodeId: NodeId, state: MediaInteractionType): void {\n encoder.add(ChangeType.MediaPlaybackState, [nodeId, state])\n },\n setScrollPosition(nodeId: NodeId, x: number, y: number): void {\n encoder.add(ChangeType.ScrollPosition, [nodeId, x, y])\n },\n setSize(nodeId: NodeId, width: number, height: number): void {\n encoder.add(ChangeType.Size, [nodeId, width, height])\n },\n setText(nodeId: NodeId, content: RoleAnnotatedStringLiteral): void {\n encoder.add(ChangeType.Text, [nodeId, content])\n },\n setImageContent(nodeId: NodeId, resourceId: RoleAnnotatedStringLiteral): void {\n encoder.add(ChangeType.ImageContent, [nodeId, resourceId])\n },\n kind,\n scope,\n }\n\n const start = timeStampNow()\n serialize(transaction)\n updateSerializationStats(stats, 'serializationDuration', elapsed(start, timeStampNow()))\n\n const changes = encoder.flush()\n if (changes.length > 0) {\n if (kind === SerializationKind.INITIAL_FULL_SNAPSHOT || kind === SerializationKind.SUBSEQUENT_FULL_SNAPSHOT) {\n emitRecord({\n data: changes,\n format: SnapshotFormat.Change,\n type: RecordType.FullSnapshot,\n timestamp,\n })\n } else {\n emitRecord({\n data: changes,\n type: RecordType.Change,\n timestamp,\n })\n }\n }\n\n emitStats(stats)\n}\n"],"mappings":";;;;;AAqJA,SAAgB,uBACd,MACA,YACA,WACA,OACA,WACA,WACM;CACN,MAAM,UAAUA,sBAAAA,oBAAoB,MAAM,SAAS;CACnD,MAAM,QAAQC,2BAAAA,yBAAyB;CAEvC,MAAM,cAAwC;EAC5C,UAAU,QAAkC,OAAqB;GAC/D,2BAAA,yBAAyB,OAAO,QAAQ,KAAK;EAC/C;EAGA,QAAQ,GAAG,QAAyB;GAClC,QAAQ,IAAIC,+BAAAA,WAAW,SAAS,MAAuB;EACzD;EACA,cACE,OACA,WACA,UACM;GACN,IAAI,UACF,QAAQ,IAAIA,+BAAAA,WAAW,eAAe;IAAC;IAAO,aAAa,CAAC;IAAG;GAAQ,CAAC;QACnE,IAAI,WACT,QAAQ,IAAIA,+BAAAA,WAAW,eAAe,CAAC,OAAO,SAAS,CAAC;QAExD,QAAQ,IAAIA,+BAAAA,WAAW,eAAe,CAAC,KAAK,CAAC;EAEjD;EACA,kBAAkB,QAAgB,UAAgC;GAChE,MAAM,SAAoC,CAAC,MAAM;GACjD,KAAK,MAAM,WAAW,UACpB,OAAO,KAAK,OAAO;GAErB,QAAQ,IAAIA,+BAAAA,WAAW,qBAAqB,MAAM;EACpD;EACA,WAAW,QAAsB;GAC/B,QAAQ,IAAIA,+BAAAA,WAAW,YAAY,MAAM;EAC3C;EACA,cAAc,QAA4C;GACxD,QAAQ,IAAIA,+BAAAA,WAAW,WAAW,MAAM;EAC1C;EACA,kBAAkB,OAA4B,SAAyB;GACrE,MAAM,SAA+B,CAAC,KAAK;GAC3C,KAAK,MAAM,UAAU,SACnB,OAAO,KAAK,MAAM;GAEpB,QAAQ,IAAIA,+BAAAA,WAAW,gBAAgB,MAAM;EAC/C;EACA,cAAc,QAAgB,OAAyC;GACrE,QAAQ,IAAIA,+BAAAA,WAAW,YAAY,CAAC,QAAQ,KAAK,CAAC;EACpD;EACA,sBAAsB,QAAgB,OAAmC;GACvE,QAAQ,IAAIA,+BAAAA,WAAW,oBAAoB,CAAC,QAAQ,KAAK,CAAC;EAC5D;EACA,kBAAkB,QAAgB,GAAW,GAAiB;GAC5D,QAAQ,IAAIA,+BAAAA,WAAW,gBAAgB;IAAC;IAAQ;IAAG;GAAC,CAAC;EACvD;EACA,QAAQ,QAAgB,OAAe,QAAsB;GAC3D,QAAQ,IAAIA,+BAAAA,WAAW,MAAM;IAAC;IAAQ;IAAO;GAAM,CAAC;EACtD;EACA,QAAQ,QAAgB,SAA2C;GACjE,QAAQ,IAAIA,+BAAAA,WAAW,MAAM,CAAC,QAAQ,OAAO,CAAC;EAChD;EACA,gBAAgB,QAAgB,YAA8C;GAC5E,QAAQ,IAAIA,+BAAAA,WAAW,cAAc,CAAC,QAAQ,UAAU,CAAC;EAC3D;EACA;EACA;CACF;CAEA,MAAM,SAAA,GAAQC,kCAAAA,aAAAA,CAAa;CAC3B,UAAU,WAAW;CACrB,2BAAA,yBAAyB,OAAO,0BAAA,GAAyBC,kCAAAA,QAAAA,CAAQ,QAAA,GAAOD,kCAAAA,aAAAA,CAAa,CAAC,CAAC;CAEvF,MAAM,UAAU,QAAQ,MAAM;CAC9B,IAAI,QAAQ,SAAS,GAAG;EACtB,IAAI,SAAA,KAAoD,SAAA,GACtD,WAAW;GACT,MAAM;GACN,QAAQE,+BAAAA,eAAe;GACvB,MAAMC,+BAAAA,WAAW;GACjB;EACF,CAAC;OAED,WAAW;GACT,MAAM;GACN,MAAMA,+BAAAA,WAAW;GACjB;EACF,CAAC;CAEL;CAEA,UAAU,KAAK;AACjB"}
@@ -9,7 +9,6 @@ export declare const URL_IN_CSS_REF: RegExp;
9
9
  export declare const ABSOLUTE_URL: RegExp;
10
10
  export declare const DATA_URI: RegExp;
11
11
  export declare function switchToAbsoluteUrl(cssText: string, cssHref: string | null): string;
12
- export declare function getValidTagName(tagName: string): string;
13
12
  /**
14
13
  * Returns the tag name of the given element, normalized to ensure a consistent lowercase
15
14
  * representation regardless of whether the element is HTML, XHTML, or SVG.
@@ -1,88 +1,59 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DATA_URI = exports.ABSOLUTE_URL = exports.URL_IN_CSS_REF = void 0;
4
- exports.getElementInputValue = getElementInputValue;
5
- exports.switchToAbsoluteUrl = switchToAbsoluteUrl;
6
- exports.getValidTagName = getValidTagName;
7
- exports.normalizedTagName = normalizedTagName;
8
- exports.censoredImageForSize = censoredImageForSize;
9
- const kubesense_browser_core_1 = require("@kubesense/kubesense-browser-core");
10
- const kubesense_browser_rum_core_1 = require("@kubesense/kubesense-browser-rum-core");
1
+ let _kubesense_kubesense_browser_rum_core = require("@kubesense/kubesense-browser-rum-core");
2
+ let _kubesense_kubesense_js_core_util = require("@kubesense/kubesense-js-core/util");
3
+ //#region src/domain/record/serialization/serializationUtils.ts
11
4
  /**
12
- * Get the element "value" to be serialized as an attribute or an input update record. It respects
13
- * the input privacy mode of the element.
14
- * PERFROMANCE OPTIMIZATION: Assumes that privacy level `HIDDEN` is never encountered because of earlier checks.
15
- */
5
+ * Get the element "value" to be serialized as an attribute or an input update record. It respects
6
+ * the input privacy mode of the element.
7
+ * PERFROMANCE OPTIMIZATION: Assumes that privacy level `HIDDEN` is never encountered because of earlier checks.
8
+ */
16
9
  function getElementInputValue(element, nodePrivacyLevel) {
17
- /*
18
- BROWSER SPEC NOTE: <input>, <select>
19
- For some <input> elements, the `value` is an exceptional property/attribute that has the
20
- value synced between el.value and el.getAttribute()
21
- input[type=button,checkbox,hidden,image,radio,reset,submit]
22
- */
23
- const tagName = element.tagName;
24
- const value = element.value;
25
- if ((0, kubesense_browser_rum_core_1.shouldMaskNode)(element, nodePrivacyLevel)) {
26
- const type = element.type;
27
- if (tagName === 'INPUT' && (type === 'button' || type === 'submit' || type === 'reset')) {
28
- // Overrule `MASK` privacy level for button-like element values, as they are used during replay
29
- // to display their label. They can still be hidden via the "hidden" privacy attribute or class name.
30
- return value;
31
- }
32
- else if (!value || tagName === 'OPTION') {
33
- // <Option> value provides no benefit
34
- return;
35
- }
36
- return kubesense_browser_rum_core_1.CENSORED_STRING_MARK;
37
- }
38
- if (tagName === 'OPTION' || tagName === 'SELECT') {
39
- return element.value;
40
- }
41
- if (tagName !== 'INPUT' && tagName !== 'TEXTAREA') {
42
- return;
43
- }
44
- return value;
10
+ const tagName = element.tagName;
11
+ const value = element.value;
12
+ if ((0, _kubesense_kubesense_browser_rum_core.shouldMaskNode)(element, nodePrivacyLevel)) {
13
+ const type = element.type;
14
+ if (tagName === "INPUT" && (type === "button" || type === "submit" || type === "reset")) return value;
15
+ else if (!value || tagName === "OPTION") return;
16
+ return _kubesense_kubesense_browser_rum_core.CENSORED_STRING_MARK;
17
+ }
18
+ if (tagName === "OPTION" || tagName === "SELECT") return element.value;
19
+ if (tagName !== "INPUT" && tagName !== "TEXTAREA") return;
20
+ return value;
45
21
  }
46
- exports.URL_IN_CSS_REF = /url\((?:(')([^']*)'|(")([^"]*)"|([^)]*))\)/gm;
47
- exports.ABSOLUTE_URL = /^[A-Za-z]+:|^\/\//;
48
- exports.DATA_URI = /^["']?data:.*,/i;
22
+ const URL_IN_CSS_REF = /url\((?:(')([^']*)'|(")([^"]*)"|([^)]*))\)/gm;
23
+ const ABSOLUTE_URL = /^[A-Za-z]+:|^\/\//;
24
+ const DATA_URI = /^["']?data:.*,/i;
49
25
  function switchToAbsoluteUrl(cssText, cssHref) {
50
- return cssText.replace(exports.URL_IN_CSS_REF, (matchingSubstring, singleQuote, urlWrappedInSingleQuotes, doubleQuote, urlWrappedInDoubleQuotes, urlNotWrappedInQuotes) => {
51
- const url = urlWrappedInSingleQuotes || urlWrappedInDoubleQuotes || urlNotWrappedInQuotes;
52
- if (!cssHref || !url || exports.ABSOLUTE_URL.test(url) || exports.DATA_URI.test(url)) {
53
- return matchingSubstring;
54
- }
55
- const quote = singleQuote || doubleQuote || '';
56
- return `url(${quote}${makeUrlAbsolute(url, cssHref)}${quote})`;
57
- });
26
+ return cssText.replace(URL_IN_CSS_REF, (matchingSubstring, singleQuote, urlWrappedInSingleQuotes, doubleQuote, urlWrappedInDoubleQuotes, urlNotWrappedInQuotes) => {
27
+ const url = urlWrappedInSingleQuotes || urlWrappedInDoubleQuotes || urlNotWrappedInQuotes;
28
+ if (!cssHref || !url || ABSOLUTE_URL.test(url) || DATA_URI.test(url)) return matchingSubstring;
29
+ const quote = singleQuote || doubleQuote || "";
30
+ return `url(${quote}${makeUrlAbsolute(url, cssHref)}${quote})`;
31
+ });
58
32
  }
59
33
  function makeUrlAbsolute(url, baseUrl) {
60
- try {
61
- return (0, kubesense_browser_core_1.buildUrl)(url, baseUrl).href;
62
- }
63
- catch (_a) {
64
- return url;
65
- }
66
- }
67
- const TAG_NAME_REGEX = /[^a-z1-6-_]/;
68
- function getValidTagName(tagName) {
69
- const processedTagName = tagName.toLowerCase().trim();
70
- if (TAG_NAME_REGEX.test(processedTagName)) {
71
- // if the tag name is odd and we cannot extract
72
- // anything from the string, then we return a
73
- // generic div
74
- return 'div';
75
- }
76
- return processedTagName;
34
+ try {
35
+ return (0, _kubesense_kubesense_js_core_util.buildUrl)(url, baseUrl).href;
36
+ } catch {
37
+ return url;
38
+ }
77
39
  }
78
40
  /**
79
- * Returns the tag name of the given element, normalized to ensure a consistent lowercase
80
- * representation regardless of whether the element is HTML, XHTML, or SVG.
81
- */
41
+ * Returns the tag name of the given element, normalized to ensure a consistent lowercase
42
+ * representation regardless of whether the element is HTML, XHTML, or SVG.
43
+ */
82
44
  function normalizedTagName(element) {
83
- return element.tagName.toLowerCase();
45
+ return element.tagName.toLowerCase();
84
46
  }
85
47
  function censoredImageForSize(width, height) {
86
- return `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='${width}' height='${height}' style='background-color:silver'%3E%3C/svg%3E`;
48
+ return `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='${width}' height='${height}' style='background-color:silver'%3E%3C/svg%3E`;
87
49
  }
50
+ //#endregion
51
+ exports.ABSOLUTE_URL = ABSOLUTE_URL;
52
+ exports.DATA_URI = DATA_URI;
53
+ exports.URL_IN_CSS_REF = URL_IN_CSS_REF;
54
+ exports.censoredImageForSize = censoredImageForSize;
55
+ exports.getElementInputValue = getElementInputValue;
56
+ exports.normalizedTagName = normalizedTagName;
57
+ exports.switchToAbsoluteUrl = switchToAbsoluteUrl;
58
+
88
59
  //# sourceMappingURL=serializationUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializationUtils.js","sourceRoot":"","sources":["../../../../src/domain/record/serialization/serializationUtils.ts"],"names":[],"mappings":";;;AASA,oDAgCC;AAMD,kDAqBC;AAWD,0CAWC;AAMD,8CAEC;AAED,oDAEC;AAtGD,8EAA4D;AAC5D,sFAA4F;AAG5F;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,OAAgB,EAAE,gBAAkC;IACvF;;;;;OAKG;IACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,MAAM,KAAK,GAAI,OAAkD,CAAC,KAAK,CAAA;IAEvE,IAAI,IAAA,2CAAc,EAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAI,OAAkD,CAAC,IAAI,CAAA;QACrE,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;YACxF,+FAA+F;YAC/F,qGAAqG;YACrG,OAAO,KAAK,CAAA;QACd,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC1C,qCAAqC;YACrC,OAAM;QACR,CAAC;QACD,OAAO,iDAAoB,CAAA;IAC7B,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAQ,OAAiD,CAAC,KAAK,CAAA;IACjE,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAClD,OAAM;IACR,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAEY,QAAA,cAAc,GAAG,8CAA8C,CAAA;AAC/D,QAAA,YAAY,GAAG,mBAAmB,CAAA;AAClC,QAAA,QAAQ,GAAG,iBAAiB,CAAA;AAEzC,SAAgB,mBAAmB,CAAC,OAAe,EAAE,OAAsB;IACzE,OAAO,OAAO,CAAC,OAAO,CACpB,sBAAc,EACd,CACE,iBAAyB,EACzB,WAA+B,EAC/B,wBAA4C,EAC5C,WAA+B,EAC/B,wBAA4C,EAC5C,qBAAyC,EACzC,EAAE;QACF,MAAM,GAAG,GAAG,wBAAwB,IAAI,wBAAwB,IAAI,qBAAqB,CAAA;QAEzF,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,IAAI,oBAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,gBAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACrE,OAAO,iBAAiB,CAAA;QAC1B,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,IAAI,WAAW,IAAI,EAAE,CAAA;QAC9C,OAAO,OAAO,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,KAAK,GAAG,CAAA;IAChE,CAAC,CACF,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,OAAe;IACnD,IAAI,CAAC;QACH,OAAO,IAAA,iCAAQ,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAA;IACpC,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,GAAG,CAAA;IACZ,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAAG,aAAa,CAAA;AACpC,SAAgB,eAAe,CAAC,OAAe;IAC7C,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;IAErD,IAAI,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1C,+CAA+C;QAC/C,6CAA6C;QAC7C,cAAc;QACd,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,OAAgB;IAChD,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;AACtC,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAa,EAAE,MAAc;IAChE,OAAO,uEAAuE,KAAK,aAAa,MAAM,gDAAgD,CAAA;AACxJ,CAAC"}
1
+ {"version":3,"file":"serializationUtils.js","names":["shouldMaskNode","CENSORED_STRING_MARK","buildUrl"],"sources":["../../../../src/domain/record/serialization/serializationUtils.ts"],"sourcesContent":["import { buildUrl } from '@kubesense/kubesense-js-core/util'\nimport { CENSORED_STRING_MARK, shouldMaskNode } from '@kubesense/kubesense-browser-rum-core'\nimport type { NodePrivacyLevel } from '@kubesense/kubesense-browser-rum-core'\n\n/**\n * Get the element \"value\" to be serialized as an attribute or an input update record. It respects\n * the input privacy mode of the element.\n * PERFROMANCE OPTIMIZATION: Assumes that privacy level `HIDDEN` is never encountered because of earlier checks.\n */\nexport function getElementInputValue(element: Element, nodePrivacyLevel: NodePrivacyLevel) {\n /*\n BROWSER SPEC NOTE: <input>, <select>\n For some <input> elements, the `value` is an exceptional property/attribute that has the\n value synced between el.value and el.getAttribute()\n input[type=button,checkbox,hidden,image,radio,reset,submit]\n */\n const tagName = element.tagName\n const value = (element as HTMLInputElement | HTMLTextAreaElement).value\n\n if (shouldMaskNode(element, nodePrivacyLevel)) {\n const type = (element as HTMLInputElement | HTMLTextAreaElement).type\n if (tagName === 'INPUT' && (type === 'button' || type === 'submit' || type === 'reset')) {\n // Overrule `MASK` privacy level for button-like element values, as they are used during replay\n // to display their label. They can still be hidden via the \"hidden\" privacy attribute or class name.\n return value\n } else if (!value || tagName === 'OPTION') {\n // <Option> value provides no benefit\n return\n }\n return CENSORED_STRING_MARK\n }\n\n if (tagName === 'OPTION' || tagName === 'SELECT') {\n return (element as HTMLOptionElement | HTMLSelectElement).value\n }\n\n if (tagName !== 'INPUT' && tagName !== 'TEXTAREA') {\n return\n }\n\n return value\n}\n\nexport const URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")([^\"]*)\"|([^)]*))\\)/gm\nexport const ABSOLUTE_URL = /^[A-Za-z]+:|^\\/\\//\nexport const DATA_URI = /^[\"']?data:.*,/i\n\nexport function switchToAbsoluteUrl(cssText: string, cssHref: string | null): string {\n return cssText.replace(\n URL_IN_CSS_REF,\n (\n matchingSubstring: string,\n singleQuote: string | undefined,\n urlWrappedInSingleQuotes: string | undefined,\n doubleQuote: string | undefined,\n urlWrappedInDoubleQuotes: string | undefined,\n urlNotWrappedInQuotes: string | undefined\n ) => {\n const url = urlWrappedInSingleQuotes || urlWrappedInDoubleQuotes || urlNotWrappedInQuotes\n\n if (!cssHref || !url || ABSOLUTE_URL.test(url) || DATA_URI.test(url)) {\n return matchingSubstring\n }\n\n const quote = singleQuote || doubleQuote || ''\n return `url(${quote}${makeUrlAbsolute(url, cssHref)}${quote})`\n }\n )\n}\n\nfunction makeUrlAbsolute(url: string, baseUrl: string): string {\n try {\n return buildUrl(url, baseUrl).href\n } catch {\n return url\n }\n}\n\n/**\n * Returns the tag name of the given element, normalized to ensure a consistent lowercase\n * representation regardless of whether the element is HTML, XHTML, or SVG.\n */\nexport function normalizedTagName(element: Element): string {\n return element.tagName.toLowerCase()\n}\n\nexport function censoredImageForSize(width: number, height: number) {\n return `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='${width}' height='${height}' style='background-color:silver'%3E%3C/svg%3E`\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,qBAAqB,SAAkB,kBAAoC;CAOzF,MAAM,UAAU,QAAQ;CACxB,MAAM,QAAS,QAAmD;CAElE,KAAA,GAAIA,sCAAAA,eAAAA,CAAe,SAAS,gBAAgB,GAAG;EAC7C,MAAM,OAAQ,QAAmD;EACjE,IAAI,YAAY,YAAY,SAAS,YAAY,SAAS,YAAY,SAAS,UAG7E,OAAO;OACF,IAAI,CAAC,SAAS,YAAY,UAE/B;EAEF,OAAOC,sCAAAA;CACT;CAEA,IAAI,YAAY,YAAY,YAAY,UACtC,OAAQ,QAAkD;CAG5D,IAAI,YAAY,WAAW,YAAY,YACrC;CAGF,OAAO;AACT;AAEA,MAAa,iBAAiB;AAC9B,MAAa,eAAe;AAC5B,MAAa,WAAW;AAExB,SAAgB,oBAAoB,SAAiB,SAAgC;CACnF,OAAO,QAAQ,QACb,iBAEE,mBACA,aACA,0BACA,aACA,0BACA,0BACG;EACH,MAAM,MAAM,4BAA4B,4BAA4B;EAEpE,IAAI,CAAC,WAAW,CAAC,OAAO,aAAa,KAAK,GAAG,KAAK,SAAS,KAAK,GAAG,GACjE,OAAO;EAGT,MAAM,QAAQ,eAAe,eAAe;EAC5C,OAAO,OAAO,QAAQ,gBAAgB,KAAK,OAAO,IAAI,MAAM;CAC9D,CACF;AACF;AAEA,SAAS,gBAAgB,KAAa,SAAyB;CAC7D,IAAI;EACF,QAAA,GAAOC,kCAAAA,SAAAA,CAAS,KAAK,OAAO,CAAC,CAAC;CAChC,QAAQ;EACN,OAAO;CACT;AACF;;;;;AAMA,SAAgB,kBAAkB,SAA0B;CAC1D,OAAO,QAAQ,QAAQ,YAAY;AACrC;AAEA,SAAgB,qBAAqB,OAAe,QAAgB;CAClE,OAAO,uEAAuE,MAAM,YAAY,OAAO;AACzG"}
@@ -1,42 +1,27 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = void 0;
4
- exports.serializeAttribute = serializeAttribute;
5
- const kubesense_browser_rum_core_1 = require("@kubesense/kubesense-browser-rum-core");
6
- const serializationUtils_1 = require("./serializationUtils");
7
- // TODO: temporarily bump the Session Replay limit to 1Mb for dataUrls
8
- // This limit should be removed after [PANA-2843] is implemented
9
- exports.MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 1000000;
1
+ const require_serializationUtils = require("./serializationUtils.js");
2
+ let _kubesense_kubesense_browser_rum_core = require("@kubesense/kubesense-browser-rum-core");
3
+ //#region src/domain/record/serialization/serializeAttribute.ts
4
+ const MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 1e6;
10
5
  function serializeAttribute(element, nodePrivacyLevel, attributeName, configuration) {
11
- if (nodePrivacyLevel === kubesense_browser_rum_core_1.NodePrivacyLevel.HIDDEN) {
12
- // dup condition for direct access case
13
- return null;
14
- }
15
- const attributeValue = element.getAttribute(attributeName);
16
- const tagName = element.tagName;
17
- if ((0, kubesense_browser_rum_core_1.shouldMaskAttribute)(tagName, attributeName, attributeValue, nodePrivacyLevel, configuration)) {
18
- // mask image URLs
19
- if (tagName === 'IMG') {
20
- // generate image with similar dimension than the original to have the same rendering behaviour
21
- const image = element;
22
- if (image.naturalWidth > 0) {
23
- return (0, serializationUtils_1.censoredImageForSize)(image.naturalWidth, image.naturalHeight);
24
- }
25
- const { width, height } = element.getBoundingClientRect();
26
- if (width > 0 || height > 0) {
27
- return (0, serializationUtils_1.censoredImageForSize)(width, height);
28
- }
29
- // if we can't get the image size, fallback to the censored image
30
- return kubesense_browser_rum_core_1.CENSORED_IMG_MARK;
31
- }
32
- if (tagName === 'SOURCE') {
33
- return kubesense_browser_rum_core_1.CENSORED_IMG_MARK;
34
- }
35
- return kubesense_browser_rum_core_1.CENSORED_STRING_MARK;
36
- }
37
- if (!attributeValue) {
38
- return attributeValue;
39
- }
40
- return (0, kubesense_browser_rum_core_1.sanitizeIfLongDataUrl)(attributeValue, exports.MAX_ATTRIBUTE_VALUE_CHAR_LENGTH);
6
+ if (nodePrivacyLevel === _kubesense_kubesense_browser_rum_core.NodePrivacyLevel.HIDDEN) return null;
7
+ const attributeValue = element.getAttribute(attributeName);
8
+ const tagName = element.tagName;
9
+ if ((0, _kubesense_kubesense_browser_rum_core.shouldMaskAttribute)(tagName, attributeName, attributeValue, nodePrivacyLevel, configuration)) {
10
+ if (tagName === "IMG") {
11
+ const image = element;
12
+ if (image.naturalWidth > 0) return require_serializationUtils.censoredImageForSize(image.naturalWidth, image.naturalHeight);
13
+ const { width, height } = element.getBoundingClientRect();
14
+ if (width > 0 || height > 0) return require_serializationUtils.censoredImageForSize(width, height);
15
+ return _kubesense_kubesense_browser_rum_core.CENSORED_IMG_MARK;
16
+ }
17
+ if (tagName === "SOURCE") return _kubesense_kubesense_browser_rum_core.CENSORED_IMG_MARK;
18
+ return _kubesense_kubesense_browser_rum_core.CENSORED_STRING_MARK;
19
+ }
20
+ if (!attributeValue) return attributeValue;
21
+ return (0, _kubesense_kubesense_browser_rum_core.sanitizeIfLongDataUrl)(attributeValue, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH);
41
22
  }
23
+ //#endregion
24
+ exports.MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = MAX_ATTRIBUTE_VALUE_CHAR_LENGTH;
25
+ exports.serializeAttribute = serializeAttribute;
26
+
42
27
  //# sourceMappingURL=serializeAttribute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializeAttribute.js","sourceRoot":"","sources":["../../../../src/domain/record/serialization/serializeAttribute.ts"],"names":[],"mappings":";;;AAcA,gDAwCC;AAtDD,sFAM8C;AAE9C,6DAA2D;AAE3D,sEAAsE;AACtE,gEAAgE;AACnD,QAAA,+BAA+B,GAAG,OAAS,CAAA;AAExD,SAAgB,kBAAkB,CAChC,OAAgB,EAChB,gBAAkC,EAClC,aAAqB,EACrB,aAA+B;IAE/B,IAAI,gBAAgB,KAAK,6CAAgB,CAAC,MAAM,EAAE,CAAC;QACjD,uCAAuC;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,IAAI,IAAA,gDAAmB,EAAC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,CAAC;QACjG,kBAAkB;QAClB,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,+FAA+F;YAC/F,MAAM,KAAK,GAAG,OAA2B,CAAA;YACzC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAA,yCAAoB,EAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;YACtE,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAA;YACzD,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAA,yCAAoB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC5C,CAAC;YACD,iEAAiE;YACjE,OAAO,8CAAiB,CAAA;QAC1B,CAAC;QACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,OAAO,8CAAiB,CAAA;QAC1B,CAAC;QAED,OAAO,iDAAoB,CAAA;IAC7B,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,OAAO,IAAA,kDAAqB,EAAC,cAAc,EAAE,uCAA+B,CAAC,CAAA;AAC/E,CAAC"}
1
+ {"version":3,"file":"serializeAttribute.js","names":["NodePrivacyLevel","shouldMaskAttribute","censoredImageForSize","CENSORED_IMG_MARK","CENSORED_STRING_MARK","sanitizeIfLongDataUrl"],"sources":["../../../../src/domain/record/serialization/serializeAttribute.ts"],"sourcesContent":["import {\n NodePrivacyLevel,\n CENSORED_STRING_MARK,\n CENSORED_IMG_MARK,\n sanitizeIfLongDataUrl,\n shouldMaskAttribute,\n} from '@kubesense/kubesense-browser-rum-core'\nimport type { RumConfiguration } from '@kubesense/kubesense-browser-rum-core'\nimport { censoredImageForSize } from './serializationUtils'\n\n// TODO: temporarily bump the Session Replay limit to 1Mb for dataUrls\n// This limit should be removed after [PANA-2843] is implemented\nexport const MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 1_000_000\n\nexport function serializeAttribute(\n element: Element,\n nodePrivacyLevel: NodePrivacyLevel,\n attributeName: string,\n configuration: RumConfiguration\n): string | null {\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // dup condition for direct access case\n return null\n }\n\n const attributeValue = element.getAttribute(attributeName)\n const tagName = element.tagName\n if (shouldMaskAttribute(tagName, attributeName, attributeValue, nodePrivacyLevel, configuration)) {\n // mask image URLs\n if (tagName === 'IMG') {\n // generate image with similar dimension than the original to have the same rendering behaviour\n const image = element as HTMLImageElement\n if (image.naturalWidth > 0) {\n return censoredImageForSize(image.naturalWidth, image.naturalHeight)\n }\n const { width, height } = element.getBoundingClientRect()\n if (width > 0 || height > 0) {\n return censoredImageForSize(width, height)\n }\n // if we can't get the image size, fallback to the censored image\n return CENSORED_IMG_MARK\n }\n if (tagName === 'SOURCE') {\n return CENSORED_IMG_MARK\n }\n\n return CENSORED_STRING_MARK\n }\n\n if (!attributeValue) {\n return attributeValue\n }\n\n return sanitizeIfLongDataUrl(attributeValue, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH)\n}\n"],"mappings":";;;AAYA,MAAa,kCAAkC;AAE/C,SAAgB,mBACd,SACA,kBACA,eACA,eACe;CACf,IAAI,qBAAqBA,sCAAAA,iBAAiB,QAExC,OAAO;CAGT,MAAM,iBAAiB,QAAQ,aAAa,aAAa;CACzD,MAAM,UAAU,QAAQ;CACxB,KAAA,GAAIC,sCAAAA,oBAAAA,CAAoB,SAAS,eAAe,gBAAgB,kBAAkB,aAAa,GAAG;EAEhG,IAAI,YAAY,OAAO;GAErB,MAAM,QAAQ;GACd,IAAI,MAAM,eAAe,GACvB,OAAOC,2BAAAA,qBAAqB,MAAM,cAAc,MAAM,aAAa;GAErE,MAAM,EAAE,OAAO,WAAW,QAAQ,sBAAsB;GACxD,IAAI,QAAQ,KAAK,SAAS,GACxB,OAAOA,2BAAAA,qBAAqB,OAAO,MAAM;GAG3C,OAAOC,sCAAAA;EACT;EACA,IAAI,YAAY,UACd,OAAOA,sCAAAA;EAGT,OAAOC,sCAAAA;CACT;CAEA,IAAI,CAAC,gBACH,OAAO;CAGT,QAAA,GAAOC,sCAAAA,sBAAAA,CAAsB,gBAAgB,+BAA+B;AAC9E"}
@@ -1,7 +1,7 @@
1
1
  import { NodePrivacyLevel } from '@kubesense/kubesense-browser-rum-core';
2
+ import type { RoleAnnotatedAttributeAssignment } from '../encoding';
2
3
  import type { SerializationTransaction } from './serializationTransaction';
3
4
  import type { VirtualAttributes } from './serialization.types';
4
- export declare function serializeAttributes(element: Element, nodePrivacyLevel: NodePrivacyLevel, transaction: SerializationTransaction): Record<string, number | string>;
5
- export declare function serializeDOMAttributes(element: Element, nodePrivacyLevel: NodePrivacyLevel, transaction: SerializationTransaction): Record<string, string>;
5
+ export declare function serializeDOMAttributes(element: Element, nodePrivacyLevel: NodePrivacyLevel, transaction: SerializationTransaction): RoleAnnotatedAttributeAssignment[];
6
6
  export declare function serializeVirtualAttributes(element: Element, nodePrivacyLevel: NodePrivacyLevel, transaction: SerializationTransaction): VirtualAttributes;
7
7
  export declare function getCssRulesString(cssStyleSheet: CSSStyleSheet | undefined | null): string | null;