@depup/datadog__browser-rum 6.31.0-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (688) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +25 -0
  3. package/bundle/chunks/profiler-9f1c1103f1ef0aa98257-datadog-rum.js +1 -0
  4. package/bundle/chunks/recorder-926b641c6ef51d09a378-datadog-rum.js +1 -0
  5. package/bundle/datadog-rum.js +1 -0
  6. package/changes.json +5 -0
  7. package/cjs/boot/isBrowserSupported.d.ts +4 -0
  8. package/cjs/boot/isBrowserSupported.js +17 -0
  9. package/cjs/boot/isBrowserSupported.js.map +1 -0
  10. package/cjs/boot/lazyLoadProfiler.d.ts +3 -0
  11. package/cjs/boot/lazyLoadProfiler.js +56 -0
  12. package/cjs/boot/lazyLoadProfiler.js.map +1 -0
  13. package/cjs/boot/lazyLoadRecorder.d.ts +3 -0
  14. package/cjs/boot/lazyLoadRecorder.js +56 -0
  15. package/cjs/boot/lazyLoadRecorder.js.map +1 -0
  16. package/cjs/boot/postStartStrategy.d.ts +33 -0
  17. package/cjs/boot/postStartStrategy.js +98 -0
  18. package/cjs/boot/postStartStrategy.js.map +1 -0
  19. package/cjs/boot/preStartStrategy.d.ts +6 -0
  20. package/cjs/boot/preStartStrategy.js +24 -0
  21. package/cjs/boot/preStartStrategy.js.map +1 -0
  22. package/cjs/boot/profilerApi.d.ts +2 -0
  23. package/cjs/boot/profilerApi.js +52 -0
  24. package/cjs/boot/profilerApi.js.map +1 -0
  25. package/cjs/boot/recorderApi.d.ts +3 -0
  26. package/cjs/boot/recorderApi.js +71 -0
  27. package/cjs/boot/recorderApi.js.map +1 -0
  28. package/cjs/boot/startRecording.d.ts +6 -0
  29. package/cjs/boot/startRecording.js +45 -0
  30. package/cjs/boot/startRecording.js.map +1 -0
  31. package/cjs/domain/deflate/deflateEncoder.d.ts +3 -0
  32. package/cjs/domain/deflate/deflateEncoder.js +110 -0
  33. package/cjs/domain/deflate/deflateEncoder.js.map +1 -0
  34. package/cjs/domain/deflate/deflateWorker.d.ts +29 -0
  35. package/cjs/domain/deflate/deflateWorker.js +105 -0
  36. package/cjs/domain/deflate/deflateWorker.js.map +1 -0
  37. package/cjs/domain/deflate/index.d.ts +3 -0
  38. package/cjs/domain/deflate/index.js +11 -0
  39. package/cjs/domain/deflate/index.js.map +1 -0
  40. package/cjs/domain/getSessionReplayLink.d.ts +2 -0
  41. package/cjs/domain/getSessionReplayLink.js +35 -0
  42. package/cjs/domain/getSessionReplayLink.js.map +1 -0
  43. package/cjs/domain/profiling/actionHistory.d.ts +10 -0
  44. package/cjs/domain/profiling/actionHistory.js +49 -0
  45. package/cjs/domain/profiling/actionHistory.js.map +1 -0
  46. package/cjs/domain/profiling/longTaskHistory.d.ts +11 -0
  47. package/cjs/domain/profiling/longTaskHistory.js +28 -0
  48. package/cjs/domain/profiling/longTaskHistory.js.map +1 -0
  49. package/cjs/domain/profiling/profiler.d.ts +7 -0
  50. package/cjs/domain/profiling/profiler.js +267 -0
  51. package/cjs/domain/profiling/profiler.js.map +1 -0
  52. package/cjs/domain/profiling/profilingContext.d.ts +6 -0
  53. package/cjs/domain/profiling/profilingContext.js +31 -0
  54. package/cjs/domain/profiling/profilingContext.js.map +1 -0
  55. package/cjs/domain/profiling/profilingSupported.d.ts +1 -0
  56. package/cjs/domain/profiling/profilingSupported.js +11 -0
  57. package/cjs/domain/profiling/profilingSupported.js.map +1 -0
  58. package/cjs/domain/profiling/test-utils/mockedTrace.d.ts +3 -0
  59. package/cjs/domain/profiling/test-utils/mockedTrace.js +57 -0
  60. package/cjs/domain/profiling/test-utils/mockedTrace.js.map +1 -0
  61. package/cjs/domain/profiling/transport/assembly.d.ts +7 -0
  62. package/cjs/domain/profiling/transport/assembly.js +45 -0
  63. package/cjs/domain/profiling/transport/assembly.js.map +1 -0
  64. package/cjs/domain/profiling/transport/buildProfileEventAttributes.d.ts +33 -0
  65. package/cjs/domain/profiling/transport/buildProfileEventAttributes.js +63 -0
  66. package/cjs/domain/profiling/transport/buildProfileEventAttributes.js.map +1 -0
  67. package/cjs/domain/profiling/types/index.d.ts +2 -0
  68. package/cjs/domain/profiling/types/index.js +3 -0
  69. package/cjs/domain/profiling/types/index.js.map +1 -0
  70. package/cjs/domain/profiling/types/profilerApi.types.d.ts +58 -0
  71. package/cjs/domain/profiling/types/profilerApi.types.js +5 -0
  72. package/cjs/domain/profiling/types/profilerApi.types.js.map +1 -0
  73. package/cjs/domain/profiling/types/rumProfiler.types.d.ts +55 -0
  74. package/cjs/domain/profiling/types/rumProfiler.types.js +3 -0
  75. package/cjs/domain/profiling/types/rumProfiler.types.js.map +1 -0
  76. package/cjs/domain/profiling/utils/getCustomOrDefaultViewName.d.ts +1 -0
  77. package/cjs/domain/profiling/utils/getCustomOrDefaultViewName.js +7 -0
  78. package/cjs/domain/profiling/utils/getCustomOrDefaultViewName.js.map +1 -0
  79. package/cjs/domain/profiling/utils/getDefaultViewName.d.ts +1 -0
  80. package/cjs/domain/profiling/utils/getDefaultViewName.js +14 -0
  81. package/cjs/domain/profiling/utils/getDefaultViewName.js.map +1 -0
  82. package/cjs/domain/profiling/utils/getNumberOfSamples.d.ts +8 -0
  83. package/cjs/domain/profiling/utils/getNumberOfSamples.js +19 -0
  84. package/cjs/domain/profiling/utils/getNumberOfSamples.js.map +1 -0
  85. package/cjs/domain/profiling/vitalHistory.d.ts +10 -0
  86. package/cjs/domain/profiling/vitalHistory.js +42 -0
  87. package/cjs/domain/profiling/vitalHistory.js.map +1 -0
  88. package/cjs/domain/record/assembly.d.ts +3 -0
  89. package/cjs/domain/record/assembly.js +16 -0
  90. package/cjs/domain/record/assembly.js.map +1 -0
  91. package/cjs/domain/record/elementsScrollPositions.d.ts +10 -0
  92. package/cjs/domain/record/elementsScrollPositions.js +23 -0
  93. package/cjs/domain/record/elementsScrollPositions.js.map +1 -0
  94. package/cjs/domain/record/eventsUtils.d.ts +2 -0
  95. package/cjs/domain/record/eventsUtils.js +15 -0
  96. package/cjs/domain/record/eventsUtils.js.map +1 -0
  97. package/cjs/domain/record/index.d.ts +6 -0
  98. package/cjs/domain/record/index.js +17 -0
  99. package/cjs/domain/record/index.js.map +1 -0
  100. package/cjs/domain/record/internalApi.d.ts +22 -0
  101. package/cjs/domain/record/internalApi.js +55 -0
  102. package/cjs/domain/record/internalApi.js.map +1 -0
  103. package/cjs/domain/record/itemIds.d.ts +40 -0
  104. package/cjs/domain/record/itemIds.js +58 -0
  105. package/cjs/domain/record/itemIds.js.map +1 -0
  106. package/cjs/domain/record/mutationBatch.d.ts +12 -0
  107. package/cjs/domain/record/mutationBatch.js +44 -0
  108. package/cjs/domain/record/mutationBatch.js.map +1 -0
  109. package/cjs/domain/record/record.d.ts +16 -0
  110. package/cjs/domain/record/record.js +88 -0
  111. package/cjs/domain/record/record.js.map +1 -0
  112. package/cjs/domain/record/record.types.d.ts +18 -0
  113. package/cjs/domain/record/record.types.js +3 -0
  114. package/cjs/domain/record/record.types.js.map +1 -0
  115. package/cjs/domain/record/recordingScope.d.ts +24 -0
  116. package/cjs/domain/record/recordingScope.js +29 -0
  117. package/cjs/domain/record/recordingScope.js.map +1 -0
  118. package/cjs/domain/record/serialization/changeEncoder.d.ts +22 -0
  119. package/cjs/domain/record/serialization/changeEncoder.js +59 -0
  120. package/cjs/domain/record/serialization/changeEncoder.js.map +1 -0
  121. package/cjs/domain/record/serialization/conversions/changeConverter.d.ts +10 -0
  122. package/cjs/domain/record/serialization/conversions/changeConverter.js +216 -0
  123. package/cjs/domain/record/serialization/conversions/changeConverter.js.map +1 -0
  124. package/cjs/domain/record/serialization/conversions/changeDecoder.d.ts +16 -0
  125. package/cjs/domain/record/serialization/conversions/changeDecoder.js +137 -0
  126. package/cjs/domain/record/serialization/conversions/changeDecoder.js.map +1 -0
  127. package/cjs/domain/record/serialization/conversions/index.d.ts +7 -0
  128. package/cjs/domain/record/serialization/conversions/index.js +11 -0
  129. package/cjs/domain/record/serialization/conversions/index.js.map +1 -0
  130. package/cjs/domain/record/serialization/conversions/mutationLog.d.ts +15 -0
  131. package/cjs/domain/record/serialization/conversions/mutationLog.js +36 -0
  132. package/cjs/domain/record/serialization/conversions/mutationLog.js.map +1 -0
  133. package/cjs/domain/record/serialization/conversions/nodeIdRemapper.d.ts +10 -0
  134. package/cjs/domain/record/serialization/conversions/nodeIdRemapper.js +53 -0
  135. package/cjs/domain/record/serialization/conversions/nodeIdRemapper.js.map +1 -0
  136. package/cjs/domain/record/serialization/conversions/renderOptions.d.ts +6 -0
  137. package/cjs/domain/record/serialization/conversions/renderOptions.js +12 -0
  138. package/cjs/domain/record/serialization/conversions/renderOptions.js.map +1 -0
  139. package/cjs/domain/record/serialization/conversions/stringTable.d.ts +5 -0
  140. package/cjs/domain/record/serialization/conversions/stringTable.js +22 -0
  141. package/cjs/domain/record/serialization/conversions/stringTable.js.map +1 -0
  142. package/cjs/domain/record/serialization/conversions/vDocument.d.ts +23 -0
  143. package/cjs/domain/record/serialization/conversions/vDocument.js +176 -0
  144. package/cjs/domain/record/serialization/conversions/vDocument.js.map +1 -0
  145. package/cjs/domain/record/serialization/conversions/vNode.d.ts +66 -0
  146. package/cjs/domain/record/serialization/conversions/vNode.js +285 -0
  147. package/cjs/domain/record/serialization/conversions/vNode.js.map +1 -0
  148. package/cjs/domain/record/serialization/conversions/vStyleSheet.d.ts +16 -0
  149. package/cjs/domain/record/serialization/conversions/vStyleSheet.js +29 -0
  150. package/cjs/domain/record/serialization/conversions/vStyleSheet.js.map +1 -0
  151. package/cjs/domain/record/serialization/experimentalFeatures.d.ts +2 -0
  152. package/cjs/domain/record/serialization/experimentalFeatures.js +16 -0
  153. package/cjs/domain/record/serialization/experimentalFeatures.js.map +1 -0
  154. package/cjs/domain/record/serialization/index.d.ts +17 -0
  155. package/cjs/domain/record/serialization/index.js +37 -0
  156. package/cjs/domain/record/serialization/index.js.map +1 -0
  157. package/cjs/domain/record/serialization/insertionCursor.d.ts +57 -0
  158. package/cjs/domain/record/serialization/insertionCursor.js +68 -0
  159. package/cjs/domain/record/serialization/insertionCursor.js.map +1 -0
  160. package/cjs/domain/record/serialization/serialization.types.d.ts +24 -0
  161. package/cjs/domain/record/serialization/serialization.types.js +3 -0
  162. package/cjs/domain/record/serialization/serialization.types.js.map +1 -0
  163. package/cjs/domain/record/serialization/serializationStats.d.ts +12 -0
  164. package/cjs/domain/record/serialization/serializationStats.js +32 -0
  165. package/cjs/domain/record/serialization/serializationStats.js.map +1 -0
  166. package/cjs/domain/record/serialization/serializationTransaction.d.ts +96 -0
  167. package/cjs/domain/record/serialization/serializationTransaction.js +103 -0
  168. package/cjs/domain/record/serialization/serializationTransaction.js.map +1 -0
  169. package/cjs/domain/record/serialization/serializationUtils.d.ts +18 -0
  170. package/cjs/domain/record/serialization/serializationUtils.js +88 -0
  171. package/cjs/domain/record/serialization/serializationUtils.js.map +1 -0
  172. package/cjs/domain/record/serialization/serializeAttribute.d.ts +4 -0
  173. package/cjs/domain/record/serialization/serializeAttribute.js +42 -0
  174. package/cjs/domain/record/serialization/serializeAttribute.js.map +1 -0
  175. package/cjs/domain/record/serialization/serializeAttributes.d.ts +7 -0
  176. package/cjs/domain/record/serialization/serializeAttributes.js +167 -0
  177. package/cjs/domain/record/serialization/serializeAttributes.js.map +1 -0
  178. package/cjs/domain/record/serialization/serializeFullSnapshot.d.ts +5 -0
  179. package/cjs/domain/record/serialization/serializeFullSnapshot.js +34 -0
  180. package/cjs/domain/record/serialization/serializeFullSnapshot.js.map +1 -0
  181. package/cjs/domain/record/serialization/serializeFullSnapshotAsChange.d.ts +5 -0
  182. package/cjs/domain/record/serialization/serializeFullSnapshotAsChange.js +13 -0
  183. package/cjs/domain/record/serialization/serializeFullSnapshotAsChange.js.map +1 -0
  184. package/cjs/domain/record/serialization/serializeMutations.d.ts +11 -0
  185. package/cjs/domain/record/serialization/serializeMutations.js +262 -0
  186. package/cjs/domain/record/serialization/serializeMutations.js.map +1 -0
  187. package/cjs/domain/record/serialization/serializeMutationsAsChange.d.ts +5 -0
  188. package/cjs/domain/record/serialization/serializeMutationsAsChange.js +204 -0
  189. package/cjs/domain/record/serialization/serializeMutationsAsChange.js.map +1 -0
  190. package/cjs/domain/record/serialization/serializeNode.d.ts +7 -0
  191. package/cjs/domain/record/serialization/serializeNode.js +154 -0
  192. package/cjs/domain/record/serialization/serializeNode.js.map +1 -0
  193. package/cjs/domain/record/serialization/serializeNodeAsChange.d.ts +4 -0
  194. package/cjs/domain/record/serialization/serializeNodeAsChange.js +153 -0
  195. package/cjs/domain/record/serialization/serializeNodeAsChange.js.map +1 -0
  196. package/cjs/domain/record/serialization/serializeStyleSheets.d.ts +3 -0
  197. package/cjs/domain/record/serialization/serializeStyleSheets.js +30 -0
  198. package/cjs/domain/record/serialization/serializeStyleSheets.js.map +1 -0
  199. package/cjs/domain/record/serializationVerifier.d.ts +18 -0
  200. package/cjs/domain/record/serializationVerifier.js +126 -0
  201. package/cjs/domain/record/serializationVerifier.js.map +1 -0
  202. package/cjs/domain/record/shadowRootsController.d.ts +11 -0
  203. package/cjs/domain/record/shadowRootsController.js +45 -0
  204. package/cjs/domain/record/shadowRootsController.js.map +1 -0
  205. package/cjs/domain/record/startFullSnapshots.d.ts +10 -0
  206. package/cjs/domain/record/startFullSnapshots.js +50 -0
  207. package/cjs/domain/record/startFullSnapshots.js.map +1 -0
  208. package/cjs/domain/record/trackers/index.d.ts +12 -0
  209. package/cjs/domain/record/trackers/index.js +27 -0
  210. package/cjs/domain/record/trackers/index.js.map +1 -0
  211. package/cjs/domain/record/trackers/trackFocus.d.ts +5 -0
  212. package/cjs/domain/record/trackers/trackFocus.js +15 -0
  213. package/cjs/domain/record/trackers/trackFocus.js.map +1 -0
  214. package/cjs/domain/record/trackers/trackFrustration.d.ts +6 -0
  215. package/cjs/domain/record/trackers/trackFrustration.js +31 -0
  216. package/cjs/domain/record/trackers/trackFrustration.js.map +1 -0
  217. package/cjs/domain/record/trackers/trackInput.d.ts +4 -0
  218. package/cjs/domain/record/trackers/trackInput.js +104 -0
  219. package/cjs/domain/record/trackers/trackInput.js.map +1 -0
  220. package/cjs/domain/record/trackers/trackMediaInteraction.d.ts +5 -0
  221. package/cjs/domain/record/trackers/trackMediaInteraction.js +29 -0
  222. package/cjs/domain/record/trackers/trackMediaInteraction.js.map +1 -0
  223. package/cjs/domain/record/trackers/trackMouseInteraction.d.ts +5 -0
  224. package/cjs/domain/record/trackers/trackMouseInteraction.js +59 -0
  225. package/cjs/domain/record/trackers/trackMouseInteraction.js.map +1 -0
  226. package/cjs/domain/record/trackers/trackMove.d.ts +9 -0
  227. package/cjs/domain/record/trackers/trackMove.js +55 -0
  228. package/cjs/domain/record/trackers/trackMove.js.map +1 -0
  229. package/cjs/domain/record/trackers/trackMutation.d.ts +13 -0
  230. package/cjs/domain/record/trackers/trackMutation.js +41 -0
  231. package/cjs/domain/record/trackers/trackMutation.js.map +1 -0
  232. package/cjs/domain/record/trackers/trackScroll.d.ts +5 -0
  233. package/cjs/domain/record/trackers/trackScroll.js +48 -0
  234. package/cjs/domain/record/trackers/trackScroll.js.map +1 -0
  235. package/cjs/domain/record/trackers/trackStyleSheet.d.ts +6 -0
  236. package/cjs/domain/record/trackers/trackStyleSheet.js +89 -0
  237. package/cjs/domain/record/trackers/trackStyleSheet.js.map +1 -0
  238. package/cjs/domain/record/trackers/trackViewEnd.d.ts +5 -0
  239. package/cjs/domain/record/trackers/trackViewEnd.js +20 -0
  240. package/cjs/domain/record/trackers/trackViewEnd.js.map +1 -0
  241. package/cjs/domain/record/trackers/trackViewportResize.d.ts +6 -0
  242. package/cjs/domain/record/trackers/trackViewportResize.js +46 -0
  243. package/cjs/domain/record/trackers/trackViewportResize.js.map +1 -0
  244. package/cjs/domain/record/trackers/tracker.types.d.ts +3 -0
  245. package/cjs/domain/record/trackers/tracker.types.js +3 -0
  246. package/cjs/domain/record/trackers/tracker.types.js.map +1 -0
  247. package/cjs/domain/record/viewports.d.ts +20 -0
  248. package/cjs/domain/record/viewports.js +60 -0
  249. package/cjs/domain/record/viewports.js.map +1 -0
  250. package/cjs/domain/replayStats.d.ts +8 -0
  251. package/cjs/domain/replayStats.js +60 -0
  252. package/cjs/domain/replayStats.js.map +1 -0
  253. package/cjs/domain/scriptLoadingError.d.ts +6 -0
  254. package/cjs/domain/scriptLoadingError.js +26 -0
  255. package/cjs/domain/scriptLoadingError.js.map +1 -0
  256. package/cjs/domain/segmentCollection/buildReplayPayload.d.ts +15 -0
  257. package/cjs/domain/segmentCollection/buildReplayPayload.js +26 -0
  258. package/cjs/domain/segmentCollection/buildReplayPayload.js.map +1 -0
  259. package/cjs/domain/segmentCollection/index.d.ts +4 -0
  260. package/cjs/domain/segmentCollection/index.js +11 -0
  261. package/cjs/domain/segmentCollection/index.js.map +1 -0
  262. package/cjs/domain/segmentCollection/segment.d.ts +16 -0
  263. package/cjs/domain/segmentCollection/segment.js +82 -0
  264. package/cjs/domain/segmentCollection/segment.js.map +1 -0
  265. package/cjs/domain/segmentCollection/segmentCollection.d.ts +31 -0
  266. package/cjs/domain/segmentCollection/segmentCollection.js +113 -0
  267. package/cjs/domain/segmentCollection/segmentCollection.js.map +1 -0
  268. package/cjs/domain/segmentCollection/startSegmentTelemetry.d.ts +6 -0
  269. package/cjs/domain/segmentCollection/startSegmentTelemetry.js +52 -0
  270. package/cjs/domain/segmentCollection/startSegmentTelemetry.js.map +1 -0
  271. package/cjs/domain/startRecordBridge.d.ts +5 -0
  272. package/cjs/domain/startRecordBridge.js +17 -0
  273. package/cjs/domain/startRecordBridge.js.map +1 -0
  274. package/cjs/domain/startRecorderInitTelemetry.d.ts +15 -0
  275. package/cjs/domain/startRecorderInitTelemetry.js +55 -0
  276. package/cjs/domain/startRecorderInitTelemetry.js.map +1 -0
  277. package/cjs/entries/internal.d.ts +11 -0
  278. package/cjs/entries/internal.js +28 -0
  279. package/cjs/entries/internal.js.map +1 -0
  280. package/cjs/entries/internalSynthetics.d.ts +2 -0
  281. package/cjs/entries/internalSynthetics.js +27 -0
  282. package/cjs/entries/internalSynthetics.js.map +1 -0
  283. package/cjs/entries/main.d.ts +23 -0
  284. package/cjs/entries/main.js +35 -0
  285. package/cjs/entries/main.js.map +1 -0
  286. package/cjs/types/index.d.ts +3 -0
  287. package/cjs/types/index.js +18 -0
  288. package/cjs/types/index.js.map +1 -0
  289. package/cjs/types/profiling.d.ts +296 -0
  290. package/cjs/types/profiling.js +6 -0
  291. package/cjs/types/profiling.js.map +1 -0
  292. package/cjs/types/sessionReplay.d.ts +934 -0
  293. package/cjs/types/sessionReplay.js +6 -0
  294. package/cjs/types/sessionReplay.js.map +1 -0
  295. package/cjs/types/sessionReplayConstants.d.ts +71 -0
  296. package/cjs/types/sessionReplayConstants.js +67 -0
  297. package/cjs/types/sessionReplayConstants.js.map +1 -0
  298. package/esm/boot/isBrowserSupported.d.ts +4 -0
  299. package/esm/boot/isBrowserSupported.js +14 -0
  300. package/esm/boot/isBrowserSupported.js.map +1 -0
  301. package/esm/boot/lazyLoadProfiler.d.ts +3 -0
  302. package/esm/boot/lazyLoadProfiler.js +19 -0
  303. package/esm/boot/lazyLoadProfiler.js.map +1 -0
  304. package/esm/boot/lazyLoadRecorder.d.ts +3 -0
  305. package/esm/boot/lazyLoadRecorder.js +19 -0
  306. package/esm/boot/lazyLoadRecorder.js.map +1 -0
  307. package/esm/boot/postStartStrategy.d.ts +33 -0
  308. package/esm/boot/postStartStrategy.js +95 -0
  309. package/esm/boot/postStartStrategy.js.map +1 -0
  310. package/esm/boot/preStartStrategy.d.ts +6 -0
  311. package/esm/boot/preStartStrategy.js +21 -0
  312. package/esm/boot/preStartStrategy.js.map +1 -0
  313. package/esm/boot/profilerApi.d.ts +2 -0
  314. package/esm/boot/profilerApi.js +49 -0
  315. package/esm/boot/profilerApi.js.map +1 -0
  316. package/esm/boot/recorderApi.d.ts +3 -0
  317. package/esm/boot/recorderApi.js +68 -0
  318. package/esm/boot/recorderApi.js.map +1 -0
  319. package/esm/boot/startRecording.d.ts +6 -0
  320. package/esm/boot/startRecording.js +42 -0
  321. package/esm/boot/startRecording.js.map +1 -0
  322. package/esm/domain/deflate/deflateEncoder.d.ts +3 -0
  323. package/esm/domain/deflate/deflateEncoder.js +107 -0
  324. package/esm/domain/deflate/deflateEncoder.js.map +1 -0
  325. package/esm/domain/deflate/deflateWorker.d.ts +29 -0
  326. package/esm/domain/deflate/deflateWorker.js +97 -0
  327. package/esm/domain/deflate/deflateWorker.js.map +1 -0
  328. package/esm/domain/deflate/index.d.ts +3 -0
  329. package/esm/domain/deflate/index.js +3 -0
  330. package/esm/domain/deflate/index.js.map +1 -0
  331. package/esm/domain/getSessionReplayLink.d.ts +2 -0
  332. package/esm/domain/getSessionReplayLink.js +32 -0
  333. package/esm/domain/getSessionReplayLink.js.map +1 -0
  334. package/esm/domain/profiling/actionHistory.d.ts +10 -0
  335. package/esm/domain/profiling/actionHistory.js +45 -0
  336. package/esm/domain/profiling/actionHistory.js.map +1 -0
  337. package/esm/domain/profiling/longTaskHistory.d.ts +11 -0
  338. package/esm/domain/profiling/longTaskHistory.js +24 -0
  339. package/esm/domain/profiling/longTaskHistory.js.map +1 -0
  340. package/esm/domain/profiling/profiler.d.ts +7 -0
  341. package/esm/domain/profiling/profiler.js +263 -0
  342. package/esm/domain/profiling/profiler.js.map +1 -0
  343. package/esm/domain/profiling/profilingContext.d.ts +6 -0
  344. package/esm/domain/profiling/profilingContext.js +28 -0
  345. package/esm/domain/profiling/profilingContext.js.map +1 -0
  346. package/esm/domain/profiling/profilingSupported.d.ts +1 -0
  347. package/esm/domain/profiling/profilingSupported.js +8 -0
  348. package/esm/domain/profiling/profilingSupported.js.map +1 -0
  349. package/esm/domain/profiling/test-utils/mockedTrace.d.ts +3 -0
  350. package/esm/domain/profiling/test-utils/mockedTrace.js +54 -0
  351. package/esm/domain/profiling/test-utils/mockedTrace.js.map +1 -0
  352. package/esm/domain/profiling/transport/assembly.d.ts +7 -0
  353. package/esm/domain/profiling/transport/assembly.js +42 -0
  354. package/esm/domain/profiling/transport/assembly.js.map +1 -0
  355. package/esm/domain/profiling/transport/buildProfileEventAttributes.d.ts +33 -0
  356. package/esm/domain/profiling/transport/buildProfileEventAttributes.js +60 -0
  357. package/esm/domain/profiling/transport/buildProfileEventAttributes.js.map +1 -0
  358. package/esm/domain/profiling/types/index.d.ts +2 -0
  359. package/esm/domain/profiling/types/index.js +2 -0
  360. package/esm/domain/profiling/types/index.js.map +1 -0
  361. package/esm/domain/profiling/types/profilerApi.types.d.ts +58 -0
  362. package/esm/domain/profiling/types/profilerApi.types.js +4 -0
  363. package/esm/domain/profiling/types/profilerApi.types.js.map +1 -0
  364. package/esm/domain/profiling/types/rumProfiler.types.d.ts +55 -0
  365. package/esm/domain/profiling/types/rumProfiler.types.js +2 -0
  366. package/esm/domain/profiling/types/rumProfiler.types.js.map +1 -0
  367. package/esm/domain/profiling/utils/getCustomOrDefaultViewName.d.ts +1 -0
  368. package/esm/domain/profiling/utils/getCustomOrDefaultViewName.js +3 -0
  369. package/esm/domain/profiling/utils/getCustomOrDefaultViewName.js.map +1 -0
  370. package/esm/domain/profiling/utils/getDefaultViewName.d.ts +1 -0
  371. package/esm/domain/profiling/utils/getDefaultViewName.js +11 -0
  372. package/esm/domain/profiling/utils/getDefaultViewName.js.map +1 -0
  373. package/esm/domain/profiling/utils/getNumberOfSamples.d.ts +8 -0
  374. package/esm/domain/profiling/utils/getNumberOfSamples.js +16 -0
  375. package/esm/domain/profiling/utils/getNumberOfSamples.js.map +1 -0
  376. package/esm/domain/profiling/vitalHistory.d.ts +10 -0
  377. package/esm/domain/profiling/vitalHistory.js +38 -0
  378. package/esm/domain/profiling/vitalHistory.js.map +1 -0
  379. package/esm/domain/record/assembly.d.ts +3 -0
  380. package/esm/domain/record/assembly.js +13 -0
  381. package/esm/domain/record/assembly.js.map +1 -0
  382. package/esm/domain/record/elementsScrollPositions.d.ts +10 -0
  383. package/esm/domain/record/elementsScrollPositions.js +20 -0
  384. package/esm/domain/record/elementsScrollPositions.js.map +1 -0
  385. package/esm/domain/record/eventsUtils.d.ts +2 -0
  386. package/esm/domain/record/eventsUtils.js +11 -0
  387. package/esm/domain/record/eventsUtils.js.map +1 -0
  388. package/esm/domain/record/index.d.ts +6 -0
  389. package/esm/domain/record/index.js +5 -0
  390. package/esm/domain/record/index.js.map +1 -0
  391. package/esm/domain/record/internalApi.d.ts +22 -0
  392. package/esm/domain/record/internalApi.js +51 -0
  393. package/esm/domain/record/internalApi.js.map +1 -0
  394. package/esm/domain/record/itemIds.d.ts +40 -0
  395. package/esm/domain/record/itemIds.js +52 -0
  396. package/esm/domain/record/itemIds.js.map +1 -0
  397. package/esm/domain/record/mutationBatch.d.ts +12 -0
  398. package/esm/domain/record/mutationBatch.js +40 -0
  399. package/esm/domain/record/mutationBatch.js.map +1 -0
  400. package/esm/domain/record/record.d.ts +16 -0
  401. package/esm/domain/record/record.js +52 -0
  402. package/esm/domain/record/record.js.map +1 -0
  403. package/esm/domain/record/record.types.d.ts +18 -0
  404. package/esm/domain/record/record.types.js +2 -0
  405. package/esm/domain/record/record.types.js.map +1 -0
  406. package/esm/domain/record/recordingScope.d.ts +24 -0
  407. package/esm/domain/record/recordingScope.js +26 -0
  408. package/esm/domain/record/recordingScope.js.map +1 -0
  409. package/esm/domain/record/serialization/changeEncoder.d.ts +22 -0
  410. package/esm/domain/record/serialization/changeEncoder.js +56 -0
  411. package/esm/domain/record/serialization/changeEncoder.js.map +1 -0
  412. package/esm/domain/record/serialization/conversions/changeConverter.d.ts +10 -0
  413. package/esm/domain/record/serialization/conversions/changeConverter.js +213 -0
  414. package/esm/domain/record/serialization/conversions/changeConverter.js.map +1 -0
  415. package/esm/domain/record/serialization/conversions/changeDecoder.d.ts +16 -0
  416. package/esm/domain/record/serialization/conversions/changeDecoder.js +134 -0
  417. package/esm/domain/record/serialization/conversions/changeDecoder.js.map +1 -0
  418. package/esm/domain/record/serialization/conversions/index.d.ts +7 -0
  419. package/esm/domain/record/serialization/conversions/index.js +4 -0
  420. package/esm/domain/record/serialization/conversions/index.js.map +1 -0
  421. package/esm/domain/record/serialization/conversions/mutationLog.d.ts +15 -0
  422. package/esm/domain/record/serialization/conversions/mutationLog.js +33 -0
  423. package/esm/domain/record/serialization/conversions/mutationLog.js.map +1 -0
  424. package/esm/domain/record/serialization/conversions/nodeIdRemapper.d.ts +10 -0
  425. package/esm/domain/record/serialization/conversions/nodeIdRemapper.js +49 -0
  426. package/esm/domain/record/serialization/conversions/nodeIdRemapper.js.map +1 -0
  427. package/esm/domain/record/serialization/conversions/renderOptions.d.ts +6 -0
  428. package/esm/domain/record/serialization/conversions/renderOptions.js +9 -0
  429. package/esm/domain/record/serialization/conversions/renderOptions.js.map +1 -0
  430. package/esm/domain/record/serialization/conversions/stringTable.d.ts +5 -0
  431. package/esm/domain/record/serialization/conversions/stringTable.js +19 -0
  432. package/esm/domain/record/serialization/conversions/stringTable.js.map +1 -0
  433. package/esm/domain/record/serialization/conversions/vDocument.d.ts +23 -0
  434. package/esm/domain/record/serialization/conversions/vDocument.js +173 -0
  435. package/esm/domain/record/serialization/conversions/vDocument.js.map +1 -0
  436. package/esm/domain/record/serialization/conversions/vNode.d.ts +66 -0
  437. package/esm/domain/record/serialization/conversions/vNode.js +282 -0
  438. package/esm/domain/record/serialization/conversions/vNode.js.map +1 -0
  439. package/esm/domain/record/serialization/conversions/vStyleSheet.d.ts +16 -0
  440. package/esm/domain/record/serialization/conversions/vStyleSheet.js +26 -0
  441. package/esm/domain/record/serialization/conversions/vStyleSheet.js.map +1 -0
  442. package/esm/domain/record/serialization/experimentalFeatures.d.ts +2 -0
  443. package/esm/domain/record/serialization/experimentalFeatures.js +12 -0
  444. package/esm/domain/record/serialization/experimentalFeatures.js.map +1 -0
  445. package/esm/domain/record/serialization/index.d.ts +17 -0
  446. package/esm/domain/record/serialization/index.js +14 -0
  447. package/esm/domain/record/serialization/index.js.map +1 -0
  448. package/esm/domain/record/serialization/insertionCursor.d.ts +57 -0
  449. package/esm/domain/record/serialization/insertionCursor.js +64 -0
  450. package/esm/domain/record/serialization/insertionCursor.js.map +1 -0
  451. package/esm/domain/record/serialization/serialization.types.d.ts +24 -0
  452. package/esm/domain/record/serialization/serialization.types.js +2 -0
  453. package/esm/domain/record/serialization/serialization.types.js.map +1 -0
  454. package/esm/domain/record/serialization/serializationStats.d.ts +12 -0
  455. package/esm/domain/record/serialization/serializationStats.js +27 -0
  456. package/esm/domain/record/serialization/serializationStats.js.map +1 -0
  457. package/esm/domain/record/serialization/serializationTransaction.d.ts +96 -0
  458. package/esm/domain/record/serialization/serializationTransaction.js +99 -0
  459. package/esm/domain/record/serialization/serializationTransaction.js.map +1 -0
  460. package/esm/domain/record/serialization/serializationUtils.d.ts +18 -0
  461. package/esm/domain/record/serialization/serializationUtils.js +80 -0
  462. package/esm/domain/record/serialization/serializationUtils.js.map +1 -0
  463. package/esm/domain/record/serialization/serializeAttribute.d.ts +4 -0
  464. package/esm/domain/record/serialization/serializeAttribute.js +38 -0
  465. package/esm/domain/record/serialization/serializeAttribute.js.map +1 -0
  466. package/esm/domain/record/serialization/serializeAttributes.d.ts +7 -0
  467. package/esm/domain/record/serialization/serializeAttributes.js +161 -0
  468. package/esm/domain/record/serialization/serializeAttributes.js.map +1 -0
  469. package/esm/domain/record/serialization/serializeFullSnapshot.d.ts +5 -0
  470. package/esm/domain/record/serialization/serializeFullSnapshot.js +31 -0
  471. package/esm/domain/record/serialization/serializeFullSnapshot.js.map +1 -0
  472. package/esm/domain/record/serialization/serializeFullSnapshotAsChange.d.ts +5 -0
  473. package/esm/domain/record/serialization/serializeFullSnapshotAsChange.js +10 -0
  474. package/esm/domain/record/serialization/serializeFullSnapshotAsChange.js.map +1 -0
  475. package/esm/domain/record/serialization/serializeMutations.d.ts +11 -0
  476. package/esm/domain/record/serialization/serializeMutations.js +257 -0
  477. package/esm/domain/record/serialization/serializeMutations.js.map +1 -0
  478. package/esm/domain/record/serialization/serializeMutationsAsChange.d.ts +5 -0
  479. package/esm/domain/record/serialization/serializeMutationsAsChange.js +201 -0
  480. package/esm/domain/record/serialization/serializeMutationsAsChange.js.map +1 -0
  481. package/esm/domain/record/serialization/serializeNode.d.ts +7 -0
  482. package/esm/domain/record/serialization/serializeNode.js +149 -0
  483. package/esm/domain/record/serialization/serializeNode.js.map +1 -0
  484. package/esm/domain/record/serialization/serializeNodeAsChange.d.ts +4 -0
  485. package/esm/domain/record/serialization/serializeNodeAsChange.js +150 -0
  486. package/esm/domain/record/serialization/serializeNodeAsChange.js.map +1 -0
  487. package/esm/domain/record/serialization/serializeStyleSheets.d.ts +3 -0
  488. package/esm/domain/record/serialization/serializeStyleSheets.js +27 -0
  489. package/esm/domain/record/serialization/serializeStyleSheets.js.map +1 -0
  490. package/esm/domain/record/serializationVerifier.d.ts +18 -0
  491. package/esm/domain/record/serializationVerifier.js +123 -0
  492. package/esm/domain/record/serializationVerifier.js.map +1 -0
  493. package/esm/domain/record/shadowRootsController.d.ts +11 -0
  494. package/esm/domain/record/shadowRootsController.js +41 -0
  495. package/esm/domain/record/shadowRootsController.js.map +1 -0
  496. package/esm/domain/record/startFullSnapshots.d.ts +10 -0
  497. package/esm/domain/record/startFullSnapshots.js +46 -0
  498. package/esm/domain/record/startFullSnapshots.js.map +1 -0
  499. package/esm/domain/record/trackers/index.d.ts +12 -0
  500. package/esm/domain/record/trackers/index.js +12 -0
  501. package/esm/domain/record/trackers/index.js.map +1 -0
  502. package/esm/domain/record/trackers/trackFocus.d.ts +5 -0
  503. package/esm/domain/record/trackers/trackFocus.js +12 -0
  504. package/esm/domain/record/trackers/trackFocus.js.map +1 -0
  505. package/esm/domain/record/trackers/trackFrustration.d.ts +6 -0
  506. package/esm/domain/record/trackers/trackFrustration.js +28 -0
  507. package/esm/domain/record/trackers/trackFrustration.js.map +1 -0
  508. package/esm/domain/record/trackers/trackInput.d.ts +4 -0
  509. package/esm/domain/record/trackers/trackInput.js +101 -0
  510. package/esm/domain/record/trackers/trackInput.js.map +1 -0
  511. package/esm/domain/record/trackers/trackMediaInteraction.d.ts +5 -0
  512. package/esm/domain/record/trackers/trackMediaInteraction.js +26 -0
  513. package/esm/domain/record/trackers/trackMediaInteraction.js.map +1 -0
  514. package/esm/domain/record/trackers/trackMouseInteraction.d.ts +5 -0
  515. package/esm/domain/record/trackers/trackMouseInteraction.js +56 -0
  516. package/esm/domain/record/trackers/trackMouseInteraction.js.map +1 -0
  517. package/esm/domain/record/trackers/trackMove.d.ts +9 -0
  518. package/esm/domain/record/trackers/trackMove.js +51 -0
  519. package/esm/domain/record/trackers/trackMove.js.map +1 -0
  520. package/esm/domain/record/trackers/trackMutation.d.ts +13 -0
  521. package/esm/domain/record/trackers/trackMutation.js +38 -0
  522. package/esm/domain/record/trackers/trackMutation.js.map +1 -0
  523. package/esm/domain/record/trackers/trackScroll.d.ts +5 -0
  524. package/esm/domain/record/trackers/trackScroll.js +45 -0
  525. package/esm/domain/record/trackers/trackScroll.js.map +1 -0
  526. package/esm/domain/record/trackers/trackStyleSheet.d.ts +6 -0
  527. package/esm/domain/record/trackers/trackStyleSheet.js +85 -0
  528. package/esm/domain/record/trackers/trackStyleSheet.js.map +1 -0
  529. package/esm/domain/record/trackers/trackViewEnd.d.ts +5 -0
  530. package/esm/domain/record/trackers/trackViewEnd.js +17 -0
  531. package/esm/domain/record/trackers/trackViewEnd.js.map +1 -0
  532. package/esm/domain/record/trackers/trackViewportResize.d.ts +6 -0
  533. package/esm/domain/record/trackers/trackViewportResize.js +42 -0
  534. package/esm/domain/record/trackers/trackViewportResize.js.map +1 -0
  535. package/esm/domain/record/trackers/tracker.types.d.ts +3 -0
  536. package/esm/domain/record/trackers/tracker.types.js +2 -0
  537. package/esm/domain/record/trackers/tracker.types.js.map +1 -0
  538. package/esm/domain/record/viewports.d.ts +20 -0
  539. package/esm/domain/record/viewports.js +55 -0
  540. package/esm/domain/record/viewports.js.map +1 -0
  541. package/esm/domain/replayStats.d.ts +8 -0
  542. package/esm/domain/replayStats.js +51 -0
  543. package/esm/domain/replayStats.js.map +1 -0
  544. package/esm/domain/scriptLoadingError.d.ts +6 -0
  545. package/esm/domain/scriptLoadingError.js +23 -0
  546. package/esm/domain/scriptLoadingError.js.map +1 -0
  547. package/esm/domain/segmentCollection/buildReplayPayload.d.ts +15 -0
  548. package/esm/domain/segmentCollection/buildReplayPayload.js +23 -0
  549. package/esm/domain/segmentCollection/buildReplayPayload.js.map +1 -0
  550. package/esm/domain/segmentCollection/index.d.ts +4 -0
  551. package/esm/domain/segmentCollection/index.js +4 -0
  552. package/esm/domain/segmentCollection/index.js.map +1 -0
  553. package/esm/domain/segmentCollection/segment.d.ts +16 -0
  554. package/esm/domain/segmentCollection/segment.js +46 -0
  555. package/esm/domain/segmentCollection/segment.js.map +1 -0
  556. package/esm/domain/segmentCollection/segmentCollection.d.ts +31 -0
  557. package/esm/domain/segmentCollection/segmentCollection.js +106 -0
  558. package/esm/domain/segmentCollection/segmentCollection.js.map +1 -0
  559. package/esm/domain/segmentCollection/startSegmentTelemetry.d.ts +6 -0
  560. package/esm/domain/segmentCollection/startSegmentTelemetry.js +49 -0
  561. package/esm/domain/segmentCollection/startSegmentTelemetry.js.map +1 -0
  562. package/esm/domain/startRecordBridge.d.ts +5 -0
  563. package/esm/domain/startRecordBridge.js +14 -0
  564. package/esm/domain/startRecordBridge.js.map +1 -0
  565. package/esm/domain/startRecorderInitTelemetry.d.ts +15 -0
  566. package/esm/domain/startRecorderInitTelemetry.js +52 -0
  567. package/esm/domain/startRecorderInitTelemetry.js.map +1 -0
  568. package/esm/entries/internal.d.ts +11 -0
  569. package/esm/entries/internal.js +4 -0
  570. package/esm/entries/internal.js.map +1 -0
  571. package/esm/entries/internalSynthetics.d.ts +2 -0
  572. package/esm/entries/internalSynthetics.js +23 -0
  573. package/esm/entries/internalSynthetics.js.map +1 -0
  574. package/esm/entries/main.d.ts +23 -0
  575. package/esm/entries/main.js +31 -0
  576. package/esm/entries/main.js.map +1 -0
  577. package/esm/types/index.d.ts +3 -0
  578. package/esm/types/index.js +2 -0
  579. package/esm/types/index.js.map +1 -0
  580. package/esm/types/profiling.d.ts +296 -0
  581. package/esm/types/profiling.js +5 -0
  582. package/esm/types/profiling.js.map +1 -0
  583. package/esm/types/sessionReplay.d.ts +934 -0
  584. package/esm/types/sessionReplay.js +5 -0
  585. package/esm/types/sessionReplay.js.map +1 -0
  586. package/esm/types/sessionReplayConstants.d.ts +71 -0
  587. package/esm/types/sessionReplayConstants.js +64 -0
  588. package/esm/types/sessionReplayConstants.js.map +1 -0
  589. package/internal/package.json +6 -0
  590. package/internal-synthetics/package.json +6 -0
  591. package/package.json +52 -0
  592. package/src/boot/isBrowserSupported.ts +14 -0
  593. package/src/boot/lazyLoadProfiler.ts +20 -0
  594. package/src/boot/lazyLoadRecorder.ts +20 -0
  595. package/src/boot/postStartStrategy.ts +176 -0
  596. package/src/boot/preStartStrategy.ts +34 -0
  597. package/src/boot/profilerApi.ts +82 -0
  598. package/src/boot/recorderApi.ts +113 -0
  599. package/src/boot/startRecording.ts +70 -0
  600. package/src/domain/deflate/deflateEncoder.ts +144 -0
  601. package/src/domain/deflate/deflateWorker.ts +152 -0
  602. package/src/domain/deflate/index.ts +9 -0
  603. package/src/domain/getSessionReplayLink.ts +40 -0
  604. package/src/domain/profiling/actionHistory.ts +65 -0
  605. package/src/domain/profiling/longTaskHistory.ts +40 -0
  606. package/src/domain/profiling/profiler.ts +366 -0
  607. package/src/domain/profiling/profilingContext.ts +39 -0
  608. package/src/domain/profiling/profilingSupported.ts +10 -0
  609. package/src/domain/profiling/test-utils/mockedTrace.ts +58 -0
  610. package/src/domain/profiling/transport/assembly.ts +63 -0
  611. package/src/domain/profiling/transport/buildProfileEventAttributes.ts +106 -0
  612. package/src/domain/profiling/types/index.ts +2 -0
  613. package/src/domain/profiling/types/profilerApi.types.ts +87 -0
  614. package/src/domain/profiling/types/rumProfiler.types.ts +62 -0
  615. package/src/domain/profiling/utils/getCustomOrDefaultViewName.ts +4 -0
  616. package/src/domain/profiling/utils/getDefaultViewName.ts +12 -0
  617. package/src/domain/profiling/utils/getNumberOfSamples.ts +17 -0
  618. package/src/domain/profiling/vitalHistory.ts +58 -0
  619. package/src/domain/record/assembly.ts +19 -0
  620. package/src/domain/record/elementsScrollPositions.ts +28 -0
  621. package/src/domain/record/eventsUtils.ts +12 -0
  622. package/src/domain/record/index.ts +12 -0
  623. package/src/domain/record/internalApi.ts +84 -0
  624. package/src/domain/record/itemIds.ts +97 -0
  625. package/src/domain/record/mutationBatch.ts +47 -0
  626. package/src/domain/record/record.ts +90 -0
  627. package/src/domain/record/record.types.ts +22 -0
  628. package/src/domain/record/recordingScope.ts +58 -0
  629. package/src/domain/record/serialization/changeEncoder.ts +89 -0
  630. package/src/domain/record/serialization/conversions/changeConverter.ts +277 -0
  631. package/src/domain/record/serialization/conversions/changeDecoder.ts +192 -0
  632. package/src/domain/record/serialization/conversions/index.ts +7 -0
  633. package/src/domain/record/serialization/conversions/mutationLog.ts +56 -0
  634. package/src/domain/record/serialization/conversions/nodeIdRemapper.ts +69 -0
  635. package/src/domain/record/serialization/conversions/renderOptions.ts +14 -0
  636. package/src/domain/record/serialization/conversions/stringTable.ts +25 -0
  637. package/src/domain/record/serialization/conversions/vDocument.ts +239 -0
  638. package/src/domain/record/serialization/conversions/vNode.ts +417 -0
  639. package/src/domain/record/serialization/conversions/vStyleSheet.ts +47 -0
  640. package/src/domain/record/serialization/experimentalFeatures.ts +15 -0
  641. package/src/domain/record/serialization/index.ts +21 -0
  642. package/src/domain/record/serialization/insertionCursor.ts +131 -0
  643. package/src/domain/record/serialization/serialization.types.ts +38 -0
  644. package/src/domain/record/serialization/serializationStats.ts +43 -0
  645. package/src/domain/record/serialization/serializationTransaction.ts +255 -0
  646. package/src/domain/record/serialization/serializationUtils.ts +103 -0
  647. package/src/domain/record/serialization/serializeAttribute.ts +55 -0
  648. package/src/domain/record/serialization/serializeAttributes.ts +194 -0
  649. package/src/domain/record/serialization/serializeFullSnapshot.ts +46 -0
  650. package/src/domain/record/serialization/serializeFullSnapshotAsChange.ts +33 -0
  651. package/src/domain/record/serialization/serializeMutations.ts +395 -0
  652. package/src/domain/record/serialization/serializeMutationsAsChange.ts +298 -0
  653. package/src/domain/record/serialization/serializeNode.ts +229 -0
  654. package/src/domain/record/serialization/serializeNodeAsChange.ts +237 -0
  655. package/src/domain/record/serialization/serializeStyleSheets.ts +36 -0
  656. package/src/domain/record/serializationVerifier.ts +208 -0
  657. package/src/domain/record/shadowRootsController.ts +62 -0
  658. package/src/domain/record/startFullSnapshots.ts +92 -0
  659. package/src/domain/record/trackers/index.ts +12 -0
  660. package/src/domain/record/trackers/trackFocus.ts +16 -0
  661. package/src/domain/record/trackers/trackFrustration.ts +39 -0
  662. package/src/domain/record/trackers/trackInput.ts +128 -0
  663. package/src/domain/record/trackers/trackMediaInteraction.ts +43 -0
  664. package/src/domain/record/trackers/trackMouseInteraction.ts +74 -0
  665. package/src/domain/record/trackers/trackMove.ts +78 -0
  666. package/src/domain/record/trackers/trackMutation.ts +74 -0
  667. package/src/domain/record/trackers/trackScroll.ts +61 -0
  668. package/src/domain/record/trackers/trackStyleSheet.ts +117 -0
  669. package/src/domain/record/trackers/trackViewEnd.ts +27 -0
  670. package/src/domain/record/trackers/trackViewportResize.ts +69 -0
  671. package/src/domain/record/trackers/tracker.types.ts +3 -0
  672. package/src/domain/record/viewports.ts +68 -0
  673. package/src/domain/replayStats.ts +61 -0
  674. package/src/domain/scriptLoadingError.ts +36 -0
  675. package/src/domain/segmentCollection/buildReplayPayload.ts +52 -0
  676. package/src/domain/segmentCollection/index.ts +4 -0
  677. package/src/domain/segmentCollection/segment.ts +79 -0
  678. package/src/domain/segmentCollection/segmentCollection.ts +200 -0
  679. package/src/domain/segmentCollection/startSegmentTelemetry.ts +91 -0
  680. package/src/domain/startRecordBridge.ts +17 -0
  681. package/src/domain/startRecorderInitTelemetry.ts +90 -0
  682. package/src/entries/internal.ts +18 -0
  683. package/src/entries/internalSynthetics.ts +24 -0
  684. package/src/entries/main.ts +96 -0
  685. package/src/types/index.ts +3 -0
  686. package/src/types/profiling.ts +298 -0
  687. package/src/types/sessionReplay.ts +990 -0
  688. package/src/types/sessionReplayConstants.ts +130 -0
