@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
@@ -0,0 +1,28 @@
1
+ import { ONE_SECOND, elapsed, timeStampNow } from "@kubesense/kubesense-js-core/time";
2
+ //#region src/domain/segmentCollection/startDroppedSegmentRecovery.ts
3
+ /** The least time between two recovery snapshots. */
4
+ const DROPPED_SEGMENT_RECOVERY_INTERVAL = 30 * ONE_SECOND;
5
+ /**
6
+ * Takes a new full snapshot when a segment is lost to a network error.
7
+ *
8
+ * Every record after a lost segment builds on DOM the intake never received, so without a new
9
+ * snapshot the replay freezes on the last DOM it has until the next view starts one. Only a
10
+ * network error triggers it — an upload the intake rejected (401, 413) would see the snapshot
11
+ * rejected too — and at most once per interval, so a failing network costs one snapshot per
12
+ * interval rather than one per segment.
13
+ */
14
+ function startDroppedSegmentRecovery(replayRequestObservable, takeFullSnapshot) {
15
+ let lastRecovery;
16
+ const { unsubscribe } = replayRequestObservable.subscribe((event) => {
17
+ if (event.type !== "dropped" || event.status !== 0) return;
18
+ const now = timeStampNow();
19
+ if (lastRecovery !== void 0 && elapsed(lastRecovery, now) < DROPPED_SEGMENT_RECOVERY_INTERVAL) return;
20
+ lastRecovery = now;
21
+ takeFullSnapshot();
22
+ });
23
+ return { stop: unsubscribe };
24
+ }
25
+ //#endregion
26
+ export { DROPPED_SEGMENT_RECOVERY_INTERVAL, startDroppedSegmentRecovery };
27
+
28
+ //# sourceMappingURL=startDroppedSegmentRecovery.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startDroppedSegmentRecovery.mjs","names":[],"sources":["../../../src/domain/segmentCollection/startDroppedSegmentRecovery.ts"],"sourcesContent":["import type { HttpRequestEvent, Observable } from '@kubesense/kubesense-browser-core'\nimport { elapsed, ONE_SECOND, timeStampNow } from '@kubesense/kubesense-js-core/time'\nimport type { TimeStamp } from '@kubesense/kubesense-js-core/time'\nimport type { ReplayPayload } from './buildReplayPayload'\n\n/** The least time between two recovery snapshots. */\nexport const DROPPED_SEGMENT_RECOVERY_INTERVAL = 30 * ONE_SECOND\n\n/**\n * Takes a new full snapshot when a segment is lost to a network error.\n *\n * Every record after a lost segment builds on DOM the intake never received, so without a new\n * snapshot the replay freezes on the last DOM it has until the next view starts one. Only a\n * network error triggers it — an upload the intake rejected (401, 413) would see the snapshot\n * rejected too — and at most once per interval, so a failing network costs one snapshot per\n * interval rather than one per segment.\n */\nexport function startDroppedSegmentRecovery(\n replayRequestObservable: Observable<HttpRequestEvent<ReplayPayload>>,\n takeFullSnapshot: () => void\n) {\n let lastRecovery: TimeStamp | undefined\n\n const { unsubscribe } = replayRequestObservable.subscribe((event) => {\n if (event.type !== 'dropped' || event.status !== 0) {\n return\n }\n const now = timeStampNow()\n if (lastRecovery !== undefined && elapsed(lastRecovery, now) < DROPPED_SEGMENT_RECOVERY_INTERVAL) {\n return\n }\n lastRecovery = now\n takeFullSnapshot()\n })\n\n return { stop: unsubscribe }\n}\n"],"mappings":";;;AAMA,MAAa,oCAAoC,KAAK;;;;;;;;;;AAWtD,SAAgB,4BACd,yBACA,kBACA;CACA,IAAI;CAEJ,MAAM,EAAE,gBAAgB,wBAAwB,WAAW,UAAU;EACnE,IAAI,MAAM,SAAS,aAAa,MAAM,WAAW,GAC/C;EAEF,MAAM,MAAM,aAAa;EACzB,IAAI,iBAAiB,KAAA,KAAa,QAAQ,cAAc,GAAG,IAAI,mCAC7D;EAEF,eAAe;EACf,iBAAiB;CACnB,CAAC;CAED,OAAO,EAAE,MAAM,YAAY;AAC7B"}
@@ -0,0 +1,45 @@
1
+ import { TelemetryMetrics, addTelemetryMetrics, noop } from "@kubesense/kubesense-browser-core";
2
+ //#region src/domain/segmentCollection/startSegmentTelemetry.ts
3
+ function startSegmentTelemetry(telemetry, requestObservable) {
4
+ if (!telemetry.metricsEnabled) return { stop: noop };
5
+ const { unsubscribe } = requestObservable.subscribe((requestEvent) => {
6
+ if (requestEvent.type === "failure" || requestEvent.type === "queue-full" || requestEvent.type === "success" && requestEvent.payload.isFullSnapshot) {
7
+ const metrics = createSegmentMetrics(requestEvent.type, requestEvent.bandwidth, requestEvent.payload);
8
+ addTelemetryMetrics(TelemetryMetrics.SEGMENT_METRICS_TELEMETRY_NAME, { metrics });
9
+ }
10
+ });
11
+ return { stop: unsubscribe };
12
+ }
13
+ function createSegmentMetrics(result, bandwidthStats, payload) {
14
+ return {
15
+ cssText: {
16
+ count: payload.cssText.count,
17
+ max: payload.cssText.max,
18
+ sum: payload.cssText.sum
19
+ },
20
+ encoding: {
21
+ fullSnapshot: "change",
22
+ incrementalSnapshot: "change"
23
+ },
24
+ isFullSnapshot: payload.isFullSnapshot,
25
+ ongoingRequests: {
26
+ count: bandwidthStats.ongoingRequestCount,
27
+ totalSize: bandwidthStats.ongoingByteCount
28
+ },
29
+ recordCount: payload.recordCount,
30
+ result,
31
+ serializationDuration: {
32
+ count: payload.serializationDuration.count,
33
+ max: payload.serializationDuration.max,
34
+ sum: payload.serializationDuration.sum
35
+ },
36
+ size: {
37
+ compressed: payload.bytesCount,
38
+ raw: payload.rawSize
39
+ }
40
+ };
41
+ }
42
+ //#endregion
43
+ export { startSegmentTelemetry };
44
+
45
+ //# sourceMappingURL=startSegmentTelemetry.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startSegmentTelemetry.mjs","names":[],"sources":["../../../src/domain/segmentCollection/startSegmentTelemetry.ts"],"sourcesContent":["import type {\n BandwidthStats,\n Context,\n HttpRequestEvent,\n Observable,\n Telemetry,\n} from '@kubesense/kubesense-browser-core'\nimport { TelemetryMetrics, addTelemetryMetrics, noop } from '@kubesense/kubesense-browser-core'\nimport type { ReplayPayload } from './buildReplayPayload'\n\ninterface SegmentMetrics extends Context {\n cssText: {\n count: number\n max: number\n sum: number\n }\n encoding: {\n fullSnapshot: 'v1' | 'change'\n incrementalSnapshot: 'v1' | 'change'\n }\n isFullSnapshot: boolean\n ongoingRequests: {\n count: number\n totalSize: number\n }\n recordCount: number\n result: 'failure' | 'queue-full' | 'success'\n serializationDuration: {\n count: number\n max: number\n sum: number\n }\n size: {\n compressed: number\n raw: number\n }\n}\n\nexport function startSegmentTelemetry(\n telemetry: Telemetry,\n requestObservable: Observable<HttpRequestEvent<ReplayPayload>>\n) {\n if (!telemetry.metricsEnabled) {\n return { stop: noop }\n }\n\n const { unsubscribe } = requestObservable.subscribe((requestEvent) => {\n if (\n requestEvent.type === 'failure' ||\n requestEvent.type === 'queue-full' ||\n (requestEvent.type === 'success' && requestEvent.payload.isFullSnapshot)\n ) {\n const metrics = createSegmentMetrics(requestEvent.type, requestEvent.bandwidth, requestEvent.payload)\n // monitor-until: forever\n addTelemetryMetrics(TelemetryMetrics.SEGMENT_METRICS_TELEMETRY_NAME, { metrics })\n }\n })\n\n return {\n stop: unsubscribe,\n }\n}\n\nfunction createSegmentMetrics(\n result: SegmentMetrics['result'],\n bandwidthStats: BandwidthStats,\n payload: ReplayPayload\n): SegmentMetrics {\n return {\n cssText: {\n count: payload.cssText.count,\n max: payload.cssText.max,\n sum: payload.cssText.sum,\n },\n encoding: {\n fullSnapshot: 'change',\n incrementalSnapshot: 'change',\n },\n isFullSnapshot: payload.isFullSnapshot,\n ongoingRequests: {\n count: bandwidthStats.ongoingRequestCount,\n totalSize: bandwidthStats.ongoingByteCount,\n },\n recordCount: payload.recordCount,\n result,\n serializationDuration: {\n count: payload.serializationDuration.count,\n max: payload.serializationDuration.max,\n sum: payload.serializationDuration.sum,\n },\n size: {\n compressed: payload.bytesCount,\n raw: payload.rawSize,\n },\n }\n}\n"],"mappings":";;AAsCA,SAAgB,sBACd,WACA,mBACA;CACA,IAAI,CAAC,UAAU,gBACb,OAAO,EAAE,MAAM,KAAK;CAGtB,MAAM,EAAE,gBAAgB,kBAAkB,WAAW,iBAAiB;EACpE,IACE,aAAa,SAAS,aACtB,aAAa,SAAS,gBACrB,aAAa,SAAS,aAAa,aAAa,QAAQ,gBACzD;GACA,MAAM,UAAU,qBAAqB,aAAa,MAAM,aAAa,WAAW,aAAa,OAAO;GAEpG,oBAAoB,iBAAiB,gCAAgC,EAAE,QAAQ,CAAC;EAClF;CACF,CAAC;CAED,OAAO,EACL,MAAM,YACR;AACF;AAEA,SAAS,qBACP,QACA,gBACA,SACgB;CAChB,OAAO;EACL,SAAS;GACP,OAAO,QAAQ,QAAQ;GACvB,KAAK,QAAQ,QAAQ;GACrB,KAAK,QAAQ,QAAQ;EACvB;EACA,UAAU;GACR,cAAc;GACd,qBAAqB;EACvB;EACA,gBAAgB,QAAQ;EACxB,iBAAiB;GACf,OAAO,eAAe;GACtB,WAAW,eAAe;EAC5B;EACA,aAAa,QAAQ;EACrB;EACA,uBAAuB;GACrB,OAAO,QAAQ,sBAAsB;GACrC,KAAK,QAAQ,sBAAsB;GACnC,KAAK,QAAQ,sBAAsB;EACrC;EACA,MAAM;GACJ,YAAY,QAAQ;GACpB,KAAK,QAAQ;EACf;CACF;AACF"}
@@ -0,0 +1,13 @@
1
+ import { getEventBridge } from "@kubesense/kubesense-browser-core";
2
+ //#region src/domain/startRecordBridge.ts
3
+ function startRecordBridge(viewHistory) {
4
+ const bridge = getEventBridge();
5
+ return { addRecord: (record) => {
6
+ const view = viewHistory.findView();
7
+ bridge.send("record", record, view.id);
8
+ } };
9
+ }
10
+ //#endregion
11
+ export { startRecordBridge };
12
+
13
+ //# sourceMappingURL=startRecordBridge.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startRecordBridge.mjs","names":[],"sources":["../../src/domain/startRecordBridge.ts"],"sourcesContent":["import { getEventBridge } from '@kubesense/kubesense-browser-core'\nimport type { ViewHistory } from '@kubesense/kubesense-browser-rum-core'\nimport type { BrowserRecord } from '../types'\n\nexport function startRecordBridge(viewHistory: ViewHistory) {\n const bridge = getEventBridge<'record', BrowserRecord>()!\n\n return {\n addRecord: (record: BrowserRecord) => {\n // Get the current active view, not at the time of the record, aligning with the segment logic.\n // This approach could potentially associate the record to an incorrect view, in case the record date is in the past (e.g. frustration records).\n // However the risk is minimal. We could address the issue when potential negative impact are identified.\n const view = viewHistory.findView()!\n bridge.send('record', record, view.id)\n },\n }\n}\n"],"mappings":";;AAIA,SAAgB,kBAAkB,aAA0B;CAC1D,MAAM,SAAS,eAAwC;CAEvD,OAAO,EACL,YAAY,WAA0B;EAIpC,MAAM,OAAO,YAAY,SAAS;EAClC,OAAO,KAAK,UAAU,QAAQ,KAAK,EAAE;CACvC,EACF;AACF"}
@@ -0,0 +1,47 @@
1
+ import { TelemetryMetrics, addTelemetryMetrics, noop } from "@kubesense/kubesense-browser-core";
2
+ import { elapsed, timeStampNow } from "@kubesense/kubesense-js-core/time";
3
+ //#region src/domain/startRecorderInitTelemetry.ts
4
+ function startRecorderInitTelemetry(telemetry, observable) {
5
+ if (!telemetry.metricsEnabled) return { stop: noop };
6
+ let startContext;
7
+ let documentReadyDuration;
8
+ let recorderSettledDuration;
9
+ const { unsubscribe } = observable.subscribe((event) => {
10
+ switch (event.type) {
11
+ case "start":
12
+ startContext = {
13
+ forced: event.forced,
14
+ timestamp: timeStampNow()
15
+ };
16
+ documentReadyDuration = void 0;
17
+ recorderSettledDuration = void 0;
18
+ break;
19
+ case "document-ready":
20
+ if (startContext) documentReadyDuration = elapsed(startContext.timestamp, timeStampNow());
21
+ break;
22
+ case "recorder-settled":
23
+ if (startContext) recorderSettledDuration = elapsed(startContext.timestamp, timeStampNow());
24
+ break;
25
+ case "aborted":
26
+ case "deflate-encoder-load-failed":
27
+ case "recorder-load-failed":
28
+ case "succeeded":
29
+ unsubscribe();
30
+ if (startContext) addTelemetryMetrics(TelemetryMetrics.RECORDER_INIT_METRICS_TELEMETRY_NAME, { metrics: createRecorderInitMetrics(startContext.forced, recorderSettledDuration, elapsed(startContext.timestamp, timeStampNow()), event.type, documentReadyDuration) });
31
+ }
32
+ });
33
+ return { stop: unsubscribe };
34
+ }
35
+ function createRecorderInitMetrics(forced, loadRecorderModuleDuration, recorderInitDuration, result, waitForDocReadyDuration) {
36
+ return {
37
+ forced,
38
+ loadRecorderModuleDuration,
39
+ recorderInitDuration,
40
+ result,
41
+ waitForDocReadyDuration
42
+ };
43
+ }
44
+ //#endregion
45
+ export { startRecorderInitTelemetry };
46
+
47
+ //# sourceMappingURL=startRecorderInitTelemetry.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startRecorderInitTelemetry.mjs","names":[],"sources":["../../src/domain/startRecorderInitTelemetry.ts"],"sourcesContent":["import type { Context, Telemetry, Observable } from '@kubesense/kubesense-browser-core'\nimport { elapsed, timeStampNow } from '@kubesense/kubesense-js-core/time'\nimport type { Duration, TimeStamp } from '@kubesense/kubesense-js-core/time'\nimport { TelemetryMetrics, addTelemetryMetrics, noop } from '@kubesense/kubesense-browser-core'\nimport type { RecorderInitEvent } from '../boot/postStartStrategy'\n\ntype RecorderInitResult = 'aborted' | 'deflate-encoder-load-failed' | 'recorder-load-failed' | 'succeeded'\n\nexport interface RecorderInitMetrics extends Context {\n forced: boolean\n loadRecorderModuleDuration: number | undefined\n recorderInitDuration: number\n result: RecorderInitResult\n waitForDocReadyDuration: number | undefined\n}\n\nexport function startRecorderInitTelemetry(telemetry: Telemetry, observable: Observable<RecorderInitEvent>) {\n if (!telemetry.metricsEnabled) {\n return { stop: noop }\n }\n\n let startContext:\n | {\n forced: boolean\n timestamp: TimeStamp\n }\n | undefined\n\n let documentReadyDuration: Duration | undefined\n let recorderSettledDuration: Duration | undefined\n\n const { unsubscribe } = observable.subscribe((event) => {\n switch (event.type) {\n case 'start':\n startContext = { forced: event.forced, timestamp: timeStampNow() }\n documentReadyDuration = undefined\n recorderSettledDuration = undefined\n break\n\n case 'document-ready':\n if (startContext) {\n documentReadyDuration = elapsed(startContext.timestamp, timeStampNow())\n }\n break\n\n case 'recorder-settled':\n if (startContext) {\n recorderSettledDuration = elapsed(startContext.timestamp, timeStampNow())\n }\n break\n\n case 'aborted':\n case 'deflate-encoder-load-failed':\n case 'recorder-load-failed':\n case 'succeeded':\n // Only send metrics for the first attempt at starting the recorder.\n unsubscribe()\n\n if (startContext) {\n // monitor-until: forever\n addTelemetryMetrics(TelemetryMetrics.RECORDER_INIT_METRICS_TELEMETRY_NAME, {\n metrics: createRecorderInitMetrics(\n startContext.forced,\n recorderSettledDuration,\n elapsed(startContext.timestamp, timeStampNow()),\n event.type,\n documentReadyDuration\n ),\n })\n }\n break\n }\n })\n\n return { stop: unsubscribe }\n}\n\nfunction createRecorderInitMetrics(\n forced: boolean,\n loadRecorderModuleDuration: Duration | undefined,\n recorderInitDuration: Duration,\n result: RecorderInitResult,\n waitForDocReadyDuration: Duration | undefined\n): RecorderInitMetrics {\n return {\n forced,\n loadRecorderModuleDuration,\n recorderInitDuration,\n result,\n waitForDocReadyDuration,\n }\n}\n"],"mappings":";;;AAgBA,SAAgB,2BAA2B,WAAsB,YAA2C;CAC1G,IAAI,CAAC,UAAU,gBACb,OAAO,EAAE,MAAM,KAAK;CAGtB,IAAI;CAOJ,IAAI;CACJ,IAAI;CAEJ,MAAM,EAAE,gBAAgB,WAAW,WAAW,UAAU;EACtD,QAAQ,MAAM,MAAd;GACE,KAAK;IACH,eAAe;KAAE,QAAQ,MAAM;KAAQ,WAAW,aAAa;IAAE;IACjE,wBAAwB,KAAA;IACxB,0BAA0B,KAAA;IAC1B;GAEF,KAAK;IACH,IAAI,cACF,wBAAwB,QAAQ,aAAa,WAAW,aAAa,CAAC;IAExE;GAEF,KAAK;IACH,IAAI,cACF,0BAA0B,QAAQ,aAAa,WAAW,aAAa,CAAC;IAE1E;GAEF,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;IAEH,YAAY;IAEZ,IAAI,cAEF,oBAAoB,iBAAiB,sCAAsC,EACzE,SAAS,0BACP,aAAa,QACb,yBACA,QAAQ,aAAa,WAAW,aAAa,CAAC,GAC9C,MAAM,MACN,qBACF,EACF,CAAC;EAGP;CACF,CAAC;CAED,OAAO,EAAE,MAAM,YAAY;AAC7B;AAEA,SAAS,0BACP,QACA,4BACA,sBACA,QACA,yBACqB;CACrB,OAAO;EACL;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -0,0 +1,8 @@
1
+ import { ChangeType, IncrementalSource, InputSelectionState, MediaInteractionType, MouseInteractionType, NodeType, PlaybackState, RecordType, SnapshotFormat, StringRole } from "../types/sessionReplayConstants.mjs";
2
+ import { createChangeDecoder } from "../domain/record/encoding/changeDecoder.mjs";
3
+ import { takeFullSnapshot, takeNodeSnapshot } from "../domain/record/internalApi.mjs";
4
+ import "../domain/record/index.mjs";
5
+ import { makeRecorderApi } from "../boot/recorderApi.mjs";
6
+ import { makeProfilerApi } from "../boot/profilerApi.mjs";
7
+ import { NodePrivacyLevel, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_HIDDEN, PRIVACY_CLASS_PREFIX } from "@kubesense/kubesense-browser-rum-core";
8
+ export { ChangeType, IncrementalSource, InputSelectionState, MediaInteractionType, MouseInteractionType, NodePrivacyLevel, NodeType, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_HIDDEN, PRIVACY_CLASS_PREFIX, PlaybackState, RecordType, SnapshotFormat, StringRole, createChangeDecoder, makeProfilerApi, makeRecorderApi, takeFullSnapshot, takeNodeSnapshot };
@@ -0,0 +1,22 @@
1
+ import { makeRecorderApi } from "../boot/recorderApi.mjs";
2
+ import { makeProfilerApi } from "../boot/profilerApi.mjs";
3
+ import { makeRumPublicApi } from "@kubesense/kubesense-browser-rum-core";
4
+ import { DefaultPrivacyLevel } from "@kubesense/kubesense-browser-core";
5
+ //#region src/entries/internalSynthetics.ts
6
+ /**
7
+ * Entry point consumed by the KubeSense Synthetics worker to automatically inject a RUM SDK instance
8
+ * in test runs.
9
+ *
10
+ * WARNING: this module is not intended for public usages, and won't follow semver for breaking
11
+ * changes.
12
+ */
13
+ const recorderApi = makeRecorderApi();
14
+ const profilerApi = makeProfilerApi();
15
+ const kubesenseSdk = makeRumPublicApi(recorderApi, profilerApi, {
16
+ ignoreInitIfSyntheticsWillInjectRum: false,
17
+ sdkName: "rum-synthetics"
18
+ });
19
+ //#endregion
20
+ export { DefaultPrivacyLevel, kubesenseSdk };
21
+
22
+ //# sourceMappingURL=internalSynthetics.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internalSynthetics.mjs","names":[],"sources":["../../src/entries/internalSynthetics.ts"],"sourcesContent":["/**\n * Entry point consumed by the KubeSense Synthetics worker to automatically inject a RUM SDK instance\n * in test runs.\n *\n * WARNING: this module is not intended for public usages, and won't follow semver for breaking\n * changes.\n */\nimport { makeRumPublicApi } from '@kubesense/kubesense-browser-rum-core'\nimport { makeRecorderApi } from '../boot/recorderApi'\nimport { makeProfilerApi } from '../boot/profilerApi'\n\nexport { DefaultPrivacyLevel } from '@kubesense/kubesense-browser-core'\n\n// Disable the rule that forbids potential side effects, because we know that those functions don't\n// have side effects.\n/* eslint-disable local-rules/disallow-side-effects */\nconst recorderApi = makeRecorderApi()\nconst profilerApi = makeProfilerApi()\nexport const kubesenseSdk = makeRumPublicApi(recorderApi, profilerApi, {\n ignoreInitIfSyntheticsWillInjectRum: false,\n sdkName: 'rum-synthetics',\n})\n/* eslint-enable local-rules/disallow-side-effects */\n"],"mappings":";;;;;;;;;;;;AAgBA,MAAM,cAAc,gBAAgB;AACpC,MAAM,cAAc,gBAAgB;AACpC,MAAa,eAAe,iBAAiB,aAAa,aAAa;CACrE,qCAAqC;CACrC,SAAS;AACX,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { createDeflateEncoder } from "../domain/deflate/deflateEncoder.mjs";
2
+ import { startDeflateWorker } from "../domain/deflate/deflateWorker.mjs";
3
+ import "../domain/deflate/index.mjs";
4
+ import { makeRecorderApi } from "../boot/recorderApi.mjs";
5
+ import { makeProfilerApi } from "../boot/profilerApi.mjs";
6
+ import { CanvasRecordingQuality, DEFAULT_TRACKED_RESOURCE_HEADERS, makeRumPublicApi } from "@kubesense/kubesense-browser-rum-core";
7
+ import { DefaultPrivacyLevel, defineGlobal } from "@kubesense/kubesense-browser-core";
8
+ import { globalObject } from "@kubesense/kubesense-js-core/util";
9
+ //#region src/entries/main.ts
10
+ /**
11
+ * KubeSense Browser RUM SDK - Full version with Session Replay and Real User Profiling capabilities.
12
+ * Use this package to monitor your web application's performance and user experience.
13
+ *
14
+ * @packageDocumentation
15
+ * @see [RUM Browser Monitoring Setup](https://docs.kubesense.ai/real_user_monitoring/browser/)
16
+ */
17
+ const recorderApi = makeRecorderApi();
18
+ const profilerApi = makeProfilerApi();
19
+ /**
20
+ * The global RUM instance. Use this to call RUM methods.
21
+ *
22
+ * @category Main
23
+ * @see {@link KubesenseSdk}
24
+ * @see [RUM Browser Monitoring Setup](https://docs.kubesense.ai/real_user_monitoring/browser/)
25
+ */
26
+ const kubesenseSdk = makeRumPublicApi(recorderApi, profilerApi, {
27
+ startDeflateWorker,
28
+ createDeflateEncoder,
29
+ sdkName: "rum"
30
+ });
31
+ defineGlobal(globalObject, "KUBESENSE_SDK", kubesenseSdk);
32
+ //#endregion
33
+ export { CanvasRecordingQuality, DEFAULT_TRACKED_RESOURCE_HEADERS, DefaultPrivacyLevel, kubesenseSdk };
34
+
35
+ //# sourceMappingURL=main.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.mjs","names":[],"sources":["../../src/entries/main.ts"],"sourcesContent":["/**\n * KubeSense Browser RUM SDK - Full version with Session Replay and Real User Profiling capabilities.\n * Use this package to monitor your web application's performance and user experience.\n *\n * @packageDocumentation\n * @see [RUM Browser Monitoring Setup](https://docs.kubesense.ai/real_user_monitoring/browser/)\n */\n\nimport { globalObject } from '@kubesense/kubesense-js-core/util'\n// Keep the following in sync with packages/rum-slim/src/entries/main.ts\nimport { defineGlobal } from '@kubesense/kubesense-browser-core'\nimport type { RumPublicApi } from '@kubesense/kubesense-browser-rum-core'\nimport { makeRumPublicApi } from '@kubesense/kubesense-browser-rum-core'\nimport { makeRecorderApi } from '../boot/recorderApi'\nimport { createDeflateEncoder, startDeflateWorker } from '../domain/deflate'\nimport { makeProfilerApi } from '../boot/profilerApi'\n\nexport type {\n User,\n Account,\n TraceContextInjection,\n SessionPersistence,\n TrackingConsent,\n MatchOption,\n Context,\n ContextValue,\n ContextArray,\n RumInternalContext,\n} from '@kubesense/kubesense-browser-core'\nexport { DefaultPrivacyLevel } from '@kubesense/kubesense-browser-core'\nexport type { ProxyFn, Site } from '@kubesense/kubesense-js-core/transport'\n\n/**\n * @deprecated Use {@link KubesenseSdk} instead\n */\nexport type RumGlobal = RumPublicApi\n\nexport type {\n RumPublicApi as KubesenseSdk,\n RumInitConfiguration,\n RumBeforeSend,\n ViewOptions,\n StartRecordingOptions,\n AddDurationVitalOptions,\n DurationVitalOptions,\n OperationOptions,\n FeatureOperationOptions,\n FailureReason,\n ActionOptions,\n ResourceOptions,\n ResourceStopOptions,\n TracingOption,\n RumPlugin,\n OnRumStartOptions,\n RumPluginOnInitOptions,\n PropagatorType,\n FeatureFlagsForEvents,\n MatchHeader,\n\n // Events\n CommonProperties,\n RumEvent,\n RumActionEvent,\n RumErrorEvent,\n RumLongTaskEvent,\n RumResourceEvent,\n RumViewEvent,\n RumViewUpdateEvent,\n RumVitalEvent,\n\n // Events context\n RumEventDomainContext,\n RumViewEventDomainContext,\n RumErrorEventDomainContext,\n RumActionEventDomainContext,\n RumVitalEventDomainContext,\n RumResourceEventDomainContext,\n RumWebSocketResourceEventDomainContext,\n RumLongTaskEventDomainContext,\n} from '@kubesense/kubesense-browser-rum-core'\n\nexport { DEFAULT_TRACKED_RESOURCE_HEADERS, CanvasRecordingQuality } from '@kubesense/kubesense-browser-rum-core'\n\nconst recorderApi = makeRecorderApi()\n\nconst profilerApi = makeProfilerApi()\n\n/**\n * The global RUM instance. Use this to call RUM methods.\n *\n * @category Main\n * @see {@link KubesenseSdk}\n * @see [RUM Browser Monitoring Setup](https://docs.kubesense.ai/real_user_monitoring/browser/)\n */\nexport const kubesenseSdk = makeRumPublicApi(recorderApi, profilerApi, {\n startDeflateWorker,\n createDeflateEncoder,\n sdkName: 'rum',\n})\n\ninterface BrowserWindow {\n KUBESENSE_SDK?: RumPublicApi\n}\ndefineGlobal(globalObject as BrowserWindow, 'KUBESENSE_SDK', kubesenseSdk)\n"],"mappings":";;;;;;;;;;;;;;;;AAmFA,MAAM,cAAc,gBAAgB;AAEpC,MAAM,cAAc,gBAAgB;;;;;;;;AASpC,MAAa,eAAe,iBAAiB,aAAa,aAAa;CACrE;CACA;CACA,SAAS;AACX,CAAC;AAKD,aAAa,cAA+B,iBAAiB,YAAY"}
@@ -0,0 +1,97 @@
1
+ //#region src/types/sessionReplayConstants.ts
2
+ const RecordType = {
3
+ FullSnapshot: 2,
4
+ IncrementalSnapshot: 3,
5
+ Meta: 4,
6
+ Focus: 6,
7
+ ViewEnd: 7,
8
+ VisualViewport: 8,
9
+ FrustrationRecord: 9,
10
+ Change: 12
11
+ };
12
+ const NodeType = {
13
+ Document: 0,
14
+ DocumentType: 1,
15
+ Element: 2,
16
+ Text: 3,
17
+ CDATA: 4,
18
+ DocumentFragment: 11
19
+ };
20
+ const ChangeType = {
21
+ AddString: 0,
22
+ AddNode: 1,
23
+ RemoveNode: 2,
24
+ Attribute: 3,
25
+ Text: 4,
26
+ Size: 5,
27
+ ScrollPosition: 6,
28
+ AddStyleSheet: 7,
29
+ AttachedStyleSheets: 8,
30
+ MediaPlaybackState: 9,
31
+ VisualViewport: 10,
32
+ AddRoleAnnotatedStrings: 11,
33
+ InputValue: 12,
34
+ InputSelection: 13,
35
+ ClearStrings: 14,
36
+ ImageContent: 15
37
+ };
38
+ /**
39
+ * The role that a string in the string table plays on the page. A role says what kind of data the
40
+ * string holds, which lets the intake store strings with similar content together, and lets it
41
+ * redact them according to their kind.
42
+ */
43
+ const StringRole = {
44
+ Default: 0,
45
+ NodeName: 1,
46
+ AttributeName: 2,
47
+ AttributeValue: 3,
48
+ TextContent: 4,
49
+ FormInput: 5,
50
+ Css: 6,
51
+ Url: 7,
52
+ ResourceId: 8
53
+ };
54
+ /** The selection state of a checkbox, radio button, or `<option>`. */
55
+ const InputSelectionState = {
56
+ Selected: 0,
57
+ Deselected: 1,
58
+ Indeterminate: 2
59
+ };
60
+ const PlaybackState = {
61
+ Playing: 0,
62
+ Paused: 1
63
+ };
64
+ const IncrementalSource = {
65
+ Mutation: 0,
66
+ MouseMove: 1,
67
+ MouseInteraction: 2,
68
+ Scroll: 3,
69
+ ViewportResize: 4,
70
+ Input: 5,
71
+ TouchMove: 6,
72
+ MediaInteraction: 7,
73
+ StyleSheetRule: 8
74
+ };
75
+ const MouseInteractionType = {
76
+ MouseUp: 0,
77
+ MouseDown: 1,
78
+ Click: 2,
79
+ ContextMenu: 3,
80
+ DblClick: 4,
81
+ Focus: 5,
82
+ Blur: 6,
83
+ TouchStart: 7,
84
+ TouchEnd: 9
85
+ };
86
+ const MediaInteractionType = {
87
+ Play: 0,
88
+ Pause: 1
89
+ };
90
+ const SnapshotFormat = {
91
+ V1: 0,
92
+ Change: 1
93
+ };
94
+ //#endregion
95
+ export { ChangeType, IncrementalSource, InputSelectionState, MediaInteractionType, MouseInteractionType, NodeType, PlaybackState, RecordType, SnapshotFormat, StringRole };
96
+
97
+ //# sourceMappingURL=sessionReplayConstants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionReplayConstants.mjs","names":[],"sources":["../../src/types/sessionReplayConstants.ts"],"sourcesContent":["import type * as SessionReplay from './sessionReplay'\n\nexport const RecordType: {\n FullSnapshot: SessionReplay.BrowserFullSnapshotRecord['type']\n IncrementalSnapshot: SessionReplay.BrowserIncrementalSnapshotRecord['type']\n Meta: SessionReplay.MetaRecord['type']\n Focus: SessionReplay.FocusRecord['type']\n ViewEnd: SessionReplay.ViewEndRecord['type']\n VisualViewport: SessionReplay.VisualViewportRecord['type']\n FrustrationRecord: SessionReplay.FrustrationRecord['type']\n Change: SessionReplay.BrowserChangeRecord['type']\n} = {\n FullSnapshot: 2,\n IncrementalSnapshot: 3,\n Meta: 4,\n Focus: 6,\n ViewEnd: 7,\n VisualViewport: 8,\n FrustrationRecord: 9,\n Change: 12,\n} as const\n\nexport type RecordType = (typeof RecordType)[keyof typeof RecordType]\n\nexport const NodeType: {\n Document: SessionReplay.DocumentNode['type']\n DocumentType: SessionReplay.DocumentTypeNode['type']\n Element: SessionReplay.ElementNode['type']\n Text: SessionReplay.TextNode['type']\n CDATA: SessionReplay.CDataNode['type']\n DocumentFragment: SessionReplay.DocumentFragmentNode['type']\n} = {\n Document: 0,\n DocumentType: 1,\n Element: 2,\n Text: 3,\n CDATA: 4,\n DocumentFragment: 11,\n} as const\n\nexport type NodeType = (typeof NodeType)[keyof typeof NodeType]\n\n// ChangeTypeId evaluates to Id if [Id, ...Data[]] is a valid variant of Change;\n// otherwise, it triggers a compile-time error.\ntype ChangeTypeId<Id, Data> = [Id, ...Data[]] extends SessionReplay.Change ? Id : never\n\n// DatalessChangeTypeId is ChangeTypeId for changes which carry no data.\ntype DatalessChangeTypeId<Id> = [Id] extends SessionReplay.Change ? Id : never\n\nexport const ChangeType: {\n AddString: ChangeTypeId<0, SessionReplay.AddStringChange>\n AddNode: ChangeTypeId<1, SessionReplay.AddNodeChange>\n RemoveNode: ChangeTypeId<2, SessionReplay.RemoveNodeChange>\n Attribute: ChangeTypeId<3, SessionReplay.AttributeChange>\n Text: ChangeTypeId<4, SessionReplay.TextChange>\n Size: ChangeTypeId<5, SessionReplay.SizeChange>\n ScrollPosition: ChangeTypeId<6, SessionReplay.ScrollPositionChange>\n AddStyleSheet: ChangeTypeId<7, SessionReplay.AddStyleSheetChange>\n AttachedStyleSheets: ChangeTypeId<8, SessionReplay.AttachedStyleSheetsChange>\n MediaPlaybackState: ChangeTypeId<9, SessionReplay.MediaPlaybackStateChange>\n VisualViewport: ChangeTypeId<10, SessionReplay.VisualViewportChange>\n AddRoleAnnotatedStrings: ChangeTypeId<11, SessionReplay.AddRoleAnnotatedStringsChange>\n InputValue: ChangeTypeId<12, SessionReplay.InputValueChange>\n InputSelection: ChangeTypeId<13, SessionReplay.InputSelectionChange>\n ClearStrings: DatalessChangeTypeId<14>\n ImageContent: ChangeTypeId<15, SessionReplay.ImageContentChange>\n} = {\n AddString: 0,\n AddNode: 1,\n RemoveNode: 2,\n Attribute: 3,\n Text: 4,\n Size: 5,\n ScrollPosition: 6,\n AddStyleSheet: 7,\n AttachedStyleSheets: 8,\n MediaPlaybackState: 9,\n VisualViewport: 10,\n AddRoleAnnotatedStrings: 11,\n InputValue: 12,\n InputSelection: 13,\n ClearStrings: 14,\n ImageContent: 15,\n} as const\n\nexport type ChangeType = (typeof ChangeType)[keyof typeof ChangeType]\n\n/**\n * The role that a string in the string table plays on the page. A role says what kind of data the\n * string holds, which lets the intake store strings with similar content together, and lets it\n * redact them according to their kind.\n */\nexport const StringRole: {\n Default: SessionReplay.StringRoleDefault\n NodeName: SessionReplay.StringRoleNodeName\n AttributeName: SessionReplay.StringRoleAttributeName\n AttributeValue: SessionReplay.StringRoleAttributeValue\n TextContent: SessionReplay.StringRoleTextContent\n FormInput: SessionReplay.StringRoleFormInput\n Css: SessionReplay.StringRoleCSS\n Url: SessionReplay.StringRoleURL\n ResourceId: SessionReplay.StringRoleResourceId\n} = {\n Default: 0,\n NodeName: 1,\n AttributeName: 2,\n AttributeValue: 3,\n TextContent: 4,\n FormInput: 5,\n Css: 6,\n Url: 7,\n ResourceId: 8,\n} as const\n\nexport type StringRole = (typeof StringRole)[keyof typeof StringRole]\n\n/** The selection state of a checkbox, radio button, or `<option>`. */\nexport const InputSelectionState: {\n Selected: SessionReplay.InputSelectionStateSelected\n Deselected: SessionReplay.InputSelectionStateDeselected\n Indeterminate: SessionReplay.InputSelectionStateIndeterminate\n} = {\n Selected: 0,\n Deselected: 1,\n Indeterminate: 2,\n} as const\n\nexport type InputSelectionState = (typeof InputSelectionState)[keyof typeof InputSelectionState]\n\nexport const PlaybackState: {\n Playing: SessionReplay.PlaybackStatePlaying\n Paused: SessionReplay.PlaybackStatePaused\n} = {\n Playing: 0,\n Paused: 1,\n} as const\n\nexport type PlaybackState = (typeof PlaybackState)[keyof typeof PlaybackState]\n\nexport const IncrementalSource: {\n Mutation: SessionReplay.BrowserMutationData['source']\n MouseMove: Exclude<SessionReplay.MousemoveData['source'], 6>\n MouseInteraction: SessionReplay.MouseInteractionData['source']\n Scroll: SessionReplay.ScrollData['source']\n ViewportResize: SessionReplay.ViewportResizeData['source']\n Input: SessionReplay.InputData['source']\n TouchMove: Exclude<SessionReplay.MousemoveData['source'], 1>\n MediaInteraction: SessionReplay.MediaInteractionData['source']\n StyleSheetRule: SessionReplay.StyleSheetRuleData['source']\n} = {\n Mutation: 0,\n MouseMove: 1,\n MouseInteraction: 2,\n Scroll: 3,\n ViewportResize: 4,\n Input: 5,\n TouchMove: 6,\n MediaInteraction: 7,\n StyleSheetRule: 8,\n // CanvasMutation : 9,\n // Font : 10,\n} as const\n\nexport type IncrementalSource = (typeof IncrementalSource)[keyof typeof IncrementalSource]\n\nexport const MouseInteractionType = {\n MouseUp: 0,\n MouseDown: 1,\n Click: 2,\n ContextMenu: 3,\n DblClick: 4,\n Focus: 5,\n Blur: 6,\n TouchStart: 7,\n TouchEnd: 9,\n} as const\n\nexport type MouseInteractionType = (typeof MouseInteractionType)[keyof typeof MouseInteractionType]\n\nexport const MediaInteractionType = {\n Play: 0,\n Pause: 1,\n} as const\n\nexport type MediaInteractionType = (typeof MediaInteractionType)[keyof typeof MediaInteractionType]\n\nexport const SnapshotFormat: {\n V1: SessionReplay.SnapshotFormatV1\n Change: SessionReplay.SnapshotFormatChange\n} = {\n V1: 0,\n Change: 1,\n} as const\n\nexport type SnapshotFormat = (typeof SnapshotFormat)[keyof typeof SnapshotFormat]\n"],"mappings":";AAEA,MAAa,aAST;CACF,cAAc;CACd,qBAAqB;CACrB,MAAM;CACN,OAAO;CACP,SAAS;CACT,gBAAgB;CAChB,mBAAmB;CACnB,QAAQ;AACV;AAIA,MAAa,WAOT;CACF,UAAU;CACV,cAAc;CACd,SAAS;CACT,MAAM;CACN,OAAO;CACP,kBAAkB;AACpB;AAWA,MAAa,aAiBT;CACF,WAAW;CACX,SAAS;CACT,YAAY;CACZ,WAAW;CACX,MAAM;CACN,MAAM;CACN,gBAAgB;CAChB,eAAe;CACf,qBAAqB;CACrB,oBAAoB;CACpB,gBAAgB;CAChB,yBAAyB;CACzB,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,cAAc;AAChB;;;;;;AASA,MAAa,aAUT;CACF,SAAS;CACT,UAAU;CACV,eAAe;CACf,gBAAgB;CAChB,aAAa;CACb,WAAW;CACX,KAAK;CACL,KAAK;CACL,YAAY;AACd;;AAKA,MAAa,sBAIT;CACF,UAAU;CACV,YAAY;CACZ,eAAe;AACjB;AAIA,MAAa,gBAGT;CACF,SAAS;CACT,QAAQ;AACV;AAIA,MAAa,oBAUT;CACF,UAAU;CACV,WAAW;CACX,kBAAkB;CAClB,QAAQ;CACR,gBAAgB;CAChB,OAAO;CACP,WAAW;CACX,kBAAkB;CAClB,gBAAgB;AAGlB;AAIA,MAAa,uBAAuB;CAClC,SAAS;CACT,WAAW;CACX,OAAO;CACP,aAAa;CACb,UAAU;CACV,OAAO;CACP,MAAM;CACN,YAAY;CACZ,UAAU;AACZ;AAIA,MAAa,uBAAuB;CAClC,MAAM;CACN,OAAO;AACT;AAIA,MAAa,iBAGT;CACF,IAAI;CACJ,QAAQ;AACV"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "private": true,
3
3
  "main": "../cjs/entries/internal.js",
