@kubesense/kubesense-browser-rum-core 1.7.0 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,218 +1,226 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
const require_htmlDomUtils = require("../browser/htmlDomUtils.js");
|
|
2
|
+
const require_actionNameConstants = require("./action/actionNameConstants.js");
|
|
3
|
+
//#region src/domain/getSelectorFromElement.ts
|
|
4
|
+
/**
|
|
5
|
+
* Marker used to indicate shadow DOM boundaries in selectors.
|
|
6
|
+
* Named after the deprecated Shadow DOM v0 '::shadow' pseudo-element which served the same
|
|
7
|
+
* purpose of marking entry into a shadow root.
|
|
8
|
+
* Note: This is NOT a valid CSS selector, it's an internal marker that requires custom
|
|
9
|
+
* parsing logic.
|
|
10
|
+
*/
|
|
11
|
+
const SHADOW_DOM_MARKER = "::shadow ";
|
|
7
12
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
'data-element',
|
|
25
|
-
'data-source-file',
|
|
13
|
+
* Stable attributes are attributes that are commonly used to identify parts of a UI (ex:
|
|
14
|
+
* component). Those attribute values should not be generated randomly (hardcoded most of the time)
|
|
15
|
+
* and stay the same across deploys. They are not necessarily unique across the document.
|
|
16
|
+
*/
|
|
17
|
+
const STABLE_ATTRIBUTES = [
|
|
18
|
+
require_actionNameConstants.DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,
|
|
19
|
+
"data-testid",
|
|
20
|
+
"data-test",
|
|
21
|
+
"data-qa",
|
|
22
|
+
"data-cy",
|
|
23
|
+
"data-test-id",
|
|
24
|
+
"data-qa-id",
|
|
25
|
+
"data-testing",
|
|
26
|
+
"data-component",
|
|
27
|
+
"data-element",
|
|
28
|
+
"data-source-file"
|
|
26
29
|
];
|
|
27
|
-
// Selectors to use if they target a single element on the whole document. Those selectors are
|
|
28
|
-
// considered as "stable" and uniquely identify an element regardless of the page state. If we find
|
|
29
|
-
// one, we should consider the selector "complete" and stop iterating over ancestors.
|
|
30
30
|
const GLOBALLY_UNIQUE_SELECTOR_GETTERS = [getStableAttributeSelector, getIDSelector];
|
|
31
|
-
// Selectors to use if they target a single element among an element descendants. Those selectors
|
|
32
|
-
// are more brittle than "globally unique" selectors and should be combined with ancestor selectors
|
|
33
|
-
// to improve specificity.
|
|
34
31
|
const UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS = [
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
getStableAttributeSelector,
|
|
33
|
+
getClassSelector,
|
|
34
|
+
getTagNameSelector
|
|
38
35
|
];
|
|
39
36
|
function getSelectorFromElement(targetElement, actionNameAttribute) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
37
|
+
if (!targetElement.isConnected) return;
|
|
38
|
+
const subtrees = getAllSubtreeTargets(targetElement);
|
|
39
|
+
const selectorParts = [];
|
|
40
|
+
for (const { rootNode, target } of subtrees) {
|
|
41
|
+
const selector = getSelectorFromElementWithinSubtree(target, rootNode, actionNameAttribute);
|
|
42
|
+
if (!selector) return;
|
|
43
|
+
selectorParts.push(selector);
|
|
44
|
+
}
|
|
45
|
+
return selectorParts.join(SHADOW_DOM_MARKER);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns all (rootNode, target) pairs from the document down to the element.
|
|
49
|
+
*/
|
|
50
|
+
function getAllSubtreeTargets(element) {
|
|
51
|
+
const result = [];
|
|
52
|
+
let currentTarget = element;
|
|
53
|
+
while (currentTarget) {
|
|
54
|
+
const rootNode = currentTarget.getRootNode();
|
|
55
|
+
result.push({
|
|
56
|
+
rootNode,
|
|
57
|
+
target: currentTarget
|
|
58
|
+
});
|
|
59
|
+
if (require_htmlDomUtils.isNodeShadowRoot(rootNode)) currentTarget = rootNode.host;
|
|
60
|
+
else break;
|
|
61
|
+
}
|
|
62
|
+
return result.reverse();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Computes a CSS selector for an element within a specific subtree (document or shadow root).
|
|
66
|
+
*/
|
|
67
|
+
function getSelectorFromElementWithinSubtree(targetElement, rootNode, actionNameAttribute) {
|
|
68
|
+
let currentSelector;
|
|
69
|
+
let currentElement = targetElement;
|
|
70
|
+
while (currentElement && currentElement.nodeName !== "HTML") {
|
|
71
|
+
const globallyUniqueSelector = findSelector(currentElement, rootNode, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueWithinRoot, actionNameAttribute, currentSelector);
|
|
72
|
+
if (globallyUniqueSelector) return combineSelector(globallyUniqueSelector, currentSelector);
|
|
73
|
+
currentSelector = combineSelector(findSelector(currentElement, rootNode, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, currentSelector) || getPositionSelector(currentElement), currentSelector);
|
|
74
|
+
currentElement = currentElement.parentElement;
|
|
75
|
+
}
|
|
76
|
+
return currentSelector;
|
|
58
77
|
}
|
|
59
78
|
function isGeneratedValue(value) {
|
|
60
|
-
|
|
61
|
-
// if it thinks the part is an identifier. The condition it uses is to checks whether a digit is
|
|
62
|
-
// present.
|
|
63
|
-
//
|
|
64
|
-
// Here, we use the same strategy: if the value contains a digit, we consider it generated. This
|
|
65
|
-
// strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate
|
|
66
|
-
// CSS selectors so it should be fine most of the time.
|
|
67
|
-
return /[0-9]/.test(value);
|
|
79
|
+
return /[0-9]/.test(value);
|
|
68
80
|
}
|
|
69
81
|
function getIDSelector(element) {
|
|
70
|
-
|
|
71
|
-
return `#${CSS.escape(element.id)}`;
|
|
72
|
-
}
|
|
82
|
+
if (element.id && !isGeneratedValue(element.id)) return `#${CSS.escape(element.id)}`;
|
|
73
83
|
}
|
|
74
84
|
function getClassSelector(element) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
return `${CSS.escape(element.tagName)}.${CSS.escape(className)}`;
|
|
85
|
-
}
|
|
85
|
+
if (element.tagName === "BODY") return;
|
|
86
|
+
const classList = element.classList;
|
|
87
|
+
for (let i = 0; i < classList.length; i += 1) {
|
|
88
|
+
const className = classList[i];
|
|
89
|
+
if (isGeneratedValue(className)) continue;
|
|
90
|
+
return `${CSS.escape(element.tagName)}.${CSS.escape(className)}`;
|
|
91
|
+
}
|
|
86
92
|
}
|
|
87
93
|
function getTagNameSelector(element) {
|
|
88
|
-
|
|
94
|
+
return CSS.escape(element.tagName);
|
|
89
95
|
}
|
|
90
96
|
function getStableAttributeSelector(element, actionNameAttribute) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return `${CSS.escape(element.tagName)}[${attributeName}="${CSS.escape(element.getAttribute(attributeName))}"]`;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
97
|
+
if (actionNameAttribute) {
|
|
98
|
+
const selector = getAttributeSelector(actionNameAttribute);
|
|
99
|
+
if (selector) return selector;
|
|
100
|
+
}
|
|
101
|
+
for (const attributeName of STABLE_ATTRIBUTES) {
|
|
102
|
+
const selector = getAttributeSelector(attributeName);
|
|
103
|
+
if (selector) return selector;
|
|
104
|
+
}
|
|
105
|
+
function getAttributeSelector(attributeName) {
|
|
106
|
+
if (element.hasAttribute(attributeName)) return `${CSS.escape(element.tagName)}${getAttributeValueSelector(attributeName, element.getAttribute(attributeName))}`;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function getAttributeValueSelector(attributeName, attributeValue) {
|
|
110
|
+
return `[${attributeName}="${CSS.escape(attributeValue)}"]`;
|
|
108
111
|
}
|
|
109
112
|
function getPositionSelector(element) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
113
|
+
const nthOfType = getNthOfTypeSelector(element);
|
|
114
|
+
return `${CSS.escape(element.tagName)}:nth-of-type(${nthOfType})`;
|
|
115
|
+
}
|
|
116
|
+
function getNthOfTypeSelector(element) {
|
|
117
|
+
let sibling = element.parentNode.firstElementChild;
|
|
118
|
+
let nthOfType = 1;
|
|
119
|
+
while (sibling && sibling !== element) {
|
|
120
|
+
if (sibling.tagName === element.tagName) nthOfType += 1;
|
|
121
|
+
sibling = sibling.nextElementSibling;
|
|
122
|
+
}
|
|
123
|
+
return nthOfType;
|
|
119
124
|
}
|
|
120
|
-
function findSelector(element, selectorGetters, predicate, actionNameAttribute, childSelector) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
if (predicate(element, elementSelector, childSelector)) {
|
|
127
|
-
return combineSelector(elementSelector, childSelector);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
125
|
+
function findSelector(element, rootNode, selectorGetters, predicate, actionNameAttribute, childSelector) {
|
|
126
|
+
for (const selectorGetter of selectorGetters) {
|
|
127
|
+
const elementSelector = selectorGetter(element, actionNameAttribute);
|
|
128
|
+
if (!elementSelector) continue;
|
|
129
|
+
if (predicate(element, rootNode, elementSelector, childSelector)) return elementSelector;
|
|
130
|
+
}
|
|
130
131
|
}
|
|
131
132
|
/**
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
function
|
|
135
|
-
|
|
133
|
+
* Check whether the selector is unique within the root node (document or shadow root).
|
|
134
|
+
*/
|
|
135
|
+
function isSelectorUniqueWithinRoot(_element, rootNode, elementSelector, childSelector) {
|
|
136
|
+
return rootNode.querySelectorAll(combineSelector(elementSelector, childSelector)).length === 1;
|
|
136
137
|
}
|
|
137
138
|
/**
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}
|
|
211
|
-
sibling = sibling.nextElementSibling;
|
|
212
|
-
}
|
|
213
|
-
return true;
|
|
139
|
+
* Check whether the selector is unique among the element siblings. In other words, it returns true
|
|
140
|
+
* if "ELEMENT_PARENT > CHILD_SELECTOR" returns a single element.
|
|
141
|
+
*
|
|
142
|
+
* @param currentElement - the element being considered while iterating over the target
|
|
143
|
+
* element ancestors.
|
|
144
|
+
* @param _rootNode - the root node (document or shadow root) - unused but required for predicate signature.
|
|
145
|
+
* @param currentElementSelector - a selector that matches the current element. That
|
|
146
|
+
* selector is not a composed selector (i.e. it might be a single tag name, class name...).
|
|
147
|
+
* @param childSelector - child selector is a selector that targets a descendant
|
|
148
|
+
* of the current element. When undefined, the current element is the target element.
|
|
149
|
+
*
|
|
150
|
+
* # Scope selector usage
|
|
151
|
+
*
|
|
152
|
+
* When composed together, the final selector will be joined with `>` operators to make sure we
|
|
153
|
+
* target direct descendants at each level. In this function, we'll use `querySelector` to check if
|
|
154
|
+
* a selector matches descendants of the current element. But by default, the query selector match
|
|
155
|
+
* elements at any level. Example:
|
|
156
|
+
*
|
|
157
|
+
* ```html
|
|
158
|
+
* <main>
|
|
159
|
+
* <div>
|
|
160
|
+
* <span></span>
|
|
161
|
+
* </div>
|
|
162
|
+
* <marquee>
|
|
163
|
+
* <div>
|
|
164
|
+
* <span></span>
|
|
165
|
+
* </div>
|
|
166
|
+
* </marquee>
|
|
167
|
+
* </main>
|
|
168
|
+
* ```
|
|
169
|
+
*
|
|
170
|
+
* `sibling.querySelector('DIV > SPAN')` will match both span elements, so we would consider the
|
|
171
|
+
* selector to be not unique, even if it is unique when we'll compose it with the parent with a `>`
|
|
172
|
+
* operator (`MAIN > DIV > SPAN`).
|
|
173
|
+
*
|
|
174
|
+
* To avoid this, we can use the `:scope` selector to make sure the selector starts from the current
|
|
175
|
+
* sibling (i.e. `sibling.querySelector('DIV:scope > SPAN')` will only match the first span).
|
|
176
|
+
*
|
|
177
|
+
* [1]: https://developer.mozilla.org/fr/docs/Web/CSS/:scope
|
|
178
|
+
*
|
|
179
|
+
* # Performance considerations
|
|
180
|
+
*
|
|
181
|
+
* We compute selectors in performance-critical operations (ex: during a click), so we need to make
|
|
182
|
+
* sure the function is as fast as possible. We observed that naively using `querySelectorAll` to
|
|
183
|
+
* check if the selector matches more than 1 element is quite expensive, so we want to avoid it.
|
|
184
|
+
*
|
|
185
|
+
* Because we are iterating the DOM upward and we use that function at every level, we know the
|
|
186
|
+
* child selector is already unique among the current element children, so we don't need to check
|
|
187
|
+
* for the current element subtree.
|
|
188
|
+
*
|
|
189
|
+
* Instead, we can focus on the current element siblings. If we find a single element matching the
|
|
190
|
+
* selector within a sibling, we know that it's not unique. This allows us to use `querySelector`
|
|
191
|
+
* (or `matches`, when the current element is the target element) instead of `querySelectorAll`.
|
|
192
|
+
*/
|
|
193
|
+
function isSelectorUniqueAmongSiblings(currentElement, _rootNode, currentElementSelector, childSelector) {
|
|
194
|
+
let isSiblingMatching;
|
|
195
|
+
if (childSelector === void 0) isSiblingMatching = (sibling) => sibling.matches(currentElementSelector);
|
|
196
|
+
else {
|
|
197
|
+
const scopedSelector = combineSelector(`${currentElementSelector}:scope`, childSelector);
|
|
198
|
+
isSiblingMatching = (sibling) => sibling.querySelector(scopedSelector) !== null;
|
|
199
|
+
}
|
|
200
|
+
let sibling = currentElement.previousElementSibling;
|
|
201
|
+
while (sibling) {
|
|
202
|
+
if (isSiblingMatching(sibling)) return false;
|
|
203
|
+
sibling = sibling.previousElementSibling;
|
|
204
|
+
}
|
|
205
|
+
sibling = currentElement.nextElementSibling;
|
|
206
|
+
while (sibling) {
|
|
207
|
+
if (isSiblingMatching(sibling)) return false;
|
|
208
|
+
sibling = sibling.nextElementSibling;
|
|
209
|
+
}
|
|
210
|
+
return true;
|
|
214
211
|
}
|
|
215
212
|
function combineSelector(parent, child) {
|
|
216
|
-
|
|
213
|
+
return child ? `${parent}>${child}` : parent;
|
|
217
214
|
}
|
|
215
|
+
//#endregion
|
|
216
|
+
exports.SHADOW_DOM_MARKER = SHADOW_DOM_MARKER;
|
|
217
|
+
exports.STABLE_ATTRIBUTES = STABLE_ATTRIBUTES;
|
|
218
|
+
exports.getAttributeValueSelector = getAttributeValueSelector;
|
|
219
|
+
exports.getIDSelector = getIDSelector;
|
|
220
|
+
exports.getNthOfTypeSelector = getNthOfTypeSelector;
|
|
221
|
+
exports.getSelectorFromElement = getSelectorFromElement;
|
|
222
|
+
exports.getTagNameSelector = getTagNameSelector;
|
|
223
|
+
exports.isGeneratedValue = isGeneratedValue;
|
|
224
|
+
exports.isSelectorUniqueAmongSiblings = isSelectorUniqueAmongSiblings;
|
|
225
|
+
|
|
218
226
|
//# sourceMappingURL=getSelectorFromElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSelectorFromElement.js","sourceRoot":"","sources":["../../src/domain/getSelectorFromElement.ts"],"names":[],"mappings":";;;AAuCA,wDAsCC;AA+JD,sEA2BC;AAvQD,sEAAyF;AAEzF;;;;GAIG;AACU,QAAA,iBAAiB,GAAG;IAC/B,gEAA0C;IAC1C,4DAA4D;IAC5D,aAAa;IACb,WAAW;IACX,SAAS;IACT,SAAS;IACT,cAAc;IACd,YAAY;IACZ,cAAc;IACd,kCAAkC;IAClC,gBAAgB;IAChB,cAAc;IACd,kBAAkB;CACnB,CAAA;AAID,8FAA8F;AAC9F,mGAAmG;AACnG,qFAAqF;AACrF,MAAM,gCAAgC,GAAqB,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAA;AAEtG,iGAAiG;AACjG,mGAAmG;AACnG,0BAA0B;AAC1B,MAAM,sCAAsC,GAAqB;IAC/D,0BAA0B;IAC1B,gBAAgB;IAChB,kBAAkB;CACnB,CAAA;AAED,SAAgB,sBAAsB,CACpC,aAAsB,EACtB,mBAAuC;IAEvC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QAC/B,6FAA6F;QAC7F,mEAAmE;QACnE,OAAM;IACR,CAAC;IACD,IAAI,qBAAyC,CAAA;IAC7C,IAAI,cAAc,GAAmB,aAAa,CAAA;IAElD,OAAO,cAAc,IAAI,cAAc,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC5D,MAAM,sBAAsB,GAAG,YAAY,CACzC,cAAc,EACd,gCAAgC,EAChC,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,CACtB,CAAA;QACD,IAAI,sBAAsB,EAAE,CAAC;YAC3B,OAAO,sBAAsB,CAAA;QAC/B,CAAC;QAED,MAAM,2BAA2B,GAAG,YAAY,CAC9C,cAAc,EACd,sCAAsC,EACtC,6BAA6B,EAC7B,mBAAmB,EACnB,qBAAqB,CACtB,CAAA;QACD,qBAAqB;YACnB,2BAA2B,IAAI,eAAe,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE,qBAAqB,CAAC,CAAA;QAE5G,cAAc,GAAG,cAAc,CAAC,aAAa,CAAA;IAC/C,CAAC;IAED,OAAO,qBAAqB,CAAA;AAC9B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,gGAAgG;IAChG,gGAAgG;IAChG,WAAW;IACX,EAAE;IACF,gGAAgG;IAChG,iGAAiG;IACjG,uDAAuD;IACvD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACrC,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAA;IACrC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/B,OAAM;IACR,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,SAAQ;QACV,CAAC;QAED,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAA;IAClE,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAgB,EAAE,mBAAuC;IAC3F,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAA;QACjB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,aAAa,IAAI,yBAAiB,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAA;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAA;QACjB,CAAC;IACH,CAAC;IAED,SAAS,oBAAoB,CAAC,aAAqB;QACjD,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;YACxC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,aAAa,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAE,CAAC,IAAI,CAAA;QACjH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,IAAI,OAAO,GAAG,OAAO,CAAC,aAAc,CAAC,iBAAiB,CAAA;IACtD,IAAI,YAAY,GAAG,CAAC,CAAA;IAEpB,OAAO,OAAO,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YACxC,YAAY,IAAI,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAA;IACtC,CAAC;IAED,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,YAAY,GAAG,CAAA;AACtE,CAAC;AAED,SAAS,YAAY,CACnB,OAAgB,EAChB,eAAiC,EACjC,SAAoG,EACpG,mBAAuC,EACvC,aAAiC;IAEjC,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;QAC7C,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;QACpE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,SAAQ;QACV,CAAC;QACD,IAAI,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,aAAa,CAAC,EAAE,CAAC;YACvD,OAAO,eAAe,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,OAAgB,EAChB,eAAuB,EACvB,aAAiC;IAEjC,OAAO,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AAC7G,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,SAAgB,6BAA6B,CAC3C,cAAuB,EACvB,sBAA8B,EAC9B,aAAiC;IAEjC,IAAI,iBAAgD,CAAA;IAEpD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,8FAA8F;QAC9F,+FAA+F;QAC/F,+DAA+D;QAC/D,iBAAiB,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAC1E,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,sBAAsB,QAAQ,EAAE,aAAa,CAAC,CAAA;QACxF,iBAAiB,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;IACjF,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,aAAc,CAAA;IAC5C,IAAI,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACtC,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,KAAK,cAAc,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAA;IACtC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,KAAyB;IAChE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;AAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"getSelectorFromElement.js","names":["DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","isNodeShadowRoot"],"sources":["../../src/domain/getSelectorFromElement.ts"],"sourcesContent":["import { isNodeShadowRoot } from '../browser/htmlDomUtils'\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './action/actionNameConstants'\n\n/**\n * Marker used to indicate shadow DOM boundaries in selectors.\n * Named after the deprecated Shadow DOM v0 '::shadow' pseudo-element which served the same\n * purpose of marking entry into a shadow root.\n * Note: This is NOT a valid CSS selector, it's an internal marker that requires custom\n * parsing logic.\n */\nexport const SHADOW_DOM_MARKER = '::shadow '\n\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport const STABLE_ATTRIBUTES = [\n DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n // Common test attributes (list provided by google recorder)\n 'data-testid',\n 'data-test',\n 'data-qa',\n 'data-cy',\n 'data-test-id',\n 'data-qa-id',\n 'data-testing',\n // FullStory decorator attributes:\n 'data-component',\n 'data-element',\n 'data-source-file',\n]\n\ntype SelectorGetter = (element: Element, actionNameAttribute: string | undefined) => string | undefined\n\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nconst GLOBALLY_UNIQUE_SELECTOR_GETTERS: SelectorGetter[] = [getStableAttributeSelector, getIDSelector]\n\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nconst UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS: SelectorGetter[] = [\n getStableAttributeSelector,\n getClassSelector,\n getTagNameSelector,\n]\n\ninterface SubtreeTarget {\n rootNode: Document | ShadowRoot\n target: Element\n}\n\nexport function getSelectorFromElement(\n targetElement: Element,\n actionNameAttribute: string | undefined\n): string | undefined {\n if (!targetElement.isConnected) {\n // We cannot compute a selector for a detached element, as we don't have access to all of its\n // parents, and we cannot determine if it's unique in the document.\n return\n }\n\n const subtrees = getAllSubtreeTargets(targetElement)\n const selectorParts: string[] = []\n\n for (const { rootNode, target } of subtrees) {\n const selector = getSelectorFromElementWithinSubtree(target, rootNode, actionNameAttribute)\n if (!selector) {\n return undefined\n }\n selectorParts.push(selector)\n }\n\n return selectorParts.join(SHADOW_DOM_MARKER)\n}\n\n/**\n * Returns all (rootNode, target) pairs from the document down to the element.\n */\nfunction getAllSubtreeTargets(element: Element): SubtreeTarget[] {\n const result: SubtreeTarget[] = []\n let currentTarget: Element | undefined = element\n\n while (currentTarget) {\n const rootNode = currentTarget.getRootNode() as Document | ShadowRoot\n result.push({ rootNode, target: currentTarget })\n\n if (isNodeShadowRoot(rootNode)) {\n currentTarget = rootNode.host\n } else {\n break\n }\n }\n\n return result.reverse()\n}\n\n/**\n * Computes a CSS selector for an element within a specific subtree (document or shadow root).\n */\nfunction getSelectorFromElementWithinSubtree(\n targetElement: Element,\n rootNode: Document | ShadowRoot,\n actionNameAttribute: string | undefined\n): string | undefined {\n let currentSelector: string | undefined\n let currentElement: Element | null = targetElement\n\n while (currentElement && currentElement.nodeName !== 'HTML') {\n const globallyUniqueSelector = findSelector(\n currentElement,\n rootNode,\n GLOBALLY_UNIQUE_SELECTOR_GETTERS,\n isSelectorUniqueWithinRoot,\n actionNameAttribute,\n currentSelector\n )\n if (globallyUniqueSelector) {\n return combineSelector(globallyUniqueSelector, currentSelector)\n }\n\n const uniqueSelectorAmongChildren = findSelector(\n currentElement,\n rootNode,\n UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS,\n isSelectorUniqueAmongSiblings,\n actionNameAttribute,\n currentSelector\n )\n\n const elementSelector = uniqueSelectorAmongChildren || getPositionSelector(currentElement)\n currentSelector = combineSelector(elementSelector, currentSelector)\n\n currentElement = currentElement.parentElement\n }\n\n return currentSelector\n}\n\nexport function isGeneratedValue(value: string) {\n // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n // present.\n //\n // Here, we use the same strategy: if the value contains a digit, we consider it generated. This\n // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n // CSS selectors so it should be fine most of the time.\n return /[0-9]/.test(value)\n}\n\nexport function getIDSelector(element: Element): string | undefined {\n if (element.id && !isGeneratedValue(element.id)) {\n return `#${CSS.escape(element.id)}`\n }\n}\n\nfunction getClassSelector(element: Element): string | undefined {\n if (element.tagName === 'BODY') {\n return\n }\n const classList = element.classList\n for (let i = 0; i < classList.length; i += 1) {\n const className = classList[i]\n if (isGeneratedValue(className)) {\n continue\n }\n\n return `${CSS.escape(element.tagName)}.${CSS.escape(className)}`\n }\n}\n\nexport function getTagNameSelector(element: Element): string {\n return CSS.escape(element.tagName)\n}\n\nfunction getStableAttributeSelector(element: Element, actionNameAttribute: string | undefined): string | undefined {\n if (actionNameAttribute) {\n const selector = getAttributeSelector(actionNameAttribute)\n if (selector) {\n return selector\n }\n }\n\n for (const attributeName of STABLE_ATTRIBUTES) {\n const selector = getAttributeSelector(attributeName)\n if (selector) {\n return selector\n }\n }\n\n function getAttributeSelector(attributeName: string) {\n if (element.hasAttribute(attributeName)) {\n return `${CSS.escape(element.tagName)}${getAttributeValueSelector(attributeName, element.getAttribute(attributeName)!)}`\n }\n }\n}\n\nexport function getAttributeValueSelector(attributeName: string, attributeValue: string) {\n return `[${attributeName}=\"${CSS.escape(attributeValue)}\"]`\n}\n\nfunction getPositionSelector(element: Element): string {\n const nthOfType = getNthOfTypeSelector(element)\n\n return `${CSS.escape(element.tagName)}:nth-of-type(${nthOfType})`\n}\n\nexport function getNthOfTypeSelector(element: Element): number {\n const parent = element.parentNode!\n\n let sibling = parent.firstElementChild\n\n let nthOfType = 1\n\n while (sibling && sibling !== element) {\n if (sibling.tagName === element.tagName) {\n nthOfType += 1\n }\n sibling = sibling.nextElementSibling\n }\n\n return nthOfType\n}\n\nfunction findSelector(\n element: Element,\n rootNode: Document | ShadowRoot,\n selectorGetters: SelectorGetter[],\n predicate: (\n element: Element,\n rootNode: Document | ShadowRoot,\n elementSelector: string,\n childSelector: string | undefined\n ) => boolean,\n actionNameAttribute: string | undefined,\n childSelector: string | undefined\n) {\n for (const selectorGetter of selectorGetters) {\n const elementSelector = selectorGetter(element, actionNameAttribute)\n if (!elementSelector) {\n continue\n }\n if (predicate(element, rootNode, elementSelector, childSelector)) {\n return elementSelector\n }\n }\n}\n\n/**\n * Check whether the selector is unique within the root node (document or shadow root).\n */\nfunction isSelectorUniqueWithinRoot(\n _element: Element,\n rootNode: Document | ShadowRoot,\n elementSelector: string,\n childSelector: string | undefined\n): boolean {\n return rootNode.querySelectorAll(combineSelector(elementSelector, childSelector)).length === 1\n}\n\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > CHILD_SELECTOR\" returns a single element.\n *\n * @param currentElement - the element being considered while iterating over the target\n * element ancestors.\n * @param _rootNode - the root node (document or shadow root) - unused but required for predicate signature.\n * @param currentElementSelector - a selector that matches the current element. That\n * selector is not a composed selector (i.e. it might be a single tag name, class name...).\n * @param childSelector - child selector is a selector that targets a descendant\n * of the current element. When undefined, the current element is the target element.\n *\n * # Scope selector usage\n *\n * When composed together, the final selector will be joined with `>` operators to make sure we\n * target direct descendants at each level. In this function, we'll use `querySelector` to check if\n * a selector matches descendants of the current element. But by default, the query selector match\n * elements at any level. Example:\n *\n * ```html\n * <main>\n * <div>\n * <span></span>\n * </div>\n * <marquee>\n * <div>\n * <span></span>\n * </div>\n * </marquee>\n * </main>\n * ```\n *\n * `sibling.querySelector('DIV > SPAN')` will match both span elements, so we would consider the\n * selector to be not unique, even if it is unique when we'll compose it with the parent with a `>`\n * operator (`MAIN > DIV > SPAN`).\n *\n * To avoid this, we can use the `:scope` selector to make sure the selector starts from the current\n * sibling (i.e. `sibling.querySelector('DIV:scope > SPAN')` will only match the first span).\n *\n * [1]: https://developer.mozilla.org/fr/docs/Web/CSS/:scope\n *\n * # Performance considerations\n *\n * We compute selectors in performance-critical operations (ex: during a click), so we need to make\n * sure the function is as fast as possible. We observed that naively using `querySelectorAll` to\n * check if the selector matches more than 1 element is quite expensive, so we want to avoid it.\n *\n * Because we are iterating the DOM upward and we use that function at every level, we know the\n * child selector is already unique among the current element children, so we don't need to check\n * for the current element subtree.\n *\n * Instead, we can focus on the current element siblings. If we find a single element matching the\n * selector within a sibling, we know that it's not unique. This allows us to use `querySelector`\n * (or `matches`, when the current element is the target element) instead of `querySelectorAll`.\n */\nexport function isSelectorUniqueAmongSiblings(\n currentElement: Element,\n _rootNode: Document | ShadowRoot,\n currentElementSelector: string,\n childSelector: string | undefined\n): boolean {\n let isSiblingMatching: (sibling: Element) => boolean\n\n if (childSelector === undefined) {\n // If the child selector is undefined (meaning `currentElement` is the target element, not one\n // of its ancestor), we need to use `matches` to check if the sibling is matching the selector,\n // as `querySelector` only returns a descendant of the element.\n isSiblingMatching = (sibling) => sibling.matches(currentElementSelector)\n } else {\n const scopedSelector = combineSelector(`${currentElementSelector}:scope`, childSelector)\n isSiblingMatching = (sibling) => sibling.querySelector(scopedSelector) !== null\n }\n\n // Check siblings by iterating directly through previousElementSibling and nextElementSibling.\n // This works even when parentElement is null (e.g., when parent is a DocumentFragment).\n\n // Check previous siblings\n let sibling = currentElement.previousElementSibling\n while (sibling) {\n if (isSiblingMatching(sibling)) {\n return false\n }\n sibling = sibling.previousElementSibling\n }\n\n // Check next siblings\n sibling = currentElement.nextElementSibling\n while (sibling) {\n if (isSiblingMatching(sibling)) {\n return false\n }\n sibling = sibling.nextElementSibling\n }\n\n return true\n}\n\nfunction combineSelector(parent: string, child: string | undefined): string {\n return child ? `${parent}>${child}` : parent\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import type { SessionContext } from '@kubesense/kubesense-browser-core';
|
|
1
2
|
import type { RumConfiguration } from './configuration';
|
|
2
3
|
import type { ViewHistoryEntry } from './contexts/viewHistory';
|
|
3
|
-
import type { RumSession } from './rumSessionManager';
|
|
4
4
|
export declare function getSessionReplayUrl(configuration: RumConfiguration, { session, viewContext, errorType, }: {
|
|
5
|
-
session?:
|
|
5
|
+
session?: SessionContext;
|
|
6
6
|
viewContext?: ViewHistoryEntry;
|
|
7
7
|
errorType?: string;
|
|
8
8
|
}): string;
|
|
@@ -1,34 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
if (viewContext) {
|
|
13
|
-
parameters.push(`seed=${viewContext.id}`);
|
|
14
|
-
parameters.push(`from=${viewContext.startClocks.timeStamp}`);
|
|
15
|
-
}
|
|
16
|
-
const origin = getKubeSenseSiteUrl(configuration);
|
|
17
|
-
const path = `/rum/replay/sessions/${sessionId}`;
|
|
18
|
-
return `${origin}${path}?${parameters.join('&')}`;
|
|
1
|
+
//#region src/domain/getSessionReplayUrl.ts
|
|
2
|
+
function getSessionReplayUrl(configuration, { session, viewContext, errorType }) {
|
|
3
|
+
const sessionId = session ? session.id : "no-session-id";
|
|
4
|
+
const parameters = [];
|
|
5
|
+
if (errorType !== void 0) parameters.push(`error-type=${errorType}`);
|
|
6
|
+
if (viewContext) {
|
|
7
|
+
parameters.push(`seed=${viewContext.id}`);
|
|
8
|
+
parameters.push(`from=${viewContext.startClocks.timeStamp}`);
|
|
9
|
+
}
|
|
10
|
+
return `${getKubeSenseSiteUrl(configuration)}${`/rum/replay/sessions/${sessionId}`}?${parameters.join("&")}`;
|
|
19
11
|
}
|
|
20
12
|
function getKubeSenseSiteUrl(rumConfiguration) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
function getSiteDefaultSubdomain(configuration) {
|
|
26
|
-
switch (configuration.kubesenseRumEndpoint) {
|
|
27
|
-
case kubesense_browser_core_1.INTAKE_SITE_PROD:
|
|
28
|
-
case kubesense_browser_core_1.INTAKE_SITE_STAGING:
|
|
29
|
-
return 'staging';
|
|
30
|
-
default:
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
13
|
+
const site = rumConfiguration.kubesenseRumEndpoint;
|
|
14
|
+
const subdomain = rumConfiguration.subdomain;
|
|
15
|
+
return `https://${subdomain ? `${subdomain}.` : ""}${site}`;
|
|
33
16
|
}
|
|
17
|
+
//#endregion
|
|
18
|
+
exports.getKubeSenseSiteUrl = getKubeSenseSiteUrl;
|
|
19
|
+
exports.getSessionReplayUrl = getSessionReplayUrl;
|
|
20
|
+
|
|
34
21
|
//# sourceMappingURL=getSessionReplayUrl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSessionReplayUrl.js","
|
|
1
|
+
{"version":3,"file":"getSessionReplayUrl.js","names":[],"sources":["../../src/domain/getSessionReplayUrl.ts"],"sourcesContent":["import type { SessionContext } from '@kubesense/kubesense-browser-core'\nimport type { RumConfiguration } from './configuration'\nimport type { ViewHistoryEntry } from './contexts/viewHistory'\n\nexport function getSessionReplayUrl(\n configuration: RumConfiguration,\n {\n session,\n viewContext,\n errorType,\n }: {\n session?: SessionContext\n viewContext?: ViewHistoryEntry\n errorType?: string\n }\n): string {\n const sessionId = session ? session.id : 'no-session-id'\n const parameters: string[] = []\n if (errorType !== undefined) {\n parameters.push(`error-type=${errorType}`)\n }\n if (viewContext) {\n parameters.push(`seed=${viewContext.id}`)\n parameters.push(`from=${viewContext.startClocks.timeStamp}`)\n }\n\n const origin = getKubeSenseSiteUrl(configuration)\n const path = `/rum/replay/sessions/${sessionId}`\n return `${origin}${path}?${parameters.join('&')}`\n}\n\nexport function getKubeSenseSiteUrl(rumConfiguration: RumConfiguration) {\n // KubeSense installations address the collector host directly, so there is no per-site default\n // subdomain to derive: only an explicitly configured `subdomain` is prepended.\n const site = rumConfiguration.kubesenseRumEndpoint\n const subdomain = rumConfiguration.subdomain\n return `https://${subdomain ? `${subdomain}.` : ''}${site}`\n}\n"],"mappings":";AAIA,SAAgB,oBACd,eACA,EACE,SACA,aACA,aAMM;CACR,MAAM,YAAY,UAAU,QAAQ,KAAK;CACzC,MAAM,aAAuB,CAAC;CAC9B,IAAI,cAAc,KAAA,GAChB,WAAW,KAAK,cAAc,WAAW;CAE3C,IAAI,aAAa;EACf,WAAW,KAAK,QAAQ,YAAY,IAAI;EACxC,WAAW,KAAK,QAAQ,YAAY,YAAY,WAAW;CAC7D;CAIA,OAAO,GAFQ,oBAAoB,aAEpB,IAAI,wBADkB,YACb,GAAG,WAAW,KAAK,GAAG;AAChD;AAEA,SAAgB,oBAAoB,kBAAoC;CAGtE,MAAM,OAAO,iBAAiB;CAC9B,MAAM,YAAY,iBAAiB;CACnC,OAAO,WAAW,YAAY,GAAG,UAAU,KAAK,KAAK;AACvD"}
|
package/cjs/domain/hooks.d.ts
CHANGED
|
@@ -1,23 +1,32 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Duration, RelativeTime } from '@kubesense/kubesense-js-core/time';
|
|
2
|
+
import type { TelemetryEvent } from '@kubesense/kubesense-browser-core';
|
|
3
|
+
import type { Hook } from '@kubesense/kubesense-js-core/assembly';
|
|
4
|
+
import type { RecursivePartial } from '@kubesense/kubesense-js-core/util';
|
|
2
5
|
import type { RumEvent } from '../rumEvent.types';
|
|
6
|
+
import type { RawRumEvent } from '../rawRumEvent.types';
|
|
7
|
+
import type { RumEventDomainContext } from '../domainContext.types';
|
|
3
8
|
export type DefaultRumEventAttributes = RecursivePartial<RumEvent> & {
|
|
4
9
|
type: RumEvent['type'];
|
|
5
10
|
};
|
|
6
11
|
export type DefaultTelemetryEventAttributes = RecursivePartial<TelemetryEvent>;
|
|
7
|
-
|
|
8
|
-
[
|
|
9
|
-
eventType: RumEvent['type'];
|
|
10
|
-
startTime: RelativeTime;
|
|
11
|
-
duration?: Duration | undefined;
|
|
12
|
-
}) => DefaultRumEventAttributes | SKIPPED | DISCARDED;
|
|
13
|
-
[HookNamesAsConst.ASSEMBLE_TELEMETRY]: (param: {
|
|
14
|
-
startTime: RelativeTime;
|
|
15
|
-
}) => DefaultTelemetryEventAttributes | SKIPPED | DISCARDED;
|
|
16
|
-
}
|
|
17
|
-
export type Hooks = ReturnType<typeof createHooks>;
|
|
18
|
-
export declare const createHooks: () => {
|
|
19
|
-
register<K extends import("@kubesense/kubesense-browser-core").HookNames>(hookName: K, callback: HookCallbackMap[K]): {
|
|
20
|
-
unregister: () => void;
|
|
21
|
-
};
|
|
22
|
-
triggerHook<K extends import("@kubesense/kubesense-browser-core").HookNames>(hookName: K, param: Parameters<HookCallbackMap[K]>[0]): "DISCARDED" | Exclude<ReturnType<HookCallbackMap[K]>, "SKIPPED"> | undefined;
|
|
12
|
+
type DeepReadonly<T> = {
|
|
13
|
+
readonly [K in keyof T]: DeepReadonly<T[K]>;
|
|
23
14
|
};
|
|
15
|
+
export interface AssembleHookParams {
|
|
16
|
+
readonly eventType: RumEvent['type'];
|
|
17
|
+
rawRumEvent: DeepReadonly<RawRumEvent>;
|
|
18
|
+
domainContext: DeepReadonly<RumEventDomainContext<RawRumEvent['type']>>;
|
|
19
|
+
readonly startTime: RelativeTime;
|
|
20
|
+
readonly duration?: Duration | undefined;
|
|
21
|
+
}
|
|
22
|
+
export type AssembleHook = Hook<AssembleHookParams, DefaultRumEventAttributes>;
|
|
23
|
+
export type AssembleTelemetryHook = Hook<{
|
|
24
|
+
startTime: RelativeTime;
|
|
25
|
+
}, DefaultTelemetryEventAttributes>;
|
|
26
|
+
export interface Hooks {
|
|
27
|
+
assembleEventDefaults: AssembleHook;
|
|
28
|
+
assembleTelemetry: AssembleTelemetryHook;
|
|
29
|
+
assembleEvent: AssembleHook;
|
|
30
|
+
}
|
|
31
|
+
export declare function createHooks(): Hooks;
|
|
32
|
+
export {};
|
package/cjs/domain/hooks.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
let _kubesense_kubesense_js_core_assembly = require("@kubesense/kubesense-js-core/assembly");
|
|
2
|
+
//#region src/domain/hooks.ts
|
|
3
|
+
function createHooks() {
|
|
4
|
+
return {
|
|
5
|
+
assembleEventDefaults: (0, _kubesense_kubesense_js_core_assembly.createHook)(),
|
|
6
|
+
assembleTelemetry: (0, _kubesense_kubesense_js_core_assembly.createHook)(),
|
|
7
|
+
assembleEvent: (0, _kubesense_kubesense_js_core_assembly.createHook)()
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
exports.createHooks = createHooks;
|
|
12
|
+
|
|
6
13
|
//# sourceMappingURL=hooks.js.map
|