@cloudcare/browser-rum-slim 3.3.3
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 +21 -0
- package/README.md +15 -0
- package/bundle/dataflux-rum-slim.js +1 -0
- package/cjs/boot/buildEnv.js +11 -0
- package/cjs/boot/buildEnv.js.map +1 -0
- package/cjs/boot/perStartRum.js +227 -0
- package/cjs/boot/perStartRum.js.map +1 -0
- package/cjs/boot/rum.js +180 -0
- package/cjs/boot/rum.js.map +1 -0
- package/cjs/boot/rum.slim.entry.js +13 -0
- package/cjs/boot/rum.slim.entry.js.map +1 -0
- package/cjs/boot/rumEntryFactory.js +15 -0
- package/cjs/boot/rumEntryFactory.js.map +1 -0
- package/cjs/boot/rumPublicApi.js +285 -0
- package/cjs/boot/rumPublicApi.js.map +1 -0
- package/cjs/boot/rumRecorderApiStub.js +19 -0
- package/cjs/boot/rumRecorderApiStub.js.map +1 -0
- package/cjs/boot/rumSlimConfiguration.js +16 -0
- package/cjs/boot/rumSlimConfiguration.js.map +1 -0
- package/cjs/constants.js +41 -0
- package/cjs/constants.js.map +1 -0
- package/cjs/domain/assembly.js +172 -0
- package/cjs/domain/assembly.js.map +1 -0
- package/cjs/domain/configuration.js +272 -0
- package/cjs/domain/configuration.js.map +1 -0
- package/cjs/domain/contexts/commonContext.js +14 -0
- package/cjs/domain/contexts/commonContext.js.map +1 -0
- package/cjs/domain/contexts/displayContext.js +22 -0
- package/cjs/domain/contexts/displayContext.js.map +1 -0
- package/cjs/domain/contexts/foregroundContexts.js +111 -0
- package/cjs/domain/contexts/foregroundContexts.js.map +1 -0
- package/cjs/domain/contexts/internalContext.js +47 -0
- package/cjs/domain/contexts/internalContext.js.map +1 -0
- package/cjs/domain/contexts/pageStateHistory.js +111 -0
- package/cjs/domain/contexts/pageStateHistory.js.map +1 -0
- package/cjs/domain/contexts/urlContexts.js +73 -0
- package/cjs/domain/contexts/urlContexts.js.map +1 -0
- package/cjs/domain/contexts/viewContexts.js +51 -0
- package/cjs/domain/contexts/viewContexts.js.map +1 -0
- package/cjs/domain/domMutationObservable.js +69 -0
- package/cjs/domain/domMutationObservable.js.map +1 -0
- package/cjs/domain/encoderStreamId.js +11 -0
- package/cjs/domain/encoderStreamId.js.map +1 -0
- package/cjs/domain/firstInputPolyfill.js +83 -0
- package/cjs/domain/firstInputPolyfill.js.map +1 -0
- package/cjs/domain/initViewportObservable.js +44 -0
- package/cjs/domain/initViewportObservable.js.map +1 -0
- package/cjs/domain/locationChangeObservable.js +57 -0
- package/cjs/domain/locationChangeObservable.js.map +1 -0
- package/cjs/domain/performanceObservable.js +124 -0
- package/cjs/domain/performanceObservable.js.map +1 -0
- package/cjs/domain/performanceUtils.js +47 -0
- package/cjs/domain/performanceUtils.js.map +1 -0
- package/cjs/domain/requestCollection.js +127 -0
- package/cjs/domain/requestCollection.js.map +1 -0
- package/cjs/domain/rumEventsCollection/actions/actionCollection.js +89 -0
- package/cjs/domain/rumEventsCollection/actions/actionCollection.js.map +1 -0
- package/cjs/domain/rumEventsCollection/actions/clickChain.js +69 -0
- package/cjs/domain/rumEventsCollection/actions/clickChain.js.map +1 -0
- package/cjs/domain/rumEventsCollection/actions/computeFrustration.js +75 -0
- package/cjs/domain/rumEventsCollection/actions/computeFrustration.js.map +1 -0
- package/cjs/domain/rumEventsCollection/actions/getActionNameFromElement.js +232 -0
- package/cjs/domain/rumEventsCollection/actions/getActionNameFromElement.js.map +1 -0
- package/cjs/domain/rumEventsCollection/actions/getSelectorsFromElement.js +220 -0
- package/cjs/domain/rumEventsCollection/actions/getSelectorsFromElement.js.map +1 -0
- package/cjs/domain/rumEventsCollection/actions/interactionSelectorCache.js +28 -0
- package/cjs/domain/rumEventsCollection/actions/interactionSelectorCache.js.map +1 -0
- package/cjs/domain/rumEventsCollection/actions/listenActionEvents.js +73 -0
- package/cjs/domain/rumEventsCollection/actions/listenActionEvents.js.map +1 -0
- package/cjs/domain/rumEventsCollection/actions/trackClickActions.js +253 -0
- package/cjs/domain/rumEventsCollection/actions/trackClickActions.js.map +1 -0
- package/cjs/domain/rumEventsCollection/error/errorCollection.js +90 -0
- package/cjs/domain/rumEventsCollection/error/errorCollection.js.map +1 -0
- package/cjs/domain/rumEventsCollection/error/trackConsoleError.js +18 -0
- package/cjs/domain/rumEventsCollection/error/trackConsoleError.js.map +1 -0
- package/cjs/domain/rumEventsCollection/error/trackReportError.js +25 -0
- package/cjs/domain/rumEventsCollection/error/trackReportError.js.map +1 -0
- package/cjs/domain/rumEventsCollection/longTask/longAnimationFrameCollection.js +61 -0
- package/cjs/domain/rumEventsCollection/longTask/longAnimationFrameCollection.js.map +1 -0
- package/cjs/domain/rumEventsCollection/longTask/longTaskCollection.js +44 -0
- package/cjs/domain/rumEventsCollection/longTask/longTaskCollection.js.map +1 -0
- package/cjs/domain/rumEventsCollection/resource/matchRequestResourceEntry.js +74 -0
- package/cjs/domain/rumEventsCollection/resource/matchRequestResourceEntry.js.map +1 -0
- package/cjs/domain/rumEventsCollection/resource/resourceCollection.js +239 -0
- package/cjs/domain/rumEventsCollection/resource/resourceCollection.js.map +1 -0
- package/cjs/domain/rumEventsCollection/resource/resourceTrackerManager.js +237 -0
- package/cjs/domain/rumEventsCollection/resource/resourceTrackerManager.js.map +1 -0
- package/cjs/domain/rumEventsCollection/resource/resourceUtils.js +240 -0
- package/cjs/domain/rumEventsCollection/resource/resourceUtils.js.map +1 -0
- package/cjs/domain/rumEventsCollection/resource/retrieveInitialDocumentResourceTiming.js +25 -0
- package/cjs/domain/rumEventsCollection/resource/retrieveInitialDocumentResourceTiming.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/interactionCountPolyfill.js +54 -0
- package/cjs/domain/rumEventsCollection/view/interactionCountPolyfill.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackCommonViewMetrics.js +48 -0
- package/cjs/domain/rumEventsCollection/view/trackCommonViewMetrics.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackCumulativeLayoutShift.js +125 -0
- package/cjs/domain/rumEventsCollection/view/trackCumulativeLayoutShift.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackFirstContentfulPaint.js +27 -0
- package/cjs/domain/rumEventsCollection/view/trackFirstContentfulPaint.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackFirstHidden.js +55 -0
- package/cjs/domain/rumEventsCollection/view/trackFirstHidden.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackFirstInput.js +47 -0
- package/cjs/domain/rumEventsCollection/view/trackFirstInput.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackInitialViewTimings.js +51 -0
- package/cjs/domain/rumEventsCollection/view/trackInitialViewTimings.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackInteractionToNextPaint.js +162 -0
- package/cjs/domain/rumEventsCollection/view/trackInteractionToNextPaint.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackLargestContentfulPaint.js +61 -0
- package/cjs/domain/rumEventsCollection/view/trackLargestContentfulPaint.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackLoadingTime.js +51 -0
- package/cjs/domain/rumEventsCollection/view/trackLoadingTime.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackNavigationTimings.js +57 -0
- package/cjs/domain/rumEventsCollection/view/trackNavigationTimings.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackScrollMetrics.js +92 -0
- package/cjs/domain/rumEventsCollection/view/trackScrollMetrics.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackViewEventCounts.js +21 -0
- package/cjs/domain/rumEventsCollection/view/trackViewEventCounts.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/trackViews.js +269 -0
- package/cjs/domain/rumEventsCollection/view/trackViews.js.map +1 -0
- package/cjs/domain/rumEventsCollection/view/viewCollection.js +131 -0
- package/cjs/domain/rumEventsCollection/view/viewCollection.js.map +1 -0
- package/cjs/domain/rumSessionManager.js +187 -0
- package/cjs/domain/rumSessionManager.js.map +1 -0
- package/cjs/domain/tracing/ddtraceTracer.js +46 -0
- package/cjs/domain/tracing/ddtraceTracer.js.map +1 -0
- package/cjs/domain/tracing/getDocumentTraceId.js +80 -0
- package/cjs/domain/tracing/getDocumentTraceId.js.map +1 -0
- package/cjs/domain/tracing/jaegerTracer.js +48 -0
- package/cjs/domain/tracing/jaegerTracer.js.map +1 -0
- package/cjs/domain/tracing/sampler.js +69 -0
- package/cjs/domain/tracing/sampler.js.map +1 -0
- package/cjs/domain/tracing/skywalkingTracer.js +96 -0
- package/cjs/domain/tracing/skywalkingTracer.js.map +1 -0
- package/cjs/domain/tracing/traceIdentifier.js +66 -0
- package/cjs/domain/tracing/traceIdentifier.js.map +1 -0
- package/cjs/domain/tracing/tracer.js +133 -0
- package/cjs/domain/tracing/tracer.js.map +1 -0
- package/cjs/domain/tracing/w3cTraceParentTracer.js +74 -0
- package/cjs/domain/tracing/w3cTraceParentTracer.js.map +1 -0
- package/cjs/domain/tracing/zipkinMultiTracer.js +48 -0
- package/cjs/domain/tracing/zipkinMultiTracer.js.map +1 -0
- package/cjs/domain/tracing/zipkinSingleTracer.js +47 -0
- package/cjs/domain/tracing/zipkinSingleTracer.js.map +1 -0
- package/cjs/domain/trackEventCounts.js +55 -0
- package/cjs/domain/trackEventCounts.js.map +1 -0
- package/cjs/domain/usr/index.js +44 -0
- package/cjs/domain/usr/index.js.map +1 -0
- package/cjs/domain/waitPageActivityEnd.js +151 -0
- package/cjs/domain/waitPageActivityEnd.js.map +1 -0
- package/cjs/index.js +13 -0
- package/cjs/index.js.map +1 -0
- package/cjs/transport/startRumBatch.js +26 -0
- package/cjs/transport/startRumBatch.js.map +1 -0
- package/cjs/transport/startRumEventBridge.js +15 -0
- package/cjs/transport/startRumEventBridge.js.map +1 -0
- package/esm/boot/buildEnv.js +5 -0
- package/esm/boot/buildEnv.js.map +1 -0
- package/esm/boot/perStartRum.js +221 -0
- package/esm/boot/perStartRum.js.map +1 -0
- package/esm/boot/rum.js +173 -0
- package/esm/boot/rum.js.map +1 -0
- package/esm/boot/rum.slim.entry.js +7 -0
- package/esm/boot/rum.slim.entry.js.map +1 -0
- package/esm/boot/rumEntryFactory.js +9 -0
- package/esm/boot/rumEntryFactory.js.map +1 -0
- package/esm/boot/rumPublicApi.js +279 -0
- package/esm/boot/rumPublicApi.js.map +1 -0
- package/esm/boot/rumRecorderApiStub.js +13 -0
- package/esm/boot/rumRecorderApiStub.js.map +1 -0
- package/esm/boot/rumSlimConfiguration.js +10 -0
- package/esm/boot/rumSlimConfiguration.js.map +1 -0
- package/esm/constants.js +35 -0
- package/esm/constants.js.map +1 -0
- package/esm/domain/assembly.js +166 -0
- package/esm/domain/assembly.js.map +1 -0
- package/esm/domain/configuration.js +266 -0
- package/esm/domain/configuration.js.map +1 -0
- package/esm/domain/contexts/commonContext.js +8 -0
- package/esm/domain/contexts/commonContext.js.map +1 -0
- package/esm/domain/contexts/displayContext.js +16 -0
- package/esm/domain/contexts/displayContext.js.map +1 -0
- package/esm/domain/contexts/foregroundContexts.js +103 -0
- package/esm/domain/contexts/foregroundContexts.js.map +1 -0
- package/esm/domain/contexts/internalContext.js +41 -0
- package/esm/domain/contexts/internalContext.js.map +1 -0
- package/esm/domain/contexts/pageStateHistory.js +104 -0
- package/esm/domain/contexts/pageStateHistory.js.map +1 -0
- package/esm/domain/contexts/urlContexts.js +67 -0
- package/esm/domain/contexts/urlContexts.js.map +1 -0
- package/esm/domain/contexts/viewContexts.js +44 -0
- package/esm/domain/contexts/viewContexts.js.map +1 -0
- package/esm/domain/domMutationObservable.js +62 -0
- package/esm/domain/domMutationObservable.js.map +1 -0
- package/esm/domain/encoderStreamId.js +5 -0
- package/esm/domain/encoderStreamId.js.map +1 -0
- package/esm/domain/firstInputPolyfill.js +77 -0
- package/esm/domain/firstInputPolyfill.js.map +1 -0
- package/esm/domain/initViewportObservable.js +36 -0
- package/esm/domain/initViewportObservable.js.map +1 -0
- package/esm/domain/locationChangeObservable.js +51 -0
- package/esm/domain/locationChangeObservable.js.map +1 -0
- package/esm/domain/performanceObservable.js +116 -0
- package/esm/domain/performanceObservable.js.map +1 -0
- package/esm/domain/performanceUtils.js +40 -0
- package/esm/domain/performanceUtils.js.map +1 -0
- package/esm/domain/requestCollection.js +119 -0
- package/esm/domain/requestCollection.js.map +1 -0
- package/esm/domain/rumEventsCollection/actions/actionCollection.js +83 -0
- package/esm/domain/rumEventsCollection/actions/actionCollection.js.map +1 -0
- package/esm/domain/rumEventsCollection/actions/clickChain.js +62 -0
- package/esm/domain/rumEventsCollection/actions/clickChain.js.map +1 -0
- package/esm/domain/rumEventsCollection/actions/computeFrustration.js +67 -0
- package/esm/domain/rumEventsCollection/actions/computeFrustration.js.map +1 -0
- package/esm/domain/rumEventsCollection/actions/getActionNameFromElement.js +225 -0
- package/esm/domain/rumEventsCollection/actions/getActionNameFromElement.js.map +1 -0
- package/esm/domain/rumEventsCollection/actions/getSelectorsFromElement.js +212 -0
- package/esm/domain/rumEventsCollection/actions/getSelectorsFromElement.js.map +1 -0
- package/esm/domain/rumEventsCollection/actions/interactionSelectorCache.js +20 -0
- package/esm/domain/rumEventsCollection/actions/interactionSelectorCache.js.map +1 -0
- package/esm/domain/rumEventsCollection/actions/listenActionEvents.js +67 -0
- package/esm/domain/rumEventsCollection/actions/listenActionEvents.js.map +1 -0
- package/esm/domain/rumEventsCollection/actions/trackClickActions.js +244 -0
- package/esm/domain/rumEventsCollection/actions/trackClickActions.js.map +1 -0
- package/esm/domain/rumEventsCollection/error/errorCollection.js +83 -0
- package/esm/domain/rumEventsCollection/error/errorCollection.js.map +1 -0
- package/esm/domain/rumEventsCollection/error/trackConsoleError.js +12 -0
- package/esm/domain/rumEventsCollection/error/trackConsoleError.js.map +1 -0
- package/esm/domain/rumEventsCollection/error/trackReportError.js +19 -0
- package/esm/domain/rumEventsCollection/error/trackReportError.js.map +1 -0
- package/esm/domain/rumEventsCollection/longTask/longAnimationFrameCollection.js +55 -0
- package/esm/domain/rumEventsCollection/longTask/longAnimationFrameCollection.js.map +1 -0
- package/esm/domain/rumEventsCollection/longTask/longTaskCollection.js +38 -0
- package/esm/domain/rumEventsCollection/longTask/longTaskCollection.js.map +1 -0
- package/esm/domain/rumEventsCollection/resource/matchRequestResourceEntry.js +69 -0
- package/esm/domain/rumEventsCollection/resource/matchRequestResourceEntry.js.map +1 -0
- package/esm/domain/rumEventsCollection/resource/resourceCollection.js +233 -0
- package/esm/domain/rumEventsCollection/resource/resourceCollection.js.map +1 -0
- package/esm/domain/rumEventsCollection/resource/resourceTrackerManager.js +231 -0
- package/esm/domain/rumEventsCollection/resource/resourceTrackerManager.js.map +1 -0
- package/esm/domain/rumEventsCollection/resource/resourceUtils.js +218 -0
- package/esm/domain/rumEventsCollection/resource/resourceUtils.js.map +1 -0
- package/esm/domain/rumEventsCollection/resource/retrieveInitialDocumentResourceTiming.js +19 -0
- package/esm/domain/rumEventsCollection/resource/retrieveInitialDocumentResourceTiming.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/interactionCountPolyfill.js +47 -0
- package/esm/domain/rumEventsCollection/view/interactionCountPolyfill.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackCommonViewMetrics.js +42 -0
- package/esm/domain/rumEventsCollection/view/trackCommonViewMetrics.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackCumulativeLayoutShift.js +117 -0
- package/esm/domain/rumEventsCollection/view/trackCumulativeLayoutShift.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackFirstContentfulPaint.js +20 -0
- package/esm/domain/rumEventsCollection/view/trackFirstContentfulPaint.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackFirstHidden.js +49 -0
- package/esm/domain/rumEventsCollection/view/trackFirstHidden.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackFirstInput.js +41 -0
- package/esm/domain/rumEventsCollection/view/trackFirstInput.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackInitialViewTimings.js +44 -0
- package/esm/domain/rumEventsCollection/view/trackInitialViewTimings.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackInteractionToNextPaint.js +153 -0
- package/esm/domain/rumEventsCollection/view/trackInteractionToNextPaint.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackLargestContentfulPaint.js +54 -0
- package/esm/domain/rumEventsCollection/view/trackLargestContentfulPaint.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackLoadingTime.js +45 -0
- package/esm/domain/rumEventsCollection/view/trackLoadingTime.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackNavigationTimings.js +51 -0
- package/esm/domain/rumEventsCollection/view/trackNavigationTimings.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackScrollMetrics.js +84 -0
- package/esm/domain/rumEventsCollection/view/trackScrollMetrics.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackViewEventCounts.js +15 -0
- package/esm/domain/rumEventsCollection/view/trackViewEventCounts.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/trackViews.js +262 -0
- package/esm/domain/rumEventsCollection/view/trackViews.js.map +1 -0
- package/esm/domain/rumEventsCollection/view/viewCollection.js +125 -0
- package/esm/domain/rumEventsCollection/view/viewCollection.js.map +1 -0
- package/esm/domain/rumSessionManager.js +179 -0
- package/esm/domain/rumSessionManager.js.map +1 -0
- package/esm/domain/tracing/ddtraceTracer.js +40 -0
- package/esm/domain/tracing/ddtraceTracer.js.map +1 -0
- package/esm/domain/tracing/getDocumentTraceId.js +69 -0
- package/esm/domain/tracing/getDocumentTraceId.js.map +1 -0
- package/esm/domain/tracing/jaegerTracer.js +42 -0
- package/esm/domain/tracing/jaegerTracer.js.map +1 -0
- package/esm/domain/tracing/sampler.js +61 -0
- package/esm/domain/tracing/sampler.js.map +1 -0
- package/esm/domain/tracing/skywalkingTracer.js +90 -0
- package/esm/domain/tracing/skywalkingTracer.js.map +1 -0
- package/esm/domain/tracing/traceIdentifier.js +57 -0
- package/esm/domain/tracing/traceIdentifier.js.map +1 -0
- package/esm/domain/tracing/tracer.js +124 -0
- package/esm/domain/tracing/tracer.js.map +1 -0
- package/esm/domain/tracing/w3cTraceParentTracer.js +69 -0
- package/esm/domain/tracing/w3cTraceParentTracer.js.map +1 -0
- package/esm/domain/tracing/zipkinMultiTracer.js +42 -0
- package/esm/domain/tracing/zipkinMultiTracer.js.map +1 -0
- package/esm/domain/tracing/zipkinSingleTracer.js +41 -0
- package/esm/domain/tracing/zipkinSingleTracer.js.map +1 -0
- package/esm/domain/trackEventCounts.js +49 -0
- package/esm/domain/trackEventCounts.js.map +1 -0
- package/esm/domain/usr/index.js +38 -0
- package/esm/domain/usr/index.js.map +1 -0
- package/esm/domain/waitPageActivityEnd.js +142 -0
- package/esm/domain/waitPageActivityEnd.js.map +1 -0
- package/esm/index.js +3 -0
- package/esm/index.js.map +1 -0
- package/esm/transport/startRumBatch.js +20 -0
- package/esm/transport/startRumBatch.js.map +1 -0
- package/esm/transport/startRumEventBridge.js +9 -0
- package/esm/transport/startRumEventBridge.js.map +1 -0
- package/package.json +39 -0
- package/types/index.d.ts +134 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.trackFirstHidden = trackFirstHidden;
|
|
7
|
+
var _browserCore = require("@cloudcare/browser-core");
|
|
8
|
+
var _performanceObservable = require("../../../domain/performanceObservable.js");
|
|
9
|
+
function trackFirstHidden(viewStart, eventTarget) {
|
|
10
|
+
if (typeof eventTarget === 'undefined') {
|
|
11
|
+
eventTarget = window;
|
|
12
|
+
}
|
|
13
|
+
if (document.visibilityState === 'hidden' && !document.prerendering) {
|
|
14
|
+
return {
|
|
15
|
+
getTimeStamp: function getTimeStamp() {
|
|
16
|
+
return 0;
|
|
17
|
+
},
|
|
18
|
+
stop: _browserCore.noop
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if ((0, _performanceObservable.supportPerformanceTimingEvent)(_performanceObservable.RumPerformanceEntryType.VISIBILITY_STATE) && !document.prerendering) {
|
|
22
|
+
var firstHiddenEntry = performance.getEntriesByType(_performanceObservable.RumPerformanceEntryType.VISIBILITY_STATE).filter(function (entry) {
|
|
23
|
+
return entry.name === 'hidden';
|
|
24
|
+
}).find(function (entry) {
|
|
25
|
+
return entry.startTime >= viewStart.relative;
|
|
26
|
+
});
|
|
27
|
+
if (firstHiddenEntry) {
|
|
28
|
+
return {
|
|
29
|
+
getTimeStamp: function getTimeStamp() {
|
|
30
|
+
return firstHiddenEntry.startTime;
|
|
31
|
+
},
|
|
32
|
+
stop: _browserCore.noop
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
var timeStamp = Infinity;
|
|
37
|
+
var _addEventListeners = (0, _browserCore.addEventListeners)(eventTarget, [_browserCore.DOM_EVENT.PAGE_HIDE, _browserCore.DOM_EVENT.VISIBILITY_CHANGE, _browserCore.DOM_EVENT.PRERENDERING_CHANGE], function (event) {
|
|
38
|
+
if (event.type === _browserCore.DOM_EVENT.PAGE_HIDE || document.visibilityState === 'hidden') {
|
|
39
|
+
timeStamp = event.timeStamp;
|
|
40
|
+
_stop();
|
|
41
|
+
}
|
|
42
|
+
}, {
|
|
43
|
+
capture: true
|
|
44
|
+
}),
|
|
45
|
+
_stop = _addEventListeners.stop;
|
|
46
|
+
return {
|
|
47
|
+
getTimeStamp: function getTimeStamp() {
|
|
48
|
+
return timeStamp;
|
|
49
|
+
},
|
|
50
|
+
stop: function stop() {
|
|
51
|
+
_stop();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=trackFirstHidden.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackFirstHidden.js","names":["_browserCore","require","_performanceObservable","trackFirstHidden","viewStart","eventTarget","window","document","visibilityState","prerendering","getTimeStamp","stop","noop","supportPerformanceTimingEvent","RumPerformanceEntryType","VISIBILITY_STATE","firstHiddenEntry","performance","getEntriesByType","filter","entry","name","find","startTime","relative","timeStamp","Infinity","_addEventListeners","addEventListeners","DOM_EVENT","PAGE_HIDE","VISIBILITY_CHANGE","PRERENDERING_CHANGE","event","type","capture"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackFirstHidden.js"],"sourcesContent":["import { DOM_EVENT, addEventListeners, noop } from '@cloudcare/browser-core'\nimport {\n supportPerformanceTimingEvent,\n RumPerformanceEntryType\n} from '../../../domain/performanceObservable.js'\nexport function trackFirstHidden(viewStart, eventTarget) {\n if (typeof eventTarget === 'undefined') {\n eventTarget = window\n }\n if (document.visibilityState === 'hidden' && !document.prerendering) {\n return { getTimeStamp: () => 0, stop: noop }\n }\n if (\n supportPerformanceTimingEvent(RumPerformanceEntryType.VISIBILITY_STATE) &&\n !document.prerendering\n ) {\n const firstHiddenEntry = performance\n .getEntriesByType(RumPerformanceEntryType.VISIBILITY_STATE)\n .filter((entry) => entry.name === 'hidden')\n .find((entry) => entry.startTime >= viewStart.relative)\n if (firstHiddenEntry) {\n return { getTimeStamp: () => firstHiddenEntry.startTime, stop: noop }\n }\n }\n let timeStamp = Infinity\n\n const { stop } = addEventListeners(\n eventTarget,\n [\n DOM_EVENT.PAGE_HIDE,\n DOM_EVENT.VISIBILITY_CHANGE,\n DOM_EVENT.PRERENDERING_CHANGE\n ],\n (event) => {\n if (\n event.type === DOM_EVENT.PAGE_HIDE ||\n document.visibilityState === 'hidden'\n ) {\n timeStamp = event.timeStamp\n stop()\n }\n },\n { capture: true }\n )\n\n return {\n getTimeStamp: function () {\n return timeStamp\n },\n stop: function () {\n stop()\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AAIO,SAASE,gBAAgBA,CAACC,SAAS,EAAEC,WAAW,EAAE;EACvD,IAAI,OAAOA,WAAW,KAAK,WAAW,EAAE;IACtCA,WAAW,GAAGC,MAAM;EACtB;EACA,IAAIC,QAAQ,CAACC,eAAe,KAAK,QAAQ,IAAI,CAACD,QAAQ,CAACE,YAAY,EAAE;IACnE,OAAO;MAAEC,YAAY,EAAE,SAAdA,YAAYA,CAAA;QAAA,OAAQ,CAAC;MAAA;MAAEC,IAAI,EAAEC;IAAK,CAAC;EAC9C;EACA,IACE,IAAAC,oDAA6B,EAACC,8CAAuB,CAACC,gBAAgB,CAAC,IACvE,CAACR,QAAQ,CAACE,YAAY,EACtB;IACA,IAAMO,gBAAgB,GAAGC,WAAW,CACjCC,gBAAgB,CAACJ,8CAAuB,CAACC,gBAAgB,CAAC,CAC1DI,MAAM,CAAC,UAACC,KAAK;MAAA,OAAKA,KAAK,CAACC,IAAI,KAAK,QAAQ;IAAA,EAAC,CAC1CC,IAAI,CAAC,UAACF,KAAK;MAAA,OAAKA,KAAK,CAACG,SAAS,IAAInB,SAAS,CAACoB,QAAQ;IAAA,EAAC;IACzD,IAAIR,gBAAgB,EAAE;MACpB,OAAO;QAAEN,YAAY,EAAE,SAAdA,YAAYA,CAAA;UAAA,OAAQM,gBAAgB,CAACO,SAAS;QAAA;QAAEZ,IAAI,EAAEC;MAAK,CAAC;IACvE;EACF;EACA,IAAIa,SAAS,GAAGC,QAAQ;EAExB,IAAAC,kBAAA,GAAiB,IAAAC,8BAAiB,EAChCvB,WAAW,EACX,CACEwB,sBAAS,CAACC,SAAS,EACnBD,sBAAS,CAACE,iBAAiB,EAC3BF,sBAAS,CAACG,mBAAmB,CAC9B,EACD,UAACC,KAAK,EAAK;MACT,IACEA,KAAK,CAACC,IAAI,KAAKL,sBAAS,CAACC,SAAS,IAClCvB,QAAQ,CAACC,eAAe,KAAK,QAAQ,EACrC;QACAiB,SAAS,GAAGQ,KAAK,CAACR,SAAS;QAC3Bd,KAAI,CAAC,CAAC;MACR;IACF,CAAC,EACD;MAAEwB,OAAO,EAAE;IAAK,CAClB,CAAC;IAjBOxB,KAAI,GAAAgB,kBAAA,CAAJhB,IAAI;EAmBZ,OAAO;IACLD,YAAY,EAAE,SAAdA,YAAYA,CAAA,EAAc;MACxB,OAAOe,SAAS;IAClB,CAAC;IACDd,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChBA,KAAI,CAAC,CAAC;IACR;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.trackFirstInput = trackFirstInput;
|
|
7
|
+
var _browserCore = require("@cloudcare/browser-core");
|
|
8
|
+
var _getSelectorsFromElement = require("../actions/getSelectorsFromElement");
|
|
9
|
+
var _performanceObservable = require("../../performanceObservable");
|
|
10
|
+
/**
|
|
11
|
+
* Track the first input occurring during the initial View to return:
|
|
12
|
+
* - First Input Delay
|
|
13
|
+
* - First Input Time
|
|
14
|
+
* Callback is called at most one time.
|
|
15
|
+
* Documentation: https://web.dev/fid/
|
|
16
|
+
* Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts
|
|
17
|
+
*/
|
|
18
|
+
function trackFirstInput(configuration, firstHidden, callback) {
|
|
19
|
+
var performanceFirstInputSubscription = (0, _performanceObservable.createPerformanceObservable)(configuration, {
|
|
20
|
+
type: _performanceObservable.RumPerformanceEntryType.FIRST_INPUT,
|
|
21
|
+
buffered: true
|
|
22
|
+
}).subscribe(function (entries) {
|
|
23
|
+
var firstInputEntry = (0, _browserCore.find)(entries, function (entry) {
|
|
24
|
+
return entry.entryType === _performanceObservable.RumPerformanceEntryType.FIRST_INPUT && entry.startTime < firstHidden.getTimeStamp();
|
|
25
|
+
});
|
|
26
|
+
if (firstInputEntry) {
|
|
27
|
+
var firstInputDelay = (0, _browserCore.elapsed)(firstInputEntry.startTime, firstInputEntry.processingStart);
|
|
28
|
+
var firstInputTargetSelector;
|
|
29
|
+
if (firstInputEntry.target && (0, _browserCore.isElementNode)(firstInputEntry.target)) {
|
|
30
|
+
firstInputTargetSelector = (0, _getSelectorsFromElement.getSelectorFromElement)(firstInputEntry.target, configuration.actionNameAttribute);
|
|
31
|
+
}
|
|
32
|
+
callback({
|
|
33
|
+
// Ensure firstInputDelay to be positive, see
|
|
34
|
+
// https://bugs.chromium.org/p/chromium/issues/detail?id=1185815
|
|
35
|
+
delay: firstInputDelay >= 0 ? firstInputDelay : 0,
|
|
36
|
+
time: firstInputEntry.startTime,
|
|
37
|
+
targetSelector: firstInputTargetSelector
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return {
|
|
42
|
+
stop: function stop() {
|
|
43
|
+
performanceFirstInputSubscription.unsubscribe();
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=trackFirstInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackFirstInput.js","names":["_browserCore","require","_getSelectorsFromElement","_performanceObservable","trackFirstInput","configuration","firstHidden","callback","performanceFirstInputSubscription","createPerformanceObservable","type","RumPerformanceEntryType","FIRST_INPUT","buffered","subscribe","entries","firstInputEntry","find","entry","entryType","startTime","getTimeStamp","firstInputDelay","elapsed","processingStart","firstInputTargetSelector","target","isElementNode","getSelectorFromElement","actionNameAttribute","delay","time","targetSelector","stop","unsubscribe"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackFirstInput.js"],"sourcesContent":["import { elapsed, find, isElementNode } from '@cloudcare/browser-core'\nimport { getSelectorFromElement } from '../actions/getSelectorsFromElement'\nimport {\n RumPerformanceEntryType,\n createPerformanceObservable\n} from '../../performanceObservable'\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInput(configuration, firstHidden, callback) {\n const performanceFirstInputSubscription = createPerformanceObservable(\n configuration,\n {\n type: RumPerformanceEntryType.FIRST_INPUT,\n buffered: true\n }\n ).subscribe(function (entries) {\n var firstInputEntry = find(entries, function (entry) {\n return (\n entry.entryType === RumPerformanceEntryType.FIRST_INPUT &&\n entry.startTime < firstHidden.getTimeStamp()\n )\n })\n if (firstInputEntry) {\n var firstInputDelay = elapsed(\n firstInputEntry.startTime,\n firstInputEntry.processingStart\n )\n var firstInputTargetSelector\n if (firstInputEntry.target && isElementNode(firstInputEntry.target)) {\n firstInputTargetSelector = getSelectorFromElement(\n firstInputEntry.target,\n configuration.actionNameAttribute\n )\n }\n callback({\n // Ensure firstInputDelay to be positive, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n delay: firstInputDelay >= 0 ? firstInputDelay : 0,\n time: firstInputEntry.startTime,\n targetSelector: firstInputTargetSelector\n })\n }\n })\n return {\n stop: function () {\n performanceFirstInputSubscription.unsubscribe()\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,eAAeA,CAACC,aAAa,EAAEC,WAAW,EAAEC,QAAQ,EAAE;EACpE,IAAMC,iCAAiC,GAAG,IAAAC,kDAA2B,EACnEJ,aAAa,EACb;IACEK,IAAI,EAAEC,8CAAuB,CAACC,WAAW;IACzCC,QAAQ,EAAE;EACZ,CACF,CAAC,CAACC,SAAS,CAAC,UAAUC,OAAO,EAAE;IAC7B,IAAIC,eAAe,GAAG,IAAAC,iBAAI,EAACF,OAAO,EAAE,UAAUG,KAAK,EAAE;MACnD,OACEA,KAAK,CAACC,SAAS,KAAKR,8CAAuB,CAACC,WAAW,IACvDM,KAAK,CAACE,SAAS,GAAGd,WAAW,CAACe,YAAY,CAAC,CAAC;IAEhD,CAAC,CAAC;IACF,IAAIL,eAAe,EAAE;MACnB,IAAIM,eAAe,GAAG,IAAAC,oBAAO,EAC3BP,eAAe,CAACI,SAAS,EACzBJ,eAAe,CAACQ,eAClB,CAAC;MACD,IAAIC,wBAAwB;MAC5B,IAAIT,eAAe,CAACU,MAAM,IAAI,IAAAC,0BAAa,EAACX,eAAe,CAACU,MAAM,CAAC,EAAE;QACnED,wBAAwB,GAAG,IAAAG,+CAAsB,EAC/CZ,eAAe,CAACU,MAAM,EACtBrB,aAAa,CAACwB,mBAChB,CAAC;MACH;MACAtB,QAAQ,CAAC;QACP;QACA;QACAuB,KAAK,EAAER,eAAe,IAAI,CAAC,GAAGA,eAAe,GAAG,CAAC;QACjDS,IAAI,EAAEf,eAAe,CAACI,SAAS;QAC/BY,cAAc,EAAEP;MAClB,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;EACF,OAAO;IACLQ,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChBzB,iCAAiC,CAAC0B,WAAW,CAAC,CAAC;IACjD;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.KEEP_TRACKING_TIMINGS_AFTER_VIEW_DELAY = void 0;
|
|
7
|
+
exports.trackInitialViewMetrics = trackInitialViewMetrics;
|
|
8
|
+
var _browserCore = require("@cloudcare/browser-core");
|
|
9
|
+
var _trackFirstContentfulPaint2 = require("./trackFirstContentfulPaint");
|
|
10
|
+
var _trackFirstInput2 = require("./trackFirstInput");
|
|
11
|
+
var _trackNavigationTimings2 = require("./trackNavigationTimings");
|
|
12
|
+
var _trackLargestContentfulPaint2 = require("./trackLargestContentfulPaint");
|
|
13
|
+
var _trackFirstHidden = require("./trackFirstHidden");
|
|
14
|
+
var KEEP_TRACKING_TIMINGS_AFTER_VIEW_DELAY = exports.KEEP_TRACKING_TIMINGS_AFTER_VIEW_DELAY = 5 * _browserCore.ONE_MINUTE;
|
|
15
|
+
function trackInitialViewMetrics(configuration, viewStart, setLoadEvent, scheduleViewUpdate) {
|
|
16
|
+
var initialViewMetrics = {};
|
|
17
|
+
var _trackNavigationTimings = (0, _trackNavigationTimings2.trackNavigationTimings)(configuration, function (navigationTimings) {
|
|
18
|
+
setLoadEvent(navigationTimings.loadEvent);
|
|
19
|
+
initialViewMetrics.navigationTimings = navigationTimings;
|
|
20
|
+
scheduleViewUpdate();
|
|
21
|
+
});
|
|
22
|
+
var firstHidden = (0, _trackFirstHidden.trackFirstHidden)(viewStart);
|
|
23
|
+
var stopNavigationTracking = _trackNavigationTimings.stop;
|
|
24
|
+
var _trackFirstContentfulPaint = (0, _trackFirstContentfulPaint2.trackFirstContentfulPaint)(configuration, firstHidden, function (firstContentfulPaint) {
|
|
25
|
+
initialViewMetrics.firstContentfulPaint = firstContentfulPaint;
|
|
26
|
+
scheduleViewUpdate();
|
|
27
|
+
});
|
|
28
|
+
var stopFCPTracking = _trackFirstContentfulPaint.stop;
|
|
29
|
+
var _trackLargestContentfulPaint = (0, _trackLargestContentfulPaint2.trackLargestContentfulPaint)(configuration, firstHidden, window, function (largestContentfulPaint) {
|
|
30
|
+
initialViewMetrics.largestContentfulPaint = largestContentfulPaint;
|
|
31
|
+
scheduleViewUpdate();
|
|
32
|
+
});
|
|
33
|
+
var stopLCPTracking = _trackLargestContentfulPaint.stop;
|
|
34
|
+
var _trackFirstInput = (0, _trackFirstInput2.trackFirstInput)(configuration, firstHidden, function (firstInput) {
|
|
35
|
+
initialViewMetrics.firstInput = firstInput;
|
|
36
|
+
scheduleViewUpdate();
|
|
37
|
+
});
|
|
38
|
+
var stopFIDTracking = _trackFirstInput.stop;
|
|
39
|
+
function stop() {
|
|
40
|
+
stopNavigationTracking();
|
|
41
|
+
stopFCPTracking();
|
|
42
|
+
stopLCPTracking();
|
|
43
|
+
stopFIDTracking();
|
|
44
|
+
firstHidden.stop();
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
stop: stop,
|
|
48
|
+
initialViewMetrics: initialViewMetrics
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=trackInitialViewTimings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackInitialViewTimings.js","names":["_browserCore","require","_trackFirstContentfulPaint2","_trackFirstInput2","_trackNavigationTimings2","_trackLargestContentfulPaint2","_trackFirstHidden","KEEP_TRACKING_TIMINGS_AFTER_VIEW_DELAY","exports","ONE_MINUTE","trackInitialViewMetrics","configuration","viewStart","setLoadEvent","scheduleViewUpdate","initialViewMetrics","_trackNavigationTimings","trackNavigationTimings","navigationTimings","loadEvent","firstHidden","trackFirstHidden","stopNavigationTracking","stop","_trackFirstContentfulPaint","trackFirstContentfulPaint","firstContentfulPaint","stopFCPTracking","_trackLargestContentfulPaint","trackLargestContentfulPaint","window","largestContentfulPaint","stopLCPTracking","_trackFirstInput","trackFirstInput","firstInput","stopFIDTracking"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackInitialViewTimings.js"],"sourcesContent":["import { ONE_MINUTE } from '@cloudcare/browser-core'\nimport { trackFirstContentfulPaint } from './trackFirstContentfulPaint'\nimport { trackFirstInput } from './trackFirstInput'\nimport { trackNavigationTimings } from './trackNavigationTimings'\nimport { trackLargestContentfulPaint } from './trackLargestContentfulPaint'\nimport { trackFirstHidden } from './trackFirstHidden'\n\nexport var KEEP_TRACKING_TIMINGS_AFTER_VIEW_DELAY = 5 * ONE_MINUTE\nexport function trackInitialViewMetrics(\n configuration,\n viewStart,\n setLoadEvent,\n scheduleViewUpdate\n) {\n var initialViewMetrics = {}\n var _trackNavigationTimings = trackNavigationTimings(\n configuration,\n function (navigationTimings) {\n setLoadEvent(navigationTimings.loadEvent)\n initialViewMetrics.navigationTimings = navigationTimings\n scheduleViewUpdate()\n }\n )\n var firstHidden = trackFirstHidden(viewStart)\n var stopNavigationTracking = _trackNavigationTimings.stop\n var _trackFirstContentfulPaint = trackFirstContentfulPaint(\n configuration,\n firstHidden,\n function (firstContentfulPaint) {\n initialViewMetrics.firstContentfulPaint = firstContentfulPaint\n scheduleViewUpdate()\n }\n )\n var stopFCPTracking = _trackFirstContentfulPaint.stop\n var _trackLargestContentfulPaint = trackLargestContentfulPaint(\n configuration,\n firstHidden,\n window,\n function (largestContentfulPaint) {\n initialViewMetrics.largestContentfulPaint = largestContentfulPaint\n scheduleViewUpdate()\n }\n )\n var stopLCPTracking = _trackLargestContentfulPaint.stop\n var _trackFirstInput = trackFirstInput(\n configuration,\n firstHidden,\n function (firstInput) {\n initialViewMetrics.firstInput = firstInput\n scheduleViewUpdate()\n }\n )\n var stopFIDTracking = _trackFirstInput.stop\n function stop() {\n stopNavigationTracking()\n stopFCPTracking()\n stopLCPTracking()\n stopFIDTracking()\n firstHidden.stop()\n }\n\n return {\n stop: stop,\n initialViewMetrics: initialViewMetrics\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,wBAAA,GAAAH,OAAA;AACA,IAAAI,6BAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAL,OAAA;AAEO,IAAIM,sCAAsC,GAAAC,OAAA,CAAAD,sCAAA,GAAG,CAAC,GAAGE,uBAAU;AAC3D,SAASC,uBAAuBA,CACrCC,aAAa,EACbC,SAAS,EACTC,YAAY,EACZC,kBAAkB,EAClB;EACA,IAAIC,kBAAkB,GAAG,CAAC,CAAC;EAC3B,IAAIC,uBAAuB,GAAG,IAAAC,+CAAsB,EAClDN,aAAa,EACb,UAAUO,iBAAiB,EAAE;IAC3BL,YAAY,CAACK,iBAAiB,CAACC,SAAS,CAAC;IACzCJ,kBAAkB,CAACG,iBAAiB,GAAGA,iBAAiB;IACxDJ,kBAAkB,CAAC,CAAC;EACtB,CACF,CAAC;EACD,IAAIM,WAAW,GAAG,IAAAC,kCAAgB,EAACT,SAAS,CAAC;EAC7C,IAAIU,sBAAsB,GAAGN,uBAAuB,CAACO,IAAI;EACzD,IAAIC,0BAA0B,GAAG,IAAAC,qDAAyB,EACxDd,aAAa,EACbS,WAAW,EACX,UAAUM,oBAAoB,EAAE;IAC9BX,kBAAkB,CAACW,oBAAoB,GAAGA,oBAAoB;IAC9DZ,kBAAkB,CAAC,CAAC;EACtB,CACF,CAAC;EACD,IAAIa,eAAe,GAAGH,0BAA0B,CAACD,IAAI;EACrD,IAAIK,4BAA4B,GAAG,IAAAC,yDAA2B,EAC5DlB,aAAa,EACbS,WAAW,EACXU,MAAM,EACN,UAAUC,sBAAsB,EAAE;IAChChB,kBAAkB,CAACgB,sBAAsB,GAAGA,sBAAsB;IAClEjB,kBAAkB,CAAC,CAAC;EACtB,CACF,CAAC;EACD,IAAIkB,eAAe,GAAGJ,4BAA4B,CAACL,IAAI;EACvD,IAAIU,gBAAgB,GAAG,IAAAC,iCAAe,EACpCvB,aAAa,EACbS,WAAW,EACX,UAAUe,UAAU,EAAE;IACpBpB,kBAAkB,CAACoB,UAAU,GAAGA,UAAU;IAC1CrB,kBAAkB,CAAC,CAAC;EACtB,CACF,CAAC;EACD,IAAIsB,eAAe,GAAGH,gBAAgB,CAACV,IAAI;EAC3C,SAASA,IAAIA,CAAA,EAAG;IACdD,sBAAsB,CAAC,CAAC;IACxBK,eAAe,CAAC,CAAC;IACjBK,eAAe,CAAC,CAAC;IACjBI,eAAe,CAAC,CAAC;IACjBhB,WAAW,CAACG,IAAI,CAAC,CAAC;EACpB;EAEA,OAAO;IACLA,IAAI,EAAEA,IAAI;IACVR,kBAAkB,EAAEA;EACtB,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.MAX_INP_VALUE = void 0;
|
|
7
|
+
exports.isInteractionToNextPaintSupported = isInteractionToNextPaintSupported;
|
|
8
|
+
exports.trackInteractionToNextPaint = trackInteractionToNextPaint;
|
|
9
|
+
exports.trackViewInteractionCount = trackViewInteractionCount;
|
|
10
|
+
var _browserCore = require("@cloudcare/browser-core");
|
|
11
|
+
var _getSelectorsFromElement = require("../actions/getSelectorsFromElement");
|
|
12
|
+
var _interactionCountPolyfill = require("./interactionCountPolyfill");
|
|
13
|
+
var _performanceObservable = require("../../performanceObservable");
|
|
14
|
+
var _interactionSelectorCache = require("../actions/interactionSelectorCache");
|
|
15
|
+
// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.
|
|
16
|
+
var MAX_INTERACTION_ENTRIES = 10;
|
|
17
|
+
var MAX_INP_VALUE = exports.MAX_INP_VALUE = 1 * _browserCore.ONE_MINUTE;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Track the interaction to next paint (INP).
|
|
21
|
+
* To avoid outliers, return the p98 worst interaction of the view.
|
|
22
|
+
* Documentation: https://web.dev/inp/
|
|
23
|
+
* Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts
|
|
24
|
+
*/
|
|
25
|
+
function trackInteractionToNextPaint(configuration, viewStart, viewLoadingType) {
|
|
26
|
+
if (!isInteractionToNextPaintSupported()) {
|
|
27
|
+
return {
|
|
28
|
+
getInteractionToNextPaint: function getInteractionToNextPaint() {
|
|
29
|
+
return undefined;
|
|
30
|
+
},
|
|
31
|
+
setViewEnd: _browserCore.noop,
|
|
32
|
+
stop: _browserCore.noop
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
var _trackViewInteractionCount = trackViewInteractionCount(viewLoadingType);
|
|
36
|
+
var getViewInteractionCount = _trackViewInteractionCount.getViewInteractionCount;
|
|
37
|
+
var stopViewInteractionCount = _trackViewInteractionCount.stopViewInteractionCount;
|
|
38
|
+
var viewEnd = Infinity;
|
|
39
|
+
var longestInteractions = trackLongestInteractions(getViewInteractionCount);
|
|
40
|
+
var interactionToNextPaint = -1;
|
|
41
|
+
var interactionToNextPaintTargetSelector;
|
|
42
|
+
var interactionToNextPaintStartTime;
|
|
43
|
+
function handleEntries(entries) {
|
|
44
|
+
for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
|
|
45
|
+
var entry = entries_1[_i];
|
|
46
|
+
if (entry.interactionId && entry.startTime >= viewStart && entry.startTime <= viewEnd) {
|
|
47
|
+
longestInteractions.process(entry);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
var newInteraction = longestInteractions.estimateP98Interaction();
|
|
51
|
+
if (newInteraction && newInteraction.duration !== interactionToNextPaint) {
|
|
52
|
+
interactionToNextPaint = newInteraction.duration;
|
|
53
|
+
interactionToNextPaintStartTime = (0, _browserCore.elapsed)(viewStart, newInteraction.startTime);
|
|
54
|
+
interactionToNextPaintTargetSelector = (0, _interactionSelectorCache.getInteractionSelector)(newInteraction.startTime);
|
|
55
|
+
if (!interactionToNextPaintTargetSelector && newInteraction.target && (0, _browserCore.isElementNode)(newInteraction.target)) {
|
|
56
|
+
interactionToNextPaintTargetSelector = (0, _getSelectorsFromElement.getSelectorFromElement)(newInteraction.target, configuration.actionNameAttribute);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
var firstInputSubscription = (0, _performanceObservable.createPerformanceObservable)(configuration, {
|
|
61
|
+
type: _performanceObservable.RumPerformanceEntryType.FIRST_INPUT,
|
|
62
|
+
buffered: true
|
|
63
|
+
}).subscribe(handleEntries);
|
|
64
|
+
var eventSubscription = (0, _performanceObservable.createPerformanceObservable)(configuration, {
|
|
65
|
+
type: _performanceObservable.RumPerformanceEntryType.EVENT,
|
|
66
|
+
// durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)
|
|
67
|
+
// cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L202-L210
|
|
68
|
+
durationThreshold: 40,
|
|
69
|
+
buffered: true
|
|
70
|
+
}).subscribe(handleEntries);
|
|
71
|
+
return {
|
|
72
|
+
getInteractionToNextPaint: function getInteractionToNextPaint() {
|
|
73
|
+
// If no INP duration where captured because of the performanceObserver 40ms threshold
|
|
74
|
+
// but the view interaction count > 0 then report 0
|
|
75
|
+
if (interactionToNextPaint >= 0) {
|
|
76
|
+
return {
|
|
77
|
+
value: Math.min(interactionToNextPaint, MAX_INP_VALUE),
|
|
78
|
+
targetSelector: interactionToNextPaintTargetSelector,
|
|
79
|
+
time: interactionToNextPaintStartTime
|
|
80
|
+
};
|
|
81
|
+
} else if (getViewInteractionCount()) {
|
|
82
|
+
return {
|
|
83
|
+
value: 0
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
setViewEnd: function setViewEnd(viewEndTime) {
|
|
88
|
+
viewEnd = viewEndTime;
|
|
89
|
+
stopViewInteractionCount();
|
|
90
|
+
},
|
|
91
|
+
stop: function stop() {
|
|
92
|
+
eventSubscription.unsubscribe();
|
|
93
|
+
firstInputSubscription.unsubscribe();
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function trackLongestInteractions(getViewInteractionCount) {
|
|
98
|
+
var longestInteractions = [];
|
|
99
|
+
function sortAndTrimLongestInteractions() {
|
|
100
|
+
longestInteractions.sort(function (a, b) {
|
|
101
|
+
return b.duration - a.duration;
|
|
102
|
+
}).splice(MAX_INTERACTION_ENTRIES);
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
/**
|
|
106
|
+
* Process the performance entry:
|
|
107
|
+
* - if its duration is long enough, add the performance entry to the list of worst interactions
|
|
108
|
+
* - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions
|
|
109
|
+
*/
|
|
110
|
+
process: function process(entry) {
|
|
111
|
+
var interactionIndex = longestInteractions.findIndex(function (interaction) {
|
|
112
|
+
return entry.interactionId === interaction.interactionId;
|
|
113
|
+
});
|
|
114
|
+
var minLongestInteraction = longestInteractions[longestInteractions.length - 1];
|
|
115
|
+
if (interactionIndex !== -1) {
|
|
116
|
+
if (entry.duration > longestInteractions[interactionIndex].duration) {
|
|
117
|
+
longestInteractions[interactionIndex] = entry;
|
|
118
|
+
sortAndTrimLongestInteractions();
|
|
119
|
+
}
|
|
120
|
+
} else if (longestInteractions.length < MAX_INTERACTION_ENTRIES || entry.duration > minLongestInteraction.duration) {
|
|
121
|
+
longestInteractions.push(entry);
|
|
122
|
+
sortAndTrimLongestInteractions();
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
/**
|
|
126
|
+
* Compute the p98 longest interaction.
|
|
127
|
+
* For better performance the computation is based on 10 longest interactions and the interaction count of the current view.
|
|
128
|
+
*/
|
|
129
|
+
estimateP98Interaction: function estimateP98Interaction() {
|
|
130
|
+
var interactionIndex = Math.min(longestInteractions.length - 1, Math.floor(getViewInteractionCount() / 50));
|
|
131
|
+
return longestInteractions[interactionIndex];
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function trackViewInteractionCount(viewLoadingType) {
|
|
136
|
+
(0, _interactionCountPolyfill.initInteractionCountPolyfill)();
|
|
137
|
+
var previousInteractionCount = viewLoadingType === _browserCore.ViewLoadingType.INITIAL_LOAD ? 0 : (0, _interactionCountPolyfill.getInteractionCount)();
|
|
138
|
+
var state = {
|
|
139
|
+
stopped: false
|
|
140
|
+
};
|
|
141
|
+
function computeViewInteractionCount() {
|
|
142
|
+
return (0, _interactionCountPolyfill.getInteractionCount)() - previousInteractionCount;
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
getViewInteractionCount: function getViewInteractionCount() {
|
|
146
|
+
if (state.stopped) {
|
|
147
|
+
return state.interactionCount;
|
|
148
|
+
}
|
|
149
|
+
return computeViewInteractionCount();
|
|
150
|
+
},
|
|
151
|
+
stopViewInteractionCount: function stopViewInteractionCount() {
|
|
152
|
+
state = {
|
|
153
|
+
stopped: true,
|
|
154
|
+
interactionCount: computeViewInteractionCount()
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function isInteractionToNextPaintSupported() {
|
|
160
|
+
return (0, _performanceObservable.supportPerformanceTimingEvent)('event') && window.PerformanceEventTiming && 'interactionId' in PerformanceEventTiming.prototype;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=trackInteractionToNextPaint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackInteractionToNextPaint.js","names":["_browserCore","require","_getSelectorsFromElement","_interactionCountPolyfill","_performanceObservable","_interactionSelectorCache","MAX_INTERACTION_ENTRIES","MAX_INP_VALUE","exports","ONE_MINUTE","trackInteractionToNextPaint","configuration","viewStart","viewLoadingType","isInteractionToNextPaintSupported","getInteractionToNextPaint","undefined","setViewEnd","noop","stop","_trackViewInteractionCount","trackViewInteractionCount","getViewInteractionCount","stopViewInteractionCount","viewEnd","Infinity","longestInteractions","trackLongestInteractions","interactionToNextPaint","interactionToNextPaintTargetSelector","interactionToNextPaintStartTime","handleEntries","entries","_i","entries_1","length","entry","interactionId","startTime","process","newInteraction","estimateP98Interaction","duration","elapsed","getInteractionSelector","target","isElementNode","getSelectorFromElement","actionNameAttribute","firstInputSubscription","createPerformanceObservable","type","RumPerformanceEntryType","FIRST_INPUT","buffered","subscribe","eventSubscription","EVENT","durationThreshold","value","Math","min","targetSelector","time","viewEndTime","unsubscribe","sortAndTrimLongestInteractions","sort","a","b","splice","interactionIndex","findIndex","interaction","minLongestInteraction","push","floor","initInteractionCountPolyfill","previousInteractionCount","ViewLoadingType","INITIAL_LOAD","getInteractionCount","state","stopped","computeViewInteractionCount","interactionCount","supportPerformanceTimingEvent","window","PerformanceEventTiming","prototype"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackInteractionToNextPaint.js"],"sourcesContent":["import {\n noop,\n ViewLoadingType,\n ONE_MINUTE,\n elapsed,\n isElementNode\n} from '@cloudcare/browser-core'\nimport { getSelectorFromElement } from '../actions/getSelectorsFromElement'\nimport {\n getInteractionCount,\n initInteractionCountPolyfill\n} from './interactionCountPolyfill'\nimport {\n RumPerformanceEntryType,\n supportPerformanceTimingEvent,\n createPerformanceObservable\n} from '../../performanceObservable'\nimport { getInteractionSelector } from '../actions/interactionSelectorCache'\n// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.\nvar MAX_INTERACTION_ENTRIES = 10\n\nexport var MAX_INP_VALUE = 1 * ONE_MINUTE\n\n/**\n * Track the interaction to next paint (INP).\n * To avoid outliers, return the p98 worst interaction of the view.\n * Documentation: https://web.dev/inp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts\n */\nexport function trackInteractionToNextPaint(\n configuration,\n viewStart,\n viewLoadingType\n) {\n if (!isInteractionToNextPaintSupported()) {\n return {\n getInteractionToNextPaint: function () {\n return undefined\n },\n setViewEnd: noop,\n stop: noop\n }\n }\n\n var _trackViewInteractionCount = trackViewInteractionCount(viewLoadingType)\n var getViewInteractionCount =\n _trackViewInteractionCount.getViewInteractionCount\n var stopViewInteractionCount =\n _trackViewInteractionCount.stopViewInteractionCount\n\n let viewEnd = Infinity\n var longestInteractions = trackLongestInteractions(getViewInteractionCount)\n var interactionToNextPaint = -1\n var interactionToNextPaintTargetSelector\n var interactionToNextPaintStartTime\n function handleEntries(entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i]\n if (\n entry.interactionId &&\n entry.startTime >= viewStart &&\n entry.startTime <= viewEnd\n ) {\n longestInteractions.process(entry)\n }\n }\n\n var newInteraction = longestInteractions.estimateP98Interaction()\n if (newInteraction && newInteraction.duration !== interactionToNextPaint) {\n interactionToNextPaint = newInteraction.duration\n interactionToNextPaintStartTime = elapsed(\n viewStart,\n newInteraction.startTime\n )\n interactionToNextPaintTargetSelector = getInteractionSelector(\n newInteraction.startTime\n )\n if (\n !interactionToNextPaintTargetSelector &&\n newInteraction.target &&\n isElementNode(newInteraction.target)\n ) {\n interactionToNextPaintTargetSelector = getSelectorFromElement(\n newInteraction.target,\n configuration.actionNameAttribute\n )\n }\n }\n }\n var firstInputSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.FIRST_INPUT,\n buffered: true\n }).subscribe(handleEntries)\n\n var eventSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.EVENT,\n // durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)\n // cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L202-L210\n durationThreshold: 40,\n buffered: true\n }).subscribe(handleEntries)\n\n return {\n getInteractionToNextPaint: function () {\n // If no INP duration where captured because of the performanceObserver 40ms threshold\n // but the view interaction count > 0 then report 0\n if (interactionToNextPaint >= 0) {\n return {\n value: Math.min(interactionToNextPaint, MAX_INP_VALUE),\n targetSelector: interactionToNextPaintTargetSelector,\n time: interactionToNextPaintStartTime\n }\n } else if (getViewInteractionCount()) {\n return {\n value: 0\n }\n }\n },\n setViewEnd: function (viewEndTime) {\n viewEnd = viewEndTime\n stopViewInteractionCount()\n },\n stop: function () {\n eventSubscription.unsubscribe()\n firstInputSubscription.unsubscribe()\n }\n }\n}\n\nfunction trackLongestInteractions(getViewInteractionCount) {\n var longestInteractions = []\n\n function sortAndTrimLongestInteractions() {\n longestInteractions\n .sort(function (a, b) {\n return b.duration - a.duration\n })\n .splice(MAX_INTERACTION_ENTRIES)\n }\n\n return {\n /**\n * Process the performance entry:\n * - if its duration is long enough, add the performance entry to the list of worst interactions\n * - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions\n */\n process: function (entry) {\n var interactionIndex = longestInteractions.findIndex(function (\n interaction\n ) {\n return entry.interactionId === interaction.interactionId\n })\n\n var minLongestInteraction =\n longestInteractions[longestInteractions.length - 1]\n\n if (interactionIndex !== -1) {\n if (entry.duration > longestInteractions[interactionIndex].duration) {\n longestInteractions[interactionIndex] = entry\n sortAndTrimLongestInteractions()\n }\n } else if (\n longestInteractions.length < MAX_INTERACTION_ENTRIES ||\n entry.duration > minLongestInteraction.duration\n ) {\n longestInteractions.push(entry)\n sortAndTrimLongestInteractions()\n }\n },\n /**\n * Compute the p98 longest interaction.\n * For better performance the computation is based on 10 longest interactions and the interaction count of the current view.\n */\n estimateP98Interaction: function () {\n var interactionIndex = Math.min(\n longestInteractions.length - 1,\n Math.floor(getViewInteractionCount() / 50)\n )\n return longestInteractions[interactionIndex]\n }\n }\n}\n\nexport function trackViewInteractionCount(viewLoadingType) {\n initInteractionCountPolyfill()\n var previousInteractionCount =\n viewLoadingType === ViewLoadingType.INITIAL_LOAD ? 0 : getInteractionCount()\n var state = { stopped: false }\n\n function computeViewInteractionCount() {\n return getInteractionCount() - previousInteractionCount\n }\n return {\n getViewInteractionCount: function () {\n if (state.stopped) {\n return state.interactionCount\n }\n return computeViewInteractionCount()\n },\n stopViewInteractionCount: function () {\n state = {\n stopped: true,\n interactionCount: computeViewInteractionCount()\n }\n }\n }\n}\n\nexport function isInteractionToNextPaintSupported() {\n return (\n supportPerformanceTimingEvent('event') &&\n window.PerformanceEventTiming &&\n 'interactionId' in PerformanceEventTiming.prototype\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LCP_MAXIMUM_DELAY = void 0;
|
|
7
|
+
exports.trackLargestContentfulPaint = trackLargestContentfulPaint;
|
|
8
|
+
var _browserCore = require("@cloudcare/browser-core");
|
|
9
|
+
var _getSelectorsFromElement = require("../actions/getSelectorsFromElement");
|
|
10
|
+
var _performanceObservable = require("../../performanceObservable");
|
|
11
|
+
/**
|
|
12
|
+
* Track the largest contentful paint (LCP) occurring during the initial View. This can yield
|
|
13
|
+
* multiple values, only the most recent one should be used.
|
|
14
|
+
* Documentation: https://web.dev/lcp/
|
|
15
|
+
* Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts
|
|
16
|
+
*/
|
|
17
|
+
// It happens in some cases like sleep mode or some browser implementations
|
|
18
|
+
var LCP_MAXIMUM_DELAY = exports.LCP_MAXIMUM_DELAY = 10 * _browserCore.ONE_MINUTE;
|
|
19
|
+
function trackLargestContentfulPaint(configuration, firstHidden, eventTarget, callback) {
|
|
20
|
+
// Ignore entries that come after the first user interaction. According to the documentation, the
|
|
21
|
+
// browser should not send largest-contentful-paint entries after a user interact with the page,
|
|
22
|
+
// but the web-vitals reference implementation uses this as a safeguard.
|
|
23
|
+
var firstInteractionTimestamp = Infinity;
|
|
24
|
+
var _addEventListeners = (0, _browserCore.addEventListeners)(eventTarget, [_browserCore.DOM_EVENT.POINTER_DOWN, _browserCore.DOM_EVENT.KEY_DOWN], function (event) {
|
|
25
|
+
firstInteractionTimestamp = event.timeStamp;
|
|
26
|
+
}, {
|
|
27
|
+
capture: true,
|
|
28
|
+
once: true
|
|
29
|
+
});
|
|
30
|
+
var stopEventListener = _addEventListeners.stop;
|
|
31
|
+
var biggestLcpSize = 0;
|
|
32
|
+
var performanceLcpSubscription = (0, _performanceObservable.createPerformanceObservable)(configuration, {
|
|
33
|
+
type: _performanceObservable.RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT,
|
|
34
|
+
buffered: true
|
|
35
|
+
}).subscribe(function (entries) {
|
|
36
|
+
var lcpEntry = (0, _browserCore.findLast)(entries, function (entry) {
|
|
37
|
+
return entry.entryType === _performanceObservable.RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT && entry.startTime < firstInteractionTimestamp && entry.startTime < firstHidden.getTimeStamp() && entry.startTime < LCP_MAXIMUM_DELAY &&
|
|
38
|
+
// Ensure to get the LCP entry with the biggest size, see
|
|
39
|
+
// https://bugs.chromium.org/p/chromium/issues/detail?id=1516655
|
|
40
|
+
entry.size > biggestLcpSize;
|
|
41
|
+
});
|
|
42
|
+
if (lcpEntry) {
|
|
43
|
+
var lcpTargetSelector;
|
|
44
|
+
if (lcpEntry.element) {
|
|
45
|
+
lcpTargetSelector = (0, _getSelectorsFromElement.getSelectorFromElement)(lcpEntry.element, configuration.actionNameAttribute);
|
|
46
|
+
}
|
|
47
|
+
callback({
|
|
48
|
+
value: lcpEntry.startTime,
|
|
49
|
+
targetSelector: lcpTargetSelector
|
|
50
|
+
});
|
|
51
|
+
biggestLcpSize = lcpEntry.size;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
return {
|
|
55
|
+
stop: function stop() {
|
|
56
|
+
stopEventListener();
|
|
57
|
+
performanceLcpSubscription.unsubscribe();
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=trackLargestContentfulPaint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackLargestContentfulPaint.js","names":["_browserCore","require","_getSelectorsFromElement","_performanceObservable","LCP_MAXIMUM_DELAY","exports","ONE_MINUTE","trackLargestContentfulPaint","configuration","firstHidden","eventTarget","callback","firstInteractionTimestamp","Infinity","_addEventListeners","addEventListeners","DOM_EVENT","POINTER_DOWN","KEY_DOWN","event","timeStamp","capture","once","stopEventListener","stop","biggestLcpSize","performanceLcpSubscription","createPerformanceObservable","type","RumPerformanceEntryType","LARGEST_CONTENTFUL_PAINT","buffered","subscribe","entries","lcpEntry","findLast","entry","entryType","startTime","getTimeStamp","size","lcpTargetSelector","element","getSelectorFromElement","actionNameAttribute","value","targetSelector","unsubscribe"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackLargestContentfulPaint.js"],"sourcesContent":["import {\n addEventListeners,\n DOM_EVENT,\n findLast,\n LifeCycleEventType,\n ONE_MINUTE\n} from '@cloudcare/browser-core'\nimport { getSelectorFromElement } from '../actions/getSelectorsFromElement'\nimport {\n RumPerformanceEntryType,\n createPerformanceObservable\n} from '../../performanceObservable'\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View. This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts\n */\n// It happens in some cases like sleep mode or some browser implementations\nexport var LCP_MAXIMUM_DELAY = 10 * ONE_MINUTE\nexport function trackLargestContentfulPaint(\n configuration,\n firstHidden,\n eventTarget,\n callback\n) {\n // Ignore entries that come after the first user interaction. According to the documentation, the\n // browser should not send largest-contentful-paint entries after a user interact with the page,\n // but the web-vitals reference implementation uses this as a safeguard.\n var firstInteractionTimestamp = Infinity\n var _addEventListeners = addEventListeners(\n eventTarget,\n [DOM_EVENT.POINTER_DOWN, DOM_EVENT.KEY_DOWN],\n function (event) {\n firstInteractionTimestamp = event.timeStamp\n },\n { capture: true, once: true }\n )\n var stopEventListener = _addEventListeners.stop\n var biggestLcpSize = 0\n var performanceLcpSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT,\n buffered: true\n }).subscribe(function (entries) {\n var lcpEntry = findLast(entries, function (entry) {\n return (\n entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT &&\n entry.startTime < firstInteractionTimestamp &&\n entry.startTime < firstHidden.getTimeStamp() &&\n entry.startTime < LCP_MAXIMUM_DELAY &&\n // Ensure to get the LCP entry with the biggest size, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1516655\n entry.size > biggestLcpSize\n )\n })\n if (lcpEntry) {\n var lcpTargetSelector\n if (lcpEntry.element) {\n lcpTargetSelector = getSelectorFromElement(\n lcpEntry.element,\n configuration.actionNameAttribute\n )\n }\n callback({\n value: lcpEntry.startTime,\n targetSelector: lcpTargetSelector\n })\n biggestLcpSize = lcpEntry.size\n }\n })\n\n return {\n stop: function () {\n stopEventListener()\n performanceLcpSubscription.unsubscribe()\n }\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAOA,IAAAC,wBAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAIG,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,EAAE,GAAGE,uBAAU;AACvC,SAASC,2BAA2BA,CACzCC,aAAa,EACbC,WAAW,EACXC,WAAW,EACXC,QAAQ,EACR;EACA;EACA;EACA;EACA,IAAIC,yBAAyB,GAAGC,QAAQ;EACxC,IAAIC,kBAAkB,GAAG,IAAAC,8BAAiB,EACxCL,WAAW,EACX,CAACM,sBAAS,CAACC,YAAY,EAAED,sBAAS,CAACE,QAAQ,CAAC,EAC5C,UAAUC,KAAK,EAAE;IACfP,yBAAyB,GAAGO,KAAK,CAACC,SAAS;EAC7C,CAAC,EACD;IAAEC,OAAO,EAAE,IAAI;IAAEC,IAAI,EAAE;EAAK,CAC9B,CAAC;EACD,IAAIC,iBAAiB,GAAGT,kBAAkB,CAACU,IAAI;EAC/C,IAAIC,cAAc,GAAG,CAAC;EACtB,IAAIC,0BAA0B,GAAG,IAAAC,kDAA2B,EAACnB,aAAa,EAAE;IAC1EoB,IAAI,EAAEC,8CAAuB,CAACC,wBAAwB;IACtDC,QAAQ,EAAE;EACZ,CAAC,CAAC,CAACC,SAAS,CAAC,UAAUC,OAAO,EAAE;IAC9B,IAAIC,QAAQ,GAAG,IAAAC,qBAAQ,EAACF,OAAO,EAAE,UAAUG,KAAK,EAAE;MAChD,OACEA,KAAK,CAACC,SAAS,KAAKR,8CAAuB,CAACC,wBAAwB,IACpEM,KAAK,CAACE,SAAS,GAAG1B,yBAAyB,IAC3CwB,KAAK,CAACE,SAAS,GAAG7B,WAAW,CAAC8B,YAAY,CAAC,CAAC,IAC5CH,KAAK,CAACE,SAAS,GAAGlC,iBAAiB;MACnC;MACA;MACAgC,KAAK,CAACI,IAAI,GAAGf,cAAc;IAE/B,CAAC,CAAC;IACF,IAAIS,QAAQ,EAAE;MACZ,IAAIO,iBAAiB;MACrB,IAAIP,QAAQ,CAACQ,OAAO,EAAE;QACpBD,iBAAiB,GAAG,IAAAE,+CAAsB,EACxCT,QAAQ,CAACQ,OAAO,EAChBlC,aAAa,CAACoC,mBAChB,CAAC;MACH;MACAjC,QAAQ,CAAC;QACPkC,KAAK,EAAEX,QAAQ,CAACI,SAAS;QACzBQ,cAAc,EAAEL;MAClB,CAAC,CAAC;MACFhB,cAAc,GAAGS,QAAQ,CAACM,IAAI;IAChC;EACF,CAAC,CAAC;EAEF,OAAO;IACLhB,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChBD,iBAAiB,CAAC,CAAC;MACnBG,0BAA0B,CAACqB,WAAW,CAAC,CAAC;IAC1C;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.trackLoadingTime = trackLoadingTime;
|
|
7
|
+
var _browserCore = require("@cloudcare/browser-core");
|
|
8
|
+
var _waitPageActivityEnd2 = require("../../waitPageActivityEnd");
|
|
9
|
+
var _trackFirstHidden = require("./trackFirstHidden");
|
|
10
|
+
function trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadType, viewStart, callback) {
|
|
11
|
+
var isWaitingForLoadEvent = loadType === _browserCore.ViewLoadingType.INITIAL_LOAD;
|
|
12
|
+
var isWaitingForActivityLoadingTime = true;
|
|
13
|
+
var loadingTimeCandidates = [];
|
|
14
|
+
var firstHidden = (0, _trackFirstHidden.trackFirstHidden)(viewStart);
|
|
15
|
+
function invokeCallbackIfAllCandidatesAreReceived() {
|
|
16
|
+
if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {
|
|
17
|
+
var loadingTime = Math.max.apply(Math, loadingTimeCandidates);
|
|
18
|
+
if (loadingTime < firstHidden.getTimeStamp() - viewStart.relative) {
|
|
19
|
+
callback(loadingTime);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
var _waitPageActivityEnd = (0, _waitPageActivityEnd2.waitPageActivityEnd)(lifeCycle, domMutationObservable, configuration, function (event) {
|
|
24
|
+
if (isWaitingForActivityLoadingTime) {
|
|
25
|
+
isWaitingForActivityLoadingTime = false;
|
|
26
|
+
if (event.hadActivity) {
|
|
27
|
+
loadingTimeCandidates.push((0, _browserCore.elapsed)(viewStart.timeStamp, event.end));
|
|
28
|
+
}
|
|
29
|
+
invokeCallbackIfAllCandidatesAreReceived();
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
var _stop = _waitPageActivityEnd.stop;
|
|
33
|
+
return {
|
|
34
|
+
setLoadEvent: function setLoadEvent(loadEvent) {
|
|
35
|
+
if (isWaitingForLoadEvent) {
|
|
36
|
+
isWaitingForLoadEvent = false;
|
|
37
|
+
loadingTimeCandidates.push(loadEvent);
|
|
38
|
+
invokeCallbackIfAllCandidatesAreReceived();
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
stop: function stop() {
|
|
42
|
+
_stop();
|
|
43
|
+
firstHidden.stop();
|
|
44
|
+
if (isWaitingForActivityLoadingTime) {
|
|
45
|
+
isWaitingForActivityLoadingTime = false;
|
|
46
|
+
invokeCallbackIfAllCandidatesAreReceived();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=trackLoadingTime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackLoadingTime.js","names":["_browserCore","require","_waitPageActivityEnd2","_trackFirstHidden","trackLoadingTime","lifeCycle","domMutationObservable","configuration","loadType","viewStart","callback","isWaitingForLoadEvent","ViewLoadingType","INITIAL_LOAD","isWaitingForActivityLoadingTime","loadingTimeCandidates","firstHidden","trackFirstHidden","invokeCallbackIfAllCandidatesAreReceived","length","loadingTime","Math","max","apply","getTimeStamp","relative","_waitPageActivityEnd","waitPageActivityEnd","event","hadActivity","push","elapsed","timeStamp","end","stop","setLoadEvent","loadEvent"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackLoadingTime.js"],"sourcesContent":["import { elapsed, ViewLoadingType } from '@cloudcare/browser-core'\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd'\nimport { trackFirstHidden } from './trackFirstHidden'\nexport function trackLoadingTime(\n lifeCycle,\n domMutationObservable,\n configuration,\n loadType,\n viewStart,\n callback\n) {\n var isWaitingForLoadEvent = loadType === ViewLoadingType.INITIAL_LOAD\n var isWaitingForActivityLoadingTime = true\n var loadingTimeCandidates = []\n var firstHidden = trackFirstHidden(viewStart)\n function invokeCallbackIfAllCandidatesAreReceived() {\n if (\n !isWaitingForActivityLoadingTime &&\n !isWaitingForLoadEvent &&\n loadingTimeCandidates.length > 0\n ) {\n var loadingTime = Math.max.apply(Math, loadingTimeCandidates)\n if (loadingTime < firstHidden.getTimeStamp() - viewStart.relative) {\n callback(loadingTime)\n }\n }\n }\n\n var _waitPageActivityEnd = waitPageActivityEnd(\n lifeCycle,\n domMutationObservable,\n configuration,\n function (event) {\n if (isWaitingForActivityLoadingTime) {\n isWaitingForActivityLoadingTime = false\n if (event.hadActivity) {\n loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end))\n }\n invokeCallbackIfAllCandidatesAreReceived()\n }\n }\n )\n\n var stop = _waitPageActivityEnd.stop\n return {\n setLoadEvent: function (loadEvent) {\n if (isWaitingForLoadEvent) {\n isWaitingForLoadEvent = false\n loadingTimeCandidates.push(loadEvent)\n invokeCallbackIfAllCandidatesAreReceived()\n }\n },\n stop: function () {\n stop()\n firstHidden.stop()\n if (isWaitingForActivityLoadingTime) {\n isWaitingForActivityLoadingTime = false\n invokeCallbackIfAllCandidatesAreReceived()\n }\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AACO,SAASG,gBAAgBA,CAC9BC,SAAS,EACTC,qBAAqB,EACrBC,aAAa,EACbC,QAAQ,EACRC,SAAS,EACTC,QAAQ,EACR;EACA,IAAIC,qBAAqB,GAAGH,QAAQ,KAAKI,4BAAe,CAACC,YAAY;EACrE,IAAIC,+BAA+B,GAAG,IAAI;EAC1C,IAAIC,qBAAqB,GAAG,EAAE;EAC9B,IAAIC,WAAW,GAAG,IAAAC,kCAAgB,EAACR,SAAS,CAAC;EAC7C,SAASS,wCAAwCA,CAAA,EAAG;IAClD,IACE,CAACJ,+BAA+B,IAChC,CAACH,qBAAqB,IACtBI,qBAAqB,CAACI,MAAM,GAAG,CAAC,EAChC;MACA,IAAIC,WAAW,GAAGC,IAAI,CAACC,GAAG,CAACC,KAAK,CAACF,IAAI,EAAEN,qBAAqB,CAAC;MAC7D,IAAIK,WAAW,GAAGJ,WAAW,CAACQ,YAAY,CAAC,CAAC,GAAGf,SAAS,CAACgB,QAAQ,EAAE;QACjEf,QAAQ,CAACU,WAAW,CAAC;MACvB;IACF;EACF;EAEA,IAAIM,oBAAoB,GAAG,IAAAC,yCAAmB,EAC5CtB,SAAS,EACTC,qBAAqB,EACrBC,aAAa,EACb,UAAUqB,KAAK,EAAE;IACf,IAAId,+BAA+B,EAAE;MACnCA,+BAA+B,GAAG,KAAK;MACvC,IAAIc,KAAK,CAACC,WAAW,EAAE;QACrBd,qBAAqB,CAACe,IAAI,CAAC,IAAAC,oBAAO,EAACtB,SAAS,CAACuB,SAAS,EAAEJ,KAAK,CAACK,GAAG,CAAC,CAAC;MACrE;MACAf,wCAAwC,CAAC,CAAC;IAC5C;EACF,CACF,CAAC;EAED,IAAIgB,KAAI,GAAGR,oBAAoB,CAACQ,IAAI;EACpC,OAAO;IACLC,YAAY,EAAE,SAAdA,YAAYA,CAAYC,SAAS,EAAE;MACjC,IAAIzB,qBAAqB,EAAE;QACzBA,qBAAqB,GAAG,KAAK;QAC7BI,qBAAqB,CAACe,IAAI,CAACM,SAAS,CAAC;QACrClB,wCAAwC,CAAC,CAAC;MAC5C;IACF,CAAC;IACDgB,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChBA,KAAI,CAAC,CAAC;MACNlB,WAAW,CAACkB,IAAI,CAAC,CAAC;MAClB,IAAIpB,+BAA+B,EAAE;QACnCA,+BAA+B,GAAG,KAAK;QACvCI,wCAAwC,CAAC,CAAC;MAC5C;IACF;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.trackNavigationTimings = trackNavigationTimings;
|
|
7
|
+
var _browserCore = require("@cloudcare/browser-core");
|
|
8
|
+
var _performanceUtils = require("../../performanceUtils");
|
|
9
|
+
function trackNavigationTimings(configuration, callback, getNavigationEntryImpl) {
|
|
10
|
+
if (getNavigationEntryImpl === undefined) {
|
|
11
|
+
getNavigationEntryImpl = _performanceUtils.getNavigationEntry;
|
|
12
|
+
}
|
|
13
|
+
return waitAfterLoadEvent(function () {
|
|
14
|
+
var entry = getNavigationEntryImpl();
|
|
15
|
+
if (!isIncompleteNavigation(entry)) {
|
|
16
|
+
callback(processNavigationEntry(entry));
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function processNavigationEntry(entry) {
|
|
21
|
+
return {
|
|
22
|
+
fetchStart: entry.fetchStart,
|
|
23
|
+
responseEnd: entry.responseEnd,
|
|
24
|
+
domComplete: entry.domComplete,
|
|
25
|
+
domContentLoaded: entry.domContentLoadedEventEnd,
|
|
26
|
+
domInteractive: entry.domInteractive,
|
|
27
|
+
loadEvent: entry.loadEventEnd,
|
|
28
|
+
loadEventEnd: entry.loadEventEnd,
|
|
29
|
+
loadEventStart: entry.loadEventStart,
|
|
30
|
+
domContentLoadedEventEnd: entry.domContentLoadedEventEnd,
|
|
31
|
+
domContentLoadedEventStart: entry.domContentLoadedEventStart,
|
|
32
|
+
// In some cases the value reported is negative or is larger
|
|
33
|
+
// than the current page time. Ignore these cases:
|
|
34
|
+
// https://github.com/GoogleChrome/web-vitals/issues/137
|
|
35
|
+
// https://github.com/GoogleChrome/web-vitals/issues/162
|
|
36
|
+
firstByte: entry.responseStart >= 0 && entry.responseStart <= (0, _browserCore.relativeNow)() ? entry.responseStart : undefined
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function isIncompleteNavigation(entry) {
|
|
40
|
+
return entry.loadEventEnd <= 0;
|
|
41
|
+
}
|
|
42
|
+
function waitAfterLoadEvent(callback) {
|
|
43
|
+
var timeoutId;
|
|
44
|
+
var _runOnReadyState = (0, _browserCore.runOnReadyState)('complete', function () {
|
|
45
|
+
// Invoke the callback a bit after the actual load event, so the "loadEventEnd" timing is accurate
|
|
46
|
+
timeoutId = (0, _browserCore.setTimeout)(function () {
|
|
47
|
+
callback();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
stop: function stop() {
|
|
52
|
+
_runOnReadyState.stop();
|
|
53
|
+
(0, _browserCore.clearTimeout)(timeoutId);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=trackNavigationTimings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackNavigationTimings.js","names":["_browserCore","require","_performanceUtils","trackNavigationTimings","configuration","callback","getNavigationEntryImpl","undefined","getNavigationEntry","waitAfterLoadEvent","entry","isIncompleteNavigation","processNavigationEntry","fetchStart","responseEnd","domComplete","domContentLoaded","domContentLoadedEventEnd","domInteractive","loadEvent","loadEventEnd","loadEventStart","domContentLoadedEventStart","firstByte","responseStart","relativeNow","timeoutId","_runOnReadyState","runOnReadyState","setTimeout","stop","clearTimeout"],"sources":["../../../../../rum/src/domain/rumEventsCollection/view/trackNavigationTimings.js"],"sourcesContent":["import {\n relativeNow,\n setTimeout,\n runOnReadyState,\n clearTimeout\n} from '@cloudcare/browser-core'\n\nimport { getNavigationEntry } from '../../performanceUtils'\nexport function trackNavigationTimings(\n configuration,\n callback,\n getNavigationEntryImpl\n) {\n if (getNavigationEntryImpl === undefined) {\n getNavigationEntryImpl = getNavigationEntry\n }\n return waitAfterLoadEvent(function () {\n var entry = getNavigationEntryImpl()\n\n if (!isIncompleteNavigation(entry)) {\n callback(processNavigationEntry(entry))\n }\n })\n}\n\nfunction processNavigationEntry(entry) {\n return {\n fetchStart: entry.fetchStart,\n responseEnd: entry.responseEnd,\n domComplete: entry.domComplete,\n domContentLoaded: entry.domContentLoadedEventEnd,\n domInteractive: entry.domInteractive,\n loadEvent: entry.loadEventEnd,\n loadEventEnd: entry.loadEventEnd,\n loadEventStart: entry.loadEventStart,\n domContentLoadedEventEnd: entry.domContentLoadedEventEnd,\n domContentLoadedEventStart: entry.domContentLoadedEventStart,\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n firstByte:\n entry.responseStart >= 0 && entry.responseStart <= relativeNow()\n ? entry.responseStart\n : undefined\n }\n}\n\nfunction isIncompleteNavigation(entry) {\n return entry.loadEventEnd <= 0\n}\n\nfunction waitAfterLoadEvent(callback) {\n var timeoutId\n var _runOnReadyState = runOnReadyState('complete', function () {\n // Invoke the callback a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n timeoutId = setTimeout(function () {\n callback()\n })\n })\n return {\n stop: function () {\n _runOnReadyState.stop()\n clearTimeout(timeoutId)\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAOA,IAAAC,iBAAA,GAAAD,OAAA;AACO,SAASE,sBAAsBA,CACpCC,aAAa,EACbC,QAAQ,EACRC,sBAAsB,EACtB;EACA,IAAIA,sBAAsB,KAAKC,SAAS,EAAE;IACxCD,sBAAsB,GAAGE,oCAAkB;EAC7C;EACA,OAAOC,kBAAkB,CAAC,YAAY;IACpC,IAAIC,KAAK,GAAGJ,sBAAsB,CAAC,CAAC;IAEpC,IAAI,CAACK,sBAAsB,CAACD,KAAK,CAAC,EAAE;MAClCL,QAAQ,CAACO,sBAAsB,CAACF,KAAK,CAAC,CAAC;IACzC;EACF,CAAC,CAAC;AACJ;AAEA,SAASE,sBAAsBA,CAACF,KAAK,EAAE;EACrC,OAAO;IACLG,UAAU,EAAEH,KAAK,CAACG,UAAU;IAC5BC,WAAW,EAAEJ,KAAK,CAACI,WAAW;IAC9BC,WAAW,EAAEL,KAAK,CAACK,WAAW;IAC9BC,gBAAgB,EAAEN,KAAK,CAACO,wBAAwB;IAChDC,cAAc,EAAER,KAAK,CAACQ,cAAc;IACpCC,SAAS,EAAET,KAAK,CAACU,YAAY;IAC7BA,YAAY,EAAEV,KAAK,CAACU,YAAY;IAChCC,cAAc,EAAEX,KAAK,CAACW,cAAc;IACpCJ,wBAAwB,EAAEP,KAAK,CAACO,wBAAwB;IACxDK,0BAA0B,EAAEZ,KAAK,CAACY,0BAA0B;IAC5D;IACA;IACA;IACA;IACAC,SAAS,EACPb,KAAK,CAACc,aAAa,IAAI,CAAC,IAAId,KAAK,CAACc,aAAa,IAAI,IAAAC,wBAAW,EAAC,CAAC,GAC5Df,KAAK,CAACc,aAAa,GACnBjB;EACR,CAAC;AACH;AAEA,SAASI,sBAAsBA,CAACD,KAAK,EAAE;EACrC,OAAOA,KAAK,CAACU,YAAY,IAAI,CAAC;AAChC;AAEA,SAASX,kBAAkBA,CAACJ,QAAQ,EAAE;EACpC,IAAIqB,SAAS;EACb,IAAIC,gBAAgB,GAAG,IAAAC,4BAAe,EAAC,UAAU,EAAE,YAAY;IAC7D;IACAF,SAAS,GAAG,IAAAG,uBAAU,EAAC,YAAY;MACjCxB,QAAQ,CAAC,CAAC;IACZ,CAAC,CAAC;EACJ,CAAC,CAAC;EACF,OAAO;IACLyB,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChBH,gBAAgB,CAACG,IAAI,CAAC,CAAC;MACvB,IAAAC,yBAAY,EAACL,SAAS,CAAC;IACzB;EACF,CAAC;AACH","ignoreList":[]}
|