@@ -0,0 +1,263 @@
1
+ import { addEventListener, clearTimeout, setTimeout, monitorError, display, getGlobalObject, clocksOrigin, clocksNow, elapsed, mockable, } from '@datadog/browser-core';
2
+ import { createFormDataTransport } from '@datadog/browser-rum-core';
3
+ import { getNumberOfSamples } from './utils/getNumberOfSamples';
4
+ import { getCustomOrDefaultViewName } from './utils/getCustomOrDefaultViewName';
5
+ import { assembleProfilingPayload } from './transport/assembly';
6
+ import { createLongTaskHistory } from './longTaskHistory';
7
+ import { createActionHistory } from './actionHistory';
8
+ import { createVitalHistory } from './vitalHistory';
9
+ export const DEFAULT_RUM_PROFILER_CONFIGURATION = {
10
+ sampleIntervalMs: 10, // Sample stack trace every 10ms
11
+ collectIntervalMs: 60000, // Collect data every minute
12
+ minProfileDurationMs: 5000, // Require at least 5 seconds of profile data to reduce noise and cost
13
+ minNumberOfSamples: 50, // Require at least 50 samples (~500 ms) to report a profile to reduce noise and cost
14
+ };
15
+ export function createRumProfiler(configuration, lifeCycle, session, profilingContextManager, createEncoder, viewHistory, profilerConfiguration = DEFAULT_RUM_PROFILER_CONFIGURATION) {
16
+ const transport = createFormDataTransport(configuration, lifeCycle, createEncoder, 6 /* DeflateEncoderStreamId.PROFILING */);
17
+ let lastViewEntry;
18
+ // Global clean-up tasks for listeners that are not specific to a profiler instance (eg. visibility change, before unload)
19
+ const globalCleanupTasks = [];
20
+ const longTaskHistory = mockable(createLongTaskHistory)(lifeCycle);
21
+ const actionHistory = mockable(createActionHistory)(lifeCycle);
22
+ const vitalHistory = mockable(createVitalHistory)(lifeCycle);
23
+ let instance = { state: 'stopped', stateReason: 'initializing' };
24
+ // Stops the profiler when session expires
25
+ lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_EXPIRED */, () => {
26
+ stopProfiling('session-expired');
27
+ });
28
+ // Start the profiler again when session is renewed
29
+ lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, () => {
30
+ if (instance.state === 'stopped' && instance.stateReason === 'session-expired') {
31
+ start();
32
+ }
33
+ });
34
+ // Public API to start the profiler.
35
+ function start() {
36
+ if (instance.state === 'running') {
37
+ return;
38
+ }
39
+ const viewEntry = viewHistory.findView();
40
+ // Add initial view
41
+ // Note: `viewEntry.name` is only filled when users use manual view creation via `startView` method.
42
+ lastViewEntry = viewEntry
43
+ ? {
44
+ startClocks: viewEntry.startClocks,
45
+ viewId: viewEntry.id,
46
+ viewName: getCustomOrDefaultViewName(viewEntry.name, document.location.pathname),
47
+ }
48
+ : undefined;
49
+ // Add global clean-up tasks for listeners that are not specific to a profiler instance (eg. visibility change, before unload)
50
+ globalCleanupTasks.push(addEventListener(configuration, window, "visibilitychange" /* DOM_EVENT.VISIBILITY_CHANGE */, handleVisibilityChange).stop, addEventListener(configuration, window, "beforeunload" /* DOM_EVENT.BEFORE_UNLOAD */, handleBeforeUnload).stop);
51
+ // Start profiler instance
52
+ startNextProfilerInstance();
53
+ }
54
+ // Public API to manually stop the profiler.
55
+ function stop() {
56
+ stopProfiling('stopped-by-user');
57
+ }
58
+ function stopProfiling(reason) {
59
+ // Stop current profiler instance (data collection happens async in background)
60
+ stopProfilerInstance(reason);
61
+ // Cleanup global listeners and reset the array to prevent accumulation across start/stop cycles
62
+ globalCleanupTasks.forEach((task) => task());
63
+ globalCleanupTasks.length = 0;
64
+ // Update Profiling status once the Profiler has been stopped.
65
+ profilingContextManager.set({ status: 'stopped', error_reason: undefined });
66
+ }
67
+ /**
68
+ * Whenever a new Profiler instance is started, we need to add event listeners to surroundings (RUM Events, Long Tasks, etc) to enrich the Profiler data.
69
+ * If the instance is already running, we can keep the same event listeners.
70
+ */
71
+ function addEventListeners(existingInstance) {
72
+ if (existingInstance.state === 'running') {
73
+ // Instance is already running, so we can keep same event listeners.
74
+ return {
75
+ cleanupTasks: existingInstance.cleanupTasks,
76
+ };
77
+ }
78
+ // Store clean-up tasks for this instance (tasks to be executed when the Profiler is stopped or paused.)
79
+ const cleanupTasks = [];
80
+ // Whenever the View is updated, we add a views entry to the profiler instance.
81
+ const viewUpdatedSubscription = lifeCycle.subscribe(2 /* LifeCycleEventType.VIEW_CREATED */, (view) => {
82
+ const viewEntry = {
83
+ viewId: view.id,
84
+ // Note: `viewName` is only filled when users use manual view creation via `startView` method.
85
+ viewName: getCustomOrDefaultViewName(view.name, document.location.pathname),
86
+ startClocks: view.startClocks,
87
+ };
88
+ collectViewEntry(viewEntry);
89
+ // Update last view entry
90
+ lastViewEntry = viewEntry;
91
+ });
92
+ cleanupTasks.push(viewUpdatedSubscription.unsubscribe);
93
+ return {
94
+ cleanupTasks,
95
+ };
96
+ }
97
+ function startNextProfilerInstance() {
98
+ // These APIs might be unavailable in some browsers
99
+ const globalThisProfiler = getGlobalObject().Profiler;
100
+ if (!globalThisProfiler) {
101
+ profilingContextManager.set({ status: 'error', error_reason: 'not-supported-by-browser' });
102
+ throw new Error('RUM Profiler is not supported in this browser.');
103
+ }
104
+ // Collect data from previous running instance (fire-and-forget)
105
+ if (instance.state === 'running') {
106
+ collectProfilerInstance(instance);
107
+ }
108
+ const { cleanupTasks } = addEventListeners(instance);
109
+ let profiler;
110
+ try {
111
+ // We have to create new Profiler each time we start a new instance
112
+ profiler = new globalThisProfiler({
113
+ sampleInterval: profilerConfiguration.sampleIntervalMs,
114
+ // Keep buffer size at 1.5 times of minimum required to collect data for a profiling instance
115
+ maxBufferSize: Math.round((profilerConfiguration.collectIntervalMs * 1.5) / profilerConfiguration.sampleIntervalMs),
116
+ });
117
+ }
118
+ catch (e) {
119
+ if (e instanceof Error && e.message.includes('disabled by Document Policy')) {
120
+ // Missing Response Header (`js-profiling`) that is required to enable the profiler.
121
+ // We should suggest the user to enable the Response Header in their server configuration.
122
+ display.warn('[DD_RUM] Profiler startup failed. Ensure your server includes the `Document-Policy: js-profiling` response header when serving HTML pages.', e);
123
+ profilingContextManager.set({ status: 'error', error_reason: 'missing-document-policy-header' });
124
+ }
125
+ else {
126
+ profilingContextManager.set({ status: 'error', error_reason: 'unexpected-exception' });
127
+ }
128
+ return;
129
+ }
130
+ profilingContextManager.set({ status: 'running', error_reason: undefined });
131
+ // Kick-off the new instance
132
+ instance = {
133
+ state: 'running',
134
+ startClocks: clocksNow(),
135
+ profiler,
136
+ timeoutId: setTimeout(startNextProfilerInstance, profilerConfiguration.collectIntervalMs),
137
+ views: [],
138
+ cleanupTasks,
139
+ longTasks: [],
140
+ };
141
+ // Add last view entry
142
+ collectViewEntry(lastViewEntry);
143
+ // Add event handler case we overflow the buffer
144
+ profiler.addEventListener('samplebufferfull', handleSampleBufferFull);
145
+ }
146
+ function collectProfilerInstance(runningInstance) {
147
+ // Cleanup instance
148
+ clearTimeout(runningInstance.timeoutId);
149
+ runningInstance.profiler.removeEventListener('samplebufferfull', handleSampleBufferFull);
150
+ // Store instance data snapshot in local variables to use in async callback
151
+ const { startClocks, views } = runningInstance;
152
+ // Stop current profiler to get trace
153
+ runningInstance.profiler
154
+ .stop()
155
+ .then((trace) => {
156
+ const endClocks = clocksNow();
157
+ const duration = elapsed(startClocks.relative, endClocks.relative);
158
+ const longTasks = longTaskHistory.findAll(startClocks.relative, duration);
159
+ const actions = actionHistory.findAll(startClocks.relative, duration);
160
+ const vitals = vitalHistory.findAll(startClocks.relative, duration);
161
+ const isBelowDurationThreshold = duration < profilerConfiguration.minProfileDurationMs;
162
+ const isBelowSampleThreshold = getNumberOfSamples(trace.samples) < profilerConfiguration.minNumberOfSamples;
163
+ if (longTasks.length === 0 && (isBelowDurationThreshold || isBelowSampleThreshold)) {
164
+ // Skip very short profiles to reduce noise and cost, but keep them if they contain long tasks.
165
+ return;
166
+ }
167
+ handleProfilerTrace(
168
+ // Enrich trace with time and instance data
169
+ Object.assign(trace, {
170
+ startClocks,
171
+ endClocks,
172
+ clocksOrigin: clocksOrigin(),
173
+ longTasks,
174
+ actions,
175
+ vitals,
176
+ views,
177
+ sampleInterval: profilerConfiguration.sampleIntervalMs,
178
+ }));
179
+ })
180
+ .catch(monitorError);
181
+ }
182
+ function stopProfilerInstance(stateReason) {
183
+ if (instance.state !== 'running') {
184
+ if (
185
+ // If paused, profiler data was already collected during pause, just update state
186
+ instance.state === 'paused' ||
187
+ // Update stateReason when already stopped and the user explicitly stops the profiler,
188
+ // so that SESSION_RENEWED does not override the user's intent.
189
+ (instance.state === 'stopped' && stateReason === 'stopped-by-user')) {
190
+ instance = { state: 'stopped', stateReason };
191
+ }
192
+ return;
193
+ }
194
+ // Capture the running instance before changing state
195
+ const runningInstance = instance;
196
+ // Update state synchronously so SESSION_RENEWED check works immediately
197
+ instance = { state: 'stopped', stateReason };
198
+ // Cleanup instance-specific tasks (e.g., view listener)
199
+ runningInstance.cleanupTasks.forEach((cleanupTask) => cleanupTask());
200
+ // Collect and send profile data in background - doesn't block state transitions
201
+ collectProfilerInstance(runningInstance);
202
+ }
203
+ function pauseProfilerInstance() {
204
+ if (instance.state !== 'running') {
205
+ return;
206
+ }
207
+ // Capture the running instance before changing state
208
+ const runningInstance = instance;
209
+ // Update state synchronously
210
+ instance = { state: 'paused' };
211
+ // Cleanup instance-specific tasks
212
+ runningInstance.cleanupTasks.forEach((cleanupTask) => cleanupTask());
213
+ // Collect and send profile data in background
214
+ collectProfilerInstance(runningInstance);
215
+ }
216
+ function collectViewEntry(viewEntry) {
217
+ if (instance.state !== 'running' || !viewEntry) {
218
+ return;
219
+ }
220
+ // Add entry to views
221
+ instance.views.push(viewEntry);
222
+ }
223
+ function handleProfilerTrace(trace) {
224
+ var _a;
225
+ // Find current session to assign it to the Profile.
226
+ const sessionId = (_a = session.findTrackedSession()) === null || _a === void 0 ? void 0 : _a.id;
227
+ const payload = assembleProfilingPayload(trace, configuration, sessionId);
228
+ void transport.send(payload);
229
+ }
230
+ function handleSampleBufferFull() {
231
+ startNextProfilerInstance();
232
+ }
233
+ function handleVisibilityChange() {
234
+ if (document.visibilityState === 'hidden' && instance.state === 'running') {
235
+ // Pause when tab is hidden. We use paused state to distinguish between
236
+ // paused by visibility change and stopped by user.
237
+ // If profiler is paused by the visibility change, we should resume when
238
+ // tab becomes visible again. That's not the case when user stops the profiler.
239
+ pauseProfilerInstance();
240
+ }
241
+ else if (document.visibilityState === 'visible' && instance.state === 'paused') {
242
+ // Resume when tab becomes visible again
243
+ startNextProfilerInstance();
244
+ }
245
+ }
246
+ function handleBeforeUnload() {
247
+ // `unload` can in some cases be triggered while the page is still active (link to a different protocol like mailto:).
248
+ // We can immediately flush (by starting a new profiler instance) to make sure we receive the data, and at the same time keep the profiler active.
249
+ // In case of the regular unload, the profiler will be shut down anyway.
250
+ startNextProfilerInstance();
251
+ }
252
+ function isStopped() {
253
+ return instance.state === 'stopped';
254
+ }
255
+ function isRunning() {
256
+ return instance.state === 'running';
257
+ }
258
+ function isPaused() {
259
+ return instance.state === 'paused';
260
+ }
261
+ return { start, stop, isStopped, isRunning, isPaused };
262
+ }
263
+ //# sourceMappingURL=profiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiler.js","sourceRoot":"","sources":["../../../src/domain/profiling/profiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Hooks, ProfilingInternalContextSchema } from '@datadog/browser-rum-core';
2
+ export interface ProfilingContextManager {
3
+ set: (next: ProfilingInternalContextSchema) => void;
4
+ get: () => ProfilingInternalContextSchema | undefined;
5
+ }
6
+ export declare function startProfilingContext(hooks: Hooks): ProfilingContextManager;
@@ -0,0 +1,28 @@
1
+ import { SKIPPED } from '@datadog/browser-core';
2
+ import { RumEventType } from '@datadog/browser-rum-core';
3
+ export function startProfilingContext(hooks) {
4
+ let currentContext = {
5
+ status: 'starting',
6
+ };
7
+ hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => {
8
+ if (eventType !== RumEventType.VIEW &&
9
+ eventType !== RumEventType.LONG_TASK &&
10
+ eventType !== RumEventType.ACTION &&
11
+ eventType !== RumEventType.VITAL) {
12
+ return SKIPPED;
13
+ }
14
+ return {
15
+ type: eventType,
16
+ _dd: {
17
+ profiling: currentContext,
18
+ },
19
+ };
20
+ });
21
+ return {
22
+ get: () => currentContext,
23
+ set: (newContext) => {
24
+ currentContext = newContext;
25
+ },
26
+ };
27
+ }
28
+ //# sourceMappingURL=profilingContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profilingContext.js","sourceRoot":"","sources":["../../../src/domain/profiling/profilingContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAOxD,MAAM,UAAU,qBAAqB,CAAC,KAAY;IAChD,IAAI,cAAc,GAAmC;QACnD,MAAM,EAAE,UAAU;KACnB,CAAA;IAED,KAAK,CAAC,QAAQ,6BAAqB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;QACnD,IACE,SAAS,KAAK,YAAY,CAAC,IAAI;YAC/B,SAAS,KAAK,YAAY,CAAC,SAAS;YACpC,SAAS,KAAK,YAAY,CAAC,MAAM;YACjC,SAAS,KAAK,YAAY,CAAC,KAAK,EAChC,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,SAAS;YACf,GAAG,EAAE;gBACH,SAAS,EAAE,cAAc;aAC1B;SACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,cAAc;QACzB,GAAG,EAAE,CAAC,UAA0C,EAAE,EAAE;YAClD,cAAc,GAAG,UAAU,CAAA;QAC7B,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function isProfilingSupported(): boolean;
@@ -0,0 +1,8 @@
1
+ import { getGlobalObject } from '@datadog/browser-core';
2
+ export function isProfilingSupported() {
3
+ const globalThis = getGlobalObject();
4
+ // This API might be unavailable in some browsers
5
+ const globalThisProfiler = globalThis.Profiler;
6
+ return globalThisProfiler !== undefined;
7
+ }
8
+ //# sourceMappingURL=profilingSupported.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profilingSupported.js","sourceRoot":"","sources":["../../../src/domain/profiling/profilingSupported.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,MAAM,UAAU,oBAAoB;IAClC,MAAM,UAAU,GAAG,eAAe,EAAE,CAAA;IAEpC,iDAAiD;IACjD,MAAM,kBAAkB,GAA0B,UAAkB,CAAC,QAAQ,CAAA;IAC7E,OAAO,kBAAkB,KAAK,SAAS,CAAA;AACzC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ProfilerTrace } from '../types';
2
+ export declare const mockedEmptyTrace: ProfilerTrace;
3
+ export declare const mockedTrace: ProfilerTrace;
@@ -0,0 +1,54 @@
1
+ const generateFiftyRandomSamples = () => {
2
+ const samples = [];
3
+ for (let i = 0; i < 50; i++) {
4
+ samples.push({
5
+ timestamp: i,
6
+ stackId: i % 3,
7
+ });
8
+ }
9
+ return samples;
10
+ };
11
+ // eslint-disable-next-line local-rules/disallow-side-effects
12
+ const randomSamples = generateFiftyRandomSamples();
13
+ export const mockedEmptyTrace = {
14
+ resources: [],
15
+ frames: [],
16
+ stacks: [],
17
+ samples: [],
18
+ };
19
+ export const mockedTrace = {
20
+ resources: ['resource1', 'resource2', 'resource3'],
21
+ frames: [
22
+ {
23
+ name: 'frame-0',
24
+ line: 1,
25
+ column: 1,
26
+ resourceId: 0,
27
+ },
28
+ {
29
+ name: 'frame-1',
30
+ line: 2,
31
+ column: 2,
32
+ resourceId: 1,
33
+ },
34
+ {
35
+ name: 'frame-2',
36
+ line: 3,
37
+ column: 3,
38
+ resourceId: 2,
39
+ },
40
+ ],
41
+ stacks: [
42
+ {
43
+ frameId: 0,
44
+ },
45
+ {
46
+ frameId: 1,
47
+ },
48
+ {
49
+ frameId: 2,
50
+ },
51
+ ],
52
+ samples: randomSamples,
53
+ };
54
+ //# sourceMappingURL=mockedTrace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockedTrace.js","sourceRoot":"","sources":["../../../../src/domain/profiling/test-utils/mockedTrace.ts"],"names":[],"mappings":"AAEA,MAAM,0BAA0B,GAAG,GAAG,EAAE;IACtC,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC,GAAG,CAAC;SACf,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,6DAA6D;AAC7D,MAAM,aAAa,GAAG,0BAA0B,EAAE,CAAA;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;CACZ,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;IAClD,MAAM,EAAE;QACN;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,CAAC;SACd;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,CAAC;SACd;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,CAAC;SACd;KACF;IACD,MAAM,EAAE;QACN;YACE,OAAO,EAAE,CAAC;SACX;QACD;YACE,OAAO,EAAE,CAAC;SACX;QACD;YACE,OAAO,EAAE,CAAC;SACX;KACF;IACD,OAAO,EAAE,aAAa;CACvB,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { RumConfiguration } from '@datadog/browser-rum-core';
2
+ import type { BrowserProfileEvent, BrowserProfilerTrace } from '../../../types';
3
+ export interface ProfileEventPayload {
4
+ event: BrowserProfileEvent;
5
+ 'wall-time.json': BrowserProfilerTrace;
6
+ }
7
+ export declare function assembleProfilingPayload(profilerTrace: BrowserProfilerTrace, configuration: RumConfiguration, sessionId: string | undefined): ProfileEventPayload;
@@ -0,0 +1,42 @@
1
+ import { buildTags, currentDrift } from '@datadog/browser-core';
2
+ import { buildProfileEventAttributes } from './buildProfileEventAttributes';
3
+ export function assembleProfilingPayload(profilerTrace, configuration, sessionId) {
4
+ const event = buildProfileEvent(profilerTrace, configuration, sessionId);
5
+ return {
6
+ event,
7
+ 'wall-time.json': profilerTrace,
8
+ };
9
+ }
10
+ function buildProfileEvent(profilerTrace, configuration, sessionId) {
11
+ const tags = buildTags(configuration); // TODO: get that from the tagContext hook
12
+ const profileAttributes = buildProfileEventAttributes(profilerTrace, configuration.applicationId, sessionId);
13
+ const profileEventTags = buildProfileEventTags(tags);
14
+ const profileEvent = {
15
+ ...profileAttributes,
16
+ attachments: ['wall-time.json'],
17
+ start: new Date(profilerTrace.startClocks.timeStamp).toISOString(),
18
+ end: new Date(profilerTrace.endClocks.timeStamp).toISOString(),
19
+ family: 'chrome',
20
+ runtime: 'chrome',
21
+ format: 'json',
22
+ version: 4, // Ingestion event version (not the version application tag)
23
+ tags_profiler: profileEventTags.join(','),
24
+ _dd: {
25
+ clock_drift: currentDrift(),
26
+ },
27
+ };
28
+ return profileEvent;
29
+ }
30
+ /**
31
+ * Builds tags for the Profile Event.
32
+ *
33
+ * @param tags - RUM tags
34
+ * @returns Combined tags for the Profile Event.
35
+ */
36
+ function buildProfileEventTags(tags) {
37
+ // Tags already contains the common tags for all events. (service, env, version, etc.)
38
+ // Here we are adding some specific-to-profiling tags.
39
+ const profileEventTags = tags.concat(['language:javascript', 'runtime:chrome', 'family:chrome', 'host:browser']);
40
+ return profileEventTags;
41
+ }
42
+ //# sourceMappingURL=assembly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assembly.js","sourceRoot":"","sources":["../../../../src/domain/profiling/transport/assembly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAG/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAO3E,MAAM,UAAU,wBAAwB,CACtC,aAAmC,EACnC,aAA+B,EAC/B,SAA6B;IAE7B,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;IAExE,OAAO;QACL,KAAK;QACL,gBAAgB,EAAE,aAAa;KAChC,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,aAAmC,EACnC,aAA+B,EAC/B,SAA6B;IAE7B,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,CAAA,CAAC,0CAA0C;IAChF,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,aAAa,EAAE,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IAC5G,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;IAEpD,MAAM,YAAY,GAAiC;QACjD,GAAG,iBAAiB;QACpB,WAAW,EAAE,CAAC,gBAAgB,CAAC;QAC/B,KAAK,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QAClE,GAAG,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QAC9D,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,CAAC,EAAE,4DAA4D;QACxE,aAAa,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;QACzC,GAAG,EAAE;YACH,WAAW,EAAE,YAAY,EAAE;SAC5B;KACF,CAAA;IAED,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,IAAc;IAC3C,sFAAsF;IACtF,sDAAsD;IACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAA;IAEhH,OAAO,gBAAgB,CAAA;AACzB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { BrowserProfilerTrace } from '../../../types';
2
+ export interface ProfileEventAttributes {
3
+ application: {
4
+ id: string;
5
+ };
6
+ session?: {
7
+ id: string;
8
+ };
9
+ view?: {
10
+ id: string[];
11
+ name: string[];
12
+ };
13
+ long_task?: {
14
+ id: string[];
15
+ };
16
+ action?: {
17
+ id: string[];
18
+ label: string[];
19
+ };
20
+ vital?: {
21
+ id: string[];
22
+ label: string[];
23
+ };
24
+ }
25
+ /**
26
+ * Builds attributes for the Profile Event.
27
+ *
28
+ * @param profilerTrace - Profiler trace
29
+ * @param applicationId - application id.
30
+ * @param sessionId - session id.
31
+ * @returns Additional attributes.
32
+ */
33
+ export declare function buildProfileEventAttributes(profilerTrace: BrowserProfilerTrace, applicationId: string, sessionId: string | undefined): ProfileEventAttributes;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Builds attributes for the Profile Event.
3
+ *
4
+ * @param profilerTrace - Profiler trace
5
+ * @param applicationId - application id.
6
+ * @param sessionId - session id.
7
+ * @returns Additional attributes.
8
+ */
9
+ export function buildProfileEventAttributes(profilerTrace, applicationId, sessionId) {
10
+ var _a, _b;
11
+ // Extract view ids and names from the profiler trace and add them as attributes of the profile event.
12
+ // This will be used to filter the profiles by @view.id and/or @view.name.
13
+ const { ids, names } = extractViewIdsAndNames(profilerTrace.views);
14
+ const longTaskIds = profilerTrace.longTasks.map((longTask) => longTask.id).filter((id) => id !== undefined);
15
+ const actionIds = (_b = (_a = profilerTrace.actions) === null || _a === void 0 ? void 0 : _a.map((longTask) => longTask.id).filter((id) => id !== undefined)) !== null && _b !== void 0 ? _b : [];
16
+ const { ids: vitalIds, labels: vitalLabels } = extractVitalIdsAndLabels(profilerTrace.vitals);
17
+ const attributes = { application: { id: applicationId } };
18
+ if (sessionId) {
19
+ attributes.session = { id: sessionId };
20
+ }
21
+ if (ids.length) {
22
+ attributes.view = { id: ids, name: names };
23
+ }
24
+ if (longTaskIds.length) {
25
+ attributes.long_task = { id: longTaskIds };
26
+ }
27
+ if (actionIds.length) {
28
+ attributes.action = { id: actionIds, label: [] };
29
+ }
30
+ if (vitalIds.length) {
31
+ attributes.vital = { id: vitalIds, label: vitalLabels };
32
+ }
33
+ return attributes;
34
+ }
35
+ function extractViewIdsAndNames(views) {
36
+ const result = { ids: [], names: [] };
37
+ for (const view of views) {
38
+ result.ids.push(view.viewId);
39
+ if (view.viewName) {
40
+ result.names.push(view.viewName);
41
+ }
42
+ }
43
+ // Remove duplicates
44
+ result.names = Array.from(new Set(result.names));
45
+ return result;
46
+ }
47
+ function extractVitalIdsAndLabels(vitals) {
48
+ const result = { ids: [], labels: [] };
49
+ if (!vitals) {
50
+ return result;
51
+ }
52
+ for (const vital of vitals) {
53
+ result.ids.push(vital.id);
54
+ result.labels.push(vital.label);
55
+ }
56
+ // Remove duplicates
57
+ result.labels = Array.from(new Set(result.labels));
58
+ return result;
59
+ }
60
+ //# sourceMappingURL=buildProfileEventAttributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildProfileEventAttributes.js","sourceRoot":"","sources":["../../../../src/domain/profiling/transport/buildProfileEventAttributes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type * from './profilerApi.types';
2
+ export type * from './rumProfiler.types';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domain/profiling/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ export interface ProfilerFrame {
2
+ /** A function instance name. */
3
+ readonly name: string;
4
+ /** Index in the trace.resources array. */
5
+ readonly resourceId?: number;
6
+ /** 1-based index of the line. */
7
+ readonly line?: number;
8
+ /** 1-based index of the column. */
9
+ readonly column?: number;
10
+ }
11
+ export interface ProfilerStack {
12
+ /** Index in the trace.stacks array. */
13
+ readonly parentId?: number;
14
+ /** Index in the trace.frames array. */
15
+ readonly frameId: number;
16
+ }
17
+ export interface ProfilerSample {
18
+ /** High resolution time relative to the profiling session's time origin. */
19
+ readonly timestamp: number;
20
+ /** Index in the trace.stacks array. */
21
+ readonly stackId?: number;
22
+ }
23
+ export type ProfilerResource = string;
24
+ export interface ProfilerTrace {
25
+ /** An array of profiler resources. */
26
+ readonly resources: ProfilerResource[];
27
+ /** An array of profiler frames. */
28
+ readonly frames: ProfilerFrame[];
29
+ /** An array of profiler stacks. */
30
+ readonly stacks: ProfilerStack[];
31
+ /** An array of profiler samples. */
32
+ readonly samples: ProfilerSample[];
33
+ }
34
+ export interface ProfilerInitOptions {
35
+ /** Sample interval in ms. */
36
+ readonly sampleInterval: number;
37
+ /** Max buffer size in number of samples. */
38
+ readonly maxBufferSize: number;
39
+ }
40
+ export interface Profiler extends EventTarget {
41
+ /** Sample interval in ms. */
42
+ readonly sampleInterval: number;
43
+ /** True if profiler is stopped. */
44
+ readonly stopped: boolean;
45
+ new (options: ProfilerInitOptions): Profiler;
46
+ stop(): Promise<ProfilerTrace>;
47
+ addEventListener<K extends keyof ProfilerEventMap>(type: K, listener: (this: typeof globalThis, ev: ProfilerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
48
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
49
+ removeEventListener<K extends keyof ProfilerEventMap>(type: K, listener: (this: typeof globalThis, ev: ProfilerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
50
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
51
+ }
52
+ interface ProfilerEventMap {
53
+ samplebufferfull: SampleBufferFullEvent;
54
+ }
55
+ export interface SampleBufferFullEvent extends Event {
56
+ readonly target: Profiler;
57
+ }
58
+ export {};
@@ -0,0 +1,4 @@
1
+ // Define types for the new Profiler API
2
+ // https://wicg.github.io/js-self-profiling/
3
+ export {};
4
+ //# sourceMappingURL=profilerApi.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profilerApi.types.js","sourceRoot":"","sources":["../../../../src/domain/profiling/types/profilerApi.types.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,4CAA4C"}