@kubesense/kubesense-browser-rum-core 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/cjs/boot/preStartRum.d.ts +4 -3
- package/cjs/boot/preStartRum.js +229 -204
- package/cjs/boot/preStartRum.js.map +1 -1
- package/cjs/boot/rumPublicApi.d.ts +190 -51
- package/cjs/boot/rumPublicApi.js +267 -164
- package/cjs/boot/rumPublicApi.js.map +1 -1
- package/cjs/boot/startRum.d.ts +42 -31
- package/cjs/boot/startRum.js +157 -150
- package/cjs/boot/startRum.js.map +1 -1
- package/cjs/browser/cookieObservable.d.ts +1 -5
- package/cjs/browser/cookieObservable.js +30 -34
- package/cjs/browser/cookieObservable.js.map +1 -1
- package/cjs/browser/domMutationObservable.d.ts +3 -3
- package/cjs/browser/domMutationObservable.js +29 -53
- package/cjs/browser/domMutationObservable.js.map +1 -1
- package/cjs/browser/htmlDomUtils.d.ts +5 -0
- package/cjs/browser/htmlDomUtils.js +38 -28
- package/cjs/browser/htmlDomUtils.js.map +1 -1
- package/cjs/browser/locationChangeObservable.d.ts +1 -2
- package/cjs/browser/locationChangeObservable.js +44 -45
- package/cjs/browser/locationChangeObservable.js.map +1 -1
- package/cjs/browser/performanceObservable.d.ts +4 -4
- package/cjs/browser/performanceObservable.js +50 -114
- package/cjs/browser/performanceObservable.js.map +1 -1
- package/cjs/browser/performanceUtils.d.ts +13 -1
- package/cjs/browser/performanceUtils.js +63 -37
- package/cjs/browser/performanceUtils.js.map +1 -1
- package/cjs/browser/scroll.js +17 -28
- package/cjs/browser/scroll.js.map +1 -1
- package/cjs/browser/viewportObservable.d.ts +2 -3
- package/cjs/browser/viewportObservable.js +29 -31
- package/cjs/browser/viewportObservable.js.map +1 -1
- package/cjs/browser/windowOpenObservable.js +11 -7
- package/cjs/browser/windowOpenObservable.js.map +1 -1
- package/cjs/domain/action/actionCollection.d.ts +11 -12
- package/cjs/domain/action/actionCollection.js +82 -89
- package/cjs/domain/action/actionCollection.js.map +1 -1
- package/cjs/domain/action/actionNameConstants.js +10 -9
- package/cjs/domain/action/actionNameConstants.js.map +1 -1
- package/cjs/domain/action/clickChain.js +51 -54
- package/cjs/domain/action/clickChain.js.map +1 -1
- package/cjs/domain/action/computeFrustration.js +30 -62
- package/cjs/domain/action/computeFrustration.js.map +1 -1
- package/cjs/domain/action/frustrationIgnore.d.ts +9 -0
- package/cjs/domain/action/frustrationIgnore.js +32 -0
- package/cjs/domain/action/frustrationIgnore.js.map +1 -0
- package/cjs/domain/action/getActionNameFromElement.js +141 -217
- package/cjs/domain/action/getActionNameFromElement.js.map +1 -1
- package/cjs/domain/action/interactionSelectorCache.d.ts +1 -1
- package/cjs/domain/action/interactionSelectorCache.js +17 -18
- package/cjs/domain/action/interactionSelectorCache.js.map +1 -1
- package/cjs/domain/action/isActionChildEvent.d.ts +2 -0
- package/cjs/domain/action/isActionChildEvent.js +8 -0
- package/cjs/domain/action/isActionChildEvent.js.map +1 -0
- package/cjs/domain/action/listenActionEvents.d.ts +2 -3
- package/cjs/domain/action/listenActionEvents.js +51 -55
- package/cjs/domain/action/listenActionEvents.js.map +1 -1
- package/cjs/domain/action/trackClickActions.d.ts +15 -21
- package/cjs/domain/action/trackClickActions.js +188 -226
- package/cjs/domain/action/trackClickActions.js.map +1 -1
- package/cjs/domain/action/trackManualActions.d.ts +45 -0
- package/cjs/domain/action/trackManualActions.js +48 -0
- package/cjs/domain/action/trackManualActions.js.map +1 -0
- package/cjs/domain/assembly.d.ts +1 -2
- package/cjs/domain/assembly.js +80 -95
- package/cjs/domain/assembly.js.map +1 -1
- package/cjs/domain/configuration/configuration.d.ts +575 -81
- package/cjs/domain/configuration/configuration.js +464 -199
- package/cjs/domain/configuration/configuration.js.map +1 -1
- package/cjs/domain/configuration/index.d.ts +1 -0
- package/cjs/domain/configuration/index.js +27 -21
- package/cjs/domain/configuration/jsonPathParser.js +125 -139
- package/cjs/domain/configuration/jsonPathParser.js.map +1 -1
- package/cjs/domain/configuration/remoteConfiguration.d.ts +18 -5
- package/cjs/domain/configuration/remoteConfiguration.js +268 -226
- package/cjs/domain/configuration/remoteConfiguration.js.map +1 -1
- package/cjs/domain/configuration/remoteConfiguration.types.d.ts +49 -0
- package/cjs/domain/configuration/remoteConfigurationCache.d.ts +42 -0
- package/cjs/domain/configuration/remoteConfigurationCache.js +95 -0
- package/cjs/domain/configuration/remoteConfigurationCache.js.map +1 -0
- package/cjs/domain/configuration/remoteSdkConfiguration.d.ts +11 -2
- package/cjs/domain/configuration/remoteSdkConfiguration.js +185 -117
- package/cjs/domain/configuration/remoteSdkConfiguration.js.map +1 -1
- package/cjs/domain/configuration/sessionReplayRoutes.d.ts +1 -6
- package/cjs/domain/configuration/sessionReplayRoutes.js +20 -63
- package/cjs/domain/configuration/sessionReplayRoutes.js.map +1 -1
- package/cjs/domain/contexts/ciVisibilityContext.d.ts +2 -4
- package/cjs/domain/contexts/ciVisibilityContext.js +36 -32
- package/cjs/domain/contexts/ciVisibilityContext.js.map +1 -1
- package/cjs/domain/contexts/connectivityContext.d.ts +2 -2
- package/cjs/domain/contexts/connectivityContext.js +10 -9
- package/cjs/domain/contexts/connectivityContext.js.map +1 -1
- package/cjs/domain/contexts/defaultContext.d.ts +3 -3
- package/cjs/domain/contexts/defaultContext.js +28 -32
- package/cjs/domain/contexts/defaultContext.js.map +1 -1
- package/cjs/domain/contexts/displayContext.d.ts +2 -3
- package/cjs/domain/contexts/displayContext.js +22 -26
- package/cjs/domain/contexts/displayContext.js.map +1 -1
- package/cjs/domain/contexts/featureFlagContext.d.ts +2 -2
- package/cjs/domain/contexts/featureFlagContext.js +38 -50
- package/cjs/domain/contexts/featureFlagContext.js.map +1 -1
- package/cjs/domain/contexts/internalContext.d.ts +2 -3
- package/cjs/domain/contexts/internalContext.js +26 -22
- package/cjs/domain/contexts/internalContext.js.map +1 -1
- package/cjs/domain/contexts/pageStateHistory.d.ts +3 -4
- package/cjs/domain/contexts/pageStateHistory.js +76 -96
- package/cjs/domain/contexts/pageStateHistory.js.map +1 -1
- package/cjs/domain/contexts/sessionContext.d.ts +9 -3
- package/cjs/domain/contexts/sessionContext.js +31 -45
- package/cjs/domain/contexts/sessionContext.js.map +1 -1
- package/cjs/domain/contexts/sourceCodeMfeContext.d.ts +10 -0
- package/cjs/domain/contexts/sourceCodeMfeContext.js +35 -0
- package/cjs/domain/contexts/sourceCodeMfeContext.js.map +1 -0
- package/cjs/domain/contexts/syntheticsContext.d.ts +2 -2
- package/cjs/domain/contexts/syntheticsContext.js +19 -23
- package/cjs/domain/contexts/syntheticsContext.js.map +1 -1
- package/cjs/domain/contexts/trackingConsentContext.d.ts +2 -2
- package/cjs/domain/contexts/trackingConsentContext.js +10 -12
- package/cjs/domain/contexts/trackingConsentContext.js.map +1 -1
- package/cjs/domain/contexts/urlContexts.d.ts +4 -3
- package/cjs/domain/contexts/urlContexts.js +65 -61
- package/cjs/domain/contexts/urlContexts.js.map +1 -1
- package/cjs/domain/contexts/userAgentDataContext.d.ts +2 -2
- package/cjs/domain/contexts/userAgentDataContext.js +20 -29
- package/cjs/domain/contexts/userAgentDataContext.js.map +1 -1
- package/cjs/domain/contexts/viewHistory.d.ts +5 -2
- package/cjs/domain/contexts/viewHistory.js +41 -45
- package/cjs/domain/contexts/viewHistory.js.map +1 -1
- package/cjs/domain/discardNegativeDuration.d.ts +1 -1
- package/cjs/domain/discardNegativeDuration.js +6 -5
- package/cjs/domain/discardNegativeDuration.js.map +1 -1
- package/cjs/domain/error/errorCollection.d.ts +3 -3
- package/cjs/domain/error/errorCollection.js +67 -68
- package/cjs/domain/error/errorCollection.js.map +1 -1
- package/cjs/domain/error/trackReportError.d.ts +1 -2
- package/cjs/domain/error/trackReportError.js +10 -14
- package/cjs/domain/error/trackReportError.js.map +1 -1
- package/cjs/domain/event/eventCollection.d.ts +2 -1
- package/cjs/domain/event/eventCollection.js +21 -22
- package/cjs/domain/event/eventCollection.js.map +1 -1
- package/cjs/domain/eventTracker.d.ts +37 -0
- package/cjs/domain/eventTracker.js +94 -0
- package/cjs/domain/eventTracker.js.map +1 -0
- package/cjs/domain/extractRegexMatch.d.ts +5 -0
- package/cjs/domain/extractRegexMatch.js +16 -0
- package/cjs/domain/extractRegexMatch.js.map +1 -0
- package/cjs/domain/getComposedPathSelector.d.ts +22 -0
- package/cjs/domain/getComposedPathSelector.js +95 -0
- package/cjs/domain/getComposedPathSelector.js.map +1 -0
- package/cjs/domain/getSelectorFromElement.d.ts +18 -6
- package/cjs/domain/getSelectorFromElement.js +199 -191
- package/cjs/domain/getSelectorFromElement.js.map +1 -1
- package/cjs/domain/getSessionReplayUrl.d.ts +2 -2
- package/cjs/domain/getSessionReplayUrl.js +17 -30
- package/cjs/domain/getSessionReplayUrl.js.map +1 -1
- package/cjs/domain/hooks.d.ts +26 -17
- package/cjs/domain/hooks.js +12 -5
- package/cjs/domain/hooks.js.map +1 -1
- package/cjs/domain/lifeCycle.d.ts +26 -12
- package/cjs/domain/lifeCycle.js +28 -5
- package/cjs/domain/lifeCycle.js.map +1 -1
- package/cjs/domain/limitModification.d.ts +5 -1
- package/cjs/domain/limitModification.js +32 -36
- package/cjs/domain/limitModification.js.map +1 -1
- package/cjs/domain/longTask/longTaskCollection.d.ts +0 -13
- package/cjs/domain/longTask/longTaskCollection.js +75 -87
- package/cjs/domain/longTask/longTaskCollection.js.map +1 -1
- package/cjs/domain/plugins.d.ts +37 -14
- package/cjs/domain/plugins.js +22 -13
- package/cjs/domain/plugins.js.map +1 -1
- package/cjs/domain/privacy.d.ts +6 -1
- package/cjs/domain/privacy.js +143 -286
- package/cjs/domain/privacy.js.map +1 -1
- package/cjs/domain/privacyConstants.js +43 -34
- package/cjs/domain/privacyConstants.js.map +1 -1
- package/cjs/domain/requestCollection.d.ts +6 -5
- package/cjs/domain/requestCollection.js +82 -105
- package/cjs/domain/requestCollection.js.map +1 -1
- package/cjs/domain/resource/graphql.d.ts +1 -1
- package/cjs/domain/resource/graphql.js +85 -86
- package/cjs/domain/resource/graphql.js.map +1 -1
- package/cjs/domain/resource/requestRegistry.js +30 -38
- package/cjs/domain/resource/requestRegistry.js.map +1 -1
- package/cjs/domain/resource/resourceCollection.d.ts +5 -3
- package/cjs/domain/resource/resourceCollection.js +241 -175
- package/cjs/domain/resource/resourceCollection.js.map +1 -1
- package/cjs/domain/resource/resourceUtils.d.ts +13 -13
- package/cjs/domain/resource/resourceUtils.js +323 -221
- package/cjs/domain/resource/resourceUtils.js.map +1 -1
- package/cjs/domain/resource/trackManualResources.d.ts +55 -0
- package/cjs/domain/resource/trackManualResources.js +53 -0
- package/cjs/domain/resource/trackManualResources.js.map +1 -0
- package/cjs/domain/resource/webSocketCollection.d.ts +46 -0
- package/cjs/domain/resource/webSocketCollection.js +163 -0
- package/cjs/domain/resource/webSocketCollection.js.map +1 -0
- package/cjs/domain/session/session.types.d.ts +4 -0
- package/cjs/domain/sessionReplayState.d.ts +8 -0
- package/cjs/domain/sessionReplayState.js +19 -0
- package/cjs/domain/sessionReplayState.js.map +1 -0
- package/cjs/domain/startCustomerDataTelemetry.js +39 -43
- package/cjs/domain/startCustomerDataTelemetry.js.map +1 -1
- package/cjs/domain/tracing/getDocumentTraceId.d.ts +1 -1
- package/cjs/domain/tracing/getDocumentTraceId.js +42 -63
- package/cjs/domain/tracing/getDocumentTraceId.js.map +1 -1
- package/cjs/domain/tracing/identifier.js +13 -46
- package/cjs/domain/tracing/identifier.js.map +1 -1
- package/cjs/domain/tracing/tracer.d.ts +2 -5
- package/cjs/domain/tracing/tracer.js +110 -150
- package/cjs/domain/tracing/tracer.js.map +1 -1
- package/cjs/domain/trackEventCounts.js +43 -48
- package/cjs/domain/trackEventCounts.js.map +1 -1
- package/cjs/domain/view/bfCacheSupport.d.ts +1 -2
- package/cjs/domain/view/bfCacheSupport.js +10 -11
- package/cjs/domain/view/bfCacheSupport.js.map +1 -1
- package/cjs/domain/view/trackViewEventCounts.js +14 -13
- package/cjs/domain/view/trackViewEventCounts.js.map +1 -1
- package/cjs/domain/view/trackViews.d.ts +8 -2
- package/cjs/domain/view/trackViews.js +221 -270
- package/cjs/domain/view/trackViews.js.map +1 -1
- package/cjs/domain/view/viewCollection.d.ts +4 -3
- package/cjs/domain/view/viewCollection.js +124 -148
- package/cjs/domain/view/viewCollection.js.map +1 -1
- package/cjs/domain/view/viewDiff.d.ts +22 -0
- package/cjs/domain/view/viewDiff.js +62 -0
- package/cjs/domain/view/viewDiff.js.map +1 -0
- package/cjs/domain/view/viewMetrics/getClsAttributionImpactedArea.js +20 -22
- package/cjs/domain/view/viewMetrics/getClsAttributionImpactedArea.js.map +1 -1
- package/cjs/domain/view/viewMetrics/interactionCountPolyfill.d.ts +1 -0
- package/cjs/domain/view/viewMetrics/interactionCountPolyfill.js +35 -33
- package/cjs/domain/view/viewMetrics/interactionCountPolyfill.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.d.ts +1 -1
- package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.js +14 -13
- package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.d.ts +4 -2
- package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.js +51 -34
- package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.d.ts +1 -1
- package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.js +106 -122
- package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.d.ts +2 -3
- package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.js +26 -34
- package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackFirstHidden.d.ts +2 -3
- package/cjs/domain/view/viewMetrics/trackFirstHidden.js +31 -31
- package/cjs/domain/view/viewMetrics/trackFirstHidden.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.d.ts +1 -3
- package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.js +33 -38
- package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.d.ts +10 -1
- package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.js +202 -144
- package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.d.ts +6 -1
- package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.js +65 -55
- package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackLoadingTime.d.ts +2 -1
- package/cjs/domain/view/viewMetrics/trackLoadingTime.js +42 -46
- package/cjs/domain/view/viewMetrics/trackLoadingTime.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackNavigationTimings.d.ts +2 -3
- package/cjs/domain/view/viewMetrics/trackNavigationTimings.js +28 -36
- package/cjs/domain/view/viewMetrics/trackNavigationTimings.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackScrollMetrics.d.ts +3 -4
- package/cjs/domain/view/viewMetrics/trackScrollMetrics.js +63 -72
- package/cjs/domain/view/viewMetrics/trackScrollMetrics.js.map +1 -1
- package/cjs/domain/vital/vitalCollection.d.ts +44 -20
- package/cjs/domain/vital/vitalCollection.js +81 -109
- package/cjs/domain/vital/vitalCollection.js.map +1 -1
- package/cjs/domain/waitPageActivityEnd.d.ts +1 -4
- package/cjs/domain/waitPageActivityEnd.js +99 -119
- package/cjs/domain/waitPageActivityEnd.js.map +1 -1
- package/cjs/domainContext.types.d.ts +21 -13
- package/cjs/index.d.ts +11 -10
- package/cjs/index.js +84 -62
- package/cjs/rawRumEvent.types.d.ts +79 -13
- package/cjs/rawRumEvent.types.js +40 -27
- package/cjs/rawRumEvent.types.js.map +1 -1
- package/cjs/rumEvent.types.d.ts +906 -669
- package/cjs/transport/formDataTransport.js +43 -41
- package/cjs/transport/formDataTransport.js.map +1 -1
- package/cjs/transport/startRumBatch.d.ts +27 -3
- package/cjs/transport/startRumBatch.js +132 -31
- package/cjs/transport/startRumBatch.js.map +1 -1
- package/cjs/transport/startRumEventBridge.js +10 -8
- package/cjs/transport/startRumEventBridge.js.map +1 -1
- package/esm/boot/preStartRum.mjs +233 -0
- package/esm/boot/preStartRum.mjs.map +1 -0
- package/esm/boot/rumPublicApi.mjs +271 -0
- package/esm/boot/rumPublicApi.mjs.map +1 -0
- package/esm/boot/startRum.mjs +159 -0
- package/esm/boot/startRum.mjs.map +1 -0
- package/esm/browser/cookieObservable.mjs +34 -0
- package/esm/browser/cookieObservable.mjs.map +1 -0
- package/esm/browser/domMutationObservable.mjs +33 -0
- package/esm/browser/domMutationObservable.mjs.map +1 -0
- package/esm/browser/htmlDomUtils.mjs +48 -0
- package/esm/browser/htmlDomUtils.mjs.map +1 -0
- package/esm/browser/locationChangeObservable.mjs +50 -0
- package/esm/browser/locationChangeObservable.mjs.map +1 -0
- package/esm/browser/performanceObservable.mjs +60 -0
- package/esm/browser/performanceObservable.mjs.map +1 -0
- package/esm/browser/performanceUtils.mjs +64 -0
- package/esm/browser/performanceUtils.mjs.map +1 -0
- package/esm/browser/scroll.mjs +21 -0
- package/esm/browser/scroll.mjs.map +1 -0
- package/esm/browser/viewportObservable.mjs +33 -0
- package/esm/browser/viewportObservable.mjs.map +1 -0
- package/esm/browser/windowOpenObservable.mjs +14 -0
- package/esm/browser/windowOpenObservable.mjs.map +1 -0
- package/esm/domain/action/actionCollection.mjs +89 -0
- package/esm/domain/action/actionCollection.mjs.map +1 -0
- package/esm/domain/action/actionNameConstants.mjs +11 -0
- package/esm/domain/action/actionNameConstants.mjs.map +1 -0
- package/esm/domain/action/clickChain.mjs +57 -0
- package/esm/domain/action/clickChain.mjs.map +1 -0
- package/esm/domain/action/computeFrustration.mjs +36 -0
- package/esm/domain/action/computeFrustration.mjs.map +1 -0
- package/esm/domain/action/frustrationIgnore.mjs +31 -0
- package/esm/domain/action/frustrationIgnore.mjs.map +1 -0
- package/esm/domain/action/getActionNameFromElement.mjs +163 -0
- package/esm/domain/action/getActionNameFromElement.mjs.map +1 -0
- package/esm/domain/action/interactionSelectorCache.mjs +19 -0
- package/esm/domain/action/interactionSelectorCache.mjs.map +1 -0
- package/esm/domain/action/isActionChildEvent.mjs +8 -0
- package/esm/domain/action/isActionChildEvent.mjs.map +1 -0
- package/esm/domain/action/listenActionEvents.mjs +57 -0
- package/esm/domain/action/listenActionEvents.mjs.map +1 -0
- package/esm/domain/action/trackClickActions.mjs +198 -0
- package/esm/domain/action/trackClickActions.mjs.map +1 -0
- package/esm/domain/action/trackManualActions.mjs +48 -0
- package/esm/domain/action/trackManualActions.mjs.map +1 -0
- package/esm/domain/assembly.mjs +87 -0
- package/esm/domain/assembly.mjs.map +1 -0
- package/esm/domain/configuration/configuration.mjs +474 -0
- package/esm/domain/configuration/configuration.mjs.map +1 -0
- package/esm/domain/configuration/index.mjs +6 -0
- package/esm/domain/configuration/jsonPathParser.mjs +145 -0
- package/esm/domain/configuration/jsonPathParser.mjs.map +1 -0
- package/esm/domain/configuration/remoteConfiguration.mjs +279 -0
- package/esm/domain/configuration/remoteConfiguration.mjs.map +1 -0
- package/esm/domain/configuration/remoteConfigurationCache.mjs +92 -0
- package/esm/domain/configuration/remoteConfigurationCache.mjs.map +1 -0
- package/esm/domain/configuration/remoteSdkConfiguration.mjs +208 -0
- package/esm/domain/configuration/remoteSdkConfiguration.mjs.map +1 -0
- package/esm/domain/configuration/sessionReplayRoutes.mjs +26 -0
- package/esm/domain/configuration/sessionReplayRoutes.mjs.map +1 -0
- package/esm/domain/contexts/ciVisibilityContext.mjs +37 -0
- package/esm/domain/contexts/ciVisibilityContext.mjs.map +1 -0
- package/esm/domain/contexts/connectivityContext.mjs +12 -0
- package/esm/domain/contexts/connectivityContext.mjs.map +1 -0
- package/esm/domain/contexts/defaultContext.mjs +30 -0
- package/esm/domain/contexts/defaultContext.mjs.map +1 -0
- package/esm/domain/contexts/displayContext.mjs +24 -0
- package/esm/domain/contexts/displayContext.mjs.map +1 -0
- package/esm/domain/contexts/featureFlagContext.mjs +40 -0
- package/esm/domain/contexts/featureFlagContext.mjs.map +1 -0
- package/esm/domain/contexts/internalContext.mjs +30 -0
- package/esm/domain/contexts/internalContext.mjs.map +1 -0
- package/esm/domain/contexts/pageStateHistory.mjs +82 -0
- package/esm/domain/contexts/pageStateHistory.mjs.map +1 -0
- package/esm/domain/contexts/sessionContext.mjs +33 -0
- package/esm/domain/contexts/sessionContext.mjs.map +1 -0
- package/esm/domain/contexts/sourceCodeMfeContext.mjs +35 -0
- package/esm/domain/contexts/sourceCodeMfeContext.mjs.map +1 -0
- package/esm/domain/contexts/syntheticsContext.mjs +21 -0
- package/esm/domain/contexts/syntheticsContext.mjs.map +1 -0
- package/esm/domain/contexts/trackingConsentContext.mjs +12 -0
- package/esm/domain/contexts/trackingConsentContext.mjs.map +1 -0
- package/esm/domain/contexts/urlContexts.mjs +67 -0
- package/esm/domain/contexts/urlContexts.mjs.map +1 -0
- package/esm/domain/contexts/userAgentDataContext.mjs +22 -0
- package/esm/domain/contexts/userAgentDataContext.mjs.map +1 -0
- package/esm/domain/contexts/viewHistory.mjs +43 -0
- package/esm/domain/contexts/viewHistory.mjs.map +1 -0
- package/esm/domain/discardNegativeDuration.mjs +9 -0
- package/esm/domain/discardNegativeDuration.mjs.map +1 -0
- package/esm/domain/error/errorCollection.mjs +72 -0
- package/esm/domain/error/errorCollection.mjs.map +1 -0
- package/esm/domain/error/trackReportError.mjs +12 -0
- package/esm/domain/error/trackReportError.mjs.map +1 -0
- package/esm/domain/event/eventCollection.mjs +26 -0
- package/esm/domain/event/eventCollection.mjs.map +1 -0
- package/esm/domain/eventTracker.mjs +93 -0
- package/esm/domain/eventTracker.mjs.map +1 -0
- package/esm/domain/extractRegexMatch.mjs +16 -0
- package/esm/domain/extractRegexMatch.mjs.map +1 -0
- package/esm/domain/getComposedPathSelector.mjs +93 -0
- package/esm/domain/getComposedPathSelector.mjs.map +1 -0
- package/esm/domain/getSelectorFromElement.mjs +218 -0
- package/esm/domain/getSelectorFromElement.mjs.map +1 -0
- package/esm/domain/getSessionReplayUrl.mjs +20 -0
- package/esm/domain/getSessionReplayUrl.mjs.map +1 -0
- package/esm/domain/hooks.mjs +13 -0
- package/esm/domain/hooks.mjs.map +1 -0
- package/esm/domain/lifeCycle.mjs +28 -0
- package/esm/domain/lifeCycle.mjs.map +1 -0
- package/esm/domain/limitModification.mjs +42 -0
- package/esm/domain/limitModification.mjs.map +1 -0
- package/esm/domain/longTask/longTaskCollection.mjs +79 -0
- package/esm/domain/longTask/longTaskCollection.mjs.map +1 -0
- package/esm/domain/plugins.mjs +23 -0
- package/esm/domain/plugins.mjs.map +1 -0
- package/esm/domain/privacy.mjs +161 -0
- package/esm/domain/privacy.mjs.map +1 -0
- package/esm/domain/privacyConstants.mjs +36 -0
- package/esm/domain/privacyConstants.mjs.map +1 -0
- package/esm/domain/requestCollection.mjs +86 -0
- package/esm/domain/requestCollection.mjs.map +1 -0
- package/esm/domain/resource/graphql.mjs +93 -0
- package/esm/domain/resource/graphql.mjs.map +1 -0
- package/esm/domain/resource/requestRegistry.mjs +32 -0
- package/esm/domain/resource/requestRegistry.mjs.map +1 -0
- package/esm/domain/resource/resourceCollection.mjs +256 -0
- package/esm/domain/resource/resourceCollection.mjs.map +1 -0
- package/esm/domain/resource/resourceUtils.mjs +349 -0
- package/esm/domain/resource/resourceUtils.mjs.map +1 -0
- package/esm/domain/resource/trackManualResources.mjs +53 -0
- package/esm/domain/resource/trackManualResources.mjs.map +1 -0
- package/esm/domain/resource/webSocketCollection.mjs +160 -0
- package/esm/domain/resource/webSocketCollection.mjs.map +1 -0
- package/esm/domain/sessionReplayState.mjs +18 -0
- package/esm/domain/sessionReplayState.mjs.map +1 -0
- package/esm/domain/startCustomerDataTelemetry.mjs +51 -0
- package/esm/domain/startCustomerDataTelemetry.mjs.map +1 -0
- package/esm/domain/tracing/getDocumentTraceId.mjs +50 -0
- package/esm/domain/tracing/getDocumentTraceId.mjs.map +1 -0
- package/esm/domain/tracing/identifier.mjs +20 -0
- package/esm/domain/tracing/identifier.mjs.map +1 -0
- package/esm/domain/tracing/tracer.mjs +120 -0
- package/esm/domain/tracing/tracer.mjs.map +1 -0
- package/esm/domain/trackEventCounts.mjs +45 -0
- package/esm/domain/trackEventCounts.mjs.map +1 -0
- package/esm/domain/view/bfCacheSupport.mjs +12 -0
- package/esm/domain/view/bfCacheSupport.mjs.map +1 -0
- package/esm/domain/view/trackViewEventCounts.mjs +17 -0
- package/esm/domain/view/trackViewEventCounts.mjs.map +1 -0
- package/esm/domain/view/trackViews.mjs +230 -0
- package/esm/domain/view/trackViews.mjs.map +1 -0
- package/esm/domain/view/viewCollection.mjs +129 -0
- package/esm/domain/view/viewCollection.mjs.map +1 -0
- package/esm/domain/view/viewDiff.mjs +61 -0
- package/esm/domain/view/viewDiff.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.mjs +30 -0
- package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/interactionCountPolyfill.mjs +45 -0
- package/esm/domain/view/viewMetrics/interactionCountPolyfill.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackBfcacheMetrics.mjs +18 -0
- package/esm/domain/view/viewMetrics/trackBfcacheMetrics.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackCommonViewMetrics.mjs +54 -0
- package/esm/domain/view/viewMetrics/trackCommonViewMetrics.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.mjs +117 -0
- package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.mjs +29 -0
- package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackFirstHidden.mjs +33 -0
- package/esm/domain/view/viewMetrics/trackFirstHidden.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackInitialViewMetrics.mjs +36 -0
- package/esm/domain/view/viewMetrics/trackInitialViewMetrics.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.mjs +210 -0
- package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.mjs +70 -0
- package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackLoadingTime.mjs +46 -0
- package/esm/domain/view/viewMetrics/trackLoadingTime.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackNavigationTimings.mjs +35 -0
- package/esm/domain/view/viewMetrics/trackNavigationTimings.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackScrollMetrics.mjs +66 -0
- package/esm/domain/view/viewMetrics/trackScrollMetrics.mjs.map +1 -0
- package/esm/domain/vital/vitalCollection.mjs +85 -0
- package/esm/domain/vital/vitalCollection.mjs.map +1 -0
- package/esm/domain/waitPageActivityEnd.mjs +107 -0
- package/esm/domain/waitPageActivityEnd.mjs.map +1 -0
- package/esm/index.mjs +23 -0
- package/esm/rawRumEvent.types.mjs +42 -0
- package/esm/rawRumEvent.types.mjs.map +1 -0
- package/esm/transport/formDataTransport.mjs +48 -0
- package/esm/transport/formDataTransport.mjs.map +1 -0
- package/esm/transport/startRumBatch.mjs +132 -0
- package/esm/transport/startRumBatch.mjs.map +1 -0
- package/esm/transport/startRumEventBridge.mjs +13 -0
- package/esm/transport/startRumEventBridge.mjs.map +1 -0
- package/package.json +19 -11
- package/src/boot/preStartRum.ts +216 -88
- package/src/boot/rumPublicApi.ts +358 -119
- package/src/boot/startRum.ts +88 -84
- package/src/browser/cookieObservable.ts +19 -28
- package/src/browser/domMutationObservable.ts +7 -12
- package/src/browser/htmlDomUtils.ts +15 -0
- package/src/browser/locationChangeObservable.ts +23 -12
- package/src/browser/performanceObservable.ts +23 -73
- package/src/browser/performanceUtils.ts +52 -4
- package/src/browser/viewportObservable.ts +4 -6
- package/src/domain/action/actionCollection.ts +94 -87
- package/src/domain/action/clickChain.ts +11 -10
- package/src/domain/action/computeFrustration.ts +19 -5
- package/src/domain/action/frustrationIgnore.ts +54 -0
- package/src/domain/action/getActionNameFromElement.ts +27 -61
- package/src/domain/action/interactionSelectorCache.ts +2 -2
- package/src/domain/action/isActionChildEvent.ts +6 -0
- package/src/domain/action/listenActionEvents.ts +2 -11
- package/src/domain/action/trackClickActions.ts +92 -82
- package/src/domain/action/trackManualActions.ts +104 -0
- package/src/domain/assembly.ts +57 -70
- package/src/domain/configuration/configuration.ts +587 -208
- package/src/domain/configuration/index.ts +1 -0
- package/src/domain/configuration/remoteConfiguration.ts +152 -29
- package/src/domain/configuration/remoteConfiguration.types.ts +51 -1
- package/src/domain/configuration/remoteConfigurationCache.ts +153 -0
- package/src/domain/configuration/remoteSdkConfiguration.ts +131 -13
- package/src/domain/configuration/sessionReplayRoutes.ts +2 -47
- package/src/domain/contexts/ciVisibilityContext.ts +23 -12
- package/src/domain/contexts/connectivityContext.ts +7 -10
- package/src/domain/contexts/defaultContext.ts +11 -14
- package/src/domain/contexts/displayContext.ts +8 -12
- package/src/domain/contexts/featureFlagContext.ts +5 -4
- package/src/domain/contexts/internalContext.ts +3 -3
- package/src/domain/contexts/pageStateHistory.ts +20 -31
- package/src/domain/contexts/sessionContext.ts +16 -22
- package/src/domain/contexts/sourceCodeMfeContext.ts +53 -0
- package/src/domain/contexts/syntheticsContext.ts +7 -17
- package/src/domain/contexts/trackingConsentContext.ts +7 -4
- package/src/domain/contexts/urlContexts.ts +13 -9
- package/src/domain/contexts/userAgentDataContext.ts +12 -13
- package/src/domain/contexts/viewHistory.ts +4 -3
- package/src/domain/discardNegativeDuration.ts +1 -1
- package/src/domain/error/errorCollection.ts +12 -22
- package/src/domain/error/trackReportError.ts +4 -7
- package/src/domain/event/eventCollection.ts +4 -2
- package/src/domain/eventTracker.ts +169 -0
- package/src/domain/extractRegexMatch.ts +15 -0
- package/src/domain/getComposedPathSelector.ts +130 -0
- package/src/domain/getSelectorFromElement.ts +125 -31
- package/src/domain/getSessionReplayUrl.ts +4 -13
- package/src/domain/hooks.ts +34 -21
- package/src/domain/lifeCycle.ts +21 -8
- package/src/domain/limitModification.ts +20 -4
- package/src/domain/longTask/longTaskCollection.ts +18 -47
- package/src/domain/plugins.ts +54 -25
- package/src/domain/privacy.ts +16 -24
- package/src/domain/requestCollection.ts +108 -97
- package/src/domain/resource/graphql.ts +71 -25
- package/src/domain/resource/requestRegistry.ts +1 -3
- package/src/domain/resource/resourceCollection.ts +319 -137
- package/src/domain/resource/resourceUtils.ts +24 -26
- package/src/domain/resource/trackManualResources.ts +121 -0
- package/src/domain/resource/webSocketCollection.ts +281 -0
- package/src/domain/session/session.types.ts +5 -0
- package/src/domain/sessionReplayState.ts +36 -0
- package/src/domain/startCustomerDataTelemetry.ts +2 -2
- package/src/domain/tracing/getDocumentTraceId.ts +5 -4
- package/src/domain/tracing/identifier.ts +6 -37
- package/src/domain/tracing/tracer.ts +22 -21
- package/src/domain/tracing/tracer.types.ts +3 -3
- package/src/domain/view/bfCacheSupport.ts +1 -6
- package/src/domain/view/trackViews.ts +40 -37
- package/src/domain/view/viewCollection.ts +29 -23
- package/src/domain/view/viewDiff.ts +115 -0
- package/src/domain/view/viewMetrics/interactionCountPolyfill.ts +13 -2
- package/src/domain/view/viewMetrics/trackBfcacheMetrics.ts +1 -1
- package/src/domain/view/viewMetrics/trackCommonViewMetrics.ts +27 -6
- package/src/domain/view/viewMetrics/trackCumulativeLayoutShift.ts +5 -3
- package/src/domain/view/viewMetrics/trackFirstContentfulPaint.ts +4 -9
- package/src/domain/view/viewMetrics/trackFirstHidden.ts +2 -8
- package/src/domain/view/viewMetrics/trackInitialViewMetrics.ts +4 -13
- package/src/domain/view/viewMetrics/trackInteractionToNextPaint.ts +180 -35
- package/src/domain/view/viewMetrics/trackLargestContentfulPaint.ts +47 -6
- package/src/domain/view/viewMetrics/trackLoadingTime.ts +4 -3
- package/src/domain/view/viewMetrics/trackNavigationTimings.ts +10 -18
- package/src/domain/view/viewMetrics/trackScrollMetrics.ts +23 -37
- package/src/domain/vital/vitalCollection.ts +83 -102
- package/src/domain/waitPageActivityEnd.ts +7 -11
- package/src/domainContext.types.ts +23 -15
- package/src/index.ts +17 -11
- package/src/rawRumEvent.types.ts +80 -26
- package/src/rumEvent.types.ts +730 -505
- package/src/transport/formDataTransport.ts +16 -6
- package/src/transport/startRumBatch.ts +181 -24
- package/cjs/browser/firstInputPolyfill.d.ts +0 -8
- package/cjs/browser/firstInputPolyfill.js +0 -68
- package/cjs/browser/firstInputPolyfill.js.map +0 -1
- package/cjs/domain/configuration/index.js.map +0 -1
- package/cjs/domain/configuration/remoteConfiguration.types.js +0 -7
- package/cjs/domain/configuration/remoteConfiguration.types.js.map +0 -1
- package/cjs/domain/error/trackConsoleError.d.ts +0 -4
- package/cjs/domain/error/trackConsoleError.js +0 -13
- package/cjs/domain/error/trackConsoleError.js.map +0 -1
- package/cjs/domain/resource/matchRequestResourceEntry.d.ts +0 -16
- package/cjs/domain/resource/matchRequestResourceEntry.js +0 -49
- package/cjs/domain/resource/matchRequestResourceEntry.js.map +0 -1
- package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.d.ts +0 -4
- package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.js +0 -24
- package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.js.map +0 -1
- package/cjs/domain/rumSessionManager.d.ts +0 -36
- package/cjs/domain/rumSessionManager.js +0 -77
- package/cjs/domain/rumSessionManager.js.map +0 -1
- package/cjs/domain/sampler/sampler.d.ts +0 -10
- package/cjs/domain/sampler/sampler.js +0 -63
- package/cjs/domain/sampler/sampler.js.map +0 -1
- package/cjs/domain/tracing/sampler.d.ts +0 -10
- package/cjs/domain/tracing/sampler.js +0 -69
- package/cjs/domain/tracing/sampler.js.map +0 -1
- package/cjs/domain/tracing/tracer.types.js +0 -3
- package/cjs/domain/tracing/tracer.types.js.map +0 -1
- package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.d.ts +0 -6
- package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js +0 -44
- package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js.map +0 -1
- package/cjs/domain/view/viewMetrics/trackFirstInput.d.ts +0 -19
- package/cjs/domain/view/viewMetrics/trackFirstInput.js +0 -43
- package/cjs/domain/view/viewMetrics/trackFirstInput.js.map +0 -1
- package/cjs/domainContext.types.js +0 -6
- package/cjs/domainContext.types.js.map +0 -1
- package/cjs/index.js.map +0 -1
- package/cjs/rumEvent.types.js +0 -7
- package/cjs/rumEvent.types.js.map +0 -1
- package/esm/boot/preStartRum.d.ts +0 -7
- package/esm/boot/preStartRum.js +0 -205
- package/esm/boot/preStartRum.js.map +0 -1
- package/esm/boot/rumPublicApi.d.ts +0 -409
- package/esm/boot/rumPublicApi.js +0 -165
- package/esm/boot/rumPublicApi.js.map +0 -1
- package/esm/boot/startRum.d.ts +0 -109
- package/esm/boot/startRum.js +0 -149
- package/esm/boot/startRum.js.map +0 -1
- package/esm/browser/cookieObservable.d.ts +0 -8
- package/esm/browser/cookieObservable.js +0 -35
- package/esm/browser/cookieObservable.js.map +0 -1
- package/esm/browser/domMutationObservable.d.ts +0 -27
- package/esm/browser/domMutationObservable.js +0 -54
- package/esm/browser/domMutationObservable.js.map +0 -1
- package/esm/browser/firstInputPolyfill.d.ts +0 -8
- package/esm/browser/firstInputPolyfill.js +0 -65
- package/esm/browser/firstInputPolyfill.js.map +0 -1
- package/esm/browser/htmlDomUtils.d.ts +0 -13
- package/esm/browser/htmlDomUtils.js +0 -36
- package/esm/browser/htmlDomUtils.js.map +0 -1
- package/esm/browser/locationChangeObservable.d.ts +0 -7
- package/esm/browser/locationChangeObservable.js +0 -48
- package/esm/browser/locationChangeObservable.js.map +0 -1
- package/esm/browser/performanceObservable.d.ts +0 -174
- package/esm/browser/performanceObservable.js +0 -121
- package/esm/browser/performanceObservable.js.map +0 -1
- package/esm/browser/performanceUtils.d.ts +0 -7
- package/esm/browser/performanceUtils.js +0 -38
- package/esm/browser/performanceUtils.js.map +0 -1
- package/esm/browser/scroll.d.ts +0 -2
- package/esm/browser/scroll.js +0 -29
- package/esm/browser/scroll.js.map +0 -1
- package/esm/browser/viewportObservable.d.ts +0 -10
- package/esm/browser/viewportObservable.js +0 -32
- package/esm/browser/viewportObservable.js.map +0 -1
- package/esm/browser/windowOpenObservable.d.ts +0 -5
- package/esm/browser/windowOpenObservable.js +0 -7
- package/esm/browser/windowOpenObservable.js.map +0 -1
- package/esm/domain/action/actionCollection.d.ts +0 -21
- package/esm/domain/action/actionCollection.js +0 -93
- package/esm/domain/action/actionCollection.js.map +0 -1
- package/esm/domain/action/actionNameConstants.d.ts +0 -18
- package/esm/domain/action/actionNameConstants.js +0 -8
- package/esm/domain/action/actionNameConstants.js.map +0 -1
- package/esm/domain/action/clickChain.d.ts +0 -8
- package/esm/domain/action/clickChain.js +0 -57
- package/esm/domain/action/clickChain.js.map +0 -1
- package/esm/domain/action/computeFrustration.d.ts +0 -6
- package/esm/domain/action/computeFrustration.js +0 -65
- package/esm/domain/action/computeFrustration.js.map +0 -1
- package/esm/domain/action/getActionNameFromElement.d.ts +0 -4
- package/esm/domain/action/getActionNameFromElement.js +0 -236
- package/esm/domain/action/getActionNameFromElement.js.map +0 -1
- package/esm/domain/action/interactionSelectorCache.d.ts +0 -5
- package/esm/domain/action/interactionSelectorCache.js +0 -18
- package/esm/domain/action/interactionSelectorCache.js.map +0 -1
- package/esm/domain/action/listenActionEvents.d.ts +0 -19
- package/esm/domain/action/listenActionEvents.js +0 -58
- package/esm/domain/action/listenActionEvents.js.map +0 -1
- package/esm/domain/action/trackClickActions.d.ts +0 -81
- package/esm/domain/action/trackClickActions.js +0 -232
- package/esm/domain/action/trackClickActions.js.map +0 -1
- package/esm/domain/assembly.d.ts +0 -5
- package/esm/domain/assembly.js +0 -99
- package/esm/domain/assembly.js.map +0 -1
- package/esm/domain/configuration/configuration.d.ts +0 -358
- package/esm/domain/configuration/configuration.js +0 -209
- package/esm/domain/configuration/configuration.js.map +0 -1
- package/esm/domain/configuration/index.d.ts +0 -4
- package/esm/domain/configuration/index.js +0 -5
- package/esm/domain/configuration/index.js.map +0 -1
- package/esm/domain/configuration/jsonPathParser.d.ts +0 -28
- package/esm/domain/configuration/jsonPathParser.js +0 -156
- package/esm/domain/configuration/jsonPathParser.js.map +0 -1
- package/esm/domain/configuration/remoteConfiguration.d.ts +0 -39
- package/esm/domain/configuration/remoteConfiguration.js +0 -236
- package/esm/domain/configuration/remoteConfiguration.js.map +0 -1
- package/esm/domain/configuration/remoteConfiguration.types.d.ts +0 -138
- package/esm/domain/configuration/remoteConfiguration.types.js +0 -6
- package/esm/domain/configuration/remoteConfiguration.types.js.map +0 -1
- package/esm/domain/configuration/remoteSdkConfiguration.d.ts +0 -18
- package/esm/domain/configuration/remoteSdkConfiguration.js +0 -137
- package/esm/domain/configuration/remoteSdkConfiguration.js.map +0 -1
- package/esm/domain/configuration/sessionReplayRoutes.d.ts +0 -35
- package/esm/domain/configuration/sessionReplayRoutes.js +0 -65
- package/esm/domain/configuration/sessionReplayRoutes.js.map +0 -1
- package/esm/domain/contexts/ciVisibilityContext.d.ts +0 -12
- package/esm/domain/contexts/ciVisibilityContext.js +0 -30
- package/esm/domain/contexts/ciVisibilityContext.js.map +0 -1
- package/esm/domain/contexts/connectivityContext.d.ts +0 -2
- package/esm/domain/contexts/connectivityContext.js +0 -8
- package/esm/domain/contexts/connectivityContext.js.map +0 -1
- package/esm/domain/contexts/defaultContext.d.ts +0 -4
- package/esm/domain/contexts/defaultContext.js +0 -31
- package/esm/domain/contexts/defaultContext.js.map +0 -1
- package/esm/domain/contexts/displayContext.d.ts +0 -6
- package/esm/domain/contexts/displayContext.js +0 -25
- package/esm/domain/contexts/displayContext.js.map +0 -1
- package/esm/domain/contexts/featureFlagContext.d.ts +0 -19
- package/esm/domain/contexts/featureFlagContext.js +0 -49
- package/esm/domain/contexts/featureFlagContext.js.map +0 -1
- package/esm/domain/contexts/internalContext.d.ts +0 -12
- package/esm/domain/contexts/internalContext.js +0 -23
- package/esm/domain/contexts/internalContext.js.map +0 -1
- package/esm/domain/contexts/pageStateHistory.d.ts +0 -23
- package/esm/domain/contexts/pageStateHistory.js +0 -100
- package/esm/domain/contexts/pageStateHistory.js.map +0 -1
- package/esm/domain/contexts/sessionContext.d.ts +0 -5
- package/esm/domain/contexts/sessionContext.js +0 -44
- package/esm/domain/contexts/sessionContext.js.map +0 -1
- package/esm/domain/contexts/syntheticsContext.d.ts +0 -2
- package/esm/domain/contexts/syntheticsContext.js +0 -22
- package/esm/domain/contexts/syntheticsContext.js.map +0 -1
- package/esm/domain/contexts/trackingConsentContext.d.ts +0 -3
- package/esm/domain/contexts/trackingConsentContext.js +0 -11
- package/esm/domain/contexts/trackingConsentContext.js.map +0 -1
- package/esm/domain/contexts/urlContexts.d.ts +0 -22
- package/esm/domain/contexts/urlContexts.js +0 -60
- package/esm/domain/contexts/urlContexts.js.map +0 -1
- package/esm/domain/contexts/userAgentDataContext.d.ts +0 -2
- package/esm/domain/contexts/userAgentDataContext.js +0 -28
- package/esm/domain/contexts/userAgentDataContext.js.map +0 -1
- package/esm/domain/contexts/viewHistory.d.ts +0 -17
- package/esm/domain/contexts/viewHistory.js +0 -44
- package/esm/domain/contexts/viewHistory.js.map +0 -1
- package/esm/domain/discardNegativeDuration.d.ts +0 -2
- package/esm/domain/discardNegativeDuration.js +0 -5
- package/esm/domain/discardNegativeDuration.js.map +0 -1
- package/esm/domain/error/errorCollection.d.ts +0 -17
- package/esm/domain/error/errorCollection.js +0 -70
- package/esm/domain/error/errorCollection.js.map +0 -1
- package/esm/domain/error/trackConsoleError.d.ts +0 -4
- package/esm/domain/error/trackConsoleError.js +0 -10
- package/esm/domain/error/trackConsoleError.js.map +0 -1
- package/esm/domain/error/trackReportError.d.ts +0 -5
- package/esm/domain/error/trackReportError.js +0 -13
- package/esm/domain/error/trackReportError.js.map +0 -1
- package/esm/domain/event/eventCollection.d.ts +0 -10
- package/esm/domain/event/eventCollection.js +0 -24
- package/esm/domain/event/eventCollection.js.map +0 -1
- package/esm/domain/getSelectorFromElement.d.ts +0 -64
- package/esm/domain/getSelectorFromElement.js +0 -213
- package/esm/domain/getSelectorFromElement.js.map +0 -1
- package/esm/domain/getSessionReplayUrl.d.ts +0 -9
- package/esm/domain/getSessionReplayUrl.js +0 -30
- package/esm/domain/getSessionReplayUrl.js.map +0 -1
- package/esm/domain/hooks.d.ts +0 -23
- package/esm/domain/hooks.js +0 -3
- package/esm/domain/hooks.js.map +0 -1
- package/esm/domain/lifeCycle.d.ts +0 -73
- package/esm/domain/lifeCycle.js +0 -3
- package/esm/domain/lifeCycle.js.map +0 -1
- package/esm/domain/limitModification.d.ts +0 -8
- package/esm/domain/limitModification.js +0 -43
- package/esm/domain/limitModification.js.map +0 -1
- package/esm/domain/longTask/longTaskCollection.d.ts +0 -18
- package/esm/domain/longTask/longTaskCollection.js +0 -87
- package/esm/domain/longTask/longTaskCollection.js.map +0 -1
- package/esm/domain/plugins.d.ts +0 -40
- package/esm/domain/plugins.js +0 -12
- package/esm/domain/plugins.js.map +0 -1
- package/esm/domain/privacy.d.ts +0 -44
- package/esm/domain/privacy.js +0 -302
- package/esm/domain/privacy.js.map +0 -1
- package/esm/domain/privacyConstants.d.ts +0 -23
- package/esm/domain/privacyConstants.js +0 -35
- package/esm/domain/privacyConstants.js.map +0 -1
- package/esm/domain/requestCollection.d.ts +0 -54
- package/esm/domain/requestCollection.js +0 -106
- package/esm/domain/requestCollection.js.map +0 -1
- package/esm/domain/resource/graphql.d.ts +0 -23
- package/esm/domain/resource/graphql.js +0 -91
- package/esm/domain/resource/graphql.js.map +0 -1
- package/esm/domain/resource/matchRequestResourceEntry.d.ts +0 -16
- package/esm/domain/resource/matchRequestResourceEntry.js +0 -46
- package/esm/domain/resource/matchRequestResourceEntry.js.map +0 -1
- package/esm/domain/resource/requestRegistry.d.ts +0 -9
- package/esm/domain/resource/requestRegistry.js +0 -37
- package/esm/domain/resource/requestRegistry.js.map +0 -1
- package/esm/domain/resource/resourceCollection.d.ts +0 -7
- package/esm/domain/resource/resourceCollection.js +0 -187
- package/esm/domain/resource/resourceCollection.js.map +0 -1
- package/esm/domain/resource/resourceUtils.d.ts +0 -55
- package/esm/domain/resource/resourceUtils.js +0 -244
- package/esm/domain/resource/resourceUtils.js.map +0 -1
- package/esm/domain/resource/retrieveInitialDocumentResourceTiming.d.ts +0 -4
- package/esm/domain/resource/retrieveInitialDocumentResourceTiming.js +0 -21
- package/esm/domain/resource/retrieveInitialDocumentResourceTiming.js.map +0 -1
- package/esm/domain/rumSessionManager.d.ts +0 -36
- package/esm/domain/rumSessionManager.js +0 -72
- package/esm/domain/rumSessionManager.js.map +0 -1
- package/esm/domain/sampler/sampler.d.ts +0 -10
- package/esm/domain/sampler/sampler.js +0 -58
- package/esm/domain/sampler/sampler.js.map +0 -1
- package/esm/domain/startCustomerDataTelemetry.d.ts +0 -4
- package/esm/domain/startCustomerDataTelemetry.js +0 -52
- package/esm/domain/startCustomerDataTelemetry.js.map +0 -1
- package/esm/domain/tracing/getDocumentTraceId.d.ts +0 -12
- package/esm/domain/tracing/getDocumentTraceId.js +0 -68
- package/esm/domain/tracing/getDocumentTraceId.js.map +0 -1
- package/esm/domain/tracing/identifier.d.ts +0 -13
- package/esm/domain/tracing/identifier.js +0 -50
- package/esm/domain/tracing/identifier.js.map +0 -1
- package/esm/domain/tracing/sampler.d.ts +0 -10
- package/esm/domain/tracing/sampler.js +0 -64
- package/esm/domain/tracing/sampler.js.map +0 -1
- package/esm/domain/tracing/tracer.d.ts +0 -30
- package/esm/domain/tracing/tracer.js +0 -156
- package/esm/domain/tracing/tracer.js.map +0 -1
- package/esm/domain/tracing/tracer.types.d.ts +0 -12
- package/esm/domain/tracing/tracer.types.js +0 -2
- package/esm/domain/tracing/tracer.types.js.map +0 -1
- package/esm/domain/trackEventCounts.d.ts +0 -17
- package/esm/domain/trackEventCounts.js +0 -47
- package/esm/domain/trackEventCounts.js.map +0 -1
- package/esm/domain/view/bfCacheSupport.d.ts +0 -2
- package/esm/domain/view/bfCacheSupport.js +0 -10
- package/esm/domain/view/bfCacheSupport.js.map +0 -1
- package/esm/domain/view/trackViewEventCounts.d.ts +0 -5
- package/esm/domain/view/trackViewEventCounts.js +0 -13
- package/esm/domain/view/trackViewEventCounts.js.map +0 -1
- package/esm/domain/view/trackViews.d.ts +0 -65
- package/esm/domain/view/trackViews.js +0 -278
- package/esm/domain/view/trackViews.js.map +0 -1
- package/esm/domain/view/viewCollection.d.ts +0 -18
- package/esm/domain/view/viewCollection.js +0 -150
- package/esm/domain/view/viewCollection.js.map +0 -1
- package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.d.ts +0 -6
- package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.js +0 -28
- package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.js.map +0 -1
- package/esm/domain/view/viewMetrics/interactionCountPolyfill.d.ts +0 -18
- package/esm/domain/view/viewMetrics/interactionCountPolyfill.js +0 -39
- package/esm/domain/view/viewMetrics/interactionCountPolyfill.js.map +0 -1
- package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.d.ts +0 -6
- package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js +0 -41
- package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackBfcacheMetrics.d.ts +0 -8
- package/esm/domain/view/viewMetrics/trackBfcacheMetrics.js +0 -14
- package/esm/domain/view/viewMetrics/trackBfcacheMetrics.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackCommonViewMetrics.d.ts +0 -21
- package/esm/domain/view/viewMetrics/trackCommonViewMetrics.js +0 -34
- package/esm/domain/view/viewMetrics/trackCommonViewMetrics.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.d.ts +0 -37
- package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js +0 -130
- package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.d.ts +0 -13
- package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js +0 -34
- package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackFirstHidden.d.ts +0 -10
- package/esm/domain/view/viewMetrics/trackFirstHidden.js +0 -30
- package/esm/domain/view/viewMetrics/trackFirstHidden.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackFirstInput.d.ts +0 -19
- package/esm/domain/view/viewMetrics/trackFirstInput.js +0 -40
- package/esm/domain/view/viewMetrics/trackFirstInput.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackInitialViewMetrics.d.ts +0 -15
- package/esm/domain/view/viewMetrics/trackInitialViewMetrics.js +0 -38
- package/esm/domain/view/viewMetrics/trackInitialViewMetrics.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.d.ts +0 -25
- package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js +0 -149
- package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.d.ts +0 -18
- package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js +0 -57
- package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackLoadingTime.d.ts +0 -14
- package/esm/domain/view/viewMetrics/trackLoadingTime.js +0 -47
- package/esm/domain/view/viewMetrics/trackLoadingTime.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackNavigationTimings.d.ts +0 -14
- package/esm/domain/view/viewMetrics/trackNavigationTimings.js +0 -40
- package/esm/domain/view/viewMetrics/trackNavigationTimings.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackScrollMetrics.d.ts +0 -25
- package/esm/domain/view/viewMetrics/trackScrollMetrics.js +0 -72
- package/esm/domain/view/viewMetrics/trackScrollMetrics.js.map +0 -1
- package/esm/domain/vital/vitalCollection.d.ts +0 -55
- package/esm/domain/vital/vitalCollection.js +0 -107
- package/esm/domain/vital/vitalCollection.js.map +0 -1
- package/esm/domain/waitPageActivityEnd.d.ts +0 -54
- package/esm/domain/waitPageActivityEnd.js +0 -123
- package/esm/domain/waitPageActivityEnd.js.map +0 -1
- package/esm/domainContext.types.d.ts +0 -39
- package/esm/domainContext.types.js +0 -5
- package/esm/domainContext.types.js.map +0 -1
- package/esm/index.d.ts +0 -42
- package/esm/index.js +0 -22
- package/esm/index.js.map +0 -1
- package/esm/rawRumEvent.types.d.ts +0 -326
- package/esm/rawRumEvent.types.js +0 -31
- package/esm/rawRumEvent.types.js.map +0 -1
- package/esm/rumEvent.types.d.ts +0 -2038
- package/esm/rumEvent.types.js +0 -6
- package/esm/rumEvent.types.js.map +0 -1
- package/esm/transport/formDataTransport.d.ts +0 -16
- package/esm/transport/formDataTransport.js +0 -43
- package/esm/transport/formDataTransport.js.map +0 -1
- package/esm/transport/startRumBatch.d.ts +0 -5
- package/esm/transport/startRumBatch.js +0 -30
- package/esm/transport/startRumBatch.js.map +0 -1
- package/esm/transport/startRumEventBridge.d.ts +0 -2
- package/esm/transport/startRumEventBridge.js +0 -8
- package/esm/transport/startRumEventBridge.js.map +0 -1
- package/src/browser/firstInputPolyfill.ts +0 -87
- package/src/domain/error/trackConsoleError.ts +0 -14
- package/src/domain/resource/matchRequestResourceEntry.ts +0 -68
- package/src/domain/resource/retrieveInitialDocumentResourceTiming.ts +0 -27
- package/src/domain/rumSessionManager.ts +0 -134
- package/src/domain/sampler/sampler.ts +0 -63
- package/src/domain/tracing/sampler.ts +0 -69
- package/src/domain/view/viewMetrics/startInitialViewMetricsTelemetry.ts +0 -70
- package/src/domain/view/viewMetrics/trackFirstInput.ts +0 -59
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trackInteractionToNextPaint.js","sourceRoot":"","sources":["../../../../src/domain/view/viewMetrics/trackInteractionToNextPaint.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trackInteractionToNextPaint.js","names":["ONE_MINUTE","noop","createPerformanceObservable","elapsed","getInteractionSelector","isElementNode","getSelectorFromElement","ViewLoadingType","getInteractionCount","supportPerformanceTimingEvent"],"sources":["../../../../src/domain/view/viewMetrics/trackInteractionToNextPaint.ts"],"sourcesContent":["import type { RelativeTime, Duration } from '@kubesense/kubesense-js-core/time'\nimport { ONE_MINUTE, elapsed } from '@kubesense/kubesense-js-core/time'\nimport { noop } from '@kubesense/kubesense-browser-core'\nimport type { RumFirstInputTiming, RumPerformanceEventTiming } from '../../../browser/performanceObservable'\nimport {\n createPerformanceObservable,\n RumPerformanceEntryType,\n supportPerformanceTimingEvent,\n} from '../../../browser/performanceObservable'\nimport { ViewLoadingType } from '../../../rawRumEvent.types'\nimport { getSelectorFromElement } from '../../getSelectorFromElement'\nimport { isElementNode } from '../../../browser/htmlDomUtils'\nimport { getInteractionSelector } from '../../action/interactionSelectorCache'\nimport type { RumConfiguration } from '../../configuration'\nimport { getInteractionCount, initInteractionCountPolyfill } from './interactionCountPolyfill'\n\n// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.\nconst MAX_INTERACTION_ENTRIES = 10\n// Arbitrary value to cap INP outliers\nexport const MAX_INP_VALUE = (1 * ONE_MINUTE) as Duration\n\n// Event Timing API rounds duration values to the nearest 8 ms\nconst RENDER_TIME_GROUPING_THRESHOLD = 8 as Duration\n\nexport interface InteractionToNextPaint {\n value: Duration\n targetSelector?: string\n time?: Duration\n subParts?: {\n inputDelay: Duration\n processingDuration: Duration\n presentationDelay: Duration\n }\n}\ninterface EntriesGroup {\n startTime: RelativeTime\n processingStart: RelativeTime\n processingEnd: RelativeTime\n // Reference time used for grouping, set once at group creation — anchors the 8ms merge window\n referenceRenderTime: RelativeTime\n}\n\n/**\n * Track the interaction to next paint (INP).\n * To avoid outliers, return the p98 worst interaction of the view.\n * Documentation: https://web.dev/inp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts\n */\nexport function trackInteractionToNextPaint(\n configuration: RumConfiguration,\n viewStart: RelativeTime,\n viewLoadingType: ViewLoadingType\n) {\n if (!isInteractionToNextPaintSupported()) {\n return {\n getInteractionToNextPaint: () => undefined,\n setViewEnd: noop,\n stop: noop,\n }\n }\n\n let viewEnd = Infinity as RelativeTime\n let currentInp:\n | {\n duration: Duration\n startTime: Duration\n targetSelector?: string\n subParts?: InteractionToNextPaint['subParts']\n }\n | undefined\n\n const { getViewInteractionCount, stopViewInteractionCount } = trackViewInteractionCount(viewLoadingType)\n const longestInteractions = trackLongestInteractions(getViewInteractionCount)\n const subPartsTracker = createSubPartsTracker(longestInteractions)\n const firstInputSubscription = createPerformanceObservable({\n type: RumPerformanceEntryType.FIRST_INPUT,\n buffered: true,\n }).subscribe(handleEntries)\n const eventSubscription = createPerformanceObservable({\n type: RumPerformanceEntryType.EVENT,\n // durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)\n // cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L202-L210\n durationThreshold: 40,\n buffered: true,\n }).subscribe(handleEntries)\n\n function handleEntries(entries: Array<RumPerformanceEventTiming | RumFirstInputTiming>) {\n for (const entry of entries) {\n if (\n entry.interactionId &&\n // Check the entry start time is inside the view bounds because some view interactions can be reported after the view end (if long duration).\n entry.startTime >= viewStart &&\n entry.startTime <= viewEnd\n ) {\n longestInteractions.process(entry)\n subPartsTracker.process(entry)\n }\n }\n subPartsTracker.pruneUntracked()\n const candidate = longestInteractions.estimateP98Interaction()\n if (candidate) {\n updateCurrentInp(candidate)\n }\n }\n\n function updateCurrentInp(candidate: RumPerformanceEventTiming | RumFirstInputTiming) {\n const newStartTime = elapsed(viewStart, candidate.startTime)\n // startTime catches identity changes when the p98 switches to a different interaction with the same duration,\n // ensuring targetSelector and subParts always describe the same interaction.\n if (candidate.duration !== currentInp?.duration || newStartTime !== currentInp.startTime) {\n let targetSelector = getInteractionSelector(candidate.startTime)\n if (!targetSelector && candidate.target && isElementNode(candidate.target)) {\n targetSelector = getSelectorFromElement(candidate.target, configuration.actionNameAttribute)\n }\n currentInp = {\n duration: candidate.duration,\n startTime: newStartTime,\n targetSelector,\n }\n }\n // Recomputed on every batch: the group for the p98 interaction may have been updated\n // with new min/max timing even when the p98 identity (duration, startTime) is unchanged.\n currentInp.subParts = subPartsTracker.computeSubParts(candidate, sanitizeInpValue(currentInp.duration))\n }\n\n return {\n getInteractionToNextPaint: (): InteractionToNextPaint | undefined => {\n // If no INP duration where captured because of the performanceObserver 40ms threshold\n // but the view interaction count > 0 then report 0\n if (currentInp) {\n return {\n value: sanitizeInpValue(currentInp.duration),\n targetSelector: currentInp.targetSelector,\n time: currentInp.startTime,\n subParts: currentInp.subParts,\n }\n } else if (getViewInteractionCount()) {\n return {\n value: 0 as Duration,\n }\n }\n },\n setViewEnd: (viewEndTime: RelativeTime) => {\n viewEnd = viewEndTime\n stopViewInteractionCount()\n },\n stop: () => {\n eventSubscription.unsubscribe()\n firstInputSubscription.unsubscribe()\n subPartsTracker.stop()\n },\n }\n}\n\n/**\n * Maintains a bounded list of the slowest interactions seen so far, used to estimate the p98\n * interaction duration without keeping every entry in memory.\n */\nfunction trackLongestInteractions(getViewInteractionCount: () => number) {\n const longestInteractions: Array<RumPerformanceEventTiming | RumFirstInputTiming> = []\n\n function sortAndTrimLongestInteractions() {\n longestInteractions.sort((a, b) => b.duration - a.duration).splice(MAX_INTERACTION_ENTRIES)\n }\n\n return {\n /**\n * Process the performance entry:\n * - if its duration is long enough, add the performance entry to the list of worst interactions\n * - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions\n */\n process(entry: RumPerformanceEventTiming | RumFirstInputTiming) {\n const interactionIndex = longestInteractions.findIndex(\n (interaction) => entry.interactionId === interaction.interactionId\n )\n\n const minLongestInteraction = longestInteractions[longestInteractions.length - 1]\n\n if (interactionIndex !== -1) {\n if (entry.duration > longestInteractions[interactionIndex].duration) {\n longestInteractions[interactionIndex] = entry\n sortAndTrimLongestInteractions()\n }\n } else if (\n longestInteractions.length < MAX_INTERACTION_ENTRIES ||\n entry.duration > minLongestInteraction.duration\n ) {\n longestInteractions.push(entry)\n sortAndTrimLongestInteractions()\n }\n },\n /**\n * Compute the p98 longest interaction.\n * For better performance the computation is based on 10 longest interactions and the interaction count of the current view.\n */\n estimateP98Interaction(): RumPerformanceEventTiming | RumFirstInputTiming | undefined {\n const interactionIndex = Math.min(longestInteractions.length - 1, Math.floor(getViewInteractionCount() / 50))\n return longestInteractions[interactionIndex]\n },\n\n isTracked(interactionId: number): boolean {\n return longestInteractions.some((i) => i.interactionId === interactionId)\n },\n }\n}\n\n/**\n * Tracks the number of interactions that occurred during the current view. Freezes the count\n * when the view ends so that the p98 estimate remains stable after `setViewEnd` is called.\n */\nexport function trackViewInteractionCount(viewLoadingType: ViewLoadingType) {\n initInteractionCountPolyfill()\n const previousInteractionCount = viewLoadingType === ViewLoadingType.INITIAL_LOAD ? 0 : getInteractionCount()\n let state: { stopped: false } | { stopped: true; interactionCount: number } = { stopped: false }\n\n function computeViewInteractionCount() {\n return getInteractionCount() - previousInteractionCount\n }\n\n return {\n getViewInteractionCount: () => {\n if (state.stopped) {\n return state.interactionCount\n }\n\n return computeViewInteractionCount()\n },\n stopViewInteractionCount: () => {\n state = { stopped: true, interactionCount: computeViewInteractionCount() }\n },\n }\n}\n\n/**\n * Groups performance entries by interaction and render time to compute INP subparts\n * (input delay, processing duration, presentation delay). Entries sharing the same\n * interactionId, or whose render time falls within the 8 ms Event Timing rounding window,\n * are merged into a single group so that subparts always sum to the reported INP duration.\n */\nfunction createSubPartsTracker(longestInteractions: ReturnType<typeof trackLongestInteractions>) {\n const groupsByInteractionId = new Map<number, EntriesGroup>()\n\n function updateGroupWithEntry(group: EntriesGroup, entry: RumPerformanceEventTiming | RumFirstInputTiming) {\n group.startTime = Math.min(entry.startTime, group.startTime) as RelativeTime\n // For each group, we keep the biggest interval possible between processingStart and processingEnd\n group.processingStart = Math.min(entry.processingStart, group.processingStart) as RelativeTime\n group.processingEnd = Math.max(entry.processingEnd, group.processingEnd) as RelativeTime\n }\n\n return {\n process(entry: RumPerformanceEventTiming | RumFirstInputTiming): void {\n if (entry.interactionId === undefined || !entry.processingStart || !entry.processingEnd) {\n return\n }\n\n const renderTime = (entry.startTime + entry.duration) as RelativeTime\n const existingGroup = groupsByInteractionId.get(entry.interactionId)\n\n if (existingGroup) {\n // Update existing group with MIN/MAX values (keep original referenceRenderTime)\n updateGroupWithEntry(existingGroup, entry)\n return\n }\n\n // Try to find a group within 8ms window to merge with (different interactionId, same frame)\n for (const [, group] of groupsByInteractionId.entries()) {\n if (Math.abs(renderTime - group.referenceRenderTime) <= RENDER_TIME_GROUPING_THRESHOLD) {\n updateGroupWithEntry(group, entry)\n // Also store under this entry's interactionId for easy lookup\n groupsByInteractionId.set(entry.interactionId, group)\n return\n }\n }\n\n // Create new group\n groupsByInteractionId.set(entry.interactionId, {\n startTime: entry.startTime,\n processingStart: entry.processingStart,\n processingEnd: entry.processingEnd,\n referenceRenderTime: renderTime,\n })\n },\n\n // Prune after all entries are grouped: groups not in longestInteractions can never affect p98 subparts.\n // Keeps groupsByInteractionId capped at MAX_INTERACTION_ENTRIES\n pruneUntracked(): void {\n for (const [interactionId] of groupsByInteractionId) {\n if (!longestInteractions.isTracked(interactionId)) {\n groupsByInteractionId.delete(interactionId)\n }\n }\n },\n\n computeSubParts(\n entry: RumPerformanceEventTiming | RumFirstInputTiming,\n inpDuration: Duration\n ): InteractionToNextPaint['subParts'] | undefined {\n if (!entry.processingStart || !entry.processingEnd || entry.interactionId === undefined) {\n return undefined\n }\n\n const group = groupsByInteractionId.get(entry.interactionId)\n // Shouldn't happen since entries are grouped before p98 calculation.\n if (!group) {\n return undefined\n }\n\n // Use group.startTime consistently to ensure subparts sum to inpDuration\n // Math.max prevents nextPaintTime from being before processingStart (Chrome implementation)\n const nextPaintTime = Math.max(group.startTime + inpDuration, group.processingStart) as RelativeTime\n\n // Clamp processingEnd to not exceed nextPaintTime\n const processingEnd = Math.min(group.processingEnd, nextPaintTime) as RelativeTime\n\n return {\n inputDelay: elapsed(group.startTime, group.processingStart),\n processingDuration: elapsed(group.processingStart, processingEnd),\n presentationDelay: elapsed(processingEnd, nextPaintTime),\n }\n },\n\n stop(): void {\n groupsByInteractionId.clear()\n },\n }\n}\n\nexport function isInteractionToNextPaintSupported() {\n return (\n supportPerformanceTimingEvent(RumPerformanceEntryType.EVENT) &&\n window.PerformanceEventTiming &&\n 'interactionId' in PerformanceEventTiming.prototype\n )\n}\n\nfunction sanitizeInpValue(inpValue: Duration) {\n return Math.min(inpValue, MAX_INP_VALUE) as Duration\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RelativeTime } from '@kubesense/kubesense-
|
|
1
|
+
import type { RelativeTime } from '@kubesense/kubesense-js-core/time';
|
|
2
2
|
import type { RumConfiguration } from '../../configuration';
|
|
3
3
|
import type { FirstHidden } from './trackFirstHidden';
|
|
4
4
|
export declare const LCP_MAXIMUM_DELAY: number;
|
|
@@ -6,6 +6,11 @@ export interface LargestContentfulPaint {
|
|
|
6
6
|
value: RelativeTime;
|
|
7
7
|
targetSelector?: string;
|
|
8
8
|
resourceUrl?: string;
|
|
9
|
+
subParts?: {
|
|
10
|
+
loadDelay: RelativeTime;
|
|
11
|
+
loadTime: RelativeTime;
|
|
12
|
+
renderDelay: RelativeTime;
|
|
13
|
+
};
|
|
9
14
|
}
|
|
10
15
|
/**
|
|
11
16
|
* Track the largest contentful paint (LCP) occurring during the initial View. This can yield
|
|
@@ -1,61 +1,71 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
// Discard LCP timings above a certain delay to avoid incorrect data
|
|
9
|
-
// It happens in some cases like sleep mode or some browser implementations
|
|
10
|
-
exports.LCP_MAXIMUM_DELAY = 10 * kubesense_browser_core_1.ONE_MINUTE;
|
|
1
|
+
const require_performanceObservable = require("../../../browser/performanceObservable.js");
|
|
2
|
+
const require_getSelectorFromElement = require("../../getSelectorFromElement.js");
|
|
3
|
+
const require_performanceUtils = require("../../../browser/performanceUtils.js");
|
|
4
|
+
let _kubesense_kubesense_js_core_time = require("@kubesense/kubesense-js-core/time");
|
|
5
|
+
let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
|
|
6
|
+
//#region src/domain/view/viewMetrics/trackLargestContentfulPaint.ts
|
|
7
|
+
const LCP_MAXIMUM_DELAY = 10 * _kubesense_kubesense_js_core_time.ONE_MINUTE;
|
|
11
8
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
* Track the largest contentful paint (LCP) occurring during the initial View. This can yield
|
|
10
|
+
* multiple values, only the most recent one should be used.
|
|
11
|
+
* Documentation: https://web.dev/lcp/
|
|
12
|
+
* Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts
|
|
13
|
+
*/
|
|
17
14
|
function trackLargestContentfulPaint(configuration, firstHidden, eventTarget, callback) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return {
|
|
51
|
-
stop: () => {
|
|
52
|
-
stopEventListener();
|
|
53
|
-
performanceLcpSubscription.unsubscribe();
|
|
54
|
-
},
|
|
55
|
-
};
|
|
15
|
+
let firstInteractionTimestamp = Infinity;
|
|
16
|
+
const { stop: stopEventListener } = (0, _kubesense_kubesense_browser_core.addEventListeners)(eventTarget, [_kubesense_kubesense_browser_core.DOM_EVENT.POINTER_DOWN, _kubesense_kubesense_browser_core.DOM_EVENT.KEY_DOWN], (event) => {
|
|
17
|
+
firstInteractionTimestamp = event.timeStamp;
|
|
18
|
+
}, {
|
|
19
|
+
capture: true,
|
|
20
|
+
once: true
|
|
21
|
+
});
|
|
22
|
+
let biggestLcpSize = 0;
|
|
23
|
+
const performanceLcpSubscription = require_performanceObservable.createPerformanceObservable({
|
|
24
|
+
type: "largest-contentful-paint",
|
|
25
|
+
buffered: true
|
|
26
|
+
}).subscribe((entries) => {
|
|
27
|
+
const lcpEntry = (0, _kubesense_kubesense_browser_core.findLast)(entries, (entry) => entry.entryType === "largest-contentful-paint" && entry.startTime < firstInteractionTimestamp && entry.startTime < firstHidden.timeStamp && entry.startTime < LCP_MAXIMUM_DELAY && entry.size > biggestLcpSize);
|
|
28
|
+
if (lcpEntry) {
|
|
29
|
+
let lcpTargetSelector;
|
|
30
|
+
if (lcpEntry.element) lcpTargetSelector = require_getSelectorFromElement.getSelectorFromElement(lcpEntry.element, configuration.actionNameAttribute);
|
|
31
|
+
const resourceUrl = computeLcpEntryUrl(lcpEntry);
|
|
32
|
+
const lcpValue = lcpEntry.startTime;
|
|
33
|
+
const subParts = computeLcpSubParts(resourceUrl, lcpValue);
|
|
34
|
+
callback({
|
|
35
|
+
value: lcpValue,
|
|
36
|
+
targetSelector: lcpTargetSelector,
|
|
37
|
+
resourceUrl,
|
|
38
|
+
subParts
|
|
39
|
+
});
|
|
40
|
+
biggestLcpSize = lcpEntry.size;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return { stop: () => {
|
|
44
|
+
stopEventListener();
|
|
45
|
+
performanceLcpSubscription.unsubscribe();
|
|
46
|
+
} };
|
|
56
47
|
}
|
|
57
|
-
// The property url report an empty string if the value is not available, we shouldn't report it in this case.
|
|
58
48
|
function computeLcpEntryUrl(entry) {
|
|
59
|
-
|
|
49
|
+
return entry.url === "" ? void 0 : entry.url;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Compute the LCP sub-parts breakdown (loadDelay, loadTime, renderDelay).
|
|
53
|
+
* Returns undefined if navigation timing data or TTFB is unavailable.
|
|
54
|
+
*/
|
|
55
|
+
function computeLcpSubParts(resourceUrl, lcpValue) {
|
|
56
|
+
const firstByte = require_performanceUtils.sanitizeFirstByte(require_performanceUtils.getNavigationEntry());
|
|
57
|
+
if (firstByte === void 0) return;
|
|
58
|
+
const lcpResourceEntry = resourceUrl ? require_performanceUtils.findLcpResourceEntry(resourceUrl, lcpValue) : void 0;
|
|
59
|
+
const lcpRequestStart = lcpResourceEntry ? Math.max(firstByte, lcpResourceEntry.requestStart || lcpResourceEntry.startTime) : firstByte;
|
|
60
|
+
const lcpResponseEnd = Math.min(lcpValue, Math.max(lcpRequestStart, lcpResourceEntry?.responseEnd || 0));
|
|
61
|
+
return {
|
|
62
|
+
loadDelay: lcpRequestStart - firstByte,
|
|
63
|
+
loadTime: lcpResponseEnd - lcpRequestStart,
|
|
64
|
+
renderDelay: lcpValue - lcpResponseEnd
|
|
65
|
+
};
|
|
60
66
|
}
|
|
67
|
+
//#endregion
|
|
68
|
+
exports.LCP_MAXIMUM_DELAY = LCP_MAXIMUM_DELAY;
|
|
69
|
+
exports.trackLargestContentfulPaint = trackLargestContentfulPaint;
|
|
70
|
+
|
|
61
71
|
//# sourceMappingURL=trackLargestContentfulPaint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trackLargestContentfulPaint.js","
|
|
1
|
+
{"version":3,"file":"trackLargestContentfulPaint.js","names":["ONE_MINUTE","addEventListeners","DOM_EVENT","createPerformanceObservable","findLast","getSelectorFromElement","sanitizeFirstByte","getNavigationEntry","findLcpResourceEntry"],"sources":["../../../../src/domain/view/viewMetrics/trackLargestContentfulPaint.ts"],"sourcesContent":["import type { RelativeTime } from '@kubesense/kubesense-js-core/time'\nimport { ONE_MINUTE } from '@kubesense/kubesense-js-core/time'\nimport { DOM_EVENT, addEventListeners, findLast } from '@kubesense/kubesense-browser-core'\nimport type { RumConfiguration } from '../../configuration'\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable'\nimport { findLcpResourceEntry, getNavigationEntry, sanitizeFirstByte } from '../../../browser/performanceUtils'\nimport type { RumLargestContentfulPaintTiming } from '../../../browser/performanceObservable'\nimport { getSelectorFromElement } from '../../getSelectorFromElement'\nimport type { FirstHidden } from './trackFirstHidden'\n\n// Discard LCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport const LCP_MAXIMUM_DELAY = 10 * ONE_MINUTE\n\nexport interface LargestContentfulPaint {\n value: RelativeTime\n targetSelector?: string\n resourceUrl?: string\n subParts?: {\n loadDelay: RelativeTime\n loadTime: RelativeTime\n renderDelay: RelativeTime\n }\n}\n\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View. This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts\n */\nexport function trackLargestContentfulPaint(\n configuration: RumConfiguration,\n firstHidden: FirstHidden,\n eventTarget: Window,\n callback: (largestContentfulPaint: LargestContentfulPaint) => void\n) {\n // Ignore entries that come after the first user interaction. According to the documentation, the\n // browser should not send largest-contentful-paint entries after a user interact with the page,\n // but the web-vitals reference implementation uses this as a safeguard.\n let firstInteractionTimestamp = Infinity\n const { stop: stopEventListener } = addEventListeners(\n eventTarget,\n [DOM_EVENT.POINTER_DOWN, DOM_EVENT.KEY_DOWN],\n (event) => {\n firstInteractionTimestamp = event.timeStamp\n },\n { capture: true, once: true }\n )\n\n let biggestLcpSize = 0\n const performanceLcpSubscription = createPerformanceObservable({\n type: RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT,\n buffered: true,\n }).subscribe((entries) => {\n const lcpEntry = findLast(\n entries,\n (entry): entry is RumLargestContentfulPaintTiming =>\n entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT &&\n entry.startTime < firstInteractionTimestamp &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < LCP_MAXIMUM_DELAY &&\n // Ensure to get the LCP entry with the biggest size, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1516655\n entry.size > biggestLcpSize\n )\n if (lcpEntry) {\n let lcpTargetSelector\n if (lcpEntry.element) {\n lcpTargetSelector = getSelectorFromElement(lcpEntry.element, configuration.actionNameAttribute)\n }\n\n const resourceUrl = computeLcpEntryUrl(lcpEntry)\n const lcpValue = lcpEntry.startTime\n\n const subParts = computeLcpSubParts(resourceUrl, lcpValue)\n\n callback({\n value: lcpValue,\n targetSelector: lcpTargetSelector,\n resourceUrl,\n subParts,\n })\n biggestLcpSize = lcpEntry.size\n }\n })\n\n return {\n stop: () => {\n stopEventListener()\n performanceLcpSubscription.unsubscribe()\n },\n }\n}\n\n// The property url report an empty string if the value is not available, we shouldn't report it in this case.\nfunction computeLcpEntryUrl(entry: RumLargestContentfulPaintTiming) {\n return entry.url === '' ? undefined : entry.url\n}\n\n/**\n * Compute the LCP sub-parts breakdown (loadDelay, loadTime, renderDelay).\n * Returns undefined if navigation timing data or TTFB is unavailable.\n */\nfunction computeLcpSubParts(\n resourceUrl: string | undefined,\n lcpValue: RelativeTime\n): LargestContentfulPaint['subParts'] {\n const firstByte = sanitizeFirstByte(getNavigationEntry())\n\n if (firstByte === undefined) {\n return undefined\n }\n\n const lcpResourceEntry = resourceUrl ? findLcpResourceEntry(resourceUrl, lcpValue) : undefined\n const lcpRequestStart = lcpResourceEntry\n ? (Math.max(firstByte, lcpResourceEntry.requestStart || lcpResourceEntry.startTime) as RelativeTime)\n : firstByte\n\n // Cap at LCP time to handle resources that continue downloading after LCP (e.g., videos)\n const lcpResponseEnd = Math.min(lcpValue, Math.max(lcpRequestStart, lcpResourceEntry?.responseEnd || 0))\n\n return {\n loadDelay: (lcpRequestStart - firstByte) as RelativeTime,\n loadTime: (lcpResponseEnd - lcpRequestStart) as RelativeTime,\n renderDelay: (lcpValue - lcpResponseEnd) as RelativeTime,\n }\n}\n"],"mappings":";;;;;;AAYA,MAAa,oBAAoB,KAAKA,kCAAAA;;;;;;;AAmBtC,SAAgB,4BACd,eACA,aACA,aACA,UACA;CAIA,IAAI,4BAA4B;CAChC,MAAM,EAAE,MAAM,uBAAA,GAAsBC,kCAAAA,kBAAAA,CAClC,aACA,CAACC,kCAAAA,UAAU,cAAcA,kCAAAA,UAAU,QAAQ,IAC1C,UAAU;EACT,4BAA4B,MAAM;CACpC,GACA;EAAE,SAAS;EAAM,MAAM;CAAK,CAC9B;CAEA,IAAI,iBAAiB;CACrB,MAAM,6BAA6BC,8BAAAA,4BAA4B;EAC7D,MAAA;EACA,UAAU;CACZ,CAAC,CAAC,CAAC,WAAW,YAAY;EACxB,MAAM,YAAA,GAAWC,kCAAAA,SAAAA,CACf,UACC,UACC,MAAM,cAAA,8BACN,MAAM,YAAY,6BAClB,MAAM,YAAY,YAAY,aAC9B,MAAM,YAAY,qBAGlB,MAAM,OAAO,cACjB;EACA,IAAI,UAAU;GACZ,IAAI;GACJ,IAAI,SAAS,SACX,oBAAoBC,+BAAAA,uBAAuB,SAAS,SAAS,cAAc,mBAAmB;GAGhG,MAAM,cAAc,mBAAmB,QAAQ;GAC/C,MAAM,WAAW,SAAS;GAE1B,MAAM,WAAW,mBAAmB,aAAa,QAAQ;GAEzD,SAAS;IACP,OAAO;IACP,gBAAgB;IAChB;IACA;GACF,CAAC;GACD,iBAAiB,SAAS;EAC5B;CACF,CAAC;CAED,OAAO,EACL,YAAY;EACV,kBAAkB;EAClB,2BAA2B,YAAY;CACzC,EACF;AACF;AAGA,SAAS,mBAAmB,OAAwC;CAClE,OAAO,MAAM,QAAQ,KAAK,KAAA,IAAY,MAAM;AAC9C;;;;;AAMA,SAAS,mBACP,aACA,UACoC;CACpC,MAAM,YAAYC,yBAAAA,kBAAkBC,yBAAAA,mBAAmB,CAAC;CAExD,IAAI,cAAc,KAAA,GAChB;CAGF,MAAM,mBAAmB,cAAcC,yBAAAA,qBAAqB,aAAa,QAAQ,IAAI,KAAA;CACrF,MAAM,kBAAkB,mBACnB,KAAK,IAAI,WAAW,iBAAiB,gBAAgB,iBAAiB,SAAS,IAChF;CAGJ,MAAM,iBAAiB,KAAK,IAAI,UAAU,KAAK,IAAI,iBAAiB,kBAAkB,eAAe,CAAC,CAAC;CAEvG,OAAO;EACL,WAAY,kBAAkB;EAC9B,UAAW,iBAAiB;EAC5B,aAAc,WAAW;CAC3B;AACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ClocksState, Duration
|
|
1
|
+
import type { ClocksState, Duration } from '@kubesense/kubesense-js-core/time';
|
|
2
|
+
import type { Observable } from '@kubesense/kubesense-browser-core';
|
|
2
3
|
import type { RumConfiguration } from '../../configuration';
|
|
3
4
|
import type { LifeCycle } from '../../lifeCycle';
|
|
4
5
|
import { ViewLoadingType } from '../../../rawRumEvent.types';
|
|
@@ -1,50 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const rawRumEvent_types_1 = require("../../../rawRumEvent.types");
|
|
7
|
-
const trackFirstHidden_1 = require("./trackFirstHidden");
|
|
1
|
+
const require_rawRumEvent_types = require("../../../rawRumEvent.types.js");
|
|
2
|
+
const require_waitPageActivityEnd = require("../../waitPageActivityEnd.js");
|
|
3
|
+
const require_trackFirstHidden = require("./trackFirstHidden.js");
|
|
4
|
+
let _kubesense_kubesense_js_core_time = require("@kubesense/kubesense-js-core/time");
|
|
5
|
+
//#region src/domain/view/viewMetrics/trackLoadingTime.ts
|
|
8
6
|
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
* For non-initial views (such as route changes or BFCache restores), the regular load event does not fire
|
|
8
|
+
* In these cases, trackLoadingTime can only emit a loadingTime if waitPageActivityEnd detects some post-restore activity.
|
|
9
|
+
* If nothing happens after the view starts,no candidate is recorded and loadingTime stays undefined.
|
|
10
|
+
*/
|
|
13
11
|
function trackLoadingTime(lifeCycle, domMutationObservable, windowOpenObservable, configuration, loadType, viewStart, callback) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
loadingTimeCandidates.push(loadEvent);
|
|
45
|
-
invokeCallbackIfAllCandidatesAreReceived();
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
};
|
|
12
|
+
let isWaitingForLoadEvent = loadType === require_rawRumEvent_types.ViewLoadingType.INITIAL_LOAD;
|
|
13
|
+
let isWaitingForActivityLoadingTime = true;
|
|
14
|
+
const loadingTimeCandidates = [];
|
|
15
|
+
const firstHidden = require_trackFirstHidden.trackFirstHidden(viewStart);
|
|
16
|
+
function invokeCallbackIfAllCandidatesAreReceived() {
|
|
17
|
+
if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {
|
|
18
|
+
const loadingTime = Math.max(...loadingTimeCandidates);
|
|
19
|
+
if (loadingTime < firstHidden.timeStamp - viewStart.relative) callback(loadingTime);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const { stop } = require_waitPageActivityEnd.waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, (event) => {
|
|
23
|
+
if (isWaitingForActivityLoadingTime) {
|
|
24
|
+
isWaitingForActivityLoadingTime = false;
|
|
25
|
+
if (event.hadActivity) loadingTimeCandidates.push((0, _kubesense_kubesense_js_core_time.elapsed)(viewStart.timeStamp, event.end));
|
|
26
|
+
invokeCallbackIfAllCandidatesAreReceived();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return {
|
|
30
|
+
stop: () => {
|
|
31
|
+
stop();
|
|
32
|
+
firstHidden.stop();
|
|
33
|
+
},
|
|
34
|
+
setLoadEvent: (loadEvent) => {
|
|
35
|
+
if (isWaitingForLoadEvent) {
|
|
36
|
+
isWaitingForLoadEvent = false;
|
|
37
|
+
loadingTimeCandidates.push(loadEvent);
|
|
38
|
+
invokeCallbackIfAllCandidatesAreReceived();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
49
42
|
}
|
|
43
|
+
//#endregion
|
|
44
|
+
exports.trackLoadingTime = trackLoadingTime;
|
|
45
|
+
|
|
50
46
|
//# sourceMappingURL=trackLoadingTime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trackLoadingTime.js","
|
|
1
|
+
{"version":3,"file":"trackLoadingTime.js","names":["ViewLoadingType","trackFirstHidden","waitPageActivityEnd","elapsed"],"sources":["../../../../src/domain/view/viewMetrics/trackLoadingTime.ts"],"sourcesContent":["import type { ClocksState, Duration } from '@kubesense/kubesense-js-core/time'\nimport type { Observable } from '@kubesense/kubesense-browser-core'\nimport { elapsed } from '@kubesense/kubesense-js-core/time'\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd'\nimport type { RumConfiguration } from '../../configuration'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { ViewLoadingType } from '../../../rawRumEvent.types'\nimport type { RumMutationRecord } from '../../../browser/domMutationObservable'\nimport { trackFirstHidden } from './trackFirstHidden'\n\n/**\n * For non-initial views (such as route changes or BFCache restores), the regular load event does not fire\n * In these cases, trackLoadingTime can only emit a loadingTime if waitPageActivityEnd detects some post-restore activity.\n * If nothing happens after the view starts,no candidate is recorded and loadingTime stays undefined.\n */\n\nexport function trackLoadingTime(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable<RumMutationRecord[]>,\n windowOpenObservable: Observable<void>,\n configuration: RumConfiguration,\n loadType: ViewLoadingType,\n viewStart: ClocksState,\n callback: (loadingTime: Duration) => void\n) {\n let isWaitingForLoadEvent = loadType === ViewLoadingType.INITIAL_LOAD\n let isWaitingForActivityLoadingTime = true\n const loadingTimeCandidates: Duration[] = []\n const firstHidden = trackFirstHidden(viewStart)\n\n function invokeCallbackIfAllCandidatesAreReceived() {\n if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n const loadingTime = Math.max(...loadingTimeCandidates)\n // firstHidden is a relative time from time origin, so we use the relative start time of the view to compare with the loading time\n if (loadingTime < firstHidden.timeStamp - viewStart.relative) {\n callback(loadingTime as Duration)\n }\n }\n }\n\n const { stop } = waitPageActivityEnd(\n lifeCycle,\n domMutationObservable,\n windowOpenObservable,\n configuration,\n (event) => {\n if (isWaitingForActivityLoadingTime) {\n isWaitingForActivityLoadingTime = false\n if (event.hadActivity) {\n loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end))\n }\n invokeCallbackIfAllCandidatesAreReceived()\n }\n }\n )\n\n return {\n stop: () => {\n stop()\n firstHidden.stop()\n },\n setLoadEvent: (loadEvent: Duration) => {\n if (isWaitingForLoadEvent) {\n isWaitingForLoadEvent = false\n loadingTimeCandidates.push(loadEvent)\n invokeCallbackIfAllCandidatesAreReceived()\n }\n },\n }\n}\n"],"mappings":";;;;;;;;;;AAgBA,SAAgB,iBACd,WACA,uBACA,sBACA,eACA,UACA,WACA,UACA;CACA,IAAI,wBAAwB,aAAaA,0BAAAA,gBAAgB;CACzD,IAAI,kCAAkC;CACtC,MAAM,wBAAoC,CAAC;CAC3C,MAAM,cAAcC,yBAAAA,iBAAiB,SAAS;CAE9C,SAAS,2CAA2C;EAClD,IAAI,CAAC,mCAAmC,CAAC,yBAAyB,sBAAsB,SAAS,GAAG;GAClG,MAAM,cAAc,KAAK,IAAI,GAAG,qBAAqB;GAErD,IAAI,cAAc,YAAY,YAAY,UAAU,UAClD,SAAS,WAAuB;EAEpC;CACF;CAEA,MAAM,EAAE,SAASC,4BAAAA,oBACf,WACA,uBACA,sBACA,gBACC,UAAU;EACT,IAAI,iCAAiC;GACnC,kCAAkC;GAClC,IAAI,MAAM,aACR,sBAAsB,MAAA,GAAKC,kCAAAA,QAAAA,CAAQ,UAAU,WAAW,MAAM,GAAG,CAAC;GAEpE,yCAAyC;EAC3C;CACF,CACF;CAEA,OAAO;EACL,YAAY;GACV,KAAK;GACL,YAAY,KAAK;EACnB;EACA,eAAe,cAAwB;GACrC,IAAI,uBAAuB;IACzB,wBAAwB;IACxB,sBAAsB,KAAK,SAAS;IACpC,yCAAyC;GAC3C;EACF;CACF;AACF"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { Duration } from '@kubesense/kubesense-
|
|
1
|
+
import type { Duration } from '@kubesense/kubesense-js-core/time';
|
|
2
2
|
import type { RumPerformanceNavigationTiming } from '../../../browser/performanceObservable';
|
|
3
|
-
import type { RumConfiguration } from '../../configuration';
|
|
4
3
|
export interface NavigationTimings {
|
|
5
4
|
domComplete: Duration;
|
|
6
5
|
domContentLoaded: Duration;
|
|
@@ -9,6 +8,6 @@ export interface NavigationTimings {
|
|
|
9
8
|
firstByte: Duration | undefined;
|
|
10
9
|
}
|
|
11
10
|
export type RelevantNavigationTiming = Pick<RumPerformanceNavigationTiming, 'domComplete' | 'domContentLoadedEventEnd' | 'domInteractive' | 'loadEventEnd' | 'responseStart'>;
|
|
12
|
-
export declare function trackNavigationTimings(
|
|
11
|
+
export declare function trackNavigationTimings(callback: (timings: NavigationTimings) => void): {
|
|
13
12
|
stop: () => void;
|
|
14
13
|
};
|
|
@@ -1,43 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (!isIncompleteNavigation(entry)) {
|
|
10
|
-
callback(processNavigationEntry(entry));
|
|
11
|
-
}
|
|
12
|
-
});
|
|
1
|
+
const require_performanceUtils = require("../../../browser/performanceUtils.js");
|
|
2
|
+
let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
|
|
3
|
+
//#region src/domain/view/viewMetrics/trackNavigationTimings.ts
|
|
4
|
+
function trackNavigationTimings(callback) {
|
|
5
|
+
return waitAfterLoadEvent(() => {
|
|
6
|
+
const entry = (0, _kubesense_kubesense_browser_core.mockable)(require_performanceUtils.getNavigationEntry)();
|
|
7
|
+
if (!isIncompleteNavigation(entry)) callback(processNavigationEntry(entry));
|
|
8
|
+
});
|
|
13
9
|
}
|
|
14
10
|
function processNavigationEntry(entry) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// https://github.com/GoogleChrome/web-vitals/issues/137
|
|
23
|
-
// https://github.com/GoogleChrome/web-vitals/issues/162
|
|
24
|
-
firstByte: entry.responseStart > 0 && entry.responseStart <= (0, kubesense_browser_core_1.relativeNow)() ? entry.responseStart : undefined,
|
|
25
|
-
};
|
|
11
|
+
return {
|
|
12
|
+
domComplete: entry.domComplete,
|
|
13
|
+
domContentLoaded: entry.domContentLoadedEventEnd,
|
|
14
|
+
domInteractive: entry.domInteractive,
|
|
15
|
+
loadEvent: entry.loadEventEnd,
|
|
16
|
+
firstByte: require_performanceUtils.sanitizeFirstByte(entry)
|
|
17
|
+
};
|
|
26
18
|
}
|
|
27
19
|
function isIncompleteNavigation(entry) {
|
|
28
|
-
|
|
20
|
+
return entry.loadEventEnd <= 0;
|
|
29
21
|
}
|
|
30
|
-
function waitAfterLoadEvent(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
(0, kubesense_browser_core_1.clearTimeout)(timeoutId);
|
|
40
|
-
},
|
|
41
|
-
};
|
|
22
|
+
function waitAfterLoadEvent(callback) {
|
|
23
|
+
let timeoutId;
|
|
24
|
+
const { stop: stopOnReadyState } = (0, _kubesense_kubesense_browser_core.runOnReadyState)("complete", () => {
|
|
25
|
+
timeoutId = (0, _kubesense_kubesense_browser_core.setTimeout)(() => callback());
|
|
26
|
+
});
|
|
27
|
+
return { stop: () => {
|
|
28
|
+
stopOnReadyState();
|
|
29
|
+
(0, _kubesense_kubesense_browser_core.clearTimeout)(timeoutId);
|
|
30
|
+
} };
|
|
42
31
|
}
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.trackNavigationTimings = trackNavigationTimings;
|
|
34
|
+
|
|
43
35
|
//# sourceMappingURL=trackNavigationTimings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trackNavigationTimings.js","
|
|
1
|
+
{"version":3,"file":"trackNavigationTimings.js","names":["mockable","getNavigationEntry","sanitizeFirstByte","runOnReadyState","setTimeout"],"sources":["../../../../src/domain/view/viewMetrics/trackNavigationTimings.ts"],"sourcesContent":["import type { TimeoutId } from '@kubesense/kubesense-browser-core'\nimport type { Duration } from '@kubesense/kubesense-js-core/time'\nimport { setTimeout, runOnReadyState, clearTimeout, mockable } from '@kubesense/kubesense-browser-core'\nimport type { RumPerformanceNavigationTiming } from '../../../browser/performanceObservable'\nimport { getNavigationEntry, sanitizeFirstByte } from '../../../browser/performanceUtils'\n\nexport interface NavigationTimings {\n domComplete: Duration\n domContentLoaded: Duration\n domInteractive: Duration\n loadEvent: Duration\n firstByte: Duration | undefined\n}\n\n// This is a subset of \"RumPerformanceNavigationTiming\" that only contains the relevant fields for\n// computing navigation timings. This is useful to mock the navigation entry in tests.\nexport type RelevantNavigationTiming = Pick<\n RumPerformanceNavigationTiming,\n 'domComplete' | 'domContentLoadedEventEnd' | 'domInteractive' | 'loadEventEnd' | 'responseStart'\n>\n\nexport function trackNavigationTimings(callback: (timings: NavigationTimings) => void) {\n return waitAfterLoadEvent(() => {\n const entry = mockable(getNavigationEntry)()\n\n if (!isIncompleteNavigation(entry)) {\n callback(processNavigationEntry(entry))\n }\n })\n}\n\nfunction processNavigationEntry(entry: RelevantNavigationTiming): NavigationTimings {\n return {\n domComplete: entry.domComplete,\n domContentLoaded: entry.domContentLoadedEventEnd,\n domInteractive: entry.domInteractive,\n loadEvent: entry.loadEventEnd,\n firstByte: sanitizeFirstByte(entry),\n }\n}\n\nfunction isIncompleteNavigation(entry: RelevantNavigationTiming) {\n return entry.loadEventEnd <= 0\n}\n\nfunction waitAfterLoadEvent(callback: () => void) {\n let timeoutId: TimeoutId | undefined\n const { stop: stopOnReadyState } = runOnReadyState('complete', () => {\n // Invoke the callback a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n timeoutId = setTimeout(() => callback())\n })\n return {\n stop: () => {\n stopOnReadyState()\n clearTimeout(timeoutId)\n },\n }\n}\n"],"mappings":";;;AAqBA,SAAgB,uBAAuB,UAAgD;CACrF,OAAO,yBAAyB;EAC9B,MAAM,SAAA,GAAQA,kCAAAA,SAAAA,CAASC,yBAAAA,kBAAkB,CAAC,CAAC;EAE3C,IAAI,CAAC,uBAAuB,KAAK,GAC/B,SAAS,uBAAuB,KAAK,CAAC;CAE1C,CAAC;AACH;AAEA,SAAS,uBAAuB,OAAoD;CAClF,OAAO;EACL,aAAa,MAAM;EACnB,kBAAkB,MAAM;EACxB,gBAAgB,MAAM;EACtB,WAAW,MAAM;EACjB,WAAWC,yBAAAA,kBAAkB,KAAK;CACpC;AACF;AAEA,SAAS,uBAAuB,OAAiC;CAC/D,OAAO,MAAM,gBAAgB;AAC/B;AAEA,SAAS,mBAAmB,UAAsB;CAChD,IAAI;CACJ,MAAM,EAAE,MAAM,sBAAA,GAAqBC,kCAAAA,gBAAAA,CAAgB,kBAAkB;EAEnE,aAAA,GAAYC,kCAAAA,WAAAA,OAAiB,SAAS,CAAC;CACzC,CAAC;CACD,OAAO,EACL,YAAY;EACV,iBAAiB;EACjB,CAAA,GAAA,kCAAA,aAAA,CAAa,SAAS;CACxB,EACF;AACF"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Duration, ClocksState } from '@kubesense/kubesense-js-core/time';
|
|
2
2
|
import { Observable } from '@kubesense/kubesense-browser-core';
|
|
3
|
-
import type { RumConfiguration } from '../../configuration';
|
|
4
3
|
/** Arbitrary scroll throttle duration */
|
|
5
4
|
export declare const THROTTLE_SCROLL_DURATION = 1000;
|
|
6
5
|
export interface ScrollMetrics {
|
|
@@ -9,7 +8,7 @@ export interface ScrollMetrics {
|
|
|
9
8
|
maxDepthScrollTop: number;
|
|
10
9
|
maxScrollHeightTime: Duration;
|
|
11
10
|
}
|
|
12
|
-
export declare function trackScrollMetrics(
|
|
11
|
+
export declare function trackScrollMetrics(viewStart: ClocksState, callback: (scrollMetrics: ScrollMetrics) => void, scrollValues?: Observable<ScrollValues>): {
|
|
13
12
|
stop: () => void;
|
|
14
13
|
};
|
|
15
14
|
export interface ScrollValues {
|
|
@@ -22,4 +21,4 @@ export declare function computeScrollValues(): {
|
|
|
22
21
|
scrollDepth: number;
|
|
23
22
|
scrollTop: number;
|
|
24
23
|
};
|
|
25
|
-
export declare function createScrollValuesObservable(
|
|
24
|
+
export declare function createScrollValuesObservable(throttleDuration?: number): Observable<ScrollValues>;
|