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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,91 @@
1
+ let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
2
+ let _kubesense_kubesense_js_core_time = require("@kubesense/kubesense-js-core/time");
3
+ //#region src/domain/profiling/transport/buildProfileEvent.ts
4
+ /**
5
+ * Builds a BrowserProfileEvent from a trace.
6
+ */
7
+ function buildProfileEvent(profilerTrace, configuration, sessionId) {
8
+ const tags = (0, _kubesense_kubesense_browser_core.buildTags)(configuration);
9
+ const profileAttributes = buildProfileEventAttributes(profilerTrace, configuration.applicationId, sessionId);
10
+ const profileEventTags = buildProfileEventTags(tags);
11
+ return {
12
+ ...profileAttributes,
13
+ attachments: ["wall-time.json"],
14
+ start: new Date(profilerTrace.startClocks.timeStamp).toISOString(),
15
+ end: new Date(profilerTrace.endClocks.timeStamp).toISOString(),
16
+ family: "chrome",
17
+ runtime: "chrome",
18
+ format: "json",
19
+ version: 4,
20
+ tags_profiler: profileEventTags.join(","),
21
+ _kubesense: { clock_drift: (0, _kubesense_kubesense_js_core_time.clockDrift)() }
22
+ };
23
+ }
24
+ /**
25
+ * Builds attributes for the Profile Event.
26
+ *
27
+ * @param profilerTrace - Profiler trace
28
+ * @param applicationId - application id.
29
+ * @param sessionId - session id.
30
+ * @returns Additional attributes.
31
+ */
32
+ function buildProfileEventAttributes(profilerTrace, applicationId, sessionId) {
33
+ const { ids, names } = extractViewIdsAndNames(profilerTrace.views);
34
+ const longTaskIds = profilerTrace.longTasks.map((longTask) => longTask.id).filter((id) => id !== void 0);
35
+ const actionIds = profilerTrace.actions?.map((longTask) => longTask.id).filter((id) => id !== void 0) ?? [];
36
+ const { ids: vitalIds, labels: vitalLabels } = extractVitalIdsAndLabels(profilerTrace.vitals);
37
+ const attributes = { application: { id: applicationId } };
38
+ if (sessionId) attributes.session = { id: sessionId };
39
+ if (ids.length) attributes.view = {
40
+ id: ids,
41
+ name: names
42
+ };
43
+ if (longTaskIds.length) attributes.long_task = { id: longTaskIds };
44
+ if (actionIds.length) attributes.action = {
45
+ id: actionIds,
46
+ label: []
47
+ };
48
+ if (vitalIds.length) attributes.vital = {
49
+ id: vitalIds,
50
+ label: vitalLabels
51
+ };
52
+ return attributes;
53
+ }
54
+ function extractViewIdsAndNames(views) {
55
+ const result = {
56
+ ids: [],
57
+ names: []
58
+ };
59
+ for (const view of views) {
60
+ result.ids.push(view.viewId);
61
+ if (view.viewName) result.names.push(view.viewName);
62
+ }
63
+ result.names = Array.from(new Set(result.names));
64
+ return result;
65
+ }
66
+ function extractVitalIdsAndLabels(vitals) {
67
+ const result = {
68
+ ids: [],
69
+ labels: []
70
+ };
71
+ if (!vitals) return result;
72
+ for (const vital of vitals) {
73
+ result.ids.push(vital.id);
74
+ result.labels.push(vital.label);
75
+ }
76
+ result.labels = Array.from(new Set(result.labels));
77
+ return result;
78
+ }
79
+ function buildProfileEventTags(tags) {
80
+ return tags.concat([
81
+ "language:javascript",
82
+ "runtime:chrome",
83
+ "family:chrome",
84
+ "host:browser"
85
+ ]);
86
+ }
87
+ //#endregion
88
+ exports.buildProfileEvent = buildProfileEvent;
89
+ exports.buildProfileEventAttributes = buildProfileEventAttributes;
90
+
91
+ //# sourceMappingURL=buildProfileEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildProfileEvent.js","names":["buildTags","clockDrift"],"sources":["../../../../src/domain/profiling/transport/buildProfileEvent.ts"],"sourcesContent":["import { clockDrift } from '@kubesense/kubesense-js-core/time'\nimport { buildTags } from '@kubesense/kubesense-browser-core'\nimport type { RumConfiguration } from '@kubesense/kubesense-browser-rum-core'\nimport type { BrowserProfileEvent, BrowserProfilerTrace, RumProfilerVitalEntry, RumViewEntry } from '../../../types'\n\nexport interface ProfileEventAttributes {\n application: {\n id: string\n }\n session?: {\n id: string\n }\n view?: {\n id: string[]\n name: string[]\n }\n long_task?: {\n id: string[]\n }\n action?: {\n id: string[]\n label: string[]\n }\n vital?: {\n id: string[]\n label: string[]\n }\n}\n\n/**\n * Builds a BrowserProfileEvent from a trace.\n */\nexport function buildProfileEvent(\n profilerTrace: BrowserProfilerTrace,\n configuration: RumConfiguration,\n sessionId: string | undefined\n): BrowserProfileEvent {\n const tags = buildTags(configuration) // TODO: get that from the tagContext hook\n const profileAttributes = buildProfileEventAttributes(profilerTrace, configuration.applicationId, sessionId)\n const profileEventTags = buildProfileEventTags(tags)\n\n return {\n ...profileAttributes,\n attachments: ['wall-time.json'],\n start: new Date(profilerTrace.startClocks.timeStamp).toISOString(),\n end: new Date(profilerTrace.endClocks.timeStamp).toISOString(),\n family: 'chrome',\n runtime: 'chrome',\n format: 'json',\n version: 4, // Ingestion event version (not the version application tag)\n tags_profiler: profileEventTags.join(','),\n _kubesense: {\n clock_drift: clockDrift(),\n },\n }\n}\n\n/**\n * Builds attributes for the Profile Event.\n *\n * @param profilerTrace - Profiler trace\n * @param applicationId - application id.\n * @param sessionId - session id.\n * @returns Additional attributes.\n */\nexport function buildProfileEventAttributes(\n profilerTrace: BrowserProfilerTrace,\n applicationId: string,\n sessionId: string | undefined\n): ProfileEventAttributes {\n // Extract view ids and names from the profiler trace and add them as attributes of the profile event.\n // This will be used to filter the profiles by @view.id and/or @view.name.\n const { ids, names } = extractViewIdsAndNames(profilerTrace.views)\n\n const longTaskIds: string[] = profilerTrace.longTasks.map((longTask) => longTask.id).filter((id) => id !== undefined)\n\n const actionIds: string[] =\n profilerTrace.actions?.map((longTask) => longTask.id).filter((id) => id !== undefined) ?? []\n\n const { ids: vitalIds, labels: vitalLabels } = extractVitalIdsAndLabels(profilerTrace.vitals)\n\n const attributes: ProfileEventAttributes = { application: { id: applicationId } }\n\n if (sessionId) {\n attributes.session = { id: sessionId }\n }\n if (ids.length) {\n attributes.view = { id: ids, name: names }\n }\n if (longTaskIds.length) {\n attributes.long_task = { id: longTaskIds }\n }\n if (actionIds.length) {\n attributes.action = { id: actionIds, label: [] }\n }\n if (vitalIds.length) {\n attributes.vital = { id: vitalIds, label: vitalLabels }\n }\n return attributes\n}\n\nfunction extractViewIdsAndNames(views: RumViewEntry[]): { ids: string[]; names: string[] } {\n const result: { ids: string[]; names: string[] } = { ids: [], names: [] }\n for (const view of views) {\n result.ids.push(view.viewId)\n\n if (view.viewName) {\n result.names.push(view.viewName)\n }\n }\n\n // Remove duplicates\n result.names = Array.from(new Set(result.names))\n\n return result\n}\n\nfunction extractVitalIdsAndLabels(vitals?: RumProfilerVitalEntry[]): {\n ids: string[]\n labels: string[]\n} {\n const result: { ids: string[]; labels: string[] } = { ids: [], labels: [] }\n\n if (!vitals) {\n return result\n }\n\n for (const vital of vitals) {\n result.ids.push(vital.id)\n result.labels.push(vital.label)\n }\n\n // Remove duplicates\n result.labels = Array.from(new Set(result.labels))\n\n return result\n}\n\nfunction buildProfileEventTags(tags: string[]): string[] {\n // Tags already contains the common tags for all events. (service, env, version, etc.)\n // Here we are adding some specific-to-profiling tags.\n return tags.concat(['language:javascript', 'runtime:chrome', 'family:chrome', 'host:browser'])\n}\n"],"mappings":";;;;;;AAgCA,SAAgB,kBACd,eACA,eACA,WACqB;CACrB,MAAM,QAAA,GAAOA,kCAAAA,UAAAA,CAAU,aAAa;CACpC,MAAM,oBAAoB,4BAA4B,eAAe,cAAc,eAAe,SAAS;CAC3G,MAAM,mBAAmB,sBAAsB,IAAI;CAEnD,OAAO;EACL,GAAG;EACH,aAAa,CAAC,gBAAgB;EAC9B,OAAO,IAAI,KAAK,cAAc,YAAY,SAAS,CAAC,CAAC,YAAY;EACjE,KAAK,IAAI,KAAK,cAAc,UAAU,SAAS,CAAC,CAAC,YAAY;EAC7D,QAAQ;EACR,SAAS;EACT,QAAQ;EACR,SAAS;EACT,eAAe,iBAAiB,KAAK,GAAG;EACxC,YAAY,EACV,cAAA,GAAaC,kCAAAA,WAAAA,CAAW,EAC1B;CACF;AACF;;;;;;;;;AAUA,SAAgB,4BACd,eACA,eACA,WACwB;CAGxB,MAAM,EAAE,KAAK,UAAU,uBAAuB,cAAc,KAAK;CAEjE,MAAM,cAAwB,cAAc,UAAU,KAAK,aAAa,SAAS,EAAE,CAAC,CAAC,QAAQ,OAAO,OAAO,KAAA,CAAS;CAEpH,MAAM,YACJ,cAAc,SAAS,KAAK,aAAa,SAAS,EAAE,CAAC,CAAC,QAAQ,OAAO,OAAO,KAAA,CAAS,KAAK,CAAC;CAE7F,MAAM,EAAE,KAAK,UAAU,QAAQ,gBAAgB,yBAAyB,cAAc,MAAM;CAE5F,MAAM,aAAqC,EAAE,aAAa,EAAE,IAAI,cAAc,EAAE;CAEhF,IAAI,WACF,WAAW,UAAU,EAAE,IAAI,UAAU;CAEvC,IAAI,IAAI,QACN,WAAW,OAAO;EAAE,IAAI;EAAK,MAAM;CAAM;CAE3C,IAAI,YAAY,QACd,WAAW,YAAY,EAAE,IAAI,YAAY;CAE3C,IAAI,UAAU,QACZ,WAAW,SAAS;EAAE,IAAI;EAAW,OAAO,CAAC;CAAE;CAEjD,IAAI,SAAS,QACX,WAAW,QAAQ;EAAE,IAAI;EAAU,OAAO;CAAY;CAExD,OAAO;AACT;AAEA,SAAS,uBAAuB,OAA2D;CACzF,MAAM,SAA6C;EAAE,KAAK,CAAC;EAAG,OAAO,CAAC;CAAE;CACxE,KAAK,MAAM,QAAQ,OAAO;EACxB,OAAO,IAAI,KAAK,KAAK,MAAM;EAE3B,IAAI,KAAK,UACP,OAAO,MAAM,KAAK,KAAK,QAAQ;CAEnC;CAGA,OAAO,QAAQ,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC;CAE/C,OAAO;AACT;AAEA,SAAS,yBAAyB,QAGhC;CACA,MAAM,SAA8C;EAAE,KAAK,CAAC;EAAG,QAAQ,CAAC;CAAE;CAE1E,IAAI,CAAC,QACH,OAAO;CAGT,KAAK,MAAM,SAAS,QAAQ;EAC1B,OAAO,IAAI,KAAK,MAAM,EAAE;EACxB,OAAO,OAAO,KAAK,MAAM,KAAK;CAChC;CAGA,OAAO,SAAS,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC;CAEjD,OAAO;AACT;AAEA,SAAS,sBAAsB,MAA0B;CAGvD,OAAO,KAAK,OAAO;EAAC;EAAuB;EAAkB;EAAiB;CAAc,CAAC;AAC/F"}
@@ -0,0 +1,5 @@
1
+ import type { Encoder } from '@kubesense/kubesense-browser-core';
2
+ import { DeflateEncoderStreamId } from '@kubesense/kubesense-browser-core';
3
+ import type { LifeCycle, RumConfiguration } from '@kubesense/kubesense-browser-rum-core';
4
+ import type { ProfilingPayload } from '../types';
5
+ export declare function createFormDataEmitter(configuration: RumConfiguration, lifeCycle: LifeCycle, createEncoder: (streamId: DeflateEncoderStreamId) => Encoder): (payload: ProfilingPayload) => void;
@@ -0,0 +1,17 @@
1
+ let _kubesense_kubesense_browser_rum_core = require("@kubesense/kubesense-browser-rum-core");
2
+ let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
3
+ //#region src/domain/profiling/transport/formDataEmitter.ts
4
+ function createFormDataEmitter(configuration, lifeCycle, createEncoder) {
5
+ const transport = (0, _kubesense_kubesense_browser_rum_core.createFormDataTransport)(configuration, lifeCycle, createEncoder, _kubesense_kubesense_browser_core.DeflateEncoderStreamId.PROFILING);
6
+ return ({ profile, trace }) => {
7
+ const formPayload = {
8
+ event: profile,
9
+ "wall-time.json": trace
10
+ };
11
+ transport.send(formPayload);
12
+ };
13
+ }
14
+ //#endregion
15
+ exports.createFormDataEmitter = createFormDataEmitter;
16
+
17
+ //# sourceMappingURL=formDataEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formDataEmitter.js","names":["createFormDataTransport","DeflateEncoderStreamId"],"sources":["../../../../src/domain/profiling/transport/formDataEmitter.ts"],"sourcesContent":["import type { Encoder } from '@kubesense/kubesense-browser-core'\nimport { DeflateEncoderStreamId } from '@kubesense/kubesense-browser-core'\nimport type { LifeCycle, RumConfiguration, TransportPayload } from '@kubesense/kubesense-browser-rum-core'\nimport { createFormDataTransport } from '@kubesense/kubesense-browser-rum-core'\nimport type { ProfilingPayload } from '../types'\n\nexport function createFormDataEmitter(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n createEncoder: (streamId: DeflateEncoderStreamId) => Encoder\n): (payload: ProfilingPayload) => void {\n const transport = createFormDataTransport(configuration, lifeCycle, createEncoder, DeflateEncoderStreamId.PROFILING)\n return ({ profile, trace }: ProfilingPayload) => {\n const formPayload = { event: profile, 'wall-time.json': trace }\n void transport.send(formPayload as unknown as TransportPayload)\n }\n}\n"],"mappings":";;;AAMA,SAAgB,sBACd,eACA,WACA,eACqC;CACrC,MAAM,aAAA,GAAYA,sCAAAA,wBAAAA,CAAwB,eAAe,WAAW,eAAeC,kCAAAA,uBAAuB,SAAS;CACnH,QAAQ,EAAE,SAAS,YAA8B;EAC/C,MAAM,cAAc;GAAE,OAAO;GAAS,kBAAkB;EAAM;EAC9D,UAAe,KAAK,WAA0C;CAChE;AACF"}
@@ -0,0 +1,2 @@
1
+ import type { ProfilingPayload } from '../types';
2
+ export declare function createBridgeEmitter(): (payload: ProfilingPayload) => void;
@@ -0,0 +1,12 @@
1
+ let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
2
+ //#region src/domain/profiling/transport/profilingBridge.ts
3
+ function createBridgeEmitter() {
4
+ const bridge = (0, _kubesense_kubesense_browser_core.getEventBridge)();
5
+ return (payload) => {
6
+ bridge.send("profile", payload);
7
+ };
8
+ }
9
+ //#endregion
10
+ exports.createBridgeEmitter = createBridgeEmitter;
11
+
12
+ //# sourceMappingURL=profilingBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profilingBridge.js","names":["getEventBridge"],"sources":["../../../../src/domain/profiling/transport/profilingBridge.ts"],"sourcesContent":["import { getEventBridge } from '@kubesense/kubesense-browser-core'\nimport type { ProfilingPayload } from '../types'\n\nexport function createBridgeEmitter(): (payload: ProfilingPayload) => void {\n const bridge = getEventBridge<'profile', ProfilingPayload>()!\n return (payload: ProfilingPayload) => {\n bridge.send('profile', payload)\n }\n}\n"],"mappings":";;AAGA,SAAgB,sBAA2D;CACzE,MAAM,UAAA,GAASA,kCAAAA,eAAAA,CAA4C;CAC3D,QAAQ,YAA8B;EACpC,OAAO,KAAK,WAAW,OAAO;CAChC;AACF"}
@@ -1,14 +1,8 @@
1
- import type { TimeoutId, ClocksState } from '@kubesense/kubesense-browser-core';
2
- import type { LongTaskContext } from '@kubesense/kubesense-browser-rum-core';
3
- import type { ProfilerTrace, Profiler } from './profilerApi.types';
4
- export interface RumViewEntry {
5
- /** Detected start time of view */
6
- readonly startClocks: ClocksState;
7
- /** RUM view id */
8
- readonly viewId: string;
9
- /** RUM view name */
10
- readonly viewName: string | undefined;
11
- }
1
+ import type { Profiler } from '@kubesense/kubesense-js-core/util';
2
+ import type { ClocksState } from '@kubesense/kubesense-js-core/time';
3
+ import type { TimeoutId } from '@kubesense/kubesense-browser-core';
4
+ import type { BrowserProfileEvent, BrowserProfilerTrace, RumViewEntry } from '../../types';
5
+ import type { LongTaskContext } from './longTaskHistory';
12
6
  /**
13
7
  * Additional data recorded during profiling session
14
8
  */
