@kubesense/kubesense-browser-rum 1.8.0 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +23 -0
- package/bundle/chunks/kubesenseProfiler-4b8cfd8f889074788478-kubesense-rum.js +1 -0
- package/bundle/chunks/kubesenseRecorder-db948e96649585a2b3e9-kubesense-rum.js +1 -0
- package/bundle/kubesense-rum.js +1 -1
- package/cjs/boot/kubesenseRecorder.d.ts +6 -0
- package/cjs/boot/kubesenseRecorder.js +75 -0
- package/cjs/boot/kubesenseRecorder.js.map +1 -0
- package/cjs/boot/lazyLoadProfiler.d.ts +3 -4
- package/cjs/boot/lazyLoadProfiler.js +18 -50
- package/cjs/boot/lazyLoadProfiler.js.map +1 -1
- package/cjs/boot/lazyLoadRecorder.d.ts +3 -4
- package/cjs/boot/lazyLoadRecorder.js +18 -50
- package/cjs/boot/lazyLoadRecorder.js.map +1 -1
- package/cjs/boot/postStartStrategy.d.ts +4 -4
- package/cjs/boot/postStartStrategy.js +89 -110
- package/cjs/boot/postStartStrategy.js.map +1 -1
- package/cjs/boot/preStartStrategy.js +21 -21
- package/cjs/boot/preStartStrategy.js.map +1 -1
- package/cjs/boot/profilerApi.js +44 -50
- package/cjs/boot/profilerApi.js.map +1 -1
- package/cjs/boot/recorderApi.d.ts +1 -3
- package/cjs/boot/recorderApi.js +41 -71
- package/cjs/boot/recorderApi.js.map +1 -1
- package/cjs/domain/deflate/deflateEncoder.d.ts +1 -2
- package/cjs/domain/deflate/deflateEncoder.js +94 -108
- package/cjs/domain/deflate/deflateEncoder.js.map +1 -1
- package/cjs/domain/deflate/deflateWorker.d.ts +3 -4
- package/cjs/domain/deflate/deflateWorker.js +79 -90
- package/cjs/domain/deflate/deflateWorker.js.map +1 -1
- package/cjs/domain/deflate/index.d.ts +1 -1
- package/cjs/domain/deflate/index.js +5 -10
- package/cjs/domain/getSessionReplayLink.d.ts +3 -2
- package/cjs/domain/getSessionReplayLink.js +17 -31
- package/cjs/domain/getSessionReplayLink.js.map +1 -1
- package/cjs/domain/profiling/actionHistory.d.ts +10 -0
- package/cjs/domain/profiling/actionHistory.js +37 -0
- package/cjs/domain/profiling/actionHistory.js.map +1 -0
- package/cjs/domain/profiling/kubesenseProfiler.d.ts +6 -0
- package/cjs/domain/profiling/kubesenseProfiler.js +243 -0
- package/cjs/domain/profiling/kubesenseProfiler.js.map +1 -0
- package/cjs/domain/profiling/longTaskHistory.d.ts +11 -0
- package/cjs/domain/profiling/longTaskHistory.js +22 -0
- package/cjs/domain/profiling/longTaskHistory.js.map +1 -0
- package/cjs/domain/profiling/profilerDebugIds.d.ts +2 -0
- package/cjs/domain/profiling/profilerDebugIds.js +18 -0
- package/cjs/domain/profiling/profilerDebugIds.js.map +1 -0
- package/cjs/domain/profiling/profilingContext.js +20 -25
- package/cjs/domain/profiling/profilingContext.js.map +1 -1
- package/cjs/domain/profiling/profilingSupported.js +6 -8
- package/cjs/domain/profiling/profilingSupported.js.map +1 -1
- package/cjs/domain/profiling/quotaCheck.d.ts +9 -0
- package/cjs/domain/profiling/quotaCheck.js +66 -0
- package/cjs/domain/profiling/quotaCheck.js.map +1 -0
- package/cjs/domain/profiling/test-utils/mockedTrace.d.ts +1 -1
- package/cjs/domain/profiling/transport/buildProfileEvent.d.ts +38 -0
- package/cjs/domain/profiling/transport/buildProfileEvent.js +91 -0
- package/cjs/domain/profiling/transport/buildProfileEvent.js.map +1 -0
- package/cjs/domain/profiling/transport/formDataEmitter.d.ts +5 -0
- package/cjs/domain/profiling/transport/formDataEmitter.js +17 -0
- package/cjs/domain/profiling/transport/formDataEmitter.js.map +1 -0
- package/cjs/domain/profiling/transport/profilingBridge.d.ts +2 -0
- package/cjs/domain/profiling/transport/profilingBridge.js +12 -0
- package/cjs/domain/profiling/transport/profilingBridge.js.map +1 -0
- package/cjs/domain/profiling/{types/rumProfiler.types.d.ts → types.d.ts} +13 -24
- package/cjs/domain/profiling/utils/getCustomOrDefaultViewName.js +5 -5
- package/cjs/domain/profiling/utils/getCustomOrDefaultViewName.js.map +1 -1
- package/cjs/domain/profiling/utils/getDefaultViewName.js +6 -10
- package/cjs/domain/profiling/utils/getDefaultViewName.js.map +1 -1
- package/cjs/domain/profiling/vitalHistory.d.ts +13 -0
- package/cjs/domain/profiling/vitalHistory.js +56 -0
- package/cjs/domain/profiling/vitalHistory.js.map +1 -0
- package/cjs/domain/record/assembly.d.ts +2 -1
- package/cjs/domain/record/assembly.js +15 -14
- package/cjs/domain/record/assembly.js.map +1 -1
- package/cjs/domain/record/canvas/canvasHash.d.ts +2 -0
- package/cjs/domain/record/canvas/canvasHash.js +33 -0
- package/cjs/domain/record/canvas/canvasHash.js.map +1 -0
- package/cjs/domain/record/canvas/canvasManager.d.ts +42 -0
- package/cjs/domain/record/canvas/canvasManager.js +99 -0
- package/cjs/domain/record/canvas/canvasManager.js.map +1 -0
- package/cjs/domain/record/canvas/canvasSnapshot.d.ts +8 -0
- package/cjs/domain/record/canvas/canvasSnapshot.js +40 -0
- package/cjs/domain/record/canvas/canvasSnapshot.js.map +1 -0
- package/cjs/domain/record/canvas/canvasUtils.d.ts +2 -0
- package/cjs/domain/record/canvas/canvasUtils.js +14 -0
- package/cjs/domain/record/canvas/canvasUtils.js.map +1 -0
- package/cjs/domain/record/elementsScrollPositions.js +17 -20
- package/cjs/domain/record/elementsScrollPositions.js.map +1 -1
- package/cjs/domain/record/encoding/changeDecoder.d.ts +39 -0
- package/cjs/domain/record/encoding/changeDecoder.js +152 -0
- package/cjs/domain/record/encoding/changeDecoder.js.map +1 -0
- package/cjs/domain/record/encoding/changeEncoder.d.ts +39 -0
- package/cjs/domain/record/encoding/changeEncoder.js +146 -0
- package/cjs/domain/record/encoding/changeEncoder.js.map +1 -0
- package/cjs/domain/record/encoding/index.d.ts +10 -0
- package/cjs/domain/record/encoding/itemIds.d.ts +32 -0
- package/cjs/domain/record/encoding/itemIds.js +49 -0
- package/cjs/domain/record/encoding/itemIds.js.map +1 -0
- package/cjs/domain/record/encoding/roles.d.ts +52 -0
- package/cjs/domain/record/encoding/roles.js +66 -0
- package/cjs/domain/record/encoding/roles.js.map +1 -0
- package/cjs/domain/record/encoding/stringIds.d.ts +15 -0
- package/cjs/domain/record/encoding/stringIds.js +47 -0
- package/cjs/domain/record/encoding/stringIds.js.map +1 -0
- package/cjs/domain/record/encoding/stringTable.d.ts +15 -0
- package/cjs/domain/record/encoding/stringTable.js +38 -0
- package/cjs/domain/record/encoding/stringTable.js.map +1 -0
- package/cjs/domain/record/eventsUtils.js +9 -10
- package/cjs/domain/record/eventsUtils.js.map +1 -1
- package/cjs/domain/record/index.d.ts +5 -2
- package/cjs/domain/record/index.js +13 -17
- package/cjs/domain/record/internalApi.d.ts +6 -6
- package/cjs/domain/record/internalApi.js +55 -49
- package/cjs/domain/record/internalApi.js.map +1 -1
- package/cjs/domain/record/mutationBatch.d.ts +1 -0
- package/cjs/domain/record/mutationBatch.js +38 -39
- package/cjs/domain/record/mutationBatch.js.map +1 -1
- package/cjs/domain/record/record.d.ts +7 -1
- package/cjs/domain/record/record.js +76 -87
- package/cjs/domain/record/record.js.map +1 -1
- package/cjs/domain/record/record.types.d.ts +1 -0
- package/cjs/domain/record/recordingScope.d.ts +7 -3
- package/cjs/domain/record/recordingScope.js +25 -11
- package/cjs/domain/record/recordingScope.js.map +1 -1
- package/cjs/domain/record/serialization/index.d.ts +4 -2
- package/cjs/domain/record/serialization/index.js +16 -18
- package/cjs/domain/record/serialization/insertionCursor.d.ts +57 -0
- package/cjs/domain/record/serialization/insertionCursor.js +55 -0
- package/cjs/domain/record/serialization/insertionCursor.js.map +1 -0
- package/cjs/domain/record/serialization/serialization.types.d.ts +0 -6
- package/cjs/domain/record/serialization/serializationStats.js +26 -25
- package/cjs/domain/record/serialization/serializationStats.js.map +1 -1
- package/cjs/domain/record/serialization/serializationTransaction.d.ts +44 -22
- package/cjs/domain/record/serialization/serializationTransaction.js +90 -36
- package/cjs/domain/record/serialization/serializationTransaction.js.map +1 -1
- package/cjs/domain/record/serialization/serializationUtils.d.ts +0 -1
- package/cjs/domain/record/serialization/serializationUtils.js +46 -75
- package/cjs/domain/record/serialization/serializationUtils.js.map +1 -1
- package/cjs/domain/record/serialization/serializeAttribute.js +24 -39
- package/cjs/domain/record/serialization/serializeAttribute.js.map +1 -1
- package/cjs/domain/record/serialization/serializeAttributes.d.ts +2 -2
- package/cjs/domain/record/serialization/serializeAttributes.js +100 -152
- package/cjs/domain/record/serialization/serializeAttributes.js.map +1 -1
- package/cjs/domain/record/serialization/serializeFullSnapshot.d.ts +5 -0
- package/cjs/domain/record/serialization/serializeFullSnapshot.js +14 -0
- package/cjs/domain/record/serialization/serializeFullSnapshot.js.map +1 -0
- package/cjs/domain/record/serialization/serializeMutations.d.ts +5 -0
- package/cjs/domain/record/serialization/serializeMutations.js +152 -0
- package/cjs/domain/record/serialization/serializeMutations.js.map +1 -0
- package/cjs/domain/record/serialization/serializeNode.d.ts +3 -6
- package/cjs/domain/record/serialization/serializeNode.js +116 -144
- package/cjs/domain/record/serialization/serializeNode.js.map +1 -1
- package/cjs/domain/record/shadowRootsController.d.ts +2 -2
- package/cjs/domain/record/shadowRootsController.js +37 -42
- package/cjs/domain/record/shadowRootsController.js.map +1 -1
- package/cjs/domain/record/startFullSnapshots.d.ts +1 -1
- package/cjs/domain/record/startFullSnapshots.js +38 -54
- package/cjs/domain/record/startFullSnapshots.js.map +1 -1
- package/cjs/domain/record/trackers/index.d.ts +2 -1
- package/cjs/domain/record/trackers/index.js +25 -27
- package/cjs/domain/record/trackers/trackCanvasCapture.d.ts +3 -0
- package/cjs/domain/record/trackers/trackCanvasCapture.js +102 -0
- package/cjs/domain/record/trackers/trackCanvasCapture.js.map +1 -0
- package/cjs/domain/record/trackers/trackCanvasContent.d.ts +3 -0
- package/cjs/domain/record/trackers/trackCanvasContent.js +31 -0
- package/cjs/domain/record/trackers/trackCanvasContent.js.map +1 -0
- package/cjs/domain/record/trackers/trackFocus.d.ts +1 -2
- package/cjs/domain/record/trackers/trackFocus.js +15 -13
- package/cjs/domain/record/trackers/trackFocus.js.map +1 -1
- package/cjs/domain/record/trackers/trackInput.d.ts +2 -2
- package/cjs/domain/record/trackers/trackInput.js +129 -102
- package/cjs/domain/record/trackers/trackInput.js.map +1 -1
- package/cjs/domain/record/trackers/trackMediaInteraction.js +22 -26
- package/cjs/domain/record/trackers/trackMediaInteraction.js.map +1 -1
- package/cjs/domain/record/trackers/trackMouseInteraction.js +47 -54
- package/cjs/domain/record/trackers/trackMouseInteraction.js.map +1 -1
- package/cjs/domain/record/trackers/trackMove.js +43 -49
- package/cjs/domain/record/trackers/trackMove.js.map +1 -1
- package/cjs/domain/record/trackers/trackMutation.d.ts +3 -3
- package/cjs/domain/record/trackers/trackMutation.js +42 -267
- package/cjs/domain/record/trackers/trackMutation.js.map +1 -1
- package/cjs/domain/record/trackers/trackScroll.js +36 -44
- package/cjs/domain/record/trackers/trackScroll.js.map +1 -1
- package/cjs/domain/record/trackers/trackStyleSheet.js +75 -84
- package/cjs/domain/record/trackers/trackStyleSheet.js.map +1 -1
- package/cjs/domain/record/trackers/trackViewEnd.js +17 -17
- package/cjs/domain/record/trackers/trackViewEnd.js.map +1 -1
- package/cjs/domain/record/trackers/trackViewportResize.d.ts +2 -3
- package/cjs/domain/record/trackers/trackViewportResize.js +36 -42
- package/cjs/domain/record/trackers/trackViewportResize.js.map +1 -1
- package/cjs/domain/record/viewports.js +32 -50
- package/cjs/domain/record/viewports.js.map +1 -1
- package/cjs/domain/replayStats.d.ts +1 -0
- package/cjs/domain/replayStats.js +36 -44
- package/cjs/domain/replayStats.js.map +1 -1
- package/cjs/domain/scriptLoadingError.js +15 -22
- package/cjs/domain/scriptLoadingError.js.map +1 -1
- package/cjs/domain/segmentCollection/buildReplayPayload.js +22 -23
- package/cjs/domain/segmentCollection/buildReplayPayload.js.map +1 -1
- package/cjs/domain/segmentCollection/buildResourcePayload.d.ts +5 -0
- package/cjs/domain/segmentCollection/buildResourcePayload.js +19 -0
- package/cjs/domain/segmentCollection/buildResourcePayload.js.map +1 -0
- package/cjs/domain/segmentCollection/index.d.ts +3 -0
- package/cjs/domain/segmentCollection/index.js +14 -11
- package/cjs/domain/segmentCollection/replayResourceCollection.d.ts +10 -0
- package/cjs/domain/segmentCollection/replayResourceCollection.js +52 -0
- package/cjs/domain/segmentCollection/replayResourceCollection.js.map +1 -0
- package/cjs/domain/segmentCollection/segment.js +50 -80
- package/cjs/domain/segmentCollection/segment.js.map +1 -1
- package/cjs/domain/segmentCollection/segmentCollection.d.ts +4 -4
- package/cjs/domain/segmentCollection/segmentCollection.js +87 -105
- package/cjs/domain/segmentCollection/segmentCollection.js.map +1 -1
- package/cjs/domain/segmentCollection/startDroppedSegmentRecovery.d.ts +16 -0
- package/cjs/domain/segmentCollection/startDroppedSegmentRecovery.js +29 -0
- package/cjs/domain/segmentCollection/startDroppedSegmentRecovery.js.map +1 -0
- package/cjs/domain/segmentCollection/startSegmentTelemetry.js +40 -42
- package/cjs/domain/segmentCollection/startSegmentTelemetry.js.map +1 -1
- package/cjs/domain/startRecordBridge.js +10 -14
- package/cjs/domain/startRecordBridge.js.map +1 -1
- package/cjs/domain/startRecorderInitTelemetry.js +42 -50
- package/cjs/domain/startRecorderInitTelemetry.js.map +1 -1
- package/cjs/entries/internal.d.ts +11 -2
- package/cjs/entries/internal.js +47 -28
- package/cjs/entries/internalSynthetics.js +26 -24
- package/cjs/entries/internalSynthetics.js.map +1 -1
- package/cjs/entries/main.d.ts +5 -3
- package/cjs/entries/main.js +50 -31
- package/cjs/entries/main.js.map +1 -1
- package/cjs/types/index.d.ts +1 -0
- package/cjs/types/profiling.d.ts +313 -0
- package/cjs/types/sessionReplay.d.ts +381 -3
- package/cjs/types/sessionReplayConstants.d.ts +57 -0
- package/cjs/types/sessionReplayConstants.js +104 -47
- package/cjs/types/sessionReplayConstants.js.map +1 -1
- package/esm/boot/kubesenseRecorder.mjs +75 -0
- package/esm/boot/kubesenseRecorder.mjs.map +1 -0
- package/esm/boot/lazyLoadProfiler.mjs +24 -0
- package/esm/boot/lazyLoadProfiler.mjs.map +1 -0
- package/esm/boot/lazyLoadRecorder.mjs +24 -0
- package/esm/boot/lazyLoadRecorder.mjs.map +1 -0
- package/esm/boot/postStartStrategy.mjs +97 -0
- package/esm/boot/postStartStrategy.mjs.map +1 -0
- package/esm/boot/preStartStrategy.mjs +24 -0
- package/esm/boot/preStartStrategy.mjs.map +1 -0
- package/esm/boot/profilerApi.mjs +47 -0
- package/esm/boot/profilerApi.mjs.map +1 -0
- package/esm/boot/recorderApi.mjs +43 -0
- package/esm/boot/recorderApi.mjs.map +1 -0
- package/esm/domain/deflate/deflateEncoder.mjs +96 -0
- package/esm/domain/deflate/deflateEncoder.mjs.map +1 -0
- package/esm/domain/deflate/deflateWorker.mjs +90 -0
- package/esm/domain/deflate/deflateWorker.mjs.map +1 -0
- package/esm/domain/deflate/index.mjs +3 -0
- package/esm/domain/getSessionReplayLink.mjs +21 -0
- package/esm/domain/getSessionReplayLink.mjs.map +1 -0
- package/esm/domain/profiling/actionHistory.mjs +36 -0
- package/esm/domain/profiling/actionHistory.mjs.map +1 -0
- package/esm/domain/profiling/kubesenseProfiler.mjs +242 -0
- package/esm/domain/profiling/kubesenseProfiler.mjs.map +1 -0
- package/esm/domain/profiling/longTaskHistory.mjs +21 -0
- package/esm/domain/profiling/longTaskHistory.mjs.map +1 -0
- package/esm/domain/profiling/profilerDebugIds.mjs +18 -0
- package/esm/domain/profiling/profilerDebugIds.mjs.map +1 -0
- package/esm/domain/profiling/profilingContext.mjs +23 -0
- package/esm/domain/profiling/profilingContext.mjs.map +1 -0
- package/esm/domain/profiling/profilingSupported.mjs +9 -0
- package/esm/domain/profiling/profilingSupported.mjs.map +1 -0
- package/esm/domain/profiling/quotaCheck.mjs +66 -0
- package/esm/domain/profiling/quotaCheck.mjs.map +1 -0
- package/esm/domain/profiling/transport/buildProfileEvent.mjs +90 -0
- package/esm/domain/profiling/transport/buildProfileEvent.mjs.map +1 -0
- package/esm/domain/profiling/transport/formDataEmitter.mjs +17 -0
- package/esm/domain/profiling/transport/formDataEmitter.mjs.map +1 -0
- package/esm/domain/profiling/transport/profilingBridge.mjs +12 -0
- package/esm/domain/profiling/transport/profilingBridge.mjs.map +1 -0
- package/esm/domain/profiling/utils/getCustomOrDefaultViewName.mjs +7 -0
- package/esm/domain/profiling/utils/getCustomOrDefaultViewName.mjs.map +1 -0
- package/esm/domain/profiling/utils/getDefaultViewName.mjs +10 -0
- package/esm/domain/profiling/utils/getDefaultViewName.mjs.map +1 -0
- package/esm/domain/profiling/vitalHistory.mjs +55 -0
- package/esm/domain/profiling/vitalHistory.mjs.map +1 -0
- package/esm/domain/record/assembly.mjs +17 -0
- package/esm/domain/record/assembly.mjs.map +1 -0
- package/esm/domain/record/canvas/canvasHash.mjs +33 -0
- package/esm/domain/record/canvas/canvasHash.mjs.map +1 -0
- package/esm/domain/record/canvas/canvasManager.mjs +99 -0
- package/esm/domain/record/canvas/canvasManager.mjs.map +1 -0
- package/esm/domain/record/canvas/canvasSnapshot.mjs +38 -0
- package/esm/domain/record/canvas/canvasSnapshot.mjs.map +1 -0
- package/esm/domain/record/canvas/canvasUtils.mjs +13 -0
- package/esm/domain/record/canvas/canvasUtils.mjs.map +1 -0
- package/esm/domain/record/elementsScrollPositions.mjs +20 -0
- package/esm/domain/record/elementsScrollPositions.mjs.map +1 -0
- package/esm/domain/record/encoding/changeDecoder.mjs +152 -0
- package/esm/domain/record/encoding/changeDecoder.mjs.map +1 -0
- package/esm/domain/record/encoding/changeEncoder.mjs +146 -0
- package/esm/domain/record/encoding/changeEncoder.mjs.map +1 -0
- package/esm/domain/record/encoding/itemIds.mjs +47 -0
- package/esm/domain/record/encoding/itemIds.mjs.map +1 -0
- package/esm/domain/record/encoding/roles.mjs +64 -0
- package/esm/domain/record/encoding/roles.mjs.map +1 -0
- package/esm/domain/record/encoding/stringIds.mjs +47 -0
- package/esm/domain/record/encoding/stringIds.mjs.map +1 -0
- package/esm/domain/record/encoding/stringTable.mjs +38 -0
- package/esm/domain/record/encoding/stringTable.mjs.map +1 -0
- package/esm/domain/record/eventsUtils.mjs +13 -0
- package/esm/domain/record/eventsUtils.mjs.map +1 -0
- package/esm/domain/record/index.mjs +8 -0
- package/esm/domain/record/internalApi.mjs +62 -0
- package/esm/domain/record/internalApi.mjs.map +1 -0
- package/esm/domain/record/mutationBatch.mjs +43 -0
- package/esm/domain/record/mutationBatch.mjs.map +1 -0
- package/esm/domain/record/record.mjs +79 -0
- package/esm/domain/record/record.mjs.map +1 -0
- package/esm/domain/record/recordingScope.mjs +27 -0
- package/esm/domain/record/recordingScope.mjs.map +1 -0
- package/esm/domain/record/serialization/index.mjs +9 -0
- package/esm/domain/record/serialization/insertionCursor.mjs +54 -0
- package/esm/domain/record/serialization/insertionCursor.mjs.map +1 -0
- package/esm/domain/record/serialization/serializationStats.mjs +31 -0
- package/esm/domain/record/serialization/serializationStats.mjs.map +1 -0
- package/esm/domain/record/serialization/serializationTransaction.mjs +92 -0
- package/esm/domain/record/serialization/serializationTransaction.mjs.map +1 -0
- package/esm/domain/record/serialization/serializationUtils.mjs +53 -0
- package/esm/domain/record/serialization/serializationUtils.mjs.map +1 -0
- package/esm/domain/record/serialization/serializeAttribute.mjs +26 -0
- package/esm/domain/record/serialization/serializeAttribute.mjs.map +1 -0
- package/esm/domain/record/serialization/serializeAttributes.mjs +113 -0
- package/esm/domain/record/serialization/serializeAttributes.mjs.map +1 -0
- package/esm/domain/record/serialization/serializeFullSnapshot.mjs +14 -0
- package/esm/domain/record/serialization/serializeFullSnapshot.mjs.map +1 -0
- package/esm/domain/record/serialization/serializeMutations.mjs +152 -0
- package/esm/domain/record/serialization/serializeMutations.mjs.map +1 -0
- package/esm/domain/record/serialization/serializeNode.mjs +126 -0
- package/esm/domain/record/serialization/serializeNode.mjs.map +1 -0
- package/esm/domain/record/shadowRootsController.mjs +40 -0
- package/esm/domain/record/shadowRootsController.mjs.map +1 -0
- package/esm/domain/record/startFullSnapshots.mjs +42 -0
- package/esm/domain/record/startFullSnapshots.mjs.map +1 -0
- package/esm/domain/record/trackers/index.mjs +13 -0
- package/esm/domain/record/trackers/trackCanvasCapture.mjs +102 -0
- package/esm/domain/record/trackers/trackCanvasCapture.mjs.map +1 -0
- package/esm/domain/record/trackers/trackCanvasContent.mjs +31 -0
- package/esm/domain/record/trackers/trackCanvasContent.mjs.map +1 -0
- package/esm/domain/record/trackers/trackFocus.mjs +17 -0
- package/esm/domain/record/trackers/trackFocus.mjs.map +1 -0
- package/esm/domain/record/trackers/trackInput.mjs +131 -0
- package/esm/domain/record/trackers/trackInput.mjs.map +1 -0
- package/esm/domain/record/trackers/trackMediaInteraction.mjs +25 -0
- package/esm/domain/record/trackers/trackMediaInteraction.mjs.map +1 -0
- package/esm/domain/record/trackers/trackMouseInteraction.mjs +52 -0
- package/esm/domain/record/trackers/trackMouseInteraction.mjs.map +1 -0
- package/esm/domain/record/trackers/trackMove.mjs +48 -0
- package/esm/domain/record/trackers/trackMove.mjs.map +1 -0
- package/esm/domain/record/trackers/trackMutation.mjs +45 -0
- package/esm/domain/record/trackers/trackMutation.mjs.map +1 -0
- package/esm/domain/record/trackers/trackScroll.mjs +40 -0
- package/esm/domain/record/trackers/trackScroll.mjs.map +1 -0
- package/esm/domain/record/trackers/trackStyleSheet.mjs +79 -0
- package/esm/domain/record/trackers/trackStyleSheet.mjs.map +1 -0
- package/esm/domain/record/trackers/trackViewEnd.mjs +20 -0
- package/esm/domain/record/trackers/trackViewEnd.mjs.map +1 -0
- package/esm/domain/record/trackers/trackViewportResize.mjs +39 -0
- package/esm/domain/record/trackers/trackViewportResize.mjs.map +1 -0
- package/esm/domain/record/viewports.mjs +41 -0
- package/esm/domain/record/viewports.mjs.map +1 -0
- package/esm/domain/replayStats.mjs +46 -0
- package/esm/domain/replayStats.mjs.map +1 -0
- package/esm/domain/scriptLoadingError.mjs +19 -0
- package/esm/domain/scriptLoadingError.mjs.map +1 -0
- package/esm/domain/segmentCollection/buildReplayPayload.mjs +25 -0
- package/esm/domain/segmentCollection/buildReplayPayload.mjs.map +1 -0
- package/esm/domain/segmentCollection/buildResourcePayload.mjs +19 -0
- package/esm/domain/segmentCollection/buildResourcePayload.mjs.map +1 -0
- package/esm/domain/segmentCollection/index.mjs +5 -0
- package/esm/domain/segmentCollection/replayResourceCollection.mjs +52 -0
- package/esm/domain/segmentCollection/replayResourceCollection.mjs.map +1 -0
- package/esm/domain/segmentCollection/segment.mjs +52 -0
- package/esm/domain/segmentCollection/segment.mjs.map +1 -0
- package/esm/domain/segmentCollection/segmentCollection.mjs +87 -0
- package/esm/domain/segmentCollection/segmentCollection.mjs.map +1 -0
- package/esm/domain/segmentCollection/startDroppedSegmentRecovery.mjs +28 -0
- package/esm/domain/segmentCollection/startDroppedSegmentRecovery.mjs.map +1 -0
- package/esm/domain/segmentCollection/startSegmentTelemetry.mjs +45 -0
- package/esm/domain/segmentCollection/startSegmentTelemetry.mjs.map +1 -0
- package/esm/domain/startRecordBridge.mjs +13 -0
- package/esm/domain/startRecordBridge.mjs.map +1 -0
- package/esm/domain/startRecorderInitTelemetry.mjs +47 -0
- package/esm/domain/startRecorderInitTelemetry.mjs.map +1 -0
- package/esm/entries/internal.mjs +8 -0
- package/esm/entries/internalSynthetics.mjs +22 -0
- package/esm/entries/internalSynthetics.mjs.map +1 -0
- package/esm/entries/main.mjs +35 -0
- package/esm/entries/main.mjs.map +1 -0
- package/esm/types/sessionReplayConstants.mjs +97 -0
- package/esm/types/sessionReplayConstants.mjs.map +1 -0
- package/internal/package.json +1 -1
- package/internal-synthetics/package.json +1 -1
- package/package.json +26 -15
- package/src/boot/kubesenseRecorder.ts +134 -0
- package/src/boot/lazyLoadProfiler.ts +6 -7
- package/src/boot/lazyLoadRecorder.ts +6 -7
- package/src/boot/postStartStrategy.ts +18 -16
- package/src/boot/profilerApi.ts +29 -19
- package/src/boot/recorderApi.ts +6 -21
- package/src/domain/deflate/deflateEncoder.ts +3 -8
- package/src/domain/deflate/deflateWorker.ts +8 -13
- package/src/domain/deflate/index.ts +1 -0
- package/src/domain/getSessionReplayLink.ts +15 -11
- package/src/domain/profiling/actionHistory.ts +66 -0
- package/src/domain/profiling/{profiler.ts → kubesenseProfiler.ts} +166 -79
- package/src/domain/profiling/longTaskHistory.ts +45 -0
- package/src/domain/profiling/profilerDebugIds.ts +17 -0
- package/src/domain/profiling/profilingContext.ts +8 -3
- package/src/domain/profiling/profilingSupported.ts +2 -7
- package/src/domain/profiling/quotaCheck.ts +89 -0
- package/src/domain/profiling/test-utils/mockedTrace.ts +1 -2
- package/src/domain/profiling/transport/buildProfileEvent.ts +143 -0
- package/src/domain/profiling/transport/formDataEmitter.ts +17 -0
- package/src/domain/profiling/transport/profilingBridge.ts +9 -0
- package/src/domain/profiling/{types/rumProfiler.types.ts → types.ts} +14 -26
- package/src/domain/profiling/vitalHistory.ts +106 -0
- package/src/domain/record/assembly.ts +5 -3
- package/src/domain/record/canvas/canvasHash.ts +54 -0
- package/src/domain/record/canvas/canvasManager.ts +175 -0
- package/src/domain/record/canvas/canvasSnapshot.ts +52 -0
- package/src/domain/record/canvas/canvasUtils.ts +11 -0
- package/src/domain/record/encoding/changeDecoder.ts +287 -0
- package/src/domain/record/encoding/changeEncoder.ts +327 -0
- package/src/domain/record/encoding/index.ts +19 -0
- package/src/domain/record/encoding/itemIds.ts +84 -0
- package/src/domain/record/encoding/roles.ts +136 -0
- package/src/domain/record/encoding/stringIds.ts +70 -0
- package/src/domain/record/encoding/stringTable.ts +68 -0
- package/src/domain/record/index.ts +5 -2
- package/src/domain/record/internalApi.ts +21 -18
- package/src/domain/record/mutationBatch.ts +14 -3
- package/src/domain/record/record.ts +35 -16
- package/src/domain/record/record.types.ts +1 -0
- package/src/domain/record/recordingScope.ts +28 -5
- package/src/domain/record/serialization/index.ts +4 -2
- package/src/domain/record/serialization/insertionCursor.ts +131 -0
- package/src/domain/record/serialization/serialization.types.ts +0 -16
- package/src/domain/record/serialization/serializationTransaction.ts +191 -37
- package/src/domain/record/serialization/serializationUtils.ts +1 -15
- package/src/domain/record/serialization/serializeAttributes.ts +36 -32
- package/src/domain/record/serialization/serializeFullSnapshot.ts +26 -0
- package/src/domain/record/serialization/serializeMutations.ts +357 -0
- package/src/domain/record/serialization/serializeNode.ts +200 -164
- package/src/domain/record/shadowRootsController.ts +4 -3
- package/src/domain/record/startFullSnapshots.ts +28 -41
- package/src/domain/record/trackers/index.ts +2 -1
- package/src/domain/record/trackers/trackCanvasCapture.ts +137 -0
- package/src/domain/record/trackers/trackCanvasContent.ts +46 -0
- package/src/domain/record/trackers/trackFocus.ts +4 -4
- package/src/domain/record/trackers/trackInput.ts +146 -41
- package/src/domain/record/trackers/trackMediaInteraction.ts +0 -1
- package/src/domain/record/trackers/trackMouseInteraction.ts +1 -2
- package/src/domain/record/trackers/trackMove.ts +0 -1
- package/src/domain/record/trackers/trackMutation.ts +17 -355
- package/src/domain/record/trackers/trackScroll.ts +1 -1
- package/src/domain/record/trackers/trackStyleSheet.ts +1 -1
- package/src/domain/record/trackers/trackViewEnd.ts +1 -1
- package/src/domain/record/trackers/trackViewportResize.ts +7 -16
- package/src/domain/record/trackers/tracker.types.ts +1 -1
- package/src/domain/replayStats.ts +5 -0
- package/src/domain/scriptLoadingError.ts +2 -1
- package/src/domain/segmentCollection/buildResourcePayload.ts +20 -0
- package/src/domain/segmentCollection/index.ts +3 -0
- package/src/domain/segmentCollection/replayResourceCollection.ts +79 -0
- package/src/domain/segmentCollection/segment.ts +2 -1
- package/src/domain/segmentCollection/segmentCollection.ts +14 -13
- package/src/domain/segmentCollection/startDroppedSegmentRecovery.ts +37 -0
- package/src/domain/segmentCollection/startSegmentTelemetry.ts +16 -2
- package/src/domain/startRecorderInitTelemetry.ts +5 -3
- package/src/entries/internal.ts +13 -2
- package/src/entries/internalSynthetics.ts +3 -4
- package/src/entries/main.ts +23 -14
- package/src/types/index.ts +1 -0
- package/src/types/profiling.ts +315 -0
- package/src/types/sessionReplay.ts +395 -3
- package/src/types/sessionReplayConstants.ts +109 -0
- package/bundle/chunks/profiler-6f621c66a29d9f39a9bd-kubesense-rum.js +0 -1
- package/bundle/chunks/recorder-c73b8d42b98d4a01f120-kubesense-rum.js +0 -1
- package/cjs/boot/isBrowserSupported.d.ts +0 -4
- package/cjs/boot/isBrowserSupported.js +0 -17
- package/cjs/boot/isBrowserSupported.js.map +0 -1
- package/cjs/boot/startRecording.d.ts +0 -6
- package/cjs/boot/startRecording.js +0 -45
- package/cjs/boot/startRecording.js.map +0 -1
- package/cjs/domain/deflate/index.js.map +0 -1
- package/cjs/domain/profiling/profiler.d.ts +0 -7
- package/cjs/domain/profiling/profiler.js +0 -244
- package/cjs/domain/profiling/profiler.js.map +0 -1
- package/cjs/domain/profiling/test-utils/mockedTrace.js +0 -57
- package/cjs/domain/profiling/test-utils/mockedTrace.js.map +0 -1
- package/cjs/domain/profiling/transport/assembly.d.ts +0 -21
- package/cjs/domain/profiling/transport/assembly.js +0 -45
- package/cjs/domain/profiling/transport/assembly.js.map +0 -1
- package/cjs/domain/profiling/transport/buildProfileEventAttributes.d.ts +0 -25
- package/cjs/domain/profiling/transport/buildProfileEventAttributes.js +0 -50
- package/cjs/domain/profiling/transport/buildProfileEventAttributes.js.map +0 -1
- package/cjs/domain/profiling/types/index.d.ts +0 -2
- package/cjs/domain/profiling/types/index.js +0 -3
- package/cjs/domain/profiling/types/index.js.map +0 -1
- package/cjs/domain/profiling/types/profilerApi.types.d.ts +0 -58
- package/cjs/domain/profiling/types/profilerApi.types.js +0 -5
- package/cjs/domain/profiling/types/profilerApi.types.js.map +0 -1
- package/cjs/domain/profiling/types/rumProfiler.types.js +0 -3
- package/cjs/domain/profiling/types/rumProfiler.types.js.map +0 -1
- package/cjs/domain/profiling/utils/getNumberOfSamples.d.ts +0 -7
- package/cjs/domain/profiling/utils/getNumberOfSamples.js +0 -18
- package/cjs/domain/profiling/utils/getNumberOfSamples.js.map +0 -1
- package/cjs/domain/record/eventIds.d.ts +0 -4
- package/cjs/domain/record/eventIds.js +0 -16
- package/cjs/domain/record/eventIds.js.map +0 -1
- package/cjs/domain/record/index.js.map +0 -1
- package/cjs/domain/record/nodeIds.d.ts +0 -15
- package/cjs/domain/record/nodeIds.js +0 -32
- package/cjs/domain/record/nodeIds.js.map +0 -1
- package/cjs/domain/record/record.types.js +0 -3
- package/cjs/domain/record/record.types.js.map +0 -1
- package/cjs/domain/record/serialization/index.js.map +0 -1
- package/cjs/domain/record/serialization/serialization.types.js +0 -3
- package/cjs/domain/record/serialization/serialization.types.js.map +0 -1
- package/cjs/domain/record/serialization/serializeDocument.d.ts +0 -3
- package/cjs/domain/record/serialization/serializeDocument.js +0 -11
- package/cjs/domain/record/serialization/serializeDocument.js.map +0 -1
- package/cjs/domain/record/serialization/serializeStyleSheets.d.ts +0 -2
- package/cjs/domain/record/serialization/serializeStyleSheets.js +0 -19
- package/cjs/domain/record/serialization/serializeStyleSheets.js.map +0 -1
- package/cjs/domain/record/trackers/index.js.map +0 -1
- package/cjs/domain/record/trackers/trackFrustration.d.ts +0 -7
- package/cjs/domain/record/trackers/trackFrustration.js +0 -31
- package/cjs/domain/record/trackers/trackFrustration.js.map +0 -1
- package/cjs/domain/record/trackers/tracker.types.js +0 -3
- package/cjs/domain/record/trackers/tracker.types.js.map +0 -1
- package/cjs/domain/segmentCollection/index.js.map +0 -1
- package/cjs/entries/internal.js.map +0 -1
- package/cjs/types/index.js +0 -18
- package/cjs/types/index.js.map +0 -1
- package/cjs/types/sessionReplay.js +0 -7
- package/cjs/types/sessionReplay.js.map +0 -1
- package/esm/boot/isBrowserSupported.d.ts +0 -4
- package/esm/boot/isBrowserSupported.js +0 -14
- package/esm/boot/isBrowserSupported.js.map +0 -1
- package/esm/boot/lazyLoadProfiler.d.ts +0 -4
- package/esm/boot/lazyLoadProfiler.js +0 -18
- package/esm/boot/lazyLoadProfiler.js.map +0 -1
- package/esm/boot/lazyLoadRecorder.d.ts +0 -4
- package/esm/boot/lazyLoadRecorder.js +0 -18
- package/esm/boot/lazyLoadRecorder.js.map +0 -1
- package/esm/boot/postStartStrategy.d.ts +0 -33
- package/esm/boot/postStartStrategy.js +0 -115
- package/esm/boot/postStartStrategy.js.map +0 -1
- package/esm/boot/preStartStrategy.d.ts +0 -6
- package/esm/boot/preStartStrategy.js +0 -21
- package/esm/boot/preStartStrategy.js.map +0 -1
- package/esm/boot/profilerApi.d.ts +0 -2
- package/esm/boot/profilerApi.js +0 -50
- package/esm/boot/profilerApi.js.map +0 -1
- package/esm/boot/recorderApi.d.ts +0 -4
- package/esm/boot/recorderApi.js +0 -70
- package/esm/boot/recorderApi.js.map +0 -1
- package/esm/boot/startRecording.d.ts +0 -6
- package/esm/boot/startRecording.js +0 -42
- package/esm/boot/startRecording.js.map +0 -1
- package/esm/domain/deflate/deflateEncoder.d.ts +0 -3
- package/esm/domain/deflate/deflateEncoder.js +0 -107
- package/esm/domain/deflate/deflateEncoder.js.map +0 -1
- package/esm/domain/deflate/deflateWorker.d.ts +0 -30
- package/esm/domain/deflate/deflateWorker.js +0 -97
- package/esm/domain/deflate/deflateWorker.js.map +0 -1
- package/esm/domain/deflate/index.d.ts +0 -3
- package/esm/domain/deflate/index.js +0 -3
- package/esm/domain/deflate/index.js.map +0 -1
- package/esm/domain/getSessionReplayLink.d.ts +0 -2
- package/esm/domain/getSessionReplayLink.js +0 -32
- package/esm/domain/getSessionReplayLink.js.map +0 -1
- package/esm/domain/profiling/profiler.d.ts +0 -7
- package/esm/domain/profiling/profiler.js +0 -240
- package/esm/domain/profiling/profiler.js.map +0 -1
- package/esm/domain/profiling/profilingContext.d.ts +0 -6
- package/esm/domain/profiling/profilingContext.js +0 -25
- package/esm/domain/profiling/profilingContext.js.map +0 -1
- package/esm/domain/profiling/profilingSupported.d.ts +0 -1
- package/esm/domain/profiling/profilingSupported.js +0 -8
- package/esm/domain/profiling/profilingSupported.js.map +0 -1
- package/esm/domain/profiling/test-utils/mockedTrace.d.ts +0 -3
- package/esm/domain/profiling/test-utils/mockedTrace.js +0 -54
- package/esm/domain/profiling/test-utils/mockedTrace.js.map +0 -1
- package/esm/domain/profiling/transport/assembly.d.ts +0 -21
- package/esm/domain/profiling/transport/assembly.js +0 -42
- package/esm/domain/profiling/transport/assembly.js.map +0 -1
- package/esm/domain/profiling/transport/buildProfileEventAttributes.d.ts +0 -25
- package/esm/domain/profiling/transport/buildProfileEventAttributes.js +0 -47
- package/esm/domain/profiling/transport/buildProfileEventAttributes.js.map +0 -1
- package/esm/domain/profiling/types/index.d.ts +0 -2
- package/esm/domain/profiling/types/index.js +0 -2
- package/esm/domain/profiling/types/index.js.map +0 -1
- package/esm/domain/profiling/types/profilerApi.types.d.ts +0 -58
- package/esm/domain/profiling/types/profilerApi.types.js +0 -4
- package/esm/domain/profiling/types/profilerApi.types.js.map +0 -1
- package/esm/domain/profiling/types/rumProfiler.types.d.ts +0 -72
- package/esm/domain/profiling/types/rumProfiler.types.js +0 -2
- package/esm/domain/profiling/types/rumProfiler.types.js.map +0 -1
- package/esm/domain/profiling/utils/getCustomOrDefaultViewName.d.ts +0 -1
- package/esm/domain/profiling/utils/getCustomOrDefaultViewName.js +0 -3
- package/esm/domain/profiling/utils/getCustomOrDefaultViewName.js.map +0 -1
- package/esm/domain/profiling/utils/getDefaultViewName.d.ts +0 -1
- package/esm/domain/profiling/utils/getDefaultViewName.js +0 -11
- package/esm/domain/profiling/utils/getDefaultViewName.js.map +0 -1
- package/esm/domain/profiling/utils/getNumberOfSamples.d.ts +0 -7
- package/esm/domain/profiling/utils/getNumberOfSamples.js +0 -15
- package/esm/domain/profiling/utils/getNumberOfSamples.js.map +0 -1
- package/esm/domain/record/assembly.d.ts +0 -2
- package/esm/domain/record/assembly.js +0 -13
- package/esm/domain/record/assembly.js.map +0 -1
- package/esm/domain/record/elementsScrollPositions.d.ts +0 -10
- package/esm/domain/record/elementsScrollPositions.js +0 -20
- package/esm/domain/record/elementsScrollPositions.js.map +0 -1
- package/esm/domain/record/eventIds.d.ts +0 -4
- package/esm/domain/record/eventIds.js +0 -13
- package/esm/domain/record/eventIds.js.map +0 -1
- package/esm/domain/record/eventsUtils.d.ts +0 -2
- package/esm/domain/record/eventsUtils.js +0 -11
- package/esm/domain/record/eventsUtils.js.map +0 -1
- package/esm/domain/record/index.d.ts +0 -7
- package/esm/domain/record/index.js +0 -6
- package/esm/domain/record/index.js.map +0 -1
- package/esm/domain/record/internalApi.d.ts +0 -22
- package/esm/domain/record/internalApi.js +0 -53
- package/esm/domain/record/internalApi.js.map +0 -1
- package/esm/domain/record/mutationBatch.d.ts +0 -12
- package/esm/domain/record/mutationBatch.js +0 -40
- package/esm/domain/record/mutationBatch.js.map +0 -1
- package/esm/domain/record/nodeIds.d.ts +0 -15
- package/esm/domain/record/nodeIds.js +0 -29
- package/esm/domain/record/nodeIds.js.map +0 -1
- package/esm/domain/record/record.d.ts +0 -16
- package/esm/domain/record/record.js +0 -54
- package/esm/domain/record/record.js.map +0 -1
- package/esm/domain/record/record.types.d.ts +0 -4
- package/esm/domain/record/record.types.js +0 -2
- package/esm/domain/record/record.types.js.map +0 -1
- package/esm/domain/record/recordingScope.d.ts +0 -19
- package/esm/domain/record/recordingScope.js +0 -10
- package/esm/domain/record/recordingScope.js.map +0 -1
- package/esm/domain/record/serialization/index.d.ts +0 -8
- package/esm/domain/record/serialization/index.js +0 -7
- package/esm/domain/record/serialization/index.js.map +0 -1
- package/esm/domain/record/serialization/serialization.types.d.ts +0 -28
- package/esm/domain/record/serialization/serialization.types.js +0 -2
- package/esm/domain/record/serialization/serialization.types.js.map +0 -1
- package/esm/domain/record/serialization/serializationStats.d.ts +0 -12
- package/esm/domain/record/serialization/serializationStats.js +0 -27
- package/esm/domain/record/serialization/serializationStats.js.map +0 -1
- package/esm/domain/record/serialization/serializationTransaction.d.ts +0 -45
- package/esm/domain/record/serialization/serializationTransaction.js +0 -35
- package/esm/domain/record/serialization/serializationTransaction.js.map +0 -1
- package/esm/domain/record/serialization/serializationUtils.d.ts +0 -18
- package/esm/domain/record/serialization/serializationUtils.js +0 -80
- package/esm/domain/record/serialization/serializationUtils.js.map +0 -1
- package/esm/domain/record/serialization/serializeAttribute.d.ts +0 -4
- package/esm/domain/record/serialization/serializeAttribute.js +0 -38
- package/esm/domain/record/serialization/serializeAttribute.js.map +0 -1
- package/esm/domain/record/serialization/serializeAttributes.d.ts +0 -7
- package/esm/domain/record/serialization/serializeAttributes.js +0 -161
- package/esm/domain/record/serialization/serializeAttributes.js.map +0 -1
- package/esm/domain/record/serialization/serializeDocument.d.ts +0 -3
- package/esm/domain/record/serialization/serializeDocument.js +0 -8
- package/esm/domain/record/serialization/serializeDocument.js.map +0 -1
- package/esm/domain/record/serialization/serializeNode.d.ts +0 -7
- package/esm/domain/record/serialization/serializeNode.js +0 -149
- package/esm/domain/record/serialization/serializeNode.js.map +0 -1
- package/esm/domain/record/serialization/serializeStyleSheets.d.ts +0 -2
- package/esm/domain/record/serialization/serializeStyleSheets.js +0 -16
- package/esm/domain/record/serialization/serializeStyleSheets.js.map +0 -1
- package/esm/domain/record/shadowRootsController.d.ts +0 -11
- package/esm/domain/record/shadowRootsController.js +0 -41
- package/esm/domain/record/shadowRootsController.js.map +0 -1
- package/esm/domain/record/startFullSnapshots.d.ts +0 -9
- package/esm/domain/record/startFullSnapshots.js +0 -55
- package/esm/domain/record/startFullSnapshots.js.map +0 -1
- package/esm/domain/record/trackers/index.d.ts +0 -12
- package/esm/domain/record/trackers/index.js +0 -12
- package/esm/domain/record/trackers/index.js.map +0 -1
- package/esm/domain/record/trackers/trackFocus.d.ts +0 -5
- package/esm/domain/record/trackers/trackFocus.js +0 -12
- package/esm/domain/record/trackers/trackFocus.js.map +0 -1
- package/esm/domain/record/trackers/trackFrustration.d.ts +0 -7
- package/esm/domain/record/trackers/trackFrustration.js +0 -28
- package/esm/domain/record/trackers/trackFrustration.js.map +0 -1
- package/esm/domain/record/trackers/trackInput.d.ts +0 -4
- package/esm/domain/record/trackers/trackInput.js +0 -101
- package/esm/domain/record/trackers/trackInput.js.map +0 -1
- package/esm/domain/record/trackers/trackMediaInteraction.d.ts +0 -5
- package/esm/domain/record/trackers/trackMediaInteraction.js +0 -26
- package/esm/domain/record/trackers/trackMediaInteraction.js.map +0 -1
- package/esm/domain/record/trackers/trackMouseInteraction.d.ts +0 -5
- package/esm/domain/record/trackers/trackMouseInteraction.js +0 -56
- package/esm/domain/record/trackers/trackMouseInteraction.js.map +0 -1
- package/esm/domain/record/trackers/trackMove.d.ts +0 -9
- package/esm/domain/record/trackers/trackMove.js +0 -51
- package/esm/domain/record/trackers/trackMove.js.map +0 -1
- package/esm/domain/record/trackers/trackMutation.d.ts +0 -11
- package/esm/domain/record/trackers/trackMutation.js +0 -266
- package/esm/domain/record/trackers/trackMutation.js.map +0 -1
- package/esm/domain/record/trackers/trackScroll.d.ts +0 -5
- package/esm/domain/record/trackers/trackScroll.js +0 -45
- package/esm/domain/record/trackers/trackScroll.js.map +0 -1
- package/esm/domain/record/trackers/trackStyleSheet.d.ts +0 -6
- package/esm/domain/record/trackers/trackStyleSheet.js +0 -85
- package/esm/domain/record/trackers/trackStyleSheet.js.map +0 -1
- package/esm/domain/record/trackers/trackViewEnd.d.ts +0 -5
- package/esm/domain/record/trackers/trackViewEnd.js +0 -17
- package/esm/domain/record/trackers/trackViewEnd.js.map +0 -1
- package/esm/domain/record/trackers/trackViewportResize.d.ts +0 -6
- package/esm/domain/record/trackers/trackViewportResize.js +0 -42
- package/esm/domain/record/trackers/trackViewportResize.js.map +0 -1
- package/esm/domain/record/trackers/tracker.types.d.ts +0 -3
- package/esm/domain/record/trackers/tracker.types.js +0 -2
- package/esm/domain/record/trackers/tracker.types.js.map +0 -1
- package/esm/domain/record/viewports.d.ts +0 -20
- package/esm/domain/record/viewports.js +0 -55
- package/esm/domain/record/viewports.js.map +0 -1
- package/esm/domain/replayStats.d.ts +0 -8
- package/esm/domain/replayStats.js +0 -51
- package/esm/domain/replayStats.js.map +0 -1
- package/esm/domain/scriptLoadingError.d.ts +0 -6
- package/esm/domain/scriptLoadingError.js +0 -23
- package/esm/domain/scriptLoadingError.js.map +0 -1
- package/esm/domain/segmentCollection/buildReplayPayload.d.ts +0 -15
- package/esm/domain/segmentCollection/buildReplayPayload.js +0 -23
- package/esm/domain/segmentCollection/buildReplayPayload.js.map +0 -1
- package/esm/domain/segmentCollection/index.d.ts +0 -4
- package/esm/domain/segmentCollection/index.js +0 -4
- package/esm/domain/segmentCollection/index.js.map +0 -1
- package/esm/domain/segmentCollection/segment.d.ts +0 -16
- package/esm/domain/segmentCollection/segment.js +0 -46
- package/esm/domain/segmentCollection/segment.js.map +0 -1
- package/esm/domain/segmentCollection/segmentCollection.d.ts +0 -31
- package/esm/domain/segmentCollection/segmentCollection.js +0 -106
- package/esm/domain/segmentCollection/segmentCollection.js.map +0 -1
- package/esm/domain/segmentCollection/startSegmentTelemetry.d.ts +0 -6
- package/esm/domain/segmentCollection/startSegmentTelemetry.js +0 -44
- package/esm/domain/segmentCollection/startSegmentTelemetry.js.map +0 -1
- package/esm/domain/startRecordBridge.d.ts +0 -5
- package/esm/domain/startRecordBridge.js +0 -14
- package/esm/domain/startRecordBridge.js.map +0 -1
- package/esm/domain/startRecorderInitTelemetry.d.ts +0 -15
- package/esm/domain/startRecorderInitTelemetry.js +0 -52
- package/esm/domain/startRecorderInitTelemetry.js.map +0 -1
- package/esm/entries/internal.d.ts +0 -11
- package/esm/entries/internal.js +0 -4
- package/esm/entries/internal.js.map +0 -1
- package/esm/entries/internalSynthetics.d.ts +0 -2
- package/esm/entries/internalSynthetics.js +0 -23
- package/esm/entries/internalSynthetics.js.map +0 -1
- package/esm/entries/main.d.ts +0 -23
- package/esm/entries/main.js +0 -31
- package/esm/entries/main.js.map +0 -1
- package/esm/types/index.d.ts +0 -2
- package/esm/types/index.js +0 -2
- package/esm/types/index.js.map +0 -1
- package/esm/types/sessionReplay.d.ts +0 -703
- package/esm/types/sessionReplay.js +0 -6
- package/esm/types/sessionReplay.js.map +0 -1
- package/esm/types/sessionReplayConstants.d.ts +0 -49
- package/esm/types/sessionReplayConstants.js +0 -46
- package/esm/types/sessionReplayConstants.js.map +0 -1
- package/src/boot/isBrowserSupported.ts +0 -14
- package/src/boot/startRecording.ts +0 -70
- package/src/domain/profiling/transport/assembly.ts +0 -78
- package/src/domain/profiling/transport/buildProfileEventAttributes.ts +0 -66
- package/src/domain/profiling/types/index.ts +0 -2
- package/src/domain/profiling/types/profilerApi.types.ts +0 -87
- package/src/domain/profiling/utils/getNumberOfSamples.ts +0 -16
- package/src/domain/record/eventIds.ts +0 -17
- package/src/domain/record/nodeIds.ts +0 -46
- package/src/domain/record/serialization/serializeDocument.ts +0 -13
- package/src/domain/record/serialization/serializeStyleSheets.ts +0 -18
- package/src/domain/record/trackers/trackFrustration.ts +0 -41
|
@@ -1,154 +1,126 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
const require_sessionReplayConstants = require("../../../types/sessionReplayConstants.js");
|
|
2
|
+
const require_serializationUtils = require("./serializationUtils.js");
|
|
3
|
+
const require_roles = require("../encoding/roles.js");
|
|
4
|
+
const require_canvasUtils = require("../canvas/canvasUtils.js");
|
|
5
|
+
const require_serializeAttributes = require("./serializeAttributes.js");
|
|
6
|
+
let _kubesense_kubesense_browser_rum_core = require("@kubesense/kubesense-browser-rum-core");
|
|
7
|
+
//#region src/domain/record/serialization/serializeNode.ts
|
|
8
|
+
function serializeNode(cursor, node, parentPrivacyLevel, transaction) {
|
|
9
|
+
if (node.parentNode?.nodeName === "STYLE") return;
|
|
10
|
+
if (parentPrivacyLevel === _kubesense_kubesense_browser_rum_core.NodePrivacyLevel.HIDDEN || parentPrivacyLevel === _kubesense_kubesense_browser_rum_core.NodePrivacyLevel.IGNORE) return;
|
|
11
|
+
let privacyLevel;
|
|
12
|
+
const selfPrivacyLevel = (0, _kubesense_kubesense_browser_rum_core.getNodeSelfPrivacyLevel)(node);
|
|
13
|
+
if (selfPrivacyLevel) privacyLevel = (0, _kubesense_kubesense_browser_rum_core.reducePrivacyLevel)(selfPrivacyLevel, parentPrivacyLevel);
|
|
14
|
+
else privacyLevel = parentPrivacyLevel;
|
|
15
|
+
if (privacyLevel === _kubesense_kubesense_browser_rum_core.NodePrivacyLevel.HIDDEN) {
|
|
16
|
+
serializeHiddenNodePlaceholder(cursor, node, transaction);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (privacyLevel === _kubesense_kubesense_browser_rum_core.NodePrivacyLevel.IGNORE) return;
|
|
20
|
+
switch (node.nodeType) {
|
|
21
|
+
case node.CDATA_SECTION_NODE:
|
|
22
|
+
serializeCDataNode(cursor, node, transaction);
|
|
23
|
+
break;
|
|
24
|
+
case node.DOCUMENT_NODE:
|
|
25
|
+
serializeDocumentNode(cursor, node, transaction);
|
|
26
|
+
break;
|
|
27
|
+
case node.DOCUMENT_FRAGMENT_NODE:
|
|
28
|
+
serializeDocumentFragmentNode(cursor, node, transaction);
|
|
29
|
+
break;
|
|
30
|
+
case node.DOCUMENT_TYPE_NODE:
|
|
31
|
+
serializeDocumentTypeNode(cursor, node, transaction);
|
|
32
|
+
break;
|
|
33
|
+
case node.ELEMENT_NODE:
|
|
34
|
+
serializeElementNode(cursor, node, privacyLevel, transaction);
|
|
35
|
+
break;
|
|
36
|
+
case node.TEXT_NODE:
|
|
37
|
+
serializeTextNode(cursor, node, privacyLevel, transaction);
|
|
38
|
+
break;
|
|
39
|
+
default: return;
|
|
40
|
+
}
|
|
41
|
+
switch (node.nodeType) {
|
|
42
|
+
case node.CDATA_SECTION_NODE:
|
|
43
|
+
case node.DOCUMENT_TYPE_NODE:
|
|
44
|
+
case node.TEXT_NODE: return;
|
|
45
|
+
}
|
|
46
|
+
cursor.descend();
|
|
47
|
+
(0, _kubesense_kubesense_browser_rum_core.forEachChildNodes)(node, (childNode) => {
|
|
48
|
+
serializeNode(cursor, childNode, privacyLevel, transaction);
|
|
49
|
+
});
|
|
50
|
+
cursor.ascend();
|
|
51
|
+
}
|
|
52
|
+
function serializeDocumentNode(cursor, document, transaction) {
|
|
53
|
+
const { nodeId, insertionPoint } = cursor.advance(document);
|
|
54
|
+
transaction.addNode(insertionPoint, require_roles.createString(require_sessionReplayConstants.StringRole.NodeName, "#document"));
|
|
55
|
+
transaction.setScrollPosition(nodeId, (0, _kubesense_kubesense_browser_rum_core.getScrollX)(), (0, _kubesense_kubesense_browser_rum_core.getScrollY)());
|
|
56
|
+
serializeStyleSheets(document.adoptedStyleSheets, nodeId, transaction);
|
|
57
|
+
}
|
|
58
|
+
function serializeDocumentFragmentNode(cursor, documentFragment, transaction) {
|
|
59
|
+
const { nodeId, insertionPoint } = cursor.advance(documentFragment);
|
|
60
|
+
if (!(0, _kubesense_kubesense_browser_rum_core.isNodeShadowRoot)(documentFragment)) {
|
|
61
|
+
transaction.addNode(insertionPoint, require_roles.createString(require_sessionReplayConstants.StringRole.NodeName, "#document-fragment"));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
transaction.addNode(insertionPoint, require_roles.createString(require_sessionReplayConstants.StringRole.NodeName, "#shadow-root"));
|
|
65
|
+
transaction.scope.shadowRootsController.addShadowRoot(documentFragment, transaction.scope);
|
|
66
|
+
serializeStyleSheets(documentFragment.adoptedStyleSheets, nodeId, transaction);
|
|
28
67
|
}
|
|
29
|
-
function
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const serializedChildNode = serializeNode(childNode, parentNodePrivacyLevel, transaction);
|
|
33
|
-
if (serializedChildNode) {
|
|
34
|
-
result.push(serializedChildNode);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
return result;
|
|
68
|
+
function serializeDocumentTypeNode(cursor, documentType, transaction) {
|
|
69
|
+
const { insertionPoint } = cursor.advance(documentType);
|
|
70
|
+
transaction.addNode(insertionPoint, require_roles.createString(require_sessionReplayConstants.StringRole.NodeName, "#doctype"), require_roles.createString(require_sessionReplayConstants.StringRole.AttributeValue, documentType.name), require_roles.createString(require_sessionReplayConstants.StringRole.AttributeValue, documentType.publicId), require_roles.createString(require_sessionReplayConstants.StringRole.Url, documentType.systemId));
|
|
38
71
|
}
|
|
39
|
-
function
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
72
|
+
function serializeElementNode(cursor, element, privacyLevel, transaction) {
|
|
73
|
+
const { nodeId, insertionPoint } = cursor.advance(element);
|
|
74
|
+
const domAttributes = require_serializeAttributes.serializeDOMAttributes(element, privacyLevel, transaction);
|
|
75
|
+
transaction.addNode(insertionPoint, encodedElementName(element), ...domAttributes);
|
|
76
|
+
if (require_canvasUtils.isCanvasElement(element)) transaction.scope.canvasManager.markCanvas(element, 1);
|
|
77
|
+
const { _cssText: cssText, rr_mediaState: mediaState, rr_scrollLeft: scrollLeft, rr_scrollTop: scrollTop } = require_serializeAttributes.serializeVirtualAttributes(element, privacyLevel, transaction);
|
|
78
|
+
const linkOrStyle = element;
|
|
79
|
+
if (cssText !== void 0 && linkOrStyle.sheet) {
|
|
80
|
+
const sheetId = transaction.scope.styleSheetIds.getOrInsert(linkOrStyle.sheet);
|
|
81
|
+
transaction.addStyleSheet(require_roles.createString(require_sessionReplayConstants.StringRole.Css, cssText));
|
|
82
|
+
transaction.attachStyleSheets(nodeId, [sheetId]);
|
|
83
|
+
}
|
|
84
|
+
if (mediaState === "played") transaction.setMediaPlaybackState(nodeId, require_sessionReplayConstants.MediaInteractionType.Play);
|
|
85
|
+
else if (mediaState === "paused") transaction.setMediaPlaybackState(nodeId, require_sessionReplayConstants.MediaInteractionType.Pause);
|
|
86
|
+
if (scrollLeft !== void 0 || scrollTop !== void 0) transaction.setScrollPosition(nodeId, scrollLeft || 0, scrollTop || 0);
|
|
46
87
|
}
|
|
47
|
-
function
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
type: types_1.NodeType.DocumentFragment,
|
|
54
|
-
id: transaction.assignId(element),
|
|
55
|
-
childNodes: serializeChildNodes(element, parentNodePrivacyLevel, transaction),
|
|
56
|
-
isShadowRoot,
|
|
57
|
-
adoptedStyleSheets: isShadowRoot ? (0, serializeStyleSheets_1.serializeStyleSheets)(element.adoptedStyleSheets) : undefined,
|
|
58
|
-
};
|
|
88
|
+
function serializeTextNode(cursor, textNode, privacyLevel, transaction) {
|
|
89
|
+
const { insertionPoint } = cursor.advance(textNode);
|
|
90
|
+
const textContent = (0, _kubesense_kubesense_browser_rum_core.getTextContent)(textNode, privacyLevel);
|
|
91
|
+
transaction.addNode(insertionPoint, require_roles.createString(require_sessionReplayConstants.StringRole.NodeName, "#text"), require_roles.createString(require_sessionReplayConstants.StringRole.TextContent, textContent));
|
|
59
92
|
}
|
|
60
|
-
function
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
id: transaction.assignId(documentType),
|
|
64
|
-
name: documentType.name,
|
|
65
|
-
publicId: documentType.publicId,
|
|
66
|
-
systemId: documentType.systemId,
|
|
67
|
-
};
|
|
93
|
+
function serializeCDataNode(cursor, cdataNode, transaction) {
|
|
94
|
+
const { insertionPoint } = cursor.advance(cdataNode);
|
|
95
|
+
transaction.addNode(insertionPoint, require_roles.createString(require_sessionReplayConstants.StringRole.NodeName, "#cdata-section"));
|
|
68
96
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
* - Canvas state,
|
|
76
|
-
* - Media (video/audio) play mode + currentTime
|
|
77
|
-
* - iframe contents
|
|
78
|
-
* - webcomponents
|
|
79
|
-
* 3. CUSTOM PROPERTIES:
|
|
80
|
-
* - height+width for when `hidden` to cover the element
|
|
81
|
-
* 4. EXCLUDED INTERACTION STATE:
|
|
82
|
-
* - focus (possible, but not worth perf impact)
|
|
83
|
-
* - hover (tracked only via mouse activity)
|
|
84
|
-
* - fullscreen mode
|
|
85
|
-
*/
|
|
86
|
-
function serializeElementNode(element, parentNodePrivacyLevel, transaction) {
|
|
87
|
-
const tagName = (0, serializationUtils_1.getValidTagName)(element.tagName);
|
|
88
|
-
const isSVG = isSVGElement(element) || undefined;
|
|
89
|
-
// For performance reason, we don't use getNodePrivacyLevel directly: we leverage the
|
|
90
|
-
// parentNodePrivacyLevel option to avoid iterating over all parents
|
|
91
|
-
const nodePrivacyLevel = (0, kubesense_browser_rum_core_1.reducePrivacyLevel)((0, kubesense_browser_rum_core_1.getNodeSelfPrivacyLevel)(element), parentNodePrivacyLevel);
|
|
92
|
-
if (nodePrivacyLevel === kubesense_browser_rum_core_1.NodePrivacyLevel.HIDDEN) {
|
|
93
|
-
const { width, height } = element.getBoundingClientRect();
|
|
94
|
-
return {
|
|
95
|
-
type: types_1.NodeType.Element,
|
|
96
|
-
id: transaction.assignId(element),
|
|
97
|
-
tagName,
|
|
98
|
-
attributes: {
|
|
99
|
-
rr_width: `${width}px`,
|
|
100
|
-
rr_height: `${height}px`,
|
|
101
|
-
[kubesense_browser_rum_core_1.PRIVACY_ATTR_NAME]: kubesense_browser_rum_core_1.PRIVACY_ATTR_VALUE_HIDDEN,
|
|
102
|
-
},
|
|
103
|
-
childNodes: [],
|
|
104
|
-
isSVG,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
// Ignore Elements like Script and some Link, Metas
|
|
108
|
-
if (nodePrivacyLevel === kubesense_browser_rum_core_1.NodePrivacyLevel.IGNORE) {
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
const id = transaction.assignId(element);
|
|
112
|
-
const attributes = (0, serializeAttributes_1.serializeAttributes)(element, nodePrivacyLevel, transaction);
|
|
113
|
-
let childNodes = [];
|
|
114
|
-
if ((0, kubesense_browser_rum_core_1.hasChildNodes)(element) &&
|
|
115
|
-
// Do not serialize style children as the css rules are already in the _cssText attribute
|
|
116
|
-
tagName !== 'style') {
|
|
117
|
-
childNodes = serializeChildNodes(element, nodePrivacyLevel, transaction);
|
|
118
|
-
}
|
|
119
|
-
return {
|
|
120
|
-
type: types_1.NodeType.Element,
|
|
121
|
-
id,
|
|
122
|
-
tagName,
|
|
123
|
-
attributes,
|
|
124
|
-
childNodes,
|
|
125
|
-
isSVG,
|
|
126
|
-
};
|
|
97
|
+
function serializeHiddenNodePlaceholder(cursor, node, transaction) {
|
|
98
|
+
if (!(0, _kubesense_kubesense_browser_rum_core.isElementNode)(node)) return;
|
|
99
|
+
const { nodeId, insertionPoint } = cursor.advance(node);
|
|
100
|
+
transaction.addNode(insertionPoint, encodedElementName(node), require_roles.createAttributeAssignment(require_serializationUtils.normalizedTagName(node), _kubesense_kubesense_browser_rum_core.PRIVACY_ATTR_NAME, _kubesense_kubesense_browser_rum_core.PRIVACY_ATTR_VALUE_HIDDEN));
|
|
101
|
+
const { width, height } = node.getBoundingClientRect();
|
|
102
|
+
transaction.setSize(nodeId, width, height);
|
|
127
103
|
}
|
|
128
|
-
function
|
|
129
|
-
|
|
104
|
+
function serializeStyleSheets(sheets, nodeId, transaction) {
|
|
105
|
+
if (!sheets || sheets.length === 0) return;
|
|
106
|
+
transaction.attachStyleSheets(nodeId, sheets.map((sheet) => serializeStyleSheet(sheet, transaction)));
|
|
130
107
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const textContent = (0, kubesense_browser_rum_core_1.getTextContent)(textNode, parentNodePrivacyLevel);
|
|
138
|
-
if (textContent === undefined) {
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
return {
|
|
142
|
-
type: types_1.NodeType.Text,
|
|
143
|
-
id: transaction.assignId(textNode),
|
|
144
|
-
textContent,
|
|
145
|
-
};
|
|
108
|
+
function serializeStyleSheet(sheet, transaction) {
|
|
109
|
+
const rules = Array.from(sheet.cssRules || sheet.rules, (rule) => require_roles.createString(require_sessionReplayConstants.StringRole.Css, rule.cssText));
|
|
110
|
+
const mediaList = sheet.media.length > 0 ? Array.from(sheet.media).map((medium) => require_roles.createString(require_sessionReplayConstants.StringRole.Css, medium)) : void 0;
|
|
111
|
+
transaction.addMetric("cssText", rules.reduce((totalLength, rule) => totalLength + rule.string.length, 0));
|
|
112
|
+
transaction.addStyleSheet(rules, mediaList, sheet.disabled);
|
|
113
|
+
return transaction.scope.styleSheetIds.getOrInsert(sheet);
|
|
146
114
|
}
|
|
147
|
-
function
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
textContent: '',
|
|
152
|
-
};
|
|
115
|
+
function encodedElementName(element) {
|
|
116
|
+
const nodeName = element.nodeName;
|
|
117
|
+
if (isSVGElement(element)) return require_roles.createString(require_sessionReplayConstants.StringRole.NodeName, `svg>${nodeName}`);
|
|
118
|
+
return require_roles.createString(require_sessionReplayConstants.StringRole.NodeName, nodeName);
|
|
153
119
|
}
|
|
120
|
+
function isSVGElement(element) {
|
|
121
|
+
return element.namespaceURI === "http://www.w3.org/2000/svg";
|
|
122
|
+
}
|
|
123
|
+
//#endregion
|
|
124
|
+
exports.serializeNode = serializeNode;
|
|
125
|
+
|
|
154
126
|
//# sourceMappingURL=serializeNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializeNode.js","sourceRoot":"","sources":["../../../../src/domain/record/serialization/serializeNode.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serializeNode.js","names":["NodePrivacyLevel","getNodeSelfPrivacyLevel","reducePrivacyLevel","createString","StringRole","getScrollX","getScrollY","isNodeShadowRoot","serializeDOMAttributes","isCanvasElement","serializeVirtualAttributes","MediaInteractionType","getTextContent","isElementNode","createAttributeAssignment","normalizedTagName","PRIVACY_ATTR_NAME","PRIVACY_ATTR_VALUE_HIDDEN"],"sources":["../../../../src/domain/record/serialization/serializeNode.ts"],"sourcesContent":["import {\n reducePrivacyLevel,\n getNodeSelfPrivacyLevel,\n getTextContent,\n isNodeShadowRoot,\n forEachChildNodes,\n NodePrivacyLevel,\n PRIVACY_ATTR_NAME,\n PRIVACY_ATTR_VALUE_HIDDEN,\n getScrollX,\n getScrollY,\n isElementNode,\n} from '@kubesense/kubesense-browser-rum-core'\nimport type { RoleAnnotatedStringLiteral } from '../../../types'\nimport { MediaInteractionType, StringRole } from '../../../types'\nimport type { NodeId, StyleSheetId } from '../encoding'\nimport { createAttributeAssignment, createString } from '../encoding'\nimport { isCanvasElement } from '../canvas/canvasUtils'\nimport { CanvasStatus } from '../canvas/canvasManager'\nimport type { InsertionCursor } from './insertionCursor'\nimport type { SerializationTransaction } from './serializationTransaction'\nimport { serializeDOMAttributes, serializeVirtualAttributes } from './serializeAttributes'\nimport { normalizedTagName } from './serializationUtils'\n\nexport function serializeNode(\n cursor: InsertionCursor,\n node: Node,\n parentPrivacyLevel: NodePrivacyLevel,\n transaction: SerializationTransaction\n): void {\n // Ignore the children of <style> elements; the CSS rules they contain are already\n // serialized as StyleSheetSnapshots.\n if (node.parentNode?.nodeName === 'STYLE') {\n return\n }\n\n // Never serialize the descendants of HIDDEN or IGNORE'd elements.\n if (parentPrivacyLevel === NodePrivacyLevel.HIDDEN || parentPrivacyLevel === NodePrivacyLevel.IGNORE) {\n return\n }\n\n let privacyLevel: NodePrivacyLevel\n\n const selfPrivacyLevel = getNodeSelfPrivacyLevel(node)\n if (selfPrivacyLevel) {\n privacyLevel = reducePrivacyLevel(selfPrivacyLevel, parentPrivacyLevel)\n } else {\n privacyLevel = parentPrivacyLevel\n }\n\n if (privacyLevel === NodePrivacyLevel.HIDDEN) {\n serializeHiddenNodePlaceholder(cursor, node, transaction)\n return\n }\n\n // Totally ignore risky or unwanted elements. (e.g. <script>, some <link> and <meta> elements)\n if (privacyLevel === NodePrivacyLevel.IGNORE) {\n return\n }\n\n switch (node.nodeType) {\n case node.CDATA_SECTION_NODE:\n serializeCDataNode(cursor, node as CDATASection, transaction)\n break\n case node.DOCUMENT_NODE:\n serializeDocumentNode(cursor, node as Document, transaction)\n break\n case node.DOCUMENT_FRAGMENT_NODE:\n serializeDocumentFragmentNode(cursor, node as DocumentFragment, transaction)\n break\n case node.DOCUMENT_TYPE_NODE:\n serializeDocumentTypeNode(cursor, node as DocumentType, transaction)\n break\n case node.ELEMENT_NODE:\n serializeElementNode(cursor, node as Element, privacyLevel, transaction)\n break\n case node.TEXT_NODE:\n serializeTextNode(cursor, node as Text, privacyLevel, transaction)\n break\n default:\n return\n }\n\n // If this node can't have children, we're done.\n switch (node.nodeType) {\n case node.CDATA_SECTION_NODE:\n case node.DOCUMENT_TYPE_NODE:\n case node.TEXT_NODE:\n return\n }\n\n cursor.descend()\n forEachChildNodes(node, (childNode) => {\n serializeNode(cursor, childNode, privacyLevel, transaction)\n })\n cursor.ascend()\n}\n\nfunction serializeDocumentNode(\n cursor: InsertionCursor,\n document: Document,\n transaction: SerializationTransaction\n): void {\n const { nodeId, insertionPoint } = cursor.advance(document)\n transaction.addNode(insertionPoint, createString(StringRole.NodeName, '#document'))\n transaction.setScrollPosition(nodeId, getScrollX(), getScrollY())\n serializeStyleSheets(document.adoptedStyleSheets, nodeId, transaction)\n}\n\nfunction serializeDocumentFragmentNode(\n cursor: InsertionCursor,\n documentFragment: DocumentFragment,\n transaction: SerializationTransaction\n): void {\n const { nodeId, insertionPoint } = cursor.advance(documentFragment)\n const isShadowRoot = isNodeShadowRoot(documentFragment)\n if (!isShadowRoot) {\n transaction.addNode(insertionPoint, createString(StringRole.NodeName, '#document-fragment'))\n return\n }\n\n transaction.addNode(insertionPoint, createString(StringRole.NodeName, '#shadow-root'))\n transaction.scope.shadowRootsController.addShadowRoot(documentFragment, transaction.scope)\n serializeStyleSheets(documentFragment.adoptedStyleSheets, nodeId, transaction)\n}\n\nfunction serializeDocumentTypeNode(\n cursor: InsertionCursor,\n documentType: DocumentType,\n transaction: SerializationTransaction\n): void {\n const { insertionPoint } = cursor.advance(documentType)\n transaction.addNode(\n insertionPoint,\n createString(StringRole.NodeName, '#doctype'),\n createString(StringRole.AttributeValue, documentType.name),\n createString(StringRole.AttributeValue, documentType.publicId),\n createString(StringRole.Url, documentType.systemId)\n )\n}\n\nfunction serializeElementNode(\n cursor: InsertionCursor,\n element: Element,\n privacyLevel: NodePrivacyLevel,\n transaction: SerializationTransaction\n): void {\n const { nodeId, insertionPoint } = cursor.advance(element)\n const domAttributes = serializeDOMAttributes(element, privacyLevel, transaction)\n transaction.addNode(insertionPoint, encodedElementName(element), ...domAttributes)\n\n if (isCanvasElement(element)) {\n transaction.scope.canvasManager.markCanvas(element, CanvasStatus.Dirty)\n }\n\n const {\n _cssText: cssText,\n rr_mediaState: mediaState,\n rr_scrollLeft: scrollLeft,\n rr_scrollTop: scrollTop,\n } = serializeVirtualAttributes(element, privacyLevel, transaction)\n\n const linkOrStyle = element as HTMLLinkElement | HTMLStyleElement\n if (cssText !== undefined && linkOrStyle.sheet) {\n const sheetId = transaction.scope.styleSheetIds.getOrInsert(linkOrStyle.sheet)\n transaction.addStyleSheet(createString(StringRole.Css, cssText))\n transaction.attachStyleSheets(nodeId, [sheetId])\n }\n\n if (mediaState === 'played') {\n transaction.setMediaPlaybackState(nodeId, MediaInteractionType.Play)\n } else if (mediaState === 'paused') {\n transaction.setMediaPlaybackState(nodeId, MediaInteractionType.Pause)\n }\n\n if (scrollLeft !== undefined || scrollTop !== undefined) {\n transaction.setScrollPosition(nodeId, scrollLeft || 0, scrollTop || 0)\n }\n}\n\nfunction serializeTextNode(\n cursor: InsertionCursor,\n textNode: Text,\n privacyLevel: NodePrivacyLevel,\n transaction: SerializationTransaction\n): void {\n const { insertionPoint } = cursor.advance(textNode)\n const textContent = getTextContent(textNode, privacyLevel)\n transaction.addNode(\n insertionPoint,\n createString(StringRole.NodeName, '#text'),\n createString(StringRole.TextContent, textContent)\n )\n}\n\nfunction serializeCDataNode(\n cursor: InsertionCursor,\n cdataNode: CDATASection,\n transaction: SerializationTransaction\n): void {\n const { insertionPoint } = cursor.advance(cdataNode)\n transaction.addNode(insertionPoint, createString(StringRole.NodeName, '#cdata-section'))\n}\n\nfunction serializeHiddenNodePlaceholder(\n cursor: InsertionCursor,\n node: Node,\n transaction: SerializationTransaction\n): void {\n // We only generate placeholders for element nodes; other hidden nodes are simply not\n // serialized. (But note that a non-element node can only be hidden if it's a descendant\n // of another hidden node, since only element nodes can have a different privacy level\n // than their parent.)\n if (!isElementNode(node)) {\n return\n }\n\n const { nodeId, insertionPoint } = cursor.advance(node)\n transaction.addNode(\n insertionPoint,\n encodedElementName(node),\n createAttributeAssignment(normalizedTagName(node), PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_HIDDEN)\n )\n const { width, height } = node.getBoundingClientRect()\n transaction.setSize(nodeId, width, height)\n}\n\nfunction serializeStyleSheets(\n sheets: CSSStyleSheet[] | undefined,\n nodeId: NodeId,\n transaction: SerializationTransaction\n): void {\n if (!sheets || sheets.length === 0) {\n return undefined\n }\n\n transaction.attachStyleSheets(\n nodeId,\n sheets.map((sheet) => serializeStyleSheet(sheet, transaction))\n )\n}\n\nfunction serializeStyleSheet(sheet: CSSStyleSheet, transaction: SerializationTransaction): StyleSheetId {\n const rules = Array.from(sheet.cssRules || sheet.rules, (rule) => createString(StringRole.Css, rule.cssText))\n const mediaList =\n sheet.media.length > 0 ? Array.from(sheet.media).map((medium) => createString(StringRole.Css, medium)) : undefined\n transaction.addMetric(\n 'cssText',\n rules.reduce((totalLength, rule) => totalLength + rule.string.length, 0)\n )\n transaction.addStyleSheet(rules, mediaList, sheet.disabled)\n return transaction.scope.styleSheetIds.getOrInsert(sheet)\n}\n\nfunction encodedElementName(element: Element): RoleAnnotatedStringLiteral {\n const nodeName = element.nodeName\n if (isSVGElement(element)) {\n return createString(StringRole.NodeName, `svg>${nodeName}`)\n }\n return createString(StringRole.NodeName, nodeName)\n}\n\nfunction isSVGElement(element: Element): element is SVGElement {\n return element.namespaceURI === 'http://www.w3.org/2000/svg'\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RecordingScope } from './recordingScope.ts';
|
|
2
|
-
import type { EmitRecordCallback, EmitStatsCallback } from './record.types';
|
|
2
|
+
import type { EmitRecordCallback, EmitResourceCallback, EmitStatsCallback } from './record.types';
|
|
3
3
|
export type AddShadowRootCallBack = (shadowRoot: ShadowRoot, scope: RecordingScope) => void;
|
|
4
4
|
export type RemoveShadowRootCallBack = (shadowRoot: ShadowRoot) => void;
|
|
5
5
|
export interface ShadowRootsController {
|
|
@@ -8,4 +8,4 @@ export interface ShadowRootsController {
|
|
|
8
8
|
stop: () => void;
|
|
9
9
|
flush: () => void;
|
|
10
10
|
}
|
|
11
|
-
export declare const initShadowRootsController: (emitRecord: EmitRecordCallback, emitStats: EmitStatsCallback) => ShadowRootsController;
|
|
11
|
+
export declare const initShadowRootsController: (emitRecord: EmitRecordCallback, emitResource: EmitResourceCallback, emitStats: EmitStatsCallback) => ShadowRootsController;
|
|
@@ -1,45 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
controllerByShadowRoot.forEach(({ stop }) => stop());
|
|
37
|
-
},
|
|
38
|
-
flush: () => {
|
|
39
|
-
controllerByShadowRoot.forEach(({ flush }) => flush());
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
return shadowRootsController;
|
|
1
|
+
const require_trackScroll = require("./trackers/trackScroll.js");
|
|
2
|
+
const require_trackInput = require("./trackers/trackInput.js");
|
|
3
|
+
const require_trackMutation = require("./trackers/trackMutation.js");
|
|
4
|
+
require("./trackers/index.js");
|
|
5
|
+
//#region src/domain/record/shadowRootsController.ts
|
|
6
|
+
const initShadowRootsController = (emitRecord, emitResource, emitStats) => {
|
|
7
|
+
const controllerByShadowRoot = /* @__PURE__ */ new Map();
|
|
8
|
+
return {
|
|
9
|
+
addShadowRoot: (shadowRoot, scope) => {
|
|
10
|
+
if (controllerByShadowRoot.has(shadowRoot)) return;
|
|
11
|
+
const mutationTracker = require_trackMutation.trackMutation(shadowRoot, emitRecord, emitResource, emitStats, scope);
|
|
12
|
+
const inputTracker = require_trackInput.trackInput(shadowRoot, emitRecord, emitStats, scope);
|
|
13
|
+
const scrollTracker = require_trackScroll.trackScroll(shadowRoot, emitRecord, scope);
|
|
14
|
+
controllerByShadowRoot.set(shadowRoot, {
|
|
15
|
+
flush: () => mutationTracker.flush(),
|
|
16
|
+
stop: () => {
|
|
17
|
+
mutationTracker.stop();
|
|
18
|
+
inputTracker.stop();
|
|
19
|
+
scrollTracker.stop();
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
removeShadowRoot: (shadowRoot) => {
|
|
24
|
+
const entry = controllerByShadowRoot.get(shadowRoot);
|
|
25
|
+
if (!entry) return;
|
|
26
|
+
entry.stop();
|
|
27
|
+
controllerByShadowRoot.delete(shadowRoot);
|
|
28
|
+
},
|
|
29
|
+
stop: () => {
|
|
30
|
+
controllerByShadowRoot.forEach(({ stop }) => stop());
|
|
31
|
+
},
|
|
32
|
+
flush: () => {
|
|
33
|
+
controllerByShadowRoot.forEach(({ flush }) => flush());
|
|
34
|
+
}
|
|
35
|
+
};
|
|
43
36
|
};
|
|
37
|
+
//#endregion
|
|
44
38
|
exports.initShadowRootsController = initShadowRootsController;
|
|
39
|
+
|
|
45
40
|
//# sourceMappingURL=shadowRootsController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadowRootsController.js","
|
|
1
|
+
{"version":3,"file":"shadowRootsController.js","names":["trackMutation","trackInput","trackScroll"],"sources":["../../../src/domain/record/shadowRootsController.ts"],"sourcesContent":["import type { RecordingScope } from './recordingScope.ts'\nimport type { EmitRecordCallback, EmitResourceCallback, EmitStatsCallback } from './record.types'\nimport { trackInput, trackMutation, trackScroll } from './trackers'\n\ninterface ShadowRootController {\n stop: () => void\n flush: () => void\n}\n\nexport type AddShadowRootCallBack = (shadowRoot: ShadowRoot, scope: RecordingScope) => void\nexport type RemoveShadowRootCallBack = (shadowRoot: ShadowRoot) => void\n\nexport interface ShadowRootsController {\n addShadowRoot: AddShadowRootCallBack\n removeShadowRoot: RemoveShadowRootCallBack\n stop: () => void\n flush: () => void\n}\n\nexport const initShadowRootsController = (\n emitRecord: EmitRecordCallback,\n emitResource: EmitResourceCallback,\n emitStats: EmitStatsCallback\n): ShadowRootsController => {\n const controllerByShadowRoot = new Map<ShadowRoot, ShadowRootController>()\n\n const shadowRootsController: ShadowRootsController = {\n addShadowRoot: (shadowRoot: ShadowRoot, scope: RecordingScope) => {\n if (controllerByShadowRoot.has(shadowRoot)) {\n return\n }\n const mutationTracker = trackMutation(shadowRoot, emitRecord, emitResource, emitStats, scope)\n // The change event does not bubble up across the shadow root, we have to listen on the shadow root\n const inputTracker = trackInput(shadowRoot, emitRecord, emitStats, scope)\n // The scroll event does not bubble up across the shadow root, we have to listen on the shadow root\n const scrollTracker = trackScroll(shadowRoot, emitRecord, scope)\n controllerByShadowRoot.set(shadowRoot, {\n flush: () => mutationTracker.flush(),\n stop: () => {\n mutationTracker.stop()\n inputTracker.stop()\n scrollTracker.stop()\n },\n })\n },\n removeShadowRoot: (shadowRoot: ShadowRoot) => {\n const entry = controllerByShadowRoot.get(shadowRoot)\n if (!entry) {\n // unidentified root cause: observed in some cases with shadow DOM added by browser extensions\n return\n }\n entry.stop()\n controllerByShadowRoot.delete(shadowRoot)\n },\n stop: () => {\n controllerByShadowRoot.forEach(({ stop }) => stop())\n },\n flush: () => {\n controllerByShadowRoot.forEach(({ flush }) => flush())\n },\n }\n return shadowRootsController\n}\n"],"mappings":";;;;;AAmBA,MAAa,6BACX,YACA,cACA,cAC0B;CAC1B,MAAM,yCAAyB,IAAI,IAAsC;CAqCzE,OAAO;EAlCL,gBAAgB,YAAwB,UAA0B;GAChE,IAAI,uBAAuB,IAAI,UAAU,GACvC;GAEF,MAAM,kBAAkBA,sBAAAA,cAAc,YAAY,YAAY,cAAc,WAAW,KAAK;GAE5F,MAAM,eAAeC,mBAAAA,WAAW,YAAY,YAAY,WAAW,KAAK;GAExE,MAAM,gBAAgBC,oBAAAA,YAAY,YAAY,YAAY,KAAK;GAC/D,uBAAuB,IAAI,YAAY;IACrC,aAAa,gBAAgB,MAAM;IACnC,YAAY;KACV,gBAAgB,KAAK;KACrB,aAAa,KAAK;KAClB,cAAc,KAAK;IACrB;GACF,CAAC;EACH;EACA,mBAAmB,eAA2B;GAC5C,MAAM,QAAQ,uBAAuB,IAAI,UAAU;GACnD,IAAI,CAAC,OAEH;GAEF,MAAM,KAAK;GACX,uBAAuB,OAAO,UAAU;EAC1C;EACA,YAAY;GACV,uBAAuB,SAAS,EAAE,WAAW,KAAK,CAAC;EACrD;EACA,aAAa;GACX,uBAAuB,SAAS,EAAE,YAAY,MAAM,CAAC;EACvD;CAEyB;AAC7B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { TimeStamp } from '@kubesense/kubesense-js-core/time';
|
|
1
2
|
import type { LifeCycle } from '@kubesense/kubesense-browser-rum-core';
|
|
2
|
-
import type { TimeStamp } from '@kubesense/kubesense-browser-core';
|
|
3
3
|
import { SerializationKind } from './serialization';
|
|
4
4
|
import type { RecordingScope } from './recordingScope';
|
|
5
5
|
import type { EmitRecordCallback, EmitStatsCallback } from './record.types';
|
|
@@ -1,59 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const serialization_1 = require("./serialization");
|
|
9
|
-
const viewports_1 = require("./viewports");
|
|
1
|
+
const require_sessionReplayConstants = require("../../types/sessionReplayConstants.js");
|
|
2
|
+
const require_serializeFullSnapshot = require("./serialization/serializeFullSnapshot.js");
|
|
3
|
+
require("./serialization/index.js");
|
|
4
|
+
const require_viewports = require("./viewports.js");
|
|
5
|
+
let _kubesense_kubesense_browser_rum_core = require("@kubesense/kubesense-browser-rum-core");
|
|
6
|
+
let _kubesense_kubesense_js_core_time = require("@kubesense/kubesense-js-core/time");
|
|
7
|
+
//#region src/domain/record/startFullSnapshots.ts
|
|
10
8
|
function startFullSnapshots(lifeCycle, emitRecord, emitStats, flushMutations, scope) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
stop: unsubscribe,
|
|
18
|
-
};
|
|
9
|
+
takeFullSnapshot((0, _kubesense_kubesense_js_core_time.timeStampNow)(), 0, emitRecord, emitStats, scope);
|
|
10
|
+
const { unsubscribe } = lifeCycle.subscribe(_kubesense_kubesense_browser_rum_core.LifeCycleEventType.VIEW_CREATED, (view) => {
|
|
11
|
+
flushMutations();
|
|
12
|
+
takeFullSnapshot(view.startClocks.timeStamp, 1, emitRecord, emitStats, scope);
|
|
13
|
+
});
|
|
14
|
+
return { stop: unsubscribe };
|
|
19
15
|
}
|
|
20
16
|
function takeFullSnapshot(timestamp, kind, emitRecord, emitStats, scope) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
initialOffset: {
|
|
43
|
-
left: (0, kubesense_browser_rum_core_1.getScrollX)(),
|
|
44
|
-
top: (0, kubesense_browser_rum_core_1.getScrollY)(),
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
type: types_1.RecordType.FullSnapshot,
|
|
48
|
-
timestamp,
|
|
49
|
-
});
|
|
50
|
-
if (window.visualViewport) {
|
|
51
|
-
transaction.add({
|
|
52
|
-
data: (0, viewports_1.getVisualViewport)(window.visualViewport),
|
|
53
|
-
type: types_1.RecordType.VisualViewport,
|
|
54
|
-
timestamp,
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
});
|
|
17
|
+
const { width, height } = (0, _kubesense_kubesense_browser_rum_core.getViewportDimension)();
|
|
18
|
+
emitRecord({
|
|
19
|
+
data: {
|
|
20
|
+
height,
|
|
21
|
+
href: window.location.href,
|
|
22
|
+
width
|
|
23
|
+
},
|
|
24
|
+
type: require_sessionReplayConstants.RecordType.Meta,
|
|
25
|
+
timestamp
|
|
26
|
+
});
|
|
27
|
+
emitRecord({
|
|
28
|
+
data: { has_focus: document.hasFocus() },
|
|
29
|
+
type: require_sessionReplayConstants.RecordType.Focus,
|
|
30
|
+
timestamp
|
|
31
|
+
});
|
|
32
|
+
require_serializeFullSnapshot.serializeFullSnapshot(timestamp, kind, document, emitRecord, emitStats, scope);
|
|
33
|
+
if (window.visualViewport) emitRecord({
|
|
34
|
+
data: require_viewports.getVisualViewport(window.visualViewport),
|
|
35
|
+
type: require_sessionReplayConstants.RecordType.VisualViewport,
|
|
36
|
+
timestamp
|
|
37
|
+
});
|
|
58
38
|
}
|
|
39
|
+
//#endregion
|
|
40
|
+
exports.startFullSnapshots = startFullSnapshots;
|
|
41
|
+
exports.takeFullSnapshot = takeFullSnapshot;
|
|
42
|
+
|
|
59
43
|
//# sourceMappingURL=startFullSnapshots.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startFullSnapshots.js","
|
|
1
|
+
{"version":3,"file":"startFullSnapshots.js","names":["timeStampNow","LifeCycleEventType","getViewportDimension","RecordType","getVisualViewport"],"sources":["../../../src/domain/record/startFullSnapshots.ts"],"sourcesContent":["import { LifeCycleEventType, getViewportDimension } from '@kubesense/kubesense-browser-rum-core'\nimport { timeStampNow } from '@kubesense/kubesense-js-core/time'\nimport type { TimeStamp } from '@kubesense/kubesense-js-core/time'\nimport type { LifeCycle } from '@kubesense/kubesense-browser-rum-core'\nimport { RecordType } from '../../types'\nimport { SerializationKind, serializeFullSnapshot } from './serialization'\nimport { getVisualViewport } from './viewports'\nimport type { RecordingScope } from './recordingScope'\nimport type { EmitRecordCallback, EmitStatsCallback } from './record.types'\n\nexport function startFullSnapshots(\n lifeCycle: LifeCycle,\n emitRecord: EmitRecordCallback,\n emitStats: EmitStatsCallback,\n flushMutations: () => void,\n scope: RecordingScope\n) {\n takeFullSnapshot(timeStampNow(), SerializationKind.INITIAL_FULL_SNAPSHOT, emitRecord, emitStats, scope)\n\n const { unsubscribe } = lifeCycle.subscribe(LifeCycleEventType.VIEW_CREATED, (view) => {\n flushMutations()\n takeFullSnapshot(\n view.startClocks.timeStamp,\n SerializationKind.SUBSEQUENT_FULL_SNAPSHOT,\n emitRecord,\n emitStats,\n scope\n )\n })\n\n return {\n stop: unsubscribe,\n }\n}\n\nexport function takeFullSnapshot(\n timestamp: TimeStamp,\n kind: SerializationKind,\n emitRecord: EmitRecordCallback,\n emitStats: EmitStatsCallback,\n scope: RecordingScope\n): void {\n const { width, height } = getViewportDimension()\n emitRecord({\n data: {\n height,\n href: window.location.href,\n width,\n },\n type: RecordType.Meta,\n timestamp,\n })\n\n emitRecord({\n data: {\n has_focus: document.hasFocus(),\n },\n type: RecordType.Focus,\n timestamp,\n })\n\n serializeFullSnapshot(timestamp, kind, document, emitRecord, emitStats, scope)\n\n if (window.visualViewport) {\n emitRecord({\n data: getVisualViewport(window.visualViewport),\n type: RecordType.VisualViewport,\n timestamp,\n })\n }\n}\n"],"mappings":";;;;;;;AAUA,SAAgB,mBACd,WACA,YACA,WACA,gBACA,OACA;CACA,kBAAA,GAAiBA,kCAAAA,aAAAA,CAAa,GAAA,GAA4C,YAAY,WAAW,KAAK;CAEtG,MAAM,EAAE,gBAAgB,UAAU,UAAUC,sCAAAA,mBAAmB,eAAe,SAAS;EACrF,eAAe;EACf,iBACE,KAAK,YAAY,WAAA,GAEjB,YACA,WACA,KACF;CACF,CAAC;CAED,OAAO,EACL,MAAM,YACR;AACF;AAEA,SAAgB,iBACd,WACA,MACA,YACA,WACA,OACM;CACN,MAAM,EAAE,OAAO,YAAA,GAAWC,sCAAAA,qBAAAA,CAAqB;CAC/C,WAAW;EACT,MAAM;GACJ;GACA,MAAM,OAAO,SAAS;GACtB;EACF;EACA,MAAMC,+BAAAA,WAAW;EACjB;CACF,CAAC;CAED,WAAW;EACT,MAAM,EACJ,WAAW,SAAS,SAAS,EAC/B;EACA,MAAMA,+BAAAA,WAAW;EACjB;CACF,CAAC;CAED,8BAAA,sBAAsB,WAAW,MAAM,UAAU,YAAY,WAAW,KAAK;CAE7E,IAAI,OAAO,gBACT,WAAW;EACT,MAAMC,kBAAAA,kBAAkB,OAAO,cAAc;EAC7C,MAAMD,+BAAAA,WAAW;EACjB;CACF,CAAC;AAEL"}
|
|
@@ -5,8 +5,9 @@ export { trackViewportResize, trackVisualViewportResize } from './trackViewportR
|
|
|
5
5
|
export { trackMediaInteraction } from './trackMediaInteraction';
|
|
6
6
|
export { trackStyleSheet } from './trackStyleSheet';
|
|
7
7
|
export { trackFocus } from './trackFocus';
|
|
8
|
-
export { trackFrustration } from './trackFrustration';
|
|
9
8
|
export { trackViewEnd } from './trackViewEnd';
|
|
10
9
|
export { trackInput } from './trackInput';
|
|
11
10
|
export { trackMutation } from './trackMutation';
|
|
11
|
+
export { trackCanvasContent } from './trackCanvasContent';
|
|
12
|
+
export { trackCanvasCapture } from './trackCanvasCapture';
|
|
12
13
|
export type { Tracker } from './tracker.types';
|