@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 @@
|
|
|
1
|
+
{"version":3,"file":"rumSessionManager.js","names":["performDraw","startSessionManager","LifeCycleEventType","noop","Observable","timeStampNow","bridgeSupports","BridgeCapability","SESSION_NOT_TRACKED","RUM_SESSION_KEY","RumSessionPlan","WITHOUT_SESSION_REPLAY","WITH_SESSION_REPLAY","WITH_ERROR_SESSION_REPLAY","ERROR_SESSION","RumTrackingType","NOT_TRACKED","TRACKED_WITH_SESSION_AND_WITH_SESSION_REPLAY","TRACKED_WITH_SESSION_AND_WITHOUT_SESSION_REPLAY","TRACKED_WITH_SESSION_AND_WITH_ERROR_SESSION_REPLAY","TRACKED_WITH_ERROR_SESSION_AND_WITH_SESSION_REPLAY","TRACKED_WITH_ERROR_SESSION_AND_WITHOUT_SESSION_REPLAY","TRACKED_WITH_ERROR_SESSION_AND_WITH_ERROR_SESSION_REPLAY","startRumSessionManager","configuration","lifeCycle","sessionManager","rawTrackingType","computeSessionState","expireObservable","subscribe","notify","SESSION_EXPIRED","renewObservable","SESSION_RENEWED","sessionStateUpdateObservable","_ref","previousState","newState","hasError","sessionEntity","findSession","ets","forcedSession","isSessionForced","findTrackedSession","startTime","session","isTypeTracked","trackingType","isErrorSession","plan","id","errorSessionReplayAllowed","sessionHasError","sessionErrorTimestamp","sessionReplayAllowed","expire","keepSessionAlive","expandOrRenewSession","setErrorForSession","updateSessionState","setForcedSession","startRumSessionManagerStub","RECORDS","sessionSampleRate","sessionOnErrorSampleRate","sessionReplaySampleRate","sessionReplayOnErrorSampleRate","isSession","isSessionReplay","isErrorSessionReplay","hasValidRumSession","isTracked","rumSessionType"],"sources":["../../../rum/src/domain/rumSessionManager.js"],"sourcesContent":["import {\n performDraw,\n startSessionManager,\n LifeCycleEventType,\n noop,\n Observable,\n timeStampNow,\n bridgeSupports,\n BridgeCapability,\n SESSION_NOT_TRACKED\n} from '@cloudcare/browser-core'\n\nexport var RUM_SESSION_KEY = 'rum'\n\nexport var RumSessionPlan = {\n WITHOUT_SESSION_REPLAY: 1,\n WITH_SESSION_REPLAY: 2,\n WITH_ERROR_SESSION_REPLAY: 3\n}\nexport const ERROR_SESSION = '1'\nexport var RumTrackingType = {\n NOT_TRACKED: SESSION_NOT_TRACKED,\n // Note: the \"tracking type\" value (stored in the session cookie) does not match the \"session\n // plan\" value (sent in RUM events). This is expected, and was done to keep retrocompatibility\n // with active sessions when upgrading the SDK.\n\n TRACKED_WITH_SESSION_AND_WITH_SESSION_REPLAY: '1',\n TRACKED_WITH_SESSION_AND_WITHOUT_SESSION_REPLAY: '2',\n TRACKED_WITH_SESSION_AND_WITH_ERROR_SESSION_REPLAY: '3',\n TRACKED_WITH_ERROR_SESSION_AND_WITH_SESSION_REPLAY: '4',\n TRACKED_WITH_ERROR_SESSION_AND_WITHOUT_SESSION_REPLAY: '5',\n TRACKED_WITH_ERROR_SESSION_AND_WITH_ERROR_SESSION_REPLAY: '6'\n}\n\nexport function startRumSessionManager(configuration, lifeCycle) {\n var sessionManager = startSessionManager(\n configuration,\n RUM_SESSION_KEY,\n function (rawTrackingType) {\n return computeSessionState(configuration, rawTrackingType)\n }\n )\n\n sessionManager.expireObservable.subscribe(function () {\n lifeCycle.notify(LifeCycleEventType.SESSION_EXPIRED)\n })\n\n sessionManager.renewObservable.subscribe(function () {\n lifeCycle.notify(LifeCycleEventType.SESSION_RENEWED)\n })\n sessionManager.sessionStateUpdateObservable.subscribe(\n ({ previousState, newState }) => {\n if (!previousState.hasError && newState.hasError) {\n const sessionEntity = sessionManager.findSession()\n if (sessionEntity) {\n sessionEntity.hasError = true\n sessionEntity.ets = newState.ets || timeStampNow()\n }\n }\n if (!previousState.forcedSession && newState.forcedSession) {\n const sessionEntity = sessionManager.findSession()\n if (sessionEntity) {\n sessionEntity.isSessionForced = true\n }\n }\n }\n )\n return {\n findTrackedSession: function (startTime) {\n var session = sessionManager.findSession(startTime)\n if (!session) {\n return\n }\n if (!isTypeTracked(session.trackingType) && !session.isSessionForced) {\n return\n }\n const isErrorSession =\n session.trackingType ===\n RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITHOUT_SESSION_REPLAY ||\n session.trackingType ===\n RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_SESSION_REPLAY ||\n session.trackingType ===\n RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_ERROR_SESSION_REPLAY\n\n let plan = RumSessionPlan.WITHOUT_SESSION_REPLAY\n if (\n session.trackingType ===\n RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_SESSION_REPLAY ||\n session.trackingType ===\n RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_SESSION_REPLAY\n ) {\n plan = RumSessionPlan.WITH_SESSION_REPLAY\n } else if (\n session.trackingType ===\n RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_ERROR_SESSION_REPLAY ||\n session.trackingType ===\n RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_ERROR_SESSION_REPLAY\n ) {\n plan = RumSessionPlan.WITH_ERROR_SESSION_REPLAY\n }\n\n return {\n id: session.id,\n plan: plan,\n errorSessionReplayAllowed:\n plan === RumSessionPlan.WITH_ERROR_SESSION_REPLAY,\n sessionHasError: session.hasError,\n isErrorSession: isErrorSession,\n sessionErrorTimestamp: session.ets,\n isSessionForced: session.isSessionForced,\n sessionReplayAllowed:\n plan === RumSessionPlan.WITH_SESSION_REPLAY ||\n plan === RumSessionPlan.WITH_ERROR_SESSION_REPLAY ||\n session.isSessionForced\n }\n },\n expire: sessionManager.expire,\n keepSessionAlive: sessionManager.expandOrRenewSession,\n expireObservable: sessionManager.expireObservable,\n sessionStateUpdateObservable: sessionManager.sessionStateUpdateObservable,\n setErrorForSession: () =>\n sessionManager.updateSessionState({ hasError: '1', ets: timeStampNow() }),\n setForcedSession: () => {\n sessionManager.updateSessionState({ forcedSession: '1' })\n }\n }\n}\n\n/**\n * Start a tracked replay session stub\n * It needs to be a premium plan in order to get long tasks\n */\nexport function startRumSessionManagerStub() {\n var session = {\n id: '00000000-aaaa-0000-aaaa-000000000000',\n isErrorSession: false,\n sessionErrorTimestamp: 0,\n sessionReplayAllowed: bridgeSupports(BridgeCapability.RECORDS)\n ? true\n : false,\n errorSessionReplayAllowed: false,\n sessionHasError: false,\n isSessionForced: false\n }\n return {\n findTrackedSession: function () {\n return session\n },\n expire: noop,\n keepSessionAlive: noop,\n expireObservable: new Observable(),\n setErrorForSession: function () {\n session.sessionErrorTimestamp = timeStampNow()\n session.sessionHasError = true\n session.isErrorSession = true\n session.errorSessionReplayAllowed = true\n },\n setForcedSession: noop\n }\n}\n\nfunction computeSessionState(configuration, rawTrackingType) {\n const {\n sessionSampleRate,\n sessionOnErrorSampleRate,\n sessionReplaySampleRate,\n sessionReplayOnErrorSampleRate\n } = configuration\n const isSession = performDraw(sessionSampleRate)\n const isErrorSession = performDraw(sessionOnErrorSampleRate)\n const isSessionReplay = performDraw(sessionReplaySampleRate)\n const isErrorSessionReplay = performDraw(sessionReplayOnErrorSampleRate)\n var trackingType\n if (hasValidRumSession(rawTrackingType)) {\n trackingType = rawTrackingType\n } else if (!isErrorSession && !isSession) {\n trackingType = RumTrackingType.NOT_TRACKED\n } else if (isSession && isSessionReplay) {\n trackingType = RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_SESSION_REPLAY\n } else if (isSession && isErrorSessionReplay) {\n trackingType =\n RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_ERROR_SESSION_REPLAY\n } else if (isSession && !isSessionReplay && !isErrorSessionReplay) {\n trackingType =\n RumTrackingType.TRACKED_WITH_SESSION_AND_WITHOUT_SESSION_REPLAY\n } else if (isErrorSession && isSessionReplay) {\n trackingType =\n RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_SESSION_REPLAY\n } else if (isErrorSession && isErrorSessionReplay) {\n trackingType =\n RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_ERROR_SESSION_REPLAY\n } else if (isErrorSession && !isSessionReplay && !isErrorSessionReplay) {\n trackingType =\n RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITHOUT_SESSION_REPLAY\n }\n // if (hasValidRumSession(rawTrackingType)) {\n // trackingType = rawTrackingType\n // } else if (\n // !performDraw(configuration.sessionSampleRate) &&\n // !performDraw(configuration.sessionOnErrorSampleRate)\n // ) {\n // trackingType = RumTrackingType.NOT_TRACKED\n // } else if (\n // !performDraw(configuration.sessionReplaySampleRate) &&\n // !performDraw(configuration.sessionReplayOnErrorSampleRate)\n // ) {\n // trackingType = RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY\n // } else if (performDraw(configuration.sessionReplayOnErrorSampleRate)) {\n // trackingType = RumTrackingType.TRACKED_WITH_ERROR_SESSION_REPLAY\n // } else {\n // trackingType = RumTrackingType.TRACKED_WITH_SESSION_REPLAY\n // }\n return {\n trackingType: trackingType,\n isTracked: isTypeTracked(trackingType)\n }\n}\n\nfunction hasValidRumSession(trackingType) {\n return (\n trackingType === RumTrackingType.NOT_TRACKED ||\n trackingType ===\n RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITHOUT_SESSION_REPLAY ||\n trackingType ===\n RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_ERROR_SESSION_REPLAY ||\n trackingType ===\n RumTrackingType.TRACKED_WITH_ERROR_SESSION_AND_WITH_SESSION_REPLAY ||\n trackingType ===\n RumTrackingType.TRACKED_WITH_SESSION_AND_WITHOUT_SESSION_REPLAY ||\n trackingType ===\n RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_ERROR_SESSION_REPLAY ||\n trackingType ===\n RumTrackingType.TRACKED_WITH_SESSION_AND_WITH_SESSION_REPLAY\n )\n}\n\nfunction isTypeTracked(rumSessionType) {\n return rumSessionType !== RumTrackingType.NOT_TRACKED\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { TraceIdentifier, getCrypto } from './traceIdentifier';
|
|
2
|
+
import { getType } from '@cloudcare/browser-core';
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {*} configuration
|
|
6
|
+
*/
|
|
7
|
+
export function DDtraceTracer(configuration, traceSampled) {
|
|
8
|
+
this._spanId = new TraceIdentifier();
|
|
9
|
+
this._traceId = new TraceIdentifier();
|
|
10
|
+
this._traceSampled = traceSampled;
|
|
11
|
+
if (configuration.generateTraceId && getType(configuration.generateTraceId) === 'function') {
|
|
12
|
+
var customTraceId = configuration.generateTraceId();
|
|
13
|
+
if (getType(customTraceId) === 'string') {
|
|
14
|
+
this.customTraceId = customTraceId;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
DDtraceTracer.prototype = {
|
|
19
|
+
isTracingSupported: function isTracingSupported() {
|
|
20
|
+
return getCrypto() !== undefined;
|
|
21
|
+
},
|
|
22
|
+
getSpanId: function getSpanId() {
|
|
23
|
+
return this._spanId.toDecimalString();
|
|
24
|
+
},
|
|
25
|
+
getTraceId: function getTraceId() {
|
|
26
|
+
if (this.customTraceId) {
|
|
27
|
+
return this.customTraceId;
|
|
28
|
+
}
|
|
29
|
+
return this._traceId.toDecimalString();
|
|
30
|
+
},
|
|
31
|
+
makeTracingHeaders: function makeTracingHeaders() {
|
|
32
|
+
return {
|
|
33
|
+
'x-datadog-origin': 'rum',
|
|
34
|
+
'x-datadog-parent-id': this.getSpanId(),
|
|
35
|
+
'x-datadog-sampling-priority': this._traceSampled ? '2' : '-1',
|
|
36
|
+
'x-datadog-trace-id': this.getTraceId()
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=ddtraceTracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ddtraceTracer.js","names":["TraceIdentifier","getCrypto","getType","DDtraceTracer","configuration","traceSampled","_spanId","_traceId","_traceSampled","generateTraceId","customTraceId","prototype","isTracingSupported","undefined","getSpanId","toDecimalString","getTraceId","makeTracingHeaders"],"sources":["../../../../rum/src/domain/tracing/ddtraceTracer.js"],"sourcesContent":["import { TraceIdentifier, getCrypto } from './traceIdentifier'\nimport { getType } from '@cloudcare/browser-core'\n/**\n *\n * @param {*} configuration\n */\nexport function DDtraceTracer(configuration, traceSampled) {\n this._spanId = new TraceIdentifier()\n this._traceId = new TraceIdentifier()\n this._traceSampled = traceSampled\n if (\n configuration.generateTraceId &&\n getType(configuration.generateTraceId) === 'function'\n ) {\n const customTraceId = configuration.generateTraceId()\n if (getType(customTraceId) === 'string') {\n this.customTraceId = customTraceId\n }\n }\n}\nDDtraceTracer.prototype = {\n isTracingSupported: function () {\n return getCrypto() !== undefined\n },\n getSpanId: function () {\n return this._spanId.toDecimalString()\n },\n getTraceId: function () {\n if (this.customTraceId) {\n return this.customTraceId\n }\n return this._traceId.toDecimalString()\n },\n makeTracingHeaders: function () {\n return {\n 'x-datadog-origin': 'rum',\n 'x-datadog-parent-id': this.getSpanId(),\n 'x-datadog-sampling-priority': this._traceSampled ? '2' : '-1',\n 'x-datadog-trace-id': this.getTraceId()\n }\n }\n}\n"],"mappings":"AAAA,SAASA,eAAe,EAAEC,SAAS,QAAQ,mBAAmB;AAC9D,SAASC,OAAO,QAAQ,yBAAyB;AACjD;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAACC,aAAa,EAAEC,YAAY,EAAE;EACzD,IAAI,CAACC,OAAO,GAAG,IAAIN,eAAe,CAAC,CAAC;EACpC,IAAI,CAACO,QAAQ,GAAG,IAAIP,eAAe,CAAC,CAAC;EACrC,IAAI,CAACQ,aAAa,GAAGH,YAAY;EACjC,IACED,aAAa,CAACK,eAAe,IAC7BP,OAAO,CAACE,aAAa,CAACK,eAAe,CAAC,KAAK,UAAU,EACrD;IACA,IAAMC,aAAa,GAAGN,aAAa,CAACK,eAAe,CAAC,CAAC;IACrD,IAAIP,OAAO,CAACQ,aAAa,CAAC,KAAK,QAAQ,EAAE;MACvC,IAAI,CAACA,aAAa,GAAGA,aAAa;IACpC;EACF;AACF;AACAP,aAAa,CAACQ,SAAS,GAAG;EACxBC,kBAAkB,EAAE,SAApBA,kBAAkBA,CAAA,EAAc;IAC9B,OAAOX,SAAS,CAAC,CAAC,KAAKY,SAAS;EAClC,CAAC;EACDC,SAAS,EAAE,SAAXA,SAASA,CAAA,EAAc;IACrB,OAAO,IAAI,CAACR,OAAO,CAACS,eAAe,CAAC,CAAC;EACvC,CAAC;EACDC,UAAU,EAAE,SAAZA,UAAUA,CAAA,EAAc;IACtB,IAAI,IAAI,CAACN,aAAa,EAAE;MACtB,OAAO,IAAI,CAACA,aAAa;IAC3B;IACA,OAAO,IAAI,CAACH,QAAQ,CAACQ,eAAe,CAAC,CAAC;EACxC,CAAC;EACDE,kBAAkB,EAAE,SAApBA,kBAAkBA,CAAA,EAAc;IAC9B,OAAO;MACL,kBAAkB,EAAE,KAAK;MACzB,qBAAqB,EAAE,IAAI,CAACH,SAAS,CAAC,CAAC;MACvC,6BAA6B,EAAE,IAAI,CAACN,aAAa,GAAG,GAAG,GAAG,IAAI;MAC9D,oBAAoB,EAAE,IAAI,CAACQ,UAAU,CAAC;IACxC,CAAC;EACH;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { findCommaSeparatedValue, ONE_MINUTE, isCommentNode, isTextNode } from '@cloudcare/browser-core';
|
|
2
|
+
export var INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE;
|
|
3
|
+
export function getDocumentTraceId(document) {
|
|
4
|
+
var data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document);
|
|
5
|
+
if (!data || data.traceTime <= Date.now() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
return data.traceId;
|
|
9
|
+
}
|
|
10
|
+
export function getDocumentTraceDataFromMeta(document) {
|
|
11
|
+
var traceIdMeta = document.querySelector('meta[name=df-trace-id]');
|
|
12
|
+
var traceTimeMeta = document.querySelector('meta[name=df-trace-time]');
|
|
13
|
+
return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content);
|
|
14
|
+
}
|
|
15
|
+
export function getDocumentTraceDataFromComment(document) {
|
|
16
|
+
var comment = findTraceComment(document);
|
|
17
|
+
if (!comment) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
return createDocumentTraceData(findCommaSeparatedValue(comment, 'trace-id'), findCommaSeparatedValue(comment, 'trace-time'));
|
|
21
|
+
}
|
|
22
|
+
export function createDocumentTraceData(traceId, rawTraceTime) {
|
|
23
|
+
var traceTime = rawTraceTime && Number(rawTraceTime);
|
|
24
|
+
if (!traceId || !traceTime) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
traceId: traceId,
|
|
29
|
+
traceTime: traceTime
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function findTraceComment(document) {
|
|
33
|
+
// 1. Try to find the comment as a direct child of the document
|
|
34
|
+
// Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated
|
|
35
|
+
// value is not an array or string (here, a NodeList).
|
|
36
|
+
// tslint:disable-next-line: prefer-for-of
|
|
37
|
+
for (var i = 0; i < document.childNodes.length; i += 1) {
|
|
38
|
+
var comment = getTraceCommentFromNode(document.childNodes[i]);
|
|
39
|
+
if (comment) {
|
|
40
|
+
return comment;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// 2. If the comment is placed after the </html> tag, but have some space or new lines before or
|
|
45
|
+
// after, the DOM parser will lift it (and the surrounding text) at the end of the <body> tag.
|
|
46
|
+
// Try to look for the comment at the end of the <body> by by iterating over its child nodes in
|
|
47
|
+
// reverse order, stoping if we come accross a non-text node.
|
|
48
|
+
if (document.body) {
|
|
49
|
+
for (var i = document.body.childNodes.length - 1; i >= 0; i -= 1) {
|
|
50
|
+
var node = document.body.childNodes[i];
|
|
51
|
+
var comment = getTraceCommentFromNode(node);
|
|
52
|
+
if (comment) {
|
|
53
|
+
return comment;
|
|
54
|
+
}
|
|
55
|
+
if (!isTextNode(node)) {
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function getTraceCommentFromNode(node) {
|
|
62
|
+
if (node && isCommentNode(node)) {
|
|
63
|
+
var match = node.data.match(/^\s*GUANCE;(.*?)\s*$/);
|
|
64
|
+
if (match) {
|
|
65
|
+
return match[1];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=getDocumentTraceId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDocumentTraceId.js","names":["findCommaSeparatedValue","ONE_MINUTE","isCommentNode","isTextNode","INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD","getDocumentTraceId","document","data","getDocumentTraceDataFromMeta","getDocumentTraceDataFromComment","traceTime","Date","now","undefined","traceId","traceIdMeta","querySelector","traceTimeMeta","createDocumentTraceData","content","comment","findTraceComment","rawTraceTime","Number","i","childNodes","length","getTraceCommentFromNode","body","node","match"],"sources":["../../../../rum/src/domain/tracing/getDocumentTraceId.js"],"sourcesContent":["import {\n findCommaSeparatedValue,\n ONE_MINUTE,\n isCommentNode,\n isTextNode\n} from '@cloudcare/browser-core'\n\nexport var INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE\n\nexport function getDocumentTraceId(document) {\n var data =\n getDocumentTraceDataFromMeta(document) ||\n getDocumentTraceDataFromComment(document)\n\n if (\n !data ||\n data.traceTime <= Date.now() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD\n ) {\n return undefined\n }\n\n return data.traceId\n}\n\nexport function getDocumentTraceDataFromMeta(document) {\n var traceIdMeta = document.querySelector('meta[name=df-trace-id]')\n var traceTimeMeta = document.querySelector('meta[name=df-trace-time]')\n return createDocumentTraceData(\n traceIdMeta && traceIdMeta.content,\n traceTimeMeta && traceTimeMeta.content\n )\n}\n\nexport function getDocumentTraceDataFromComment(document) {\n var comment = findTraceComment(document)\n if (!comment) {\n return undefined\n }\n return createDocumentTraceData(\n findCommaSeparatedValue(comment, 'trace-id'),\n findCommaSeparatedValue(comment, 'trace-time')\n )\n}\n\nexport function createDocumentTraceData(traceId, rawTraceTime) {\n var traceTime = rawTraceTime && Number(rawTraceTime)\n if (!traceId || !traceTime) {\n return undefined\n }\n\n return {\n traceId: traceId,\n traceTime: traceTime\n }\n}\n\nexport function findTraceComment(document) {\n // 1. Try to find the comment as a direct child of the document\n // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n // value is not an array or string (here, a NodeList).\n // tslint:disable-next-line: prefer-for-of\n for (var i = 0; i < document.childNodes.length; i += 1) {\n var comment = getTraceCommentFromNode(document.childNodes[i])\n if (comment) {\n return comment\n }\n }\n\n // 2. If the comment is placed after the </html> tag, but have some space or new lines before or\n // after, the DOM parser will lift it (and the surrounding text) at the end of the <body> tag.\n // Try to look for the comment at the end of the <body> by by iterating over its child nodes in\n // reverse order, stoping if we come accross a non-text node.\n if (document.body) {\n for (var i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n var node = document.body.childNodes[i]\n var comment = getTraceCommentFromNode(node)\n if (comment) {\n return comment\n }\n if (!isTextNode(node)) {\n break\n }\n }\n }\n}\n\nfunction getTraceCommentFromNode(node) {\n if (node && isCommentNode(node)) {\n var match = node.data.match(/^\\s*GUANCE;(.*?)\\s*$/)\n if (match) {\n return match[1]\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { createRandomHexIdentifier, getCrypto, normalizeHexIdentifier } from './traceIdentifier';
|
|
2
|
+
import { getType } from '@cloudcare/browser-core';
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {*} configuration
|
|
6
|
+
*/
|
|
7
|
+
export function JaegerTracer(configuration, traceSampled) {
|
|
8
|
+
this._traceId = configuration.traceId128Bit ? createRandomHexIdentifier(16) : createRandomHexIdentifier(8);
|
|
9
|
+
this._spanId = createRandomHexIdentifier(8);
|
|
10
|
+
this._traceSampled = traceSampled;
|
|
11
|
+
this.is128Bit = configuration.traceId128Bit;
|
|
12
|
+
if (configuration.generateTraceId && getType(configuration.generateTraceId) === 'function') {
|
|
13
|
+
var customTraceId = normalizeHexIdentifier(configuration.generateTraceId(), [16, 32]);
|
|
14
|
+
if (customTraceId) {
|
|
15
|
+
this.customTraceId = customTraceId;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
JaegerTracer.prototype = {
|
|
20
|
+
isTracingSupported: function isTracingSupported() {
|
|
21
|
+
return getCrypto() !== undefined;
|
|
22
|
+
},
|
|
23
|
+
getSpanId: function getSpanId() {
|
|
24
|
+
return this._spanId;
|
|
25
|
+
},
|
|
26
|
+
getTraceId: function getTraceId() {
|
|
27
|
+
if (this.customTraceId) {
|
|
28
|
+
return this.customTraceId;
|
|
29
|
+
}
|
|
30
|
+
return this._traceId;
|
|
31
|
+
},
|
|
32
|
+
getUberTraceId: function getUberTraceId() {
|
|
33
|
+
//{trace-id}:{span-id}:{parent-span-id}:{flags}
|
|
34
|
+
return this.getTraceId() + ':' + this.getSpanId() + ':' + '0' + ':' + (this._traceSampled ? '1' : '0');
|
|
35
|
+
},
|
|
36
|
+
makeTracingHeaders: function makeTracingHeaders() {
|
|
37
|
+
return {
|
|
38
|
+
'uber-trace-id': this.getUberTraceId()
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=jaegerTracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jaegerTracer.js","names":["createRandomHexIdentifier","getCrypto","normalizeHexIdentifier","getType","JaegerTracer","configuration","traceSampled","_traceId","traceId128Bit","_spanId","_traceSampled","is128Bit","generateTraceId","customTraceId","prototype","isTracingSupported","undefined","getSpanId","getTraceId","getUberTraceId","makeTracingHeaders"],"sources":["../../../../rum/src/domain/tracing/jaegerTracer.js"],"sourcesContent":["import {\n createRandomHexIdentifier,\n getCrypto,\n normalizeHexIdentifier\n} from './traceIdentifier'\nimport { getType } from '@cloudcare/browser-core'\n/**\n *\n * @param {*} configuration\n */\nexport function JaegerTracer(configuration, traceSampled) {\n this._traceId = configuration.traceId128Bit\n ? createRandomHexIdentifier(16)\n : createRandomHexIdentifier(8)\n this._spanId = createRandomHexIdentifier(8)\n this._traceSampled = traceSampled\n this.is128Bit = configuration.traceId128Bit\n if (\n configuration.generateTraceId &&\n getType(configuration.generateTraceId) === 'function'\n ) {\n const customTraceId = normalizeHexIdentifier(\n configuration.generateTraceId(),\n [16, 32]\n )\n if (customTraceId) {\n this.customTraceId = customTraceId\n }\n }\n}\nJaegerTracer.prototype = {\n isTracingSupported: function () {\n return getCrypto() !== undefined\n },\n getSpanId: function () {\n return this._spanId\n },\n getTraceId: function () {\n if (this.customTraceId) {\n return this.customTraceId\n }\n return this._traceId\n },\n getUberTraceId: function () {\n //{trace-id}:{span-id}:{parent-span-id}:{flags}\n return (\n this.getTraceId() +\n ':' +\n this.getSpanId() +\n ':' +\n '0' +\n ':' +\n (this._traceSampled ? '1' : '0')\n )\n },\n makeTracingHeaders: function () {\n return {\n 'uber-trace-id': this.getUberTraceId()\n }\n }\n}\n"],"mappings":"AAAA,SACEA,yBAAyB,EACzBC,SAAS,EACTC,sBAAsB,QACjB,mBAAmB;AAC1B,SAASC,OAAO,QAAQ,yBAAyB;AACjD;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAACC,aAAa,EAAEC,YAAY,EAAE;EACxD,IAAI,CAACC,QAAQ,GAAGF,aAAa,CAACG,aAAa,GACvCR,yBAAyB,CAAC,EAAE,CAAC,GAC7BA,yBAAyB,CAAC,CAAC,CAAC;EAChC,IAAI,CAACS,OAAO,GAAGT,yBAAyB,CAAC,CAAC,CAAC;EAC3C,IAAI,CAACU,aAAa,GAAGJ,YAAY;EACjC,IAAI,CAACK,QAAQ,GAAGN,aAAa,CAACG,aAAa;EAC3C,IACEH,aAAa,CAACO,eAAe,IAC7BT,OAAO,CAACE,aAAa,CAACO,eAAe,CAAC,KAAK,UAAU,EACrD;IACA,IAAMC,aAAa,GAAGX,sBAAsB,CAC1CG,aAAa,CAACO,eAAe,CAAC,CAAC,EAC/B,CAAC,EAAE,EAAE,EAAE,CACT,CAAC;IACD,IAAIC,aAAa,EAAE;MACjB,IAAI,CAACA,aAAa,GAAGA,aAAa;IACpC;EACF;AACF;AACAT,YAAY,CAACU,SAAS,GAAG;EACvBC,kBAAkB,EAAE,SAApBA,kBAAkBA,CAAA,EAAc;IAC9B,OAAOd,SAAS,CAAC,CAAC,KAAKe,SAAS;EAClC,CAAC;EACDC,SAAS,EAAE,SAAXA,SAASA,CAAA,EAAc;IACrB,OAAO,IAAI,CAACR,OAAO;EACrB,CAAC;EACDS,UAAU,EAAE,SAAZA,UAAUA,CAAA,EAAc;IACtB,IAAI,IAAI,CAACL,aAAa,EAAE;MACtB,OAAO,IAAI,CAACA,aAAa;IAC3B;IACA,OAAO,IAAI,CAACN,QAAQ;EACtB,CAAC;EACDY,cAAc,EAAE,SAAhBA,cAAcA,CAAA,EAAc;IAC1B;IACA,OACE,IAAI,CAACD,UAAU,CAAC,CAAC,GACjB,GAAG,GACH,IAAI,CAACD,SAAS,CAAC,CAAC,GAChB,GAAG,GACH,GAAG,GACH,GAAG,IACF,IAAI,CAACP,aAAa,GAAG,GAAG,GAAG,GAAG,CAAC;EAEpC,CAAC;EACDU,kBAAkB,EAAE,SAApBA,kBAAkBA,CAAA,EAAc;IAC9B,OAAO;MACL,eAAe,EAAE,IAAI,CAACD,cAAc,CAAC;IACvC,CAAC;EACH;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { performDraw } from '@cloudcare/browser-core';
|
|
2
|
+
var sampleDecisionCache;
|
|
3
|
+
export function isTraceSampled(sessionId, sampleRate) {
|
|
4
|
+
// Shortcuts for common cases. This is not strictly necessary, but it makes the code faster for
|
|
5
|
+
// customers willing to ingest all traces.
|
|
6
|
+
if (sampleRate === 100) {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
if (sampleRate === 0) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (sampleDecisionCache && sessionId === sampleDecisionCache.sessionId) {
|
|
13
|
+
return sampleDecisionCache.decision;
|
|
14
|
+
}
|
|
15
|
+
var decision;
|
|
16
|
+
// @ts-expect-error BigInt might not be defined in every browser we support
|
|
17
|
+
if (window.BigInt) {
|
|
18
|
+
decision = sampleUsingKnuthFactor(BigInt("0x".concat(sessionId.split('-')[4])), sampleRate);
|
|
19
|
+
} else {
|
|
20
|
+
// For simplicity, we don't use consistent sampling for browser without BigInt support
|
|
21
|
+
// TODO: remove this when all browser we support have BigInt support
|
|
22
|
+
decision = performDraw(sampleRate);
|
|
23
|
+
}
|
|
24
|
+
sampleDecisionCache = {
|
|
25
|
+
sessionId: sessionId,
|
|
26
|
+
decision: decision
|
|
27
|
+
};
|
|
28
|
+
return decision;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Exported for tests
|
|
32
|
+
export function resetSampleDecisionCache() {
|
|
33
|
+
sampleDecisionCache = undefined;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Perform sampling using the Knuth factor method. This method offer consistent sampling result
|
|
38
|
+
* based on the provided identifier.
|
|
39
|
+
*
|
|
40
|
+
* @param identifier The identifier to use for sampling.
|
|
41
|
+
* @param sampleRate The sample rate in percentage between 0 and 100.
|
|
42
|
+
*/
|
|
43
|
+
export function sampleUsingKnuthFactor(identifier, sampleRate) {
|
|
44
|
+
// The formula is:
|
|
45
|
+
//
|
|
46
|
+
// (identifier * knuthFactor) % 2^64 < sampleRate * 2^64
|
|
47
|
+
//
|
|
48
|
+
// Because JavaScript numbers are 64-bit floats, we can't represent 64-bit integers, and the
|
|
49
|
+
// modulo would be incorrect. Thus, we are using BigInts here.
|
|
50
|
+
|
|
51
|
+
// Note: All implementations have slight variations. Some of them use '<=' instead of '<', and
|
|
52
|
+
// use `sampleRate * 2^64 - 1` instead of `sampleRate * 2^64`. The following implementation
|
|
53
|
+
// should adhere to the spec and is a bit simpler than using a 2^64-1 limit as there are less
|
|
54
|
+
// BigInt arithmetic to write. In practice this does not matter, as we are using floating point
|
|
55
|
+
// numbers in the end, and Number(2n**64n-1n) === Number(2n**64n).
|
|
56
|
+
var knuthFactor = BigInt('1111111111111111111');
|
|
57
|
+
var twoPow64 = BigInt('0x10000000000000000'); // 2n ** 64n
|
|
58
|
+
var hash = identifier * knuthFactor % twoPow64;
|
|
59
|
+
return Number(hash) <= sampleRate / 100 * Number(twoPow64);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=sampler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampler.js","names":["performDraw","sampleDecisionCache","isTraceSampled","sessionId","sampleRate","decision","window","BigInt","sampleUsingKnuthFactor","concat","split","resetSampleDecisionCache","undefined","identifier","knuthFactor","twoPow64","hash","Number"],"sources":["../../../../rum/src/domain/tracing/sampler.js"],"sourcesContent":["import { performDraw } from '@cloudcare/browser-core'\n\nlet sampleDecisionCache\n\nexport function isTraceSampled(sessionId, sampleRate) {\n // Shortcuts for common cases. This is not strictly necessary, but it makes the code faster for\n // customers willing to ingest all traces.\n if (sampleRate === 100) {\n return true\n }\n\n if (sampleRate === 0) {\n return false\n }\n\n if (sampleDecisionCache && sessionId === sampleDecisionCache.sessionId) {\n return sampleDecisionCache.decision\n }\n\n let decision\n // @ts-expect-error BigInt might not be defined in every browser we support\n if (window.BigInt) {\n decision = sampleUsingKnuthFactor(\n BigInt(`0x${sessionId.split('-')[4]}`),\n sampleRate\n )\n } else {\n // For simplicity, we don't use consistent sampling for browser without BigInt support\n // TODO: remove this when all browser we support have BigInt support\n decision = performDraw(sampleRate)\n }\n sampleDecisionCache = { sessionId, decision }\n return decision\n}\n\n// Exported for tests\nexport function resetSampleDecisionCache() {\n sampleDecisionCache = undefined\n}\n\n/**\n * Perform sampling using the Knuth factor method. This method offer consistent sampling result\n * based on the provided identifier.\n *\n * @param identifier The identifier to use for sampling.\n * @param sampleRate The sample rate in percentage between 0 and 100.\n */\nexport function sampleUsingKnuthFactor(identifier, sampleRate) {\n // The formula is:\n //\n // (identifier * knuthFactor) % 2^64 < sampleRate * 2^64\n //\n // Because JavaScript numbers are 64-bit floats, we can't represent 64-bit integers, and the\n // modulo would be incorrect. Thus, we are using BigInts here.\n\n // Note: All implementations have slight variations. Some of them use '<=' instead of '<', and\n // use `sampleRate * 2^64 - 1` instead of `sampleRate * 2^64`. The following implementation\n // should adhere to the spec and is a bit simpler than using a 2^64-1 limit as there are less\n // BigInt arithmetic to write. In practice this does not matter, as we are using floating point\n // numbers in the end, and Number(2n**64n-1n) === Number(2n**64n).\n const knuthFactor = BigInt('1111111111111111111')\n const twoPow64 = BigInt('0x10000000000000000') // 2n ** 64n\n const hash = (identifier * knuthFactor) % twoPow64\n return Number(hash) <= (sampleRate / 100) * Number(twoPow64)\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,yBAAyB;AAErD,IAAIC,mBAAmB;AAEvB,OAAO,SAASC,cAAcA,CAACC,SAAS,EAAEC,UAAU,EAAE;EACpD;EACA;EACA,IAAIA,UAAU,KAAK,GAAG,EAAE;IACtB,OAAO,IAAI;EACb;EAEA,IAAIA,UAAU,KAAK,CAAC,EAAE;IACpB,OAAO,KAAK;EACd;EAEA,IAAIH,mBAAmB,IAAIE,SAAS,KAAKF,mBAAmB,CAACE,SAAS,EAAE;IACtE,OAAOF,mBAAmB,CAACI,QAAQ;EACrC;EAEA,IAAIA,QAAQ;EACZ;EACA,IAAIC,MAAM,CAACC,MAAM,EAAE;IACjBF,QAAQ,GAAGG,sBAAsB,CAC/BD,MAAM,MAAAE,MAAA,CAAMN,SAAS,CAACO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EACtCN,UACF,CAAC;EACH,CAAC,MAAM;IACL;IACA;IACAC,QAAQ,GAAGL,WAAW,CAACI,UAAU,CAAC;EACpC;EACAH,mBAAmB,GAAG;IAAEE,SAAS,EAATA,SAAS;IAAEE,QAAQ,EAARA;EAAS,CAAC;EAC7C,OAAOA,QAAQ;AACjB;;AAEA;AACA,OAAO,SAASM,wBAAwBA,CAAA,EAAG;EACzCV,mBAAmB,GAAGW,SAAS;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASJ,sBAAsBA,CAACK,UAAU,EAAET,UAAU,EAAE;EAC7D;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA,IAAMU,WAAW,GAAGP,MAAM,CAAC,qBAAqB,CAAC;EACjD,IAAMQ,QAAQ,GAAGR,MAAM,CAAC,qBAAqB,CAAC,EAAC;EAC/C,IAAMS,IAAI,GAAIH,UAAU,GAAGC,WAAW,GAAIC,QAAQ;EAClD,OAAOE,MAAM,CAACD,IAAI,CAAC,IAAKZ,UAAU,GAAG,GAAG,GAAIa,MAAM,CAACF,QAAQ,CAAC;AAC9D","ignoreList":[]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { base64Encode, urlParse, getType } from '@cloudcare/browser-core';
|
|
2
|
+
// start SkyWalking
|
|
3
|
+
function uuid() {
|
|
4
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
5
|
+
/* tslint:disable */
|
|
6
|
+
var r = Math.random() * 16 | 0;
|
|
7
|
+
/* tslint:disable */
|
|
8
|
+
var v = c === 'x' ? r : r & 0x3 | 0x8;
|
|
9
|
+
return v.toString(16);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param {*} traceId
|
|
15
|
+
* @param {*} traceSegmentId
|
|
16
|
+
* @param {*} applicationId
|
|
17
|
+
* @param {*} version
|
|
18
|
+
* @param {*} requestUrlHost
|
|
19
|
+
*/
|
|
20
|
+
function getSkyWalkingSw8(traceId, traceSegmentId, applicationId, env, version, requestUrlHost) {
|
|
21
|
+
try {
|
|
22
|
+
var traceIdStr = String(base64Encode(traceId));
|
|
23
|
+
var segmentId = String(base64Encode(traceSegmentId));
|
|
24
|
+
var service = String(base64Encode(applicationId + '_rum_' + env));
|
|
25
|
+
var instance = String(base64Encode(version));
|
|
26
|
+
var endpoint = String(base64Encode(window.location.href));
|
|
27
|
+
var peer = String(base64Encode(requestUrlHost));
|
|
28
|
+
var index = '0';
|
|
29
|
+
// var values = `${1}-${traceIdStr}-${segmentId}-${index}-${service}-${instance}-${endpoint}-${peer}`;
|
|
30
|
+
return '1-' + traceIdStr + '-' + segmentId + '-' + index + '-' + service + '-' + instance + '-' + endpoint + '-' + peer;
|
|
31
|
+
} catch (err) {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @param {*} configuration
|
|
38
|
+
* @param {*} requestUrl
|
|
39
|
+
*/
|
|
40
|
+
export function SkyWalkingTracer(configuration, requestUrl, traceSampled) {
|
|
41
|
+
this._spanId = uuid();
|
|
42
|
+
this._traceId = uuid();
|
|
43
|
+
this._applicationId = configuration.applicationId;
|
|
44
|
+
this._env = configuration.env;
|
|
45
|
+
this._version = configuration.version;
|
|
46
|
+
this._urlParse = urlParse(requestUrl).getParse();
|
|
47
|
+
this._traceSampled = traceSampled;
|
|
48
|
+
if (configuration.generateTraceId && getType(configuration.generateTraceId) === 'function') {
|
|
49
|
+
var customTraceId = configuration.generateTraceId();
|
|
50
|
+
if (getType(customTraceId) === 'string') {
|
|
51
|
+
this.customTraceId = customTraceId;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
SkyWalkingTracer.prototype = {
|
|
56
|
+
isTracingSupported: function isTracingSupported() {
|
|
57
|
+
if (this._env && this._version && this._urlParse) return true;
|
|
58
|
+
return false;
|
|
59
|
+
},
|
|
60
|
+
getSpanId: function getSpanId() {
|
|
61
|
+
return this._spanId;
|
|
62
|
+
},
|
|
63
|
+
getTraceId: function getTraceId() {
|
|
64
|
+
if (this.customTraceId) {
|
|
65
|
+
return this.customTraceId;
|
|
66
|
+
}
|
|
67
|
+
return this._traceId;
|
|
68
|
+
},
|
|
69
|
+
getSkyWalkingSw8: function getSkyWalkingSw8() {
|
|
70
|
+
try {
|
|
71
|
+
var traceIdStr = String(base64Encode(this.getTraceId()));
|
|
72
|
+
var segmentId = String(base64Encode(this.getSpanId()));
|
|
73
|
+
var service = String(base64Encode(this._applicationId + '_rum_' + this._env));
|
|
74
|
+
var instance = String(base64Encode(this._version));
|
|
75
|
+
var endpoint = String(base64Encode(window.location.href));
|
|
76
|
+
var peer = String(base64Encode(this._urlParse.Host));
|
|
77
|
+
var index = '0';
|
|
78
|
+
// var values = `${1}-${traceIdStr}-${segmentId}-${index}-${service}-${instance}-${endpoint}-${peer}`;
|
|
79
|
+
return (this._traceSampled ? '1' : '0') + '-' + traceIdStr + '-' + segmentId + '-' + index + '-' + service + '-' + instance + '-' + endpoint + '-' + peer;
|
|
80
|
+
} catch (err) {
|
|
81
|
+
return '';
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
makeTracingHeaders: function makeTracingHeaders() {
|
|
85
|
+
return {
|
|
86
|
+
sw8: this.getSkyWalkingSw8()
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=skywalkingTracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skywalkingTracer.js","names":["base64Encode","urlParse","getType","uuid","replace","c","r","Math","random","v","toString","getSkyWalkingSw8","traceId","traceSegmentId","applicationId","env","version","requestUrlHost","traceIdStr","String","segmentId","service","instance","endpoint","window","location","href","peer","index","err","SkyWalkingTracer","configuration","requestUrl","traceSampled","_spanId","_traceId","_applicationId","_env","_version","_urlParse","getParse","_traceSampled","generateTraceId","customTraceId","prototype","isTracingSupported","getSpanId","getTraceId","Host","makeTracingHeaders","sw8"],"sources":["../../../../rum/src/domain/tracing/skywalkingTracer.js"],"sourcesContent":["import { base64Encode, urlParse, getType } from '@cloudcare/browser-core'\n// start SkyWalking\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n /* tslint:disable */\n var r = (Math.random() * 16) | 0\n /* tslint:disable */\n var v = c === 'x' ? r : (r & 0x3) | 0x8\n\n return v.toString(16)\n })\n}\n/**\n *\n * @param {*} traceId\n * @param {*} traceSegmentId\n * @param {*} applicationId\n * @param {*} version\n * @param {*} requestUrlHost\n */\nfunction getSkyWalkingSw8(\n traceId,\n traceSegmentId,\n applicationId,\n env,\n version,\n requestUrlHost\n) {\n try {\n var traceIdStr = String(base64Encode(traceId))\n var segmentId = String(base64Encode(traceSegmentId))\n var service = String(base64Encode(applicationId + '_rum_' + env))\n var instance = String(base64Encode(version))\n var endpoint = String(base64Encode(window.location.href))\n var peer = String(base64Encode(requestUrlHost))\n var index = '0'\n // var values = `${1}-${traceIdStr}-${segmentId}-${index}-${service}-${instance}-${endpoint}-${peer}`;\n return (\n '1-' +\n traceIdStr +\n '-' +\n segmentId +\n '-' +\n index +\n '-' +\n service +\n '-' +\n instance +\n '-' +\n endpoint +\n '-' +\n peer\n )\n } catch (err) {\n return ''\n }\n}\n/**\n *\n * @param {*} configuration\n * @param {*} requestUrl\n */\nexport function SkyWalkingTracer(configuration, requestUrl, traceSampled) {\n this._spanId = uuid()\n this._traceId = uuid()\n this._applicationId = configuration.applicationId\n this._env = configuration.env\n this._version = configuration.version\n this._urlParse = urlParse(requestUrl).getParse()\n this._traceSampled = traceSampled\n if (\n configuration.generateTraceId &&\n getType(configuration.generateTraceId) === 'function'\n ) {\n const customTraceId = configuration.generateTraceId()\n if (getType(customTraceId) === 'string') {\n this.customTraceId = customTraceId\n }\n }\n}\nSkyWalkingTracer.prototype = {\n isTracingSupported: function () {\n if (this._env && this._version && this._urlParse) return true\n return false\n },\n getSpanId: function () {\n return this._spanId\n },\n getTraceId: function () {\n if (this.customTraceId) {\n return this.customTraceId\n }\n return this._traceId\n },\n getSkyWalkingSw8: function () {\n try {\n var traceIdStr = String(base64Encode(this.getTraceId()))\n var segmentId = String(base64Encode(this.getSpanId()))\n var service = String(\n base64Encode(this._applicationId + '_rum_' + this._env)\n )\n var instance = String(base64Encode(this._version))\n var endpoint = String(base64Encode(window.location.href))\n var peer = String(base64Encode(this._urlParse.Host))\n var index = '0'\n // var values = `${1}-${traceIdStr}-${segmentId}-${index}-${service}-${instance}-${endpoint}-${peer}`;\n return (\n (this._traceSampled ? '1' : '0') +\n '-' +\n traceIdStr +\n '-' +\n segmentId +\n '-' +\n index +\n '-' +\n service +\n '-' +\n instance +\n '-' +\n endpoint +\n '-' +\n peer\n )\n } catch (err) {\n return ''\n }\n },\n makeTracingHeaders: function () {\n return {\n sw8: this.getSkyWalkingSw8()\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export function TraceIdentifier() {
|
|
2
|
+
this.buffer = new Uint8Array(8);
|
|
3
|
+
getCrypto().getRandomValues(this.buffer);
|
|
4
|
+
this.buffer[0] = this.buffer[0] & 0x7f;
|
|
5
|
+
}
|
|
6
|
+
TraceIdentifier.prototype = {
|
|
7
|
+
// buffer: new Uint8Array(8),
|
|
8
|
+
toString: function toString(radix) {
|
|
9
|
+
var high = this.readInt32(0);
|
|
10
|
+
var low = this.readInt32(4);
|
|
11
|
+
var str = '';
|
|
12
|
+
do {
|
|
13
|
+
var mod = high % radix * 4294967296 + low;
|
|
14
|
+
high = Math.floor(high / radix);
|
|
15
|
+
low = Math.floor(mod / radix);
|
|
16
|
+
str = (mod % radix).toString(radix) + str;
|
|
17
|
+
} while (high || low);
|
|
18
|
+
return str;
|
|
19
|
+
},
|
|
20
|
+
toDecimalString: function toDecimalString() {
|
|
21
|
+
return this.toString(10);
|
|
22
|
+
},
|
|
23
|
+
/**
|
|
24
|
+
* Format used by OTel headers
|
|
25
|
+
*/
|
|
26
|
+
toPaddedHexadecimalString: function toPaddedHexadecimalString() {
|
|
27
|
+
var traceId = this.toString(16);
|
|
28
|
+
return Array(17 - traceId.length).join('0') + traceId;
|
|
29
|
+
},
|
|
30
|
+
readInt32: function readInt32(offset) {
|
|
31
|
+
return this.buffer[offset] * 16777216 + (this.buffer[offset + 1] << 16) + (this.buffer[offset + 2] << 8) + this.buffer[offset + 3];
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
export function getCrypto() {
|
|
35
|
+
return window.crypto || window.msCrypto;
|
|
36
|
+
}
|
|
37
|
+
export function createRandomHexIdentifier(byteLength) {
|
|
38
|
+
var buffer = new Uint8Array(byteLength);
|
|
39
|
+
getCrypto().getRandomValues(buffer);
|
|
40
|
+
var parts = [];
|
|
41
|
+
for (var i = 0; i < buffer.length; i += 1) {
|
|
42
|
+
var hex = buffer[i].toString(16);
|
|
43
|
+
parts.push(hex.length === 1 ? '0' + hex : hex);
|
|
44
|
+
}
|
|
45
|
+
return parts.join('');
|
|
46
|
+
}
|
|
47
|
+
export function normalizeHexIdentifier(value, allowedLengths) {
|
|
48
|
+
if (typeof value !== 'string') {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
var normalized = value.toLowerCase();
|
|
52
|
+
if (allowedLengths.indexOf(normalized.length) === -1) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
return /^[0-9a-f]+$/.test(normalized) ? normalized : undefined;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=traceIdentifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traceIdentifier.js","names":["TraceIdentifier","buffer","Uint8Array","getCrypto","getRandomValues","prototype","toString","radix","high","readInt32","low","str","mod","Math","floor","toDecimalString","toPaddedHexadecimalString","traceId","Array","length","join","offset","window","crypto","msCrypto","createRandomHexIdentifier","byteLength","parts","i","hex","push","normalizeHexIdentifier","value","allowedLengths","undefined","normalized","toLowerCase","indexOf","test"],"sources":["../../../../rum/src/domain/tracing/traceIdentifier.js"],"sourcesContent":["export function TraceIdentifier() {\n this.buffer = new Uint8Array(8)\n getCrypto().getRandomValues(this.buffer)\n this.buffer[0] = this.buffer[0] & 0x7f\n}\n\nTraceIdentifier.prototype = {\n // buffer: new Uint8Array(8),\n toString: function (radix) {\n var high = this.readInt32(0)\n var low = this.readInt32(4)\n var str = ''\n\n do {\n var mod = (high % radix) * 4294967296 + low\n high = Math.floor(high / radix)\n low = Math.floor(mod / radix)\n str = (mod % radix).toString(radix) + str\n } while (high || low)\n return str\n },\n toDecimalString: function () {\n return this.toString(10)\n },\n /**\n * Format used by OTel headers\n */\n toPaddedHexadecimalString() {\n var traceId = this.toString(16)\n return Array(17 - traceId.length).join('0') + traceId\n },\n readInt32: function (offset) {\n return (\n this.buffer[offset] * 16777216 +\n (this.buffer[offset + 1] << 16) +\n (this.buffer[offset + 2] << 8) +\n this.buffer[offset + 3]\n )\n }\n}\nexport function getCrypto() {\n return window.crypto || window.msCrypto\n}\n\nexport function createRandomHexIdentifier(byteLength) {\n var buffer = new Uint8Array(byteLength)\n getCrypto().getRandomValues(buffer)\n var parts = []\n for (var i = 0; i < buffer.length; i += 1) {\n var hex = buffer[i].toString(16)\n parts.push(hex.length === 1 ? '0' + hex : hex)\n }\n return parts.join('')\n}\n\nexport function normalizeHexIdentifier(value, allowedLengths) {\n if (typeof value !== 'string') {\n return undefined\n }\n\n var normalized = value.toLowerCase()\n if (allowedLengths.indexOf(normalized.length) === -1) {\n return undefined\n }\n\n return /^[0-9a-f]+$/.test(normalized) ? normalized : undefined\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { objectEntries, each, shallowClone, isArray, TraceType, performDraw, isNumber, getType, find, isMatchOption, matchList, isString } from '@cloudcare/browser-core';
|
|
2
|
+
import { DDtraceTracer } from './ddtraceTracer';
|
|
3
|
+
import { SkyWalkingTracer } from './skywalkingTracer';
|
|
4
|
+
import { JaegerTracer } from './jaegerTracer';
|
|
5
|
+
import { ZipkinSingleTracer } from './zipkinSingleTracer';
|
|
6
|
+
import { ZipkinMultiTracer } from './zipkinMultiTracer';
|
|
7
|
+
import { W3cTraceParentTracer } from './w3cTraceParentTracer';
|
|
8
|
+
import { isTraceSampled } from './sampler';
|
|
9
|
+
export function isTracingOption(item) {
|
|
10
|
+
var expectedItem = item;
|
|
11
|
+
return getType(expectedItem) === 'object' && isMatchOption(expectedItem.match) && isString(expectedItem.traceType);
|
|
12
|
+
}
|
|
13
|
+
export function clearTracingIfNeeded(context) {
|
|
14
|
+
if (context.status === 0 && !context.isAborted) {
|
|
15
|
+
context.traceId = undefined;
|
|
16
|
+
context.spanId = undefined;
|
|
17
|
+
context.traceSampled = undefined;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function startTracer(configuration, sessionManager) {
|
|
21
|
+
return {
|
|
22
|
+
clearTracingIfNeeded: clearTracingIfNeeded,
|
|
23
|
+
traceFetch: function traceFetch(context) {
|
|
24
|
+
return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {
|
|
25
|
+
if (context.input instanceof Request && (!context.init || !context.init.headers)) {
|
|
26
|
+
context.input = new Request(context.input);
|
|
27
|
+
each(tracingHeaders, function (value, key) {
|
|
28
|
+
context.input.headers.append(key, value);
|
|
29
|
+
});
|
|
30
|
+
} else {
|
|
31
|
+
context.init = shallowClone(context.init);
|
|
32
|
+
var headers = [];
|
|
33
|
+
if (context.init.headers instanceof Headers) {
|
|
34
|
+
context.init.headers.forEach(function (value, key) {
|
|
35
|
+
headers.push([key, value]);
|
|
36
|
+
});
|
|
37
|
+
} else if (isArray(context.init.headers)) {
|
|
38
|
+
each(context.init.headers, function (header) {
|
|
39
|
+
headers.push(header);
|
|
40
|
+
});
|
|
41
|
+
} else if (context.init.headers) {
|
|
42
|
+
each(context.init.headers, function (value, key) {
|
|
43
|
+
headers.push([key, value]);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
// context.init.headers = headers.concat(objectEntries(tracingHeaders))
|
|
47
|
+
var headersMap = {};
|
|
48
|
+
each(headers.concat(objectEntries(tracingHeaders)), function (header) {
|
|
49
|
+
headersMap[header[0]] = header[1];
|
|
50
|
+
});
|
|
51
|
+
context.init.headers = headersMap;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
traceXhr: function traceXhr(context, xhr) {
|
|
56
|
+
return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {
|
|
57
|
+
each(tracingHeaders, function (value, name) {
|
|
58
|
+
xhr.setRequestHeader(name, value);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export function injectHeadersIfTracingAllowed(configuration, context, sessionManager, inject) {
|
|
65
|
+
var session = sessionManager.findTrackedSession();
|
|
66
|
+
if (!session) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
var tracingOption = find(configuration.allowedTracingUrls, function (tracingOption) {
|
|
70
|
+
return matchList([tracingOption.match], context.url, true);
|
|
71
|
+
});
|
|
72
|
+
if (!tracingOption) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
var traceSampled = isTraceSampled(session.id, configuration.tracingSampleRate);
|
|
76
|
+
|
|
77
|
+
// if (!traceSampled) return
|
|
78
|
+
var tracer,
|
|
79
|
+
traceType = tracingOption.traceType;
|
|
80
|
+
switch (traceType) {
|
|
81
|
+
case TraceType.DDTRACE:
|
|
82
|
+
tracer = new DDtraceTracer(configuration, traceSampled);
|
|
83
|
+
break;
|
|
84
|
+
case TraceType.SKYWALKING_V3:
|
|
85
|
+
tracer = new SkyWalkingTracer(configuration, context.url, traceSampled);
|
|
86
|
+
break;
|
|
87
|
+
case TraceType.ZIPKIN_MULTI_HEADER:
|
|
88
|
+
tracer = new ZipkinMultiTracer(configuration, traceSampled);
|
|
89
|
+
break;
|
|
90
|
+
case TraceType.JAEGER:
|
|
91
|
+
tracer = new JaegerTracer(configuration, traceSampled);
|
|
92
|
+
break;
|
|
93
|
+
case TraceType.W3C_TRACEPARENT:
|
|
94
|
+
tracer = new W3cTraceParentTracer(configuration, traceSampled);
|
|
95
|
+
break;
|
|
96
|
+
case TraceType.W3C_TRACEPARENT_64:
|
|
97
|
+
tracer = new W3cTraceParentTracer(configuration, traceSampled, true);
|
|
98
|
+
break;
|
|
99
|
+
case TraceType.ZIPKIN_SINGLE_HEADER:
|
|
100
|
+
tracer = new ZipkinSingleTracer(configuration, traceSampled);
|
|
101
|
+
break;
|
|
102
|
+
default:
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
if (!tracer || !tracer.isTracingSupported()) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
context.traceId = tracer.getTraceId();
|
|
109
|
+
context.spanId = tracer.getSpanId();
|
|
110
|
+
context.traceSampled = traceSampled;
|
|
111
|
+
var headers = tracer.makeTracingHeaders();
|
|
112
|
+
if (configuration.injectTraceHeader) {
|
|
113
|
+
var result = configuration.injectTraceHeader(shallowClone(context));
|
|
114
|
+
if (getType(result) === 'object') {
|
|
115
|
+
each(result, function (value, key) {
|
|
116
|
+
if (getType(value) === 'string') {
|
|
117
|
+
headers[key] = value;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
inject(headers);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=tracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.js","names":["objectEntries","each","shallowClone","isArray","TraceType","performDraw","isNumber","getType","find","isMatchOption","matchList","isString","DDtraceTracer","SkyWalkingTracer","JaegerTracer","ZipkinSingleTracer","ZipkinMultiTracer","W3cTraceParentTracer","isTraceSampled","isTracingOption","item","expectedItem","match","traceType","clearTracingIfNeeded","context","status","isAborted","traceId","undefined","spanId","traceSampled","startTracer","configuration","sessionManager","traceFetch","injectHeadersIfTracingAllowed","tracingHeaders","input","Request","init","headers","value","key","append","Headers","forEach","push","header","headersMap","concat","traceXhr","xhr","name","setRequestHeader","inject","session","findTrackedSession","tracingOption","allowedTracingUrls","url","id","tracingSampleRate","tracer","DDTRACE","SKYWALKING_V3","ZIPKIN_MULTI_HEADER","JAEGER","W3C_TRACEPARENT","W3C_TRACEPARENT_64","ZIPKIN_SINGLE_HEADER","isTracingSupported","getTraceId","getSpanId","makeTracingHeaders","injectTraceHeader","result"],"sources":["../../../../rum/src/domain/tracing/tracer.js"],"sourcesContent":["import {\n objectEntries,\n each,\n shallowClone,\n isArray,\n TraceType,\n performDraw,\n isNumber,\n getType,\n find,\n isMatchOption,\n matchList,\n isString\n} from '@cloudcare/browser-core'\nimport { DDtraceTracer } from './ddtraceTracer'\nimport { SkyWalkingTracer } from './skywalkingTracer'\nimport { JaegerTracer } from './jaegerTracer'\nimport { ZipkinSingleTracer } from './zipkinSingleTracer'\nimport { ZipkinMultiTracer } from './zipkinMultiTracer'\nimport { W3cTraceParentTracer } from './w3cTraceParentTracer'\nimport { isTraceSampled } from './sampler'\nexport function isTracingOption(item) {\n var expectedItem = item\n return (\n getType(expectedItem) === 'object' &&\n isMatchOption(expectedItem.match) &&\n isString(expectedItem.traceType)\n )\n}\nexport function clearTracingIfNeeded(context) {\n if (context.status === 0 && !context.isAborted) {\n context.traceId = undefined\n context.spanId = undefined\n context.traceSampled = undefined\n }\n}\n\nexport function startTracer(configuration, sessionManager) {\n return {\n clearTracingIfNeeded: clearTracingIfNeeded,\n traceFetch: function (context) {\n return injectHeadersIfTracingAllowed(\n configuration,\n context,\n sessionManager,\n function (tracingHeaders) {\n if (\n context.input instanceof Request &&\n (!context.init || !context.init.headers)\n ) {\n context.input = new Request(context.input)\n each(tracingHeaders, function (value, key) {\n context.input.headers.append(key, value)\n })\n } else {\n context.init = shallowClone(context.init)\n var headers = []\n if (context.init.headers instanceof Headers) {\n context.init.headers.forEach(function (value, key) {\n headers.push([key, value])\n })\n } else if (isArray(context.init.headers)) {\n each(context.init.headers, function (header) {\n headers.push(header)\n })\n } else if (context.init.headers) {\n each(context.init.headers, function (value, key) {\n headers.push([key, value])\n })\n }\n // context.init.headers = headers.concat(objectEntries(tracingHeaders))\n var headersMap = {}\n each(\n headers.concat(objectEntries(tracingHeaders)),\n function (header) {\n headersMap[header[0]] = header[1]\n }\n )\n context.init.headers = headersMap\n }\n }\n )\n },\n traceXhr: function (context, xhr) {\n return injectHeadersIfTracingAllowed(\n configuration,\n context,\n sessionManager,\n function (tracingHeaders) {\n each(tracingHeaders, function (value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n )\n }\n }\n}\n\nexport function injectHeadersIfTracingAllowed(\n configuration,\n context,\n sessionManager,\n inject\n) {\n const session = sessionManager.findTrackedSession()\n if (!session) {\n return\n }\n var tracingOption = find(\n configuration.allowedTracingUrls,\n function (tracingOption) {\n return matchList([tracingOption.match], context.url, true)\n }\n )\n if (!tracingOption) {\n return\n }\n const traceSampled = isTraceSampled(\n session.id,\n configuration.tracingSampleRate\n )\n\n // if (!traceSampled) return\n var tracer,\n traceType = tracingOption.traceType\n switch (traceType) {\n case TraceType.DDTRACE:\n tracer = new DDtraceTracer(configuration, traceSampled)\n break\n case TraceType.SKYWALKING_V3:\n tracer = new SkyWalkingTracer(configuration, context.url, traceSampled)\n break\n case TraceType.ZIPKIN_MULTI_HEADER:\n tracer = new ZipkinMultiTracer(configuration, traceSampled)\n break\n case TraceType.JAEGER:\n tracer = new JaegerTracer(configuration, traceSampled)\n break\n case TraceType.W3C_TRACEPARENT:\n tracer = new W3cTraceParentTracer(configuration, traceSampled)\n break\n case TraceType.W3C_TRACEPARENT_64:\n tracer = new W3cTraceParentTracer(configuration, traceSampled, true)\n break\n case TraceType.ZIPKIN_SINGLE_HEADER:\n tracer = new ZipkinSingleTracer(configuration, traceSampled)\n break\n default:\n break\n }\n if (!tracer || !tracer.isTracingSupported()) {\n return\n }\n\n context.traceId = tracer.getTraceId()\n context.spanId = tracer.getSpanId()\n context.traceSampled = traceSampled\n var headers = tracer.makeTracingHeaders()\n if (configuration.injectTraceHeader) {\n var result = configuration.injectTraceHeader(shallowClone(context))\n if (getType(result) === 'object') {\n each(result, function (value, key) {\n if (getType(value) === 'string') {\n headers[key] = value\n }\n })\n }\n }\n inject(headers)\n}\n"],"mappings":"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","ignoreList":[]}
|