@@ -18,22 +12,12 @@ export interface RumProfilerEnrichmentData {
18
12
  /** List of detected navigation entries */
19
13
  readonly views: RumViewEntry[];
20
14
  }
21
- export interface RumProfilerTrace extends ProfilerTrace, RumProfilerEnrichmentData {
22
- /** High resolution time when profiler trace started, relative to the profiling session's time origin */
23
- readonly startClocks: ClocksState;
24
- /** High resolution time when profiler trace ended, relative to the profiling session's time origin */
25
- readonly endClocks: ClocksState;
26
- /** Time origin of the profiling session */
27
- readonly clocksOrigin: ClocksState;
28
- /** Sample interval in milliseconds */
29
- readonly sampleInterval: number;
30
- }
31
15
  /**
32
16
  * Describes profiler session state when it's stopped
33
17
  */
34
18
  export interface RumProfilerStoppedInstance {
35
19
  readonly state: 'stopped';
36
- readonly stateReason: 'session-expired' | 'stopped-by-user' | 'initializing';
20
+ readonly stateReason: 'session-expired' | 'stopped-by-user' | 'initializing' | 'quota_ko';
37
21
  }
38
22
  /**
39
23
  * Describes profiler session state when it's paused
@@ -55,18 +39,23 @@ export interface RumProfilerRunningInstance extends RumProfilerEnrichmentData {
55
39
  readonly timeoutId: TimeoutId;
56
40
  /** Clean-up tasks to execute after running the Profiler */