4
- "module": "../esm/entries/internal.js",
4
+ "module": "../esm/entries/internal.mjs",
5
5
  "types": "../cjs/entries/internal.d.ts"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "private": true,
3
3
  "main": "../cjs/entries/internalSynthetics.js",
4
- "module": "../esm/entries/internalSynthetics.js",
4
+ "module": "../esm/entries/internalSynthetics.mjs",
5
5
  "types": "../cjs/entries/internalSynthetics.d.ts"
6
6
  }
package/package.json CHANGED
@@ -1,8 +1,6 @@
1
1
  {
2
2
  "name": "@kubesense/kubesense-browser-rum",
3
- "version": "1.8.0",
4
- "description": "Kubesense Real User Monitoring (RUM) SDK for the browser — tracks views, actions, resources, errors, Core Web Vitals, plus Session Replay and Profiling.",
5
- "license": "Apache-2.0",
3
+ "version": "2.0.0-beta.1",
6
4
  "keywords": [
7
5
  "kubesense",
8
6
  "browser",
@@ -17,19 +15,33 @@
17
15
  "user-monitoring",
18
16
  "telemetry"
19
17
  ],
18
+ "description": "Kubesense Real User Monitoring (RUM) SDK for the browser — tracks views, actions, resources, errors, Core Web Vitals, plus Session Replay and Profiling.",
19
+ "license": "Apache-2.0",
20
20
  "main": "cjs/entries/main.js",
21
- "module": "esm/entries/main.js",
21
+ "module": "esm/entries/main.mjs",
22
22
  "types": "cjs/entries/main.d.ts",
23
+ "files": [
24
+ "bundle/**/*.js",
25
+ "cjs",
26
+ "esm",
27
+ "src",
28
+ "internal",
29
+ "internal-synthetics",
30
+ "!src/**/*.spec.ts",
31
+ "!src/**/*.specHelper.ts"
32
+ ],
23
33
  "scripts": {
24
- "build": "node ../../scripts/build/build-package.ts --modules --bundle kubesense-rum.js",
25
- "build:bundle": "node ../../scripts/build/build-package.ts --bundle kubesense-rum.js"
34
+ "build": "node ../../scripts/build/build-package.ts --modules --worker-string --bundle kubesense-rum.js",
35
+ "build:bundle": "node ../../scripts/build/build-package.ts --worker-string --bundle kubesense-rum.js",
36
+ "prepack": "yarn build"
26
37
  },
27
38
  "dependencies": {
28
- "@kubesense/kubesense-browser-core": "1.8.0",
29
- "@kubesense/kubesense-browser-rum-core": "1.8.0"
39
+ "@kubesense/kubesense-browser-core": "2.0.0-beta.1",
40
+ "@kubesense/kubesense-browser-rum-core": "2.0.0-beta.1",
41
+ "@kubesense/kubesense-js-core": "2.0.0-beta.1"
30
42
  },
31
43
  "peerDependencies": {
32
- "@kubesense/kubesense-browser-logs": "1.8.0"
44
+ "@kubesense/kubesense-browser-logs": "2.0.0-beta.1"
33
45
  },
34
46
  "peerDependenciesMeta": {
35
47
  "@kubesense/kubesense-browser-logs": {
@@ -38,18 +50,17 @@
38
50
  },
39
51
  "repository": {
40
52
  "type": "git",
41
- "url": "https://github.com/kubesense-ai/kubesense-browser-sdk.git",
53
+ "url": "git+https://github.com/kubesense-ai/kubesense-browser-sdk.git",
42
54
  "directory": "packages/rum"
43
55
  },
44
56
  "devDependencies": {
45
- "@types/pako": "2.0.4",
46
- "pako": "2.1.0"
57
+ "@kubesense/kubesense-browser-worker": "2.0.0-beta.1",
58
+ "pako": "3.0.1"
47
59
  },
48
60
  "volta": {
49
61
  "extends": "../../package.json"
50
62
  },
51
63
  "publishConfig": {
52
64
  "access": "public"
53
- },
54
- "gitHead": "2f848090fb06a6f220ea3349c2eb8a18e0d8c390"
55
- }
65
+ }
66
+ }
@@ -0,0 +1,134 @@
1
+ import type { HttpRequest, DeflateEncoder, Telemetry, SessionManager } from '@kubesense/kubesense-browser-core'
2
+ import {
3
+ createHttpRequest,
4
+ addTelemetryDebug,
5
+ canUseEventBridge,
6
+ noop,
7
+ ErrorSource,
8
+ DEFAULT_ERROR_TYPE,
9
+ } from '@kubesense/kubesense-browser-core'
10
+ import { clocksNow } from '@kubesense/kubesense-js-core/time'
11
+ import { createEndpointBuilder } from '@kubesense/kubesense-js-core/transport'
12
+ import type { LifeCycle, ViewHistory, RumConfiguration } from '@kubesense/kubesense-browser-rum-core'
13
+ import { LifeCycleEventType } from '@kubesense/kubesense-browser-rum-core'
14
+
15
+ import type { EmitResourceCallback, SerializationStats } from '../domain/record'
16
+ import { record } from '../domain/record'
17
+ import type { ReplayPayload, ResourcePayload } from '../domain/segmentCollection'
18
+ import {
19
+ startDroppedSegmentRecovery,
20
+ startSegmentCollection,
21
+ SEGMENT_BYTES_LIMIT,
22
+ startSegmentTelemetry,
23
+ startReplayResourceCollection,
24
+ } from '../domain/segmentCollection'
25
+ import type { BrowserRecord } from '../types'
26
+ import { startRecordBridge } from '../domain/startRecordBridge'
27
+
28
+ /**
29
+ * Retries for a replay upload — segment or canvas frame — that failed with a network error. Unlike a
30
+ * lost RUM batch, a lost segment breaks the rest of its view's replay, which builds on the DOM it
31
+ * carried, and a lost frame leaves its canvas blank until the next one.
32
+ */
33
+ const REPLAY_NETWORK_ERROR_RETRIES = 3
34
+
35
+ export function startRecording(
36
+ lifeCycle: LifeCycle,
37
+ configuration: RumConfiguration,
38
+ sessionManager: SessionManager,
39
+ viewHistory: ViewHistory,
40
+ encoder: DeflateEncoder,
41
+ telemetry: Telemetry,
42
+ segmentHttpRequest?: HttpRequest<ReplayPayload>,
43
+ resourceHttpRequest?: HttpRequest<ResourcePayload>
44
+ ) {
45
+ const cleanupTasks: Array<() => void> = []
46
+
47
+ const reportError = (message: string) => {
48
+ lifeCycle.notify(LifeCycleEventType.RAW_ERROR_COLLECTED, {
49
+ error: { message, type: DEFAULT_ERROR_TYPE, source: ErrorSource.AGENT, startClocks: clocksNow() },
50
+ })
51
+ // monitor-until: forever, to keep an eye on the errors reported to customers
52
+ addTelemetryDebug('Error reported to customer', { 'error.message': message })
53
+ }
54
+
55
+ const replayRequest =
56
+ segmentHttpRequest ||
57
+ createHttpRequest(
58
+ [createEndpointBuilder(configuration, 'replay')],
59
+ reportError,
60
+ SEGMENT_BYTES_LIMIT,
61
+ REPLAY_NETWORK_ERROR_RETRIES
62
+ )
63
+
64
+ const resourceRequest =
65
+ resourceHttpRequest ||
66
+ createHttpRequest<ResourcePayload>(
67
+ [createEndpointBuilder(configuration, 'replay')],
68
+ reportError,
69
+ 0,
70
+ REPLAY_NETWORK_ERROR_RETRIES
71
+ )
72
+
73
+ let addRecord: (record: BrowserRecord) => void
74
+ let addStats: (stats: SerializationStats) => void
75
+ let emitResource: EmitResourceCallback = noop
76
+ let flushMutations = noop
77
+
78
+ // This must be registered before the segment and resource collectors so an urgent exit includes queued canvas changes.
79
+ const { unsubscribe: unsubscribeMutationFlush } = lifeCycle.subscribe(LifeCycleEventType.PREPARE_URGENT_FLUSH, () =>
80
+ flushMutations()
81
+ )
82
+ cleanupTasks.push(unsubscribeMutationFlush)
83
+
84
+ if (!canUseEventBridge()) {
85
+ const segmentCollection = startSegmentCollection(
86
+ lifeCycle,
87
+ configuration,
88
+ sessionManager,
89
+ viewHistory,
90
+ replayRequest,
91
+ encoder
92
+ )
93
+ addRecord = segmentCollection.addRecord
94
+ addStats = segmentCollection.addStats
95
+ cleanupTasks.push(segmentCollection.stop)
96
+
97
+ const segmentTelemetry = startSegmentTelemetry(telemetry, replayRequest.observable)
98
+ cleanupTasks.push(segmentTelemetry.stop)
99
+
100
+ const replayResourceCollection = startReplayResourceCollection(
101
+ configuration.applicationId,
102
+ lifeCycle,
103
+ resourceRequest
104
+ )
105
+ emitResource = replayResourceCollection.emitResource
106
+ cleanupTasks.push(replayResourceCollection.stop)
107
+ } else {
108
+ ;({ addRecord } = startRecordBridge(viewHistory))
109
+ addStats = noop
110
+ }
111
+
112
+ const recording = record({
113
+ emitRecord: addRecord,
114
+ emitResource,
115
+ emitStats: addStats,
116
+ configuration,
117
+ lifeCycle,
118
+ viewHistory,
119
+ })
120
+ flushMutations = recording.flushMutations
121
+
122
+ if (!canUseEventBridge()) {
123
+ const recovery = startDroppedSegmentRecovery(replayRequest.observable, recording.takeFullSnapshot)
124
+ cleanupTasks.push(recovery.stop)
125
+ }
126
+
127
+ return {
128
+ stop: () => {
129
+ recording.flushMutations()
130
+ recording.stop()
131
+ cleanupTasks.forEach((task) => task())
132
+ },
133
+ }
134
+ }
@@ -1,11 +1,10 @@
1
+ import { mockable } from '@kubesense/kubesense-browser-core'
1
2
  import { reportScriptLoadingError } from '../domain/scriptLoadingError'
