@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,44 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.MUTATION_PROCESS_MIN_DELAY = void 0;
|
|
4
|
-
exports.createMutationBatch = createMutationBatch;
|
|
5
|
-
const kubesense_browser_core_1 = require("@kubesense/kubesense-browser-core");
|
|
1
|
+
let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
|
|
2
|
+
//#region src/domain/record/mutationBatch.ts
|
|
6
3
|
/**
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
* Maximum duration to wait before processing mutations. If the browser is idle, mutations will be
|
|
5
|
+
* processed more quickly. If the browser is busy executing small tasks (ex: rendering frames), the
|
|
6
|
+
* mutations will wait MUTATION_PROCESS_MAX_DELAY milliseconds before being processed. If the
|
|
7
|
+
* browser is busy executing a longer task, mutations will be processed after this task.
|
|
8
|
+
*/
|
|
12
9
|
const MUTATION_PROCESS_MAX_DELAY = 100;
|
|
13
|
-
/**
|
|
14
|
-
* Minimum duration to wait before processing mutations. This is used to batch mutations together
|
|
15
|
-
* and be able to deduplicate them to save processing time and bandwidth.
|
|
16
|
-
* 16ms is the duration of a frame at 60fps that ensure fluid UI.
|
|
17
|
-
*/
|
|
18
|
-
exports.MUTATION_PROCESS_MIN_DELAY = 16;
|
|
19
10
|
function createMutationBatch(processMutationBatch) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
11
|
+
let cancelScheduledFlush = _kubesense_kubesense_browser_core.noop;
|
|
12
|
+
let pendingMutations = [];
|
|
13
|
+
let flushScheduled = false;
|
|
14
|
+
function scheduleFlush() {
|
|
15
|
+
if (!flushScheduled) {
|
|
16
|
+
flushScheduled = true;
|
|
17
|
+
cancelScheduledFlush = (0, _kubesense_kubesense_browser_core.requestIdleCallback)(throttledFlush, { timeout: MUTATION_PROCESS_MAX_DELAY });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function flush() {
|
|
21
|
+
cancelScheduledFlush();
|
|
22
|
+
flushScheduled = false;
|
|
23
|
+
processMutationBatch(pendingMutations);
|
|
24
|
+
pendingMutations = [];
|
|
25
|
+
}
|
|
26
|
+
const { throttled: throttledFlush, cancel: cancelThrottle } = (0, _kubesense_kubesense_browser_core.throttle)(flush, 16, { leading: false });
|
|
27
|
+
return {
|
|
28
|
+
addMutations: (mutations) => {
|
|
29
|
+
scheduleFlush();
|
|
30
|
+
for (const mutation of mutations) pendingMutations.push(mutation);
|
|
31
|
+
},
|
|
32
|
+
notifyContentMutated: scheduleFlush,
|
|
33
|
+
flush,
|
|
34
|
+
stop: () => {
|
|
35
|
+
cancelScheduledFlush();
|
|
36
|
+
cancelThrottle();
|
|
37
|
+
}
|
|
38
|
+
};
|
|
43
39
|
}
|
|
40
|
+
//#endregion
|
|
41
|
+
exports.createMutationBatch = createMutationBatch;
|
|
42
|
+
|
|
44
43
|
//# sourceMappingURL=mutationBatch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutationBatch.js","
|
|
1
|
+
{"version":3,"file":"mutationBatch.js","names":["noop","requestIdleCallback","throttle"],"sources":["../../../src/domain/record/mutationBatch.ts"],"sourcesContent":["import { noop, throttle, requestIdleCallback } from '@kubesense/kubesense-browser-core'\nimport type { RumMutationRecord } from '@kubesense/kubesense-browser-rum-core'\n\n/**\n * Maximum duration to wait before processing mutations. If the browser is idle, mutations will be\n * processed more quickly. If the browser is busy executing small tasks (ex: rendering frames), the\n * mutations will wait MUTATION_PROCESS_MAX_DELAY milliseconds before being processed. If the\n * browser is busy executing a longer task, mutations will be processed after this task.\n */\nconst MUTATION_PROCESS_MAX_DELAY = 100\n/**\n * Minimum duration to wait before processing mutations. This is used to batch mutations together\n * and be able to deduplicate them to save processing time and bandwidth.\n * 16ms is the duration of a frame at 60fps that ensure fluid UI.\n */\nexport const MUTATION_PROCESS_MIN_DELAY = 16\n\nexport function createMutationBatch(processMutationBatch: (mutations: RumMutationRecord[]) => void) {\n let cancelScheduledFlush = noop\n let pendingMutations: RumMutationRecord[] = []\n let flushScheduled = false\n\n function scheduleFlush() {\n if (!flushScheduled) {\n flushScheduled = true\n cancelScheduledFlush = requestIdleCallback(throttledFlush, { timeout: MUTATION_PROCESS_MAX_DELAY })\n }\n }\n\n function flush() {\n cancelScheduledFlush()\n flushScheduled = false\n processMutationBatch(pendingMutations)\n pendingMutations = []\n }\n\n const { throttled: throttledFlush, cancel: cancelThrottle } = throttle(flush, MUTATION_PROCESS_MIN_DELAY, {\n leading: false,\n })\n\n return {\n addMutations: (mutations: RumMutationRecord[]) => {\n scheduleFlush()\n for (const mutation of mutations) {\n pendingMutations.push(mutation)\n }\n },\n\n notifyContentMutated: scheduleFlush,\n\n flush,\n\n stop: () => {\n cancelScheduledFlush()\n cancelThrottle()\n },\n }\n}\n"],"mappings":";;;;;;;;AASA,MAAM,6BAA6B;AAQnC,SAAgB,oBAAoB,sBAAgE;CAClG,IAAI,uBAAuBA,kCAAAA;CAC3B,IAAI,mBAAwC,CAAC;CAC7C,IAAI,iBAAiB;CAErB,SAAS,gBAAgB;EACvB,IAAI,CAAC,gBAAgB;GACnB,iBAAiB;GACjB,wBAAA,GAAuBC,kCAAAA,oBAAAA,CAAoB,gBAAgB,EAAE,SAAS,2BAA2B,CAAC;EACpG;CACF;CAEA,SAAS,QAAQ;EACf,qBAAqB;EACrB,iBAAiB;EACjB,qBAAqB,gBAAgB;EACrC,mBAAmB,CAAC;CACtB;CAEA,MAAM,EAAE,WAAW,gBAAgB,QAAQ,oBAAA,GAAmBC,kCAAAA,SAAAA,CAAS,OAAA,IAAmC,EACxG,SAAS,MACX,CAAC;CAED,OAAO;EACL,eAAe,cAAmC;GAChD,cAAc;GACd,KAAK,MAAM,YAAY,WACrB,iBAAiB,KAAK,QAAQ;EAElC;EAEA,sBAAsB;EAEtB;EAEA,YAAY;GACV,qBAAqB;GACrB,eAAe;EACjB;CACF;AACF"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { LifeCycle, RumConfiguration, ViewHistory } from '@kubesense/kubesense-browser-rum-core';
|
|
2
2
|
import type { ShadowRootsController } from './shadowRootsController';
|
|
3
|
-
import type { EmitRecordCallback, EmitStatsCallback } from './record.types';
|
|
3
|
+
import type { EmitRecordCallback, EmitStatsCallback, EmitResourceCallback } from './record.types';
|
|
4
4
|
export interface RecordOptions {
|
|
5
5
|
emitRecord: EmitRecordCallback;
|
|
6
|
+
emitResource: EmitResourceCallback;
|
|
6
7
|
emitStats: EmitStatsCallback;
|
|
7
8
|
configuration: RumConfiguration;
|
|
8
9
|
lifeCycle: LifeCycle;
|
|
@@ -12,5 +13,10 @@ export interface RecordAPI {
|
|
|
12
13
|
stop: () => void;
|
|
13
14
|
flushMutations: () => void;
|
|
14
15
|
shadowRootsController: ShadowRootsController;
|
|
16
|
+
/**
|
|
17
|
+
* Starts the record stream over with a new full snapshot, so replay can recover when records
|
|
18
|
+
* already emitted never reached the intake.
|
|
19
|
+
*/
|
|
20
|
+
takeFullSnapshot: () => void;
|
|
15
21
|
}
|
|
16
22
|
export declare function record(options: RecordOptions): RecordAPI;
|
|
@@ -1,90 +1,79 @@
|
|
|
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
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.record = record;
|
|
37
|
-
const kubesense_browser_core_1 = require("@kubesense/kubesense-browser-core");
|
|
38
|
-
const replayStats = __importStar(require("../replayStats"));
|
|
39
|
-
const trackers_1 = require("./trackers");
|
|
40
|
-
const elementsScrollPositions_1 = require("./elementsScrollPositions");
|
|
41
|
-
const shadowRootsController_1 = require("./shadowRootsController");
|
|
42
|
-
const startFullSnapshots_1 = require("./startFullSnapshots");
|
|
43
|
-
const eventIds_1 = require("./eventIds");
|
|
44
|
-
const nodeIds_1 = require("./nodeIds");
|
|
45
|
-
const recordingScope_1 = require("./recordingScope");
|
|
1
|
+
const require_canvasManager = require("./canvas/canvasManager.js");
|
|
2
|
+
require("./serialization/index.js");
|
|
3
|
+
const require_startFullSnapshots = require("./startFullSnapshots.js");
|
|
4
|
+
const require_recordingScope = require("./recordingScope.js");
|
|
5
|
+
const require_elementsScrollPositions = require("./elementsScrollPositions.js");
|
|
6
|
+
const require_replayStats = require("../replayStats.js");
|
|
7
|
+
const require_trackMove = require("./trackers/trackMove.js");
|
|
8
|
+
const require_trackMouseInteraction = require("./trackers/trackMouseInteraction.js");
|
|
9
|
+
const require_trackScroll = require("./trackers/trackScroll.js");
|
|
10
|
+
const require_trackViewportResize = require("./trackers/trackViewportResize.js");
|
|
11
|
+
const require_trackMediaInteraction = require("./trackers/trackMediaInteraction.js");
|
|
12
|
+
const require_trackStyleSheet = require("./trackers/trackStyleSheet.js");
|
|
13
|
+
const require_trackFocus = require("./trackers/trackFocus.js");
|
|
14
|
+
const require_trackViewEnd = require("./trackers/trackViewEnd.js");
|
|
15
|
+
const require_trackInput = require("./trackers/trackInput.js");
|
|
16
|
+
const require_trackMutation = require("./trackers/trackMutation.js");
|
|
17
|
+
const require_trackCanvasContent = require("./trackers/trackCanvasContent.js");
|
|
18
|
+
const require_trackCanvasCapture = require("./trackers/trackCanvasCapture.js");
|
|
19
|
+
require("./trackers/index.js");
|
|
20
|
+
const require_shadowRootsController = require("./shadowRootsController.js");
|
|
21
|
+
let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
|
|
22
|
+
let _kubesense_kubesense_js_core_time = require("@kubesense/kubesense-js-core/time");
|
|
23
|
+
//#region src/domain/record/record.ts
|
|
46
24
|
function record(options) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
25
|
+
const { emitRecord, emitResource, emitStats, configuration, lifeCycle } = options;
|
|
26
|
+
if (!emitRecord || !emitResource || !emitStats) throw new Error("emit functions are required");
|
|
27
|
+
const processRecord = (record) => {
|
|
28
|
+
emitRecord(record);
|
|
29
|
+
(0, _kubesense_kubesense_browser_core.sendToExtension)("record", { record });
|
|
30
|
+
const view = options.viewHistory.findView();
|
|
31
|
+
require_replayStats.addRecord(view.id);
|
|
32
|
+
};
|
|
33
|
+
const processResource = (hash, content, onDiscard) => {
|
|
34
|
+
emitResource(hash, content, onDiscard);
|
|
35
|
+
const view = options.viewHistory.findView();
|
|
36
|
+
require_replayStats.addResource(view.id);
|
|
37
|
+
};
|
|
38
|
+
const canvasManager = require_canvasManager.createCanvasManager();
|
|
39
|
+
const shadowRootsController = require_shadowRootsController.initShadowRootsController(processRecord, processResource, emitStats);
|
|
40
|
+
const scope = require_recordingScope.createRecordingScope(canvasManager, configuration, require_elementsScrollPositions.createElementsScrollPositions(), shadowRootsController);
|
|
41
|
+
const { stop: stopFullSnapshots } = require_startFullSnapshots.startFullSnapshots(lifeCycle, processRecord, emitStats, flushMutations, scope);
|
|
42
|
+
function flushMutations() {
|
|
43
|
+
shadowRootsController.flush();
|
|
44
|
+
mutationTracker.flush();
|
|
45
|
+
}
|
|
46
|
+
const mutationTracker = require_trackMutation.trackMutation(document, processRecord, processResource, emitStats, scope);
|
|
47
|
+
const trackers = [
|
|
48
|
+
mutationTracker,
|
|
49
|
+
require_trackMove.trackMove(processRecord, scope),
|
|
50
|
+
require_trackMouseInteraction.trackMouseInteraction(processRecord, scope),
|
|
51
|
+
require_trackScroll.trackScroll(document, processRecord, scope),
|
|
52
|
+
require_trackViewportResize.trackViewportResize(processRecord),
|
|
53
|
+
require_trackInput.trackInput(document, processRecord, emitStats, scope),
|
|
54
|
+
require_trackMediaInteraction.trackMediaInteraction(processRecord, scope),
|
|
55
|
+
require_trackStyleSheet.trackStyleSheet(processRecord, scope),
|
|
56
|
+
require_trackFocus.trackFocus(processRecord),
|
|
57
|
+
require_trackViewportResize.trackVisualViewportResize(processRecord),
|
|
58
|
+
require_trackViewEnd.trackViewEnd(lifeCycle, processRecord, flushMutations),
|
|
59
|
+
require_trackCanvasContent.trackCanvasContent(scope),
|
|
60
|
+
require_trackCanvasCapture.trackCanvasCapture(scope, mutationTracker.notifyContentMutated)
|
|
61
|
+
];
|
|
62
|
+
return {
|
|
63
|
+
stop: () => {
|
|
64
|
+
shadowRootsController.stop();
|
|
65
|
+
trackers.forEach((tracker) => tracker.stop());
|
|
66
|
+
stopFullSnapshots();
|
|
67
|
+
},
|
|
68
|
+
flushMutations,
|
|
69
|
+
shadowRootsController,
|
|
70
|
+
takeFullSnapshot: () => {
|
|
71
|
+
flushMutations();
|
|
72
|
+
require_startFullSnapshots.takeFullSnapshot((0, _kubesense_kubesense_js_core_time.timeStampNow)(), 1, processRecord, emitStats, scope);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
89
75
|
}
|
|
76
|
+
//#endregion
|
|
77
|
+
exports.record = record;
|
|
78
|
+
|
|
90
79
|
//# sourceMappingURL=record.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","
|
|
1
|
+
{"version":3,"file":"record.js","names":["createCanvasManager","initShadowRootsController","createRecordingScope","createElementsScrollPositions","startFullSnapshots","trackMutation","trackMove","trackMouseInteraction","trackScroll","trackViewportResize","trackInput","trackMediaInteraction","trackStyleSheet","trackFocus","trackVisualViewportResize","trackViewEnd","trackCanvasContent","trackCanvasCapture","timeStampNow"],"sources":["../../../src/domain/record/record.ts"],"sourcesContent":["import { sendToExtension } from '@kubesense/kubesense-browser-core'\nimport { timeStampNow } from '@kubesense/kubesense-js-core/time'\nimport type { LifeCycle, RumConfiguration, ViewHistory } from '@kubesense/kubesense-browser-rum-core'\nimport * as replayStats from '../replayStats'\nimport type { BrowserRecord } from '../../types'\nimport type { Tracker } from './trackers'\nimport {\n trackFocus,\n trackInput,\n trackMediaInteraction,\n trackMouseInteraction,\n trackMove,\n trackMutation,\n trackScroll,\n trackStyleSheet,\n trackViewEnd,\n trackViewportResize,\n trackVisualViewportResize,\n trackCanvasContent,\n trackCanvasCapture,\n} from './trackers'\nimport { createElementsScrollPositions } from './elementsScrollPositions'\nimport type { ShadowRootsController } from './shadowRootsController'\nimport { initShadowRootsController } from './shadowRootsController'\nimport { startFullSnapshots, takeFullSnapshot } from './startFullSnapshots'\nimport type { EmitRecordCallback, EmitStatsCallback, EmitResourceCallback } from './record.types'\nimport { createRecordingScope } from './recordingScope'\nimport { createCanvasManager } from './canvas/canvasManager'\nimport { SerializationKind } from './serialization'\n\nexport interface RecordOptions {\n emitRecord: EmitRecordCallback\n emitResource: EmitResourceCallback\n emitStats: EmitStatsCallback\n configuration: RumConfiguration\n lifeCycle: LifeCycle\n viewHistory: ViewHistory\n}\n\nexport interface RecordAPI {\n stop: () => void\n flushMutations: () => void\n shadowRootsController: ShadowRootsController\n /**\n * Starts the record stream over with a new full snapshot, so replay can recover when records\n * already emitted never reached the intake.\n */\n takeFullSnapshot: () => void\n}\n\nexport function record(options: RecordOptions): RecordAPI {\n const { emitRecord, emitResource, emitStats, configuration, lifeCycle } = options\n // runtime checks for user options\n if (!emitRecord || !emitResource || !emitStats) {\n throw new Error('emit functions are required')\n }\n\n const processRecord: EmitRecordCallback = (record: BrowserRecord) => {\n emitRecord(record)\n sendToExtension('record', { record })\n const view = options.viewHistory.findView()!\n replayStats.addRecord(view.id)\n }\n\n const processResource: EmitResourceCallback = (hash, content, onDiscard) => {\n emitResource(hash, content, onDiscard)\n const view = options.viewHistory.findView()!\n replayStats.addResource(view.id)\n }\n\n const canvasManager = createCanvasManager()\n const shadowRootsController = initShadowRootsController(processRecord, processResource, emitStats)\n const scope = createRecordingScope(\n canvasManager,\n configuration,\n createElementsScrollPositions(),\n shadowRootsController\n )\n\n const { stop: stopFullSnapshots } = startFullSnapshots(lifeCycle, processRecord, emitStats, flushMutations, scope)\n\n function flushMutations() {\n shadowRootsController.flush()\n mutationTracker.flush()\n }\n\n const mutationTracker = trackMutation(document, processRecord, processResource, emitStats, scope)\n const trackers: Tracker[] = [\n mutationTracker,\n trackMove(processRecord, scope),\n trackMouseInteraction(processRecord, scope),\n trackScroll(document, processRecord, scope),\n trackViewportResize(processRecord),\n trackInput(document, processRecord, emitStats, scope),\n trackMediaInteraction(processRecord, scope),\n trackStyleSheet(processRecord, scope),\n trackFocus(processRecord),\n trackVisualViewportResize(processRecord),\n trackViewEnd(lifeCycle, processRecord, flushMutations),\n trackCanvasContent(scope),\n trackCanvasCapture(scope, mutationTracker.notifyContentMutated),\n ]\n\n return {\n stop: () => {\n shadowRootsController.stop()\n trackers.forEach((tracker) => tracker.stop())\n stopFullSnapshots()\n },\n flushMutations,\n shadowRootsController,\n takeFullSnapshot: () => {\n flushMutations()\n takeFullSnapshot(timeStampNow(), SerializationKind.SUBSEQUENT_FULL_SNAPSHOT, processRecord, emitStats, scope)\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAkDA,SAAgB,OAAO,SAAmC;CACxD,MAAM,EAAE,YAAY,cAAc,WAAW,eAAe,cAAc;CAE1E,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WACnC,MAAM,IAAI,MAAM,6BAA6B;CAG/C,MAAM,iBAAqC,WAA0B;EACnE,WAAW,MAAM;EACjB,CAAA,GAAA,kCAAA,gBAAA,CAAgB,UAAU,EAAE,OAAO,CAAC;EACpC,MAAM,OAAO,QAAQ,YAAY,SAAS;EAC1C,oBAAA,UAAsB,KAAK,EAAE;CAC/B;CAEA,MAAM,mBAAyC,MAAM,SAAS,cAAc;EAC1E,aAAa,MAAM,SAAS,SAAS;EACrC,MAAM,OAAO,QAAQ,YAAY,SAAS;EAC1C,oBAAA,YAAwB,KAAK,EAAE;CACjC;CAEA,MAAM,gBAAgBA,sBAAAA,oBAAoB;CAC1C,MAAM,wBAAwBC,8BAAAA,0BAA0B,eAAe,iBAAiB,SAAS;CACjG,MAAM,QAAQC,uBAAAA,qBACZ,eACA,eACAC,gCAAAA,8BAA8B,GAC9B,qBACF;CAEA,MAAM,EAAE,MAAM,sBAAsBC,2BAAAA,mBAAmB,WAAW,eAAe,WAAW,gBAAgB,KAAK;CAEjH,SAAS,iBAAiB;EACxB,sBAAsB,MAAM;EAC5B,gBAAgB,MAAM;CACxB;CAEA,MAAM,kBAAkBC,sBAAAA,cAAc,UAAU,eAAe,iBAAiB,WAAW,KAAK;CAChG,MAAM,WAAsB;EAC1B;EACAC,kBAAAA,UAAU,eAAe,KAAK;EAC9BC,8BAAAA,sBAAsB,eAAe,KAAK;EAC1CC,oBAAAA,YAAY,UAAU,eAAe,KAAK;EAC1CC,4BAAAA,oBAAoB,aAAa;EACjCC,mBAAAA,WAAW,UAAU,eAAe,WAAW,KAAK;EACpDC,8BAAAA,sBAAsB,eAAe,KAAK;EAC1CC,wBAAAA,gBAAgB,eAAe,KAAK;EACpCC,mBAAAA,WAAW,aAAa;EACxBC,4BAAAA,0BAA0B,aAAa;EACvCC,qBAAAA,aAAa,WAAW,eAAe,cAAc;EACrDC,2BAAAA,mBAAmB,KAAK;EACxBC,2BAAAA,mBAAmB,OAAO,gBAAgB,oBAAoB;CAChE;CAEA,OAAO;EACL,YAAY;GACV,sBAAsB,KAAK;GAC3B,SAAS,SAAS,YAAY,QAAQ,KAAK,CAAC;GAC5C,kBAAkB;EACpB;EACA;EACA;EACA,wBAAwB;GACtB,eAAe;GACf,2BAAA,kBAAA,GAAiBC,kCAAAA,aAAAA,CAAa,GAAA,GAA+C,eAAe,WAAW,KAAK;EAC9G;CACF;AACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { BrowserRecord } from '../../types';
|
|
2
2
|
import type { SerializationStats } from './serialization';
|
|
3
3
|
export type EmitRecordCallback<Record extends BrowserRecord = BrowserRecord> = (record: Record) => void;
|
|
4
|
+
export type EmitResourceCallback = (hash: string, content: Blob, onDiscard?: () => void) => void;
|
|
4
5
|
export type EmitStatsCallback = (stats: SerializationStats) => void;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { RumConfiguration } from '@kubesense/kubesense-browser-rum-core';
|
|
2
2
|
import type { ElementsScrollPositions } from './elementsScrollPositions';
|
|
3
|
-
import type { EventIds } from './
|
|
4
|
-
import type { NodeIds } from './nodeIds';
|
|
3
|
+
import type { EventIds, NodeIds, StringIds, StyleSheetIds } from './encoding';
|
|
5
4
|
import type { ShadowRootsController } from './shadowRootsController';
|
|
5
|
+
import type { CanvasManager } from './canvas/canvasManager';
|
|
6
6
|
/**
|
|
7
7
|
* State associated with a stream of session replay records. When a new stream of records
|
|
8
8
|
* starts (e.g. because recording has shut down and restarted), a new RecordingScope
|
|
@@ -10,10 +10,14 @@ import type { ShadowRootsController } from './shadowRootsController';
|
|
|
10
10
|
* or data which aren't present in the current stream.
|
|
11
11
|
*/
|
|
12
12
|
export interface RecordingScope {
|
|
13
|
+
resetIds(): void;
|
|
14
|
+
canvasManager: CanvasManager;
|
|
13
15
|
configuration: RumConfiguration;
|
|
14
16
|
elementsScrollPositions: ElementsScrollPositions;
|
|
15
17
|
eventIds: EventIds;
|
|
16
18
|
nodeIds: NodeIds;
|
|
17
19
|
shadowRootsController: ShadowRootsController;
|
|
20
|
+
stringIds: StringIds;
|
|
21
|
+
styleSheetIds: StyleSheetIds;
|
|
18
22
|
}
|
|
19
|
-
export declare function createRecordingScope(configuration: RumConfiguration, elementsScrollPositions: ElementsScrollPositions,
|
|
23
|
+
export declare function createRecordingScope(canvasManager: CanvasManager, configuration: RumConfiguration, elementsScrollPositions: ElementsScrollPositions, shadowRootsController: ShadowRootsController): RecordingScope;
|
|
@@ -1,13 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
function createRecordingScope(configuration, elementsScrollPositions,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
const require_stringIds = require("./encoding/stringIds.js");
|
|
2
|
+
const require_itemIds = require("./encoding/itemIds.js");
|
|
3
|
+
//#region src/domain/record/recordingScope.ts
|
|
4
|
+
function createRecordingScope(canvasManager, configuration, elementsScrollPositions, shadowRootsController) {
|
|
5
|
+
const scope = {
|
|
6
|
+
resetIds() {
|
|
7
|
+
scope.eventIds.clear();
|
|
8
|
+
scope.nodeIds.clear();
|
|
9
|
+
scope.stringIds.clear();
|
|
10
|
+
scope.styleSheetIds.clear();
|
|
11
|
+
scope.canvasManager.reset();
|
|
12
|
+
},
|
|
13
|
+
canvasManager,
|
|
14
|
+
configuration,
|
|
15
|
+
elementsScrollPositions,
|
|
16
|
+
eventIds: require_itemIds.createEventIds(),
|
|
17
|
+
nodeIds: require_itemIds.createNodeIds(),
|
|
18
|
+
shadowRootsController,
|
|
19
|
+
stringIds: require_stringIds.createStringIds(),
|
|
20
|
+
styleSheetIds: require_itemIds.createStyleSheetIds()
|
|
21
|
+
};
|
|
22
|
+
return scope;
|
|
12
23
|
}
|
|
24
|
+
//#endregion
|
|
25
|
+
exports.createRecordingScope = createRecordingScope;
|
|
26
|
+
|
|
13
27
|
//# sourceMappingURL=recordingScope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordingScope.js","
|
|
1
|
+
{"version":3,"file":"recordingScope.js","names":["createEventIds","createNodeIds","createStringIds","createStyleSheetIds"],"sources":["../../../src/domain/record/recordingScope.ts"],"sourcesContent":["import type { RumConfiguration } from '@kubesense/kubesense-browser-rum-core'\n\nimport type { ElementsScrollPositions } from './elementsScrollPositions'\nimport { createEventIds, createNodeIds, createStringIds, createStyleSheetIds } from './encoding'\nimport type { EventIds, NodeIds, StringIds, StyleSheetIds } from './encoding'\nimport type { ShadowRootsController } from './shadowRootsController'\nimport type { CanvasManager } from './canvas/canvasManager'\n\n/**\n * State associated with a stream of session replay records. When a new stream of records\n * starts (e.g. because recording has shut down and restarted), a new RecordingScope\n * object must be created; this ensures that we don't generate records that reference ids\n * or data which aren't present in the current stream.\n */\nexport interface RecordingScope {\n resetIds(): void\n\n canvasManager: CanvasManager\n configuration: RumConfiguration\n elementsScrollPositions: ElementsScrollPositions\n eventIds: EventIds\n nodeIds: NodeIds\n shadowRootsController: ShadowRootsController\n stringIds: StringIds\n styleSheetIds: StyleSheetIds\n}\n\nexport function createRecordingScope(\n canvasManager: CanvasManager,\n configuration: RumConfiguration,\n elementsScrollPositions: ElementsScrollPositions,\n shadowRootsController: ShadowRootsController\n): RecordingScope {\n const eventIds = createEventIds()\n const nodeIds = createNodeIds()\n const stringIds = createStringIds()\n const styleSheetIds = createStyleSheetIds()\n\n const scope: RecordingScope = {\n resetIds(): void {\n scope.eventIds.clear()\n scope.nodeIds.clear()\n scope.stringIds.clear()\n scope.styleSheetIds.clear()\n scope.canvasManager.reset()\n },\n\n canvasManager,\n configuration,\n elementsScrollPositions,\n eventIds,\n nodeIds,\n shadowRootsController,\n stringIds,\n styleSheetIds,\n }\n\n return scope\n}\n"],"mappings":";;;AA2BA,SAAgB,qBACd,eACA,eACA,yBACA,uBACgB;CAMhB,MAAM,QAAwB;EAC5B,WAAiB;GACf,MAAM,SAAS,MAAM;GACrB,MAAM,QAAQ,MAAM;GACpB,MAAM,UAAU,MAAM;GACtB,MAAM,cAAc,MAAM;GAC1B,MAAM,cAAc,MAAM;EAC5B;EAEA;EACA;EACA;EACA,UAjBeA,gBAAAA,eAiBR;EACP,SAjBcC,gBAAAA,cAiBR;EACN;EACA,WAlBgBC,kBAAAA,gBAkBR;EACR,eAlBoBC,gBAAAA,oBAkBR;CACd;CAEA,OAAO;AACT"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
export { createChildInsertionCursor, createRootInsertionCursor } from './insertionCursor';
|
|
1
2
|
export { getElementInputValue } from './serializationUtils';
|
|
2
|
-
export {
|
|
3
|
+
export { serializeFullSnapshot } from './serializeFullSnapshot';
|
|
4
|
+
export { serializeMutations } from './serializeMutations';
|
|
3
5
|
export { serializeNode } from './serializeNode';
|
|
4
6
|
export { serializeAttribute } from './serializeAttribute';
|
|
5
7
|
export { createSerializationStats, updateSerializationStats, aggregateSerializationStats } from './serializationStats';
|
|
6
8
|
export type { SerializationMetric, SerializationStats } from './serializationStats';
|
|
7
9
|
export { serializeInTransaction, SerializationKind } from './serializationTransaction';
|
|
8
|
-
export type { SerializationTransaction
|
|
10
|
+
export type { SerializationTransaction } from './serializationTransaction';
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Object.defineProperty(exports, "serializeInTransaction", { enumerable: true, get: function () { return serializationTransaction_1.serializeInTransaction; } });
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
const require_insertionCursor = require("./insertionCursor.js");
|
|
2
|
+
const require_serializationUtils = require("./serializationUtils.js");
|
|
3
|
+
const require_serializationStats = require("./serializationStats.js");
|
|
4
|
+
const require_serializationTransaction = require("./serializationTransaction.js");
|
|
5
|
+
require("./serializeAttribute.js");
|
|
6
|
+
const require_serializeNode = require("./serializeNode.js");
|
|
7
|
+
const require_serializeFullSnapshot = require("./serializeFullSnapshot.js");
|
|
8
|
+
const require_serializeMutations = require("./serializeMutations.js");
|
|
9
|
+
exports.aggregateSerializationStats = require_serializationStats.aggregateSerializationStats;
|
|
10
|
+
exports.createRootInsertionCursor = require_insertionCursor.createRootInsertionCursor;
|
|
11
|
+
exports.createSerializationStats = require_serializationStats.createSerializationStats;
|
|
12
|
+
exports.getElementInputValue = require_serializationUtils.getElementInputValue;
|
|
13
|
+
exports.serializeFullSnapshot = require_serializeFullSnapshot.serializeFullSnapshot;
|
|
14
|
+
exports.serializeInTransaction = require_serializationTransaction.serializeInTransaction;
|
|
15
|
+
exports.serializeMutations = require_serializeMutations.serializeMutations;
|
|
16
|
+
exports.serializeNode = require_serializeNode.serializeNode;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { InsertionPoint } from '../../../types';
|
|
2
|
+
import type { NodeId, NodeIds } from '../encoding';
|
|
3
|
+
/**
|
|
4
|
+
* InsertionCursor tracks the point at which the next node will be inserted during
|
|
5
|
+
* Change-style DOM serialization.
|
|
6
|
+
*
|
|
7
|
+
* When a new node is added to the document, we use an InsertionPoint to encode its
|
|
8
|
+
* position. There are often multiple equally-valid ways to express the same insertion
|
|
9
|
+
* point; we generally want to favor encodings that use as few characters as possible (to
|
|
10
|
+
* reduce uncompressed size) and that are as repetitive as possible (to reduce compressed
|
|
11
|
+
* size). InsertionCursor's purpose is to heuristically pick an efficient encoding based
|
|
12
|
+
* on the nodes we've recently serialized, while doing as little work as possible. The
|
|
13
|
+
* results are not optimal, but should be close to it in most situations.
|
|
14
|
+
*
|
|
15
|
+
* At the beginning of the serialization process, use a factory function like
|
|
16
|
+
* createRootInsertionCursor() to create a new cursor with an appropriate initial
|
|
17
|
+
* position.
|
|
18
|
+
*
|
|
19
|
+
* When visiting a node, the expected usage pattern is as follows:
|
|
20
|
+
* 1. Call advance() to get a node id and insertion point for the node.
|
|
21
|
+
* 2. Serialize the node.
|
|
22
|
+
* 3. If the node has no children, we're done; continue to the node's next
|
|
23
|
+
* sibling and apply this algorithm again.
|
|
24
|
+
* 4. Otherwise, call descend() to move the cursor into the node's child list.
|
|
25
|
+
* 5. Recursively apply this algorithm.
|
|
26
|
+
* 6. Call ascend() to move the cursor out of the node's child list. We're done;
|
|
27
|
+
* continue to the node's next sibling and apply this algorithm again.
|
|
28
|
+
*/
|
|
29
|
+
export interface InsertionCursor {
|
|
30
|
+
/**
|
|
31
|
+
* Given the node id for a new node, returns the InsertionPoint for that node.
|
|
32
|
+
* Updates the cursor to point to the new node's next sibling.
|
|
33
|
+
*/
|
|
34
|
+
advance(node: Node): {
|
|
35
|
+
nodeId: NodeId;
|
|
36
|
+
insertionPoint: InsertionPoint;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Ascends out of the current child list and updates the cursor to point to the parent
|
|
40
|
+
* node's next sibling.
|
|
41
|
+
*/
|
|
42
|
+
ascend(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Descends into the child list of the last node we inserted and updates the cursor to
|
|
45
|
+
* point to the node's first child.
|
|
46
|
+
*/
|
|
47
|
+
descend(): void;
|
|
48
|
+
}
|
|
49
|
+
/** Returns an InsertionCursor which starts positioned at the root of the document. */
|
|
50
|
+
export declare function createRootInsertionCursor(nodeIds: NodeIds): InsertionCursor;
|
|
51
|
+
/**
|
|
52
|
+
* Returns an InsertionCursor which starts positioned in the child list of the given
|
|
53
|
+
* parent node. If a next sibling is provided, the cursor points to the position
|
|
54
|
+
* immediately before the next sibling; otherwise, the cursor points to the end of the
|
|
55
|
+
* child list.
|
|
56
|
+
*/
|
|
57
|
+
export declare function createChildInsertionCursor(parentId: NodeId, nextSiblingId: NodeId | undefined, nodeIds: NodeIds): InsertionCursor;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
//#region src/domain/record/serialization/insertionCursor.ts
|
|
2
|
+
/** Returns an InsertionCursor which starts positioned at the root of the document. */
|
|
3
|
+
function createRootInsertionCursor(nodeIds) {
|
|
4
|
+
return createInsertionCursor(void 0, void 0, nodeIds);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Returns an InsertionCursor which starts positioned in the child list of the given
|
|
8
|
+
* parent node. If a next sibling is provided, the cursor points to the position
|
|
9
|
+
* immediately before the next sibling; otherwise, the cursor points to the end of the
|
|
10
|
+
* child list.
|
|
11
|
+
*/
|
|
12
|
+
function createChildInsertionCursor(parentId, nextSiblingId, nodeIds) {
|
|
13
|
+
return createInsertionCursor(parentId, nextSiblingId, nodeIds);
|
|
14
|
+
}
|
|
15
|
+
function createInsertionCursor(parentId, nextSiblingId, nodeIds) {
|
|
16
|
+
let cursor = {
|
|
17
|
+
container: void 0,
|
|
18
|
+
parentId,
|
|
19
|
+
previousSiblingId: void 0,
|
|
20
|
+
nextSiblingId
|
|
21
|
+
};
|
|
22
|
+
const computeInsertionPoint = (nodeId) => {
|
|
23
|
+
if (cursor.previousSiblingId === nodeId - 1) return 0;
|
|
24
|
+
if (cursor.nextSiblingId !== void 0) return cursor.nextSiblingId - nodeId;
|
|
25
|
+
if (cursor.parentId !== void 0) return nodeId - cursor.parentId;
|
|
26
|
+
return null;
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
advance(node) {
|
|
30
|
+
const nodeId = nodeIds.getOrInsert(node);
|
|
31
|
+
const insertionPoint = computeInsertionPoint(nodeId);
|
|
32
|
+
cursor.previousSiblingId = nodeId;
|
|
33
|
+
return {
|
|
34
|
+
nodeId,
|
|
35
|
+
insertionPoint
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
ascend() {
|
|
39
|
+
if (cursor.container) cursor = cursor.container;
|
|
40
|
+
},
|
|
41
|
+
descend() {
|
|
42
|
+
if (cursor.previousSiblingId !== void 0) cursor = {
|
|
43
|
+
container: cursor,
|
|
44
|
+
parentId: cursor.previousSiblingId,
|
|
45
|
+
previousSiblingId: void 0,
|
|
46
|
+
nextSiblingId: void 0
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
exports.createChildInsertionCursor = createChildInsertionCursor;
|
|
53
|
+
exports.createRootInsertionCursor = createRootInsertionCursor;
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=insertionCursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insertionCursor.js","names":[],"sources":["../../../../src/domain/record/serialization/insertionCursor.ts"],"sourcesContent":["import type { InsertionPoint } from '../../../types'\nimport type { NodeId, NodeIds } from '../encoding'\n\n/**\n * InsertionCursor tracks the point at which the next node will be inserted during\n * Change-style DOM serialization.\n *\n * When a new node is added to the document, we use an InsertionPoint to encode its\n * position. There are often multiple equally-valid ways to express the same insertion\n * point; we generally want to favor encodings that use as few characters as possible (to\n * reduce uncompressed size) and that are as repetitive as possible (to reduce compressed\n * size). InsertionCursor's purpose is to heuristically pick an efficient encoding based\n * on the nodes we've recently serialized, while doing as little work as possible. The\n * results are not optimal, but should be close to it in most situations.\n *\n * At the beginning of the serialization process, use a factory function like\n * createRootInsertionCursor() to create a new cursor with an appropriate initial\n * position.\n *\n * When visiting a node, the expected usage pattern is as follows:\n * 1. Call advance() to get a node id and insertion point for the node.\n * 2. Serialize the node.\n * 3. If the node has no children, we're done; continue to the node's next\n * sibling and apply this algorithm again.\n * 4. Otherwise, call descend() to move the cursor into the node's child list.\n * 5. Recursively apply this algorithm.\n * 6. Call ascend() to move the cursor out of the node's child list. We're done;\n * continue to the node's next sibling and apply this algorithm again.\n */\nexport interface InsertionCursor {\n /**\n * Given the node id for a new node, returns the InsertionPoint for that node.\n * Updates the cursor to point to the new node's next sibling.\n */\n advance(node: Node): { nodeId: NodeId; insertionPoint: InsertionPoint }\n\n /**\n * Ascends out of the current child list and updates the cursor to point to the parent\n * node's next sibling.\n */\n ascend(): void\n\n /**\n * Descends into the child list of the last node we inserted and updates the cursor to\n * point to the node's first child.\n */\n descend(): void\n}\n\n/** Returns an InsertionCursor which starts positioned at the root of the document. */\nexport function createRootInsertionCursor(nodeIds: NodeIds): InsertionCursor {\n return createInsertionCursor(undefined, undefined, nodeIds)\n}\n\n/**\n * Returns an InsertionCursor which starts positioned in the child list of the given\n * parent node. If a next sibling is provided, the cursor points to the position\n * immediately before the next sibling; otherwise, the cursor points to the end of the\n * child list.\n */\nexport function createChildInsertionCursor(\n parentId: NodeId,\n nextSiblingId: NodeId | undefined,\n nodeIds: NodeIds\n): InsertionCursor {\n return createInsertionCursor(parentId, nextSiblingId, nodeIds)\n}\n\nfunction createInsertionCursor(\n parentId: NodeId | undefined,\n nextSiblingId: NodeId | undefined,\n nodeIds: NodeIds\n): InsertionCursor {\n interface ChildListCursor {\n container: ChildListCursor | undefined\n parentId: NodeId | undefined\n previousSiblingId: NodeId | undefined\n nextSiblingId: NodeId | undefined\n }\n\n let cursor: ChildListCursor = {\n container: undefined,\n parentId,\n previousSiblingId: undefined,\n nextSiblingId,\n }\n\n const computeInsertionPoint = (nodeId: NodeId): InsertionPoint => {\n if (cursor.previousSiblingId === nodeId - 1) {\n // Use an AppendAfterPreviousInsertionPoint. (i.e., 0)\n return 0\n }\n if (cursor.nextSiblingId !== undefined) {\n // Use an InsertBeforeInsertionPoint. We identify the next sibling using a\n // negative integer indicating the difference between the new node's id and its next\n // sibling's id.\n return cursor.nextSiblingId - nodeId\n }\n if (cursor.parentId !== undefined) {\n // Use an AppendChildInsertionPoint. We identify the parent node using a positive\n // integer indicating the difference between the new node's id and its parent's id.\n return nodeId - cursor.parentId\n }\n // There's no parent. Use a RootInsertionPoint. (i.e., null)\n return null\n }\n\n return {\n advance(node: Node): { nodeId: NodeId; insertionPoint: InsertionPoint } {\n const nodeId = nodeIds.getOrInsert(node)\n const insertionPoint = computeInsertionPoint(nodeId)\n cursor.previousSiblingId = nodeId\n return { nodeId, insertionPoint }\n },\n ascend(): void {\n if (cursor.container) {\n cursor = cursor.container\n }\n },\n descend(): void {\n if (cursor.previousSiblingId !== undefined) {\n cursor = {\n container: cursor,\n parentId: cursor.previousSiblingId,\n previousSiblingId: undefined,\n nextSiblingId: undefined,\n }\n }\n },\n }\n}\n"],"mappings":";;AAkDA,SAAgB,0BAA0B,SAAmC;CAC3E,OAAO,sBAAsB,KAAA,GAAW,KAAA,GAAW,OAAO;AAC5D;;;;;;;AAQA,SAAgB,2BACd,UACA,eACA,SACiB;CACjB,OAAO,sBAAsB,UAAU,eAAe,OAAO;AAC/D;AAEA,SAAS,sBACP,UACA,eACA,SACiB;CAQjB,IAAI,SAA0B;EAC5B,WAAW,KAAA;EACX;EACA,mBAAmB,KAAA;EACnB;CACF;CAEA,MAAM,yBAAyB,WAAmC;EAChE,IAAI,OAAO,sBAAsB,SAAS,GAExC,OAAO;EAET,IAAI,OAAO,kBAAkB,KAAA,GAI3B,OAAO,OAAO,gBAAgB;EAEhC,IAAI,OAAO,aAAa,KAAA,GAGtB,OAAO,SAAS,OAAO;EAGzB,OAAO;CACT;CAEA,OAAO;EACL,QAAQ,MAAgE;GACtE,MAAM,SAAS,QAAQ,YAAY,IAAI;GACvC,MAAM,iBAAiB,sBAAsB,MAAM;GACnD,OAAO,oBAAoB;GAC3B,OAAO;IAAE;IAAQ;GAAe;EAClC;EACA,SAAe;GACb,IAAI,OAAO,WACT,SAAS,OAAO;EAEpB;EACA,UAAgB;GACd,IAAI,OAAO,sBAAsB,KAAA,GAC/B,SAAS;IACP,WAAW;IACX,UAAU,OAAO;IACjB,mBAAmB,KAAA;IACnB,eAAe,KAAA;GACjB;EAEJ;CACF;AACF"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import type { NodePrivacyLevel } from '@kubesense/kubesense-browser-rum-core';
|
|
2
|
-
export type ParentNodePrivacyLevel = typeof NodePrivacyLevel.ALLOW | typeof NodePrivacyLevel.MASK | typeof NodePrivacyLevel.MASK_USER_INPUT | typeof NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED;
|
|
3
1
|
/**
|
|
4
2
|
* Virtual attributes. These attributes appear in the serialized attribute map of
|
|
5
3
|
* elements, but they're not actually derived from the DOM; they're used to represent
|
|
@@ -22,7 +20,3 @@ export interface VirtualAttributes {
|
|
|
22
20
|
/** For HIDDEN elements, the height of the element's bounding client rect. */
|
|
23
21
|
rr_height?: string;
|
|
24
22
|
}
|
|
25
|
-
export interface SerializeOptions {
|
|
26
|
-
/** For HIDDEN elements, the height of the element's bounding client rect. */
|
|
27
|
-
rr_height?: string;
|
|
28
|
-
}
|