57
41
  readonly cleanupTasks: Array<() => void>;
42
+ /** Session ID */
43
+ readonly sessionId: string | undefined;
58
44
  }
59
45
  export type RumProfilerInstance = RumProfilerStoppedInstance | RumProfilerPausedInstance | RumProfilerRunningInstance;
60
46
  export interface RUMProfiler {
61
47
  start: () => void;
62
- stop: () => Promise<void>;
48
+ stop: () => void;
63
49
  isStopped: () => boolean;
64
50
  isRunning: () => boolean;
65
51
  isPaused: () => boolean;
66
52
  }
53
+ export interface ProfilingPayload {
54
+ profile: BrowserProfileEvent;
55
+ trace: BrowserProfilerTrace;
56
+ }
67
57
  export interface RUMProfilerConfiguration {
68
58
  sampleIntervalMs: number;
69
59
  collectIntervalMs: number;
70
60
  minProfileDurationMs: number;
71
- minNumberOfSamples: number;
72
61
  }
@@ -1,7 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCustomOrDefaultViewName = void 0;
4
- const getDefaultViewName_1 = require("./getDefaultViewName");
5
- const getCustomOrDefaultViewName = (customViewName, viewPathUrl) => customViewName || (0, getDefaultViewName_1.getDefaultViewName)(viewPathUrl);
1
+ const require_getDefaultViewName = require("./getDefaultViewName.js");
2
+ //#region src/domain/profiling/utils/getCustomOrDefaultViewName.ts
3
+ const getCustomOrDefaultViewName = (customViewName, viewPathUrl) => customViewName || require_getDefaultViewName.getDefaultViewName(viewPathUrl);
4
+ //#endregion
6
5
  exports.getCustomOrDefaultViewName = getCustomOrDefaultViewName;
6
+
7
7
  //# sourceMappingURL=getCustomOrDefaultViewName.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getCustomOrDefaultViewName.js","sourceRoot":"","sources":["../../../../src/domain/profiling/utils/getCustomOrDefaultViewName.ts"],"names":[],"mappings":";;;AAAA,6DAAyD;AAElD,MAAM,0BAA0B,GAAG,CAAC,cAAkC,EAAE,WAAmB,EAAU,EAAE,CAC5G,cAAc,IAAI,IAAA,uCAAkB,EAAC,WAAW,CAAC,CAAA;AADtC,QAAA,0BAA0B,8BACY"}
1
+ {"version":3,"file":"getCustomOrDefaultViewName.js","names":["getDefaultViewName"],"sources":["../../../../src/domain/profiling/utils/getCustomOrDefaultViewName.ts"],"sourcesContent":["import { getDefaultViewName } from './getDefaultViewName'\n\nexport const getCustomOrDefaultViewName = (customViewName: string | undefined, viewPathUrl: string): string =>\n customViewName || getDefaultViewName(viewPathUrl)\n"],"mappings":";;AAEA,MAAa,8BAA8B,gBAAoC,gBAC7E,kBAAkBA,2BAAAA,mBAAmB,WAAW"}
@@ -1,14 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDefaultViewName = getDefaultViewName;
4
- // This is the regex used to extract the path from the url (from SimpleUrlGroupingProcessor.java)
5
- // It's a bit different from the one in the java code because we removed the lookbehind unsupported by Safari.
1
+ //#region src/domain/profiling/utils/getDefaultViewName.ts
6
2
  const PATH_MIXED_ALPHANUMERICS = /\/(?![vV]\d{1,2}\/)([^/\d?]*\d+[^/?]*)/g;
7
3
  function getDefaultViewName(viewPathUrl) {
8
- if (!viewPathUrl) {
9
- return '/';
10
- }
11
- // Replace all the mixed alphanumerics with a ?
12
- return viewPathUrl.replace(PATH_MIXED_ALPHANUMERICS, '/?');
4
+ if (!viewPathUrl) return "/";
5
+ return viewPathUrl.replace(PATH_MIXED_ALPHANUMERICS, "/?");
13
6
  }
7
+ //#endregion
8
+ exports.getDefaultViewName = getDefaultViewName;
9
+
14
10
  //# sourceMappingURL=getDefaultViewName.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getDefaultViewName.js","sourceRoot":"","sources":["../../../../src/domain/profiling/utils/getDefaultViewName.ts"],"names":[],"mappings":";;AAIA,gDAOC;AAXD,iGAAiG;AACjG,8GAA8G;AAC9G,MAAM,wBAAwB,GAAG,yCAAyC,CAAA;AAE1E,SAAgB,kBAAkB,CAAC,WAAmB;IACpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,+CAA+C;IAC/C,OAAO,WAAW,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAA;AAC5D,CAAC"}
