diff --git a/packages/ember/addon/instance-initializers/sentry-performance.ts b/packages/ember/addon/instance-initializers/sentry-performance.ts index 593a387ce53e..e4b8ad15e83f 100644 --- a/packages/ember/addon/instance-initializers/sentry-performance.ts +++ b/packages/ember/addon/instance-initializers/sentry-performance.ts @@ -6,20 +6,21 @@ import type RouterService from '@ember/routing/router-service'; import { _backburner, run, scheduleOnce } from '@ember/runloop'; import type { EmberRunQueues } from '@ember/runloop/-private/types'; import { getOwnConfig, isTesting, macroCondition } from '@embroider/macros'; -import type { ExtendedBackburner } from '@sentry/ember/runloop'; -import type { Span } from '@sentry/types'; -import { GLOBAL_OBJ, browserPerformanceTimeOrigin, timestampInSeconds } from '@sentry/utils'; - -import type { BrowserClient } from '@sentry/browser'; +import type { + BrowserClient, + startBrowserTracingNavigationSpan as startBrowserTracingNavigationSpanType, + startBrowserTracingPageLoadSpan as startBrowserTracingPageLoadSpanType, +} from '@sentry/browser'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, getActiveSpan, getClient, - startBrowserTracingNavigationSpan, - startBrowserTracingPageLoadSpan, startInactiveSpan, } from '@sentry/browser'; +import type { ExtendedBackburner } from '@sentry/ember/runloop'; +import type { Span } from '@sentry/types'; +import { GLOBAL_OBJ, browserPerformanceTimeOrigin, timestampInSeconds } from '@sentry/utils'; import type { EmberRouterMain, EmberSentryConfig, GlobalConfig, OwnConfig } from '../types'; function getSentryConfig(): EmberSentryConfig { @@ -99,6 +100,8 @@ export function _instrumentEmberRouter( routerService: RouterService, routerMain: EmberRouterMain, config: EmberSentryConfig, + startBrowserTracingPageLoadSpan: typeof startBrowserTracingPageLoadSpanType, + startBrowserTracingNavigationSpan: typeof startBrowserTracingNavigationSpanType, ): void { const { disableRunloopPerformance } = config; const location = routerMain.location; @@ -424,7 +427,8 @@ export async function instrumentForPerformance(appInstance: ApplicationInstance) // Maintaining backwards compatibility with config.browserTracingOptions, but passing it with Sentry options is preferred. const browserTracingOptions = config.browserTracingOptions || config.sentry.browserTracingOptions || {}; - const { browserTracingIntegration } = await import('@sentry/browser'); + const { browserTracingIntegration, startBrowserTracingNavigationSpan, startBrowserTracingPageLoadSpan } = + await import('@sentry/browser'); const idleTimeout = config.transitionTimeout || 5000; @@ -444,7 +448,7 @@ export async function instrumentForPerformance(appInstance: ApplicationInstance) } // We _always_ call this, as it triggers the page load & navigation spans - _instrumentNavigation(appInstance, config); + _instrumentNavigation(appInstance, config, startBrowserTracingPageLoadSpan, startBrowserTracingNavigationSpan); // Skip instrumenting the stuff below again in tests, as these are not reset between tests if (isAlreadyInitialized) { @@ -456,7 +460,12 @@ export async function instrumentForPerformance(appInstance: ApplicationInstance) _instrumentInitialLoad(config); } -function _instrumentNavigation(appInstance: ApplicationInstance, config: EmberSentryConfig): void { +function _instrumentNavigation( + appInstance: ApplicationInstance, + config: EmberSentryConfig, + startBrowserTracingPageLoadSpan: typeof startBrowserTracingPageLoadSpanType, + startBrowserTracingNavigationSpan: typeof startBrowserTracingNavigationSpanType, +): void { // eslint-disable-next-line ember/no-private-routing-service const routerMain = appInstance.lookup('router:main') as EmberRouterMain; let routerService = appInstance.lookup('service:router') as RouterService & { @@ -478,7 +487,13 @@ function _instrumentNavigation(appInstance: ApplicationInstance, config: EmberSe } routerService._hasMountedSentryPerformanceRouting = true; - _instrumentEmberRouter(routerService, routerMain, config); + _instrumentEmberRouter( + routerService, + routerMain, + config, + startBrowserTracingPageLoadSpan, + startBrowserTracingNavigationSpan, + ); } export default {