@sentry/browser 11.0.0-alpha.1 → 11.0.0-beta.0
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/build/npm/cjs/dev/client.js +5 -5
- package/build/npm/cjs/dev/client.js.map +1 -1
- package/build/npm/cjs/dev/diagnose-sdk.js +3 -3
- package/build/npm/cjs/dev/diagnose-sdk.js.map +1 -1
- package/build/npm/cjs/dev/eventbuilder.js +25 -25
- package/build/npm/cjs/dev/eventbuilder.js.map +1 -1
- package/build/npm/cjs/dev/helpers.js +13 -12
- package/build/npm/cjs/dev/helpers.js.map +1 -1
- package/build/npm/cjs/dev/index.js +87 -84
- package/build/npm/cjs/dev/index.js.map +1 -1
- package/build/npm/cjs/dev/integrations/bfcacheMetrics.js +115 -0
- package/build/npm/cjs/dev/integrations/bfcacheMetrics.js.map +1 -0
- package/build/npm/cjs/dev/integrations/breadcrumbs.js +28 -28
- package/build/npm/cjs/dev/integrations/breadcrumbs.js.map +1 -1
- package/build/npm/cjs/dev/integrations/browserapierrors.js +16 -16
- package/build/npm/cjs/dev/integrations/browserapierrors.js.map +1 -1
- package/build/npm/cjs/dev/integrations/browsersession.js +9 -9
- package/build/npm/cjs/dev/integrations/browsersession.js.map +1 -1
- package/build/npm/cjs/dev/integrations/contextlines.js +5 -5
- package/build/npm/cjs/dev/integrations/contextlines.js.map +1 -1
- package/build/npm/cjs/dev/integrations/culturecontext.js +3 -3
- package/build/npm/cjs/dev/integrations/culturecontext.js.map +1 -1
- package/build/npm/cjs/dev/integrations/featureFlags/growthbook/integration.js +2 -2
- package/build/npm/cjs/dev/integrations/featureFlags/growthbook/integration.js.map +1 -1
- package/build/npm/cjs/dev/integrations/featureFlags/launchdarkly/integration.js +5 -5
- package/build/npm/cjs/dev/integrations/featureFlags/launchdarkly/integration.js.map +1 -1
- package/build/npm/cjs/dev/integrations/featureFlags/openfeature/integration.js +7 -7
- package/build/npm/cjs/dev/integrations/featureFlags/openfeature/integration.js.map +1 -1
- package/build/npm/cjs/dev/integrations/featureFlags/statsig/integration.js +5 -5
- package/build/npm/cjs/dev/integrations/featureFlags/statsig/integration.js.map +1 -1
- package/build/npm/cjs/dev/integrations/featureFlags/unleash/integration.js +7 -7
- package/build/npm/cjs/dev/integrations/featureFlags/unleash/integration.js.map +1 -1
- package/build/npm/cjs/dev/integrations/fetchStreamPerformance.js +11 -5
- package/build/npm/cjs/dev/integrations/fetchStreamPerformance.js.map +1 -1
- package/build/npm/cjs/dev/integrations/globalhandlers.js +17 -16
- package/build/npm/cjs/dev/integrations/globalhandlers.js.map +1 -1
- package/build/npm/cjs/dev/integrations/graphqlClient.js +28 -15
- package/build/npm/cjs/dev/integrations/graphqlClient.js.map +1 -1
- package/build/npm/cjs/dev/integrations/httpclient.js +20 -23
- package/build/npm/cjs/dev/integrations/httpclient.js.map +1 -1
- package/build/npm/cjs/dev/integrations/httpcontext.js +6 -7
- package/build/npm/cjs/dev/integrations/httpcontext.js.map +1 -1
- package/build/npm/cjs/dev/integrations/linkederrors.js +3 -3
- package/build/npm/cjs/dev/integrations/linkederrors.js.map +1 -1
- package/build/npm/cjs/dev/integrations/reportingobserver.js +10 -7
- package/build/npm/cjs/dev/integrations/reportingobserver.js.map +1 -1
- package/build/npm/cjs/dev/integrations/spotlight.js +8 -7
- package/build/npm/cjs/dev/integrations/spotlight.js.map +1 -1
- package/build/npm/cjs/dev/integrations/view-hierarchy.js +4 -3
- package/build/npm/cjs/dev/integrations/view-hierarchy.js.map +1 -1
- package/build/npm/cjs/dev/integrations/webVitals.js +3 -3
- package/build/npm/cjs/dev/integrations/webVitals.js.map +1 -1
- package/build/npm/cjs/dev/integrations/webWorker.js +18 -18
- package/build/npm/cjs/dev/integrations/webWorker.js.map +1 -1
- package/build/npm/cjs/dev/profiling/UIProfiler.js +33 -33
- package/build/npm/cjs/dev/profiling/UIProfiler.js.map +1 -1
- package/build/npm/cjs/dev/profiling/index.js +7 -7
- package/build/npm/cjs/dev/profiling/index.js.map +1 -1
- package/build/npm/cjs/dev/profiling/integration.js +8 -8
- package/build/npm/cjs/dev/profiling/integration.js.map +1 -1
- package/build/npm/cjs/dev/profiling/utils.js +16 -16
- package/build/npm/cjs/dev/profiling/utils.js.map +1 -1
- package/build/npm/cjs/dev/report-dialog.js +7 -7
- package/build/npm/cjs/dev/report-dialog.js.map +1 -1
- package/build/npm/cjs/dev/sdk.js +9 -13
- package/build/npm/cjs/dev/sdk.js.map +1 -1
- package/build/npm/cjs/dev/stack-parsers.js +10 -10
- package/build/npm/cjs/dev/stack-parsers.js.map +1 -1
- package/build/npm/cjs/dev/tracing/backgroundtab.js +7 -7
- package/build/npm/cjs/dev/tracing/backgroundtab.js.map +1 -1
- package/build/npm/cjs/dev/tracing/browserTracingIntegration.js +66 -118
- package/build/npm/cjs/dev/tracing/browserTracingIntegration.js.map +1 -1
- package/build/npm/cjs/dev/tracing/linkedTraces.js +10 -12
- package/build/npm/cjs/dev/tracing/linkedTraces.js.map +1 -1
- package/build/npm/cjs/dev/tracing/reportPageLoaded.js +2 -2
- package/build/npm/cjs/dev/tracing/reportPageLoaded.js.map +1 -1
- package/build/npm/cjs/dev/tracing/request.js +40 -32
- package/build/npm/cjs/dev/tracing/request.js.map +1 -1
- package/build/npm/cjs/dev/tracing/setActiveSpan.js +5 -5
- package/build/npm/cjs/dev/tracing/setActiveSpan.js.map +1 -1
- package/build/npm/cjs/dev/transports/fetch.js +3 -3
- package/build/npm/cjs/dev/transports/fetch.js.map +1 -1
- package/build/npm/cjs/dev/transports/offline.js +5 -5
- package/build/npm/cjs/dev/transports/offline.js.map +1 -1
- package/build/npm/cjs/dev/userfeedback.js +3 -3
- package/build/npm/cjs/dev/userfeedback.js.map +1 -1
- package/build/npm/cjs/dev/utils/detectBrowserExtension.js +4 -3
- package/build/npm/cjs/dev/utils/detectBrowserExtension.js.map +1 -1
- package/build/npm/cjs/dev/utils/lazyLoadIntegration.js +4 -3
- package/build/npm/cjs/dev/utils/lazyLoadIntegration.js.map +1 -1
- package/build/npm/cjs/prod/client.js +5 -5
- package/build/npm/cjs/prod/client.js.map +1 -1
- package/build/npm/cjs/prod/diagnose-sdk.js +3 -3
- package/build/npm/cjs/prod/diagnose-sdk.js.map +1 -1
- package/build/npm/cjs/prod/eventbuilder.js +25 -25
- package/build/npm/cjs/prod/eventbuilder.js.map +1 -1
- package/build/npm/cjs/prod/helpers.js +13 -12
- package/build/npm/cjs/prod/helpers.js.map +1 -1
- package/build/npm/cjs/prod/index.js +87 -84
- package/build/npm/cjs/prod/index.js.map +1 -1
- package/build/npm/cjs/prod/integrations/bfcacheMetrics.js +115 -0
- package/build/npm/cjs/prod/integrations/bfcacheMetrics.js.map +1 -0
- package/build/npm/cjs/prod/integrations/breadcrumbs.js +28 -28
- package/build/npm/cjs/prod/integrations/breadcrumbs.js.map +1 -1
- package/build/npm/cjs/prod/integrations/browserapierrors.js +16 -16
- package/build/npm/cjs/prod/integrations/browserapierrors.js.map +1 -1
- package/build/npm/cjs/prod/integrations/browsersession.js +9 -9
- package/build/npm/cjs/prod/integrations/browsersession.js.map +1 -1
- package/build/npm/cjs/prod/integrations/contextlines.js +5 -5
- package/build/npm/cjs/prod/integrations/contextlines.js.map +1 -1
- package/build/npm/cjs/prod/integrations/culturecontext.js +3 -3
- package/build/npm/cjs/prod/integrations/culturecontext.js.map +1 -1
- package/build/npm/cjs/prod/integrations/featureFlags/growthbook/integration.js +2 -2
- package/build/npm/cjs/prod/integrations/featureFlags/growthbook/integration.js.map +1 -1
- package/build/npm/cjs/prod/integrations/featureFlags/launchdarkly/integration.js +5 -5
- package/build/npm/cjs/prod/integrations/featureFlags/launchdarkly/integration.js.map +1 -1
- package/build/npm/cjs/prod/integrations/featureFlags/openfeature/integration.js +7 -7
- package/build/npm/cjs/prod/integrations/featureFlags/openfeature/integration.js.map +1 -1
- package/build/npm/cjs/prod/integrations/featureFlags/statsig/integration.js +5 -5
- package/build/npm/cjs/prod/integrations/featureFlags/statsig/integration.js.map +1 -1
- package/build/npm/cjs/prod/integrations/featureFlags/unleash/integration.js +7 -7
- package/build/npm/cjs/prod/integrations/featureFlags/unleash/integration.js.map +1 -1
- package/build/npm/cjs/prod/integrations/fetchStreamPerformance.js +11 -5
- package/build/npm/cjs/prod/integrations/fetchStreamPerformance.js.map +1 -1
- package/build/npm/cjs/prod/integrations/globalhandlers.js +17 -16
- package/build/npm/cjs/prod/integrations/globalhandlers.js.map +1 -1
- package/build/npm/cjs/prod/integrations/graphqlClient.js +28 -15
- package/build/npm/cjs/prod/integrations/graphqlClient.js.map +1 -1
- package/build/npm/cjs/prod/integrations/httpclient.js +20 -23
- package/build/npm/cjs/prod/integrations/httpclient.js.map +1 -1
- package/build/npm/cjs/prod/integrations/httpcontext.js +6 -7
- package/build/npm/cjs/prod/integrations/httpcontext.js.map +1 -1
- package/build/npm/cjs/prod/integrations/linkederrors.js +3 -3
- package/build/npm/cjs/prod/integrations/linkederrors.js.map +1 -1
- package/build/npm/cjs/prod/integrations/reportingobserver.js +10 -7
- package/build/npm/cjs/prod/integrations/reportingobserver.js.map +1 -1
- package/build/npm/cjs/prod/integrations/spotlight.js +8 -7
- package/build/npm/cjs/prod/integrations/spotlight.js.map +1 -1
- package/build/npm/cjs/prod/integrations/view-hierarchy.js +4 -3
- package/build/npm/cjs/prod/integrations/view-hierarchy.js.map +1 -1
- package/build/npm/cjs/prod/integrations/webVitals.js +3 -3
- package/build/npm/cjs/prod/integrations/webVitals.js.map +1 -1
- package/build/npm/cjs/prod/integrations/webWorker.js +18 -18
- package/build/npm/cjs/prod/integrations/webWorker.js.map +1 -1
- package/build/npm/cjs/prod/profiling/UIProfiler.js +33 -33
- package/build/npm/cjs/prod/profiling/UIProfiler.js.map +1 -1
- package/build/npm/cjs/prod/profiling/index.js +7 -7
- package/build/npm/cjs/prod/profiling/index.js.map +1 -1
- package/build/npm/cjs/prod/profiling/integration.js +8 -8
- package/build/npm/cjs/prod/profiling/integration.js.map +1 -1
- package/build/npm/cjs/prod/profiling/utils.js +16 -16
- package/build/npm/cjs/prod/profiling/utils.js.map +1 -1
- package/build/npm/cjs/prod/report-dialog.js +7 -7
- package/build/npm/cjs/prod/report-dialog.js.map +1 -1
- package/build/npm/cjs/prod/sdk.js +9 -13
- package/build/npm/cjs/prod/sdk.js.map +1 -1
- package/build/npm/cjs/prod/stack-parsers.js +10 -10
- package/build/npm/cjs/prod/stack-parsers.js.map +1 -1
- package/build/npm/cjs/prod/tracing/backgroundtab.js +7 -7
- package/build/npm/cjs/prod/tracing/backgroundtab.js.map +1 -1
- package/build/npm/cjs/prod/tracing/browserTracingIntegration.js +66 -118
- package/build/npm/cjs/prod/tracing/browserTracingIntegration.js.map +1 -1
- package/build/npm/cjs/prod/tracing/linkedTraces.js +10 -12
- package/build/npm/cjs/prod/tracing/linkedTraces.js.map +1 -1
- package/build/npm/cjs/prod/tracing/reportPageLoaded.js +2 -2
- package/build/npm/cjs/prod/tracing/reportPageLoaded.js.map +1 -1
- package/build/npm/cjs/prod/tracing/request.js +40 -32
- package/build/npm/cjs/prod/tracing/request.js.map +1 -1
- package/build/npm/cjs/prod/tracing/setActiveSpan.js +5 -5
- package/build/npm/cjs/prod/tracing/setActiveSpan.js.map +1 -1
- package/build/npm/cjs/prod/transports/fetch.js +3 -3
- package/build/npm/cjs/prod/transports/fetch.js.map +1 -1
- package/build/npm/cjs/prod/transports/offline.js +5 -5
- package/build/npm/cjs/prod/transports/offline.js.map +1 -1
- package/build/npm/cjs/prod/userfeedback.js +3 -3
- package/build/npm/cjs/prod/userfeedback.js.map +1 -1
- package/build/npm/cjs/prod/utils/detectBrowserExtension.js +4 -3
- package/build/npm/cjs/prod/utils/detectBrowserExtension.js.map +1 -1
- package/build/npm/cjs/prod/utils/lazyLoadIntegration.js +4 -3
- package/build/npm/cjs/prod/utils/lazyLoadIntegration.js.map +1 -1
- package/build/npm/esm/dev/client.js +1 -1
- package/build/npm/esm/dev/client.js.map +1 -1
- package/build/npm/esm/dev/diagnose-sdk.js +1 -1
- package/build/npm/esm/dev/diagnose-sdk.js.map +1 -1
- package/build/npm/esm/dev/eventbuilder.js +1 -1
- package/build/npm/esm/dev/eventbuilder.js.map +1 -1
- package/build/npm/esm/dev/helpers.js +2 -1
- package/build/npm/esm/dev/helpers.js.map +1 -1
- package/build/npm/esm/dev/index.js +5 -4
- package/build/npm/esm/dev/index.js.map +1 -1
- package/build/npm/esm/dev/integrations/bfcacheMetrics.js +111 -0
- package/build/npm/esm/dev/integrations/bfcacheMetrics.js.map +1 -0
- package/build/npm/esm/dev/integrations/breadcrumbs.js +2 -2
- package/build/npm/esm/dev/integrations/breadcrumbs.js.map +1 -1
- package/build/npm/esm/dev/integrations/browserapierrors.js +1 -1
- package/build/npm/esm/dev/integrations/browserapierrors.js.map +1 -1
- package/build/npm/esm/dev/integrations/browsersession.js +1 -1
- package/build/npm/esm/dev/integrations/browsersession.js.map +1 -1
- package/build/npm/esm/dev/integrations/contextlines.js +1 -1
- package/build/npm/esm/dev/integrations/contextlines.js.map +1 -1
- package/build/npm/esm/dev/integrations/culturecontext.js +1 -1
- package/build/npm/esm/dev/integrations/culturecontext.js.map +1 -1
- package/build/npm/esm/dev/integrations/featureFlags/growthbook/integration.js +1 -1
- package/build/npm/esm/dev/integrations/featureFlags/growthbook/integration.js.map +1 -1
- package/build/npm/esm/dev/integrations/featureFlags/launchdarkly/integration.js +1 -1
- package/build/npm/esm/dev/integrations/featureFlags/launchdarkly/integration.js.map +1 -1
- package/build/npm/esm/dev/integrations/featureFlags/openfeature/integration.js +1 -1
- package/build/npm/esm/dev/integrations/featureFlags/openfeature/integration.js.map +1 -1
- package/build/npm/esm/dev/integrations/featureFlags/statsig/integration.js +1 -1
- package/build/npm/esm/dev/integrations/featureFlags/statsig/integration.js.map +1 -1
- package/build/npm/esm/dev/integrations/featureFlags/unleash/integration.js +1 -1
- package/build/npm/esm/dev/integrations/featureFlags/unleash/integration.js.map +1 -1
- package/build/npm/esm/dev/integrations/fetchStreamPerformance.js +12 -6
- package/build/npm/esm/dev/integrations/fetchStreamPerformance.js.map +1 -1
- package/build/npm/esm/dev/integrations/globalhandlers.js +2 -1
- package/build/npm/esm/dev/integrations/globalhandlers.js.map +1 -1
- package/build/npm/esm/dev/integrations/graphqlClient.js +21 -8
- package/build/npm/esm/dev/integrations/graphqlClient.js.map +1 -1
- package/build/npm/esm/dev/integrations/httpclient.js +1 -4
- package/build/npm/esm/dev/integrations/httpclient.js.map +1 -1
- package/build/npm/esm/dev/integrations/httpcontext.js +1 -2
- package/build/npm/esm/dev/integrations/httpcontext.js.map +1 -1
- package/build/npm/esm/dev/integrations/linkederrors.js +1 -1
- package/build/npm/esm/dev/integrations/linkederrors.js.map +1 -1
- package/build/npm/esm/dev/integrations/reportingobserver.js +4 -1
- package/build/npm/esm/dev/integrations/reportingobserver.js.map +1 -1
- package/build/npm/esm/dev/integrations/spotlight.js +3 -2
- package/build/npm/esm/dev/integrations/spotlight.js.map +1 -1
- package/build/npm/esm/dev/integrations/view-hierarchy.js +2 -1
- package/build/npm/esm/dev/integrations/view-hierarchy.js.map +1 -1
- package/build/npm/esm/dev/integrations/webVitals.js +1 -1
- package/build/npm/esm/dev/integrations/webVitals.js.map +1 -1
- package/build/npm/esm/dev/integrations/webWorker.js +1 -1
- package/build/npm/esm/dev/integrations/webWorker.js.map +1 -1
- package/build/npm/esm/dev/package.json +1 -1
- package/build/npm/esm/dev/profiling/UIProfiler.js +1 -1
- package/build/npm/esm/dev/profiling/UIProfiler.js.map +1 -1
- package/build/npm/esm/dev/profiling/index.js +1 -1
- package/build/npm/esm/dev/profiling/index.js.map +1 -1
- package/build/npm/esm/dev/profiling/integration.js +1 -1
- package/build/npm/esm/dev/profiling/integration.js.map +1 -1
- package/build/npm/esm/dev/profiling/utils.js +1 -1
- package/build/npm/esm/dev/profiling/utils.js.map +1 -1
- package/build/npm/esm/dev/report-dialog.js +1 -1
- package/build/npm/esm/dev/report-dialog.js.map +1 -1
- package/build/npm/esm/dev/sdk.js +1 -5
- package/build/npm/esm/dev/sdk.js.map +1 -1
- package/build/npm/esm/dev/stack-parsers.js +1 -1
- package/build/npm/esm/dev/stack-parsers.js.map +1 -1
- package/build/npm/esm/dev/tracing/backgroundtab.js +1 -1
- package/build/npm/esm/dev/tracing/backgroundtab.js.map +1 -1
- package/build/npm/esm/dev/tracing/browserTracingIntegration.js +34 -85
- package/build/npm/esm/dev/tracing/browserTracingIntegration.js.map +1 -1
- package/build/npm/esm/dev/tracing/linkedTraces.js +1 -3
- package/build/npm/esm/dev/tracing/linkedTraces.js.map +1 -1
- package/build/npm/esm/dev/tracing/reportPageLoaded.js +1 -1
- package/build/npm/esm/dev/tracing/reportPageLoaded.js.map +1 -1
- package/build/npm/esm/dev/tracing/request.js +21 -13
- package/build/npm/esm/dev/tracing/request.js.map +1 -1
- package/build/npm/esm/dev/tracing/setActiveSpan.js +1 -1
- package/build/npm/esm/dev/tracing/setActiveSpan.js.map +1 -1
- package/build/npm/esm/dev/transports/fetch.js +1 -1
- package/build/npm/esm/dev/transports/fetch.js.map +1 -1
- package/build/npm/esm/dev/transports/offline.js +1 -1
- package/build/npm/esm/dev/transports/offline.js.map +1 -1
- package/build/npm/esm/dev/userfeedback.js +1 -1
- package/build/npm/esm/dev/userfeedback.js.map +1 -1
- package/build/npm/esm/dev/utils/detectBrowserExtension.js +2 -1
- package/build/npm/esm/dev/utils/detectBrowserExtension.js.map +1 -1
- package/build/npm/esm/dev/utils/lazyLoadIntegration.js +2 -1
- package/build/npm/esm/dev/utils/lazyLoadIntegration.js.map +1 -1
- package/build/npm/esm/prod/client.js +1 -1
- package/build/npm/esm/prod/client.js.map +1 -1
- package/build/npm/esm/prod/diagnose-sdk.js +1 -1
- package/build/npm/esm/prod/diagnose-sdk.js.map +1 -1
- package/build/npm/esm/prod/eventbuilder.js +1 -1
- package/build/npm/esm/prod/eventbuilder.js.map +1 -1
- package/build/npm/esm/prod/helpers.js +2 -1
- package/build/npm/esm/prod/helpers.js.map +1 -1
- package/build/npm/esm/prod/index.js +5 -4
- package/build/npm/esm/prod/index.js.map +1 -1
- package/build/npm/esm/prod/integrations/bfcacheMetrics.js +111 -0
- package/build/npm/esm/prod/integrations/bfcacheMetrics.js.map +1 -0
- package/build/npm/esm/prod/integrations/breadcrumbs.js +2 -2
- package/build/npm/esm/prod/integrations/breadcrumbs.js.map +1 -1
- package/build/npm/esm/prod/integrations/browserapierrors.js +1 -1
- package/build/npm/esm/prod/integrations/browserapierrors.js.map +1 -1
- package/build/npm/esm/prod/integrations/browsersession.js +1 -1
- package/build/npm/esm/prod/integrations/browsersession.js.map +1 -1
- package/build/npm/esm/prod/integrations/contextlines.js +1 -1
- package/build/npm/esm/prod/integrations/contextlines.js.map +1 -1
- package/build/npm/esm/prod/integrations/culturecontext.js +1 -1
- package/build/npm/esm/prod/integrations/culturecontext.js.map +1 -1
- package/build/npm/esm/prod/integrations/featureFlags/growthbook/integration.js +1 -1
- package/build/npm/esm/prod/integrations/featureFlags/growthbook/integration.js.map +1 -1
- package/build/npm/esm/prod/integrations/featureFlags/launchdarkly/integration.js +1 -1
- package/build/npm/esm/prod/integrations/featureFlags/launchdarkly/integration.js.map +1 -1
- package/build/npm/esm/prod/integrations/featureFlags/openfeature/integration.js +1 -1
- package/build/npm/esm/prod/integrations/featureFlags/openfeature/integration.js.map +1 -1
- package/build/npm/esm/prod/integrations/featureFlags/statsig/integration.js +1 -1
- package/build/npm/esm/prod/integrations/featureFlags/statsig/integration.js.map +1 -1
- package/build/npm/esm/prod/integrations/featureFlags/unleash/integration.js +1 -1
- package/build/npm/esm/prod/integrations/featureFlags/unleash/integration.js.map +1 -1
- package/build/npm/esm/prod/integrations/fetchStreamPerformance.js +12 -6
- package/build/npm/esm/prod/integrations/fetchStreamPerformance.js.map +1 -1
- package/build/npm/esm/prod/integrations/globalhandlers.js +2 -1
- package/build/npm/esm/prod/integrations/globalhandlers.js.map +1 -1
- package/build/npm/esm/prod/integrations/graphqlClient.js +21 -8
- package/build/npm/esm/prod/integrations/graphqlClient.js.map +1 -1
- package/build/npm/esm/prod/integrations/httpclient.js +1 -4
- package/build/npm/esm/prod/integrations/httpclient.js.map +1 -1
- package/build/npm/esm/prod/integrations/httpcontext.js +1 -2
- package/build/npm/esm/prod/integrations/httpcontext.js.map +1 -1
- package/build/npm/esm/prod/integrations/linkederrors.js +1 -1
- package/build/npm/esm/prod/integrations/linkederrors.js.map +1 -1
- package/build/npm/esm/prod/integrations/reportingobserver.js +4 -1
- package/build/npm/esm/prod/integrations/reportingobserver.js.map +1 -1
- package/build/npm/esm/prod/integrations/spotlight.js +3 -2
- package/build/npm/esm/prod/integrations/spotlight.js.map +1 -1
- package/build/npm/esm/prod/integrations/view-hierarchy.js +2 -1
- package/build/npm/esm/prod/integrations/view-hierarchy.js.map +1 -1
- package/build/npm/esm/prod/integrations/webVitals.js +1 -1
- package/build/npm/esm/prod/integrations/webVitals.js.map +1 -1
- package/build/npm/esm/prod/integrations/webWorker.js +1 -1
- package/build/npm/esm/prod/integrations/webWorker.js.map +1 -1
- package/build/npm/esm/prod/package.json +1 -1
- package/build/npm/esm/prod/profiling/UIProfiler.js +1 -1
- package/build/npm/esm/prod/profiling/UIProfiler.js.map +1 -1
- package/build/npm/esm/prod/profiling/index.js +1 -1
- package/build/npm/esm/prod/profiling/index.js.map +1 -1
- package/build/npm/esm/prod/profiling/integration.js +1 -1
- package/build/npm/esm/prod/profiling/integration.js.map +1 -1
- package/build/npm/esm/prod/profiling/utils.js +1 -1
- package/build/npm/esm/prod/profiling/utils.js.map +1 -1
- package/build/npm/esm/prod/report-dialog.js +1 -1
- package/build/npm/esm/prod/report-dialog.js.map +1 -1
- package/build/npm/esm/prod/sdk.js +1 -5
- package/build/npm/esm/prod/sdk.js.map +1 -1
- package/build/npm/esm/prod/stack-parsers.js +1 -1
- package/build/npm/esm/prod/stack-parsers.js.map +1 -1
- package/build/npm/esm/prod/tracing/backgroundtab.js +1 -1
- package/build/npm/esm/prod/tracing/backgroundtab.js.map +1 -1
- package/build/npm/esm/prod/tracing/browserTracingIntegration.js +34 -85
- package/build/npm/esm/prod/tracing/browserTracingIntegration.js.map +1 -1
- package/build/npm/esm/prod/tracing/linkedTraces.js +1 -3
- package/build/npm/esm/prod/tracing/linkedTraces.js.map +1 -1
- package/build/npm/esm/prod/tracing/reportPageLoaded.js +1 -1
- package/build/npm/esm/prod/tracing/reportPageLoaded.js.map +1 -1
- package/build/npm/esm/prod/tracing/request.js +21 -13
- package/build/npm/esm/prod/tracing/request.js.map +1 -1
- package/build/npm/esm/prod/tracing/setActiveSpan.js +1 -1
- package/build/npm/esm/prod/tracing/setActiveSpan.js.map +1 -1
- package/build/npm/esm/prod/transports/fetch.js +1 -1
- package/build/npm/esm/prod/transports/fetch.js.map +1 -1
- package/build/npm/esm/prod/transports/offline.js +1 -1
- package/build/npm/esm/prod/transports/offline.js.map +1 -1
- package/build/npm/esm/prod/userfeedback.js +1 -1
- package/build/npm/esm/prod/userfeedback.js.map +1 -1
- package/build/npm/esm/prod/utils/detectBrowserExtension.js +2 -1
- package/build/npm/esm/prod/utils/detectBrowserExtension.js.map +1 -1
- package/build/npm/esm/prod/utils/lazyLoadIntegration.js +2 -1
- package/build/npm/esm/prod/utils/lazyLoadIntegration.js.map +1 -1
- package/build/npm/types/client.d.ts +24 -2
- package/build/npm/types/client.d.ts.map +1 -1
- package/build/npm/types/eventbuilder.d.ts +1 -1
- package/build/npm/types/eventbuilder.d.ts.map +1 -1
- package/build/npm/types/exports.d.ts +3 -3
- package/build/npm/types/exports.d.ts.map +1 -1
- package/build/npm/types/helpers.d.ts +2 -2
- package/build/npm/types/helpers.d.ts.map +1 -1
- package/build/npm/types/index.bundle.logs.metrics.d.ts +1 -1
- package/build/npm/types/index.bundle.logs.metrics.d.ts.map +1 -1
- package/build/npm/types/index.bundle.replay.logs.metrics.d.ts +1 -1
- package/build/npm/types/index.bundle.replay.logs.metrics.d.ts.map +1 -1
- package/build/npm/types/index.bundle.tracing.d.ts +4 -3
- package/build/npm/types/index.bundle.tracing.d.ts.map +1 -1
- package/build/npm/types/index.bundle.tracing.logs.metrics.d.ts +5 -4
- package/build/npm/types/index.bundle.tracing.logs.metrics.d.ts.map +1 -1
- package/build/npm/types/index.bundle.tracing.replay.d.ts +4 -3
- package/build/npm/types/index.bundle.tracing.replay.d.ts.map +1 -1
- package/build/npm/types/index.bundle.tracing.replay.feedback.d.ts +4 -3
- package/build/npm/types/index.bundle.tracing.replay.feedback.d.ts.map +1 -1
- package/build/npm/types/index.bundle.tracing.replay.feedback.logs.metrics.d.ts +4 -3
- package/build/npm/types/index.bundle.tracing.replay.feedback.logs.metrics.d.ts.map +1 -1
- package/build/npm/types/index.bundle.tracing.replay.logs.metrics.d.ts +5 -4
- package/build/npm/types/index.bundle.tracing.replay.logs.metrics.d.ts.map +1 -1
- package/build/npm/types/index.d.ts +7 -5
- package/build/npm/types/index.d.ts.map +1 -1
- package/build/npm/types/integrations/bfcacheMetrics.d.ts +42 -0
- package/build/npm/types/integrations/bfcacheMetrics.d.ts.map +1 -0
- package/build/npm/types/integrations/breadcrumbs.d.ts.map +1 -1
- package/build/npm/types/integrations/contextlines.d.ts +1 -1
- package/build/npm/types/integrations/contextlines.d.ts.map +1 -1
- package/build/npm/types/integrations/fetchStreamPerformance.d.ts.map +1 -1
- package/build/npm/types/integrations/globalhandlers.d.ts +1 -1
- package/build/npm/types/integrations/globalhandlers.d.ts.map +1 -1
- package/build/npm/types/integrations/graphqlClient.d.ts.map +1 -1
- package/build/npm/types/integrations/interactions.d.ts +2 -0
- package/build/npm/types/integrations/interactions.d.ts.map +1 -0
- package/build/npm/types/integrations/reportingobserver.d.ts.map +1 -1
- package/build/npm/types/integrations/spotlight.d.ts.map +1 -1
- package/build/npm/types/integrations/view-hierarchy.d.ts +1 -1
- package/build/npm/types/integrations/view-hierarchy.d.ts.map +1 -1
- package/build/npm/types/integrations/webWorker.d.ts +1 -1
- package/build/npm/types/integrations/webWorker.d.ts.map +1 -1
- package/build/npm/types/integrations-bundle/index.captureconsole.d.ts +1 -1
- package/build/npm/types/integrations-bundle/index.captureconsole.d.ts.map +1 -1
- package/build/npm/types/integrations-bundle/index.dedupe.d.ts +1 -1
- package/build/npm/types/integrations-bundle/index.dedupe.d.ts.map +1 -1
- package/build/npm/types/integrations-bundle/index.extraerrordata.d.ts +1 -1
- package/build/npm/types/integrations-bundle/index.extraerrordata.d.ts.map +1 -1
- package/build/npm/types/integrations-bundle/index.feedback.d.ts +1 -1
- package/build/npm/types/integrations-bundle/index.feedback.d.ts.map +1 -1
- package/build/npm/types/integrations-bundle/index.modulemetadata.d.ts +1 -1
- package/build/npm/types/integrations-bundle/index.modulemetadata.d.ts.map +1 -1
- package/build/npm/types/integrations-bundle/index.rewriteframes.d.ts +1 -1
- package/build/npm/types/integrations-bundle/index.rewriteframes.d.ts.map +1 -1
- package/build/npm/types/pluggable-exports-bundle/index.multiplexedtransport.d.ts +1 -1
- package/build/npm/types/pluggable-exports-bundle/index.multiplexedtransport.d.ts.map +1 -1
- package/build/npm/types/profiling/UIProfiler.d.ts +1 -1
- package/build/npm/types/profiling/UIProfiler.d.ts.map +1 -1
- package/build/npm/types/profiling/index.d.ts +1 -1
- package/build/npm/types/profiling/index.d.ts.map +1 -1
- package/build/npm/types/profiling/utils.d.ts +1 -1
- package/build/npm/types/profiling/utils.d.ts.map +1 -1
- package/build/npm/types/report-dialog.d.ts +1 -1
- package/build/npm/types/report-dialog.d.ts.map +1 -1
- package/build/npm/types/sdk.d.ts +1 -1
- package/build/npm/types/sdk.d.ts.map +1 -1
- package/build/npm/types/stack-parsers.d.ts +1 -1
- package/build/npm/types/stack-parsers.d.ts.map +1 -1
- package/build/npm/types/tracing/browserTracingIntegration.d.ts +1 -10
- package/build/npm/types/tracing/browserTracingIntegration.d.ts.map +1 -1
- package/build/npm/types/tracing/linkedTraces.d.ts +2 -2
- package/build/npm/types/tracing/linkedTraces.d.ts.map +1 -1
- package/build/npm/types/tracing/reportPageLoaded.d.ts +1 -1
- package/build/npm/types/tracing/reportPageLoaded.d.ts.map +1 -1
- package/build/npm/types/tracing/request.d.ts +2 -1
- package/build/npm/types/tracing/request.d.ts.map +1 -1
- package/build/npm/types/tracing/setActiveSpan.d.ts +1 -1
- package/build/npm/types/tracing/setActiveSpan.d.ts.map +1 -1
- package/build/npm/types/transports/fetch.d.ts +1 -1
- package/build/npm/types/transports/fetch.d.ts.map +1 -1
- package/build/npm/types/transports/offline.d.ts +1 -1
- package/build/npm/types/transports/offline.d.ts.map +1 -1
- package/build/npm/types/transports/types.d.ts +1 -1
- package/build/npm/types/transports/types.d.ts.map +1 -1
- package/build/npm/types/userfeedback.d.ts +1 -1
- package/build/npm/types/userfeedback.d.ts.map +1 -1
- package/build/npm/types/utils/detectBrowserExtension.d.ts.map +1 -1
- package/build/npm/types/utils/lazyLoadIntegration.d.ts +2 -2
- package/build/npm/types/utils/lazyLoadIntegration.d.ts.map +1 -1
- package/package.json +10 -9
- package/build/npm/cjs/dev/integrations/spanstreaming.js +0 -34
- package/build/npm/cjs/dev/integrations/spanstreaming.js.map +0 -1
- package/build/npm/cjs/prod/integrations/spanstreaming.js +0 -34
- package/build/npm/cjs/prod/integrations/spanstreaming.js.map +0 -1
- package/build/npm/esm/dev/integrations/spanstreaming.js +0 -31
- package/build/npm/esm/dev/integrations/spanstreaming.js.map +0 -1
- package/build/npm/esm/prod/integrations/spanstreaming.js +0 -31
- package/build/npm/esm/prod/integrations/spanstreaming.js.map +0 -1
- package/build/npm/types/integrations/spanstreaming.d.ts +0 -5
- package/build/npm/types/integrations/spanstreaming.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-parsers.js","sources":["../../../../src/stack-parsers.ts"],"sourcesContent":["// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re - written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/core/browser';\nimport { createStackParser, UNKNOWN_FUNCTION } from '@sentry/core/browser';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func === '<anonymous>' ? UNKNOWN_FUNCTION : func,\n in_app: true, // All browser frames are considered in_app\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// This regex matches frames that have no function name (ie. are at the top level of a module).\n// For example \"at http://localhost:5000//script.js:1:126\"\n// Frames _with_ function names usually look as follows: \"at commitLayoutEffects (react-dom.development.js:23426:1)\"\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\n\n// This regex matches all the frames that have a function name.\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// Matches stack frames with data URIs instead of filename so we can still get the function name\n// Example: \"at dynamicFn (data:application/javascript,export function dynamicFn() {...\"\nconst chromeDataUriRegex = /at (.+?) ?\\(data:(.+?),/;\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn: StackLineParserFn = line => {\n const dataUriMatch = line.match(chromeDataUriRegex);\n if (dataUriMatch) {\n return {\n filename: `<data:${dataUriMatch[2]}>`,\n function: dataUriMatch[1],\n };\n }\n\n // If the stack line has no function name, we need to parse it differently\n const noFnParts = chromeRegexNoFnName.exec(line) as null | [string, string, string, string];\n\n if (noFnParts) {\n const [, filename, line, col] = noFnParts;\n return createFrame(filename, UNKNOWN_FUNCTION, +line, +col);\n }\n\n const parts = chromeRegex.exec(line) as null | [string, string, string, string, string];\n\n if (parts) {\n const isEval = parts[2]?.indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]) as null | [string, string, string, string];\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line) as null | [string, string, string, string, string, string];\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]) as null | [string, string, string];\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line) as null | [string, string, string, string, string];\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line) as null | [string, string, string, string];\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line) as null | [string, string, string, string, string, string];\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? (func.split('@')[0] as string) : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n"],"names":["UNKNOWN_FUNCTION","line","createStackParser"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stack-parsers.js","sources":["../../../../src/stack-parsers.ts"],"sourcesContent":["// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re - written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/core';\nimport { createStackParser, UNKNOWN_FUNCTION } from '@sentry/core';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func === '<anonymous>' ? UNKNOWN_FUNCTION : func,\n in_app: true, // All browser frames are considered in_app\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// This regex matches frames that have no function name (ie. are at the top level of a module).\n// For example \"at http://localhost:5000//script.js:1:126\"\n// Frames _with_ function names usually look as follows: \"at commitLayoutEffects (react-dom.development.js:23426:1)\"\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\n\n// This regex matches all the frames that have a function name.\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// Matches stack frames with data URIs instead of filename so we can still get the function name\n// Example: \"at dynamicFn (data:application/javascript,export function dynamicFn() {...\"\nconst chromeDataUriRegex = /at (.+?) ?\\(data:(.+?),/;\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn: StackLineParserFn = line => {\n const dataUriMatch = line.match(chromeDataUriRegex);\n if (dataUriMatch) {\n return {\n filename: `<data:${dataUriMatch[2]}>`,\n function: dataUriMatch[1],\n };\n }\n\n // If the stack line has no function name, we need to parse it differently\n const noFnParts = chromeRegexNoFnName.exec(line) as null | [string, string, string, string];\n\n if (noFnParts) {\n const [, filename, line, col] = noFnParts;\n return createFrame(filename, UNKNOWN_FUNCTION, +line, +col);\n }\n\n const parts = chromeRegex.exec(line) as null | [string, string, string, string, string];\n\n if (parts) {\n const isEval = parts[2]?.indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]) as null | [string, string, string, string];\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line) as null | [string, string, string, string, string, string];\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]) as null | [string, string, string];\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line) as null | [string, string, string, string, string];\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line) as null | [string, string, string, string];\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line) as null | [string, string, string, string, string, string];\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? (func.split('@')[0] as string) : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n"],"names":["UNKNOWN_FUNCTION","line","createStackParser"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const core = require('@sentry/core');
|
|
4
4
|
const debugBuild = require('../debug-build.js');
|
|
5
5
|
const helpers = require('../helpers.js');
|
|
6
6
|
const attributes = require('@sentry/conventions/attributes');
|
|
@@ -8,29 +8,29 @@ const attributes = require('@sentry/conventions/attributes');
|
|
|
8
8
|
function registerBackgroundTabDetection() {
|
|
9
9
|
if (helpers.WINDOW.document) {
|
|
10
10
|
helpers.WINDOW.document.addEventListener("visibilitychange", () => {
|
|
11
|
-
const activeSpan =
|
|
11
|
+
const activeSpan = core.getActiveSpan();
|
|
12
12
|
if (!activeSpan) {
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
|
-
const rootSpan =
|
|
15
|
+
const rootSpan = core.getRootSpan(activeSpan);
|
|
16
16
|
if (helpers.WINDOW.document.hidden && rootSpan) {
|
|
17
17
|
const cancelledStatus = "cancelled";
|
|
18
18
|
const {
|
|
19
19
|
attributes: { [attributes.SENTRY_OP]: op },
|
|
20
20
|
status
|
|
21
|
-
} =
|
|
21
|
+
} = core.spanToJSON(rootSpan);
|
|
22
22
|
if (debugBuild.DEBUG_BUILD) {
|
|
23
|
-
|
|
23
|
+
core.debug.log(`[Tracing] Transaction: ${cancelledStatus} -> since tab moved to the background, op: ${op}`);
|
|
24
24
|
}
|
|
25
25
|
if (status === "ok") {
|
|
26
|
-
rootSpan.setStatus({ code:
|
|
26
|
+
rootSpan.setStatus({ code: core.SPAN_STATUS_ERROR, message: cancelledStatus });
|
|
27
27
|
}
|
|
28
28
|
rootSpan.setAttribute("sentry.cancellation_reason", "document.hidden");
|
|
29
29
|
rootSpan.end();
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
32
|
} else {
|
|
33
|
-
debugBuild.DEBUG_BUILD &&
|
|
33
|
+
debugBuild.DEBUG_BUILD && core.debug.warn("[Tracing] Could not set up background tab detection due to lack of global document");
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backgroundtab.js","sources":["../../../../../src/tracing/backgroundtab.ts"],"sourcesContent":["import { debug, getActiveSpan, getRootSpan, SPAN_STATUS_ERROR, spanToJSON } from '@sentry/core
|
|
1
|
+
{"version":3,"file":"backgroundtab.js","sources":["../../../../../src/tracing/backgroundtab.ts"],"sourcesContent":["import { debug, getActiveSpan, getRootSpan, SPAN_STATUS_ERROR, spanToJSON } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\nimport { SENTRY_OP } from '@sentry/conventions/attributes';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection(): void {\n if (WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n const activeSpan = getActiveSpan();\n if (!activeSpan) {\n return;\n }\n\n const rootSpan = getRootSpan(activeSpan);\n\n if (WINDOW.document.hidden && rootSpan) {\n const cancelledStatus = 'cancelled';\n\n const {\n attributes: { [SENTRY_OP]: op },\n status,\n } = spanToJSON(rootSpan);\n\n if (DEBUG_BUILD) {\n debug.log(`[Tracing] Transaction: ${cancelledStatus} -> since tab moved to the background, op: ${op}`);\n }\n\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (status === 'ok') {\n rootSpan.setStatus({ code: SPAN_STATUS_ERROR, message: cancelledStatus });\n }\n\n rootSpan.setAttribute('sentry.cancellation_reason', 'document.hidden');\n rootSpan.end();\n }\n });\n } else {\n DEBUG_BUILD && debug.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n"],"names":["WINDOW","getActiveSpan","getRootSpan","SENTRY_OP","spanToJSON","DEBUG_BUILD","debug","SPAN_STATUS_ERROR"],"mappings":";;;;;;;AASO,SAAS,8BAAA,GAAuC;AACrD,EAAA,IAAIA,eAAO,QAAA,EAAU;AACnB,IAAAA,cAAA,CAAO,QAAA,CAAS,gBAAA,CAAiB,kBAAA,EAAoB,MAAM;AACzD,MAAA,MAAM,aAAaC,kBAAA,EAAc;AACjC,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,QAAA,GAAWC,iBAAY,UAAU,CAAA;AAEvC,MAAA,IAAIF,cAAA,CAAO,QAAA,CAAS,MAAA,IAAU,QAAA,EAAU;AACtC,QAAA,MAAM,eAAA,GAAkB,WAAA;AAExB,QAAA,MAAM;AAAA,UACJ,UAAA,EAAY,EAAE,CAACG,oBAAS,GAAG,EAAA,EAAG;AAAA,UAC9B;AAAA,SACF,GAAIC,gBAAW,QAAQ,CAAA;AAEvB,QAAA,IAAIC,sBAAA,EAAa;AACf,UAAAC,UAAA,CAAM,GAAA,CAAI,CAAA,uBAAA,EAA0B,eAAe,CAAA,2CAAA,EAA8C,EAAE,CAAA,CAAE,CAAA;AAAA,QACvG;AAIA,QAAA,IAAI,WAAW,IAAA,EAAM;AACnB,UAAA,QAAA,CAAS,UAAU,EAAE,IAAA,EAAMC,sBAAA,EAAmB,OAAA,EAAS,iBAAiB,CAAA;AAAA,QAC1E;AAEA,QAAA,QAAA,CAAS,YAAA,CAAa,8BAA8B,iBAAiB,CAAA;AACrE,QAAA,QAAA,CAAS,GAAA,EAAI;AAAA,MACf;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA,MAAO;AACL,IAAAF,sBAAA,IAAeC,UAAA,CAAM,KAAK,oFAAoF,CAAA;AAAA,EAChH;AACF;;;;"}
|
|
@@ -1,27 +1,20 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
|
|
3
|
+
const core = require('@sentry/core');
|
|
3
4
|
const browser = require('@sentry/core/browser');
|
|
4
5
|
const browserUtils = require('@sentry/browser-utils');
|
|
5
6
|
const debugBuild = require('../debug-build.js');
|
|
6
|
-
const core = require('@sentry/core');
|
|
7
7
|
const helpers = require('../helpers.js');
|
|
8
8
|
const webVitals = require('../integrations/webVitals.js');
|
|
9
9
|
const backgroundtab = require('./backgroundtab.js');
|
|
10
10
|
const linkedTraces = require('./linkedTraces.js');
|
|
11
11
|
const request = require('./request.js');
|
|
12
12
|
const attributes = require('@sentry/conventions/attributes');
|
|
13
|
+
const op = require('@sentry/conventions/op');
|
|
13
14
|
|
|
14
15
|
const BROWSER_TRACING_INTEGRATION_ID = "BrowserTracing";
|
|
15
|
-
const BOT_USER_AGENT_RE = /Googlebot|Google-InspectionTool|Storebot-Google|Bingbot|Slurp|DuckDuckBot|Baiduspider|YandexBot|Facebot|facebookexternalhit|LinkedInBot|Twitterbot|Applebot/i;
|
|
16
|
-
function isBotUserAgent() {
|
|
17
|
-
const nav = helpers.WINDOW.navigator;
|
|
18
|
-
if (!nav?.userAgent) {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
return BOT_USER_AGENT_RE.test(nav.userAgent);
|
|
22
|
-
}
|
|
23
16
|
const DEFAULT_BROWSER_TRACING_OPTIONS = {
|
|
24
|
-
...
|
|
17
|
+
...core.TRACING_DEFAULTS,
|
|
25
18
|
instrumentNavigation: true,
|
|
26
19
|
instrumentPageLoad: true,
|
|
27
20
|
markBackgroundSpan: true,
|
|
@@ -33,27 +26,21 @@ const DEFAULT_BROWSER_TRACING_OPTIONS = {
|
|
|
33
26
|
linkPreviousTrace: "in-memory",
|
|
34
27
|
consistentTraceSampling: false,
|
|
35
28
|
enableReportPageLoaded: false,
|
|
36
|
-
_experiments: {},
|
|
37
29
|
...request.defaultRequestInstrumentationOptions
|
|
38
30
|
};
|
|
39
31
|
const browserTracingIntegration = ((options = {}) => {
|
|
40
32
|
if ("enableElementTiming" in options) {
|
|
41
|
-
|
|
33
|
+
core.consoleSandbox(() => {
|
|
42
34
|
console.warn(
|
|
43
35
|
"[Sentry] `enableElementTiming` is deprecated and no longer has any effect. Use the standalone `elementTimingIntegration` instead."
|
|
44
36
|
);
|
|
45
37
|
});
|
|
46
38
|
}
|
|
47
|
-
const latestRoute = {
|
|
48
|
-
name: void 0,
|
|
49
|
-
source: void 0
|
|
50
|
-
};
|
|
51
39
|
const optionalWindowDocument = helpers.WINDOW.document;
|
|
52
40
|
const {
|
|
53
41
|
enableInp,
|
|
54
42
|
enableLongTask,
|
|
55
43
|
enableLongAnimationFrame,
|
|
56
|
-
_experiments: { enableInteractions },
|
|
57
44
|
beforeStartSpan,
|
|
58
45
|
idleTimeout,
|
|
59
46
|
finalTimeout,
|
|
@@ -76,33 +63,31 @@ const browserTracingIntegration = ((options = {}) => {
|
|
|
76
63
|
...DEFAULT_BROWSER_TRACING_OPTIONS,
|
|
77
64
|
...options
|
|
78
65
|
};
|
|
79
|
-
const _isBot = isBotUserAgent();
|
|
66
|
+
const _isBot = browserUtils.isBotUserAgent();
|
|
80
67
|
let lastInteractionTimestamp;
|
|
81
68
|
let _pageloadSpan;
|
|
82
69
|
function _createRouteSpan(client, startSpanOptions, makeActive = true, url) {
|
|
83
70
|
const isPageloadSpan = startSpanOptions.op === "pageload";
|
|
84
71
|
const initialSpanName = startSpanOptions.name;
|
|
85
72
|
const finalStartSpanOptions = beforeStartSpan ? beforeStartSpan(startSpanOptions) : startSpanOptions;
|
|
86
|
-
const urlObject =
|
|
73
|
+
const urlObject = core.parseStringToURLObject(url || browserUtils.getLocationHref());
|
|
87
74
|
const attributes$1 = {
|
|
88
75
|
...urlObject?.pathname && { [attributes.URL_PATH]: urlObject.pathname },
|
|
89
|
-
...urlObject && !
|
|
76
|
+
...urlObject && !core.isURLObjectRelative(urlObject) && { [attributes.URL_FULL]: core.filterCollectedUrl(urlObject.href) },
|
|
90
77
|
...finalStartSpanOptions.attributes
|
|
91
78
|
};
|
|
92
79
|
if (initialSpanName !== finalStartSpanOptions.name) {
|
|
93
|
-
attributes$1[
|
|
80
|
+
attributes$1[attributes.SENTRY_SEGMENT_NAME_SOURCE] = "custom";
|
|
94
81
|
}
|
|
95
82
|
finalStartSpanOptions.attributes = attributes$1;
|
|
96
83
|
if (!makeActive) {
|
|
97
|
-
const now =
|
|
84
|
+
const now = core.dateTimestampInSeconds();
|
|
98
85
|
browser.startInactiveSpan({
|
|
99
86
|
...finalStartSpanOptions,
|
|
100
87
|
startTime: now
|
|
101
88
|
}).end(now);
|
|
102
89
|
return;
|
|
103
90
|
}
|
|
104
|
-
latestRoute.name = finalStartSpanOptions.name;
|
|
105
|
-
latestRoute.source = attributes$1[browser.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];
|
|
106
91
|
const idleSpan = browser.startIdleSpan(finalStartSpanOptions, {
|
|
107
92
|
idleTimeout,
|
|
108
93
|
finalTimeout,
|
|
@@ -130,32 +115,29 @@ const browserTracingIntegration = ((options = {}) => {
|
|
|
130
115
|
name: BROWSER_TRACING_INTEGRATION_ID,
|
|
131
116
|
setup(client) {
|
|
132
117
|
if (_isBot) {
|
|
133
|
-
debugBuild.DEBUG_BUILD &&
|
|
118
|
+
debugBuild.DEBUG_BUILD && core.debug.log("[Tracing] Skipping browserTracingIntegration setup for bot user agent.");
|
|
134
119
|
return;
|
|
135
120
|
}
|
|
136
|
-
|
|
137
|
-
if (enableLongAnimationFrame &&
|
|
121
|
+
core.registerSpanErrorInstrumentation();
|
|
122
|
+
if (enableLongAnimationFrame && core.GLOBAL_OBJ.PerformanceObserver && PerformanceObserver.supportedEntryTypes?.includes("long-animation-frame")) {
|
|
138
123
|
browserUtils.startTrackingLongAnimationFrames();
|
|
139
124
|
} else if (enableLongTask) {
|
|
140
125
|
browserUtils.startTrackingLongTasks();
|
|
141
126
|
}
|
|
142
|
-
if (enableInteractions) {
|
|
143
|
-
browserUtils.startTrackingInteractions();
|
|
144
|
-
}
|
|
145
127
|
if (detectRedirects && optionalWindowDocument) {
|
|
146
128
|
const interactionHandler = () => {
|
|
147
|
-
lastInteractionTimestamp =
|
|
129
|
+
lastInteractionTimestamp = core.timestampInSeconds();
|
|
148
130
|
};
|
|
149
131
|
addEventListener("click", interactionHandler, { capture: true });
|
|
150
132
|
addEventListener("keydown", interactionHandler, { capture: true, passive: true });
|
|
151
133
|
}
|
|
152
134
|
function maybeEndActiveSpan() {
|
|
153
135
|
const activeSpan = getActiveIdleSpan(client);
|
|
154
|
-
if (activeSpan && !
|
|
155
|
-
debugBuild.DEBUG_BUILD &&
|
|
156
|
-
`[Tracing] Finishing current active span with op: ${
|
|
136
|
+
if (activeSpan && !core.spanToJSON(activeSpan).end_timestamp) {
|
|
137
|
+
debugBuild.DEBUG_BUILD && core.debug.log(
|
|
138
|
+
`[Tracing] Finishing current active span with op: ${core.spanToJSON(activeSpan).attributes[attributes.SENTRY_OP]}`
|
|
157
139
|
);
|
|
158
|
-
activeSpan.setAttribute(
|
|
140
|
+
activeSpan.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, "cancelled");
|
|
159
141
|
activeSpan.end();
|
|
160
142
|
}
|
|
161
143
|
}
|
|
@@ -165,31 +147,31 @@ const browserTracingIntegration = ((options = {}) => {
|
|
|
165
147
|
}
|
|
166
148
|
browserUtils.addPerformanceEntries(span, {
|
|
167
149
|
ignoreResourceSpans,
|
|
168
|
-
spanStreamingEnabled:
|
|
150
|
+
spanStreamingEnabled: core.hasSpanStreamingEnabled(client)
|
|
169
151
|
});
|
|
170
152
|
setActiveIdleSpan(client, void 0);
|
|
171
|
-
const scope =
|
|
153
|
+
const scope = core.getCurrentScope();
|
|
172
154
|
const oldPropagationContext = scope.getPropagationContext();
|
|
173
155
|
scope.setPropagationContext({
|
|
174
156
|
...oldPropagationContext,
|
|
175
157
|
traceId: span.spanContext().traceId,
|
|
176
|
-
sampled:
|
|
177
|
-
dsc:
|
|
158
|
+
sampled: core.spanIsSampled(span),
|
|
159
|
+
dsc: core.getDynamicSamplingContextFromSpan(span)
|
|
178
160
|
});
|
|
179
161
|
if (_pageloadSpan === span) {
|
|
180
162
|
_pageloadSpan = void 0;
|
|
181
163
|
}
|
|
182
164
|
});
|
|
183
165
|
client.on("startNavigationSpan", (startSpanOptions, navigationOptions) => {
|
|
184
|
-
if (
|
|
166
|
+
if (core.getClient() !== client) {
|
|
185
167
|
return;
|
|
186
168
|
}
|
|
187
169
|
if (navigationOptions?.isRedirect) {
|
|
188
|
-
debugBuild.DEBUG_BUILD &&
|
|
170
|
+
debugBuild.DEBUG_BUILD && core.debug.warn("[Tracing] Detected redirect, navigation span will not be the root span, but a child span.");
|
|
189
171
|
_createRouteSpan(
|
|
190
172
|
client,
|
|
191
173
|
{
|
|
192
|
-
op:
|
|
174
|
+
op: op.NAVIGATION_REDIRECT,
|
|
193
175
|
...startSpanOptions
|
|
194
176
|
},
|
|
195
177
|
false,
|
|
@@ -199,11 +181,11 @@ const browserTracingIntegration = ((options = {}) => {
|
|
|
199
181
|
}
|
|
200
182
|
lastInteractionTimestamp = void 0;
|
|
201
183
|
maybeEndActiveSpan();
|
|
202
|
-
const scope =
|
|
184
|
+
const scope = core.getCurrentScope();
|
|
203
185
|
scope.setPropagationContext({
|
|
204
|
-
traceId:
|
|
186
|
+
traceId: core.generateTraceId(),
|
|
205
187
|
sampleRand: Math.random(),
|
|
206
|
-
propagationSpanId:
|
|
188
|
+
propagationSpanId: core.hasSpansEnabled() ? void 0 : core.generateSpanId()
|
|
207
189
|
});
|
|
208
190
|
scope.setSDKProcessingMetadata({
|
|
209
191
|
normalizedRequest: void 0
|
|
@@ -211,40 +193,39 @@ const browserTracingIntegration = ((options = {}) => {
|
|
|
211
193
|
_createRouteSpan(
|
|
212
194
|
client,
|
|
213
195
|
{
|
|
214
|
-
op:
|
|
196
|
+
op: op.NAVIGATION,
|
|
215
197
|
...startSpanOptions,
|
|
216
198
|
// Navigation starts a new trace and is NOT parented under any active interaction (e.g. ui.action.click)
|
|
217
|
-
parentSpan: null
|
|
218
|
-
forceTransaction: true
|
|
199
|
+
parentSpan: null
|
|
219
200
|
},
|
|
220
201
|
true,
|
|
221
202
|
navigationOptions?.url
|
|
222
203
|
);
|
|
223
204
|
});
|
|
224
205
|
client.on("startPageLoadSpan", (startSpanOptions, traceOptions = {}) => {
|
|
225
|
-
if (
|
|
206
|
+
if (core.getClient() !== client) {
|
|
226
207
|
return;
|
|
227
208
|
}
|
|
228
209
|
maybeEndActiveSpan();
|
|
229
210
|
const sentryTrace = traceOptions.sentryTrace || getMetaContent("sentry-trace") || getServerTiming("sentry-trace");
|
|
230
211
|
const baggage = traceOptions.baggage || getMetaContent("baggage") || getServerTiming("baggage");
|
|
231
|
-
const propagationContext =
|
|
232
|
-
const scope =
|
|
212
|
+
const propagationContext = core.propagationContextFromHeaders(sentryTrace, baggage);
|
|
213
|
+
const scope = core.getCurrentScope();
|
|
233
214
|
scope.setPropagationContext(propagationContext);
|
|
234
|
-
if (!
|
|
235
|
-
scope.getPropagationContext().propagationSpanId =
|
|
215
|
+
if (!core.hasSpansEnabled()) {
|
|
216
|
+
scope.getPropagationContext().propagationSpanId = core.generateSpanId();
|
|
236
217
|
}
|
|
237
218
|
scope.setSDKProcessingMetadata({
|
|
238
219
|
normalizedRequest: helpers.getHttpRequestData()
|
|
239
220
|
});
|
|
240
221
|
_createRouteSpan(client, {
|
|
241
|
-
op:
|
|
222
|
+
op: op.PAGELOAD,
|
|
242
223
|
...startSpanOptions
|
|
243
224
|
});
|
|
244
225
|
});
|
|
245
226
|
client.on("endPageloadSpan", () => {
|
|
246
227
|
if (enableReportPageLoaded && _pageloadSpan) {
|
|
247
|
-
_pageloadSpan.setAttribute(
|
|
228
|
+
_pageloadSpan.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, "reportPageLoaded");
|
|
248
229
|
_pageloadSpan.end();
|
|
249
230
|
}
|
|
250
231
|
});
|
|
@@ -253,6 +234,7 @@ const browserTracingIntegration = ((options = {}) => {
|
|
|
253
234
|
if (_isBot) {
|
|
254
235
|
return;
|
|
255
236
|
}
|
|
237
|
+
browser._INTERNAL_ensureBrowserSpanStreaming(client);
|
|
256
238
|
if (client.addIntegration && !client.getIntegrationByName?.(webVitals.WEB_VITALS_INTEGRATION_NAME)) {
|
|
257
239
|
client.addIntegration(
|
|
258
240
|
webVitals.webVitalsIntegration({
|
|
@@ -260,20 +242,19 @@ const browserTracingIntegration = ((options = {}) => {
|
|
|
260
242
|
})
|
|
261
243
|
);
|
|
262
244
|
}
|
|
263
|
-
let startingUrl =
|
|
245
|
+
let startingUrl = browserUtils.getLocationHref();
|
|
264
246
|
if (linkPreviousTrace !== "off") {
|
|
265
247
|
linkedTraces.linkTraces(client, { linkPreviousTrace, consistentTraceSampling });
|
|
266
248
|
}
|
|
267
249
|
if (helpers.WINDOW.location) {
|
|
268
250
|
if (instrumentPageLoad) {
|
|
269
|
-
const origin = browser.browserPerformanceTimeOrigin();
|
|
270
251
|
startBrowserTracingPageLoadSpan(client, {
|
|
271
|
-
|
|
272
|
-
//
|
|
273
|
-
|
|
252
|
+
// With span streaming, span names have to be low cardinality, and there is no route
|
|
253
|
+
// information available here.
|
|
254
|
+
name: core.hasSpanStreamingEnabled(client) ? core.PAGELOAD_SPAN_NAME_FALLBACK : helpers.WINDOW.location.pathname,
|
|
274
255
|
attributes: {
|
|
275
|
-
[
|
|
276
|
-
[
|
|
256
|
+
[attributes.SENTRY_SEGMENT_NAME_SOURCE]: "url",
|
|
257
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.pageload.browser"
|
|
277
258
|
}
|
|
278
259
|
});
|
|
279
260
|
}
|
|
@@ -284,16 +265,18 @@ const browserTracingIntegration = ((options = {}) => {
|
|
|
284
265
|
return;
|
|
285
266
|
}
|
|
286
267
|
startingUrl = void 0;
|
|
287
|
-
const parsed =
|
|
268
|
+
const parsed = core.parseStringToURLObject(to);
|
|
288
269
|
const activeSpan = getActiveIdleSpan(client);
|
|
289
270
|
const navigationIsRedirect = activeSpan && detectRedirects && isRedirect(activeSpan, lastInteractionTimestamp);
|
|
290
271
|
startBrowserTracingNavigationSpan(
|
|
291
272
|
client,
|
|
292
273
|
{
|
|
293
|
-
|
|
274
|
+
// With span streaming, span names have to be low cardinality, and there is no route
|
|
275
|
+
// information available here.
|
|
276
|
+
name: core.hasSpanStreamingEnabled(client) ? core.NAVIGATION_SPAN_NAME_FALLBACK : parsed?.pathname || helpers.WINDOW.location.pathname,
|
|
294
277
|
attributes: {
|
|
295
|
-
[
|
|
296
|
-
[
|
|
278
|
+
[attributes.SENTRY_SEGMENT_NAME_SOURCE]: "url",
|
|
279
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.navigation.browser"
|
|
297
280
|
}
|
|
298
281
|
},
|
|
299
282
|
{ url: to, isRedirect: navigationIsRedirect }
|
|
@@ -304,9 +287,6 @@ const browserTracingIntegration = ((options = {}) => {
|
|
|
304
287
|
if (markBackgroundSpan) {
|
|
305
288
|
backgroundtab.registerBackgroundTabDetection();
|
|
306
289
|
}
|
|
307
|
-
if (enableInteractions) {
|
|
308
|
-
registerInteractionListener(client, idleTimeout, finalTimeout, childSpanTimeout, latestRoute);
|
|
309
|
-
}
|
|
310
290
|
request.instrumentOutgoingRequests(client, {
|
|
311
291
|
traceFetch,
|
|
312
292
|
traceXHR,
|
|
@@ -320,8 +300,15 @@ const browserTracingIntegration = ((options = {}) => {
|
|
|
320
300
|
};
|
|
321
301
|
});
|
|
322
302
|
function startBrowserTracingPageLoadSpan(client, spanOptions, traceOptions) {
|
|
323
|
-
|
|
324
|
-
|
|
303
|
+
const isFallbackSpanName = spanOptions.name === core.PAGELOAD_SPAN_NAME_FALLBACK;
|
|
304
|
+
core.getCurrentScope().setTransactionName(isFallbackSpanName ? helpers.WINDOW.location?.pathname : spanOptions.name);
|
|
305
|
+
const timeOrigin = core.browserPerformanceTimeOrigin();
|
|
306
|
+
const pageloadSpanOptions = {
|
|
307
|
+
...spanOptions,
|
|
308
|
+
// startTime needs to be in seconds, not ms
|
|
309
|
+
startTime: spanOptions.startTime ?? (timeOrigin ? timeOrigin / 1e3 : void 0)
|
|
310
|
+
};
|
|
311
|
+
client.emit("startPageLoadSpan", pageloadSpanOptions, traceOptions);
|
|
325
312
|
const pageloadSpan = getActiveIdleSpan(client);
|
|
326
313
|
if (pageloadSpan) {
|
|
327
314
|
client.emit("afterStartPageLoadSpan", pageloadSpan);
|
|
@@ -332,8 +319,11 @@ function startBrowserTracingNavigationSpan(client, spanOptions, options) {
|
|
|
332
319
|
const { url, isRedirect: isRedirect2 } = options || {};
|
|
333
320
|
client.emit("beforeStartNavigationSpan", spanOptions, { isRedirect: isRedirect2, url });
|
|
334
321
|
client.emit("startNavigationSpan", spanOptions, { isRedirect: isRedirect2, url });
|
|
335
|
-
const scope =
|
|
336
|
-
|
|
322
|
+
const scope = core.getCurrentScope();
|
|
323
|
+
const isFallbackSpanName = spanOptions.name === core.NAVIGATION_SPAN_NAME_FALLBACK;
|
|
324
|
+
scope.setTransactionName(
|
|
325
|
+
isFallbackSpanName ? url && core.parseStringToURLObject(url)?.pathname || helpers.WINDOW.location?.pathname : spanOptions.name
|
|
326
|
+
);
|
|
337
327
|
if (url && !isRedirect2) {
|
|
338
328
|
scope.setSDKProcessingMetadata({
|
|
339
329
|
normalizedRequest: {
|
|
@@ -354,58 +344,17 @@ function getServerTiming(name) {
|
|
|
354
344
|
const entry = navigation?.serverTiming?.find((entry2) => entry2.name === name);
|
|
355
345
|
return entry?.description;
|
|
356
346
|
}
|
|
357
|
-
function registerInteractionListener(client, idleTimeout, finalTimeout, childSpanTimeout, latestRoute) {
|
|
358
|
-
const optionalWindowDocument = helpers.WINDOW.document;
|
|
359
|
-
let inflightInteractionSpan;
|
|
360
|
-
const registerInteractionTransaction = () => {
|
|
361
|
-
const op = "ui.action.click";
|
|
362
|
-
const activeIdleSpan = getActiveIdleSpan(client);
|
|
363
|
-
if (activeIdleSpan) {
|
|
364
|
-
const currentRootSpanOp = browser.spanToJSON(activeIdleSpan).attributes[attributes.SENTRY_OP];
|
|
365
|
-
if (["navigation", "pageload"].includes(currentRootSpanOp)) {
|
|
366
|
-
debugBuild.DEBUG_BUILD && browser.debug.warn(`[Tracing] Did not create ${op} span because a pageload or navigation span is in progress.`);
|
|
367
|
-
return void 0;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
if (inflightInteractionSpan) {
|
|
371
|
-
inflightInteractionSpan.setAttribute(browser.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, "interactionInterrupted");
|
|
372
|
-
inflightInteractionSpan.end();
|
|
373
|
-
inflightInteractionSpan = void 0;
|
|
374
|
-
}
|
|
375
|
-
if (!latestRoute.name) {
|
|
376
|
-
debugBuild.DEBUG_BUILD && browser.debug.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);
|
|
377
|
-
return void 0;
|
|
378
|
-
}
|
|
379
|
-
inflightInteractionSpan = browser.startIdleSpan(
|
|
380
|
-
{
|
|
381
|
-
name: latestRoute.name,
|
|
382
|
-
op,
|
|
383
|
-
attributes: {
|
|
384
|
-
[browser.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: latestRoute.source || "url"
|
|
385
|
-
}
|
|
386
|
-
},
|
|
387
|
-
{
|
|
388
|
-
idleTimeout,
|
|
389
|
-
finalTimeout,
|
|
390
|
-
childSpanTimeout
|
|
391
|
-
}
|
|
392
|
-
);
|
|
393
|
-
};
|
|
394
|
-
if (optionalWindowDocument) {
|
|
395
|
-
addEventListener("click", registerInteractionTransaction, { capture: true });
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
347
|
const ACTIVE_IDLE_SPAN_PROPERTY = "_sentry_idleSpan";
|
|
399
348
|
function getActiveIdleSpan(client) {
|
|
400
349
|
return client[ACTIVE_IDLE_SPAN_PROPERTY];
|
|
401
350
|
}
|
|
402
351
|
function setActiveIdleSpan(client, span) {
|
|
403
|
-
|
|
352
|
+
core.addNonEnumerableProperty(client, ACTIVE_IDLE_SPAN_PROPERTY, span);
|
|
404
353
|
}
|
|
405
354
|
const REDIRECT_THRESHOLD = 1.5;
|
|
406
355
|
function isRedirect(activeSpan, lastInteractionTimestamp) {
|
|
407
|
-
const spanData =
|
|
408
|
-
const now =
|
|
356
|
+
const spanData = core.spanToJSON(activeSpan);
|
|
357
|
+
const now = core.dateTimestampInSeconds();
|
|
409
358
|
const startTimestamp = spanData.start_timestamp;
|
|
410
359
|
if (now - startTimestamp > REDIRECT_THRESHOLD) {
|
|
411
360
|
return false;
|
|
@@ -420,7 +369,6 @@ exports.BROWSER_TRACING_INTEGRATION_ID = BROWSER_TRACING_INTEGRATION_ID;
|
|
|
420
369
|
exports.browserTracingIntegration = browserTracingIntegration;
|
|
421
370
|
exports.getMetaContent = getMetaContent;
|
|
422
371
|
exports.getServerTiming = getServerTiming;
|
|
423
|
-
exports.isBotUserAgent = isBotUserAgent;
|
|
424
372
|
exports.startBrowserTracingNavigationSpan = startBrowserTracingNavigationSpan;
|
|
425
373
|
exports.startBrowserTracingPageLoadSpan = startBrowserTracingPageLoadSpan;
|
|
426
374
|
//# sourceMappingURL=browserTracingIntegration.js.map
|