2
- import type { createRumProfiler } from '../domain/profiling/profiler'
3
+ import type { createRumProfiler } from '../domain/profiling/kubesenseProfiler'
3
4
 
4
- export async function lazyLoadProfiler(
5
- importProfilerImpl = importProfiler
6
- ): Promise<typeof createRumProfiler | undefined> {
5
+ export async function lazyLoadProfiler(): Promise<typeof createRumProfiler | undefined> {
7
6
  try {
8
- return await importProfilerImpl()
7
+ return await mockable(importProfiler)()
9
8
  } catch (error: unknown) {
10
9
  reportScriptLoadingError({
11
10
  error,
@@ -15,7 +14,7 @@ export async function lazyLoadProfiler(
15
14
  }
16
15
  }
17
16
 
18
- async function importProfiler() {
19
- const module = await import(/* webpackChunkName: "profiler" */ '../domain/profiling/profiler')
17
+ export async function importProfiler() {
18
+ const module = await import(/* webpackChunkName: "kubesenseProfiler" */ '../domain/profiling/kubesenseProfiler')
20
19
  return module.createRumProfiler
21
20
  }
@@ -1,11 +1,10 @@
1
+ import { mockable } from '@kubesense/kubesense-browser-core'
1
2
  import { reportScriptLoadingError } from '../domain/scriptLoadingError'
2
- import type { startRecording } from './startRecording'
3
+ import type { startRecording } from './kubesenseRecorder'
3
4
 
4
- export async function lazyLoadRecorder(
5
- importRecorderImpl = importRecorder
6
- ): Promise<typeof startRecording | undefined> {
5
+ export async function lazyLoadRecorder(): Promise<typeof startRecording | undefined> {
7
6
  try {
8
- return await importRecorderImpl()
7
+ return await mockable(importRecorder)()
9
8
  } catch (error: unknown) {
10
9
  reportScriptLoadingError({
11
10
  error,
@@ -15,7 +14,7 @@ export async function lazyLoadRecorder(
15
14
  }
16
15
  }
17
16
 
18
- async function importRecorder() {
19
- const module = await import(/* webpackChunkName: "recorder" */ './startRecording')
17
+ export async function importRecorder() {
18
+ const module = await import(/* webpackChunkName: "kubesenseRecorder" */ './kubesenseRecorder')
20
19
  return module.startRecording
21
20
  }