{"version":3,"file":"browserTracingIntegration.js","sources":["../../../src/client/browserTracingIntegration.ts"],"sourcesContent":["import {\n  browserTracingIntegration as originalBrowserTracingIntegration,\n  startBrowserTracingPageLoadSpan,\n  WINDOW,\n} from '@sentry/browser';\nimport type { Integration, TransactionSource } from '@sentry/core';\nimport {\n  browserPerformanceTimeOrigin,\n  debug,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\n\n/**\n * Returns the value of a meta-tag\n */\nfunction getMetaContent(metaName: string): string | undefined {\n  const optionalDocument = WINDOW.document as (typeof WINDOW)['document'] | undefined;\n  const metaTag = optionalDocument?.querySelector(`meta[name=${metaName}]`);\n  return metaTag?.getAttribute('content') || undefined;\n}\n\n/**\n * A custom browser tracing integrations for Astro.\n */\nexport function browserTracingIntegration(\n  options: Parameters<typeof originalBrowserTracingIntegration>[0] = {},\n): Integration {\n  const integration = originalBrowserTracingIntegration({ ...options, instrumentPageLoad: false });\n\n  return {\n    ...integration,\n    afterAllSetup(client) {\n      // Original integration afterAllSetup call\n      integration.afterAllSetup?.(client);\n\n      if (WINDOW.location) {\n        if (options.instrumentPageLoad != false) {\n          const origin = browserPerformanceTimeOrigin();\n\n          const { name, source } = getPageloadSpanName();\n\n          startBrowserTracingPageLoadSpan(client, {\n            name,\n            // pageload should always start at timeOrigin (and needs to be in s, not ms)\n            startTime: origin ? origin / 1000 : undefined,\n            attributes: {\n              [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,\n              [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.pageload.astro',\n            },\n          });\n        }\n      }\n    },\n  };\n}\n\nfunction getPageloadSpanName(): { name: string; source: TransactionSource } {\n  try {\n    const routeNameFromMetaTags = getMetaContent('sentry-route-name');\n    if (routeNameFromMetaTags) {\n      const decodedRouteName = decodeURIComponent(routeNameFromMetaTags);\n\n      DEBUG_BUILD && debug.log(`[Tracing] Using route name from Sentry HTML meta-tag: ${decodedRouteName}`);\n\n      return {\n        name: decodedRouteName,\n        source: 'route',\n      };\n    }\n  } catch {\n    // fail silently if decoding or reading the meta tag fails\n  }\n  return {\n    name: WINDOW.location.pathname,\n    source: 'url',\n  };\n}\n"],"names":["WINDOW","originalBrowserTracingIntegration","browserPerformanceTimeOrigin","startBrowserTracingPageLoadSpan","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","DEBUG_BUILD","debug"],"mappings":";;;;;;AAcA;AACA;AACA;AACA,SAAS,cAAc,CAAC,QAAQ,EAA8B;AAC9D,EAAE,MAAM,gBAAA,GAAmBA,cAAM,CAAC,QAAA;AAClC,EAAE,MAAM,OAAA,GAAU,gBAAgB,EAAE,aAAa,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3E,EAAE,OAAO,OAAO,EAAE,YAAY,CAAC,SAAS,CAAA,IAAK,SAAS;AACtD;;AAEA;AACA;AACA;AACO,SAAS,yBAAyB;AACzC,EAAE,OAAO,GAA4D,EAAE;AACvE,EAAe;AACf,EAAE,MAAM,WAAA,GAAcC,iCAAiC,CAAC,EAAE,GAAG,OAAO,EAAE,kBAAkB,EAAE,KAAA,EAAO,CAAC;;AAElG,EAAE,OAAO;AACT,IAAI,GAAG,WAAW;AAClB,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B;AACA,MAAM,WAAW,CAAC,aAAa,GAAG,MAAM,CAAC;;AAEzC,MAAM,IAAID,cAAM,CAAC,QAAQ,EAAE;AAC3B,QAAQ,IAAI,OAAO,CAAC,kBAAA,IAAsB,KAAK,EAAE;AACjD,UAAU,MAAM,MAAA,GAASE,iCAA4B,EAAE;;AAEvD,UAAU,MAAM,EAAE,IAAI,EAAE,QAAO,GAAI,mBAAmB,EAAE;;AAExD,UAAUC,uCAA+B,CAAC,MAAM,EAAE;AAClD,YAAY,IAAI;AAChB;AACA,YAAY,SAAS,EAAE,MAAA,GAAS,SAAS,IAAA,GAAO,SAAS;AACzD,YAAY,UAAU,EAAE;AACxB,cAAc,CAACC,qCAAgC,GAAG,MAAM;AACxD,cAAc,CAACC,qCAAgC,GAAG,qBAAqB;AACvE,aAAa;AACb,WAAW,CAAC;AACZ,QAAQ;AACR,MAAM;AACN,IAAI,CAAC;AACL,GAAG;AACH;;AAEA,SAAS,mBAAmB,GAAgD;AAC5E,EAAE,IAAI;AACN,IAAI,MAAM,qBAAA,GAAwB,cAAc,CAAC,mBAAmB,CAAC;AACrE,IAAI,IAAI,qBAAqB,EAAE;AAC/B,MAAM,MAAM,gBAAA,GAAmB,kBAAkB,CAAC,qBAAqB,CAAC;;AAExE,MAAMC,sBAAA,IAAeC,UAAK,CAAC,GAAG,CAAC,CAAC,sDAAsD,EAAE,gBAAgB,CAAC,CAAA,CAAA;;AAEA,MAAA,OAAA;AACA,QAAA,IAAA,EAAA,gBAAA;AACA,QAAA,MAAA,EAAA,OAAA;AACA,OAAA;AACA,IAAA;AACA,EAAA,CAAA,CAAA,MAAA;AACA;AACA,EAAA;AACA,EAAA,OAAA;AACA,IAAA,IAAA,EAAAP,cAAA,CAAA,QAAA,CAAA,QAAA;AACA,IAAA,MAAA,EAAA,KAAA;AACA,GAAA;AACA;;;;"}