1
+ {"version":3,"file":"getDefaultViewName.js","names":[],"sources":["../../../../src/domain/profiling/utils/getDefaultViewName.ts"],"sourcesContent":["// This is the regex used to extract the path from the url (from SimpleUrlGroupingProcessor.java)\n// It's a bit different from the one in the java code because we removed the lookbehind unsupported by Safari.\nconst PATH_MIXED_ALPHANUMERICS = /\\/(?![vV]\\d{1,2}\\/)([^/\\d?]*\\d+[^/?]*)/g\n\nexport function getDefaultViewName(viewPathUrl: string): string {\n if (!viewPathUrl) {\n return '/'\n }\n\n // Replace all the mixed alphanumerics with a ?\n return viewPathUrl.replace(PATH_MIXED_ALPHANUMERICS, '/?')\n}\n"],"mappings":";AAEA,MAAM,2BAA2B;AAEjC,SAAgB,mBAAmB,aAA6B;CAC9D,IAAI,CAAC,aACH,OAAO;CAIT,OAAO,YAAY,QAAQ,0BAA0B,IAAI;AAC3D"}
@@ -0,0 +1,13 @@
1
+ import type { ClocksState, Duration } from '@kubesense/kubesense-js-core/time';
2
+ import type { LifeCycle } from '@kubesense/kubesense-browser-rum-core';
3
+ import { VitalType } from '@kubesense/kubesense-browser-rum-core';
4
+ export declare const VITAL_ID_HISTORY_TIME_OUT_DELAY: number;
5
+ export interface VitalContext {
6
+ id: string;
7
+ type: VitalType;
8
+ label: string;
9
+ operationKey?: string;
10
+ duration?: Duration;
11
+ startClocks: ClocksState;
12
+ }
13
+ export declare function createVitalHistory(lifeCycle: LifeCycle): import("@kubesense/kubesense-browser-core").ValueHistory<VitalContext>;
@@ -0,0 +1,56 @@
1
+ let _kubesense_kubesense_browser_rum_core = require("@kubesense/kubesense-browser-rum-core");
2
+ let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
3
+ let _kubesense_kubesense_js_core_time = require("@kubesense/kubesense-js-core/time");
4
+ //#region src/domain/profiling/vitalHistory.ts
5
+ const VITAL_ID_HISTORY_TIME_OUT_DELAY = _kubesense_kubesense_browser_core.SESSION_TIME_OUT_DELAY;
6
+ function createVitalHistory(lifeCycle) {
7
+ const history = (0, _kubesense_kubesense_browser_core.createValueHistory)({ expireDelay: VITAL_ID_HISTORY_TIME_OUT_DELAY });
8
+ lifeCycle.subscribe(_kubesense_kubesense_browser_rum_core.LifeCycleEventType.DURATION_VITAL_STARTED, (vitalStart) => {
9
+ history.add({
10
+ id: vitalStart.id,
11
+ type: _kubesense_kubesense_browser_rum_core.VitalType.DURATION,
12
+ startClocks: vitalStart.startClocks,
13
+ duration: void 0,
14
+ label: vitalStart.name
15
+ }, vitalStart.startClocks.relative);
16
+ });
17
+ lifeCycle.subscribe(_kubesense_kubesense_browser_rum_core.LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, ({ rawRumEvent, startClocks, duration }) => {
18
+ if (rawRumEvent.type !== "vital") return;
19
+ if (rawRumEvent.vital.type === _kubesense_kubesense_browser_rum_core.VitalType.OPERATION_STEP) {
20
+ if (rawRumEvent.vital.step_type === "start") history.add({
21
+ id: rawRumEvent.vital.id,
22
+ type: rawRumEvent.vital.type,
23
+ operationKey: rawRumEvent.vital.operation_key,
24
+ startClocks,
25
+ label: rawRumEvent.vital.name
26
+ }, startClocks.relative);
27
+ else if (rawRumEvent.vital.step_type === "end") {
28
+ const historyEntry = history.findAllEntries().find((entry) => entry.value.type === _kubesense_kubesense_browser_rum_core.VitalType.OPERATION_STEP && entry.value.label === rawRumEvent.vital.name && entry.value.operationKey === rawRumEvent.vital.operation_key);
29
+ if (!historyEntry) return;
30
+ historyEntry.value.duration = (0, _kubesense_kubesense_js_core_time.elapsed)(historyEntry.value.startClocks.relative, startClocks.relative);
31
+ historyEntry.close(startClocks.relative);
32
+ }
33
+ return;
34
+ }
35
+ const historyEntry = history.getEntries(startClocks.relative).find((entry) => entry.value.id === rawRumEvent.vital.id);
36
+ if (historyEntry) {
37
+ historyEntry.value.duration = duration;
38
+ historyEntry.close((0, _kubesense_kubesense_js_core_time.addDuration)(startClocks.relative, duration));
39
+ return;
40
+ }
41
+ history.add({
42
+ id: rawRumEvent.vital.id,
43
+ type: rawRumEvent.vital.type,
44
+ operationKey: rawRumEvent.vital.operation_key,
45
+ startClocks,
46
+ duration,
47
+ label: rawRumEvent.vital.name
48
+ }, startClocks.relative).close((0, _kubesense_kubesense_js_core_time.addDuration)(startClocks.relative, duration));
49
+ });
50
+ return history;
51
+ }
52
+ //#endregion
53
+ exports.VITAL_ID_HISTORY_TIME_OUT_DELAY = VITAL_ID_HISTORY_TIME_OUT_DELAY;
54
+ exports.createVitalHistory = createVitalHistory;
55
+
56
+ //# sourceMappingURL=vitalHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitalHistory.js","names":["SESSION_TIME_OUT_DELAY","createValueHistory","LifeCycleEventType","VitalType","elapsed","addDuration"],"sources":["../../../src/domain/profiling/vitalHistory.ts"],"sourcesContent":["import type { ClocksState, Duration } from '@kubesense/kubesense-js-core/time'\nimport { elapsed, addDuration } from '@kubesense/kubesense-js-core/time'\nimport { createValueHistory, SESSION_TIME_OUT_DELAY } from '@kubesense/kubesense-browser-core'\nimport type { LifeCycle } from '@kubesense/kubesense-browser-rum-core'\nimport { LifeCycleEventType, VitalType } from '@kubesense/kubesense-browser-rum-core'\n\nexport const VITAL_ID_HISTORY_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\n\nexport interface VitalContext {\n id: string\n type: VitalType\n label: string\n operationKey?: string\n duration?: Duration\n startClocks: ClocksState\n}\n\nexport function createVitalHistory(lifeCycle: LifeCycle) {\n const history = createValueHistory<VitalContext>({\n expireDelay: VITAL_ID_HISTORY_TIME_OUT_DELAY,\n })\n\n lifeCycle.subscribe(LifeCycleEventType.DURATION_VITAL_STARTED, (vitalStart) => {\n history.add(\n {\n id: vitalStart.id,\n type: VitalType.DURATION,\n startClocks: vitalStart.startClocks,\n duration: undefined,\n label: vitalStart.name,\n },\n vitalStart.startClocks.relative\n )\n })\n\n lifeCycle.subscribe(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, ({ rawRumEvent, startClocks, duration }) => {\n if (rawRumEvent.type !== 'vital') {\n return\n }\n\n // For operation step vitals, we only tag profiles with the start step's id.\n // This means that if we receive an end step vital, we need to look for the\n // corresponding start one and update its duration. If we receive a start step vital\n // however, we just store it and wait for the end step.\n if (rawRumEvent.vital.type === VitalType.OPERATION_STEP) {\n if (rawRumEvent.vital.step_type === 'start') {\n history.add(\n {\n id: rawRumEvent.vital.id,\n type: rawRumEvent.vital.type,\n operationKey: rawRumEvent.vital.operation_key,\n startClocks,\n label: rawRumEvent.vital.name,\n },\n startClocks.relative\n )\n } else if (rawRumEvent.vital.step_type === 'end') {\n const historyEntry = history\n .findAllEntries()\n .find(\n (entry) =>\n entry.value.type === VitalType.OPERATION_STEP &&\n entry.value.label === rawRumEvent.vital.name &&\n entry.value.operationKey === rawRumEvent.vital.operation_key\n )\n\n if (!historyEntry) {\n return\n }\n\n historyEntry.value.duration = elapsed(historyEntry.value.startClocks.relative, startClocks.relative)\n historyEntry.close(startClocks.relative)\n }\n\n return\n }\n\n // All the other vital types are handled normally (i.e. stored in the\n // history and tagged on the profiles)\n const historyEntry = history\n .getEntries(startClocks.relative)\n .find((entry) => entry.value.id === rawRumEvent.vital.id)\n\n if (historyEntry) {\n historyEntry.value.duration = duration!\n historyEntry.close(addDuration(startClocks.relative, duration!))\n return\n }\n\n history\n .add(\n {\n id: rawRumEvent.vital.id,\n type: rawRumEvent.vital.type,\n operationKey: rawRumEvent.vital.operation_key,\n startClocks,\n duration,\n label: rawRumEvent.vital.name,\n },\n startClocks.relative\n )\n .close(addDuration(startClocks.relative, duration!))\n })\n\n return history\n}\n"],"mappings":";;;;AAMA,MAAa,kCAAkCA,kCAAAA;AAW/C,SAAgB,mBAAmB,WAAsB;CACvD,MAAM,WAAA,GAAUC,kCAAAA,mBAAAA,CAAiC,EAC/C,aAAa,gCACf,CAAC;CAED,UAAU,UAAUC,sCAAAA,mBAAmB,yBAAyB,eAAe;EAC7E,QAAQ,IACN;GACE,IAAI,WAAW;GACf,MAAMC,sCAAAA,UAAU;GAChB,aAAa,WAAW;GACxB,UAAU,KAAA;GACV,OAAO,WAAW;EACpB,GACA,WAAW,YAAY,QACzB;CACF,CAAC;CAED,UAAU,UAAUD,sCAAAA,mBAAmB,0BAA0B,EAAE,aAAa,aAAa,eAAe;EAC1G,IAAI,YAAY,SAAS,SACvB;EAOF,IAAI,YAAY,MAAM,SAASC,sCAAAA,UAAU,gBAAgB;GACvD,IAAI,YAAY,MAAM,cAAc,SAClC,QAAQ,IACN;IACE,IAAI,YAAY,MAAM;IACtB,MAAM,YAAY,MAAM;IACxB,cAAc,YAAY,MAAM;IAChC;IACA,OAAO,YAAY,MAAM;GAC3B,GACA,YAAY,QACd;QACK,IAAI,YAAY,MAAM,cAAc,OAAO;IAChD,MAAM,eAAe,QAClB,eAAe,CAAC,CAChB,MACE,UACC,MAAM,MAAM,SAASA,sCAAAA,UAAU,kBAC/B,MAAM,MAAM,UAAU,YAAY,MAAM,QACxC,MAAM,MAAM,iBAAiB,YAAY,MAAM,aACnD;IAEF,IAAI,CAAC,cACH;IAGF,aAAa,MAAM,YAAA,GAAWC,kCAAAA,QAAAA,CAAQ,aAAa,MAAM,YAAY,UAAU,YAAY,QAAQ;IACnG,aAAa,MAAM,YAAY,QAAQ;GACzC;GAEA;EACF;EAIA,MAAM,eAAe,QAClB,WAAW,YAAY,QAAQ,CAAC,CAChC,MAAM,UAAU,MAAM,MAAM,OAAO,YAAY,MAAM,EAAE;EAE1D,IAAI,cAAc;GAChB,aAAa,MAAM,WAAW;GAC9B,aAAa,OAAA,GAAMC,kCAAAA,YAAAA,CAAY,YAAY,UAAU,QAAS,CAAC;GAC/D;EACF;EAEA,QACG,IACC;GACE,IAAI,YAAY,MAAM;GACtB,MAAM,YAAY,MAAM;GACxB,cAAc,YAAY,MAAM;GAChC;GACA;GACA,OAAO,YAAY,MAAM;EAC3B,GACA,YAAY,QACd,CAAC,CACA,OAAA,GAAMA,kCAAAA,YAAAA,CAAY,YAAY,UAAU,QAAS,CAAC;CACvD,CAAC;CAED,OAAO;AACT"}
@@ -1,2 +1,3 @@
1
+ import type { TimeStamp } from '@kubesense/kubesense-js-core/time';
1
2
  import type { BrowserIncrementalData, BrowserIncrementalSnapshotRecord } from '../../types';
