@kubesense/kubesense-browser-rum-core 1.8.0 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/cjs/boot/preStartRum.d.ts +4 -3
- package/cjs/boot/preStartRum.js +229 -204
- package/cjs/boot/preStartRum.js.map +1 -1
- package/cjs/boot/rumPublicApi.d.ts +190 -51
- package/cjs/boot/rumPublicApi.js +267 -164
- package/cjs/boot/rumPublicApi.js.map +1 -1
- package/cjs/boot/startRum.d.ts +42 -31
- package/cjs/boot/startRum.js +157 -150
- package/cjs/boot/startRum.js.map +1 -1
- package/cjs/browser/cookieObservable.d.ts +1 -5
- package/cjs/browser/cookieObservable.js +30 -34
- package/cjs/browser/cookieObservable.js.map +1 -1
- package/cjs/browser/domMutationObservable.d.ts +3 -3
- package/cjs/browser/domMutationObservable.js +29 -53
- package/cjs/browser/domMutationObservable.js.map +1 -1
- package/cjs/browser/htmlDomUtils.d.ts +5 -0
- package/cjs/browser/htmlDomUtils.js +38 -28
- package/cjs/browser/htmlDomUtils.js.map +1 -1
- package/cjs/browser/locationChangeObservable.d.ts +1 -2
- package/cjs/browser/locationChangeObservable.js +44 -45
- package/cjs/browser/locationChangeObservable.js.map +1 -1
- package/cjs/browser/performanceObservable.d.ts +4 -4
- package/cjs/browser/performanceObservable.js +50 -114
- package/cjs/browser/performanceObservable.js.map +1 -1
- package/cjs/browser/performanceUtils.d.ts +13 -1
- package/cjs/browser/performanceUtils.js +63 -37
- package/cjs/browser/performanceUtils.js.map +1 -1
- package/cjs/browser/scroll.js +17 -28
- package/cjs/browser/scroll.js.map +1 -1
- package/cjs/browser/viewportObservable.d.ts +2 -3
- package/cjs/browser/viewportObservable.js +29 -31
- package/cjs/browser/viewportObservable.js.map +1 -1
- package/cjs/browser/windowOpenObservable.js +11 -7
- package/cjs/browser/windowOpenObservable.js.map +1 -1
- package/cjs/domain/action/actionCollection.d.ts +11 -12
- package/cjs/domain/action/actionCollection.js +82 -89
- package/cjs/domain/action/actionCollection.js.map +1 -1
- package/cjs/domain/action/actionNameConstants.js +10 -9
- package/cjs/domain/action/actionNameConstants.js.map +1 -1
- package/cjs/domain/action/clickChain.js +51 -54
- package/cjs/domain/action/clickChain.js.map +1 -1
- package/cjs/domain/action/computeFrustration.js +30 -62
- package/cjs/domain/action/computeFrustration.js.map +1 -1
- package/cjs/domain/action/frustrationIgnore.d.ts +9 -0
- package/cjs/domain/action/frustrationIgnore.js +32 -0
- package/cjs/domain/action/frustrationIgnore.js.map +1 -0
- package/cjs/domain/action/getActionNameFromElement.js +141 -217
- package/cjs/domain/action/getActionNameFromElement.js.map +1 -1
- package/cjs/domain/action/interactionSelectorCache.d.ts +1 -1
- package/cjs/domain/action/interactionSelectorCache.js +17 -18
- package/cjs/domain/action/interactionSelectorCache.js.map +1 -1
- package/cjs/domain/action/isActionChildEvent.d.ts +2 -0
- package/cjs/domain/action/isActionChildEvent.js +8 -0
- package/cjs/domain/action/isActionChildEvent.js.map +1 -0
- package/cjs/domain/action/listenActionEvents.d.ts +2 -3
- package/cjs/domain/action/listenActionEvents.js +51 -55
- package/cjs/domain/action/listenActionEvents.js.map +1 -1
- package/cjs/domain/action/trackClickActions.d.ts +15 -21
- package/cjs/domain/action/trackClickActions.js +188 -226
- package/cjs/domain/action/trackClickActions.js.map +1 -1
- package/cjs/domain/action/trackManualActions.d.ts +45 -0
- package/cjs/domain/action/trackManualActions.js +48 -0
- package/cjs/domain/action/trackManualActions.js.map +1 -0
- package/cjs/domain/assembly.d.ts +1 -2
- package/cjs/domain/assembly.js +80 -95
- package/cjs/domain/assembly.js.map +1 -1
- package/cjs/domain/configuration/configuration.d.ts +575 -81
- package/cjs/domain/configuration/configuration.js +464 -199
- package/cjs/domain/configuration/configuration.js.map +1 -1
- package/cjs/domain/configuration/index.d.ts +1 -0
- package/cjs/domain/configuration/index.js +27 -21
- package/cjs/domain/configuration/jsonPathParser.js +125 -139
- package/cjs/domain/configuration/jsonPathParser.js.map +1 -1
- package/cjs/domain/configuration/remoteConfiguration.d.ts +18 -5
- package/cjs/domain/configuration/remoteConfiguration.js +268 -226
- package/cjs/domain/configuration/remoteConfiguration.js.map +1 -1
- package/cjs/domain/configuration/remoteConfiguration.types.d.ts +49 -0
- package/cjs/domain/configuration/remoteConfigurationCache.d.ts +42 -0
- package/cjs/domain/configuration/remoteConfigurationCache.js +95 -0
- package/cjs/domain/configuration/remoteConfigurationCache.js.map +1 -0
- package/cjs/domain/configuration/remoteSdkConfiguration.d.ts +11 -2
- package/cjs/domain/configuration/remoteSdkConfiguration.js +185 -117
- package/cjs/domain/configuration/remoteSdkConfiguration.js.map +1 -1
- package/cjs/domain/configuration/sessionReplayRoutes.d.ts +1 -6
- package/cjs/domain/configuration/sessionReplayRoutes.js +20 -63
- package/cjs/domain/configuration/sessionReplayRoutes.js.map +1 -1
- package/cjs/domain/contexts/ciVisibilityContext.d.ts +2 -4
- package/cjs/domain/contexts/ciVisibilityContext.js +36 -32
- package/cjs/domain/contexts/ciVisibilityContext.js.map +1 -1
- package/cjs/domain/contexts/connectivityContext.d.ts +2 -2
- package/cjs/domain/contexts/connectivityContext.js +10 -9
- package/cjs/domain/contexts/connectivityContext.js.map +1 -1
- package/cjs/domain/contexts/defaultContext.d.ts +3 -3
- package/cjs/domain/contexts/defaultContext.js +28 -32
- package/cjs/domain/contexts/defaultContext.js.map +1 -1
- package/cjs/domain/contexts/displayContext.d.ts +2 -3
- package/cjs/domain/contexts/displayContext.js +22 -26
- package/cjs/domain/contexts/displayContext.js.map +1 -1
- package/cjs/domain/contexts/featureFlagContext.d.ts +2 -2
- package/cjs/domain/contexts/featureFlagContext.js +38 -50
- package/cjs/domain/contexts/featureFlagContext.js.map +1 -1
- package/cjs/domain/contexts/internalContext.d.ts +2 -3
- package/cjs/domain/contexts/internalContext.js +26 -22
- package/cjs/domain/contexts/internalContext.js.map +1 -1
- package/cjs/domain/contexts/pageStateHistory.d.ts +3 -4
- package/cjs/domain/contexts/pageStateHistory.js +76 -96
- package/cjs/domain/contexts/pageStateHistory.js.map +1 -1
- package/cjs/domain/contexts/sessionContext.d.ts +9 -3
- package/cjs/domain/contexts/sessionContext.js +31 -45
- package/cjs/domain/contexts/sessionContext.js.map +1 -1
- package/cjs/domain/contexts/sourceCodeMfeContext.d.ts +10 -0
- package/cjs/domain/contexts/sourceCodeMfeContext.js +35 -0
- package/cjs/domain/contexts/sourceCodeMfeContext.js.map +1 -0
- package/cjs/domain/contexts/syntheticsContext.d.ts +2 -2
- package/cjs/domain/contexts/syntheticsContext.js +19 -23
- package/cjs/domain/contexts/syntheticsContext.js.map +1 -1
- package/cjs/domain/contexts/trackingConsentContext.d.ts +2 -2
- package/cjs/domain/contexts/trackingConsentContext.js +10 -12
- package/cjs/domain/contexts/trackingConsentContext.js.map +1 -1
- package/cjs/domain/contexts/urlContexts.d.ts +4 -3
- package/cjs/domain/contexts/urlContexts.js +65 -61
- package/cjs/domain/contexts/urlContexts.js.map +1 -1
- package/cjs/domain/contexts/userAgentDataContext.d.ts +2 -2
- package/cjs/domain/contexts/userAgentDataContext.js +20 -29
- package/cjs/domain/contexts/userAgentDataContext.js.map +1 -1
- package/cjs/domain/contexts/viewHistory.d.ts +5 -2
- package/cjs/domain/contexts/viewHistory.js +41 -45
- package/cjs/domain/contexts/viewHistory.js.map +1 -1
- package/cjs/domain/discardNegativeDuration.d.ts +1 -1
- package/cjs/domain/discardNegativeDuration.js +6 -5
- package/cjs/domain/discardNegativeDuration.js.map +1 -1
- package/cjs/domain/error/errorCollection.d.ts +3 -3
- package/cjs/domain/error/errorCollection.js +67 -68
- package/cjs/domain/error/errorCollection.js.map +1 -1
- package/cjs/domain/error/trackReportError.d.ts +1 -2
- package/cjs/domain/error/trackReportError.js +10 -14
- package/cjs/domain/error/trackReportError.js.map +1 -1
- package/cjs/domain/event/eventCollection.d.ts +2 -1
- package/cjs/domain/event/eventCollection.js +21 -22
- package/cjs/domain/event/eventCollection.js.map +1 -1
- package/cjs/domain/eventTracker.d.ts +37 -0
- package/cjs/domain/eventTracker.js +94 -0
- package/cjs/domain/eventTracker.js.map +1 -0
- package/cjs/domain/extractRegexMatch.d.ts +5 -0
- package/cjs/domain/extractRegexMatch.js +16 -0
- package/cjs/domain/extractRegexMatch.js.map +1 -0
- package/cjs/domain/getComposedPathSelector.d.ts +22 -0
- package/cjs/domain/getComposedPathSelector.js +95 -0
- package/cjs/domain/getComposedPathSelector.js.map +1 -0
- package/cjs/domain/getSelectorFromElement.d.ts +18 -6
- package/cjs/domain/getSelectorFromElement.js +199 -191
- package/cjs/domain/getSelectorFromElement.js.map +1 -1
- package/cjs/domain/getSessionReplayUrl.d.ts +2 -2
- package/cjs/domain/getSessionReplayUrl.js +17 -30
- package/cjs/domain/getSessionReplayUrl.js.map +1 -1
- package/cjs/domain/hooks.d.ts +26 -17
- package/cjs/domain/hooks.js +12 -5
- package/cjs/domain/hooks.js.map +1 -1
- package/cjs/domain/lifeCycle.d.ts +26 -12
- package/cjs/domain/lifeCycle.js +28 -5
- package/cjs/domain/lifeCycle.js.map +1 -1
- package/cjs/domain/limitModification.d.ts +5 -1
- package/cjs/domain/limitModification.js +32 -36
- package/cjs/domain/limitModification.js.map +1 -1
- package/cjs/domain/longTask/longTaskCollection.d.ts +0 -13
- package/cjs/domain/longTask/longTaskCollection.js +75 -87
- package/cjs/domain/longTask/longTaskCollection.js.map +1 -1
- package/cjs/domain/plugins.d.ts +37 -14
- package/cjs/domain/plugins.js +22 -13
- package/cjs/domain/plugins.js.map +1 -1
- package/cjs/domain/privacy.d.ts +6 -1
- package/cjs/domain/privacy.js +143 -286
- package/cjs/domain/privacy.js.map +1 -1
- package/cjs/domain/privacyConstants.js +43 -34
- package/cjs/domain/privacyConstants.js.map +1 -1
- package/cjs/domain/requestCollection.d.ts +6 -5
- package/cjs/domain/requestCollection.js +82 -105
- package/cjs/domain/requestCollection.js.map +1 -1
- package/cjs/domain/resource/graphql.d.ts +1 -1
- package/cjs/domain/resource/graphql.js +85 -86
- package/cjs/domain/resource/graphql.js.map +1 -1
- package/cjs/domain/resource/requestRegistry.js +30 -38
- package/cjs/domain/resource/requestRegistry.js.map +1 -1
- package/cjs/domain/resource/resourceCollection.d.ts +5 -3
- package/cjs/domain/resource/resourceCollection.js +241 -175
- package/cjs/domain/resource/resourceCollection.js.map +1 -1
- package/cjs/domain/resource/resourceUtils.d.ts +13 -13
- package/cjs/domain/resource/resourceUtils.js +323 -221
- package/cjs/domain/resource/resourceUtils.js.map +1 -1
- package/cjs/domain/resource/trackManualResources.d.ts +55 -0
- package/cjs/domain/resource/trackManualResources.js +53 -0
- package/cjs/domain/resource/trackManualResources.js.map +1 -0
- package/cjs/domain/resource/webSocketCollection.d.ts +46 -0
- package/cjs/domain/resource/webSocketCollection.js +163 -0
- package/cjs/domain/resource/webSocketCollection.js.map +1 -0
- package/cjs/domain/session/session.types.d.ts +4 -0
- package/cjs/domain/sessionReplayState.d.ts +8 -0
- package/cjs/domain/sessionReplayState.js +19 -0
- package/cjs/domain/sessionReplayState.js.map +1 -0
- package/cjs/domain/startCustomerDataTelemetry.js +39 -43
- package/cjs/domain/startCustomerDataTelemetry.js.map +1 -1
- package/cjs/domain/tracing/getDocumentTraceId.d.ts +1 -1
- package/cjs/domain/tracing/getDocumentTraceId.js +42 -63
- package/cjs/domain/tracing/getDocumentTraceId.js.map +1 -1
- package/cjs/domain/tracing/identifier.js +13 -46
- package/cjs/domain/tracing/identifier.js.map +1 -1
- package/cjs/domain/tracing/tracer.d.ts +2 -5
- package/cjs/domain/tracing/tracer.js +110 -150
- package/cjs/domain/tracing/tracer.js.map +1 -1
- package/cjs/domain/trackEventCounts.js +43 -48
- package/cjs/domain/trackEventCounts.js.map +1 -1
- package/cjs/domain/view/bfCacheSupport.d.ts +1 -2
- package/cjs/domain/view/bfCacheSupport.js +10 -11
- package/cjs/domain/view/bfCacheSupport.js.map +1 -1
- package/cjs/domain/view/trackViewEventCounts.js +14 -13
- package/cjs/domain/view/trackViewEventCounts.js.map +1 -1
- package/cjs/domain/view/trackViews.d.ts +8 -2
- package/cjs/domain/view/trackViews.js +221 -270
- package/cjs/domain/view/trackViews.js.map +1 -1
- package/cjs/domain/view/viewCollection.d.ts +4 -3
- package/cjs/domain/view/viewCollection.js +124 -148
- package/cjs/domain/view/viewCollection.js.map +1 -1
- package/cjs/domain/view/viewDiff.d.ts +22 -0
- package/cjs/domain/view/viewDiff.js +62 -0
- package/cjs/domain/view/viewDiff.js.map +1 -0
- package/cjs/domain/view/viewMetrics/getClsAttributionImpactedArea.js +20 -22
- package/cjs/domain/view/viewMetrics/getClsAttributionImpactedArea.js.map +1 -1
- package/cjs/domain/view/viewMetrics/interactionCountPolyfill.d.ts +1 -0
- package/cjs/domain/view/viewMetrics/interactionCountPolyfill.js +35 -33
- package/cjs/domain/view/viewMetrics/interactionCountPolyfill.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.d.ts +1 -1
- package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.js +14 -13
- package/cjs/domain/view/viewMetrics/trackBfcacheMetrics.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.d.ts +4 -2
- package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.js +51 -34
- package/cjs/domain/view/viewMetrics/trackCommonViewMetrics.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.d.ts +1 -1
- package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.js +106 -122
- package/cjs/domain/view/viewMetrics/trackCumulativeLayoutShift.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.d.ts +2 -3
- package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.js +26 -34
- package/cjs/domain/view/viewMetrics/trackFirstContentfulPaint.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackFirstHidden.d.ts +2 -3
- package/cjs/domain/view/viewMetrics/trackFirstHidden.js +31 -31
- package/cjs/domain/view/viewMetrics/trackFirstHidden.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.d.ts +1 -3
- package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.js +33 -38
- package/cjs/domain/view/viewMetrics/trackInitialViewMetrics.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.d.ts +10 -1
- package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.js +202 -144
- package/cjs/domain/view/viewMetrics/trackInteractionToNextPaint.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.d.ts +6 -1
- package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.js +65 -55
- package/cjs/domain/view/viewMetrics/trackLargestContentfulPaint.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackLoadingTime.d.ts +2 -1
- package/cjs/domain/view/viewMetrics/trackLoadingTime.js +42 -46
- package/cjs/domain/view/viewMetrics/trackLoadingTime.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackNavigationTimings.d.ts +2 -3
- package/cjs/domain/view/viewMetrics/trackNavigationTimings.js +28 -36
- package/cjs/domain/view/viewMetrics/trackNavigationTimings.js.map +1 -1
- package/cjs/domain/view/viewMetrics/trackScrollMetrics.d.ts +3 -4
- package/cjs/domain/view/viewMetrics/trackScrollMetrics.js +63 -72
- package/cjs/domain/view/viewMetrics/trackScrollMetrics.js.map +1 -1
- package/cjs/domain/vital/vitalCollection.d.ts +44 -20
- package/cjs/domain/vital/vitalCollection.js +81 -109
- package/cjs/domain/vital/vitalCollection.js.map +1 -1
- package/cjs/domain/waitPageActivityEnd.d.ts +1 -4
- package/cjs/domain/waitPageActivityEnd.js +99 -119
- package/cjs/domain/waitPageActivityEnd.js.map +1 -1
- package/cjs/domainContext.types.d.ts +21 -13
- package/cjs/index.d.ts +11 -10
- package/cjs/index.js +84 -62
- package/cjs/rawRumEvent.types.d.ts +79 -13
- package/cjs/rawRumEvent.types.js +40 -27
- package/cjs/rawRumEvent.types.js.map +1 -1
- package/cjs/rumEvent.types.d.ts +906 -669
- package/cjs/transport/formDataTransport.js +43 -41
- package/cjs/transport/formDataTransport.js.map +1 -1
- package/cjs/transport/startRumBatch.d.ts +27 -3
- package/cjs/transport/startRumBatch.js +132 -31
- package/cjs/transport/startRumBatch.js.map +1 -1
- package/cjs/transport/startRumEventBridge.js +10 -8
- package/cjs/transport/startRumEventBridge.js.map +1 -1
- package/esm/boot/preStartRum.mjs +233 -0
- package/esm/boot/preStartRum.mjs.map +1 -0
- package/esm/boot/rumPublicApi.mjs +271 -0
- package/esm/boot/rumPublicApi.mjs.map +1 -0
- package/esm/boot/startRum.mjs +159 -0
- package/esm/boot/startRum.mjs.map +1 -0
- package/esm/browser/cookieObservable.mjs +34 -0
- package/esm/browser/cookieObservable.mjs.map +1 -0
- package/esm/browser/domMutationObservable.mjs +33 -0
- package/esm/browser/domMutationObservable.mjs.map +1 -0
- package/esm/browser/htmlDomUtils.mjs +48 -0
- package/esm/browser/htmlDomUtils.mjs.map +1 -0
- package/esm/browser/locationChangeObservable.mjs +50 -0
- package/esm/browser/locationChangeObservable.mjs.map +1 -0
- package/esm/browser/performanceObservable.mjs +60 -0
- package/esm/browser/performanceObservable.mjs.map +1 -0
- package/esm/browser/performanceUtils.mjs +64 -0
- package/esm/browser/performanceUtils.mjs.map +1 -0
- package/esm/browser/scroll.mjs +21 -0
- package/esm/browser/scroll.mjs.map +1 -0
- package/esm/browser/viewportObservable.mjs +33 -0
- package/esm/browser/viewportObservable.mjs.map +1 -0
- package/esm/browser/windowOpenObservable.mjs +14 -0
- package/esm/browser/windowOpenObservable.mjs.map +1 -0
- package/esm/domain/action/actionCollection.mjs +89 -0
- package/esm/domain/action/actionCollection.mjs.map +1 -0
- package/esm/domain/action/actionNameConstants.mjs +11 -0
- package/esm/domain/action/actionNameConstants.mjs.map +1 -0
- package/esm/domain/action/clickChain.mjs +57 -0
- package/esm/domain/action/clickChain.mjs.map +1 -0
- package/esm/domain/action/computeFrustration.mjs +36 -0
- package/esm/domain/action/computeFrustration.mjs.map +1 -0
- package/esm/domain/action/frustrationIgnore.mjs +31 -0
- package/esm/domain/action/frustrationIgnore.mjs.map +1 -0
- package/esm/domain/action/getActionNameFromElement.mjs +163 -0
- package/esm/domain/action/getActionNameFromElement.mjs.map +1 -0
- package/esm/domain/action/interactionSelectorCache.mjs +19 -0
- package/esm/domain/action/interactionSelectorCache.mjs.map +1 -0
- package/esm/domain/action/isActionChildEvent.mjs +8 -0
- package/esm/domain/action/isActionChildEvent.mjs.map +1 -0
- package/esm/domain/action/listenActionEvents.mjs +57 -0
- package/esm/domain/action/listenActionEvents.mjs.map +1 -0
- package/esm/domain/action/trackClickActions.mjs +198 -0
- package/esm/domain/action/trackClickActions.mjs.map +1 -0
- package/esm/domain/action/trackManualActions.mjs +48 -0
- package/esm/domain/action/trackManualActions.mjs.map +1 -0
- package/esm/domain/assembly.mjs +87 -0
- package/esm/domain/assembly.mjs.map +1 -0
- package/esm/domain/configuration/configuration.mjs +474 -0
- package/esm/domain/configuration/configuration.mjs.map +1 -0
- package/esm/domain/configuration/index.mjs +6 -0
- package/esm/domain/configuration/jsonPathParser.mjs +145 -0
- package/esm/domain/configuration/jsonPathParser.mjs.map +1 -0
- package/esm/domain/configuration/remoteConfiguration.mjs +279 -0
- package/esm/domain/configuration/remoteConfiguration.mjs.map +1 -0
- package/esm/domain/configuration/remoteConfigurationCache.mjs +92 -0
- package/esm/domain/configuration/remoteConfigurationCache.mjs.map +1 -0
- package/esm/domain/configuration/remoteSdkConfiguration.mjs +208 -0
- package/esm/domain/configuration/remoteSdkConfiguration.mjs.map +1 -0
- package/esm/domain/configuration/sessionReplayRoutes.mjs +26 -0
- package/esm/domain/configuration/sessionReplayRoutes.mjs.map +1 -0
- package/esm/domain/contexts/ciVisibilityContext.mjs +37 -0
- package/esm/domain/contexts/ciVisibilityContext.mjs.map +1 -0
- package/esm/domain/contexts/connectivityContext.mjs +12 -0
- package/esm/domain/contexts/connectivityContext.mjs.map +1 -0
- package/esm/domain/contexts/defaultContext.mjs +30 -0
- package/esm/domain/contexts/defaultContext.mjs.map +1 -0
- package/esm/domain/contexts/displayContext.mjs +24 -0
- package/esm/domain/contexts/displayContext.mjs.map +1 -0
- package/esm/domain/contexts/featureFlagContext.mjs +40 -0
- package/esm/domain/contexts/featureFlagContext.mjs.map +1 -0
- package/esm/domain/contexts/internalContext.mjs +30 -0
- package/esm/domain/contexts/internalContext.mjs.map +1 -0
- package/esm/domain/contexts/pageStateHistory.mjs +82 -0
- package/esm/domain/contexts/pageStateHistory.mjs.map +1 -0
- package/esm/domain/contexts/sessionContext.mjs +33 -0
- package/esm/domain/contexts/sessionContext.mjs.map +1 -0
- package/esm/domain/contexts/sourceCodeMfeContext.mjs +35 -0
- package/esm/domain/contexts/sourceCodeMfeContext.mjs.map +1 -0
- package/esm/domain/contexts/syntheticsContext.mjs +21 -0
- package/esm/domain/contexts/syntheticsContext.mjs.map +1 -0
- package/esm/domain/contexts/trackingConsentContext.mjs +12 -0
- package/esm/domain/contexts/trackingConsentContext.mjs.map +1 -0
- package/esm/domain/contexts/urlContexts.mjs +67 -0
- package/esm/domain/contexts/urlContexts.mjs.map +1 -0
- package/esm/domain/contexts/userAgentDataContext.mjs +22 -0
- package/esm/domain/contexts/userAgentDataContext.mjs.map +1 -0
- package/esm/domain/contexts/viewHistory.mjs +43 -0
- package/esm/domain/contexts/viewHistory.mjs.map +1 -0
- package/esm/domain/discardNegativeDuration.mjs +9 -0
- package/esm/domain/discardNegativeDuration.mjs.map +1 -0
- package/esm/domain/error/errorCollection.mjs +72 -0
- package/esm/domain/error/errorCollection.mjs.map +1 -0
- package/esm/domain/error/trackReportError.mjs +12 -0
- package/esm/domain/error/trackReportError.mjs.map +1 -0
- package/esm/domain/event/eventCollection.mjs +26 -0
- package/esm/domain/event/eventCollection.mjs.map +1 -0
- package/esm/domain/eventTracker.mjs +93 -0
- package/esm/domain/eventTracker.mjs.map +1 -0
- package/esm/domain/extractRegexMatch.mjs +16 -0
- package/esm/domain/extractRegexMatch.mjs.map +1 -0
- package/esm/domain/getComposedPathSelector.mjs +93 -0
- package/esm/domain/getComposedPathSelector.mjs.map +1 -0
- package/esm/domain/getSelectorFromElement.mjs +218 -0
- package/esm/domain/getSelectorFromElement.mjs.map +1 -0
- package/esm/domain/getSessionReplayUrl.mjs +20 -0
- package/esm/domain/getSessionReplayUrl.mjs.map +1 -0
- package/esm/domain/hooks.mjs +13 -0
- package/esm/domain/hooks.mjs.map +1 -0
- package/esm/domain/lifeCycle.mjs +28 -0
- package/esm/domain/lifeCycle.mjs.map +1 -0
- package/esm/domain/limitModification.mjs +42 -0
- package/esm/domain/limitModification.mjs.map +1 -0
- package/esm/domain/longTask/longTaskCollection.mjs +79 -0
- package/esm/domain/longTask/longTaskCollection.mjs.map +1 -0
- package/esm/domain/plugins.mjs +23 -0
- package/esm/domain/plugins.mjs.map +1 -0
- package/esm/domain/privacy.mjs +161 -0
- package/esm/domain/privacy.mjs.map +1 -0
- package/esm/domain/privacyConstants.mjs +36 -0
- package/esm/domain/privacyConstants.mjs.map +1 -0
- package/esm/domain/requestCollection.mjs +86 -0
- package/esm/domain/requestCollection.mjs.map +1 -0
- package/esm/domain/resource/graphql.mjs +93 -0
- package/esm/domain/resource/graphql.mjs.map +1 -0
- package/esm/domain/resource/requestRegistry.mjs +32 -0
- package/esm/domain/resource/requestRegistry.mjs.map +1 -0
- package/esm/domain/resource/resourceCollection.mjs +256 -0
- package/esm/domain/resource/resourceCollection.mjs.map +1 -0
- package/esm/domain/resource/resourceUtils.mjs +349 -0
- package/esm/domain/resource/resourceUtils.mjs.map +1 -0
- package/esm/domain/resource/trackManualResources.mjs +53 -0
- package/esm/domain/resource/trackManualResources.mjs.map +1 -0
- package/esm/domain/resource/webSocketCollection.mjs +160 -0
- package/esm/domain/resource/webSocketCollection.mjs.map +1 -0
- package/esm/domain/sessionReplayState.mjs +18 -0
- package/esm/domain/sessionReplayState.mjs.map +1 -0
- package/esm/domain/startCustomerDataTelemetry.mjs +51 -0
- package/esm/domain/startCustomerDataTelemetry.mjs.map +1 -0
- package/esm/domain/tracing/getDocumentTraceId.mjs +50 -0
- package/esm/domain/tracing/getDocumentTraceId.mjs.map +1 -0
- package/esm/domain/tracing/identifier.mjs +20 -0
- package/esm/domain/tracing/identifier.mjs.map +1 -0
- package/esm/domain/tracing/tracer.mjs +120 -0
- package/esm/domain/tracing/tracer.mjs.map +1 -0
- package/esm/domain/trackEventCounts.mjs +45 -0
- package/esm/domain/trackEventCounts.mjs.map +1 -0
- package/esm/domain/view/bfCacheSupport.mjs +12 -0
- package/esm/domain/view/bfCacheSupport.mjs.map +1 -0
- package/esm/domain/view/trackViewEventCounts.mjs +17 -0
- package/esm/domain/view/trackViewEventCounts.mjs.map +1 -0
- package/esm/domain/view/trackViews.mjs +230 -0
- package/esm/domain/view/trackViews.mjs.map +1 -0
- package/esm/domain/view/viewCollection.mjs +129 -0
- package/esm/domain/view/viewCollection.mjs.map +1 -0
- package/esm/domain/view/viewDiff.mjs +61 -0
- package/esm/domain/view/viewDiff.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.mjs +30 -0
- package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/interactionCountPolyfill.mjs +45 -0
- package/esm/domain/view/viewMetrics/interactionCountPolyfill.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackBfcacheMetrics.mjs +18 -0
- package/esm/domain/view/viewMetrics/trackBfcacheMetrics.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackCommonViewMetrics.mjs +54 -0
- package/esm/domain/view/viewMetrics/trackCommonViewMetrics.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.mjs +117 -0
- package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.mjs +29 -0
- package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackFirstHidden.mjs +33 -0
- package/esm/domain/view/viewMetrics/trackFirstHidden.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackInitialViewMetrics.mjs +36 -0
- package/esm/domain/view/viewMetrics/trackInitialViewMetrics.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.mjs +210 -0
- package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.mjs +70 -0
- package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackLoadingTime.mjs +46 -0
- package/esm/domain/view/viewMetrics/trackLoadingTime.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackNavigationTimings.mjs +35 -0
- package/esm/domain/view/viewMetrics/trackNavigationTimings.mjs.map +1 -0
- package/esm/domain/view/viewMetrics/trackScrollMetrics.mjs +66 -0
- package/esm/domain/view/viewMetrics/trackScrollMetrics.mjs.map +1 -0
- package/esm/domain/vital/vitalCollection.mjs +85 -0
- package/esm/domain/vital/vitalCollection.mjs.map +1 -0
- package/esm/domain/waitPageActivityEnd.mjs +107 -0
- package/esm/domain/waitPageActivityEnd.mjs.map +1 -0
- package/esm/index.mjs +23 -0
- package/esm/rawRumEvent.types.mjs +42 -0
- package/esm/rawRumEvent.types.mjs.map +1 -0
- package/esm/transport/formDataTransport.mjs +48 -0
- package/esm/transport/formDataTransport.mjs.map +1 -0
- package/esm/transport/startRumBatch.mjs +132 -0
- package/esm/transport/startRumBatch.mjs.map +1 -0
- package/esm/transport/startRumEventBridge.mjs +13 -0
- package/esm/transport/startRumEventBridge.mjs.map +1 -0
- package/package.json +19 -11
- package/src/boot/preStartRum.ts +216 -88
- package/src/boot/rumPublicApi.ts +358 -119
- package/src/boot/startRum.ts +88 -84
- package/src/browser/cookieObservable.ts +19 -28
- package/src/browser/domMutationObservable.ts +7 -12
- package/src/browser/htmlDomUtils.ts +15 -0
- package/src/browser/locationChangeObservable.ts +23 -12
- package/src/browser/performanceObservable.ts +23 -73
- package/src/browser/performanceUtils.ts +52 -4
- package/src/browser/viewportObservable.ts +4 -6
- package/src/domain/action/actionCollection.ts +94 -87
- package/src/domain/action/clickChain.ts +11 -10
- package/src/domain/action/computeFrustration.ts +19 -5
- package/src/domain/action/frustrationIgnore.ts +54 -0
- package/src/domain/action/getActionNameFromElement.ts +27 -61
- package/src/domain/action/interactionSelectorCache.ts +2 -2
- package/src/domain/action/isActionChildEvent.ts +6 -0
- package/src/domain/action/listenActionEvents.ts +2 -11
- package/src/domain/action/trackClickActions.ts +92 -82
- package/src/domain/action/trackManualActions.ts +104 -0
- package/src/domain/assembly.ts +57 -70
- package/src/domain/configuration/configuration.ts +587 -208
- package/src/domain/configuration/index.ts +1 -0
- package/src/domain/configuration/remoteConfiguration.ts +152 -29
- package/src/domain/configuration/remoteConfiguration.types.ts +51 -1
- package/src/domain/configuration/remoteConfigurationCache.ts +153 -0
- package/src/domain/configuration/remoteSdkConfiguration.ts +131 -13
- package/src/domain/configuration/sessionReplayRoutes.ts +2 -47
- package/src/domain/contexts/ciVisibilityContext.ts +23 -12
- package/src/domain/contexts/connectivityContext.ts +7 -10
- package/src/domain/contexts/defaultContext.ts +11 -14
- package/src/domain/contexts/displayContext.ts +8 -12
- package/src/domain/contexts/featureFlagContext.ts +5 -4
- package/src/domain/contexts/internalContext.ts +3 -3
- package/src/domain/contexts/pageStateHistory.ts +20 -31
- package/src/domain/contexts/sessionContext.ts +16 -22
- package/src/domain/contexts/sourceCodeMfeContext.ts +53 -0
- package/src/domain/contexts/syntheticsContext.ts +7 -17
- package/src/domain/contexts/trackingConsentContext.ts +7 -4
- package/src/domain/contexts/urlContexts.ts +13 -9
- package/src/domain/contexts/userAgentDataContext.ts +12 -13
- package/src/domain/contexts/viewHistory.ts +4 -3
- package/src/domain/discardNegativeDuration.ts +1 -1
- package/src/domain/error/errorCollection.ts +12 -22
- package/src/domain/error/trackReportError.ts +4 -7
- package/src/domain/event/eventCollection.ts +4 -2
- package/src/domain/eventTracker.ts +169 -0
- package/src/domain/extractRegexMatch.ts +15 -0
- package/src/domain/getComposedPathSelector.ts +130 -0
- package/src/domain/getSelectorFromElement.ts +125 -31
- package/src/domain/getSessionReplayUrl.ts +4 -13
- package/src/domain/hooks.ts +34 -21
- package/src/domain/lifeCycle.ts +21 -8
- package/src/domain/limitModification.ts +20 -4
- package/src/domain/longTask/longTaskCollection.ts +18 -47
- package/src/domain/plugins.ts +54 -25
- package/src/domain/privacy.ts +16 -24
- package/src/domain/requestCollection.ts +108 -97
- package/src/domain/resource/graphql.ts +71 -25
- package/src/domain/resource/requestRegistry.ts +1 -3
- package/src/domain/resource/resourceCollection.ts +319 -137
- package/src/domain/resource/resourceUtils.ts +24 -26
- package/src/domain/resource/trackManualResources.ts +121 -0
- package/src/domain/resource/webSocketCollection.ts +281 -0
- package/src/domain/session/session.types.ts +5 -0
- package/src/domain/sessionReplayState.ts +36 -0
- package/src/domain/startCustomerDataTelemetry.ts +2 -2
- package/src/domain/tracing/getDocumentTraceId.ts +5 -4
- package/src/domain/tracing/identifier.ts +6 -37
- package/src/domain/tracing/tracer.ts +22 -21
- package/src/domain/tracing/tracer.types.ts +3 -3
- package/src/domain/view/bfCacheSupport.ts +1 -6
- package/src/domain/view/trackViews.ts +40 -37
- package/src/domain/view/viewCollection.ts +29 -23
- package/src/domain/view/viewDiff.ts +115 -0
- package/src/domain/view/viewMetrics/interactionCountPolyfill.ts +13 -2
- package/src/domain/view/viewMetrics/trackBfcacheMetrics.ts +1 -1
- package/src/domain/view/viewMetrics/trackCommonViewMetrics.ts +27 -6
- package/src/domain/view/viewMetrics/trackCumulativeLayoutShift.ts +5 -3
- package/src/domain/view/viewMetrics/trackFirstContentfulPaint.ts +4 -9
- package/src/domain/view/viewMetrics/trackFirstHidden.ts +2 -8
- package/src/domain/view/viewMetrics/trackInitialViewMetrics.ts +4 -13
- package/src/domain/view/viewMetrics/trackInteractionToNextPaint.ts +180 -35
- package/src/domain/view/viewMetrics/trackLargestContentfulPaint.ts +47 -6
- package/src/domain/view/viewMetrics/trackLoadingTime.ts +4 -3
- package/src/domain/view/viewMetrics/trackNavigationTimings.ts +10 -18
- package/src/domain/view/viewMetrics/trackScrollMetrics.ts +23 -37
- package/src/domain/vital/vitalCollection.ts +83 -102
- package/src/domain/waitPageActivityEnd.ts +7 -11
- package/src/domainContext.types.ts +23 -15
- package/src/index.ts +17 -11
- package/src/rawRumEvent.types.ts +80 -26
- package/src/rumEvent.types.ts +730 -505
- package/src/transport/formDataTransport.ts +16 -6
- package/src/transport/startRumBatch.ts +181 -24
- package/cjs/browser/firstInputPolyfill.d.ts +0 -8
- package/cjs/browser/firstInputPolyfill.js +0 -68
- package/cjs/browser/firstInputPolyfill.js.map +0 -1
- package/cjs/domain/configuration/index.js.map +0 -1
- package/cjs/domain/configuration/remoteConfiguration.types.js +0 -7
- package/cjs/domain/configuration/remoteConfiguration.types.js.map +0 -1
- package/cjs/domain/error/trackConsoleError.d.ts +0 -4
- package/cjs/domain/error/trackConsoleError.js +0 -13
- package/cjs/domain/error/trackConsoleError.js.map +0 -1
- package/cjs/domain/resource/matchRequestResourceEntry.d.ts +0 -16
- package/cjs/domain/resource/matchRequestResourceEntry.js +0 -49
- package/cjs/domain/resource/matchRequestResourceEntry.js.map +0 -1
- package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.d.ts +0 -4
- package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.js +0 -24
- package/cjs/domain/resource/retrieveInitialDocumentResourceTiming.js.map +0 -1
- package/cjs/domain/rumSessionManager.d.ts +0 -36
- package/cjs/domain/rumSessionManager.js +0 -77
- package/cjs/domain/rumSessionManager.js.map +0 -1
- package/cjs/domain/sampler/sampler.d.ts +0 -10
- package/cjs/domain/sampler/sampler.js +0 -63
- package/cjs/domain/sampler/sampler.js.map +0 -1
- package/cjs/domain/tracing/sampler.d.ts +0 -10
- package/cjs/domain/tracing/sampler.js +0 -69
- package/cjs/domain/tracing/sampler.js.map +0 -1
- package/cjs/domain/tracing/tracer.types.js +0 -3
- package/cjs/domain/tracing/tracer.types.js.map +0 -1
- package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.d.ts +0 -6
- package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js +0 -44
- package/cjs/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js.map +0 -1
- package/cjs/domain/view/viewMetrics/trackFirstInput.d.ts +0 -19
- package/cjs/domain/view/viewMetrics/trackFirstInput.js +0 -43
- package/cjs/domain/view/viewMetrics/trackFirstInput.js.map +0 -1
- package/cjs/domainContext.types.js +0 -6
- package/cjs/domainContext.types.js.map +0 -1
- package/cjs/index.js.map +0 -1
- package/cjs/rumEvent.types.js +0 -7
- package/cjs/rumEvent.types.js.map +0 -1
- package/esm/boot/preStartRum.d.ts +0 -7
- package/esm/boot/preStartRum.js +0 -205
- package/esm/boot/preStartRum.js.map +0 -1
- package/esm/boot/rumPublicApi.d.ts +0 -409
- package/esm/boot/rumPublicApi.js +0 -165
- package/esm/boot/rumPublicApi.js.map +0 -1
- package/esm/boot/startRum.d.ts +0 -109
- package/esm/boot/startRum.js +0 -149
- package/esm/boot/startRum.js.map +0 -1
- package/esm/browser/cookieObservable.d.ts +0 -8
- package/esm/browser/cookieObservable.js +0 -35
- package/esm/browser/cookieObservable.js.map +0 -1
- package/esm/browser/domMutationObservable.d.ts +0 -27
- package/esm/browser/domMutationObservable.js +0 -54
- package/esm/browser/domMutationObservable.js.map +0 -1
- package/esm/browser/firstInputPolyfill.d.ts +0 -8
- package/esm/browser/firstInputPolyfill.js +0 -65
- package/esm/browser/firstInputPolyfill.js.map +0 -1
- package/esm/browser/htmlDomUtils.d.ts +0 -13
- package/esm/browser/htmlDomUtils.js +0 -36
- package/esm/browser/htmlDomUtils.js.map +0 -1
- package/esm/browser/locationChangeObservable.d.ts +0 -7
- package/esm/browser/locationChangeObservable.js +0 -48
- package/esm/browser/locationChangeObservable.js.map +0 -1
- package/esm/browser/performanceObservable.d.ts +0 -174
- package/esm/browser/performanceObservable.js +0 -121
- package/esm/browser/performanceObservable.js.map +0 -1
- package/esm/browser/performanceUtils.d.ts +0 -7
- package/esm/browser/performanceUtils.js +0 -38
- package/esm/browser/performanceUtils.js.map +0 -1
- package/esm/browser/scroll.d.ts +0 -2
- package/esm/browser/scroll.js +0 -29
- package/esm/browser/scroll.js.map +0 -1
- package/esm/browser/viewportObservable.d.ts +0 -10
- package/esm/browser/viewportObservable.js +0 -32
- package/esm/browser/viewportObservable.js.map +0 -1
- package/esm/browser/windowOpenObservable.d.ts +0 -5
- package/esm/browser/windowOpenObservable.js +0 -7
- package/esm/browser/windowOpenObservable.js.map +0 -1
- package/esm/domain/action/actionCollection.d.ts +0 -21
- package/esm/domain/action/actionCollection.js +0 -93
- package/esm/domain/action/actionCollection.js.map +0 -1
- package/esm/domain/action/actionNameConstants.d.ts +0 -18
- package/esm/domain/action/actionNameConstants.js +0 -8
- package/esm/domain/action/actionNameConstants.js.map +0 -1
- package/esm/domain/action/clickChain.d.ts +0 -8
- package/esm/domain/action/clickChain.js +0 -57
- package/esm/domain/action/clickChain.js.map +0 -1
- package/esm/domain/action/computeFrustration.d.ts +0 -6
- package/esm/domain/action/computeFrustration.js +0 -65
- package/esm/domain/action/computeFrustration.js.map +0 -1
- package/esm/domain/action/getActionNameFromElement.d.ts +0 -4
- package/esm/domain/action/getActionNameFromElement.js +0 -236
- package/esm/domain/action/getActionNameFromElement.js.map +0 -1
- package/esm/domain/action/interactionSelectorCache.d.ts +0 -5
- package/esm/domain/action/interactionSelectorCache.js +0 -18
- package/esm/domain/action/interactionSelectorCache.js.map +0 -1
- package/esm/domain/action/listenActionEvents.d.ts +0 -19
- package/esm/domain/action/listenActionEvents.js +0 -58
- package/esm/domain/action/listenActionEvents.js.map +0 -1
- package/esm/domain/action/trackClickActions.d.ts +0 -81
- package/esm/domain/action/trackClickActions.js +0 -232
- package/esm/domain/action/trackClickActions.js.map +0 -1
- package/esm/domain/assembly.d.ts +0 -5
- package/esm/domain/assembly.js +0 -99
- package/esm/domain/assembly.js.map +0 -1
- package/esm/domain/configuration/configuration.d.ts +0 -358
- package/esm/domain/configuration/configuration.js +0 -209
- package/esm/domain/configuration/configuration.js.map +0 -1
- package/esm/domain/configuration/index.d.ts +0 -4
- package/esm/domain/configuration/index.js +0 -5
- package/esm/domain/configuration/index.js.map +0 -1
- package/esm/domain/configuration/jsonPathParser.d.ts +0 -28
- package/esm/domain/configuration/jsonPathParser.js +0 -156
- package/esm/domain/configuration/jsonPathParser.js.map +0 -1
- package/esm/domain/configuration/remoteConfiguration.d.ts +0 -39
- package/esm/domain/configuration/remoteConfiguration.js +0 -236
- package/esm/domain/configuration/remoteConfiguration.js.map +0 -1
- package/esm/domain/configuration/remoteConfiguration.types.d.ts +0 -138
- package/esm/domain/configuration/remoteConfiguration.types.js +0 -6
- package/esm/domain/configuration/remoteConfiguration.types.js.map +0 -1
- package/esm/domain/configuration/remoteSdkConfiguration.d.ts +0 -18
- package/esm/domain/configuration/remoteSdkConfiguration.js +0 -137
- package/esm/domain/configuration/remoteSdkConfiguration.js.map +0 -1
- package/esm/domain/configuration/sessionReplayRoutes.d.ts +0 -35
- package/esm/domain/configuration/sessionReplayRoutes.js +0 -65
- package/esm/domain/configuration/sessionReplayRoutes.js.map +0 -1
- package/esm/domain/contexts/ciVisibilityContext.d.ts +0 -12
- package/esm/domain/contexts/ciVisibilityContext.js +0 -30
- package/esm/domain/contexts/ciVisibilityContext.js.map +0 -1
- package/esm/domain/contexts/connectivityContext.d.ts +0 -2
- package/esm/domain/contexts/connectivityContext.js +0 -8
- package/esm/domain/contexts/connectivityContext.js.map +0 -1
- package/esm/domain/contexts/defaultContext.d.ts +0 -4
- package/esm/domain/contexts/defaultContext.js +0 -31
- package/esm/domain/contexts/defaultContext.js.map +0 -1
- package/esm/domain/contexts/displayContext.d.ts +0 -6
- package/esm/domain/contexts/displayContext.js +0 -25
- package/esm/domain/contexts/displayContext.js.map +0 -1
- package/esm/domain/contexts/featureFlagContext.d.ts +0 -19
- package/esm/domain/contexts/featureFlagContext.js +0 -49
- package/esm/domain/contexts/featureFlagContext.js.map +0 -1
- package/esm/domain/contexts/internalContext.d.ts +0 -12
- package/esm/domain/contexts/internalContext.js +0 -23
- package/esm/domain/contexts/internalContext.js.map +0 -1
- package/esm/domain/contexts/pageStateHistory.d.ts +0 -23
- package/esm/domain/contexts/pageStateHistory.js +0 -100
- package/esm/domain/contexts/pageStateHistory.js.map +0 -1
- package/esm/domain/contexts/sessionContext.d.ts +0 -5
- package/esm/domain/contexts/sessionContext.js +0 -44
- package/esm/domain/contexts/sessionContext.js.map +0 -1
- package/esm/domain/contexts/syntheticsContext.d.ts +0 -2
- package/esm/domain/contexts/syntheticsContext.js +0 -22
- package/esm/domain/contexts/syntheticsContext.js.map +0 -1
- package/esm/domain/contexts/trackingConsentContext.d.ts +0 -3
- package/esm/domain/contexts/trackingConsentContext.js +0 -11
- package/esm/domain/contexts/trackingConsentContext.js.map +0 -1
- package/esm/domain/contexts/urlContexts.d.ts +0 -22
- package/esm/domain/contexts/urlContexts.js +0 -60
- package/esm/domain/contexts/urlContexts.js.map +0 -1
- package/esm/domain/contexts/userAgentDataContext.d.ts +0 -2
- package/esm/domain/contexts/userAgentDataContext.js +0 -28
- package/esm/domain/contexts/userAgentDataContext.js.map +0 -1
- package/esm/domain/contexts/viewHistory.d.ts +0 -17
- package/esm/domain/contexts/viewHistory.js +0 -44
- package/esm/domain/contexts/viewHistory.js.map +0 -1
- package/esm/domain/discardNegativeDuration.d.ts +0 -2
- package/esm/domain/discardNegativeDuration.js +0 -5
- package/esm/domain/discardNegativeDuration.js.map +0 -1
- package/esm/domain/error/errorCollection.d.ts +0 -17
- package/esm/domain/error/errorCollection.js +0 -70
- package/esm/domain/error/errorCollection.js.map +0 -1
- package/esm/domain/error/trackConsoleError.d.ts +0 -4
- package/esm/domain/error/trackConsoleError.js +0 -10
- package/esm/domain/error/trackConsoleError.js.map +0 -1
- package/esm/domain/error/trackReportError.d.ts +0 -5
- package/esm/domain/error/trackReportError.js +0 -13
- package/esm/domain/error/trackReportError.js.map +0 -1
- package/esm/domain/event/eventCollection.d.ts +0 -10
- package/esm/domain/event/eventCollection.js +0 -24
- package/esm/domain/event/eventCollection.js.map +0 -1
- package/esm/domain/getSelectorFromElement.d.ts +0 -64
- package/esm/domain/getSelectorFromElement.js +0 -213
- package/esm/domain/getSelectorFromElement.js.map +0 -1
- package/esm/domain/getSessionReplayUrl.d.ts +0 -9
- package/esm/domain/getSessionReplayUrl.js +0 -30
- package/esm/domain/getSessionReplayUrl.js.map +0 -1
- package/esm/domain/hooks.d.ts +0 -23
- package/esm/domain/hooks.js +0 -3
- package/esm/domain/hooks.js.map +0 -1
- package/esm/domain/lifeCycle.d.ts +0 -73
- package/esm/domain/lifeCycle.js +0 -3
- package/esm/domain/lifeCycle.js.map +0 -1
- package/esm/domain/limitModification.d.ts +0 -8
- package/esm/domain/limitModification.js +0 -43
- package/esm/domain/limitModification.js.map +0 -1
- package/esm/domain/longTask/longTaskCollection.d.ts +0 -18
- package/esm/domain/longTask/longTaskCollection.js +0 -87
- package/esm/domain/longTask/longTaskCollection.js.map +0 -1
- package/esm/domain/plugins.d.ts +0 -40
- package/esm/domain/plugins.js +0 -12
- package/esm/domain/plugins.js.map +0 -1
- package/esm/domain/privacy.d.ts +0 -44
- package/esm/domain/privacy.js +0 -302
- package/esm/domain/privacy.js.map +0 -1
- package/esm/domain/privacyConstants.d.ts +0 -23
- package/esm/domain/privacyConstants.js +0 -35
- package/esm/domain/privacyConstants.js.map +0 -1
- package/esm/domain/requestCollection.d.ts +0 -54
- package/esm/domain/requestCollection.js +0 -106
- package/esm/domain/requestCollection.js.map +0 -1
- package/esm/domain/resource/graphql.d.ts +0 -23
- package/esm/domain/resource/graphql.js +0 -91
- package/esm/domain/resource/graphql.js.map +0 -1
- package/esm/domain/resource/matchRequestResourceEntry.d.ts +0 -16
- package/esm/domain/resource/matchRequestResourceEntry.js +0 -46
- package/esm/domain/resource/matchRequestResourceEntry.js.map +0 -1
- package/esm/domain/resource/requestRegistry.d.ts +0 -9
- package/esm/domain/resource/requestRegistry.js +0 -37
- package/esm/domain/resource/requestRegistry.js.map +0 -1
- package/esm/domain/resource/resourceCollection.d.ts +0 -7
- package/esm/domain/resource/resourceCollection.js +0 -187
- package/esm/domain/resource/resourceCollection.js.map +0 -1
- package/esm/domain/resource/resourceUtils.d.ts +0 -55
- package/esm/domain/resource/resourceUtils.js +0 -244
- package/esm/domain/resource/resourceUtils.js.map +0 -1
- package/esm/domain/resource/retrieveInitialDocumentResourceTiming.d.ts +0 -4
- package/esm/domain/resource/retrieveInitialDocumentResourceTiming.js +0 -21
- package/esm/domain/resource/retrieveInitialDocumentResourceTiming.js.map +0 -1
- package/esm/domain/rumSessionManager.d.ts +0 -36
- package/esm/domain/rumSessionManager.js +0 -72
- package/esm/domain/rumSessionManager.js.map +0 -1
- package/esm/domain/sampler/sampler.d.ts +0 -10
- package/esm/domain/sampler/sampler.js +0 -58
- package/esm/domain/sampler/sampler.js.map +0 -1
- package/esm/domain/startCustomerDataTelemetry.d.ts +0 -4
- package/esm/domain/startCustomerDataTelemetry.js +0 -52
- package/esm/domain/startCustomerDataTelemetry.js.map +0 -1
- package/esm/domain/tracing/getDocumentTraceId.d.ts +0 -12
- package/esm/domain/tracing/getDocumentTraceId.js +0 -68
- package/esm/domain/tracing/getDocumentTraceId.js.map +0 -1
- package/esm/domain/tracing/identifier.d.ts +0 -13
- package/esm/domain/tracing/identifier.js +0 -50
- package/esm/domain/tracing/identifier.js.map +0 -1
- package/esm/domain/tracing/sampler.d.ts +0 -10
- package/esm/domain/tracing/sampler.js +0 -64
- package/esm/domain/tracing/sampler.js.map +0 -1
- package/esm/domain/tracing/tracer.d.ts +0 -30
- package/esm/domain/tracing/tracer.js +0 -156
- package/esm/domain/tracing/tracer.js.map +0 -1
- package/esm/domain/tracing/tracer.types.d.ts +0 -12
- package/esm/domain/tracing/tracer.types.js +0 -2
- package/esm/domain/tracing/tracer.types.js.map +0 -1
- package/esm/domain/trackEventCounts.d.ts +0 -17
- package/esm/domain/trackEventCounts.js +0 -47
- package/esm/domain/trackEventCounts.js.map +0 -1
- package/esm/domain/view/bfCacheSupport.d.ts +0 -2
- package/esm/domain/view/bfCacheSupport.js +0 -10
- package/esm/domain/view/bfCacheSupport.js.map +0 -1
- package/esm/domain/view/trackViewEventCounts.d.ts +0 -5
- package/esm/domain/view/trackViewEventCounts.js +0 -13
- package/esm/domain/view/trackViewEventCounts.js.map +0 -1
- package/esm/domain/view/trackViews.d.ts +0 -65
- package/esm/domain/view/trackViews.js +0 -278
- package/esm/domain/view/trackViews.js.map +0 -1
- package/esm/domain/view/viewCollection.d.ts +0 -18
- package/esm/domain/view/viewCollection.js +0 -150
- package/esm/domain/view/viewCollection.js.map +0 -1
- package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.d.ts +0 -6
- package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.js +0 -28
- package/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.js.map +0 -1
- package/esm/domain/view/viewMetrics/interactionCountPolyfill.d.ts +0 -18
- package/esm/domain/view/viewMetrics/interactionCountPolyfill.js +0 -39
- package/esm/domain/view/viewMetrics/interactionCountPolyfill.js.map +0 -1
- package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.d.ts +0 -6
- package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js +0 -41
- package/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackBfcacheMetrics.d.ts +0 -8
- package/esm/domain/view/viewMetrics/trackBfcacheMetrics.js +0 -14
- package/esm/domain/view/viewMetrics/trackBfcacheMetrics.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackCommonViewMetrics.d.ts +0 -21
- package/esm/domain/view/viewMetrics/trackCommonViewMetrics.js +0 -34
- package/esm/domain/view/viewMetrics/trackCommonViewMetrics.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.d.ts +0 -37
- package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js +0 -130
- package/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.d.ts +0 -13
- package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js +0 -34
- package/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackFirstHidden.d.ts +0 -10
- package/esm/domain/view/viewMetrics/trackFirstHidden.js +0 -30
- package/esm/domain/view/viewMetrics/trackFirstHidden.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackFirstInput.d.ts +0 -19
- package/esm/domain/view/viewMetrics/trackFirstInput.js +0 -40
- package/esm/domain/view/viewMetrics/trackFirstInput.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackInitialViewMetrics.d.ts +0 -15
- package/esm/domain/view/viewMetrics/trackInitialViewMetrics.js +0 -38
- package/esm/domain/view/viewMetrics/trackInitialViewMetrics.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.d.ts +0 -25
- package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js +0 -149
- package/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.d.ts +0 -18
- package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js +0 -57
- package/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackLoadingTime.d.ts +0 -14
- package/esm/domain/view/viewMetrics/trackLoadingTime.js +0 -47
- package/esm/domain/view/viewMetrics/trackLoadingTime.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackNavigationTimings.d.ts +0 -14
- package/esm/domain/view/viewMetrics/trackNavigationTimings.js +0 -40
- package/esm/domain/view/viewMetrics/trackNavigationTimings.js.map +0 -1
- package/esm/domain/view/viewMetrics/trackScrollMetrics.d.ts +0 -25
- package/esm/domain/view/viewMetrics/trackScrollMetrics.js +0 -72
- package/esm/domain/view/viewMetrics/trackScrollMetrics.js.map +0 -1
- package/esm/domain/vital/vitalCollection.d.ts +0 -55
- package/esm/domain/vital/vitalCollection.js +0 -107
- package/esm/domain/vital/vitalCollection.js.map +0 -1
- package/esm/domain/waitPageActivityEnd.d.ts +0 -54
- package/esm/domain/waitPageActivityEnd.js +0 -123
- package/esm/domain/waitPageActivityEnd.js.map +0 -1
- package/esm/domainContext.types.d.ts +0 -39
- package/esm/domainContext.types.js +0 -5
- package/esm/domainContext.types.js.map +0 -1
- package/esm/index.d.ts +0 -42
- package/esm/index.js +0 -22
- package/esm/index.js.map +0 -1
- package/esm/rawRumEvent.types.d.ts +0 -326
- package/esm/rawRumEvent.types.js +0 -31
- package/esm/rawRumEvent.types.js.map +0 -1
- package/esm/rumEvent.types.d.ts +0 -2038
- package/esm/rumEvent.types.js +0 -6
- package/esm/rumEvent.types.js.map +0 -1
- package/esm/transport/formDataTransport.d.ts +0 -16
- package/esm/transport/formDataTransport.js +0 -43
- package/esm/transport/formDataTransport.js.map +0 -1
- package/esm/transport/startRumBatch.d.ts +0 -5
- package/esm/transport/startRumBatch.js +0 -30
- package/esm/transport/startRumBatch.js.map +0 -1
- package/esm/transport/startRumEventBridge.d.ts +0 -2
- package/esm/transport/startRumEventBridge.js +0 -8
- package/esm/transport/startRumEventBridge.js.map +0 -1
- package/src/browser/firstInputPolyfill.ts +0 -87
- package/src/domain/error/trackConsoleError.ts +0 -14
- package/src/domain/resource/matchRequestResourceEntry.ts +0 -68
- package/src/domain/resource/retrieveInitialDocumentResourceTiming.ts +0 -27
- package/src/domain/rumSessionManager.ts +0 -134
- package/src/domain/sampler/sampler.ts +0 -63
- package/src/domain/tracing/sampler.ts +0 -69
- package/src/domain/view/viewMetrics/startInitialViewMetricsTelemetry.ts +0 -70
- package/src/domain/view/viewMetrics/trackFirstInput.ts +0 -59
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
import { getRemoteConfigurationId } from "./remoteConfiguration.mjs";
|
|
2
|
+
import { isIndexableObject, isMatchOption } from "@kubesense/kubesense-js-core/util";
|
|
3
|
+
import { BROWSER_CORE_SCHEMA, DefaultPrivacyLevel, TraceContextInjection, canUseEventBridge, catchUserErrors, display, isNonEmptyArray, isNumber, serializeConfiguration } from "@kubesense/kubesense-browser-core";
|
|
4
|
+
import { validateAndBuildConfiguration } from "@kubesense/kubesense-js-core/configuration";
|
|
5
|
+
//#region src/domain/configuration/configuration.ts
|
|
6
|
+
const DEFAULT_PROPAGATOR_TYPES = ["tracecontext", "kubesense"];
|
|
7
|
+
/**
|
|
8
|
+
* Default list of headers collected on resource events when {@link RumInitConfiguration.trackResourceHeaders | trackResourceHeaders}
|
|
9
|
+
* is set to `true`.
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_TRACKED_RESOURCE_HEADERS = [
|
|
12
|
+
"cache-control",
|
|
13
|
+
"etag",
|
|
14
|
+
"age",
|
|
15
|
+
"expires",
|
|
16
|
+
"content-type",
|
|
17
|
+
"content-encoding",
|
|
18
|
+
"vary",
|
|
19
|
+
"content-length",
|
|
20
|
+
"server-timing",
|
|
21
|
+
"x-cache",
|
|
22
|
+
"cf-cache-status",
|
|
23
|
+
"x-vercel-cache"
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Recording quality presets for canvas capture. See {@link RumInitConfiguration.sessionReplayCanvasRecording}.
|
|
27
|
+
*
|
|
28
|
+
* | Preset | Frames per second | Longest side | WebP quality |
|
|
29
|
+
* | -------- | ----------------- | ------------ | ------------ |
|
|
30
|
+
* | `low` | 1 | 600 px | 0.3 |
|
|
31
|
+
* | `medium` | 4 | 1000 px | 0.5 |
|
|
32
|
+
* | `high` | 8 | 1280 px | 0.75 |
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* kubesenseSdk.init({
|
|
37
|
+
* // ...
|
|
38
|
+
* sessionReplayCanvasRecording: {
|
|
39
|
+
* enable: true,
|
|
40
|
+
* quality: CanvasRecordingQuality.MEDIUM,
|
|
41
|
+
* },
|
|
42
|
+
* })
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
const CanvasRecordingQuality = {
|
|
46
|
+
LOW: "low",
|
|
47
|
+
MEDIUM: "medium",
|
|
48
|
+
HIGH: "high"
|
|
49
|
+
};
|
|
50
|
+
const CANVAS_RECORDING_QUALITY_PRESETS = {
|
|
51
|
+
[CanvasRecordingQuality.LOW]: {
|
|
52
|
+
maxFramesPerSecond: 1,
|
|
53
|
+
hashingMaxDimension: 50,
|
|
54
|
+
maxImageDimension: 600,
|
|
55
|
+
encodeQuality: .3
|
|
56
|
+
},
|
|
57
|
+
[CanvasRecordingQuality.MEDIUM]: {
|
|
58
|
+
maxFramesPerSecond: 4,
|
|
59
|
+
hashingMaxDimension: 100,
|
|
60
|
+
maxImageDimension: 1e3,
|
|
61
|
+
encodeQuality: .5
|
|
62
|
+
},
|
|
63
|
+
[CanvasRecordingQuality.HIGH]: {
|
|
64
|
+
maxFramesPerSecond: 8,
|
|
65
|
+
hashingMaxDimension: 100,
|
|
66
|
+
maxImageDimension: 1280,
|
|
67
|
+
encodeQuality: .75
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Upstream gates canvas recording behind the `session_replay_record_canvas` experimental flag; in
|
|
72
|
+
* this SDK it is a regular option. The preset's values can be overridden one by one, which is how the
|
|
73
|
+
* dashboard's remote configuration tunes them.
|
|
74
|
+
*/
|
|
75
|
+
function resolveCanvasRecordingConfiguration(configuration) {
|
|
76
|
+
const preset = configuration && CANVAS_RECORDING_QUALITY_PRESETS[configuration.quality];
|
|
77
|
+
if (!configuration?.enable || !preset) return;
|
|
78
|
+
return {
|
|
79
|
+
enable: true,
|
|
80
|
+
...preset,
|
|
81
|
+
maxFramesPerSecond: configuration.maxFramesPerSecond ?? preset.maxFramesPerSecond,
|
|
82
|
+
maxImageDimension: configuration.maxImageDimension ?? preset.maxImageDimension,
|
|
83
|
+
hashingMaxDimension: configuration.hashingMaxDimension ?? preset.hashingMaxDimension
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
const RUM_SCHEMA = {
|
|
87
|
+
...BROWSER_CORE_SCHEMA,
|
|
88
|
+
applicationId: {
|
|
89
|
+
type: "string",
|
|
90
|
+
required: true
|
|
91
|
+
},
|
|
92
|
+
actionNameAttribute: { type: "string" },
|
|
93
|
+
workerUrl: { type: "string" },
|
|
94
|
+
subdomain: { type: "string" },
|
|
95
|
+
sessionReplaySampleRate: {
|
|
96
|
+
type: "percentage",
|
|
97
|
+
default: 0
|
|
98
|
+
},
|
|
99
|
+
traceSampleRate: {
|
|
100
|
+
type: "percentage",
|
|
101
|
+
default: 100
|
|
102
|
+
},
|
|
103
|
+
profilingSampleRate: {
|
|
104
|
+
type: "percentage",
|
|
105
|
+
default: 0
|
|
106
|
+
},
|
|
107
|
+
compressIntakeRequests: {
|
|
108
|
+
type: "boolean",
|
|
109
|
+
default: false
|
|
110
|
+
},
|
|
111
|
+
trackUserInteractions: {
|
|
112
|
+
type: "boolean",
|
|
113
|
+
default: true,
|
|
114
|
+
strict: false
|
|
115
|
+
},
|
|
116
|
+
trackResources: {
|
|
117
|
+
type: "boolean",
|
|
118
|
+
default: true,
|
|
119
|
+
strict: false
|
|
120
|
+
},
|
|
121
|
+
trackLongTasks: {
|
|
122
|
+
type: "boolean",
|
|
123
|
+
default: true,
|
|
124
|
+
strict: false
|
|
125
|
+
},
|
|
126
|
+
trackViewsManually: {
|
|
127
|
+
type: "boolean",
|
|
128
|
+
default: false,
|
|
129
|
+
strict: false
|
|
130
|
+
},
|
|
131
|
+
betaEnableViewUpdates: { type: "boolean" },
|
|
132
|
+
betaTrackWebSockets: {
|
|
133
|
+
type: "boolean",
|
|
134
|
+
default: false,
|
|
135
|
+
strict: false
|
|
136
|
+
},
|
|
137
|
+
enablePrivacyForActionName: {
|
|
138
|
+
type: "boolean",
|
|
139
|
+
default: true
|
|
140
|
+
},
|
|
141
|
+
propagateTraceBaggage: {
|
|
142
|
+
type: "boolean",
|
|
143
|
+
default: true
|
|
144
|
+
},
|
|
145
|
+
startSessionReplayRecordingManually: {
|
|
146
|
+
type: "boolean",
|
|
147
|
+
default: false,
|
|
148
|
+
strict: false
|
|
149
|
+
},
|
|
150
|
+
enableRemoteSdkConfiguration: {
|
|
151
|
+
type: "boolean",
|
|
152
|
+
default: false,
|
|
153
|
+
strict: false
|
|
154
|
+
},
|
|
155
|
+
firstPartyDomains: {
|
|
156
|
+
type: "match-option",
|
|
157
|
+
multiple: true,
|
|
158
|
+
default: []
|
|
159
|
+
},
|
|
160
|
+
sessionReplayRoutes: {
|
|
161
|
+
type: "schema",
|
|
162
|
+
strict: false,
|
|
163
|
+
schema: {
|
|
164
|
+
include: {
|
|
165
|
+
type: "match-option",
|
|
166
|
+
multiple: true,
|
|
167
|
+
strict: false
|
|
168
|
+
},
|
|
169
|
+
exclude: {
|
|
170
|
+
type: "match-option",
|
|
171
|
+
multiple: true,
|
|
172
|
+
strict: false
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
sessionReplayCanvasRecording: {
|
|
177
|
+
type: "schema",
|
|
178
|
+
schema: {
|
|
179
|
+
enable: {
|
|
180
|
+
type: "boolean",
|
|
181
|
+
required: true
|
|
182
|
+
},
|
|
183
|
+
quality: {
|
|
184
|
+
type: "enum",
|
|
185
|
+
values: CanvasRecordingQuality,
|
|
186
|
+
default: CanvasRecordingQuality.MEDIUM
|
|
187
|
+
},
|
|
188
|
+
maxFramesPerSecond: {
|
|
189
|
+
type: "number",
|
|
190
|
+
min: 0,
|
|
191
|
+
max: 8
|
|
192
|
+
},
|
|
193
|
+
maxImageDimension: {
|
|
194
|
+
type: "number",
|
|
195
|
+
min: 1,
|
|
196
|
+
max: 1280
|
|
197
|
+
},
|
|
198
|
+
hashingMaxDimension: {
|
|
199
|
+
type: "number",
|
|
200
|
+
min: 1,
|
|
201
|
+
max: 100
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
defaultPrivacyLevel: {
|
|
206
|
+
type: "enum",
|
|
207
|
+
values: DefaultPrivacyLevel,
|
|
208
|
+
default: DefaultPrivacyLevel.MASK_USER_INPUT,
|
|
209
|
+
strict: false
|
|
210
|
+
},
|
|
211
|
+
traceContextInjection: {
|
|
212
|
+
type: "enum",
|
|
213
|
+
values: TraceContextInjection,
|
|
214
|
+
default: TraceContextInjection.SAMPLED,
|
|
215
|
+
strict: false
|
|
216
|
+
},
|
|
217
|
+
excludedActivityUrls: {
|
|
218
|
+
type: "match-option",
|
|
219
|
+
multiple: true,
|
|
220
|
+
default: []
|
|
221
|
+
},
|
|
222
|
+
allowedTracingUrls: {
|
|
223
|
+
type: "union",
|
|
224
|
+
multiple: true,
|
|
225
|
+
strict: false,
|
|
226
|
+
default: [],
|
|
227
|
+
variants: [{ type: "match-option" }, {
|
|
228
|
+
type: "schema",
|
|
229
|
+
schema: {
|
|
230
|
+
match: {
|
|
231
|
+
type: "match-option",
|
|
232
|
+
required: true
|
|
233
|
+
},
|
|
234
|
+
propagatorTypes: {
|
|
235
|
+
type: "enum",
|
|
236
|
+
values: [
|
|
237
|
+
"kubesense",
|
|
238
|
+
"b3",
|
|
239
|
+
"b3multi",
|
|
240
|
+
"tracecontext"
|
|
241
|
+
],
|
|
242
|
+
multiple: true,
|
|
243
|
+
strict: false,
|
|
244
|
+
default: DEFAULT_PROPAGATOR_TYPES
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}]
|
|
248
|
+
},
|
|
249
|
+
plugins: {
|
|
250
|
+
type: "schema",
|
|
251
|
+
multiple: true,
|
|
252
|
+
strict: false,
|
|
253
|
+
default: [],
|
|
254
|
+
schema: {
|
|
255
|
+
name: {
|
|
256
|
+
type: "string",
|
|
257
|
+
required: true
|
|
258
|
+
},
|
|
259
|
+
getConfigurationTelemetry: {
|
|
260
|
+
type: "function",
|
|
261
|
+
strict: false,
|
|
262
|
+
signature: void 0
|
|
263
|
+
},
|
|
264
|
+
onInit: {
|
|
265
|
+
type: "function",
|
|
266
|
+
strict: false,
|
|
267
|
+
signature: void 0
|
|
268
|
+
},
|
|
269
|
+
onRumStart: {
|
|
270
|
+
type: "function",
|
|
271
|
+
strict: false,
|
|
272
|
+
signature: void 0
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
trackFeatureFlagsForEvents: {
|
|
277
|
+
type: "enum",
|
|
278
|
+
values: [
|
|
279
|
+
"vital",
|
|
280
|
+
"action",
|
|
281
|
+
"long_task",
|
|
282
|
+
"resource"
|
|
283
|
+
],
|
|
284
|
+
multiple: true,
|
|
285
|
+
strict: false,
|
|
286
|
+
default: []
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
/**
|
|
290
|
+
* Resolves whether partial view updates are enabled. Never enabled when the event bridge is used.
|
|
291
|
+
* Otherwise an explicit `betaEnableViewUpdates` takes precedence, and it defaults to true for CDN
|
|
292
|
+
* users that do not go through a proxy: a proxy may not forward the `view_update` event type yet,
|
|
293
|
+
* and npm users pin an SDK version so they opt in explicitly.
|
|
294
|
+
*
|
|
295
|
+
* The CDN check is temporary, the next step is to default this to true unless `proxy` is set.
|
|
296
|
+
* TODO next major: remove the option.
|
|
297
|
+
*/
|
|
298
|
+
function isViewUpdatesEnabled(explicit, proxy, sdkName) {
|
|
299
|
+
if (canUseEventBridge()) return false;
|
|
300
|
+
return explicit ?? false;
|
|
301
|
+
}
|
|
302
|
+
function validateAndBuildRumConfiguration(initConfiguration, sdkName) {
|
|
303
|
+
const config = validateAndBuildConfiguration(initConfiguration, RUM_SCHEMA, display);
|
|
304
|
+
if (!config) return;
|
|
305
|
+
const allowedTracingUrls = config.allowedTracingUrls.map(normalizeTracingOption).filter(Boolean);
|
|
306
|
+
if (allowedTracingUrls.length > 0 && !config.service) {
|
|
307
|
+
display.error("Service needs to be configured when tracing is enabled");
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
const sessionReplayCanvasRecording = resolveCanvasRecordingConfiguration(config.sessionReplayCanvasRecording);
|
|
311
|
+
return {
|
|
312
|
+
...config,
|
|
313
|
+
service: config.service || config.applicationId,
|
|
314
|
+
sessionReplayCanvasRecording,
|
|
315
|
+
betaEnableViewUpdates: isViewUpdatesEnabled(config.betaEnableViewUpdates, config.proxy, sdkName),
|
|
316
|
+
allowedTracingUrls,
|
|
317
|
+
beforeSend: config.beforeSend ? catchUserErrors(config.beforeSend, "beforeSend threw an error:") : void 0,
|
|
318
|
+
rulePsr: isNumber(initConfiguration.traceSampleRate) ? initConfiguration.traceSampleRate / 100 : void 0,
|
|
319
|
+
trackResourceHeaders: validateAndBuildTrackResourceHeaders(initConfiguration),
|
|
320
|
+
allowedGraphQlUrls: validateAndBuildGraphQlOptions(initConfiguration),
|
|
321
|
+
remoteConfigurationId: getRemoteConfigurationId(initConfiguration)
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Combines the selected tracing propagators from the different options in allowedTracingUrls
|
|
326
|
+
*/
|
|
327
|
+
function getSelectedTracingPropagators(configuration) {
|
|
328
|
+
const usedTracingPropagators = /* @__PURE__ */ new Set();
|
|
329
|
+
if (isNonEmptyArray(configuration.allowedTracingUrls)) configuration.allowedTracingUrls.forEach((option) => {
|
|
330
|
+
normalizeTracingOption(option)?.propagatorTypes.forEach((propagatorType) => usedTracingPropagators.add(propagatorType));
|
|
331
|
+
});
|
|
332
|
+
return Array.from(usedTracingPropagators);
|
|
333
|
+
}
|
|
334
|
+
function normalizeTracingOption(option) {
|
|
335
|
+
if (isMatchOption(option)) return {
|
|
336
|
+
match: option,
|
|
337
|
+
propagatorTypes: DEFAULT_PROPAGATOR_TYPES
|
|
338
|
+
};
|
|
339
|
+
if (isIndexableObject(option) && isMatchOption(option.match) && (option.propagatorTypes === null || option.propagatorTypes === void 0 || Array.isArray(option.propagatorTypes))) return {
|
|
340
|
+
match: option.match,
|
|
341
|
+
propagatorTypes: option.propagatorTypes || DEFAULT_PROPAGATOR_TYPES
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Build GraphQL options from configuration
|
|
346
|
+
*/
|
|
347
|
+
function validateAndBuildGraphQlOptions(initConfiguration) {
|
|
348
|
+
if (!initConfiguration.allowedGraphQlUrls) return [];
|
|
349
|
+
if (!Array.isArray(initConfiguration.allowedGraphQlUrls)) {
|
|
350
|
+
display.warn("allowedGraphQlUrls should be an array");
|
|
351
|
+
return [];
|
|
352
|
+
}
|
|
353
|
+
const graphQlOptions = [];
|
|
354
|
+
initConfiguration.allowedGraphQlUrls.forEach((option) => {
|
|
355
|
+
if (isMatchOption(option)) graphQlOptions.push({
|
|
356
|
+
match: option,
|
|
357
|
+
trackPayload: false,
|
|
358
|
+
trackResponseErrors: false
|
|
359
|
+
});
|
|
360
|
+
else if (isIndexableObject(option) && isMatchOption(option.match)) graphQlOptions.push({
|
|
361
|
+
match: option.match,
|
|
362
|
+
trackPayload: !!option.trackPayload,
|
|
363
|
+
trackResponseErrors: !!option.trackResponseErrors
|
|
364
|
+
});
|
|
365
|
+
});
|
|
366
|
+
return graphQlOptions;
|
|
367
|
+
}
|
|
368
|
+
const VALID_HEADER_LOCATIONS = [
|
|
369
|
+
"request",
|
|
370
|
+
"response",
|
|
371
|
+
"any"
|
|
372
|
+
];
|
|
373
|
+
function validateAndBuildTrackResourceHeaders(initConfiguration) {
|
|
374
|
+
const option = initConfiguration.trackResourceHeaders;
|
|
375
|
+
if (option === void 0 || option === false) return [];
|
|
376
|
+
if (option === true) return DEFAULT_TRACKED_RESOURCE_HEADERS.map((name) => ({ name }));
|
|
377
|
+
if (!Array.isArray(option)) {
|
|
378
|
+
display.warn("trackResourceHeaders should be true or an array of MatchHeader");
|
|
379
|
+
return [];
|
|
380
|
+
}
|
|
381
|
+
if (option.length === 0) {
|
|
382
|
+
display.warn("trackResourceHeaders is an empty array, no headers will be captured");
|
|
383
|
+
return [];
|
|
384
|
+
}
|
|
385
|
+
const result = [];
|
|
386
|
+
option.forEach((item, index) => {
|
|
387
|
+
if (!isIndexableObject(item)) {
|
|
388
|
+
display.warn(`trackResourceHeaders[${index}] should be a MatchHeader object`);
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
if (item.name !== void 0 && !isMatchOption(item.name)) {
|
|
392
|
+
display.warn(`trackResourceHeaders[${index}].name should be a MatchOption`);
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
if (item.url !== void 0 && !isMatchOption(item.url)) {
|
|
396
|
+
display.warn(`trackResourceHeaders[${index}].url should be a MatchOption`);
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
if (item.extractor !== void 0 && !(item.extractor instanceof RegExp)) {
|
|
400
|
+
display.warn(`trackResourceHeaders[${index}].extractor should be a RegExp`);
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
if (item.location !== void 0 && (typeof item.location !== "string" || !VALID_HEADER_LOCATIONS.includes(item.location))) {
|
|
404
|
+
display.warn(`trackResourceHeaders[${index}].location should be 'request', 'response', or 'any'`);
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
const { name, ...rest } = item;
|
|
408
|
+
result.push({
|
|
409
|
+
...rest,
|
|
410
|
+
...name !== void 0 ? { name: typeof name === "string" ? name.toLowerCase() : name } : {}
|
|
411
|
+
});
|
|
412
|
+
});
|
|
413
|
+
return result;
|
|
414
|
+
}
|
|
415
|
+
function hasGraphQlPayloadTracking(allowedGraphQlUrls) {
|
|
416
|
+
return isNonEmptyArray(allowedGraphQlUrls) && allowedGraphQlUrls.some((option) => isIndexableObject(option) && option.trackPayload);
|
|
417
|
+
}
|
|
418
|
+
function hasGraphQlResponseErrorsTracking(allowedGraphQlUrls) {
|
|
419
|
+
return isNonEmptyArray(allowedGraphQlUrls) && allowedGraphQlUrls.some((option) => isIndexableObject(option) && option.trackResponseErrors);
|
|
420
|
+
}
|
|
421
|
+
function getTrackResourceHeadersTelemetryValue(trackResourceHeaders) {
|
|
422
|
+
if (trackResourceHeaders === true) return "default_headers";
|
|
423
|
+
if (Array.isArray(trackResourceHeaders)) return "custom";
|
|
424
|
+
}
|
|
425
|
+
function serializeRumConfiguration(configuration, sdkName, remoteConfigurationMetadata) {
|
|
426
|
+
const baseSerializedConfiguration = serializeConfiguration(configuration);
|
|
427
|
+
return {
|
|
428
|
+
session_replay_sample_rate: configuration.sessionReplaySampleRate,
|
|
429
|
+
start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,
|
|
430
|
+
trace_sample_rate: configuration.traceSampleRate,
|
|
431
|
+
trace_context_injection: configuration.traceContextInjection,
|
|
432
|
+
propagate_trace_baggage: configuration.propagateTraceBaggage,
|
|
433
|
+
action_name_attribute: configuration.actionNameAttribute,
|
|
434
|
+
use_allowed_tracing_urls: isNonEmptyArray(configuration.allowedTracingUrls),
|
|
435
|
+
use_allowed_graph_ql_urls: isNonEmptyArray(configuration.allowedGraphQlUrls),
|
|
436
|
+
use_track_graph_ql_payload: hasGraphQlPayloadTracking(configuration.allowedGraphQlUrls),
|
|
437
|
+
use_track_graph_ql_response_errors: hasGraphQlResponseErrorsTracking(configuration.allowedGraphQlUrls),
|
|
438
|
+
selected_tracing_propagators: getSelectedTracingPropagators(configuration),
|
|
439
|
+
default_privacy_level: configuration.defaultPrivacyLevel,
|
|
440
|
+
enable_privacy_for_action_name: configuration.enablePrivacyForActionName,
|
|
441
|
+
use_excluded_activity_urls: isNonEmptyArray(configuration.excludedActivityUrls),
|
|
442
|
+
use_worker_url: !!configuration.workerUrl,
|
|
443
|
+
compress_intake_requests: configuration.compressIntakeRequests,
|
|
444
|
+
track_views_manually: configuration.trackViewsManually,
|
|
445
|
+
track_user_interactions: configuration.trackUserInteractions,
|
|
446
|
+
track_resources: configuration.trackResources,
|
|
447
|
+
track_long_task: configuration.trackLongTasks,
|
|
448
|
+
plugins: configuration.plugins?.map((plugin) => ({
|
|
449
|
+
name: plugin.name,
|
|
450
|
+
...plugin.getConfigurationTelemetry?.()
|
|
451
|
+
})),
|
|
452
|
+
track_feature_flags_for_events: configuration.trackFeatureFlagsForEvents,
|
|
453
|
+
remote_configuration_id: getRemoteConfigurationId(configuration),
|
|
454
|
+
remote_configuration: remoteConfigurationMetadata && {
|
|
455
|
+
last_modified: remoteConfigurationMetadata.lastModified,
|
|
456
|
+
last_synced: remoteConfigurationMetadata.lastSynced,
|
|
457
|
+
first_applied: remoteConfigurationMetadata.firstApplied,
|
|
458
|
+
sync_id: remoteConfigurationMetadata.syncId
|
|
459
|
+
},
|
|
460
|
+
profiling_sample_rate: configuration.profilingSampleRate,
|
|
461
|
+
use_remote_configuration_proxy: !!configuration.remoteConfigurationProxy,
|
|
462
|
+
enable_remote_sdk_configuration: !!configuration.enableRemoteSdkConfiguration,
|
|
463
|
+
use_session_replay_routes: !!configuration.sessionReplayRoutes && (isNonEmptyArray(configuration.sessionReplayRoutes.include) || isNonEmptyArray(configuration.sessionReplayRoutes.exclude)),
|
|
464
|
+
use_first_party_domains: isNonEmptyArray(configuration.firstPartyDomains),
|
|
465
|
+
track_resource_headers: getTrackResourceHeadersTelemetryValue(configuration.trackResourceHeaders),
|
|
466
|
+
beta_enable_view_updates: isViewUpdatesEnabled(configuration.betaEnableViewUpdates, configuration.proxy, sdkName),
|
|
467
|
+
beta_track_web_sockets: configuration.betaTrackWebSockets,
|
|
468
|
+
...baseSerializedConfiguration
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
//#endregion
|
|
472
|
+
export { CanvasRecordingQuality, DEFAULT_PROPAGATOR_TYPES, DEFAULT_TRACKED_RESOURCE_HEADERS, RUM_SCHEMA, serializeRumConfiguration, validateAndBuildRumConfiguration };
|
|
473
|
+
|
|
474
|
+
//# sourceMappingURL=configuration.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration.mjs","names":[],"sources":["../../../src/domain/configuration/configuration.ts"],"sourcesContent":["import type { InitConfiguration, RawTelemetryConfiguration } from '@kubesense/kubesense-browser-core'\nimport {\n canUseEventBridge,\n catchUserErrors,\n serializeConfiguration,\n DefaultPrivacyLevel,\n TraceContextInjection,\n display,\n isNumber,\n isNonEmptyArray,\n BROWSER_CORE_SCHEMA,\n} from '@kubesense/kubesense-browser-core'\nimport { isIndexableObject, isMatchOption } from '@kubesense/kubesense-js-core/util'\nimport { validateAndBuildConfiguration } from '@kubesense/kubesense-js-core/configuration'\nimport type { InferredConfig, MatchOption } from '@kubesense/kubesense-js-core/configuration'\nimport type { RumEventDomainContext } from '../../domainContext.types'\nimport type { RumEvent } from '../../rumEvent.types'\nimport type { SdkName } from '../contexts/defaultContext'\nimport type { RumPlugin } from '../plugins'\nimport type { PropagatorType, TracingOption } from '../tracing/tracer.types'\nimport { getRemoteConfigurationId } from './remoteConfiguration'\nimport type { RemoteConfigurationMetadata } from './remoteConfigurationCache'\nimport type { SessionReplayRoutes } from './sessionReplayRoutes'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_SETUP__: string\n\nexport const DEFAULT_PROPAGATOR_TYPES: PropagatorType[] = ['tracecontext', 'kubesense']\n\n/**\n * Default list of headers collected on resource events when {@link RumInitConfiguration.trackResourceHeaders | trackResourceHeaders}\n * is set to `true`.\n */\nexport const DEFAULT_TRACKED_RESOURCE_HEADERS = [\n 'cache-control',\n 'etag',\n 'age',\n 'expires',\n 'content-type',\n 'content-encoding',\n 'vary',\n 'content-length',\n 'server-timing',\n 'x-cache',\n 'cf-cache-status',\n 'x-vercel-cache',\n] as const\n\n/**\n * Init Configuration for the RUM browser SDK.\n *\n * @category Main\n * @example NPM\n * ```ts\n * import { kubesenseSdk } from '@kubesense/kubesense-browser-rum'\n *\n * kubesenseSdk.init({\n * applicationId: '<KUBESENSE_APPLICATION_ID>',\n * clientToken: '<KUBESENSE_CLIENT_TOKEN>',\n * kubesenseRumEndpoint: '<KUBESENSE_RUM_ENDPOINT>',\n * // ...\n * })\n * ```\n * @example CDN\n * ```ts\n * KUBESENSE_SDK.init({\n * applicationId: '<KUBESENSE_APPLICATION_ID>',\n * clientToken: '<KUBESENSE_CLIENT_TOKEN>',\n * kubesenseRumEndpoint: '<KUBESENSE_RUM_ENDPOINT>',\n * ...\n * })\n * ```\n */\nexport interface RumInitConfiguration extends InitConfiguration {\n // global options\n /**\n * The RUM application ID.\n *\n * @category Authentication\n */\n applicationId: string\n\n /**\n * The service name for your application. Follows the [tag syntax requirements](https://docs.kubesense.ai/getting_started/tagging/#define-tags).\n *\n * `allowedTracingUrls` still requires an explicitly configured service.\n *\n * @category Data Collection\n * @defaultValue the `applicationId`\n */\n service?: string | undefined | null\n\n /**\n * Whether to propagate user and account IDs in the baggage header of trace requests.\n *\n * @category Tracing\n * @defaultValue true\n */\n propagateTraceBaggage?: boolean | undefined\n\n /**\n * Access to every event collected by the RUM SDK before they are sent to KubeSense.\n * It allows:\n * - Enrich your RUM events with additional context attributes\n * - Modify your RUM events to modify their content, or redact sensitive sequences (see the list of editable properties)\n * - Discard selected RUM events\n *\n * See [Enrich And Control Browser RUM Data With beforeSend](https://docs.kubesense.ai/real_user_monitoring/guide/enrich-and-control-rum-data) for further information.\n *\n * @category Data Collection\n */\n beforeSend?: RumBeforeSend | undefined\n\n /**\n * A list of request origins ignored when computing the page activity.\n * See [How page activity is calculated](https://docs.kubesense.ai/real_user_monitoring/browser/monitoring_page_performance/#how-page-activity-is-calculated) for further information.\n */\n excludedActivityUrls?: MatchOption[] | undefined\n\n /**\n * URL pointing to the KubeSense Browser SDK Worker JavaScript file. The URL can be relative or absolute, but is required to have the same origin as the web application.\n * See [Content Security Policy guidelines](https://docs.kubesense.ai/integrations/content_security_policy_logs/?tab=firefox#use-csp-with-real-user-monitoring-and-session-replay) for further information.\n *\n * @category Transport\n */\n workerUrl?: string\n\n /**\n * Compress requests sent to the KubeSense intake to reduce bandwidth usage when sending large amounts of data. The compression is done in a Worker thread.\n * See [Content Security Policy guidelines](https://docs.kubesense.ai/integrations/content_security_policy_logs/?tab=firefox#use-csp-with-real-user-monitoring-and-session-replay) for further information.\n *\n * @category Transport\n */\n compressIntakeRequests?: boolean | undefined\n\n /**\n * [Internal option] Id of the remote configuration.\n * Prefer `remoteConfiguration.id` for the non-blocking cache-and-reload path.\n *\n * @internal\n */\n remoteConfigurationId?: string | undefined\n\n /**\n * [Internal option] Remote configuration descriptor. By default the SDK reads a cached\n * configuration synchronously and refreshes it in the background. Set `sync: true` to fall back\n * to the legacy blocking fetch. Set `required: true` to prevent the SDK from starting on the\n * current page load when the remote configuration cache is empty or unreadable (the background\n * fetch still runs to populate the cache for the next load). Ignored when `sync: true` is set\n * or when the legacy `remoteConfigurationId` field is used.\n *\n * @internal\n */\n remoteConfiguration?: { id: string; sync?: boolean; required?: boolean } | undefined\n\n /**\n * [Internal option] set a proxy URL for the remote configuration\n *\n * @internal\n */\n remoteConfigurationProxy?: string | undefined\n\n /**\n * Enable dashboard-managed SDK settings served by the KubeSense collector.\n *\n * The configuration document is fetched asynchronously after the SDK starts and cached in\n * local storage, so it never delays initialization. Cached settings are applied on the next\n * page load. Local `init()` values are used until a document has been fetched, and any\n * setting absent from the document keeps its local value.\n *\n * @category Data Collection\n * @defaultValue false\n */\n enableRemoteSdkConfiguration?: boolean | undefined\n\n /**\n * Restrict Session Replay recording to specific routes.\n *\n * Recording starts and stops as the user navigates: it runs only while the current route\n * matches `include` (when provided) and does not match `exclude`. Rules are matched against\n * the path (`pathname` + `search` + `hash`), and string entries match by prefix, so\n * `/checkout` also covers `/checkout/payment`.\n *\n * These rules only narrow recording — a session that was not sampled in by\n * `sessionReplaySampleRate` is never recorded, whatever the routes say.\n *\n * @category Session Replay\n * @example\n * ```ts\n * sessionReplayRoutes: { include: ['/checkout', '/signup'], exclude: ['/checkout/card'] }\n * ```\n */\n sessionReplayRoutes?: SessionReplayRoutes | undefined\n\n /**\n * A list of domains to treat as first-party in resource provider classification.\n * Accepts strings (exact hostname match), RegExp, or functions.\n * The current page hostname is always treated as first-party.\n *\n * @category Data Collection\n * @example ['api.myapp.com', /\\.myapp\\.com$/, (host) => host.endsWith('.internal')]\n */\n firstPartyDomains?: MatchOption[] | undefined\n\n // tracing options\n /**\n * A list of request URLs used to inject tracing headers.\n * See [Connect RUM and Traces](https://docs.kubesense.ai/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n *\n * @category Tracing\n */\n allowedTracingUrls?:\n Array<MatchOption | { match: MatchOption; propagatorTypes?: PropagatorType[] | null | undefined }> | undefined\n\n /**\n * The percentage of requests to trace: 100 for all, 0 for none.\n * See [Connect RUM and Traces](https://docs.kubesense.ai/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n *\n * @category Tracing\n * @defaultValue 100\n */\n traceSampleRate?: number | undefined\n /**\n * If you set a `traceSampleRate`, to ensure backend services' sampling decisions are still applied, configure the `traceContextInjection` initialization parameter to sampled.\n *\n * See [Connect RUM and Traces](https://docs.kubesense.ai/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n *\n * @category Tracing\n * @defaultValue sampled\n */\n traceContextInjection?: TraceContextInjection | undefined\n\n // replay options\n /**\n * Allow to protect end user privacy and prevent sensitive organizational information from being collected.\n *\n * See [Replay Privacy Options](https://docs.kubesense.ai/real_user_monitoring/session_replay/browser/privacy_options) for further information.\n *\n * @category Privacy\n * @defaultValue mask-user-input\n */\n defaultPrivacyLevel?: DefaultPrivacyLevel | undefined\n\n /**\n * If you are accessing KubeSense through a custom subdomain, you can set `subdomain` to include your custom domain in the `getSessionReplayLink()` returned URL .\n *\n * See [Connect Session Replay To Your Third-Party Tools](https://docs.kubesense.ai/real_user_monitoring/guide/connect-session-replay-to-your-third-party-tools) for further information.\n *\n * @category Session Replay\n */\n subdomain?: string\n\n /**\n * The percentage of tracked sessions with [Browser RUM & Session Replay pricing](https://rum.kubesense.ai/pricing/?product=real-user-monitoring--session-replay#real-user-monitoring--session-replay) features: 100 for all, 0 for none.\n *\n * See [Configure Your Setup For Browser RUM and Browser RUM & Session Replay Sampling](https://docs.kubesense.ai/real_user_monitoring/guide/sampling-browser-plans) for further information.\n *\n * @category Session Replay\n * @defaultValue 0\n */\n sessionReplaySampleRate?: number | undefined\n\n /**\n * If the session is sampled for Session Replay, only start the recording when `startSessionReplayRecording()` is called, instead of at the beginning of the session.\n *\n * See [Session Replay Usage](https://docs.kubesense.ai/real_user_monitoring/session_replay/browser/#usage) for further information.\n *\n * @category Session Replay\n * @defaultValue false\n */\n startSessionReplayRecordingManually?: boolean | undefined\n\n /**\n * Records `<canvas>` content (most chart libraries draw on one) in Session Replay as captured frames.\n * Canvas recording is disabled when this option is omitted.\n *\n * A canvas is captured only when its privacy level is `allow` — set with `data-kubesense-privacy=\"allow\"`\n * or the `kubesense-privacy-allow` class on it or an ancestor — and only when its content changed.\n * Frames are WebP images (PNG where the browser cannot encode WebP), uploaded next to the replay\n * segments and deduplicated by content.\n *\n * `quality` picks a preset; the other fields override single values of that preset.\n *\n * @category Session Replay\n */\n sessionReplayCanvasRecording?:\n | {\n /**\n * Enables recording canvas elements in Session Replay.\n */\n enable: boolean\n\n /**\n * Trades frame rate and image resolution for bandwidth. See {@link CanvasRecordingQuality}.\n *\n * @defaultValue 'medium'\n */\n quality?: CanvasRecordingQuality | undefined\n\n /**\n * Overrides the preset's maximum number of frames captured per second, between 0 and 8. `0`\n * stops capturing frames.\n */\n maxFramesPerSecond?: number | undefined\n\n /**\n * Overrides the preset's longest side of a captured frame, in pixels, between 1 and 1280. Larger\n * canvases are downscaled proportionally.\n */\n maxImageDimension?: number | undefined\n\n /**\n * Overrides the preset's size of the thumbnail compared to detect a changed canvas, in pixels,\n * between 1 and 100.\n */\n hashingMaxDimension?: number | undefined\n }\n | undefined\n\n /**\n * Enables privacy control for action names.\n *\n * @category Privacy\n * @defaultValue true\n */\n enablePrivacyForActionName?: boolean | undefined\n\n /**\n * Enables automatic collection of users actions.\n *\n * Add `data-dd-ignore-frustration` without a value, or set it to `all`, to ignore all frustration signals for an element and its descendants. To ignore specific signals, use a space-separated list of `rage-click`, `dead-click`, and `error-click`.\n *\n * See [Tracking User Actions](https://docs.kubesense.ai/real_user_monitoring/browser/tracking_user_actions) for further information.\n *\n * @category Data Collection\n * @defaultValue true\n */\n trackUserInteractions?: boolean | undefined\n\n /**\n * Specify your own attribute to use to name actions.\n *\n * See [Declare a name for click actions](https://docs.kubesense.ai/real_user_monitoring/browser/tracking_user_actions/#declare-a-name-for-click-actions) for further information.\n *\n * @category Data Collection\n */\n actionNameAttribute?: string | undefined\n\n // view options\n /**\n * Allows you to control RUM views creation. See [Override default RUM view names](https://docs.kubesense.ai/real_user_monitoring/browser/advanced_configuration/?tab=npm#override-default-rum-view-names) for further information.\n *\n * @category Data Collection\n */\n trackViewsManually?: boolean | undefined\n\n /**\n * Enables collection of resource events.\n *\n * @category Data Collection\n * @defaultValue true\n */\n trackResources?: boolean | undefined\n\n /**\n * Enables collection of request and response headers on resource events.\n *\n * - `true`: collect {@link DEFAULT_TRACKED_RESOURCE_HEADERS} for all URLs, both directions\n * - `MatchHeader[]`: each {@link MatchHeader} targets a header name, with optional URL scope\n * (`url`), value extraction (`extractor`), and `location`. When `name` is omitted, the matcher\n * applies to {@link DEFAULT_TRACKED_RESOURCE_HEADERS}. By default, both request and response\n * headers are captured; set `location` to `'request'` or `'response'` to restrict to one.\n *\n * Headers whose names match a built-in sensitive-data pattern are always dropped, regardless\n * of the configured matchers. The pattern blocks headers whose names contain: `token`, `cookie`,\n * `secret`, `authorization`, `api-key`, `secret-key`, `access-key`, `app-key`, `client-ip`,\n * `connecting-ip`, `real-ip`, or `forwarded`.\n *\n * @category Data Collection\n * @defaultValue false (disabled)\n * @example\n * // Collect default headers plus custom ones for all URLs\n * trackResourceHeaders: [{}, { name: 'x-request-id' }]\n * @example\n * // Collect default headers from responses only\n * trackResourceHeaders: [{ location: 'response' }]\n * @example\n * // URL-scoped rule: capture specific response headers only for calls to /api\n * trackResourceHeaders: [{ url: /\\/api\\//, name: 'cache-control', location: 'response' }]\n * @example\n * // Extract a partial value from a header\n * trackResourceHeaders: [{ url: /\\/api\\//, name: 'server-timing', extractor: /dur=(\\d+)/, location: 'response' }]\n */\n trackResourceHeaders?: boolean | MatchHeader[] | undefined\n\n /**\n * Enables collection of long task events.\n *\n * @category Data Collection\n * @defaultValue true\n */\n trackLongTasks?: boolean | undefined\n\n /**\n * List of plugins to enable. The plugins API is unstable and experimental, and may change without\n * notice. Please use only plugins provided by KubeSense matching the version of the SDK you are\n * using.\n */\n plugins?: RumPlugin[] | undefined\n\n /**\n * Enables collection of features flags in additional events (e.g. long task, resource, action, vital).\n *\n * @category Data Collection\n */\n trackFeatureFlagsForEvents?: FeatureFlagsForEvents[]\n\n /**\n * The percentage of users profiled. A value between 0 and 100.\n *\n * @category Profiling\n * @defaultValue 0\n */\n profilingSampleRate?: number | undefined\n\n /**\n * A list of GraphQL endpoint URLs to track and enrich with GraphQL-specific metadata.\n *\n * @category Data Collection\n */\n allowedGraphQlUrls?: Array<MatchOption | GraphQlUrlOption> | undefined\n\n /**\n * Enable partial view updates, which reduces bandwidth by sending only changed\n * fields instead of full view events on intermediate updates.\n *\n * Enabled by default when the SDK is loaded from the CDN and no `proxy` is configured.\n * Disabled by default otherwise, because a proxy may not forward the `view_update` event type.\n *\n * @category Beta\n */\n betaEnableViewUpdates?: boolean | undefined\n\n /**\n * Enables collection of WebSocket resource events.\n *\n * Warning: enabling this option introduces WebSocket resource events to the `beforeSend` hook.\n * Their domain context is WebSocket-specific and does not contain the XHR, Fetch, or performance\n * entry fields available on regular resource events. Narrow the context using the existing\n * `isManual` and `isWebSocket` discriminants before accessing those fields.\n *\n * @category Beta\n */\n betaTrackWebSockets?: boolean | undefined\n}\n\n/**\n * Recording quality presets for canvas capture. See {@link RumInitConfiguration.sessionReplayCanvasRecording}.\n *\n * | Preset | Frames per second | Longest side | WebP quality |\n * | -------- | ----------------- | ------------ | ------------ |\n * | `low` | 1 | 600 px | 0.3 |\n * | `medium` | 4 | 1000 px | 0.5 |\n * | `high` | 8 | 1280 px | 0.75 |\n *\n * @example\n * ```ts\n * kubesenseSdk.init({\n * // ...\n * sessionReplayCanvasRecording: {\n * enable: true,\n * quality: CanvasRecordingQuality.MEDIUM,\n * },\n * })\n * ```\n */\nexport const CanvasRecordingQuality = {\n LOW: 'low',\n MEDIUM: 'medium',\n HIGH: 'high',\n} as const\nexport type CanvasRecordingQuality = (typeof CanvasRecordingQuality)[keyof typeof CanvasRecordingQuality]\n\n/**\n * The resolved canvas recording tuning behind each {@link CanvasRecordingQuality} preset.\n */\nexport interface CanvasRecordingConfiguration {\n enable: true\n maxFramesPerSecond: number\n hashingMaxDimension: number\n maxImageDimension: number\n encodeQuality: number\n}\n\nconst CANVAS_RECORDING_QUALITY_PRESETS: Record<CanvasRecordingQuality, Omit<CanvasRecordingConfiguration, 'enable'>> = {\n [CanvasRecordingQuality.LOW]: {\n maxFramesPerSecond: 1,\n hashingMaxDimension: 50,\n maxImageDimension: 600,\n encodeQuality: 0.3,\n },\n [CanvasRecordingQuality.MEDIUM]: {\n maxFramesPerSecond: 4,\n hashingMaxDimension: 100,\n maxImageDimension: 1000,\n encodeQuality: 0.5,\n },\n [CanvasRecordingQuality.HIGH]: {\n maxFramesPerSecond: 8,\n hashingMaxDimension: 100,\n maxImageDimension: 1280,\n encodeQuality: 0.75,\n },\n}\n\n/**\n * Upstream gates canvas recording behind the `session_replay_record_canvas` experimental flag; in\n * this SDK it is a regular option. The preset's values can be overridden one by one, which is how the\n * dashboard's remote configuration tunes them.\n */\nfunction resolveCanvasRecordingConfiguration(\n configuration:\n | {\n enable: boolean\n quality: CanvasRecordingQuality\n maxFramesPerSecond?: number\n maxImageDimension?: number\n hashingMaxDimension?: number\n }\n | undefined\n): CanvasRecordingConfiguration | undefined {\n const preset = configuration && CANVAS_RECORDING_QUALITY_PRESETS[configuration.quality]\n if (!configuration?.enable || !preset) {\n return undefined\n }\n\n return {\n enable: true,\n ...preset,\n maxFramesPerSecond: configuration.maxFramesPerSecond ?? preset.maxFramesPerSecond,\n maxImageDimension: configuration.maxImageDimension ?? preset.maxImageDimension,\n hashingMaxDimension: configuration.hashingMaxDimension ?? preset.hashingMaxDimension,\n }\n}\n\nexport type FeatureFlagsForEvents = 'vital' | 'action' | 'long_task' | 'resource'\n\n/**\n * Function called before a RUM event is sent to KubeSense. See {@link RumInitConfiguration.beforeSend}\n *\n * @param event - The RUM event\n * @param context - The RUM event domain context providing access to native browser data based on the event type (e.g. error, performance entry).\n * @returns true if the event should be sent to KubeSense, false otherwise\n */\nexport type RumBeforeSend = (event: RumEvent, context: RumEventDomainContext) => boolean\n\nexport interface GraphQlUrlOption {\n match: MatchOption\n trackPayload?: boolean\n trackResponseErrors?: boolean\n}\n\nexport interface MatchHeader {\n url?: MatchOption\n name?: MatchOption\n extractor?: RegExp\n location?: 'request' | 'response' | 'any'\n}\n\nexport const RUM_SCHEMA = {\n ...BROWSER_CORE_SCHEMA,\n\n // Required\n applicationId: { type: 'string', required: true },\n\n // Optional strings\n actionNameAttribute: { type: 'string' },\n workerUrl: { type: 'string' },\n subdomain: { type: 'string' },\n\n // Sample rates\n sessionReplaySampleRate: { type: 'percentage', default: 0 },\n traceSampleRate: { type: 'percentage', default: 100 },\n profilingSampleRate: { type: 'percentage', default: 0 },\n\n // Booleans\n compressIntakeRequests: { type: 'boolean', default: false },\n trackUserInteractions: { type: 'boolean', default: true, strict: false },\n trackResources: { type: 'boolean', default: true, strict: false },\n trackLongTasks: { type: 'boolean', default: true, strict: false },\n trackViewsManually: { type: 'boolean', default: false, strict: false },\n betaEnableViewUpdates: { type: 'boolean' },\n betaTrackWebSockets: { type: 'boolean', default: false, strict: false },\n enablePrivacyForActionName: { type: 'boolean', default: true },\n propagateTraceBaggage: { type: 'boolean', default: true },\n startSessionReplayRecordingManually: { type: 'boolean', default: false, strict: false },\n enableRemoteSdkConfiguration: { type: 'boolean', default: false, strict: false },\n // KubeSense extensions\n firstPartyDomains: { type: 'match-option', multiple: true, default: [] as MatchOption[] },\n sessionReplayRoutes: {\n type: 'schema',\n strict: false,\n schema: {\n // Not strict: an unusable entry is dropped rather than failing the whole configuration, so a\n // typo in one route does not take Session Replay down entirely.\n include: { type: 'match-option', multiple: true, strict: false },\n exclude: { type: 'match-option', multiple: true, strict: false },\n },\n },\n\n sessionReplayCanvasRecording: {\n type: 'schema',\n schema: {\n enable: { type: 'boolean', required: true },\n quality: { type: 'enum', values: CanvasRecordingQuality, default: CanvasRecordingQuality.MEDIUM },\n maxFramesPerSecond: { type: 'number', min: 0, max: 8 },\n maxImageDimension: { type: 'number', min: 1, max: 1280 },\n hashingMaxDimension: { type: 'number', min: 1, max: 100 },\n },\n },\n\n // Enums\n defaultPrivacyLevel: {\n type: 'enum',\n values: DefaultPrivacyLevel,\n default: DefaultPrivacyLevel.MASK_USER_INPUT,\n strict: false,\n },\n traceContextInjection: {\n type: 'enum',\n values: TraceContextInjection,\n default: TraceContextInjection.SAMPLED,\n strict: false,\n },\n\n // Arrays\n excludedActivityUrls: { type: 'match-option', multiple: true, default: [] as MatchOption[] },\n allowedTracingUrls: {\n type: 'union',\n multiple: true,\n strict: false,\n default: [] as Array<MatchOption | { match: MatchOption; propagatorTypes: PropagatorType[] }>,\n variants: [\n { type: 'match-option' },\n {\n type: 'schema',\n schema: {\n match: { type: 'match-option', required: true },\n propagatorTypes: {\n type: 'enum',\n values: ['kubesense', 'b3', 'b3multi', 'tracecontext'] as const,\n multiple: true,\n strict: false,\n default: DEFAULT_PROPAGATOR_TYPES,\n },\n },\n },\n ],\n },\n plugins: {\n type: 'schema',\n multiple: true,\n strict: false,\n default: [] as RumPlugin[],\n schema: {\n name: { type: 'string', required: true },\n getConfigurationTelemetry: {\n type: 'function',\n strict: false,\n signature: undefined as RumPlugin['getConfigurationTelemetry'],\n },\n onInit: { type: 'function', strict: false, signature: undefined as RumPlugin['onInit'] },\n onRumStart: { type: 'function', strict: false, signature: undefined as RumPlugin['onRumStart'] },\n },\n },\n trackFeatureFlagsForEvents: {\n type: 'enum',\n values: ['vital', 'action', 'long_task', 'resource'] as const,\n multiple: true,\n strict: false,\n default: [] as FeatureFlagsForEvents[],\n },\n} as const\n\nexport type RumConfiguration = Omit<\n InferredConfig<typeof RUM_SCHEMA>,\n 'allowedTracingUrls' | 'sessionReplayCanvasRecording'\n> & {\n allowedTracingUrls: TracingOption[]\n betaEnableViewUpdates: boolean\n rulePsr: number | undefined\n trackResourceHeaders: MatchHeader[]\n allowedGraphQlUrls: GraphQlUrlOption[]\n remoteConfigurationId: string | undefined\n sessionReplayCanvasRecording: CanvasRecordingConfiguration | undefined\n}\n\n/**\n * Resolves whether partial view updates are enabled. Never enabled when the event bridge is used.\n * Otherwise an explicit `betaEnableViewUpdates` takes precedence, and it defaults to true for CDN\n * users that do not go through a proxy: a proxy may not forward the `view_update` event type yet,\n * and npm users pin an SDK version so they opt in explicitly.\n *\n * The CDN check is temporary, the next step is to default this to true unless `proxy` is set.\n * TODO next major: remove the option.\n */\nfunction isViewUpdatesEnabled(\n explicit: boolean | undefined,\n proxy: InitConfiguration['proxy'],\n sdkName: SdkName | undefined\n): boolean {\n if (canUseEventBridge()) {\n // The bridge replaces the batch transport, and `view_update` events are only created by the\n // batch dispatcher, so partial updates never happen in a WebView. Ignore the explicit value\n // too, otherwise telemetry reports updates that cannot be sent.\n return false\n }\n\n // The Salesforce bundle is a CDN build, but the supported install flow uploads it as a static\n // resource, so publishing a new bundle does not roll those deployments back. Keep them out of\n // the default, they can still opt in explicitly.\n return explicit ?? (__BUILD_ENV__SDK_SETUP__ === 'cdn' && !proxy && sdkName !== 'rum-salesforce')\n}\n\nexport function validateAndBuildRumConfiguration(\n initConfiguration: RumInitConfiguration,\n sdkName?: SdkName\n): RumConfiguration | undefined {\n const config = validateAndBuildConfiguration(\n initConfiguration as unknown as Record<string, unknown>,\n RUM_SCHEMA,\n display\n )\n\n if (!config) {\n return\n }\n\n const allowedTracingUrls = config.allowedTracingUrls.map(normalizeTracingOption).filter(Boolean) as TracingOption[]\n\n if (allowedTracingUrls.length > 0 && !config.service) {\n display.error('Service needs to be configured when tracing is enabled')\n return\n }\n\n const sessionReplayCanvasRecording = resolveCanvasRecordingConfiguration(config.sessionReplayCanvasRecording)\n\n return {\n ...config,\n service: config.service || config.applicationId,\n sessionReplayCanvasRecording,\n betaEnableViewUpdates: isViewUpdatesEnabled(config.betaEnableViewUpdates, config.proxy, sdkName),\n allowedTracingUrls,\n beforeSend: config.beforeSend\n ? (catchUserErrors(config.beforeSend, 'beforeSend threw an error:') as typeof config.beforeSend)\n : undefined,\n rulePsr: isNumber(initConfiguration.traceSampleRate) ? initConfiguration.traceSampleRate / 100 : undefined,\n trackResourceHeaders: validateAndBuildTrackResourceHeaders(initConfiguration),\n allowedGraphQlUrls: validateAndBuildGraphQlOptions(initConfiguration),\n remoteConfigurationId: getRemoteConfigurationId(initConfiguration),\n }\n}\n\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls\n */\nfunction getSelectedTracingPropagators(configuration: RumInitConfiguration): PropagatorType[] {\n const usedTracingPropagators = new Set<PropagatorType>()\n\n if (isNonEmptyArray(configuration.allowedTracingUrls)) {\n configuration.allowedTracingUrls.forEach((option) => {\n normalizeTracingOption(option)?.propagatorTypes.forEach((propagatorType) =>\n usedTracingPropagators.add(propagatorType)\n )\n })\n }\n\n return Array.from(usedTracingPropagators)\n}\n\nfunction normalizeTracingOption(option: unknown): TracingOption | undefined {\n if (isMatchOption(option)) {\n return { match: option, propagatorTypes: DEFAULT_PROPAGATOR_TYPES }\n }\n\n if (\n isIndexableObject(option) &&\n isMatchOption(option.match) &&\n (option.propagatorTypes === null || option.propagatorTypes === undefined || Array.isArray(option.propagatorTypes))\n ) {\n return {\n match: option.match,\n propagatorTypes: option.propagatorTypes || DEFAULT_PROPAGATOR_TYPES,\n }\n }\n}\n\n/**\n * Build GraphQL options from configuration\n */\nfunction validateAndBuildGraphQlOptions(initConfiguration: RumInitConfiguration): GraphQlUrlOption[] {\n if (!initConfiguration.allowedGraphQlUrls) {\n return []\n }\n\n if (!Array.isArray(initConfiguration.allowedGraphQlUrls)) {\n display.warn('allowedGraphQlUrls should be an array')\n return []\n }\n\n const graphQlOptions: GraphQlUrlOption[] = []\n\n initConfiguration.allowedGraphQlUrls.forEach((option) => {\n if (isMatchOption(option)) {\n graphQlOptions.push({ match: option, trackPayload: false, trackResponseErrors: false })\n } else if (isIndexableObject(option) && isMatchOption(option.match)) {\n graphQlOptions.push({\n match: option.match,\n trackPayload: !!option.trackPayload,\n trackResponseErrors: !!option.trackResponseErrors,\n })\n }\n })\n\n return graphQlOptions\n}\n\nconst VALID_HEADER_LOCATIONS = ['request', 'response', 'any']\n\nfunction validateAndBuildTrackResourceHeaders(initConfiguration: RumInitConfiguration): MatchHeader[] {\n const option = initConfiguration.trackResourceHeaders\n\n if (option === undefined || option === false) {\n return []\n }\n\n if (option === true) {\n return DEFAULT_TRACKED_RESOURCE_HEADERS.map((name) => ({ name }))\n }\n\n if (!Array.isArray(option)) {\n display.warn('trackResourceHeaders should be true or an array of MatchHeader')\n return []\n }\n\n if (option.length === 0) {\n display.warn('trackResourceHeaders is an empty array, no headers will be captured')\n return []\n }\n\n const result: MatchHeader[] = []\n\n option.forEach((item, index) => {\n if (!isIndexableObject(item)) {\n display.warn(`trackResourceHeaders[${index}] should be a MatchHeader object`)\n return\n }\n if (item.name !== undefined && !isMatchOption(item.name)) {\n display.warn(`trackResourceHeaders[${index}].name should be a MatchOption`)\n return\n }\n if (item.url !== undefined && !isMatchOption(item.url)) {\n display.warn(`trackResourceHeaders[${index}].url should be a MatchOption`)\n return\n }\n if (item.extractor !== undefined && !(item.extractor instanceof RegExp)) {\n display.warn(`trackResourceHeaders[${index}].extractor should be a RegExp`)\n return\n }\n if (\n item.location !== undefined &&\n (typeof item.location !== 'string' || !VALID_HEADER_LOCATIONS.includes(item.location))\n ) {\n display.warn(`trackResourceHeaders[${index}].location should be 'request', 'response', or 'any'`)\n return\n }\n\n const { name, ...rest } = item\n result.push({\n ...rest,\n ...(name !== undefined ? { name: typeof name === 'string' ? name.toLowerCase() : name } : {}),\n })\n })\n\n return result\n}\n\nfunction hasGraphQlPayloadTracking(allowedGraphQlUrls: RumInitConfiguration['allowedGraphQlUrls']): boolean {\n return (\n isNonEmptyArray(allowedGraphQlUrls) &&\n allowedGraphQlUrls.some((option) => isIndexableObject(option) && option.trackPayload)\n )\n}\n\nfunction hasGraphQlResponseErrorsTracking(allowedGraphQlUrls: RumInitConfiguration['allowedGraphQlUrls']): boolean {\n return (\n isNonEmptyArray(allowedGraphQlUrls) &&\n allowedGraphQlUrls.some((option) => isIndexableObject(option) && option.trackResponseErrors)\n )\n}\n\nfunction getTrackResourceHeadersTelemetryValue(\n trackResourceHeaders: RumInitConfiguration['trackResourceHeaders']\n): 'default_headers' | 'custom' | undefined {\n if (trackResourceHeaders === true) {\n return 'default_headers'\n }\n if (Array.isArray(trackResourceHeaders)) {\n return 'custom'\n }\n}\n\nexport function serializeRumConfiguration(\n configuration: RumInitConfiguration,\n sdkName?: SdkName,\n remoteConfigurationMetadata?: RemoteConfigurationMetadata\n) {\n const baseSerializedConfiguration = serializeConfiguration(configuration)\n\n // `use_` prefix is for telemetry options that track usage of a configuration option as a boolean to avoid capturing customer data\n return {\n session_replay_sample_rate: configuration.sessionReplaySampleRate,\n start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n trace_sample_rate: configuration.traceSampleRate,\n trace_context_injection: configuration.traceContextInjection,\n propagate_trace_baggage: configuration.propagateTraceBaggage,\n action_name_attribute: configuration.actionNameAttribute,\n use_allowed_tracing_urls: isNonEmptyArray(configuration.allowedTracingUrls),\n use_allowed_graph_ql_urls: isNonEmptyArray(configuration.allowedGraphQlUrls),\n use_track_graph_ql_payload: hasGraphQlPayloadTracking(configuration.allowedGraphQlUrls),\n use_track_graph_ql_response_errors: hasGraphQlResponseErrorsTracking(configuration.allowedGraphQlUrls),\n selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n default_privacy_level: configuration.defaultPrivacyLevel,\n enable_privacy_for_action_name: configuration.enablePrivacyForActionName,\n use_excluded_activity_urls: isNonEmptyArray(configuration.excludedActivityUrls),\n use_worker_url: !!configuration.workerUrl,\n compress_intake_requests: configuration.compressIntakeRequests,\n track_views_manually: configuration.trackViewsManually,\n track_user_interactions: configuration.trackUserInteractions,\n track_resources: configuration.trackResources,\n track_long_task: configuration.trackLongTasks,\n plugins: configuration.plugins?.map((plugin) => ({\n name: plugin.name,\n ...plugin.getConfigurationTelemetry?.(),\n })),\n track_feature_flags_for_events: configuration.trackFeatureFlagsForEvents,\n remote_configuration_id: getRemoteConfigurationId(configuration),\n remote_configuration: remoteConfigurationMetadata && {\n last_modified: remoteConfigurationMetadata.lastModified,\n last_synced: remoteConfigurationMetadata.lastSynced,\n first_applied: remoteConfigurationMetadata.firstApplied,\n sync_id: remoteConfigurationMetadata.syncId,\n },\n profiling_sample_rate: configuration.profilingSampleRate,\n use_remote_configuration_proxy: !!configuration.remoteConfigurationProxy,\n // KubeSense extensions: whether the dashboard-managed remote document is in play, whether\n // replay recording is route-scoped, and whether resource classification has an explicit\n // first-party list — all needed to interpret the reported values on the dashboard side.\n enable_remote_sdk_configuration: !!configuration.enableRemoteSdkConfiguration,\n use_session_replay_routes:\n !!configuration.sessionReplayRoutes &&\n (isNonEmptyArray(configuration.sessionReplayRoutes.include) ||\n isNonEmptyArray(configuration.sessionReplayRoutes.exclude)),\n use_first_party_domains: isNonEmptyArray(configuration.firstPartyDomains),\n track_resource_headers: getTrackResourceHeadersTelemetryValue(configuration.trackResourceHeaders),\n beta_enable_view_updates: isViewUpdatesEnabled(configuration.betaEnableViewUpdates, configuration.proxy, sdkName),\n beta_track_web_sockets: configuration.betaTrackWebSockets,\n ...baseSerializedConfiguration,\n } satisfies RawTelemetryConfiguration\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CACHE_KEY_PREFIX, CACHE_STATUS_TO_METRIC_MAP, buildCacheKey, createConfigurationCache } from "./remoteConfigurationCache.mjs";
|
|
2
|
+
import { applyRemoteConfiguration, buildEndpoint, fetchAndApplyRemoteConfiguration, fetchRemoteConfiguration, getRemoteConfiguration, getRemoteConfigurationId, initMetrics } from "./remoteConfiguration.mjs";
|
|
3
|
+
import { CanvasRecordingQuality, DEFAULT_PROPAGATOR_TYPES, DEFAULT_TRACKED_RESOURCE_HEADERS, RUM_SCHEMA, serializeRumConfiguration, validateAndBuildRumConfiguration } from "./configuration.mjs";
|
|
4
|
+
import { applyCachedSdkConfiguration, applySdkConfiguration, scheduleSdkConfigurationRefresh } from "./remoteSdkConfiguration.mjs";
|
|
5
|
+
import { getRoutePath, isRouteRecordable } from "./sessionReplayRoutes.mjs";
|
|
6
|
+
export { CACHE_KEY_PREFIX, CACHE_STATUS_TO_METRIC_MAP, CanvasRecordingQuality, DEFAULT_PROPAGATOR_TYPES, DEFAULT_TRACKED_RESOURCE_HEADERS, RUM_SCHEMA, applyCachedSdkConfiguration, applyRemoteConfiguration, applySdkConfiguration, buildCacheKey, buildEndpoint, createConfigurationCache, fetchAndApplyRemoteConfiguration, fetchRemoteConfiguration, getRemoteConfiguration, getRemoteConfigurationId, getRoutePath, initMetrics, isRouteRecordable, scheduleSdkConfigurationRefresh, serializeRumConfiguration, validateAndBuildRumConfiguration };
|