2
- export declare function assembleIncrementalSnapshot<Data extends BrowserIncrementalData>(source: Data['source'], data: Omit<Data, 'source'>): BrowserIncrementalSnapshotRecord;
3
+ export declare function assembleIncrementalSnapshot<Data extends BrowserIncrementalData>(source: Data['source'], data: Omit<Data, 'source'>, timestamp?: TimeStamp): BrowserIncrementalSnapshotRecord;
@@ -1,16 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assembleIncrementalSnapshot = assembleIncrementalSnapshot;
4
- const kubesense_browser_core_1 = require("@kubesense/kubesense-browser-core");
5
- const types_1 = require("../../types");
6
- function assembleIncrementalSnapshot(source, data) {
7
- return {
8
- data: {
9
- source,
10
- ...data,
11
- },
12
- type: types_1.RecordType.IncrementalSnapshot,
13
- timestamp: (0, kubesense_browser_core_1.timeStampNow)(),
14
- };
1
+ const require_sessionReplayConstants = require("../../types/sessionReplayConstants.js");
2
+ let _kubesense_kubesense_js_core_time = require("@kubesense/kubesense-js-core/time");
3
+ //#region src/domain/record/assembly.ts
4
+ function assembleIncrementalSnapshot(source, data, timestamp = (0, _kubesense_kubesense_js_core_time.timeStampNow)()) {
5
+ return {
6
+ data: {
7
+ source,
8
+ ...data
9
+ },
10
+ type: require_sessionReplayConstants.RecordType.IncrementalSnapshot,
11
+ timestamp
12
+ };
15
13
  }
14
+ //#endregion
15
+ exports.assembleIncrementalSnapshot = assembleIncrementalSnapshot;
16
+
16
17
  //# sourceMappingURL=assembly.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assembly.js","sourceRoot":"","sources":["../../../src/domain/record/assembly.ts"],"names":[],"mappings":";;AAIA,kEAYC;AAhBD,8EAAgE;AAEhE,uCAAwC;AAExC,SAAgB,2BAA2B,CACzC,MAAsB,EACtB,IAA0B;IAE1B,OAAO;QACL,IAAI,EAAE;YACJ,MAAM;YACN,GAAG,IAAI;SACA;QACT,IAAI,EAAE,kBAAU,CAAC,mBAAmB;QACpC,SAAS,EAAE,IAAA,qCAAY,GAAE;KAC1B,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"assembly.js","names":["timeStampNow","RecordType"],"sources":["../../../src/domain/record/assembly.ts"],"sourcesContent":["import { timeStampNow } from '@kubesense/kubesense-js-core/time'\nimport type { TimeStamp } from '@kubesense/kubesense-js-core/time'\nimport type { BrowserIncrementalData, BrowserIncrementalSnapshotRecord } from '../../types'\nimport { RecordType } from '../../types'\n\nexport function assembleIncrementalSnapshot<Data extends BrowserIncrementalData>(\n source: Data['source'],\n data: Omit<Data, 'source'>,\n timestamp: TimeStamp = timeStampNow()\n): BrowserIncrementalSnapshotRecord {\n return {\n data: {\n source,\n ...data,\n } as Data,\n type: RecordType.IncrementalSnapshot,\n timestamp,\n }\n}\n"],"mappings":";;;AAKA,SAAgB,4BACd,QACA,MACA,aAAA,GAAuBA,kCAAAA,aAAAA,CAAa,GACF;CAClC,OAAO;EACL,MAAM;GACJ;GACA,GAAG;EACL;EACA,MAAMC,+BAAAA,WAAW;EACjB;CACF;AACF"}
@@ -0,0 +1,2 @@
1
+ import type { CanvasSnapshot } from './canvasSnapshot';
2
+ export declare function computeImageHash(snapshot: CanvasSnapshot, maxHashDimension: number): Promise<string | undefined>;
@@ -0,0 +1,33 @@
1
+ const require_canvasSnapshot = require("./canvasSnapshot.js");
2
+ let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
3
+ let _kubesense_kubesense_js_core_util = require("@kubesense/kubesense-js-core/util");
4
+ //#region src/domain/record/canvas/canvasHash.ts
5
+ function computeImageHash(snapshot, maxHashDimension) {
6
+ const { height: sourceHeight, width: sourceWidth } = snapshot.source;
7
+ const thumbnail = Math.max(sourceWidth, sourceHeight) <= maxHashDimension ? snapshot.source : require_canvasSnapshot.createDownscaledCanvas(snapshot.source, sourceWidth, sourceHeight, maxHashDimension);
8
+ if (!thumbnail) return Promise.resolve(void 0);
9
+ const context = thumbnail.getContext("2d");
10
+ if (!context) return Promise.resolve(void 0);
11
+ const data = context.getImageData(0, 0, thumbnail.width, thumbnail.height).data;
12
+ const subtleCrypto = (0, _kubesense_kubesense_browser_core.mockable)(_kubesense_kubesense_js_core_util.globalObject.crypto?.subtle);
13
+ if (!subtleCrypto) return Promise.resolve(createChangeHash(snapshot.canvasWidth, snapshot.canvasHeight, fnv1aHash(data)));
14
+ return subtleCrypto.digest("SHA-256", data).then((buffer) => createChangeHash(snapshot.canvasWidth, snapshot.canvasHeight, arrayBufferToHex(buffer)), () => createChangeHash(snapshot.canvasWidth, snapshot.canvasHeight, fnv1aHash(data)));
15
+ }
16
+ function arrayBufferToHex(buffer) {
17
+ return Array.from(new Uint8Array(buffer), (byte) => byte.toString(16).padStart(2, "0")).join("");
18
+ }
19
+ function createChangeHash(width, height, pixelHash) {
20
+ return `${width}x${height}-${pixelHash}`;
21
+ }
22
+ function fnv1aHash(data) {
23
+ let hash = 2166136261;
24
+ for (let index = 0; index < data.length; index += 1) {
25
+ hash ^= data[index];
26
+ hash = Math.imul(hash, 16777619);
27
+ }
28
+ return (hash >>> 0).toString(16).padStart(8, "0");
29
+ }
30
+ //#endregion
31
+ exports.computeImageHash = computeImageHash;
32
+
33
+ //# sourceMappingURL=canvasHash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvasHash.js","names":["createDownscaledCanvas","mockable","globalObject"],"sources":["../../../../src/domain/record/canvas/canvasHash.ts"],"sourcesContent":["import { mockable } from '@kubesense/kubesense-browser-core'\nimport { globalObject } from '@kubesense/kubesense-js-core/util'\nimport type { CanvasSnapshot } from './canvasSnapshot'\nimport { createDownscaledCanvas } from './canvasSnapshot'\n\nexport function computeImageHash(snapshot: CanvasSnapshot, maxHashDimension: number): Promise<string | undefined> {\n const { height: sourceHeight, width: sourceWidth } = snapshot.source\n // The snapshot is already frozen, so if it already fits, hash it directly instead of downscaling it again.\n const thumbnail =\n Math.max(sourceWidth, sourceHeight) <= maxHashDimension\n ? snapshot.source\n : createDownscaledCanvas(snapshot.source, sourceWidth, sourceHeight, maxHashDimension)\n if (!thumbnail) {\n return Promise.resolve(undefined)\n }\n\n const context = thumbnail.getContext('2d')\n if (!context) {\n return Promise.resolve(undefined)\n }\n\n const data = context.getImageData(0, 0, thumbnail.width, thumbnail.height).data\n // crypto.subtle is only exposed in secure contexts, so it is missing on plain HTTP pages.\n const subtleCrypto = mockable(globalObject.crypto?.subtle)\n if (!subtleCrypto) {\n return Promise.resolve(createChangeHash(snapshot.canvasWidth, snapshot.canvasHeight, fnv1aHash(data)))\n }\n\n return subtleCrypto.digest('SHA-256', data).then(\n (buffer) => createChangeHash(snapshot.canvasWidth, snapshot.canvasHeight, arrayBufferToHex(buffer)),\n () => createChangeHash(snapshot.canvasWidth, snapshot.canvasHeight, fnv1aHash(data))\n )\n}\n\nfunction arrayBufferToHex(buffer: ArrayBuffer): string {\n return Array.from(new Uint8Array(buffer), (byte) => byte.toString(16).padStart(2, '0')).join('')\n}\n\nfunction createChangeHash(width: number, height: number, pixelHash: string): string {\n return `${width}x${height}-${pixelHash}`\n}\n\n/* eslint-disable no-bitwise */\nfunction fnv1aHash(data: ArrayLike<number>): string {\n let hash = 0x811c9dc5\n\n for (let index = 0; index < data.length; index += 1) {\n hash ^= data[index]\n hash = Math.imul(hash, 0x01000193)\n }\n\n return (hash >>> 0).toString(16).padStart(8, '0')\n}\n/* eslint-enable no-bitwise */\n"],"mappings":";;;;AAKA,SAAgB,iBAAiB,UAA0B,kBAAuD;CAChH,MAAM,EAAE,QAAQ,cAAc,OAAO,gBAAgB,SAAS;CAE9D,MAAM,YACJ,KAAK,IAAI,aAAa,YAAY,KAAK,mBACnC,SAAS,SACTA,uBAAAA,uBAAuB,SAAS,QAAQ,aAAa,cAAc,gBAAgB;CACzF,IAAI,CAAC,WACH,OAAO,QAAQ,QAAQ,KAAA,CAAS;CAGlC,MAAM,UAAU,UAAU,WAAW,IAAI;CACzC,IAAI,CAAC,SACH,OAAO,QAAQ,QAAQ,KAAA,CAAS;CAGlC,MAAM,OAAO,QAAQ,aAAa,GAAG,GAAG,UAAU,OAAO,UAAU,MAAM,CAAC,CAAC;CAE3E,MAAM,gBAAA,GAAeC,kCAAAA,SAAAA,CAASC,kCAAAA,aAAa,QAAQ,MAAM;CACzD,IAAI,CAAC,cACH,OAAO,QAAQ,QAAQ,iBAAiB,SAAS,aAAa,SAAS,cAAc,UAAU,IAAI,CAAC,CAAC;CAGvG,OAAO,aAAa,OAAO,WAAW,IAAI,CAAC,CAAC,MACzC,WAAW,iBAAiB,SAAS,aAAa,SAAS,cAAc,iBAAiB,MAAM,CAAC,SAC5F,iBAAiB,SAAS,aAAa,SAAS,cAAc,UAAU,IAAI,CAAC,CACrF;AACF;AAEA,SAAS,iBAAiB,QAA6B;CACrD,OAAO,MAAM,KAAK,IAAI,WAAW,MAAM,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;AACjG;AAEA,SAAS,iBAAiB,OAAe,QAAgB,WAA2B;CAClF,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG;AAC/B;AAGA,SAAS,UAAU,MAAiC;CAClD,IAAI,OAAO;CAEX,KAAK,IAAI,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;EACnD,QAAQ,KAAK;EACb,OAAO,KAAK,KAAK,MAAM,QAAU;CACnC;CAEA,QAAQ,SAAS,EAAA,CAAG,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG;AAClD"}
@@ -0,0 +1,42 @@
1
+ export declare const enum CanvasStatus {
2
+ /** The canvas is clean, meaning it has not been marked as dirty or tainted */
3
+ Clean = 0,
4
+ /** The canvas is dirty, meaning it has been marked as dirty by a draw operation */
5
+ Dirty = 1,
6
+ /** The canvas is tainted, meaning it has been marked as tainted by a SecurityError */
7
+ Tainted = 2
8
+ }
9
+ export interface CanvasCaptureAttempt {
10
+ /** changeHash emitted the last time this canvas was captured, taken when the attempt started */
11
+ readonly lastChangeHash: string | undefined;
12
+ /** false if the canvas was forgotten/reset, or if another attempt took its place */
13
+ isCurrent: () => boolean;
14
+ /** stores the changeHash */
15
+ setLastChangeHash: (changeHash: string) => void;
16
+ }
17
+ export interface CanvasContentMutation {
18
+ canvas: HTMLCanvasElement;
19
+ captureAttempt: CanvasCaptureAttempt;
20
+ hash: string;
21
+ image: Blob;
22
+ }
23
+ export interface CanvasManager {
24
+ /** Single entry point for the canvas status */
25
+ markCanvas: (canvas: HTMLCanvasElement, status: CanvasStatus) => void;
26
+ /** The node left the DOM: forget its tracking state, but not its taint */
27
+ forgetCanvas: (canvas: HTMLCanvasElement) => void;
28
+ /** width/height were assigned: the bitmap was cleared, so drop the last hash and mark dirty */
29
+ resetCanvasBitmap: (canvas: HTMLCanvasElement) => void;
30
+ /** Takes dirty, connected, non-tainted canvases and clears their dirty state */
31
+ takeCapturableCanvases: () => HTMLCanvasElement[];
32
+ /** Starts a capture attempt for a canvas */
33
+ startCaptureAttempt: (canvas: HTMLCanvasElement) => CanvasCaptureAttempt;
34
+ discardCaptureAttempt: (canvas: HTMLCanvasElement, captureAttempt: CanvasCaptureAttempt) => void;
35
+ /** Discards the last capture hash and retries a rejected capture */
36
+ retryCanvas: (canvas: HTMLCanvasElement) => void;
37
+ addCanvasContentMutation: (mutation: CanvasContentMutation) => void;
38
+ takeCanvasContentMutations: () => CanvasContentMutation[];
39
+ /** New record stream: discards the per-stream tracking states (not the taint) */
40
+ reset: () => void;
41
+ }
42
+ export declare function createCanvasManager(): CanvasManager;
@@ -0,0 +1,99 @@
1
+ //#region src/domain/record/canvas/canvasManager.ts
2
+ function createCanvasManager() {
3
+ const dirtyCanvases = /* @__PURE__ */ new Set();
4
+ const taintedCanvases = /* @__PURE__ */ new WeakSet();
5
+ let canvasContentMutations = [];
6
+ let canvasTrackingStates = /* @__PURE__ */ new WeakMap();
7
+ function getTrackingState(canvas) {
8
+ let trackingState = canvasTrackingStates.get(canvas);
9
+ if (!trackingState) {
10
+ trackingState = { capturePending: false };
11
+ canvasTrackingStates.set(canvas, trackingState);
12
+ }
13
+ return trackingState;
14
+ }
15
+ function startCaptureAttempt(canvas) {
16
+ const trackingState = getTrackingState(canvas);
17
+ trackingState.capturePending = true;
18
+ const isCurrent = () => canvasTrackingStates.get(canvas) === trackingState;
19
+ return {
20
+ lastChangeHash: trackingState.lastChangeHash,
21
+ isCurrent,
22
+ setLastChangeHash: (changeHash) => {
23
+ if (isCurrent()) trackingState.lastChangeHash = changeHash;
24
+ }
25
+ };
26
+ }
27
+ function markDirty(canvas) {
28
+ if (!canvas.isConnected || taintedCanvases.has(canvas)) return;
29
+ dirtyCanvases.add(canvas);
30
+ }
31
+ function markClean(canvas) {
32
+ dirtyCanvases.delete(canvas);
33
+ }
34
+ function markTainted(canvas) {
35
+ taintedCanvases.add(canvas);
36
+ dirtyCanvases.delete(canvas);
37
+ }
38
+ return {
39
+ markCanvas: (canvas, status) => {
40
+ switch (status) {
41
+ case 1:
42
+ markDirty(canvas);
43
+ return;
44
+ case 0:
45
+ markClean(canvas);
46
+ return;
47
+ case 2:
48
+ markTainted(canvas);
49
+ return;
50
+ default: return;
51
+ }
52
+ },
53
+ forgetCanvas: (canvas) => {
54
+ dirtyCanvases.delete(canvas);
55
+ canvasTrackingStates.delete(canvas);
56
+ },
57
+ resetCanvasBitmap: (canvas) => {
58
+ canvasTrackingStates.delete(canvas);
59
+ markDirty(canvas);
60
+ },
61
+ takeCapturableCanvases: () => {
62
+ const capturableCanvases = [];
63
+ dirtyCanvases.forEach((canvas) => {
64
+ if (!canvas.isConnected) dirtyCanvases.delete(canvas);
65
+ else if (!taintedCanvases.has(canvas) && !getTrackingState(canvas).capturePending) {
66
+ dirtyCanvases.delete(canvas);
67
+ capturableCanvases.push(canvas);
68
+ }
69
+ });
70
+ return capturableCanvases;
71
+ },
72
+ startCaptureAttempt,
73
+ discardCaptureAttempt: (canvas, captureAttempt) => {
74
+ if (captureAttempt.isCurrent()) getTrackingState(canvas).capturePending = false;
75
+ },
76
+ retryCanvas: (canvas) => {
77
+ canvasTrackingStates.delete(canvas);
78
+ markDirty(canvas);
79
+ },
80
+ addCanvasContentMutation: (mutation) => {
81
+ canvasContentMutations.push(mutation);
82
+ },
83
+ takeCanvasContentMutations: () => {
84
+ const mutations = canvasContentMutations;
85
+ canvasContentMutations = [];
86
+ for (const mutation of mutations) if (mutation.captureAttempt.isCurrent()) getTrackingState(mutation.canvas).capturePending = false;
87
+ return mutations;
88
+ },
89
+ reset: () => {
90
+ dirtyCanvases.clear();
91
+ canvasContentMutations = [];
92
+ canvasTrackingStates = /* @__PURE__ */ new WeakMap();
93
+ }
94
+ };
95
+ }
96
+ //#endregion
97
+ exports.createCanvasManager = createCanvasManager;
98
+
99
+ //# sourceMappingURL=canvasManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvasManager.js","names":[],"sources":["../../../../src/domain/record/canvas/canvasManager.ts"],"sourcesContent":["export const enum CanvasStatus {\n /** The canvas is clean, meaning it has not been marked as dirty or tainted */\n Clean,\n /** The canvas is dirty, meaning it has been marked as dirty by a draw operation */\n Dirty,\n /** The canvas is tainted, meaning it has been marked as tainted by a SecurityError */\n Tainted,\n}\n\nexport interface CanvasCaptureAttempt {\n /** changeHash emitted the last time this canvas was captured, taken when the attempt started */\n readonly lastChangeHash: string | undefined\n /** false if the canvas was forgotten/reset, or if another attempt took its place */\n isCurrent: () => boolean\n /** stores the changeHash */\n setLastChangeHash: (changeHash: string) => void\n}\n\nexport interface CanvasContentMutation {\n canvas: HTMLCanvasElement\n captureAttempt: CanvasCaptureAttempt\n hash: string\n image: Blob\n}\n\nexport interface CanvasManager {\n /** Single entry point for the canvas status */\n markCanvas: (canvas: HTMLCanvasElement, status: CanvasStatus) => void\n /** The node left the DOM: forget its tracking state, but not its taint */\n forgetCanvas: (canvas: HTMLCanvasElement) => void\n /** width/height were assigned: the bitmap was cleared, so drop the last hash and mark dirty */\n resetCanvasBitmap: (canvas: HTMLCanvasElement) => void\n /** Takes dirty, connected, non-tainted canvases and clears their dirty state */\n takeCapturableCanvases: () => HTMLCanvasElement[]\n /** Starts a capture attempt for a canvas */\n startCaptureAttempt: (canvas: HTMLCanvasElement) => CanvasCaptureAttempt\n discardCaptureAttempt: (canvas: HTMLCanvasElement, captureAttempt: CanvasCaptureAttempt) => void\n /** Discards the last capture hash and retries a rejected capture */\n retryCanvas: (canvas: HTMLCanvasElement) => void\n addCanvasContentMutation: (mutation: CanvasContentMutation) => void\n takeCanvasContentMutations: () => CanvasContentMutation[]\n /** New record stream: discards the per-stream tracking states (not the taint) */\n reset: () => void\n}\n\ninterface CanvasTrackingState {\n capturePending: boolean\n lastChangeHash?: string\n}\n\nexport function createCanvasManager(): CanvasManager {\n const dirtyCanvases = new Set<HTMLCanvasElement>()\n const taintedCanvases = new WeakSet<HTMLCanvasElement>()\n let canvasContentMutations: CanvasContentMutation[] = []\n let canvasTrackingStates = new WeakMap<HTMLCanvasElement, CanvasTrackingState>()\n\n function getTrackingState(canvas: HTMLCanvasElement): CanvasTrackingState {\n let trackingState = canvasTrackingStates.get(canvas)\n if (!trackingState) {\n trackingState = { capturePending: false }\n canvasTrackingStates.set(canvas, trackingState)\n }\n return trackingState\n }\n\n function startCaptureAttempt(canvas: HTMLCanvasElement): CanvasCaptureAttempt {\n const trackingState = getTrackingState(canvas)\n trackingState.capturePending = true\n const isCurrent = () => canvasTrackingStates.get(canvas) === trackingState\n\n return {\n lastChangeHash: trackingState.lastChangeHash,\n isCurrent,\n setLastChangeHash: (changeHash) => {\n if (isCurrent()) {\n trackingState.lastChangeHash = changeHash\n }\n },\n }\n }\n\n function markDirty(canvas: HTMLCanvasElement) {\n if (!canvas.isConnected || taintedCanvases.has(canvas)) {\n return\n }\n dirtyCanvases.add(canvas)\n }\n\n function markClean(canvas: HTMLCanvasElement) {\n dirtyCanvases.delete(canvas)\n }\n\n function markTainted(canvas: HTMLCanvasElement) {\n taintedCanvases.add(canvas)\n dirtyCanvases.delete(canvas)\n }\n\n return {\n markCanvas: (canvas, status) => {\n switch (status) {\n case CanvasStatus.Dirty:\n markDirty(canvas)\n return\n case CanvasStatus.Clean:\n markClean(canvas)\n return\n case CanvasStatus.Tainted:\n markTainted(canvas)\n return\n default:\n status satisfies never\n return\n }\n },\n\n forgetCanvas: (canvas) => {\n dirtyCanvases.delete(canvas)\n canvasTrackingStates.delete(canvas)\n },\n\n resetCanvasBitmap: (canvas) => {\n canvasTrackingStates.delete(canvas)\n markDirty(canvas)\n },\n\n takeCapturableCanvases: () => {\n const capturableCanvases: HTMLCanvasElement[] = []\n\n dirtyCanvases.forEach((canvas) => {\n if (!canvas.isConnected) {\n dirtyCanvases.delete(canvas)\n } else if (!taintedCanvases.has(canvas) && !getTrackingState(canvas).capturePending) {\n dirtyCanvases.delete(canvas)\n capturableCanvases.push(canvas)\n }\n })\n\n return capturableCanvases\n },\n\n startCaptureAttempt,\n\n discardCaptureAttempt: (canvas, captureAttempt) => {\n if (captureAttempt.isCurrent()) {\n getTrackingState(canvas).capturePending = false\n }\n },\n\n retryCanvas: (canvas) => {\n canvasTrackingStates.delete(canvas)\n markDirty(canvas)\n },\n\n addCanvasContentMutation: (mutation) => {\n canvasContentMutations.push(mutation)\n },\n\n takeCanvasContentMutations: () => {\n const mutations = canvasContentMutations\n canvasContentMutations = []\n for (const mutation of mutations) {\n if (mutation.captureAttempt.isCurrent()) {\n getTrackingState(mutation.canvas).capturePending = false\n }\n }\n return mutations\n },\n\n reset: () => {\n dirtyCanvases.clear()\n canvasContentMutations = []\n canvasTrackingStates = new WeakMap()\n },\n }\n}\n"],"mappings":";AAkDA,SAAgB,sBAAqC;CACnD,MAAM,gCAAgB,IAAI,IAAuB;CACjD,MAAM,kCAAkB,IAAI,QAA2B;CACvD,IAAI,yBAAkD,CAAC;CACvD,IAAI,uCAAuB,IAAI,QAAgD;CAE/E,SAAS,iBAAiB,QAAgD;EACxE,IAAI,gBAAgB,qBAAqB,IAAI,MAAM;EACnD,IAAI,CAAC,eAAe;GAClB,gBAAgB,EAAE,gBAAgB,MAAM;GACxC,qBAAqB,IAAI,QAAQ,aAAa;EAChD;EACA,OAAO;CACT;CAEA,SAAS,oBAAoB,QAAiD;EAC5E,MAAM,gBAAgB,iBAAiB,MAAM;EAC7C,cAAc,iBAAiB;EAC/B,MAAM,kBAAkB,qBAAqB,IAAI,MAAM,MAAM;EAE7D,OAAO;GACL,gBAAgB,cAAc;GAC9B;GACA,oBAAoB,eAAe;IACjC,IAAI,UAAU,GACZ,cAAc,iBAAiB;GAEnC;EACF;CACF;CAEA,SAAS,UAAU,QAA2B;EAC5C,IAAI,CAAC,OAAO,eAAe,gBAAgB,IAAI,MAAM,GACnD;EAEF,cAAc,IAAI,MAAM;CAC1B;CAEA,SAAS,UAAU,QAA2B;EAC5C,cAAc,OAAO,MAAM;CAC7B;CAEA,SAAS,YAAY,QAA2B;EAC9C,gBAAgB,IAAI,MAAM;EAC1B,cAAc,OAAO,MAAM;CAC7B;CAEA,OAAO;EACL,aAAa,QAAQ,WAAW;GAC9B,QAAQ,QAAR;IACE,KAAA;KACE,UAAU,MAAM;KAChB;IACF,KAAA;KACE,UAAU,MAAM;KAChB;IACF,KAAA;KACE,YAAY,MAAM;KAClB;IACF,SAEE;GACJ;EACF;EAEA,eAAe,WAAW;GACxB,cAAc,OAAO,MAAM;GAC3B,qBAAqB,OAAO,MAAM;EACpC;EAEA,oBAAoB,WAAW;GAC7B,qBAAqB,OAAO,MAAM;GAClC,UAAU,MAAM;EAClB;EAEA,8BAA8B;GAC5B,MAAM,qBAA0C,CAAC;GAEjD,cAAc,SAAS,WAAW;IAChC,IAAI,CAAC,OAAO,aACV,cAAc,OAAO,MAAM;SACtB,IAAI,CAAC,gBAAgB,IAAI,MAAM,KAAK,CAAC,iBAAiB,MAAM,CAAC,CAAC,gBAAgB;KACnF,cAAc,OAAO,MAAM;KAC3B,mBAAmB,KAAK,MAAM;IAChC;GACF,CAAC;GAED,OAAO;EACT;EAEA;EAEA,wBAAwB,QAAQ,mBAAmB;GACjD,IAAI,eAAe,UAAU,GAC3B,iBAAiB,MAAM,CAAC,CAAC,iBAAiB;EAE9C;EAEA,cAAc,WAAW;GACvB,qBAAqB,OAAO,MAAM;GAClC,UAAU,MAAM;EAClB;EAEA,2BAA2B,aAAa;GACtC,uBAAuB,KAAK,QAAQ;EACtC;EAEA,kCAAkC;GAChC,MAAM,YAAY;GAClB,yBAAyB,CAAC;GAC1B,KAAK,MAAM,YAAY,WACrB,IAAI,SAAS,eAAe,UAAU,GACpC,iBAAiB,SAAS,MAAM,CAAC,CAAC,iBAAiB;GAGvD,OAAO;EACT;EAEA,aAAa;GACX,cAAc,MAAM;GACpB,yBAAyB,CAAC;GAC1B,uCAAuB,IAAI,QAAQ;EACrC;CACF;AACF"}
@@ -0,0 +1,8 @@
1
+ export interface CanvasSnapshot {
2
+ canvasHeight: number;
3
+ canvasWidth: number;
4
+ source: HTMLCanvasElement;
5
+ }
6
+ export declare function createCanvasSnapshot(canvas: HTMLCanvasElement, maxImageDimension: number): CanvasSnapshot | undefined;
7
+ export declare function createDownscaledCanvas(image: CanvasImageSource, width: number, height: number, maxDimension: number): HTMLCanvasElement | undefined;
8
+ export declare function captureCanvasImage(snapshot: CanvasSnapshot, encodeQuality: number): Promise<Blob | undefined>;