@unidy.io/sdk 1.1.2 → 1.1.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/dist/sdk/auth-B95hXtvh.js +571 -0
- package/dist/sdk/auth-B95hXtvh.js.map +1 -0
- package/dist/sdk/auth-BiFlsRm-.js +6821 -0
- package/dist/sdk/auth-BiFlsRm-.js.map +1 -0
- package/dist/sdk/auth-store-BzXDlgNb.js +179 -0
- package/dist/sdk/auth-store-BzXDlgNb.js.map +1 -0
- package/dist/sdk/auth-store-Mjo3PyJP.js +179 -0
- package/dist/sdk/auth-store-Mjo3PyJP.js.map +1 -0
- package/dist/sdk/auth-wavto6GW.js +6822 -0
- package/dist/sdk/auth-wavto6GW.js.map +1 -0
- package/dist/sdk/auth-y_LsX4Zn.js +6822 -0
- package/dist/sdk/auth-y_LsX4Zn.js.map +1 -0
- package/dist/sdk/flash-store-Cgu7WoSN.js +48 -0
- package/dist/sdk/flash-store-Cgu7WoSN.js.map +1 -0
- package/dist/sdk/flash-store-DXuduRA_.js +48 -0
- package/dist/sdk/flash-store-DXuduRA_.js.map +1 -0
- package/dist/sdk/i18n-CRBOSzNq.js +3242 -0
- package/dist/sdk/i18n-CRBOSzNq.js.map +1 -0
- package/dist/sdk/i18n-CacW7WuC.js +3242 -0
- package/dist/sdk/i18n-CacW7WuC.js.map +1 -0
- package/dist/sdk/index-BDX4bHnk.js +15349 -0
- package/dist/sdk/index-BDX4bHnk.js.map +1 -0
- package/dist/sdk/index-C5jZjlU8.js +49640 -0
- package/dist/sdk/index-C5jZjlU8.js.map +1 -0
- package/dist/sdk/index-CKre5JEG.js +15349 -0
- package/dist/sdk/index-CKre5JEG.js.map +1 -0
- package/dist/sdk/index-CYip1Wgu.js +43 -0
- package/dist/sdk/index-CYip1Wgu.js.map +1 -0
- package/dist/sdk/index-CoYUNBeF.js +43 -0
- package/dist/sdk/index-CoYUNBeF.js.map +1 -0
- package/dist/sdk/index-CvfZ-LfN.js +43 -0
- package/dist/sdk/index-CvfZ-LfN.js.map +1 -0
- package/dist/sdk/index-DJUE7Ceb.js +6254 -0
- package/dist/sdk/index-DJUE7Ceb.js.map +1 -0
- package/dist/sdk/index-DOyWRKSD.js +43 -0
- package/dist/sdk/index-DOyWRKSD.js.map +1 -0
- package/dist/sdk/index-O6h7SI7-.js +212 -0
- package/dist/sdk/index-O6h7SI7-.js.map +1 -0
- package/dist/sdk/index-XIuHpSzj.js +212 -0
- package/dist/sdk/index-XIuHpSzj.js.map +1 -0
- package/dist/sdk/index-mfIOXLHL.js +49640 -0
- package/dist/sdk/index-mfIOXLHL.js.map +1 -0
- package/dist/sdk/index.esm.js +10 -10
- package/dist/sdk/newsletter-helpers-C3t2fsCe.js +276 -0
- package/dist/sdk/newsletter-helpers-C3t2fsCe.js.map +1 -0
- package/dist/sdk/newsletter-helpers-CLSTOCvO.js +276 -0
- package/dist/sdk/newsletter-helpers-CLSTOCvO.js.map +1 -0
- package/dist/sdk/newsletter-helpers-CnufIbIZ.js +276 -0
- package/dist/sdk/newsletter-helpers-CnufIbIZ.js.map +1 -0
- package/dist/sdk/newsletter-helpers-MgFueAV9.js +276 -0
- package/dist/sdk/newsletter-helpers-MgFueAV9.js.map +1 -0
- package/dist/sdk/newsletter-store-CPY2gFnU.js +39 -0
- package/dist/sdk/newsletter-store-CPY2gFnU.js.map +1 -0
- package/dist/sdk/newsletter-store-CqD-GcDC.js +39 -0
- package/dist/sdk/newsletter-store-CqD-GcDC.js.map +1 -0
- package/dist/sdk/profile-helpers-Bdz6gmG8.js +36 -0
- package/dist/sdk/profile-helpers-Bdz6gmG8.js.map +1 -0
- package/dist/sdk/profile-helpers-mfEp18Tq.js +36 -0
- package/dist/sdk/profile-helpers-mfEp18Tq.js.map +1 -0
- package/dist/sdk/profile-store-BZKApsQm.js +18 -0
- package/dist/sdk/profile-store-BZKApsQm.js.map +1 -0
- package/dist/sdk/profile-store-Dr1DP9Te.js +18 -0
- package/dist/sdk/profile-store-Dr1DP9Te.js.map +1 -0
- package/dist/sdk/sdk.esm.js +2 -2
- package/dist/sdk/u-conditional-render.entry.js +11 -11
- package/dist/sdk/u-config.entry.js +11 -11
- package/dist/sdk/u-email-field.entry.js +6 -6
- package/dist/sdk/u-error-message.entry.js +6 -6
- package/dist/sdk/u-field.entry.js +5 -5
- package/dist/sdk/u-flash-message.entry.js +3 -3
- package/dist/sdk/u-full-profile.entry.js +5 -5
- package/dist/sdk/u-logout-button.entry.js +10 -10
- package/dist/sdk/u-magic-code-field.entry.js +9 -9
- package/dist/sdk/u-missing-field.entry.js +4 -4
- package/dist/sdk/u-missing-fields-submit-button.entry.js +8 -8
- package/dist/sdk/u-newsletter-checkbox.entry.js +12 -12
- package/dist/sdk/u-newsletter-logout-button.entry.js +11 -11
- package/dist/sdk/u-newsletter-preference-checkbox.entry.js +12 -12
- package/dist/sdk/u-newsletter-resend-doi-button.entry.js +11 -11
- package/dist/sdk/u-newsletter-root.entry.js +12 -12
- package/dist/sdk/u-newsletter-toggle-subscription-button.entry.js +12 -12
- package/dist/sdk/u-pagination-button.entry.js +1 -1
- package/dist/sdk/u-pagination-page.entry.js +1 -1
- package/dist/sdk/u-passkey.entry.js +9 -9
- package/dist/sdk/u-password-field.entry.js +5 -5
- package/dist/sdk/u-profile.entry.esm.js.map +1 -1
- package/dist/sdk/u-profile.entry.js +14 -13
- package/dist/sdk/u-raw-field.entry.js +3 -3
- package/dist/sdk/u-registration-button.entry.js +5 -5
- package/dist/sdk/u-reset-password-button.entry.js +9 -9
- package/dist/sdk/u-send-magic-code-button.entry.js +9 -9
- package/dist/sdk/u-signed-in.entry.js +4 -4
- package/dist/sdk/u-signin-root.entry.js +4 -4
- package/dist/sdk/u-signin-step.entry.js +10 -10
- package/dist/sdk/u-signin-strategy.entry.js +4 -4
- package/dist/sdk/u-social-login-button.entry.js +6 -6
- package/dist/sdk/u-spinner.entry.js +1 -1
- package/dist/sdk/u-submit-button.entry.js +7 -7
- package/dist/sdk/u-ticketable-list.entry.js +6 -6
- package/dist/sdk/unidy-store-CtifvCkV.js +38 -0
- package/dist/sdk/unidy-store-CtifvCkV.js.map +1 -0
- package/dist/sdk/unidy-store-DPcuwuXf.js +38 -0
- package/dist/sdk/unidy-store-DPcuwuXf.js.map +1 -0
- package/dist/types/auth/api/auth.d.ts +27 -27
- package/dist/types/auth/auth-helpers.d.ts +59 -59
- package/dist/types/profile/api/profile.d.ts +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-BiFlsRm-.js","sources":["../../node_modules/@sentry/browser/build/npm/esm/dev/helpers.js","../../node_modules/@sentry/browser/build/npm/esm/dev/utils/lazyLoadIntegration.js","../../node_modules/@sentry/browser/build/npm/esm/dev/feedbackAsync.js","../../node_modules/@sentry/browser/build/npm/esm/dev/feedbackSync.js","../../node_modules/@sentry/browser/build/npm/esm/dev/eventbuilder.js","../../node_modules/@sentry/browser/build/npm/esm/dev/client.js","../../node_modules/@sentry/browser/build/npm/esm/dev/transports/fetch.js","../../node_modules/@sentry/browser/build/npm/esm/dev/stack-parsers.js","../../node_modules/@sentry/browser/build/npm/esm/dev/userfeedback.js","../../node_modules/@sentry/browser/build/npm/esm/dev/debug-build.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/breadcrumbs.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/browserapierrors.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/browsersession.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/globalhandlers.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/httpcontext.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/linkederrors.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/spotlight.js","../../node_modules/@sentry/browser/build/npm/esm/dev/utils/detectBrowserExtension.js","../../node_modules/@sentry/browser/build/npm/esm/dev/sdk.js","../../node_modules/@sentry/browser/build/npm/esm/dev/report-dialog.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/reportingobserver.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/httpclient.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/contextlines.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/graphqlClient.js","../../node_modules/@sentry/browser/build/npm/esm/dev/tracing/utils.js","../../node_modules/@sentry/browser/build/npm/esm/dev/tracing/request.js","../../node_modules/@sentry/browser/build/npm/esm/dev/tracing/backgroundtab.js","../../node_modules/@sentry/browser/build/npm/esm/dev/tracing/linkedTraces.js","../../node_modules/@sentry/browser/build/npm/esm/dev/tracing/browserTracingIntegration.js","../../node_modules/@sentry/browser/build/npm/esm/dev/tracing/reportPageLoaded.js","../../node_modules/@sentry/browser/build/npm/esm/dev/tracing/setActiveSpan.js","../../node_modules/@sentry/browser/build/npm/esm/dev/transports/offline.js","../../node_modules/@sentry/browser/build/npm/esm/dev/profiling/utils.js","../../node_modules/@sentry/browser/build/npm/esm/dev/profiling/startProfileForSpan.js","../../node_modules/@sentry/browser/build/npm/esm/dev/profiling/UIProfiler.js","../../node_modules/@sentry/browser/build/npm/esm/dev/profiling/integration.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/featureFlags/launchdarkly/integration.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/featureFlags/openfeature/integration.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/featureFlags/unleash/integration.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/featureFlags/growthbook/integration.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/featureFlags/statsig/integration.js","../../node_modules/@sentry/browser/build/npm/esm/dev/diagnose-sdk.js","../../node_modules/@sentry/browser/build/npm/esm/dev/integrations/webWorker.js","../../node_modules/jwt-decode/build/esm/index.js","src/auth/passkey-auth.ts","src/auth/auth-helpers.ts","src/auth/auth.ts"],"sourcesContent":["import { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, withScope, addExceptionTypeValue, addExceptionMechanism, captureException, getLocationHref } from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n fn,\n options\n\n = {},\n) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n function isFunction(fn) {\n return typeof fn === 'function';\n }\n\n if (!isFunction(fn)) {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = (fn ).__sentry_wrapped__;\n if (wrapper) {\n if (typeof wrapper === 'function') {\n return wrapper;\n } else {\n // If we find that the `__sentry_wrapped__` function is not a function at the time of accessing it, it means\n // that something messed with it. In that case we want to return the originally passed function.\n return fn;\n }\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n // Wrap the function itself\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped = function ( ...args) {\n try {\n // Also wrap arguments that are themselves functions\n const wrappedArguments = args.map(arg => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n // no need to add a mechanism here, we already add it via an event processor above\n captureException(ex);\n });\n\n throw ex;\n }\n } ;\n\n // Wrap the wrapped function in a proxy, to ensure any other properties of the original function remain available\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property ] = fn[property ];\n }\n }\n } catch {\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n }\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\n return fn.name;\n },\n });\n }\n } catch {\n // This may throw if e.g. the descriptor does not exist, or a browser does not allow redefining `name`.\n // to save some bytes we simply try-catch this\n }\n\n return sentryWrapped;\n}\n\n/**\n * Get HTTP request data from the current page.\n */\nfunction getHttpRequestData() {\n // grab as much info as exists and add it to the event\n const url = getLocationHref();\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.navigator || {};\n\n const headers = {\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = {\n url,\n headers,\n };\n\n return request;\n}\n\nexport { WINDOW, getHttpRequestData, ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","import { getClient, SDK_VERSION } from '@sentry/core';\nimport { WINDOW } from '../helpers.js';\n\n// This is a map of integration function method to bundle file name.\nconst LazyLoadableIntegrations = {\n replayIntegration: 'replay',\n replayCanvasIntegration: 'replay-canvas',\n feedbackIntegration: 'feedback',\n feedbackModalIntegration: 'feedback-modal',\n feedbackScreenshotIntegration: 'feedback-screenshot',\n captureConsoleIntegration: 'captureconsole',\n contextLinesIntegration: 'contextlines',\n linkedErrorsIntegration: 'linkederrors',\n dedupeIntegration: 'dedupe',\n extraErrorDataIntegration: 'extraerrordata',\n graphqlClientIntegration: 'graphqlclient',\n httpClientIntegration: 'httpclient',\n reportingObserverIntegration: 'reportingobserver',\n rewriteFramesIntegration: 'rewriteframes',\n browserProfilingIntegration: 'browserprofiling',\n moduleMetadataIntegration: 'modulemetadata',\n instrumentAnthropicAiClient: 'instrumentanthropicaiclient',\n instrumentOpenAiClient: 'instrumentopenaiclient',\n instrumentGoogleGenAIClient: 'instrumentgooglegenaiclient',\n} ;\n\nconst WindowWithMaybeIntegration = WINDOW\n\n;\n\n/**\n * Lazy load an integration from the CDN.\n * Rejects if the integration cannot be loaded.\n */\nasync function lazyLoadIntegration(\n name,\n scriptNonce,\n) {\n const bundle = LazyLoadableIntegrations[name];\n\n // `window.Sentry` is only set when using a CDN bundle, but this method can also be used via the NPM package\n const sentryOnWindow = (WindowWithMaybeIntegration.Sentry = WindowWithMaybeIntegration.Sentry || {});\n\n if (!bundle) {\n throw new Error(`Cannot lazy load integration: ${name}`);\n }\n\n // Bail if the integration already exists\n const existing = sentryOnWindow[name];\n // The `feedbackIntegration` is loaded by default in the CDN bundles,\n // so we need to differentiate between the real integration and the shim.\n // if only the shim exists, we still want to lazy load the real integration.\n if (typeof existing === 'function' && !('_isShim' in existing)) {\n return existing;\n }\n\n const url = getScriptURL(bundle);\n const script = WINDOW.document.createElement('script');\n script.src = url;\n script.crossOrigin = 'anonymous';\n script.referrerPolicy = 'strict-origin';\n\n if (scriptNonce) {\n script.setAttribute('nonce', scriptNonce);\n }\n\n const waitForLoad = new Promise((resolve, reject) => {\n script.addEventListener('load', () => resolve());\n script.addEventListener('error', reject);\n });\n\n const currentScript = WINDOW.document.currentScript;\n const parent = WINDOW.document.body || WINDOW.document.head || currentScript?.parentElement;\n\n if (parent) {\n parent.appendChild(script);\n } else {\n throw new Error(`Could not find parent element to insert lazy-loaded ${name} script`);\n }\n\n try {\n await waitForLoad;\n } catch {\n throw new Error(`Error when loading integration: ${name}`);\n }\n\n const integrationFn = sentryOnWindow[name];\n\n if (typeof integrationFn !== 'function') {\n throw new Error(`Could not load integration: ${name}`);\n }\n\n return integrationFn;\n}\n\nfunction getScriptURL(bundle) {\n const client = getClient();\n const baseURL = client?.getOptions()?.cdnBaseUrl || 'https://browser.sentry-cdn.com';\n\n return new URL(`/${SDK_VERSION}/${bundle}.min.js`, baseURL).toString();\n}\n\nexport { lazyLoadIntegration };\n//# sourceMappingURL=lazyLoadIntegration.js.map\n","import { buildFeedbackIntegration } from '@sentry-internal/feedback';\nimport { lazyLoadIntegration } from './utils/lazyLoadIntegration.js';\n\n/**\n * An integration to add user feedback to your application,\n * while loading most of the code lazily only when it's needed.\n */\nconst feedbackAsyncIntegration = buildFeedbackIntegration({\n lazyLoadIntegration,\n});\n\nexport { feedbackAsyncIntegration };\n//# sourceMappingURL=feedbackAsync.js.map\n","import { buildFeedbackIntegration, feedbackScreenshotIntegration, feedbackModalIntegration } from '@sentry-internal/feedback';\n\n/** Add a widget to capture user feedback to your application. */\nconst feedbackSyncIntegration = buildFeedbackIntegration({\n getModalIntegration: () => feedbackModalIntegration,\n getScreenshotIntegration: () => feedbackScreenshotIntegration,\n});\n\nexport { feedbackSyncIntegration };\n//# sourceMappingURL=feedbackSync.js.map\n","import { isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, addExceptionMechanism, isParameterizedString, getClient, normalizeToSize, extractExceptionKeysForMessage, resolvedSyncPromise } from '@sentry/core';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception = {\n type: extractType(ex),\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n const client = getClient();\n const normalizeDepth = client?.getOptions().normalizeDepth;\n\n // If we can, we extract an exception from the object properties\n const errorFromProp = getErrorPropertyFromObject(exception);\n\n const extra = {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n };\n\n if (errorFromProp) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, errorFromProp)],\n },\n extra,\n };\n }\n\n const event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n } ,\n ],\n },\n extra,\n } ;\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\nfunction eventFromError(stackParser, ex) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser,\n ex,\n) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const skipLines = getSkipFirstStackStringLines(ex);\n const framesToPop = getPopFirstTopFrames(ex);\n\n try {\n return stackParser(stacktrace, skipLines, framesToPop);\n } catch {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\n/**\n * Certain known React errors contain links that would be falsely\n * parsed as frames. This function check for these errors and\n * returns number of the stack string lines to skip.\n */\nfunction getSkipFirstStackStringLines(ex) {\n if (ex && reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n\n return 0;\n}\n\n/**\n * If error has `framesToPop` property, it means that the\n * creator tells us the first x frames will be useless\n * and should be discarded. Typically error from wrapper function\n * which don't point to the actual location in the developer's code.\n *\n * Example: https://github.com/zertosh/invariant/blob/master/invariant.js#L46\n */\nfunction getPopFirstTopFrames(ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n return 0;\n}\n\n// https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Exception\n// @ts-expect-error - WebAssembly.Exception is a valid class\nfunction isWebAssemblyException(exception) {\n // Check for support\n // @ts-expect-error - WebAssembly.Exception is a valid class\n if (typeof WebAssembly !== 'undefined' && typeof WebAssembly.Exception !== 'undefined') {\n // @ts-expect-error - WebAssembly.Exception is a valid class\n return exception instanceof WebAssembly.Exception;\n } else {\n return false;\n }\n}\n\n/**\n * Extracts from errors what we use as the exception `type` in error events.\n *\n * Usually, this is the `name` property on Error objects but WASM errors need to be treated differently.\n */\nfunction extractType(ex) {\n const name = ex?.name;\n\n // The name for WebAssembly.Exception Errors needs to be extracted differently.\n // Context: https://github.com/getsentry/sentry-javascript/issues/13787\n if (!name && isWebAssemblyException(ex)) {\n // Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n const hasTypeInMessage = ex.message && Array.isArray(ex.message) && ex.message.length == 2;\n return hasTypeInMessage ? ex.message[0] : 'WebAssembly.Exception';\n }\n\n return name;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n const message = ex?.message;\n\n if (isWebAssemblyException(ex)) {\n // For Node 18, Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n if (Array.isArray(ex.message) && ex.message.length == 2) {\n return ex.message[1];\n }\n return 'wasm exception';\n }\n\n if (!message) {\n return 'No error message';\n }\n\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n stackParser,\n exception,\n hint,\n attachStacktrace,\n) {\n const syntheticException = hint?.syntheticException || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint?.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const syntheticException = hint?.syntheticException || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint?.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n stackParser,\n exception,\n syntheticException,\n attachStacktrace,\n isUnhandledRejection,\n) {\n let event;\n\n if (isErrorEvent(exception ) && (exception ).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception ;\n return eventFromError(stackParser, errorEvent.error );\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception )) {\n const domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\nfunction eventFromString(\n stackParser,\n message,\n syntheticException,\n attachStacktrace,\n) {\n const event = {};\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: message, stacktrace: { frames } }],\n };\n }\n addExceptionMechanism(event, { synthetic: true });\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception,\n { isUnhandledRejection },\n) {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch {\n // ignore errors here\n }\n}\n\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj) {\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (value instanceof Error) {\n return value;\n }\n }\n }\n\n return undefined;\n}\n\nexport { eventFromException, eventFromMessage, eventFromUnknownInput, exceptionFromError, extractMessage, extractType };\n//# sourceMappingURL=eventbuilder.js.map\n","import { Client, getSDKSource, applySdkMetadata, _INTERNAL_flushLogsBuffer, _INTERNAL_flushMetricsBuffer, addAutoIpAddressToSession } from '@sentry/core';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends Client {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n const opts = applyDefaultOptions(options);\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n applySdkMetadata(opts, 'browser', ['browser'], sdkSource);\n\n // Only allow IP inferral by Relay if sendDefaultPii is true\n if (opts._metadata?.sdk) {\n opts._metadata.sdk.settings = {\n infer_ip: opts.sendDefaultPii ? 'auto' : 'never',\n // purposefully allowing already passed settings to override the default\n ...opts._metadata.sdk.settings,\n };\n }\n\n super(opts);\n\n const {\n sendDefaultPii,\n sendClientReports,\n enableLogs,\n _experiments,\n enableMetrics: enableMetricsOption,\n } = this._options;\n\n // todo(v11): Remove the experimental flag\n // eslint-disable-next-line deprecation/deprecation\n const enableMetrics = enableMetricsOption ?? _experiments?.enableMetrics ?? true;\n\n // Flush logs and metrics when page becomes hidden (e.g., tab switch, navigation)\n // todo(v11): Remove the experimental flag\n // eslint-disable-next-line deprecation/deprecation\n if (WINDOW.document && (sendClientReports || enableLogs || enableMetrics)) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n if (sendClientReports) {\n this._flushOutcomes();\n }\n if (enableLogs) {\n _INTERNAL_flushLogsBuffer(this);\n }\n\n if (enableMetrics) {\n _INTERNAL_flushMetricsBuffer(this);\n }\n }\n });\n }\n\n if (sendDefaultPii) {\n this.on('beforeSendSession', addAutoIpAddressToSession);\n }\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(\n event,\n hint,\n currentScope,\n isolationScope,\n ) {\n event.platform = event.platform || 'javascript';\n\n return super._prepareEvent(event, hint, currentScope, isolationScope);\n }\n}\n\n/** Exported only for tests. */\nfunction applyDefaultOptions(optionsArg) {\n return {\n release:\n typeof __SENTRY_RELEASE__ === 'string' // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n ? __SENTRY_RELEASE__\n : WINDOW.SENTRY_RELEASE?.id, // This supports the variable that sentry-webpack-plugin injects\n sendClientReports: true,\n // We default this to true, as it is the safer scenario\n parentSpanIsAlwaysRootSpan: true,\n ...optionsArg,\n };\n}\n\nexport { BrowserClient, applyDefaultOptions };\n//# sourceMappingURL=client.js.map\n","import { createTransport, makePromiseBuffer } from '@sentry/core';\nimport { getNativeImplementation, clearCachedImplementation } from '@sentry-internal/browser-utils';\n\nconst DEFAULT_BROWSER_TRANSPORT_BUFFER_SIZE = 40;\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n options,\n nativeFetch = getNativeImplementation('fetch'),\n) {\n let pendingBodySize = 0;\n let pendingCount = 0;\n\n async function makeRequest(request) {\n const requestSize = request.body.length;\n pendingBodySize += requestSize;\n pendingCount++;\n\n const requestOptions = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'strict-origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. when finishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n // If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n // We will therefore only activate the flag when we're below that limit.\n // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n keepalive: pendingBodySize <= 60000 && pendingCount < 15,\n ...options.fetchOptions,\n };\n\n try {\n // Note: We do not need to suppress tracing here, because we are using the native fetch, instead of our wrapped one.\n const response = await nativeFetch(options.url, requestOptions);\n\n return {\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n };\n } catch (e) {\n clearCachedImplementation('fetch');\n throw e;\n } finally {\n pendingBodySize -= requestSize;\n pendingCount--;\n }\n }\n\n return createTransport(\n options,\n makeRequest,\n makePromiseBuffer(options.bufferSize || DEFAULT_BROWSER_TRANSPORT_BUFFER_SIZE),\n );\n}\n\nexport { makeFetchTransport };\n//# sourceMappingURL=fetch.js.map\n","import { 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, func, lineno, colno) {\n const frame = {\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 = 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) ;\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) ;\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]) ;\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\nconst chromeStackLineParser = [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 = line => {\n const parts = geckoREgex.exec(line) ;\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]) ;\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\nconst geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs = line => {\n const parts = winjsRegex.exec(line) ;\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nconst winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10 = line => {\n const parts = opera10Regex.exec(line) ;\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nconst opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11 = line => {\n const parts = opera11Regex.exec(line) ;\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nconst opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nconst defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser];\n\nconst 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, filename) => {\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] ) : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser };\n//# sourceMappingURL=stack-parsers.js.map\n","import { dsnToString, createEnvelope } from '@sentry/core';\n\n/**\n * Creates an envelope from a user feedback.\n */\nfunction createUserFeedbackEnvelope(\n feedback,\n {\n metadata,\n tunnel,\n dsn,\n }\n\n,\n) {\n const headers = {\n event_id: feedback.event_id,\n sent_at: new Date().toISOString(),\n ...(metadata?.sdk && {\n sdk: {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n },\n }),\n ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n };\n const item = createUserFeedbackEnvelopeItem(feedback);\n\n return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback) {\n const feedbackHeaders = {\n type: 'user_report',\n };\n return [feedbackHeaders, feedback];\n}\n\nexport { createUserFeedbackEnvelope };\n//# sourceMappingURL=userfeedback.js.map\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { defineIntegration, addConsoleInstrumentationHandler, addFetchInstrumentationHandler, getClient, safeJoin, severityLevelFromString, addBreadcrumb, debug, htmlTreeAsString, getComponentName, getBreadcrumbLogLevelFromHttpStatusCode, parseUrl, getEventDescription } from '@sentry/core';\nimport { addClickKeypressInstrumentationHandler, addXhrInstrumentationHandler, addHistoryInstrumentationHandler, SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst INTEGRATION_NAME = 'Breadcrumbs';\n\nconst _breadcrumbsIntegration = ((options = {}) => {\n const _options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n // TODO(v11): Remove this functionality and use `consoleIntegration` from @sentry/core instead.\n if (_options.console) {\n addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client));\n }\n if (_options.dom) {\n addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n }\n if (_options.xhr) {\n addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n }\n if (_options.fetch) {\n addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n }\n if (_options.history) {\n addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n }\n if (_options.sentry) {\n client.on('beforeSendEvent', _getSentryBreadcrumbHandler(client));\n }\n },\n };\n}) ;\n\nconst breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\n\n/**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\nfunction _getSentryBreadcrumbHandler(client) {\n return function addSentryBreadcrumb(event) {\n if (getClient() !== client) {\n return;\n }\n\n addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n };\n}\n\n/**\n * A HOC that creates a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _getDomBreadcrumbHandler(\n client,\n dom,\n) {\n return function _innerDomBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n let target;\n let componentName;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n let maxStringLength =\n typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n DEBUG_BUILD &&\n debug.warn(\n `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n );\n maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n }\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n const event = handlerData.event ;\n const element = _isEvent(event) ? event.target : event;\n\n target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n componentName = getComponentName(element);\n } catch {\n target = '<unknown>';\n }\n\n if (target.length === 0) {\n return;\n }\n\n const breadcrumb = {\n category: `ui.${handlerData.name}`,\n message: target,\n };\n\n if (componentName) {\n breadcrumb.data = { 'ui.component_name': componentName };\n }\n\n addBreadcrumb(breadcrumb, {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _getConsoleBreadcrumbHandler(client) {\n return function _consoleBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _getXhrBreadcrumbHandler(client) {\n return function _xhrBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n // We only capture complete, non-sentry requests\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return;\n }\n\n const { method, url, status_code, body } = sentryXhrData;\n\n const data = {\n method,\n url,\n status_code,\n };\n\n const hint = {\n xhr: handlerData.xhr,\n input: body,\n startTimestamp,\n endTimestamp,\n };\n\n const breadcrumb = {\n category: 'xhr',\n data,\n type: 'http',\n level: getBreadcrumbLogLevelFromHttpStatusCode(status_code),\n };\n\n client.emit('beforeOutgoingRequestBreadcrumb', breadcrumb, hint );\n\n addBreadcrumb(breadcrumb, hint);\n };\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _getFetchBreadcrumbHandler(client) {\n return function _fetchBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete fetch requests\n if (!endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n ({\n method: handlerData.fetchData.method,\n url: handlerData.fetchData.url,\n });\n\n if (handlerData.error) {\n const data = handlerData.fetchData;\n const hint = {\n data: handlerData.error,\n input: handlerData.args,\n startTimestamp,\n endTimestamp,\n };\n\n const breadcrumb = {\n category: 'fetch',\n data,\n level: 'error',\n type: 'http',\n } ;\n\n client.emit('beforeOutgoingRequestBreadcrumb', breadcrumb, hint );\n\n addBreadcrumb(breadcrumb, hint);\n } else {\n const response = handlerData.response ;\n const data = {\n ...handlerData.fetchData,\n status_code: response?.status,\n };\n\n handlerData.fetchData.request_body_size;\n handlerData.fetchData.response_body_size;\n response?.status;\n\n const hint = {\n input: handlerData.args,\n response,\n startTimestamp,\n endTimestamp,\n };\n\n const breadcrumb = {\n category: 'fetch',\n data,\n type: 'http',\n level: getBreadcrumbLogLevelFromHttpStatusCode(data.status_code),\n };\n\n client.emit('beforeOutgoingRequestBreadcrumb', breadcrumb, hint );\n\n addBreadcrumb(breadcrumb, hint);\n }\n };\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _getHistoryBreadcrumbHandler(client) {\n return function _historyBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = from ? parseUrl(from) : undefined;\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom?.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n };\n}\n\nfunction _isEvent(event) {\n return !!event && !!(event ).target;\n}\n\nexport { breadcrumbsIntegration };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { defineIntegration, fill, getFunctionName, getOriginalFunction } from '@sentry/core';\nimport { WINDOW, wrap } from '../helpers.js';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'BroadcastChannel',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'SharedWorker',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\nconst INTEGRATION_NAME = 'BrowserApiErrors';\n\nconst _browserApiErrorsIntegration = ((options = {}) => {\n const _options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n unregisterOriginalCallbacks: false,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n // TODO: This currently only works for the first client this is setup\n // We may want to adjust this to check for client etc.\n setupOnce() {\n if (_options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (_options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (_options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (_options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = _options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(target => _wrapEventTarget(target, _options));\n }\n },\n };\n}) ;\n\n/**\n * Wrap timer functions and event targets to catch errors and provide better meta data.\n */\nconst browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\n\nfunction _wrapTimeFunction(original) {\n return function ( ...args) {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n handled: false,\n type: `auto.browser.browserapierrors.${getFunctionName(original)}`,\n },\n });\n return original.apply(this, args);\n };\n}\n\nfunction _wrapRAF(original) {\n return function ( callback) {\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n handler: getFunctionName(original),\n },\n handled: false,\n type: 'auto.browser.browserapierrors.requestAnimationFrame',\n },\n }),\n ]);\n };\n}\n\nfunction _wrapXHR(originalSend) {\n return function ( ...args) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n fill(xhr, prop, function (original) {\n const wrapOptions = {\n mechanism: {\n data: {\n handler: getFunctionName(original),\n },\n handled: false,\n type: `auto.browser.browserapierrors.xhr.${prop}`,\n },\n };\n\n // If Instrument integration has been called before BrowserApiErrors, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\nfunction _wrapEventTarget(target, integrationOptions) {\n const globalObject = WINDOW ;\n const proto = globalObject[target]?.prototype;\n\n // eslint-disable-next-line no-prototype-builtins\n if (!proto?.hasOwnProperty?.('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original)\n\n {\n return function ( eventName, fn, options) {\n try {\n if (isEventListenerObject(fn)) {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'auto.browser.browserapierrors.handleEvent',\n },\n });\n }\n } catch {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n if (integrationOptions.unregisterOriginalCallbacks) {\n unregisterOriginalCallback(this, eventName, fn);\n }\n\n return original.apply(this, [\n eventName,\n wrap(fn, {\n mechanism: {\n data: {\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'auto.browser.browserapierrors.addEventListener',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(proto, 'removeEventListener', function (originalRemoveEventListener)\n\n {\n return function ( eventName, fn, options) {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n try {\n const originalEventHandler = (fn ).__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, fn, options);\n };\n });\n}\n\nfunction isEventListenerObject(obj) {\n return typeof (obj ).handleEvent === 'function';\n}\n\nfunction unregisterOriginalCallback(target, eventName, fn) {\n if (\n target &&\n typeof target === 'object' &&\n 'removeEventListener' in target &&\n typeof target.removeEventListener === 'function'\n ) {\n target.removeEventListener(eventName, fn);\n }\n}\n\nexport { browserApiErrorsIntegration };\n//# sourceMappingURL=browserapierrors.js.map\n","import { defineIntegration, debug, startSession, captureSession } from '@sentry/core';\nimport { addHistoryInstrumentationHandler } from '@sentry-internal/browser-utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\n/**\n * When added, automatically creates sessions which allow you to track adoption and crashes (crash free rate) in your Releases in Sentry.\n * More information: https://docs.sentry.io/product/releases/health/\n *\n * Note: In order for session tracking to work, you need to set up Releases: https://docs.sentry.io/product/releases/\n */\nconst browserSessionIntegration = defineIntegration(() => {\n return {\n name: 'BrowserSession',\n setupOnce() {\n if (typeof WINDOW.document === 'undefined') {\n DEBUG_BUILD &&\n debug.warn('Using the `browserSessionIntegration` in non-browser environments is not supported.');\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSession({ ignoreDuration: true });\n captureSession();\n\n // We want to create a session for every navigation as well\n addHistoryInstrumentationHandler(({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (from !== undefined && from !== to) {\n startSession({ ignoreDuration: true });\n captureSession();\n }\n });\n },\n };\n});\n\nexport { browserSessionIntegration };\n//# sourceMappingURL=browsersession.js.map\n","import { defineIntegration, addGlobalErrorInstrumentationHandler, getClient, captureEvent, debug, addGlobalUnhandledRejectionInstrumentationHandler, isPrimitive, getLocationHref, UNKNOWN_FUNCTION, isString } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\nconst INTEGRATION_NAME = 'GlobalHandlers';\n\nconst _globalHandlersIntegration = ((options = {}) => {\n const _options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n Error.stackTraceLimit = 50;\n },\n setup(client) {\n if (_options.onerror) {\n _installGlobalOnErrorHandler(client);\n globalHandlerLog('onerror');\n }\n if (_options.onunhandledrejection) {\n _installGlobalOnUnhandledRejectionHandler(client);\n globalHandlerLog('onunhandledrejection');\n }\n },\n };\n}) ;\n\nconst globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\n\nfunction _installGlobalOnErrorHandler(client) {\n addGlobalErrorInstrumentationHandler(data => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const { msg, url, line, column, error } = data;\n\n const event = _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'auto.browser.global_handlers.onerror',\n },\n });\n });\n}\n\nfunction _installGlobalOnUnhandledRejectionHandler(client) {\n addGlobalUnhandledRejectionInstrumentationHandler(e => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const error = _getUnhandledRejectionError(e);\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'auto.browser.global_handlers.onunhandledrejection',\n },\n });\n });\n}\n\n/**\n *\n */\nfunction _getUnhandledRejectionError(error) {\n if (isPrimitive(error)) {\n return error;\n }\n\n // dig the object of the rejection out of known event types\n try {\n\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in (error )) {\n return (error ).reason;\n }\n\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n if ('detail' in (error ) && 'reason' in (error ).detail) {\n return (error ).detail.reason;\n }\n } catch {} // eslint-disable-line no-empty\n\n return error;\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\nfunction _enhanceEventWithInitialFrame(\n event,\n url,\n line,\n column,\n) {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = column;\n const lineno = line;\n const filename = getFilenameFromUrl(url) ?? getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: UNKNOWN_FUNCTION,\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type) {\n DEBUG_BUILD && debug.log(`Global Handler attached: ${type}`);\n}\n\nfunction getOptions() {\n const client = getClient();\n const options = client?.getOptions() || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return options;\n}\n\nfunction getFilenameFromUrl(url) {\n if (!isString(url) || url.length === 0) {\n return undefined;\n }\n\n // stack frame urls can be data urls, for example when initializing a Worker with a base64 encoded script\n // in this case we just show the data prefix and mime type to avoid too long raw data urls\n if (url.startsWith('data:')) {\n const match = url.match(/^data:([^;]+)/);\n const mimeType = match ? match[1] : 'text/javascript';\n const isBase64 = url.includes('base64,');\n return `<data:${mimeType}${isBase64 ? ',base64' : ''}>`;\n }\n\n return url; // it's fine to not truncate it as it's not put in a regex (https://codeql.github.com/codeql-query-help/javascript/js-polynomial-redos)\n}\n\nexport { _eventFromRejectionWithPrimitive, _getUnhandledRejectionError, globalHandlersIntegration };\n//# sourceMappingURL=globalhandlers.js.map\n","import { defineIntegration } from '@sentry/core';\nimport { WINDOW, getHttpRequestData } from '../helpers.js';\n\n/**\n * Collects information about HTTP request headers and\n * attaches them to the event.\n */\nconst httpContextIntegration = defineIntegration(() => {\n return {\n name: 'HttpContext',\n preprocessEvent(event) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return;\n }\n\n const reqData = getHttpRequestData();\n const headers = {\n ...reqData.headers,\n ...event.request?.headers,\n };\n\n event.request = {\n ...reqData,\n ...event.request,\n headers,\n };\n },\n };\n});\n\nexport { httpContextIntegration };\n//# sourceMappingURL=httpcontext.js.map\n","import { defineIntegration, applyAggregateErrorsToEvent } from '@sentry/core';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(\n // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n exceptionFromError,\n options.stackParser,\n key,\n limit,\n event,\n hint,\n );\n },\n };\n}) ;\n\n/**\n * Aggregrate linked errors in an event.\n */\nconst linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\nexport { linkedErrorsIntegration };\n//# sourceMappingURL=linkederrors.js.map\n","import { defineIntegration, debug, serializeEnvelope } from '@sentry/core';\nimport { getNativeImplementation } from '@sentry-internal/browser-utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nconst INTEGRATION_NAME = 'SpotlightBrowser';\n\nconst _spotlightIntegration = ((options = {}) => {\n const sidecarUrl = options.sidecarUrl || 'http://localhost:8969/stream';\n\n return {\n name: INTEGRATION_NAME,\n setup: () => {\n DEBUG_BUILD && debug.log('Using Sidecar URL', sidecarUrl);\n },\n // We don't want to send interaction transactions/root spans created from\n // clicks within Spotlight to Sentry. Neither do we want them to be sent to\n // spotlight.\n processEvent: event => (isSpotlightInteraction(event) ? null : event),\n afterAllSetup: (client) => {\n setupSidecarForwarding(client, sidecarUrl);\n },\n };\n}) ;\n\nfunction setupSidecarForwarding(client, sidecarUrl) {\n const makeFetch = getNativeImplementation('fetch');\n let failCount = 0;\n\n client.on('beforeEnvelope', (envelope) => {\n if (failCount > 3) {\n debug.warn('[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests:', failCount);\n return;\n }\n\n makeFetch(sidecarUrl, {\n method: 'POST',\n body: serializeEnvelope(envelope),\n headers: {\n 'Content-Type': 'application/x-sentry-envelope',\n },\n mode: 'cors',\n }).then(\n res => {\n if (res.status >= 200 && res.status < 400) {\n // Reset failed requests counter on success\n failCount = 0;\n }\n },\n err => {\n failCount++;\n debug.error(\n \"Sentry SDK can't connect to Sidecar is it running? See: https://spotlightjs.com/sidecar/npx/\",\n err,\n );\n },\n );\n });\n}\n\n/**\n * Use this integration to send errors and transactions to Spotlight.\n *\n * Learn more about spotlight at https://spotlightjs.com\n */\nconst spotlightBrowserIntegration = defineIntegration(_spotlightIntegration);\n\n/**\n * Flags if the event is a transaction created from an interaction with the spotlight UI.\n */\nfunction isSpotlightInteraction(event) {\n return Boolean(\n event.type === 'transaction' &&\n event.spans &&\n event.contexts?.trace &&\n event.contexts.trace.op === 'ui.action.click' &&\n event.spans.some(({ description }) => description?.includes('#sentry-spotlight')),\n );\n}\n\nexport { INTEGRATION_NAME, isSpotlightInteraction, spotlightBrowserIntegration };\n//# sourceMappingURL=spotlight.js.map\n","import { consoleSandbox, getLocationHref } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\n/**\n * Returns true if the SDK is running in an embedded browser extension.\n * Stand-alone browser extensions (which do not share the same data as the main browser page) are fine.\n */\nfunction checkAndWarnIfIsEmbeddedBrowserExtension() {\n if (_isEmbeddedBrowserExtension()) {\n if (DEBUG_BUILD) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(\n '[Sentry] You cannot use Sentry.init() in a browser extension, see: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/',\n );\n });\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction _isEmbeddedBrowserExtension() {\n if (typeof WINDOW.window === 'undefined') {\n // No need to show the error if we're not in a browser window environment (e.g. service workers)\n return false;\n }\n\n const _window = WINDOW ;\n\n // Running the SDK in NW.js, which appears like a browser extension but isn't, is also fine\n // see: https://github.com/getsentry/sentry-javascript/issues/12668\n if (_window.nw) {\n return false;\n }\n\n const extensionObject = _window['chrome'] || _window['browser'];\n\n if (!extensionObject?.runtime?.id) {\n return false;\n }\n\n const href = getLocationHref();\n const extensionProtocols = ['chrome-extension', 'moz-extension', 'ms-browser-extension', 'safari-web-extension'];\n\n // Running the SDK in a dedicated extension page and calling Sentry.init is fine; no risk of data leakage\n const isDedicatedExtensionPage =\n WINDOW === WINDOW.top && extensionProtocols.some(protocol => href.startsWith(`${protocol}://`));\n\n return !isDedicatedExtensionPage;\n}\n\nexport { checkAndWarnIfIsEmbeddedBrowserExtension };\n//# sourceMappingURL=detectBrowserExtension.js.map\n","import { inboundFiltersIntegration, functionToStringIntegration, dedupeIntegration, getIntegrationsToSetup, stackParserFromStackParserOptions, initAndBind } from '@sentry/core';\nimport { BrowserClient } from './client.js';\nimport { breadcrumbsIntegration } from './integrations/breadcrumbs.js';\nimport { browserApiErrorsIntegration } from './integrations/browserapierrors.js';\nimport { browserSessionIntegration } from './integrations/browsersession.js';\nimport { globalHandlersIntegration } from './integrations/globalhandlers.js';\nimport { httpContextIntegration } from './integrations/httpcontext.js';\nimport { linkedErrorsIntegration } from './integrations/linkederrors.js';\nimport { spotlightBrowserIntegration } from './integrations/spotlight.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { checkAndWarnIfIsEmbeddedBrowserExtension } from './utils/detectBrowserExtension.js';\n\n/** Get the default integrations for the browser SDK. */\nfunction getDefaultIntegrations(_options) {\n /**\n * Note: Please make sure this stays in sync with Angular SDK, which re-exports\n * `getDefaultIntegrations` but with an adjusted set of integrations.\n */\n return [\n // TODO(v11): Replace with `eventFiltersIntegration` once we remove the deprecated `inboundFiltersIntegration`\n // eslint-disable-next-line deprecation/deprecation\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n browserApiErrorsIntegration(),\n breadcrumbsIntegration(),\n globalHandlersIntegration(),\n linkedErrorsIntegration(),\n dedupeIntegration(),\n httpContextIntegration(),\n browserSessionIntegration(),\n ];\n}\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nfunction init(options = {}) {\n const shouldDisableBecauseIsBrowserExtenstion =\n !options.skipBrowserExtensionCheck && checkAndWarnIfIsEmbeddedBrowserExtension();\n\n let defaultIntegrations =\n options.defaultIntegrations == null ? getDefaultIntegrations() : options.defaultIntegrations;\n\n /* rollup-include-development-only */\n if (options.spotlight) {\n if (!defaultIntegrations) {\n defaultIntegrations = [];\n }\n const args = typeof options.spotlight === 'string' ? { sidecarUrl: options.spotlight } : undefined;\n defaultIntegrations.push(spotlightBrowserIntegration(args));\n }\n /* rollup-include-development-only-end */\n\n const clientOptions = {\n ...options,\n enabled: shouldDisableBecauseIsBrowserExtenstion ? false : options.enabled,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup({\n integrations: options.integrations,\n defaultIntegrations,\n }),\n transport: options.transport || makeFetchTransport,\n };\n return initAndBind(BrowserClient, clientOptions);\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n callback();\n}\n\nexport { forceLoad, getDefaultIntegrations, init, onLoad };\n//# sourceMappingURL=sdk.js.map\n","import { debug, getCurrentScope, getClient, lastEventId, getReportDialogEndpoint } from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { WINDOW } from './helpers.js';\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the current scope.\n */\nfunction showReportDialog(options = {}) {\n const optionalDocument = WINDOW.document ;\n const injectionPoint = optionalDocument?.head || optionalDocument?.body;\n\n // doesn't work without a document (React Native)\n if (!injectionPoint) {\n DEBUG_BUILD && debug.error('[showReportDialog] Global document not defined');\n return;\n }\n\n const scope = getCurrentScope();\n const client = getClient();\n const dsn = client?.getDsn();\n\n if (!dsn) {\n DEBUG_BUILD && debug.error('[showReportDialog] DSN not configured');\n return;\n }\n\n const mergedOptions = {\n ...options,\n user: {\n ...scope.getUser(),\n ...options.user,\n },\n eventId: options.eventId || lastEventId(),\n };\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.crossOrigin = 'anonymous';\n script.src = getReportDialogEndpoint(dsn, mergedOptions);\n\n const { onLoad, onClose } = mergedOptions;\n\n if (onLoad) {\n script.onload = onLoad;\n }\n\n if (onClose) {\n const reportDialogClosedMessageHandler = (event) => {\n if (event.data === '__sentry_reportdialog_closed__') {\n try {\n onClose();\n } finally {\n WINDOW.removeEventListener('message', reportDialogClosedMessageHandler);\n }\n }\n };\n WINDOW.addEventListener('message', reportDialogClosedMessageHandler);\n }\n\n injectionPoint.appendChild(script);\n}\n\nexport { showReportDialog };\n//# sourceMappingURL=report-dialog.js.map\n","import { defineIntegration, supportsReportingObserver, GLOBAL_OBJ, getClient, withScope, captureMessage } from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nconst INTEGRATION_NAME = 'ReportingObserver';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _reportingObserverIntegration = ((options = {}) => {\n const types = options.types || ['crash', 'deprecation', 'intervention'];\n\n /** Handler for the reporting observer. */\n function handler(reports) {\n if (!SETUP_CLIENTS.has(getClient() )) {\n return;\n }\n\n for (const report of reports) {\n withScope(scope => {\n scope.setExtra('url', report.url);\n\n const label = `ReportingObserver [${report.type}]`;\n let details = 'No details available';\n\n if (report.body) {\n // Object.keys doesn't work on ReportBody, as all properties are inherited\n const plainBody\n\n = {};\n\n // eslint-disable-next-line guard-for-in\n for (const prop in report.body) {\n plainBody[prop] = report.body[prop];\n }\n\n scope.setExtra('body', plainBody);\n\n if (report.type === 'crash') {\n const body = report.body ;\n // A fancy way to create a message out of crashId OR reason OR both OR fallback\n details = [body.crashId || '', body.reason || ''].join(' ').trim() || details;\n } else {\n const body = report.body ;\n details = body.message || details;\n }\n }\n\n captureMessage(`${label}: ${details}`);\n });\n }\n }\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n if (!supportsReportingObserver()) {\n return;\n }\n\n const observer = new (WINDOW ).ReportingObserver(\n handler,\n {\n buffered: true,\n types,\n },\n );\n\n observer.observe();\n },\n\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) ;\n\n/**\n * Reporting API integration - https://w3c.github.io/reporting/\n */\nconst reportingObserverIntegration = defineIntegration(_reportingObserverIntegration);\n\nexport { reportingObserverIntegration };\n//# sourceMappingURL=reportingobserver.js.map\n","import { defineIntegration, supportsNativeFetch, addFetchInstrumentationHandler, getClient, GLOBAL_OBJ, debug, captureEvent, isSentryRequestUrl, addExceptionMechanism } from '@sentry/core';\nimport { addXhrInstrumentationHandler, SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nconst INTEGRATION_NAME = 'HttpClient';\n\nconst _httpClientIntegration = ((options = {}) => {\n const _options = {\n failedRequestStatusCodes: [[500, 599]],\n failedRequestTargets: [/.*/],\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n _wrapFetch(client, _options);\n _wrapXHR(client, _options);\n },\n };\n}) ;\n\n/**\n * Create events for failed client side HTTP requests.\n */\nconst httpClientIntegration = defineIntegration(_httpClientIntegration);\n\n/**\n * Interceptor function for fetch requests\n *\n * @param requestInfo The Fetch API request info\n * @param response The Fetch API response\n * @param requestInit The request init object\n */\nfunction _fetchResponseHandler(\n options,\n requestInfo,\n response,\n requestInit,\n error,\n) {\n if (_shouldCaptureResponse(options, response.status, response.url)) {\n const request = _getRequest(requestInfo, requestInit);\n\n let requestHeaders, responseHeaders, requestCookies, responseCookies;\n\n if (_shouldSendDefaultPii()) {\n [requestHeaders, requestCookies] = _parseCookieHeaders('Cookie', request);\n [responseHeaders, responseCookies] = _parseCookieHeaders('Set-Cookie', response);\n }\n\n const event = _createEvent({\n url: request.url,\n method: request.method,\n status: response.status,\n requestHeaders,\n responseHeaders,\n requestCookies,\n responseCookies,\n error,\n type: 'fetch',\n });\n\n captureEvent(event);\n }\n}\n\nfunction _parseCookieHeaders(\n cookieHeader,\n obj,\n) {\n const headers = _extractFetchHeaders(obj.headers);\n let cookies;\n\n try {\n const cookieString = headers[cookieHeader] || headers[cookieHeader.toLowerCase()] || undefined;\n\n if (cookieString) {\n cookies = _parseCookieString(cookieString);\n }\n } catch {\n // ignore it if parsing fails\n }\n\n return [headers, cookies];\n}\n\n/**\n * Interceptor function for XHR requests\n *\n * @param xhr The XHR request\n * @param method The HTTP method\n * @param headers The HTTP headers\n */\nfunction _xhrResponseHandler(\n options,\n xhr,\n method,\n headers,\n error,\n) {\n if (_shouldCaptureResponse(options, xhr.status, xhr.responseURL)) {\n let requestHeaders, responseCookies, responseHeaders;\n\n if (_shouldSendDefaultPii()) {\n try {\n const cookieString = xhr.getResponseHeader('Set-Cookie') || xhr.getResponseHeader('set-cookie') || undefined;\n\n if (cookieString) {\n responseCookies = _parseCookieString(cookieString);\n }\n } catch {\n // ignore it if parsing fails\n }\n\n try {\n responseHeaders = _getXHRResponseHeaders(xhr);\n } catch {\n // ignore it if parsing fails\n }\n\n requestHeaders = headers;\n }\n\n const event = _createEvent({\n url: xhr.responseURL,\n method,\n status: xhr.status,\n requestHeaders,\n // Can't access request cookies from XHR\n responseHeaders,\n responseCookies,\n error,\n type: 'xhr',\n });\n\n captureEvent(event);\n }\n}\n\n/**\n * Extracts response size from `Content-Length` header when possible\n *\n * @param headers\n * @returns The response size in bytes or undefined\n */\nfunction _getResponseSizeFromHeaders(headers) {\n if (headers) {\n const contentLength = headers['Content-Length'] || headers['content-length'];\n\n if (contentLength) {\n return parseInt(contentLength, 10);\n }\n }\n\n return undefined;\n}\n\n/**\n * Creates an object containing cookies from the given cookie string\n *\n * @param cookieString The cookie string to parse\n * @returns The parsed cookies\n */\nfunction _parseCookieString(cookieString) {\n return cookieString.split('; ').reduce((acc, cookie) => {\n const [key, value] = cookie.split('=');\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Extracts the headers as an object from the given Fetch API request or response object\n *\n * @param headers The headers to extract\n * @returns The extracted headers as an object\n */\nfunction _extractFetchHeaders(headers) {\n const result = {};\n\n headers.forEach((value, key) => {\n result[key] = value;\n });\n\n return result;\n}\n\n/**\n * Extracts the response headers as an object from the given XHR object\n *\n * @param xhr The XHR object to extract the response headers from\n * @returns The response headers as an object\n */\nfunction _getXHRResponseHeaders(xhr) {\n const headers = xhr.getAllResponseHeaders();\n\n if (!headers) {\n return {};\n }\n\n return headers.split('\\r\\n').reduce((acc, line) => {\n const [key, value] = line.split(': ');\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Checks if the given target url is in the given list of targets\n *\n * @param target The target url to check\n * @returns true if the target url is in the given list of targets, false otherwise\n */\nfunction _isInGivenRequestTargets(\n failedRequestTargets,\n target,\n) {\n return failedRequestTargets.some((givenRequestTarget) => {\n if (typeof givenRequestTarget === 'string') {\n return target.includes(givenRequestTarget);\n }\n\n return givenRequestTarget.test(target);\n });\n}\n\n/**\n * Checks if the given status code is in the given range\n *\n * @param status The status code to check\n * @returns true if the status code is in the given range, false otherwise\n */\nfunction _isInGivenStatusRanges(\n failedRequestStatusCodes,\n status,\n) {\n return failedRequestStatusCodes.some((range) => {\n if (typeof range === 'number') {\n return range === status;\n }\n\n return status >= range[0] && status <= range[1];\n });\n}\n\n/**\n * Wraps `fetch` function to capture request and response data\n */\nfunction _wrapFetch(client, options) {\n if (!supportsNativeFetch()) {\n return;\n }\n\n addFetchInstrumentationHandler(handlerData => {\n if (getClient() !== client) {\n return;\n }\n\n const { response, args, error, virtualError } = handlerData;\n const [requestInfo, requestInit] = args ;\n\n if (!response) {\n return;\n }\n\n _fetchResponseHandler(options, requestInfo, response , requestInit, error || virtualError);\n }, false);\n}\n\n/**\n * Wraps XMLHttpRequest to capture request and response data\n */\nfunction _wrapXHR(client, options) {\n if (!('XMLHttpRequest' in GLOBAL_OBJ)) {\n return;\n }\n\n addXhrInstrumentationHandler(handlerData => {\n if (getClient() !== client) {\n return;\n }\n\n const { error, virtualError } = handlerData;\n\n const xhr = handlerData.xhr ;\n\n const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n if (!sentryXhrData) {\n return;\n }\n\n const { method, request_headers: headers } = sentryXhrData;\n\n try {\n _xhrResponseHandler(options, xhr, method, headers, error || virtualError);\n } catch (e) {\n DEBUG_BUILD && debug.warn('Error while extracting response event form XHR response', e);\n }\n });\n}\n\n/**\n * Checks whether to capture given response as an event\n *\n * @param status response status code\n * @param url response url\n */\nfunction _shouldCaptureResponse(options, status, url) {\n return (\n _isInGivenStatusRanges(options.failedRequestStatusCodes, status) &&\n _isInGivenRequestTargets(options.failedRequestTargets, url) &&\n !isSentryRequestUrl(url, getClient())\n );\n}\n\n/**\n * Creates a synthetic Sentry event from given response data\n *\n * @param data response data\n * @returns event\n */\nfunction _createEvent(data\n\n) {\n const client = getClient();\n const virtualStackTrace = client && data.error && data.error instanceof Error ? data.error.stack : undefined;\n // Remove the first frame from the stack as it's the HttpClient call\n const stack = virtualStackTrace && client ? client.getOptions().stackParser(virtualStackTrace, 0, 1) : undefined;\n const message = `HTTP Client Error with status code: ${data.status}`;\n\n const event = {\n message,\n exception: {\n values: [\n {\n type: 'Error',\n value: message,\n stacktrace: stack ? { frames: stack } : undefined,\n },\n ],\n },\n request: {\n url: data.url,\n method: data.method,\n headers: data.requestHeaders,\n cookies: data.requestCookies,\n },\n contexts: {\n response: {\n status_code: data.status,\n headers: data.responseHeaders,\n cookies: data.responseCookies,\n body_size: _getResponseSizeFromHeaders(data.responseHeaders),\n },\n },\n };\n\n addExceptionMechanism(event, {\n type: `auto.http.client.${data.type}`,\n handled: false,\n });\n\n return event;\n}\n\nfunction _getRequest(requestInfo, requestInit) {\n if (!requestInit && requestInfo instanceof Request) {\n return requestInfo;\n }\n\n // If both are set, we try to construct a new Request with the given arguments\n // However, if e.g. the original request has a `body`, this will throw an error because it was already accessed\n // In this case, as a fallback, we just use the original request - using both is rather an edge case\n if (requestInfo instanceof Request && requestInfo.bodyUsed) {\n return requestInfo;\n }\n\n return new Request(requestInfo, requestInit);\n}\n\nfunction _shouldSendDefaultPii() {\n const client = getClient();\n return client ? Boolean(client.getOptions().sendDefaultPii) : false;\n}\n\nexport { httpClientIntegration };\n//# sourceMappingURL=httpclient.js.map\n","import { defineIntegration, GLOBAL_OBJ, stripUrlQueryAndFragment, addContextToFrame } from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nconst DEFAULT_LINES_OF_CONTEXT = 7;\n\nconst INTEGRATION_NAME = 'ContextLines';\n\nconst _contextLinesIntegration = ((options = {}) => {\n const contextLines = options.frameContextLines != null ? options.frameContextLines : DEFAULT_LINES_OF_CONTEXT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addSourceContext(event, contextLines);\n },\n };\n}) ;\n\n/**\n * Collects source context lines around the lines of stackframes pointing to JS embedded in\n * the current page's HTML.\n *\n * This integration DOES NOT work for stack frames pointing to JS files that are loaded by the browser.\n * For frames pointing to files, context lines are added during ingestion and symbolication\n * by attempting to download the JS files to the Sentry backend.\n *\n * Use this integration if you have inline JS code in HTML pages that can't be accessed\n * by our backend (e.g. due to a login-protected page).\n */\nconst contextLinesIntegration = defineIntegration(_contextLinesIntegration);\n\n/**\n * Processes an event and adds context lines.\n */\nfunction addSourceContext(event, contextLines) {\n const doc = WINDOW.document;\n const htmlFilename = WINDOW.location && stripUrlQueryAndFragment(WINDOW.location.href);\n if (!doc || !htmlFilename) {\n return event;\n }\n\n const exceptions = event.exception?.values;\n if (!exceptions?.length) {\n return event;\n }\n\n const html = doc.documentElement.innerHTML;\n if (!html) {\n return event;\n }\n\n const htmlLines = ['<!DOCTYPE html>', '<html>', ...html.split('\\n'), '</html>'];\n\n exceptions.forEach(exception => {\n const stacktrace = exception.stacktrace;\n if (stacktrace?.frames) {\n stacktrace.frames = stacktrace.frames.map(frame =>\n applySourceContextToFrame(frame, htmlLines, htmlFilename, contextLines),\n );\n }\n });\n\n return event;\n}\n\n/**\n * Only exported for testing\n */\nfunction applySourceContextToFrame(\n frame,\n htmlLines,\n htmlFilename,\n linesOfContext,\n) {\n if (frame.filename !== htmlFilename || !frame.lineno || !htmlLines.length) {\n return frame;\n }\n\n addContextToFrame(htmlLines, frame, linesOfContext);\n\n return frame;\n}\n\nexport { applySourceContextToFrame, contextLinesIntegration };\n//# sourceMappingURL=contextlines.js.map\n","import { defineIntegration, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, isString, stringMatchesSomePattern } from '@sentry/core';\nimport { SENTRY_XHR_DATA_KEY, getBodyString, getFetchRequestArgBody } from '@sentry-internal/browser-utils';\n\nconst INTEGRATION_NAME = 'GraphQLClient';\n\nconst _graphqlClientIntegration = ((options) => {\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n _updateSpanWithGraphQLData(client, options);\n _updateBreadcrumbWithGraphQLData(client, options);\n },\n };\n}) ;\n\nfunction _updateSpanWithGraphQLData(client, options) {\n client.on('beforeOutgoingRequestSpan', (span, hint) => {\n const spanJSON = spanToJSON(span);\n\n const spanAttributes = spanJSON.data || {};\n const spanOp = spanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_OP];\n\n const isHttpClientSpan = spanOp === 'http.client';\n\n if (!isHttpClientSpan) {\n return;\n }\n\n const httpUrl = spanAttributes[SEMANTIC_ATTRIBUTE_URL_FULL] || spanAttributes['http.url'];\n const httpMethod = spanAttributes[SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD] || spanAttributes['http.method'];\n\n if (!isString(httpUrl) || !isString(httpMethod)) {\n return;\n }\n\n const { endpoints } = options;\n const isTracedGraphqlEndpoint = stringMatchesSomePattern(httpUrl, endpoints);\n const payload = getRequestPayloadXhrOrFetch(hint );\n\n if (isTracedGraphqlEndpoint && payload) {\n const graphqlBody = getGraphQLRequestPayload(payload);\n\n if (graphqlBody) {\n const operationInfo = _getGraphQLOperation(graphqlBody);\n span.updateName(`${httpMethod} ${httpUrl} (${operationInfo})`);\n span.setAttribute('graphql.document', payload);\n }\n }\n });\n}\n\nfunction _updateBreadcrumbWithGraphQLData(client, options) {\n client.on('beforeOutgoingRequestBreadcrumb', (breadcrumb, handlerData) => {\n const { category, type, data } = breadcrumb;\n\n const isFetch = category === 'fetch';\n const isXhr = category === 'xhr';\n const isHttpBreadcrumb = type === 'http';\n\n if (isHttpBreadcrumb && (isFetch || isXhr)) {\n const httpUrl = data?.url;\n const { endpoints } = options;\n\n const isTracedGraphqlEndpoint = stringMatchesSomePattern(httpUrl, endpoints);\n const payload = getRequestPayloadXhrOrFetch(handlerData );\n\n if (isTracedGraphqlEndpoint && data && payload) {\n const graphqlBody = getGraphQLRequestPayload(payload);\n\n if (!data.graphql && graphqlBody) {\n const operationInfo = _getGraphQLOperation(graphqlBody);\n data['graphql.document'] = graphqlBody.query;\n data['graphql.operation'] = operationInfo;\n }\n }\n }\n });\n}\n\n/**\n * @param requestBody - GraphQL request\n * @returns A formatted version of the request: 'TYPE NAME' or 'TYPE'\n */\nfunction _getGraphQLOperation(requestBody) {\n const { query: graphqlQuery, operationName: graphqlOperationName } = requestBody;\n\n const { operationName = graphqlOperationName, operationType } = parseGraphQLQuery(graphqlQuery);\n const operationInfo = operationName ? `${operationType} ${operationName}` : `${operationType}`;\n\n return operationInfo;\n}\n\n/**\n * Get the request body/payload based on the shape of the hint.\n *\n * Exported for tests only.\n */\nfunction getRequestPayloadXhrOrFetch(hint) {\n const isXhr = 'xhr' in hint;\n\n let body;\n\n if (isXhr) {\n const sentryXhrData = hint.xhr[SENTRY_XHR_DATA_KEY];\n body = sentryXhrData && getBodyString(sentryXhrData.body)[0];\n } else {\n const sentryFetchData = getFetchRequestArgBody(hint.input);\n body = getBodyString(sentryFetchData)[0];\n }\n\n return body;\n}\n\n/**\n * Extract the name and type of the operation from the GraphQL query.\n *\n * Exported for tests only.\n */\nfunction parseGraphQLQuery(query) {\n const namedQueryRe = /^(?:\\s*)(query|mutation|subscription)(?:\\s*)(\\w+)(?:\\s*)[{(]/;\n const unnamedQueryRe = /^(?:\\s*)(query|mutation|subscription)(?:\\s*)[{(]/;\n\n const namedMatch = query.match(namedQueryRe);\n if (namedMatch) {\n return {\n operationType: namedMatch[1],\n operationName: namedMatch[2],\n };\n }\n\n const unnamedMatch = query.match(unnamedQueryRe);\n if (unnamedMatch) {\n return {\n operationType: unnamedMatch[1],\n operationName: undefined,\n };\n }\n return {\n operationType: undefined,\n operationName: undefined,\n };\n}\n\n/**\n * Extract the payload of a request if it's GraphQL.\n * Exported for tests only.\n * @param payload - A valid JSON string\n * @returns A POJO or undefined\n */\nfunction getGraphQLRequestPayload(payload) {\n let graphqlBody = undefined;\n try {\n const requestBody = JSON.parse(payload) ;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const isGraphQLRequest = !!requestBody['query'];\n if (isGraphQLRequest) {\n graphqlBody = requestBody;\n }\n } finally {\n // Fallback to undefined if payload is an invalid JSON (SyntaxError)\n\n /* eslint-disable no-unsafe-finally */\n return graphqlBody;\n }\n}\n\n/**\n * This integration ensures that GraphQL requests made in the browser\n * have their GraphQL-specific data captured and attached to spans and breadcrumbs.\n */\nconst graphqlClientIntegration = defineIntegration(_graphqlClientIntegration);\n\nexport { getGraphQLRequestPayload, getRequestPayloadXhrOrFetch, graphqlClientIntegration, parseGraphQLQuery };\n//# sourceMappingURL=graphqlClient.js.map\n","import { WINDOW } from '../helpers.js';\n\n/**\n * Checks if the baggage header has Sentry values.\n */\nfunction baggageHeaderHasSentryValues(baggageHeader) {\n return baggageHeader.split(',').some(value => value.trim().startsWith('sentry-'));\n}\n\n/**\n * Gets the full URL from a given URL string.\n */\nfunction getFullURL(url) {\n try {\n // By adding a base URL to new URL(), this will also work for relative urls\n // If `url` is a full URL, the base URL is ignored anyhow\n const parsed = new URL(url, WINDOW.location.origin);\n return parsed.href;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Checks if the entry is a PerformanceResourceTiming.\n */\nfunction isPerformanceResourceTiming(entry) {\n return (\n entry.entryType === 'resource' &&\n 'initiatorType' in entry &&\n typeof (entry ).nextHopProtocol === 'string' &&\n (entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest')\n );\n}\n\n/**\n * Creates a Headers object from a record of string key-value pairs, and returns undefined if it fails.\n */\nfunction createHeadersSafely(headers) {\n try {\n return new Headers(headers);\n } catch {\n // noop\n return undefined;\n }\n}\n\nexport { baggageHeaderHasSentryValues, createHeadersSafely, getFullURL, isPerformanceResourceTiming };\n//# sourceMappingURL=utils.js.map\n","import { addFetchEndInstrumentationHandler, addFetchInstrumentationHandler, instrumentFetchRequest, parseUrl, getLocationHref, stringMatchesSomePattern, spanToJSON, hasSpansEnabled, setHttpStatus, stripUrlQueryAndFragment, getActiveSpan, startInactiveSpan, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SentryNonRecordingSpan, getClient, getTraceData } from '@sentry/core';\nimport { addXhrInstrumentationHandler, addPerformanceInstrumentationHandler, resourceTimingToSpanAttributes, SENTRY_XHR_DATA_KEY, parseXhrResponseHeaders } from '@sentry-internal/browser-utils';\nimport { getFullURL, createHeadersSafely, isPerformanceResourceTiming, baggageHeaderHasSentryValues } from './utils.js';\n\n/** Options for Request Instrumentation */\n\nconst responseToSpanId = new WeakMap();\nconst spanIdToEndTimestamp = new Map();\n\nconst defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n enableHTTPTimings: true,\n trackFetchStreamPerformance: false,\n};\n\n/** Registers span creators for xhr and fetch requests */\nfunction instrumentOutgoingRequests(client, _options) {\n const {\n traceFetch,\n traceXHR,\n trackFetchStreamPerformance,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n tracePropagationTargets,\n onRequestSpanStart,\n onRequestSpanEnd,\n } = {\n ...defaultRequestInstrumentationOptions,\n ..._options,\n };\n\n const shouldCreateSpan =\n typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_) => true;\n\n const shouldAttachHeadersWithTargets = (url) => shouldAttachHeaders(url, tracePropagationTargets);\n\n const spans = {};\n\n const propagateTraceparent = (client ).getOptions().propagateTraceparent;\n\n if (traceFetch) {\n // Keeping track of http requests, whose body payloads resolved later than the initial resolved request\n // e.g. streaming using server sent events (SSE)\n client.addEventProcessor(event => {\n if (event.type === 'transaction' && event.spans) {\n event.spans.forEach(span => {\n if (span.op === 'http.client') {\n const updatedTimestamp = spanIdToEndTimestamp.get(span.span_id);\n if (updatedTimestamp) {\n span.timestamp = updatedTimestamp / 1000;\n spanIdToEndTimestamp.delete(span.span_id);\n }\n }\n });\n }\n return event;\n });\n\n if (trackFetchStreamPerformance) {\n addFetchEndInstrumentationHandler(handlerData => {\n if (handlerData.response) {\n const span = responseToSpanId.get(handlerData.response);\n if (span && handlerData.endTimestamp) {\n spanIdToEndTimestamp.set(span, handlerData.endTimestamp);\n }\n }\n });\n }\n\n addFetchInstrumentationHandler(handlerData => {\n const createdSpan = instrumentFetchRequest(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans, {\n propagateTraceparent,\n onRequestSpanEnd,\n });\n\n if (handlerData.response && handlerData.fetchData.__span) {\n responseToSpanId.set(handlerData.response, handlerData.fetchData.__span);\n }\n\n // We cannot use `window.location` in the generic fetch instrumentation,\n // but we need it for reliable `server.address` attribute.\n // so we extend this in here\n if (createdSpan) {\n const fullUrl = getFullURL(handlerData.fetchData.url);\n const host = fullUrl ? parseUrl(fullUrl).host : undefined;\n createdSpan.setAttributes({\n 'http.url': fullUrl,\n 'server.address': host,\n });\n\n if (enableHTTPTimings) {\n addHTTPTimings(createdSpan);\n }\n\n onRequestSpanStart?.(createdSpan, { headers: handlerData.headers });\n }\n });\n }\n\n if (traceXHR) {\n addXhrInstrumentationHandler(handlerData => {\n const createdSpan = xhrCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeadersWithTargets,\n spans,\n propagateTraceparent,\n onRequestSpanEnd,\n );\n\n if (createdSpan) {\n if (enableHTTPTimings) {\n addHTTPTimings(createdSpan);\n }\n\n onRequestSpanStart?.(createdSpan, {\n headers: createHeadersSafely(handlerData.xhr.__sentry_xhr_v3__?.request_headers),\n });\n }\n });\n }\n}\n\n/**\n * Creates a temporary observer to listen to the next fetch/xhr resourcing timings,\n * so that when timings hit their per-browser limit they don't need to be removed.\n *\n * @param span A span that has yet to be finished, must contain `url` on data.\n */\nfunction addHTTPTimings(span) {\n const { url } = spanToJSON(span).data;\n\n if (!url || typeof url !== 'string') {\n return;\n }\n\n const cleanup = addPerformanceInstrumentationHandler('resource', ({ entries }) => {\n entries.forEach(entry => {\n if (isPerformanceResourceTiming(entry) && entry.name.endsWith(url)) {\n span.setAttributes(resourceTimingToSpanAttributes(entry));\n // In the next tick, clean this handler up\n // We have to wait here because otherwise this cleans itself up before it is fully done\n setTimeout(cleanup);\n }\n });\n });\n}\n\n/**\n * A function that determines whether to attach tracing headers to a request.\n * We only export this function for testing purposes.\n */\nfunction shouldAttachHeaders(\n targetUrl,\n tracePropagationTargets,\n) {\n // window.location.href not being defined is an edge case in the browser but we need to handle it.\n // Potentially dangerous situations where it may not be defined: Browser Extensions, Web Workers, patching of the location obj\n const href = getLocationHref();\n\n if (!href) {\n // If there is no window.location.origin, we default to only attaching tracing headers to relative requests, i.e. ones that start with `/`\n // BIG DISCLAIMER: Users can call URLs with a double slash (fetch(\"//example.com/api\")), this is a shorthand for \"send to the same protocol\",\n // so we need a to exclude those requests, because they might be cross origin.\n const isRelativeSameOriginRequest = !!targetUrl.match(/^\\/(?!\\/)/);\n if (!tracePropagationTargets) {\n return isRelativeSameOriginRequest;\n } else {\n return stringMatchesSomePattern(targetUrl, tracePropagationTargets);\n }\n } else {\n let resolvedUrl;\n let currentOrigin;\n\n // URL parsing may fail, we default to not attaching trace headers in that case.\n try {\n resolvedUrl = new URL(targetUrl, href);\n currentOrigin = new URL(href).origin;\n } catch {\n return false;\n }\n\n const isSameOriginRequest = resolvedUrl.origin === currentOrigin;\n if (!tracePropagationTargets) {\n return isSameOriginRequest;\n } else {\n return (\n stringMatchesSomePattern(resolvedUrl.toString(), tracePropagationTargets) ||\n (isSameOriginRequest && stringMatchesSomePattern(resolvedUrl.pathname, tracePropagationTargets))\n );\n }\n }\n}\n\n/**\n * Create and track xhr request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\nfunction xhrCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n propagateTraceparent,\n onRequestSpanEnd,\n) {\n const xhr = handlerData.xhr;\n const sentryXhrData = xhr?.[SENTRY_XHR_DATA_KEY];\n\n if (!xhr || xhr.__sentry_own_request__ || !sentryXhrData) {\n return undefined;\n }\n\n const { url, method } = sentryXhrData;\n\n const shouldCreateSpanResult = hasSpansEnabled() && shouldCreateSpan(url);\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span && sentryXhrData.status_code !== undefined) {\n setHttpStatus(span, sentryXhrData.status_code);\n span.end();\n\n onRequestSpanEnd?.(span, {\n headers: createHeadersSafely(parseXhrResponseHeaders(xhr )),\n error: handlerData.error,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const fullUrl = getFullURL(url);\n const parsedUrl = fullUrl ? parseUrl(fullUrl) : parseUrl(url);\n\n const urlForSpanName = stripUrlQueryAndFragment(url);\n\n const hasParent = !!getActiveSpan();\n\n const span =\n shouldCreateSpanResult && hasParent\n ? startInactiveSpan({\n name: `${method} ${urlForSpanName}`,\n attributes: {\n url,\n type: 'xhr',\n 'http.method': method,\n 'http.url': fullUrl,\n 'server.address': parsedUrl?.host,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.browser',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n ...(parsedUrl?.search && { 'http.query': parsedUrl?.search }),\n ...(parsedUrl?.hash && { 'http.fragment': parsedUrl?.hash }),\n },\n })\n : new SentryNonRecordingSpan();\n\n xhr.__sentry_xhr_span_id__ = span.spanContext().spanId;\n spans[xhr.__sentry_xhr_span_id__] = span;\n\n if (shouldAttachHeaders(url)) {\n addTracingHeadersToXhrRequest(\n xhr,\n // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction),\n // we do not want to use the span as base for the trace headers,\n // which means that the headers will be generated from the scope and the sampling decision is deferred\n hasSpansEnabled() && hasParent ? span : undefined,\n propagateTraceparent,\n );\n }\n\n const client = getClient();\n if (client) {\n client.emit('beforeOutgoingRequestSpan', span, handlerData );\n }\n\n return span;\n}\n\nfunction addTracingHeadersToXhrRequest(\n xhr,\n span,\n propagateTraceparent,\n) {\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = getTraceData({ span, propagateTraceparent });\n\n if (sentryTrace) {\n setHeaderOnXhr(xhr, sentryTrace, baggage, traceparent);\n }\n}\n\nfunction setHeaderOnXhr(\n xhr,\n sentryTraceHeader,\n sentryBaggageHeader,\n traceparentHeader,\n) {\n const originalHeaders = xhr.__sentry_xhr_v3__?.request_headers;\n\n if (originalHeaders?.['sentry-trace'] || !xhr.setRequestHeader) {\n // bail if a sentry-trace header is already set\n return;\n }\n\n try {\n xhr.setRequestHeader('sentry-trace', sentryTraceHeader);\n\n if (traceparentHeader && !originalHeaders?.['traceparent']) {\n xhr.setRequestHeader('traceparent', traceparentHeader);\n }\n\n if (sentryBaggageHeader) {\n // only add our headers if\n // - no pre-existing baggage header exists\n // - or it is set and doesn't yet contain sentry values\n const originalBaggageHeader = originalHeaders?.['baggage'];\n if (!originalBaggageHeader || !baggageHeaderHasSentryValues(originalBaggageHeader)) {\n // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n // We can therefore simply set a baggage header without checking what was there before\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n xhr.setRequestHeader('baggage', sentryBaggageHeader);\n }\n }\n } catch {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n}\n\nexport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests, shouldAttachHeaders };\n//# sourceMappingURL=request.js.map\n","import { getActiveSpan, getRootSpan, spanToJSON, debug, SPAN_STATUS_ERROR } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\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 { op, status } = 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) {\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\nexport { registerBackgroundTabDetection };\n//# sourceMappingURL=backgroundtab.js.map\n","import { getRootSpan, getCurrentScope, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, spanToJSON, debug, SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\nimport '@sentry-internal/browser-utils';\nimport '../stack-parsers.js';\nimport '../integrations/breadcrumbs.js';\nimport '../integrations/browserapierrors.js';\nimport '../integrations/browsersession.js';\nimport '../integrations/globalhandlers.js';\nimport '../integrations/httpcontext.js';\nimport '../integrations/linkederrors.js';\nimport '../integrations/spotlight.js';\n\n// 1h in seconds\nconst PREVIOUS_TRACE_MAX_DURATION = 3600;\n\n// session storage key\nconst PREVIOUS_TRACE_KEY = 'sentry_previous_trace';\n\nconst PREVIOUS_TRACE_TMP_SPAN_ATTRIBUTE = 'sentry.previous_trace';\n\n/**\n * Takes care of linking traces and applying the (consistent) sampling behavoiour based on the passed options\n * @param options - options for linking traces and consistent trace sampling (@see BrowserTracingOptions)\n * @param client - Sentry client\n */\nfunction linkTraces(\n client,\n {\n linkPreviousTrace,\n consistentTraceSampling,\n }\n\n,\n) {\n const useSessionStorage = linkPreviousTrace === 'session-storage';\n\n let inMemoryPreviousTraceInfo = useSessionStorage ? getPreviousTraceFromSessionStorage() : undefined;\n\n client.on('spanStart', span => {\n if (getRootSpan(span) !== span) {\n return;\n }\n\n const oldPropagationContext = getCurrentScope().getPropagationContext();\n inMemoryPreviousTraceInfo = addPreviousTraceSpanLink(inMemoryPreviousTraceInfo, span, oldPropagationContext);\n\n if (useSessionStorage) {\n storePreviousTraceInSessionStorage(inMemoryPreviousTraceInfo);\n }\n });\n\n let isFirstTraceOnPageload = true;\n if (consistentTraceSampling) {\n /*\n When users opt into `consistentTraceSampling`, we need to ensure that we propagate\n the previous trace's sample rate and rand to the current trace. This is necessary because otherwise, span\n metric extrapolation is inaccurate, as we'd propagate too high of a sample rate for the subsequent traces.\n\n So therefore, we pretend that the previous trace was the parent trace of the newly started trace. To do that,\n we mutate the propagation context of the current trace and set the sample rate and sample rand of the previous trace.\n Timing-wise, it is fine because it happens before we even sample the root span.\n\n @see https://github.com/getsentry/sentry-javascript/issues/15754\n */\n client.on('beforeSampling', mutableSamplingContextData => {\n if (!inMemoryPreviousTraceInfo) {\n return;\n }\n\n const scope = getCurrentScope();\n const currentPropagationContext = scope.getPropagationContext();\n\n // We do not want to force-continue the sampling decision if we continue a trace\n // that was started on the backend. Most prominently, this will happen in MPAs where\n // users hard-navigate between pages. In this case, the sampling decision of a potentially\n // started trace on the server takes precedence.\n // Why? We want to prioritize inter-trace consistency over intra-trace consistency.\n if (isFirstTraceOnPageload && currentPropagationContext.parentSpanId) {\n isFirstTraceOnPageload = false;\n return;\n }\n\n scope.setPropagationContext({\n ...currentPropagationContext,\n dsc: {\n ...currentPropagationContext.dsc,\n sample_rate: String(inMemoryPreviousTraceInfo.sampleRate),\n sampled: String(spanContextSampled(inMemoryPreviousTraceInfo.spanContext)),\n },\n sampleRand: inMemoryPreviousTraceInfo.sampleRand,\n });\n\n mutableSamplingContextData.parentSampled = spanContextSampled(inMemoryPreviousTraceInfo.spanContext);\n mutableSamplingContextData.parentSampleRate = inMemoryPreviousTraceInfo.sampleRate;\n\n mutableSamplingContextData.spanAttributes = {\n ...mutableSamplingContextData.spanAttributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE]: inMemoryPreviousTraceInfo.sampleRate,\n };\n });\n }\n}\n\n/**\n * Adds a previous_trace span link to the passed span if the passed\n * previousTraceInfo is still valid.\n *\n * @returns the updated previous trace info (based on the current span/trace) to\n * be used on the next call\n */\nfunction addPreviousTraceSpanLink(\n previousTraceInfo,\n span,\n oldPropagationContext,\n) {\n const spanJson = spanToJSON(span);\n\n function getSampleRate() {\n try {\n return (\n Number(oldPropagationContext.dsc?.sample_rate) ?? Number(spanJson.data?.[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE])\n );\n } catch {\n return 0;\n }\n }\n\n const updatedPreviousTraceInfo = {\n spanContext: span.spanContext(),\n startTimestamp: spanJson.start_timestamp,\n sampleRate: getSampleRate(),\n sampleRand: oldPropagationContext.sampleRand,\n };\n\n if (!previousTraceInfo) {\n return updatedPreviousTraceInfo;\n }\n\n const previousTraceSpanCtx = previousTraceInfo.spanContext;\n if (previousTraceSpanCtx.traceId === spanJson.trace_id) {\n // This means, we're still in the same trace so let's not update the previous trace info\n // or add a link to the current span.\n // Once we move away from the long-lived, route-based trace model, we can remove this cases\n return previousTraceInfo;\n }\n\n // Only add the link if the startTimeStamp of the previous trace's root span is within\n // PREVIOUS_TRACE_MAX_DURATION (1h) of the current root span's startTimestamp\n // This is done to\n // - avoid adding links to \"stale\" traces\n // - enable more efficient querying for previous/next traces in Sentry\n if (Date.now() / 1000 - previousTraceInfo.startTimestamp <= PREVIOUS_TRACE_MAX_DURATION) {\n if (DEBUG_BUILD) {\n debug.log(\n `Adding previous_trace ${previousTraceSpanCtx} link to span ${{\n op: spanJson.op,\n ...span.spanContext(),\n }}`,\n );\n }\n\n span.addLink({\n context: previousTraceSpanCtx,\n attributes: {\n [SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE]: 'previous_trace',\n },\n });\n\n // TODO: Remove this once EAP can store span links. We currently only set this attribute so that we\n // can obtain the previous trace information from the EAP store. Long-term, EAP will handle\n // span links and then we should remove this again. Also throwing in a TODO(v11), to remind us\n // to check this at v11 time :)\n span.setAttribute(\n PREVIOUS_TRACE_TMP_SPAN_ATTRIBUTE,\n `${previousTraceSpanCtx.traceId}-${previousTraceSpanCtx.spanId}-${\n spanContextSampled(previousTraceSpanCtx) ? 1 : 0\n }`,\n );\n }\n\n return updatedPreviousTraceInfo;\n}\n\n/**\n * Stores @param previousTraceInfo in sessionStorage.\n */\nfunction storePreviousTraceInSessionStorage(previousTraceInfo) {\n try {\n WINDOW.sessionStorage.setItem(PREVIOUS_TRACE_KEY, JSON.stringify(previousTraceInfo));\n } catch (e) {\n // Ignore potential errors (e.g. if sessionStorage is not available)\n DEBUG_BUILD && debug.warn('Could not store previous trace in sessionStorage', e);\n }\n}\n\n/**\n * Retrieves the previous trace from sessionStorage if available.\n */\nfunction getPreviousTraceFromSessionStorage() {\n try {\n const previousTraceInfo = WINDOW.sessionStorage?.getItem(PREVIOUS_TRACE_KEY);\n // @ts-expect-error - intentionally risking JSON.parse throwing when previousTraceInfo is null to save bundle size\n return JSON.parse(previousTraceInfo);\n } catch {\n return undefined;\n }\n}\n\n/**\n * see {@link import('@sentry/core').spanIsSampled}\n */\nfunction spanContextSampled(ctx) {\n return ctx.traceFlags === 0x1;\n}\n\nexport { PREVIOUS_TRACE_KEY, PREVIOUS_TRACE_MAX_DURATION, PREVIOUS_TRACE_TMP_SPAN_ATTRIBUTE, addPreviousTraceSpanLink, getPreviousTraceFromSessionStorage, linkTraces, spanContextSampled, storePreviousTraceInSessionStorage };\n//# sourceMappingURL=linkedTraces.js.map\n","import { TRACING_DEFAULTS, getLocationHref, browserPerformanceTimeOrigin, parseStringToURLObject, registerSpanErrorInstrumentation, GLOBAL_OBJ, getClient, debug, getIsolationScope, generateSpanId, generateTraceId, hasSpansEnabled, getCurrentScope, propagationContextFromHeaders, spanToJSON, dateTimestampInSeconds, timestampInSeconds, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, startInactiveSpan, startIdleSpan, getDynamicSamplingContextFromSpan, spanIsSampled, SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, addNonEnumerableProperty, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { addHistoryInstrumentationHandler, registerInpInteractionListener, startTrackingWebVitals, startTrackingINP, startTrackingElementTiming, startTrackingLongAnimationFrames, startTrackingLongTasks, startTrackingInteractions, addPerformanceEntries } from '@sentry-internal/browser-utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW, getHttpRequestData } from '../helpers.js';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { linkTraces } from './linkedTraces.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\n\nconst BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n ...TRACING_DEFAULTS,\n instrumentNavigation: true,\n instrumentPageLoad: true,\n markBackgroundSpan: true,\n enableLongTask: true,\n enableLongAnimationFrame: true,\n enableInp: true,\n enableElementTiming: true,\n ignoreResourceSpans: [],\n ignorePerformanceApiSpans: [],\n detectRedirects: true,\n linkPreviousTrace: 'in-memory',\n consistentTraceSampling: false,\n enableReportPageLoaded: false,\n _experiments: {},\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library.\n *\n * We explicitly export the proper type here, as this has to be extended in some cases.\n */\nconst browserTracingIntegration = ((options = {}) => {\n const latestRoute = {\n name: undefined,\n source: undefined,\n };\n\n /**\n * This is just a small wrapper that makes `document` optional.\n * We want to be extra-safe and always check that this exists, to ensure weird environments do not blow up.\n */\n const optionalWindowDocument = WINDOW.document ;\n\n const {\n enableInp,\n enableElementTiming,\n enableLongTask,\n enableLongAnimationFrame,\n _experiments: { enableInteractions, enableStandaloneClsSpans, enableStandaloneLcpSpans },\n beforeStartSpan,\n idleTimeout,\n finalTimeout,\n childSpanTimeout,\n markBackgroundSpan,\n traceFetch,\n traceXHR,\n trackFetchStreamPerformance,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n ignoreResourceSpans,\n ignorePerformanceApiSpans,\n instrumentPageLoad,\n instrumentNavigation,\n detectRedirects,\n linkPreviousTrace,\n consistentTraceSampling,\n enableReportPageLoaded,\n onRequestSpanStart,\n onRequestSpanEnd,\n } = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ...options,\n };\n\n let _collectWebVitals;\n let lastInteractionTimestamp;\n\n let _pageloadSpan;\n\n /** Create routing idle transaction. */\n function _createRouteSpan(client, startSpanOptions, makeActive = true) {\n const isPageloadSpan = startSpanOptions.op === 'pageload';\n\n const initialSpanName = startSpanOptions.name;\n const finalStartSpanOptions = beforeStartSpan\n ? beforeStartSpan(startSpanOptions)\n : startSpanOptions;\n\n const attributes = finalStartSpanOptions.attributes || {};\n\n // If `finalStartSpanOptions.name` is different than `startSpanOptions.name`\n // it is because `beforeStartSpan` set a custom name. Therefore we set the source to 'custom'.\n if (initialSpanName !== finalStartSpanOptions.name) {\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'custom';\n finalStartSpanOptions.attributes = attributes;\n }\n\n if (!makeActive) {\n // We want to ensure this has 0s duration\n const now = dateTimestampInSeconds();\n startInactiveSpan({\n ...finalStartSpanOptions,\n startTime: now,\n }).end(now);\n return;\n }\n\n latestRoute.name = finalStartSpanOptions.name;\n latestRoute.source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n const idleSpan = startIdleSpan(finalStartSpanOptions, {\n idleTimeout,\n finalTimeout,\n childSpanTimeout,\n // should wait for finish signal if it's a pageload transaction\n disableAutoFinish: isPageloadSpan,\n beforeSpanEnd: span => {\n // This will generally always be defined here, because it is set in `setup()` of the integration\n // but technically, it is optional, so we guard here to be extra safe\n _collectWebVitals?.();\n addPerformanceEntries(span, {\n recordClsOnPageloadSpan: !enableStandaloneClsSpans,\n recordLcpOnPageloadSpan: !enableStandaloneLcpSpans,\n ignoreResourceSpans,\n ignorePerformanceApiSpans,\n });\n setActiveIdleSpan(client, undefined);\n\n // A trace should stay consistent over the entire timespan of one route - even after the pageload/navigation ended.\n // Only when another navigation happens, we want to create a new trace.\n // This way, e.g. errors that occur after the pageload span ended are still associated to the pageload trace.\n const scope = getCurrentScope();\n const oldPropagationContext = scope.getPropagationContext();\n\n scope.setPropagationContext({\n ...oldPropagationContext,\n traceId: idleSpan.spanContext().traceId,\n sampled: spanIsSampled(idleSpan),\n dsc: getDynamicSamplingContextFromSpan(span),\n });\n\n if (isPageloadSpan) {\n // clean up the stored pageload span on the intergration.\n _pageloadSpan = undefined;\n }\n },\n trimIdleSpanEndTimestamp: !enableReportPageLoaded,\n });\n\n if (isPageloadSpan && enableReportPageLoaded) {\n _pageloadSpan = idleSpan;\n }\n\n setActiveIdleSpan(client, idleSpan);\n\n function emitFinish() {\n if (optionalWindowDocument && ['interactive', 'complete'].includes(optionalWindowDocument.readyState)) {\n client.emit('idleSpanEnableAutoFinish', idleSpan);\n }\n }\n\n // Enable auto finish of the pageload span if users are not explicitly ending it\n if (isPageloadSpan && !enableReportPageLoaded && optionalWindowDocument) {\n optionalWindowDocument.addEventListener('readystatechange', () => {\n emitFinish();\n });\n\n emitFinish();\n }\n }\n\n return {\n name: BROWSER_TRACING_INTEGRATION_ID,\n setup(client) {\n registerSpanErrorInstrumentation();\n\n _collectWebVitals = startTrackingWebVitals({\n recordClsStandaloneSpans: enableStandaloneClsSpans || false,\n recordLcpStandaloneSpans: enableStandaloneLcpSpans || false,\n client,\n });\n\n if (enableInp) {\n startTrackingINP();\n }\n\n if (enableElementTiming) {\n startTrackingElementTiming();\n }\n\n if (\n enableLongAnimationFrame &&\n GLOBAL_OBJ.PerformanceObserver &&\n PerformanceObserver.supportedEntryTypes &&\n PerformanceObserver.supportedEntryTypes.includes('long-animation-frame')\n ) {\n startTrackingLongAnimationFrames();\n } else if (enableLongTask) {\n startTrackingLongTasks();\n }\n\n if (enableInteractions) {\n startTrackingInteractions();\n }\n\n if (detectRedirects && optionalWindowDocument) {\n const interactionHandler = () => {\n lastInteractionTimestamp = timestampInSeconds();\n };\n addEventListener('click', interactionHandler, { capture: true });\n addEventListener('keydown', interactionHandler, { capture: true, passive: true });\n }\n\n function maybeEndActiveSpan() {\n const activeSpan = getActiveIdleSpan(client);\n\n if (activeSpan && !spanToJSON(activeSpan).timestamp) {\n DEBUG_BUILD && debug.log(`[Tracing] Finishing current active span with op: ${spanToJSON(activeSpan).op}`);\n // If there's an open active span, we need to finish it before creating an new one.\n activeSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, 'cancelled');\n activeSpan.end();\n }\n }\n\n client.on('startNavigationSpan', (startSpanOptions, navigationOptions) => {\n if (getClient() !== client) {\n return;\n }\n\n if (navigationOptions?.isRedirect) {\n DEBUG_BUILD &&\n debug.warn('[Tracing] Detected redirect, navigation span will not be the root span, but a child span.');\n _createRouteSpan(\n client,\n {\n op: 'navigation.redirect',\n ...startSpanOptions,\n },\n false,\n );\n return;\n }\n\n // Reset the last interaction timestamp since we now start a new navigation.\n // Any subsequent navigation span starts could again be a redirect, so we\n // should reset our heuristic detectors.\n lastInteractionTimestamp = undefined;\n\n maybeEndActiveSpan();\n\n getIsolationScope().setPropagationContext({\n traceId: generateTraceId(),\n sampleRand: Math.random(),\n propagationSpanId: hasSpansEnabled() ? undefined : generateSpanId(),\n });\n\n const scope = getCurrentScope();\n scope.setPropagationContext({\n traceId: generateTraceId(),\n sampleRand: Math.random(),\n propagationSpanId: hasSpansEnabled() ? undefined : generateSpanId(),\n });\n\n // We reset this to ensure we do not have lingering incorrect data here\n // places that call this hook may set this where appropriate - else, the URL at span sending time is used\n scope.setSDKProcessingMetadata({\n normalizedRequest: undefined,\n });\n\n _createRouteSpan(client, {\n op: 'navigation',\n ...startSpanOptions,\n // Navigation starts a new trace and is NOT parented under any active interaction (e.g. ui.action.click)\n parentSpan: null,\n forceTransaction: true,\n });\n });\n\n client.on('startPageLoadSpan', (startSpanOptions, traceOptions = {}) => {\n if (getClient() !== client) {\n return;\n }\n maybeEndActiveSpan();\n\n const sentryTrace = traceOptions.sentryTrace || getMetaContent('sentry-trace');\n const baggage = traceOptions.baggage || getMetaContent('baggage');\n\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n\n const scope = getCurrentScope();\n scope.setPropagationContext(propagationContext);\n if (!hasSpansEnabled()) {\n // for browser, we wanna keep the spanIds consistent during the entire lifetime of the trace\n // this works by setting the propagationSpanId to a random spanId so that we have a consistent\n // span id to propagate in TwP mode (!hasSpansEnabled())\n scope.getPropagationContext().propagationSpanId = generateSpanId();\n }\n\n // We store the normalized request data on the scope, so we get the request data at time of span creation\n // otherwise, the URL etc. may already be of the following navigation, and we'd report the wrong URL\n scope.setSDKProcessingMetadata({\n normalizedRequest: getHttpRequestData(),\n });\n\n _createRouteSpan(client, {\n op: 'pageload',\n ...startSpanOptions,\n });\n });\n\n client.on('endPageloadSpan', () => {\n if (enableReportPageLoaded && _pageloadSpan) {\n _pageloadSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, 'reportPageLoaded');\n _pageloadSpan.end();\n }\n });\n },\n\n afterAllSetup(client) {\n let startingUrl = getLocationHref();\n\n if (linkPreviousTrace !== 'off') {\n linkTraces(client, { linkPreviousTrace, consistentTraceSampling });\n }\n\n if (WINDOW.location) {\n if (instrumentPageLoad) {\n const origin = browserPerformanceTimeOrigin();\n startBrowserTracingPageLoadSpan(client, {\n name: WINDOW.location.pathname,\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]: 'url',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.pageload.browser',\n },\n });\n }\n\n if (instrumentNavigation) {\n addHistoryInstrumentationHandler(({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl?.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n startingUrl = undefined;\n const parsed = parseStringToURLObject(to);\n const activeSpan = getActiveIdleSpan(client);\n const navigationIsRedirect =\n activeSpan && detectRedirects && isRedirect(activeSpan, lastInteractionTimestamp);\n\n startBrowserTracingNavigationSpan(\n client,\n {\n name: parsed?.pathname || WINDOW.location.pathname,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.navigation.browser',\n },\n },\n { url: to, isRedirect: navigationIsRedirect },\n );\n });\n }\n }\n\n if (markBackgroundSpan) {\n registerBackgroundTabDetection();\n }\n\n if (enableInteractions) {\n registerInteractionListener(client, idleTimeout, finalTimeout, childSpanTimeout, latestRoute);\n }\n\n if (enableInp) {\n registerInpInteractionListener();\n }\n\n instrumentOutgoingRequests(client, {\n traceFetch,\n traceXHR,\n trackFetchStreamPerformance,\n tracePropagationTargets: client.getOptions().tracePropagationTargets,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n onRequestSpanStart,\n onRequestSpanEnd,\n });\n },\n };\n}) ;\n\n/**\n * Manually start a page load span.\n * This will only do something if a browser tracing integration integration has been setup.\n *\n * If you provide a custom `traceOptions` object, it will be used to continue the trace\n * instead of the default behavior, which is to look it up on the <meta> tags.\n */\nfunction startBrowserTracingPageLoadSpan(\n client,\n spanOptions,\n traceOptions,\n) {\n client.emit('startPageLoadSpan', spanOptions, traceOptions);\n getCurrentScope().setTransactionName(spanOptions.name);\n\n const pageloadSpan = getActiveIdleSpan(client);\n\n if (pageloadSpan) {\n client.emit('afterStartPageLoadSpan', pageloadSpan);\n }\n\n return pageloadSpan;\n}\n\n/**\n * Manually start a navigation span.\n * This will only do something if a browser tracing integration has been setup.\n */\nfunction startBrowserTracingNavigationSpan(\n client,\n spanOptions,\n options,\n) {\n const { url, isRedirect } = options || {};\n client.emit('beforeStartNavigationSpan', spanOptions, { isRedirect });\n client.emit('startNavigationSpan', spanOptions, { isRedirect });\n\n const scope = getCurrentScope();\n scope.setTransactionName(spanOptions.name);\n\n // We store the normalized request data on the scope, so we get the request data at time of span creation\n // otherwise, the URL etc. may already be of the following navigation, and we'd report the wrong URL\n if (url && !isRedirect) {\n scope.setSDKProcessingMetadata({\n normalizedRequest: {\n ...getHttpRequestData(),\n url,\n },\n });\n }\n\n return getActiveIdleSpan(client);\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n /**\n * This is just a small wrapper that makes `document` optional.\n * We want to be extra-safe and always check that this exists, to ensure weird environments do not blow up.\n */\n const optionalWindowDocument = WINDOW.document ;\n\n const metaTag = optionalWindowDocument?.querySelector(`meta[name=${metaName}]`);\n return metaTag?.getAttribute('content') || undefined;\n}\n\n/** Start listener for interaction transactions */\nfunction registerInteractionListener(\n client,\n idleTimeout,\n finalTimeout,\n childSpanTimeout,\n latestRoute,\n) {\n /**\n * This is just a small wrapper that makes `document` optional.\n * We want to be extra-safe and always check that this exists, to ensure weird environments do not blow up.\n */\n const optionalWindowDocument = WINDOW.document ;\n\n let inflightInteractionSpan;\n const registerInteractionTransaction = () => {\n const op = 'ui.action.click';\n\n const activeIdleSpan = getActiveIdleSpan(client);\n if (activeIdleSpan) {\n const currentRootSpanOp = spanToJSON(activeIdleSpan).op;\n if (['navigation', 'pageload'].includes(currentRootSpanOp )) {\n DEBUG_BUILD &&\n debug.warn(`[Tracing] Did not create ${op} span because a pageload or navigation span is in progress.`);\n return undefined;\n }\n }\n\n if (inflightInteractionSpan) {\n inflightInteractionSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, 'interactionInterrupted');\n inflightInteractionSpan.end();\n inflightInteractionSpan = undefined;\n }\n\n if (!latestRoute.name) {\n DEBUG_BUILD && debug.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);\n return undefined;\n }\n\n inflightInteractionSpan = startIdleSpan(\n {\n name: latestRoute.name,\n op,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: latestRoute.source || 'url',\n },\n },\n {\n idleTimeout,\n finalTimeout,\n childSpanTimeout,\n },\n );\n };\n\n if (optionalWindowDocument) {\n addEventListener('click', registerInteractionTransaction, { capture: true });\n }\n}\n\n// We store the active idle span on the client object, so we can access it from exported functions\nconst ACTIVE_IDLE_SPAN_PROPERTY = '_sentry_idleSpan';\nfunction getActiveIdleSpan(client) {\n return (client )[ACTIVE_IDLE_SPAN_PROPERTY];\n}\n\nfunction setActiveIdleSpan(client, span) {\n addNonEnumerableProperty(client, ACTIVE_IDLE_SPAN_PROPERTY, span);\n}\n\n// The max. time in seconds between two pageload/navigation spans that makes us consider the second one a redirect\nconst REDIRECT_THRESHOLD = 1.5;\n\nfunction isRedirect(activeSpan, lastInteractionTimestamp) {\n const spanData = spanToJSON(activeSpan);\n\n const now = dateTimestampInSeconds();\n\n // More than REDIRECT_THRESHOLD seconds since last navigation/pageload span?\n // --> never consider this a redirect\n const startTimestamp = spanData.start_timestamp;\n if (now - startTimestamp > REDIRECT_THRESHOLD) {\n return false;\n }\n\n // A click happened in the last REDIRECT_THRESHOLD seconds?\n // --> never consider this a redirect\n if (lastInteractionTimestamp && now - lastInteractionTimestamp <= REDIRECT_THRESHOLD) {\n return false;\n }\n\n return true;\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, browserTracingIntegration, getMetaContent, startBrowserTracingNavigationSpan, startBrowserTracingPageLoadSpan };\n//# sourceMappingURL=browserTracingIntegration.js.map\n","import { getClient } from '@sentry/core';\n\n/**\n * Manually report the end of the page load, resulting in the SDK ending the pageload span.\n * This only works if {@link BrowserTracingOptions.enableReportPageLoaded} is set to `true`.\n * Otherwise, the pageload span will end itself based on the {@link BrowserTracingOptions.finalTimeout},\n * {@link BrowserTracingOptions.idleTimeout} and {@link BrowserTracingOptions.childSpanTimeout}.\n *\n * @param client - The client to use. If not provided, the global client will be used.\n */\nfunction reportPageLoaded(client = getClient()) {\n client?.emit('endPageloadSpan');\n}\n\nexport { reportPageLoaded };\n//# sourceMappingURL=reportPageLoaded.js.map\n","import { getActiveSpan, getCurrentScope, _INTERNAL_setSpanForScope } from '@sentry/core';\n\n/**\n * Sets an inactive span active on the current scope.\n *\n * This is useful in browser applications, if you want to create a span that cannot be finished\n * within its callback. Any spans started while the given span is active, will be children of the span.\n *\n * If there already was an active span on the scope prior to calling this function, it is replaced\n * with the given span and restored after the span ended. Otherwise, the span will simply be\n * removed, resulting in no active span on the scope.\n *\n * IMPORTANT: This function can ONLY be used in the browser! Calling this function in a server\n * environment (for example in a server-side rendered component) will result in undefined behaviour\n * and is not supported.\n * You MUST call `span.end()` manually, otherwise the span will never be finished.\n *\n * @example\n * ```js\n * let checkoutSpan;\n *\n * on('checkoutStarted', () => {\n * checkoutSpan = Sentry.startInactiveSpan({ name: 'checkout-flow' });\n * Sentry.setActiveSpanInBrowser(checkoutSpan);\n * })\n *\n * // during this time, any spans started will be children of `checkoutSpan`:\n * Sentry.startSpan({ name: 'checkout-step-1' }, () => {\n * // ... `\n * })\n *\n * on('checkoutCompleted', () => {\n * checkoutSpan?.end();\n * })\n * ```\n *\n * @param span - the span to set active\n */\nfunction setActiveSpanInBrowser(span) {\n const maybePreviousActiveSpan = getActiveSpan();\n\n // If the span is already active, there's no need to double-patch or set it again.\n // This also guards against users (for whatever reason) calling setActiveSpanInBrowser on SDK-started\n // idle spans like pageload or navigation spans. These will already be handled correctly by the SDK.\n // For nested situations, we have to double-patch to ensure we restore the correct previous span (see tests)\n if (maybePreviousActiveSpan === span) {\n return;\n }\n\n const scope = getCurrentScope();\n\n // Putting a small patch onto the span.end method to ensure we\n // remove the span from the scope when it ends.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n span.end = new Proxy(span.end, {\n apply(target, thisArg, args) {\n _INTERNAL_setSpanForScope(scope, maybePreviousActiveSpan);\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n _INTERNAL_setSpanForScope(scope, span);\n}\n\nexport { setActiveSpanInBrowser };\n//# sourceMappingURL=setActiveSpan.js.map\n","import { makeOfflineTransport, parseEnvelope, serializeEnvelope } from '@sentry/core';\nimport { WINDOW } from '../helpers.js';\nimport { makeFetchTransport } from './fetch.js';\n\n// 'Store', 'promisifyRequest' and 'createStore' were originally copied from the 'idb-keyval' package before being\n// modified and simplified: https://github.com/jakearchibald/idb-keyval\n//\n// At commit: 0420a704fd6cbb4225429c536b1f61112d012fca\n// Original license:\n\n// Copyright 2016, Jake Archibald\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nfunction promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-expect-error - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-expect-error - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\n\n/** Create or open an IndexedDb store */\nfunction createStore(dbName, storeName) {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const dbp = promisifyRequest(request);\n\n return callback => dbp.then(db => callback(db.transaction(storeName, 'readwrite').objectStore(storeName)));\n}\n\nfunction keys(store) {\n return promisifyRequest(store.getAllKeys() );\n}\n\n/** Insert into the end of the store */\nfunction push(store, value, maxQueueSize) {\n return store(store => {\n return keys(store).then(keys => {\n if (keys.length >= maxQueueSize) {\n return;\n }\n\n // We insert with an incremented key so that the entries are popped in order\n store.put(value, Math.max(...keys, 0) + 1);\n return promisifyRequest(store.transaction);\n });\n });\n}\n\n/** Insert into the front of the store */\nfunction unshift(store, value, maxQueueSize) {\n return store(store => {\n return keys(store).then(keys => {\n if (keys.length >= maxQueueSize) {\n return;\n }\n\n // We insert with an decremented key so that the entries are popped in order\n store.put(value, Math.min(...keys, 0) - 1);\n return promisifyRequest(store.transaction);\n });\n });\n}\n\n/** Pop the oldest value from the store */\nfunction shift(store) {\n return store(store => {\n return keys(store).then(keys => {\n const firstKey = keys[0];\n if (firstKey == null) {\n return undefined;\n }\n\n return promisifyRequest(store.get(firstKey)).then(value => {\n store.delete(firstKey);\n return promisifyRequest(store.transaction).then(() => value);\n });\n });\n });\n}\n\nfunction createIndexedDbStore(options) {\n let store;\n\n // Lazily create the store only when it's needed\n function getStore() {\n if (store == undefined) {\n store = createStore(options.dbName || 'sentry-offline', options.storeName || 'queue');\n }\n\n return store;\n }\n\n return {\n push: async (env) => {\n try {\n const serialized = await serializeEnvelope(env);\n await push(getStore(), serialized, options.maxQueueSize || 30);\n } catch {\n //\n }\n },\n unshift: async (env) => {\n try {\n const serialized = await serializeEnvelope(env);\n await unshift(getStore(), serialized, options.maxQueueSize || 30);\n } catch {\n //\n }\n },\n shift: async () => {\n try {\n const deserialized = await shift(getStore());\n if (deserialized) {\n return parseEnvelope(deserialized);\n }\n } catch {\n //\n }\n\n return undefined;\n },\n };\n}\n\nfunction makeIndexedDbOfflineTransport(\n createTransport,\n) {\n return options => {\n const transport = createTransport({ ...options, createStore: createIndexedDbStore });\n\n WINDOW.addEventListener('online', async _ => {\n await transport.flush();\n });\n\n return transport;\n };\n}\n\n/**\n * Creates a transport that uses IndexedDb to store events when offline.\n */\nfunction makeBrowserOfflineTransport(\n createTransport = makeFetchTransport,\n) {\n return makeIndexedDbOfflineTransport(makeOfflineTransport(createTransport));\n}\n\nexport { createStore, makeBrowserOfflineTransport, push, shift, unshift };\n//# sourceMappingURL=offline.js.map\n","import { GLOBAL_OBJ, debug, spanToJSON, getClient, forEachEnvelopeItem, uuid4, timestampInSeconds, DEFAULT_ENVIRONMENT, browserPerformanceTimeOrigin, getDebugImagesForResources } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\nconst MS_TO_NS = 1e6;\n\n// Checking if we are in Main or Worker thread: `self` (not `window`) is the `globalThis` in Web Workers and `importScripts` are only available in Web Workers\nconst isMainThread = 'window' in GLOBAL_OBJ && GLOBAL_OBJ.window === GLOBAL_OBJ && typeof importScripts === 'undefined';\n\n// Setting ID to 0 as we cannot get an ID from Web Workers\nconst PROFILER_THREAD_ID_STRING = String(0);\nconst PROFILER_THREAD_NAME = isMainThread ? 'main' : 'worker';\n\n// We force make this optional to be on the safe side...\nconst navigator = WINDOW.navigator ;\n\n// Machine properties (eval only once)\nlet OS_PLATFORM = '';\nlet OS_PLATFORM_VERSION = '';\nlet OS_ARCH = '';\nlet OS_BROWSER = navigator?.userAgent || '';\nlet OS_MODEL = '';\nconst OS_LOCALE = navigator?.language || navigator?.languages?.[0] || '';\n\nfunction isUserAgentData(data) {\n return typeof data === 'object' && data !== null && 'getHighEntropyValues' in data;\n}\n\n// @ts-expect-error userAgentData is not part of the navigator interface yet\nconst userAgentData = navigator?.userAgentData;\n\nif (isUserAgentData(userAgentData)) {\n userAgentData\n .getHighEntropyValues(['architecture', 'model', 'platform', 'platformVersion', 'fullVersionList'])\n .then((ua) => {\n OS_PLATFORM = ua.platform || '';\n OS_ARCH = ua.architecture || '';\n OS_MODEL = ua.model || '';\n OS_PLATFORM_VERSION = ua.platformVersion || '';\n\n if (ua.fullVersionList?.length) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const firstUa = ua.fullVersionList[ua.fullVersionList.length - 1];\n OS_BROWSER = `${firstUa.brand} ${firstUa.version}`;\n }\n })\n .catch(e => void 0);\n}\n\nfunction isProcessedJSSelfProfile(profile) {\n return !('thread_metadata' in profile);\n}\n\n// Enriches the profile with threadId of the current thread.\n// This is done in node as we seem to not be able to get the info from C native code.\n/**\n *\n */\nfunction enrichWithThreadInformation(profile) {\n if (!isProcessedJSSelfProfile(profile)) {\n return profile;\n }\n\n return convertJSSelfProfileToSampledFormat(profile);\n}\n\n// Profile is marked as optional because it is deleted from the metadata\n// by the integration before the event is processed by other integrations.\n\nfunction getTraceId(event) {\n const traceId = event.contexts?.trace?.trace_id;\n // Log a warning if the profile has an invalid traceId (should be uuidv4).\n // All profiles and transactions are rejected if this is the case and we want to\n // warn users that this is happening if they enable debug flag\n if (typeof traceId === 'string' && traceId.length !== 32) {\n if (DEBUG_BUILD) {\n debug.log(`[Profiling] Invalid traceId: ${traceId} on profiled event`);\n }\n }\n if (typeof traceId !== 'string') {\n return '';\n }\n\n return traceId;\n}\n/**\n * Creates a profiling event envelope from a Sentry event. If profile does not pass\n * validation, returns null.\n * @param event\n * @param dsn\n * @param metadata\n * @param tunnel\n * @returns {EventEnvelope | null}\n */\n\n/**\n * Creates a profiling event envelope from a Sentry event.\n */\nfunction createProfilePayload(\n profile_id,\n start_timestamp,\n processed_profile,\n event,\n) {\n if (event.type !== 'transaction') {\n // createProfilingEventEnvelope should only be called for transactions,\n // we type guard this behavior with isProfiledTransactionEvent.\n throw new TypeError('Profiling events may only be attached to transactions, this should never occur.');\n }\n\n if (processed_profile === undefined || processed_profile === null) {\n throw new TypeError(\n `Cannot construct profiling event envelope without a valid profile. Got ${processed_profile} instead.`,\n );\n }\n\n const traceId = getTraceId(event);\n const enrichedThreadProfile = enrichWithThreadInformation(processed_profile);\n const transactionStartMs = start_timestamp\n ? start_timestamp\n : typeof event.start_timestamp === 'number'\n ? event.start_timestamp * 1000\n : timestampInSeconds() * 1000;\n const transactionEndMs = typeof event.timestamp === 'number' ? event.timestamp * 1000 : timestampInSeconds() * 1000;\n\n const profile = {\n event_id: profile_id,\n timestamp: new Date(transactionStartMs).toISOString(),\n platform: 'javascript',\n version: '1',\n release: event.release || '',\n environment: event.environment || DEFAULT_ENVIRONMENT,\n runtime: {\n name: 'javascript',\n version: WINDOW.navigator.userAgent,\n },\n os: {\n name: OS_PLATFORM,\n version: OS_PLATFORM_VERSION,\n build_number: OS_BROWSER,\n },\n device: {\n locale: OS_LOCALE,\n model: OS_MODEL,\n manufacturer: OS_BROWSER,\n architecture: OS_ARCH,\n is_emulator: false,\n },\n debug_meta: {\n images: applyDebugMetadata(processed_profile.resources),\n },\n profile: enrichedThreadProfile,\n transactions: [\n {\n name: event.transaction || '',\n id: event.event_id || uuid4(),\n trace_id: traceId,\n active_thread_id: PROFILER_THREAD_ID_STRING,\n relative_start_ns: '0',\n relative_end_ns: ((transactionEndMs - transactionStartMs) * 1e6).toFixed(0),\n },\n ],\n };\n\n return profile;\n}\n\n/**\n * Create a profile chunk envelope item\n */\nfunction createProfileChunkPayload(\n jsSelfProfile,\n client,\n profilerId,\n) {\n // only == to catch null and undefined\n if (jsSelfProfile == null) {\n throw new TypeError(\n `Cannot construct profiling event envelope without a valid profile. Got ${jsSelfProfile} instead.`,\n );\n }\n\n const continuousProfile = convertToContinuousProfile(jsSelfProfile);\n\n const options = client.getOptions();\n const sdk = client.getSdkMetadata?.()?.sdk;\n\n return {\n chunk_id: uuid4(),\n client_sdk: {\n name: sdk?.name ?? 'sentry.javascript.browser',\n version: sdk?.version ?? '0.0.0',\n },\n profiler_id: profilerId || uuid4(),\n platform: 'javascript',\n version: '2',\n release: options.release ?? '',\n environment: options.environment ?? 'production',\n debug_meta: {\n // function name obfuscation\n images: applyDebugMetadata(jsSelfProfile.resources),\n },\n profile: continuousProfile,\n };\n}\n\n/**\n * Validate a profile chunk against the Sample Format V2 requirements.\n * https://develop.sentry.dev/sdk/telemetry/profiles/sample-format-v2/\n * - Presence of samples, stacks, frames\n * - Required metadata fields\n */\nfunction validateProfileChunk(chunk) {\n try {\n // Required metadata\n if (!chunk || typeof chunk !== 'object') {\n return { reason: 'chunk is not an object' };\n }\n\n // profiler_id and chunk_id must be 32 lowercase hex chars\n const isHex32 = (val) => typeof val === 'string' && /^[a-f0-9]{32}$/.test(val);\n if (!isHex32(chunk.profiler_id)) {\n return { reason: 'missing or invalid profiler_id' };\n }\n if (!isHex32(chunk.chunk_id)) {\n return { reason: 'missing or invalid chunk_id' };\n }\n\n if (!chunk.client_sdk) {\n return { reason: 'missing client_sdk metadata' };\n }\n\n // Profile data must have frames, stacks, samples\n const profile = chunk.profile ;\n if (!profile) {\n return { reason: 'missing profile data' };\n }\n\n if (!Array.isArray(profile.frames) || !profile.frames.length) {\n return { reason: 'profile has no frames' };\n }\n if (!Array.isArray(profile.stacks) || !profile.stacks.length) {\n return { reason: 'profile has no stacks' };\n }\n if (!Array.isArray(profile.samples) || !profile.samples.length) {\n return { reason: 'profile has no samples' };\n }\n\n return { valid: true };\n } catch (e) {\n return { reason: `unknown validation error: ${e}` };\n }\n}\n\n/**\n * Convert from JSSelfProfile format to ContinuousThreadCpuProfile format.\n */\nfunction convertToContinuousProfile(input\n\n) {\n // Frames map 1:1 by index; fill only when present to avoid sparse writes\n const frames = [];\n for (let i = 0; i < input.frames.length; i++) {\n const frame = input.frames[i];\n if (!frame) {\n continue;\n }\n frames[i] = {\n function: frame.name,\n abs_path: typeof frame.resourceId === 'number' ? input.resources[frame.resourceId] : undefined,\n lineno: frame.line,\n colno: frame.column,\n };\n }\n\n // Build stacks by following parent links, top->down order (root last)\n const stacks = [];\n for (let i = 0; i < input.stacks.length; i++) {\n const stackHead = input.stacks[i];\n if (!stackHead) {\n continue;\n }\n const list = [];\n let current = stackHead;\n while (current) {\n list.push(current.frameId);\n current = current.parentId === undefined ? undefined : input.stacks[current.parentId];\n }\n stacks[i] = list;\n }\n\n // Align timestamps to SDK time origin to match span/event timelines\n const perfOrigin = browserPerformanceTimeOrigin();\n const origin = typeof performance.timeOrigin === 'number' ? performance.timeOrigin : perfOrigin || 0;\n const adjustForOriginChange = origin - (perfOrigin || origin);\n\n const samples = [];\n for (let i = 0; i < input.samples.length; i++) {\n const sample = input.samples[i];\n if (!sample) {\n continue;\n }\n // Convert ms to seconds epoch-based timestamp\n const timestampSeconds = (origin + (sample.timestamp - adjustForOriginChange)) / 1000;\n samples[i] = {\n stack_id: sample.stackId ?? 0,\n thread_id: PROFILER_THREAD_ID_STRING,\n timestamp: timestampSeconds,\n };\n }\n\n return {\n frames,\n stacks,\n samples,\n thread_metadata: { [PROFILER_THREAD_ID_STRING]: { name: PROFILER_THREAD_NAME } },\n };\n}\n\n/*\n See packages/browser-utils/src/browser/router.ts\n*/\n/**\n *\n */\nfunction isAutomatedPageLoadSpan(span) {\n return spanToJSON(span).op === 'pageload';\n}\n\n/**\n * Converts a JSSelfProfile to a our sampled format.\n * Does not currently perform stack indexing.\n */\nfunction convertJSSelfProfileToSampledFormat(input) {\n let EMPTY_STACK_ID = undefined;\n let STACK_ID = 0;\n\n // Initialize the profile that we will fill with data\n const profile = {\n samples: [],\n stacks: [],\n frames: [],\n thread_metadata: {\n [PROFILER_THREAD_ID_STRING]: { name: PROFILER_THREAD_NAME },\n },\n };\n\n const firstSample = input.samples[0];\n if (!firstSample) {\n return profile;\n }\n\n // We assert samples.length > 0 above and timestamp should always be present\n const start = firstSample.timestamp;\n // The JS SDK might change it's time origin based on some heuristic (see See packages/utils/src/time.ts)\n // when that happens, we need to ensure we are correcting the profile timings so the two timelines stay in sync.\n // Since JS self profiling time origin is always initialized to performance.timeOrigin, we need to adjust for\n // the drift between the SDK selected value and our profile time origin.\n const perfOrigin = browserPerformanceTimeOrigin();\n const origin = typeof performance.timeOrigin === 'number' ? performance.timeOrigin : perfOrigin || 0;\n const adjustForOriginChange = origin - (perfOrigin || origin);\n\n input.samples.forEach((jsSample, i) => {\n // If sample has no stack, add an empty sample\n if (jsSample.stackId === undefined) {\n if (EMPTY_STACK_ID === undefined) {\n EMPTY_STACK_ID = STACK_ID;\n profile.stacks[EMPTY_STACK_ID] = [];\n STACK_ID++;\n }\n\n profile['samples'][i] = {\n // convert ms timestamp to ns\n elapsed_since_start_ns: ((jsSample.timestamp + adjustForOriginChange - start) * MS_TO_NS).toFixed(0),\n stack_id: EMPTY_STACK_ID,\n thread_id: PROFILER_THREAD_ID_STRING,\n };\n return;\n }\n\n let stackTop = input.stacks[jsSample.stackId];\n\n // Functions in top->down order (root is last)\n // We follow the stackTop.parentId trail and collect each visited frameId\n const stack = [];\n\n while (stackTop) {\n stack.push(stackTop.frameId);\n\n const frame = input.frames[stackTop.frameId];\n\n // If our frame has not been indexed yet, index it\n if (frame && profile.frames[stackTop.frameId] === undefined) {\n profile.frames[stackTop.frameId] = {\n function: frame.name,\n abs_path: typeof frame.resourceId === 'number' ? input.resources[frame.resourceId] : undefined,\n lineno: frame.line,\n colno: frame.column,\n };\n }\n\n stackTop = stackTop.parentId === undefined ? undefined : input.stacks[stackTop.parentId];\n }\n\n const sample = {\n // convert ms timestamp to ns\n elapsed_since_start_ns: ((jsSample.timestamp + adjustForOriginChange - start) * MS_TO_NS).toFixed(0),\n stack_id: STACK_ID,\n thread_id: PROFILER_THREAD_ID_STRING,\n };\n\n profile['stacks'][STACK_ID] = stack;\n profile['samples'][i] = sample;\n STACK_ID++;\n });\n\n return profile;\n}\n\n/**\n * Adds items to envelope if they are not already present - mutates the envelope.\n * @param envelope\n */\nfunction addProfilesToEnvelope(envelope, profiles) {\n if (!profiles.length) {\n return envelope;\n }\n\n for (const profile of profiles) {\n envelope[1].push([{ type: 'profile' }, profile]);\n }\n return envelope;\n}\n\n/**\n * Finds transactions with profile_id context in the envelope\n * @param envelope\n * @returns\n */\nfunction findProfiledTransactionsFromEnvelope(envelope) {\n const events = [];\n\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type !== 'transaction') {\n return;\n }\n\n for (let j = 1; j < item.length; j++) {\n const event = item[j] ;\n\n if (event?.contexts?.profile?.profile_id) {\n events.push(item[j] );\n }\n }\n });\n\n return events;\n}\n\n/**\n * Applies debug meta data to an event from a list of paths to resources (sourcemaps)\n */\nfunction applyDebugMetadata(resource_paths) {\n const client = getClient();\n const options = client?.getOptions();\n const stackParser = options?.stackParser;\n\n if (!stackParser) {\n return [];\n }\n\n return getDebugImagesForResources(stackParser, resource_paths);\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n if ((typeof rate !== 'number' && typeof rate !== 'boolean') || (typeof rate === 'number' && isNaN(rate))) {\n DEBUG_BUILD &&\n debug.warn(\n `[Profiling] Invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // Boolean sample rates are always valid\n if (rate === true || rate === false) {\n return true;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n DEBUG_BUILD && debug.warn(`[Profiling] Invalid sample rate. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\nfunction isValidProfile(profile) {\n if (profile.samples.length < 2) {\n if (DEBUG_BUILD) {\n // Log a warning if the profile has less than 2 samples so users can know why\n // they are not seeing any profiling data and we cant avoid the back and forth\n // of asking them to provide us with a dump of the profile data.\n debug.log('[Profiling] Discarding profile because it contains less than 2 samples');\n }\n return false;\n }\n\n if (!profile.frames.length) {\n if (DEBUG_BUILD) {\n debug.log('[Profiling] Discarding profile because it contains no frames');\n }\n return false;\n }\n\n return true;\n}\n\n// Keep a flag value to avoid re-initializing the profiler constructor. If it fails\n// once, it will always fail and this allows us to early return.\nlet PROFILING_CONSTRUCTOR_FAILED = false;\nconst MAX_PROFILE_DURATION_MS = 30000;\n\n/**\n * Check if profiler constructor is available.\n * @param maybeProfiler\n */\nfunction isJSProfilerSupported(maybeProfiler) {\n return typeof maybeProfiler === 'function';\n}\n\n/**\n * Starts the profiler and returns the profiler instance.\n */\nfunction startJSSelfProfile() {\n // Feature support check first\n const JSProfilerConstructor = WINDOW.Profiler;\n\n if (!isJSProfilerSupported(JSProfilerConstructor)) {\n if (DEBUG_BUILD) {\n debug.log('[Profiling] Profiling is not supported by this browser, Profiler interface missing on window object.');\n }\n return;\n }\n\n // From initial testing, it seems that the minimum value for sampleInterval is 10ms.\n const samplingIntervalMS = 10;\n // Start the profiler\n const maxSamples = Math.floor(MAX_PROFILE_DURATION_MS / samplingIntervalMS);\n\n // Attempt to initialize the profiler constructor, if it fails, we disable profiling for the current user session.\n // This is likely due to a missing 'Document-Policy': 'js-profiling' header. We do not want to throw an error if this happens\n // as we risk breaking the user's application, so just disable profiling and log an error.\n try {\n return new JSProfilerConstructor({ sampleInterval: samplingIntervalMS, maxBufferSize: maxSamples });\n } catch (e) {\n if (DEBUG_BUILD) {\n debug.log(\n \"[Profiling] Failed to initialize the Profiling constructor, this is likely due to a missing 'Document-Policy': 'js-profiling' header.\",\n );\n debug.log('[Profiling] Disabling profiling for current user session.');\n }\n PROFILING_CONSTRUCTOR_FAILED = true;\n }\n\n return;\n}\n\n/**\n * Determine if a profile should be profiled.\n */\nfunction shouldProfileSpanLegacy(span) {\n // If constructor failed once, it will always fail, so we can early return.\n if (PROFILING_CONSTRUCTOR_FAILED) {\n if (DEBUG_BUILD) {\n debug.log('[Profiling] Profiling has been disabled for the duration of the current user session.');\n }\n return false;\n }\n\n if (!span.isRecording()) {\n DEBUG_BUILD && debug.log('[Profiling] Discarding profile because root span was not sampled.');\n return false;\n }\n\n const client = getClient();\n const options = client?.getOptions();\n if (!options) {\n DEBUG_BUILD && debug.log('[Profiling] Profiling disabled, no options found.');\n return false;\n }\n\n // @ts-expect-error profilesSampleRate is not part of the browser options yet\n const profilesSampleRate = options.profilesSampleRate;\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(profilesSampleRate)) {\n DEBUG_BUILD && debug.warn('[Profiling] Discarding profile because of invalid sample rate.');\n return false;\n }\n\n // if the function returned 0 (or false), or if `profileSampleRate` is 0, it's a sign the profile should be dropped\n if (!profilesSampleRate) {\n DEBUG_BUILD &&\n debug.log(\n '[Profiling] Discarding profile because a negative sampling decision was inherited or profileSampleRate is set to 0',\n );\n return false;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n const sampled = profilesSampleRate === true ? true : Math.random() < profilesSampleRate;\n // Check if we should sample this profile\n if (!sampled) {\n DEBUG_BUILD &&\n debug.log(\n `[Profiling] Discarding profile because it's not included in the random sample (sampling rate = ${Number(\n profilesSampleRate,\n )})`,\n );\n return false;\n }\n\n return true;\n}\n\n/**\n * Determine if a profile should be created for the current session (lifecycle profiling mode).\n */\nfunction shouldProfileSession(options) {\n // If constructor failed once, it will always fail, so we can early return.\n if (PROFILING_CONSTRUCTOR_FAILED) {\n if (DEBUG_BUILD) {\n debug.log('[Profiling] Profiling has been disabled for the duration of the current user session.');\n }\n return false;\n }\n\n if (options.profileLifecycle !== 'trace') {\n return false;\n }\n\n // Session sampling: profileSessionSampleRate gates whether profiling is enabled for this session\n const profileSessionSampleRate = options.profileSessionSampleRate;\n\n if (!isValidSampleRate(profileSessionSampleRate)) {\n DEBUG_BUILD && debug.warn('[Profiling] Discarding profile because of invalid profileSessionSampleRate.');\n return false;\n }\n\n if (!profileSessionSampleRate) {\n DEBUG_BUILD &&\n debug.log('[Profiling] Discarding profile because profileSessionSampleRate is not defined or set to 0');\n return false;\n }\n\n return Math.random() <= profileSessionSampleRate;\n}\n\n/**\n * Checks if legacy profiling is configured.\n */\nfunction hasLegacyProfiling(options) {\n return typeof options.profilesSampleRate !== 'undefined';\n}\n\n/**\n * Creates a profiling envelope item, if the profile does not pass validation, returns null.\n * @param event\n * @returns {Profile | null}\n */\nfunction createProfilingEvent(\n profile_id,\n start_timestamp,\n profile,\n event,\n) {\n if (!isValidProfile(profile)) {\n return null;\n }\n\n return createProfilePayload(profile_id, start_timestamp, profile, event);\n}\n\n// TODO (v8): We need to obtain profile ids in @sentry-internal/tracing,\n// but we don't have access to this map because importing this map would\n// cause a circular dependency. We need to resolve this in v8.\nconst PROFILE_MAP = new Map();\n/**\n *\n */\nfunction getActiveProfilesCount() {\n return PROFILE_MAP.size;\n}\n\n/**\n * Retrieves profile from global cache and removes it.\n */\nfunction takeProfileFromGlobalCache(profile_id) {\n const profile = PROFILE_MAP.get(profile_id);\n if (profile) {\n PROFILE_MAP.delete(profile_id);\n }\n return profile;\n}\n/**\n * Adds profile to global cache and evicts the oldest profile if the cache is full.\n */\nfunction addProfileToGlobalCache(profile_id, profile) {\n PROFILE_MAP.set(profile_id, profile);\n\n if (PROFILE_MAP.size > 30) {\n const last = PROFILE_MAP.keys().next().value;\n if (last !== undefined) {\n PROFILE_MAP.delete(last);\n }\n }\n}\n\n/**\n * Attaches the profiled thread information to the event's trace context.\n */\nfunction attachProfiledThreadToEvent(event) {\n if (!event?.contexts?.profile) {\n return event;\n }\n\n if (!event.contexts) {\n return event;\n }\n\n // @ts-expect-error the trace fallback value is wrong, though it should never happen\n // and in case it does, we dont want to override whatever was passed initially.\n event.contexts.trace = {\n ...(event.contexts?.trace ?? {}),\n data: {\n ...(event.contexts?.trace?.data ?? {}),\n ['thread.id']: PROFILER_THREAD_ID_STRING,\n ['thread.name']: PROFILER_THREAD_NAME,\n },\n };\n\n // Attach thread info to individual spans so that spans can be associated with the profiled thread on the UI even if contexts are missing.\n event.spans?.forEach(span => {\n span.data = {\n ...(span.data || {}),\n ['thread.id']: PROFILER_THREAD_ID_STRING,\n ['thread.name']: PROFILER_THREAD_NAME,\n };\n });\n\n return event;\n}\n\nexport { MAX_PROFILE_DURATION_MS, PROFILER_THREAD_ID_STRING, PROFILER_THREAD_NAME, addProfileToGlobalCache, addProfilesToEnvelope, applyDebugMetadata, attachProfiledThreadToEvent, convertJSSelfProfileToSampledFormat, createProfileChunkPayload, createProfilePayload, createProfilingEvent, enrichWithThreadInformation, findProfiledTransactionsFromEnvelope, getActiveProfilesCount, hasLegacyProfiling, isAutomatedPageLoadSpan, isValidSampleRate, shouldProfileSession, shouldProfileSpanLegacy, startJSSelfProfile, takeProfileFromGlobalCache, validateProfileChunk };\n//# sourceMappingURL=utils.js.map\n","import { timestampInSeconds, debug, spanToJSON, uuid4, getCurrentScope } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\nimport { isAutomatedPageLoadSpan, startJSSelfProfile, MAX_PROFILE_DURATION_MS, addProfileToGlobalCache } from './utils.js';\n\n/**\n * Wraps startTransaction and stopTransaction with profiling related logic.\n * startProfileForTransaction is called after the call to startTransaction in order to avoid our own code from\n * being profiled. Because of that same reason, stopProfiling is called before the call to stopTransaction.\n */\nfunction startProfileForSpan(span) {\n // Start the profiler and get the profiler instance.\n let startTimestamp;\n if (isAutomatedPageLoadSpan(span)) {\n startTimestamp = timestampInSeconds() * 1000;\n }\n\n const profiler = startJSSelfProfile();\n\n // We failed to construct the profiler, so we skip.\n // No need to log anything as this has already been logged in startProfile.\n if (!profiler) {\n return;\n }\n\n if (DEBUG_BUILD) {\n debug.log(`[Profiling] started profiling span: ${spanToJSON(span).description}`);\n }\n\n // We create \"unique\" span names to avoid concurrent spans with same names\n // from being ignored by the profiler. From here on, only this span name should be used when\n // calling the profiler methods. Note: we log the original name to the user to avoid confusion.\n const profileId = uuid4();\n\n // A couple of important things to note here:\n // `CpuProfilerBindings.stopProfiling` will be scheduled to run in 30seconds in order to exceed max profile duration.\n // Whichever of the two (span.finish/timeout) is first to run, the profiling will be stopped and the gathered profile\n // will be processed when the original span is finished. Since onProfileHandler can be invoked multiple times in the\n // event of an error or user mistake (calling span.finish multiple times), it is important that the behavior of onProfileHandler\n // is idempotent as we do not want any timings or profiles to be overridden by the last call to onProfileHandler.\n // After the original finish method is called, the event will be reported through the integration and delegated to transport.\n let processedProfile = null;\n\n getCurrentScope().setContext('profile', {\n profile_id: profileId,\n start_timestamp: startTimestamp,\n });\n\n /**\n * Idempotent handler for profile stop\n */\n async function onProfileHandler() {\n // Check if the profile exists and return it the behavior has to be idempotent as users may call span.finish multiple times.\n if (!span) {\n return;\n }\n // Satisfy the type checker, but profiler will always be defined here.\n if (!profiler) {\n return;\n }\n if (processedProfile) {\n if (DEBUG_BUILD) {\n debug.log('[Profiling] profile for:', spanToJSON(span).description, 'already exists, returning early');\n }\n return;\n }\n\n return profiler\n .stop()\n .then((profile) => {\n if (maxDurationTimeoutID) {\n WINDOW.clearTimeout(maxDurationTimeoutID);\n maxDurationTimeoutID = undefined;\n }\n\n if (DEBUG_BUILD) {\n debug.log(`[Profiling] stopped profiling of span: ${spanToJSON(span).description}`);\n }\n\n // In case of an overlapping span, stopProfiling may return null and silently ignore the overlapping profile.\n if (!profile) {\n if (DEBUG_BUILD) {\n debug.log(\n `[Profiling] profiler returned null profile for: ${spanToJSON(span).description}`,\n 'this may indicate an overlapping span or a call to stopProfiling with a profile title that was never started',\n );\n }\n return;\n }\n\n processedProfile = profile;\n addProfileToGlobalCache(profileId, profile);\n })\n .catch(error => {\n if (DEBUG_BUILD) {\n debug.log('[Profiling] error while stopping profiler:', error);\n }\n });\n }\n\n // Enqueue a timeout to prevent profiles from running over max duration.\n let maxDurationTimeoutID = WINDOW.setTimeout(() => {\n if (DEBUG_BUILD) {\n debug.log('[Profiling] max profile duration elapsed, stopping profiling for:', spanToJSON(span).description);\n }\n // If the timeout exceeds, we want to stop profiling, but not finish the span\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n onProfileHandler();\n }, MAX_PROFILE_DURATION_MS);\n\n // We need to reference the original end call to avoid creating an infinite loop\n const originalEnd = span.end.bind(span);\n\n /**\n * Wraps span `end()` with profiling related logic.\n * startProfiling is called after the call to spanStart in order to avoid our own code from\n * being profiled. Because of that same reason, stopProfiling is called before the call to spanEnd.\n */\n function profilingWrappedSpanEnd() {\n if (!span) {\n return originalEnd();\n }\n // onProfileHandler should always return the same profile even if this is called multiple times.\n // Always call onProfileHandler to ensure stopProfiling is called and the timeout is cleared.\n void onProfileHandler().then(\n () => {\n originalEnd();\n },\n () => {\n // If onProfileHandler fails, we still want to call the original finish method.\n originalEnd();\n },\n );\n\n return span;\n }\n\n span.end = profilingWrappedSpanEnd;\n}\n\nexport { startProfileForSpan };\n//# sourceMappingURL=startProfileForSpan.js.map\n","import { uuid4, debug, getGlobalScope, getRootSpan, getSdkMetadataForEnvelopeHeader, createEnvelope, dsnToString } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { startJSSelfProfile, createProfileChunkPayload, validateProfileChunk } from './utils.js';\n\nconst CHUNK_INTERVAL_MS = 60000; // 1 minute\n// Maximum length for trace lifecycle profiling per root span (e.g. if spanEnd never fires)\nconst MAX_ROOT_SPAN_PROFILE_MS = 300000; // 5 minutes\n\n/**\n * Browser trace-lifecycle profiler (UI Profiling / Profiling V2):\n * - Starts when the first sampled root span starts\n * - Stops when the last sampled root span ends\n * - While running, periodically stops and restarts the JS self-profiling API to collect chunks\n *\n * Profiles are emitted as standalone `profile_chunk` envelopes either when:\n * - there are no more sampled root spans, or\n * - the 60s chunk timer elapses while profiling is running.\n */\nclass UIProfiler {\n\n // For keeping track of active root spans\n\n // ID for Profiler session\n\n constructor() {\n this._client = undefined;\n this._profiler = undefined;\n this._chunkTimer = undefined;\n this._activeRootSpanIds = new Set();\n this._rootSpanTimeouts = new Map();\n this._profilerId = undefined;\n this._isRunning = false;\n this._sessionSampled = false;\n }\n\n /**\n * Initialize the profiler with client and session sampling decision computed by the integration.\n */\n initialize(client, sessionSampled) {\n // One Profiler ID per profiling session (user session)\n this._profilerId = uuid4();\n\n DEBUG_BUILD && debug.log(\"[Profiling] Initializing profiler (lifecycle='trace').\");\n\n this._client = client;\n this._sessionSampled = sessionSampled;\n\n this._setupTraceLifecycleListeners(client);\n }\n\n /**\n * Handle an already-active root span at integration setup time.\n */\n notifyRootSpanActive(rootSpan) {\n if (!this._sessionSampled) {\n return;\n }\n\n const spanId = rootSpan.spanContext().spanId;\n if (!spanId || this._activeRootSpanIds.has(spanId)) {\n return;\n }\n\n this._activeRootSpanIds.add(spanId);\n\n const rootSpanCount = this._activeRootSpanIds.size;\n\n if (rootSpanCount === 1) {\n DEBUG_BUILD &&\n debug.log('[Profiling] Detected already active root span during setup. Active root spans now:', rootSpanCount);\n\n this.start();\n }\n }\n\n /**\n * Start profiling if not already running.\n */\n start() {\n if (this._isRunning) {\n return;\n }\n this._isRunning = true;\n\n DEBUG_BUILD && debug.log('[Profiling] Started profiling with profile ID:', this._profilerId);\n\n // Expose profiler_id to match root spans with profiles\n getGlobalScope().setContext('profile', { profiler_id: this._profilerId });\n\n this._startProfilerInstance();\n\n if (!this._profiler) {\n DEBUG_BUILD && debug.log('[Profiling] Stopping trace lifecycle profiling.');\n this._resetProfilerInfo();\n return;\n }\n\n this._startPeriodicChunking();\n }\n\n /**\n * Stop profiling; final chunk will be collected and sent.\n */\n stop() {\n if (!this._isRunning) {\n return;\n }\n\n this._isRunning = false;\n if (this._chunkTimer) {\n clearTimeout(this._chunkTimer);\n this._chunkTimer = undefined;\n }\n\n this._clearAllRootSpanTimeouts();\n\n // Collect whatever was currently recording\n this._collectCurrentChunk().catch(e => {\n DEBUG_BUILD && debug.error('[Profiling] Failed to collect current profile chunk on `stop()`:', e);\n });\n }\n\n /** Trace-mode: attach spanStart/spanEnd listeners. */\n _setupTraceLifecycleListeners(client) {\n client.on('spanStart', span => {\n if (!this._sessionSampled) {\n DEBUG_BUILD && debug.log('[Profiling] Session not sampled because of negative sampling decision.');\n return;\n }\n if (span !== getRootSpan(span)) {\n return; // only care about root spans\n }\n // Only count sampled root spans\n if (!span.isRecording()) {\n DEBUG_BUILD && debug.log('[Profiling] Discarding profile because root span was not sampled.');\n return;\n }\n\n const spanId = span.spanContext().spanId;\n if (!spanId || this._activeRootSpanIds.has(spanId)) {\n return;\n }\n\n this._registerTraceRootSpan(spanId);\n\n const rootSpanCount = this._activeRootSpanIds.size;\n if (rootSpanCount === 1) {\n DEBUG_BUILD &&\n debug.log(\n `[Profiling] Root span ${spanId} started. Profiling active while there are active root spans (count=${rootSpanCount}).`,\n );\n this.start();\n }\n });\n\n client.on('spanEnd', span => {\n if (!this._sessionSampled) {\n return;\n }\n const spanId = span.spanContext().spanId;\n if (!spanId || !this._activeRootSpanIds.has(spanId)) {\n return;\n }\n this._activeRootSpanIds.delete(spanId);\n const rootSpanCount = this._activeRootSpanIds.size;\n\n DEBUG_BUILD &&\n debug.log(\n `[Profiling] Root span with ID ${spanId} ended. Will continue profiling for as long as there are active root spans (currently: ${rootSpanCount}).`,\n );\n if (rootSpanCount === 0) {\n this._collectCurrentChunk().catch(e => {\n DEBUG_BUILD && debug.error('[Profiling] Failed to collect current profile chunk on last `spanEnd`:', e);\n });\n this.stop();\n }\n });\n }\n\n /**\n * Resets profiling information from scope and resets running state\n */\n _resetProfilerInfo() {\n this._isRunning = false;\n getGlobalScope().setContext('profile', {});\n }\n\n /**\n * Clear and reset all per-root-span timeouts.\n */\n _clearAllRootSpanTimeouts() {\n this._rootSpanTimeouts.forEach(timeout => clearTimeout(timeout));\n this._rootSpanTimeouts.clear();\n }\n\n /** Register root span and schedule safeguard timeout (trace mode). */\n _registerTraceRootSpan(spanId) {\n this._activeRootSpanIds.add(spanId);\n const timeout = setTimeout(() => this._onRootSpanTimeout(spanId), MAX_ROOT_SPAN_PROFILE_MS);\n this._rootSpanTimeouts.set(spanId, timeout);\n }\n\n /**\n * Start a profiler instance if needed.\n */\n _startProfilerInstance() {\n if (this._profiler?.stopped === false) {\n return;\n }\n const profiler = startJSSelfProfile();\n if (!profiler) {\n DEBUG_BUILD && debug.log('[Profiling] Failed to start JS Profiler in trace lifecycle.');\n return;\n }\n this._profiler = profiler;\n }\n\n /**\n * Schedule the next 60s chunk while running.\n * Each tick collects a chunk and restarts the profiler.\n * A chunk should be closed when there are no active root spans anymore OR when the maximum chunk interval is reached.\n */\n _startPeriodicChunking() {\n if (!this._isRunning) {\n return;\n }\n\n this._chunkTimer = setTimeout(() => {\n this._collectCurrentChunk().catch(e => {\n DEBUG_BUILD && debug.error('[Profiling] Failed to collect current profile chunk during periodic chunking:', e);\n });\n\n if (this._isRunning) {\n this._startProfilerInstance();\n\n if (!this._profiler) {\n // If restart failed, stop scheduling further chunks and reset context.\n this._resetProfilerInfo();\n return;\n }\n\n this._startPeriodicChunking();\n }\n }, CHUNK_INTERVAL_MS);\n }\n\n /**\n * Handle timeout for a specific root span ID to avoid indefinitely running profiler if `spanEnd` never fires.\n * If this was the last active root span, collect the current chunk and stop profiling.\n */\n _onRootSpanTimeout(rootSpanId) {\n // If span already ended, ignore\n if (!this._rootSpanTimeouts.has(rootSpanId)) {\n return;\n }\n this._rootSpanTimeouts.delete(rootSpanId);\n\n if (!this._activeRootSpanIds.has(rootSpanId)) {\n return;\n }\n\n DEBUG_BUILD &&\n debug.log(\n `[Profiling] Reached 5-minute timeout for root span ${rootSpanId}. You likely started a manual root span that never called \\`.end()\\`.`,\n );\n\n this._activeRootSpanIds.delete(rootSpanId);\n\n const rootSpanCount = this._activeRootSpanIds.size;\n if (rootSpanCount === 0) {\n this.stop();\n }\n }\n\n /**\n * Stop the current profiler, convert and send a profile chunk.\n */\n async _collectCurrentChunk() {\n const prevProfiler = this._profiler;\n this._profiler = undefined;\n\n if (!prevProfiler) {\n return;\n }\n\n try {\n const profile = await prevProfiler.stop();\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const chunk = createProfileChunkPayload(profile, this._client, this._profilerId);\n\n // Validate chunk before sending\n const validationReturn = validateProfileChunk(chunk);\n if ('reason' in validationReturn) {\n DEBUG_BUILD &&\n debug.log(\n '[Profiling] Discarding invalid profile chunk (this is probably a bug in the SDK):',\n validationReturn.reason,\n );\n return;\n }\n\n this._sendProfileChunk(chunk);\n\n DEBUG_BUILD && debug.log('[Profiling] Collected browser profile chunk.');\n } catch (e) {\n DEBUG_BUILD && debug.log('[Profiling] Error while stopping JS Profiler for chunk:', e);\n }\n }\n\n /**\n * Send a profile chunk as a standalone envelope.\n */\n _sendProfileChunk(chunk) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const client = this._client;\n\n const sdkInfo = getSdkMetadataForEnvelopeHeader(client.getSdkMetadata?.());\n const dsn = client.getDsn();\n const tunnel = client.getOptions().tunnel;\n\n const envelope = createEnvelope(\n {\n event_id: uuid4(),\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n },\n [[{ type: 'profile_chunk' }, chunk]],\n );\n\n client.sendEnvelope(envelope).then(null, reason => {\n DEBUG_BUILD && debug.error('Error while sending profile chunk envelope:', reason);\n });\n }\n}\n\nexport { UIProfiler };\n//# sourceMappingURL=UIProfiler.js.map\n","import { defineIntegration, debug, getActiveSpan, getRootSpan, hasSpansEnabled } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\nimport { startProfileForSpan } from './startProfileForSpan.js';\nimport { UIProfiler } from './UIProfiler.js';\nimport { attachProfiledThreadToEvent, hasLegacyProfiling, shouldProfileSession, isAutomatedPageLoadSpan, shouldProfileSpanLegacy, getActiveProfilesCount, findProfiledTransactionsFromEnvelope, takeProfileFromGlobalCache, createProfilingEvent, addProfilesToEnvelope } from './utils.js';\n\nconst INTEGRATION_NAME = 'BrowserProfiling';\n\nconst _browserProfilingIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n const options = client.getOptions() ;\n\n if (!hasLegacyProfiling(options) && !options.profileLifecycle) {\n // Set default lifecycle mode\n options.profileLifecycle = 'manual';\n }\n\n if (hasLegacyProfiling(options) && !options.profilesSampleRate) {\n DEBUG_BUILD && debug.log('[Profiling] Profiling disabled, no profiling options found.');\n return;\n }\n\n const activeSpan = getActiveSpan();\n const rootSpan = activeSpan && getRootSpan(activeSpan);\n\n if (hasLegacyProfiling(options) && options.profileSessionSampleRate !== undefined) {\n DEBUG_BUILD &&\n debug.warn(\n '[Profiling] Both legacy profiling (`profilesSampleRate`) and UI profiling settings are defined. `profileSessionSampleRate` has no effect when legacy profiling is enabled.',\n );\n }\n\n // UI PROFILING (Profiling V2)\n if (!hasLegacyProfiling(options)) {\n const sessionSampled = shouldProfileSession(options);\n if (!sessionSampled) {\n DEBUG_BUILD && debug.log('[Profiling] Session not sampled. Skipping lifecycle profiler initialization.');\n }\n\n const lifecycleMode = options.profileLifecycle;\n\n if (lifecycleMode === 'trace') {\n if (!hasSpansEnabled(options)) {\n DEBUG_BUILD &&\n debug.warn(\n \"[Profiling] `profileLifecycle` is 'trace' but tracing is disabled. Set a `tracesSampleRate` or `tracesSampler` to enable span tracing.\",\n );\n return;\n }\n\n const traceLifecycleProfiler = new UIProfiler();\n traceLifecycleProfiler.initialize(client, sessionSampled);\n\n // If there is an active, sampled root span already, notify the profiler\n if (rootSpan) {\n traceLifecycleProfiler.notifyRootSpanActive(rootSpan);\n }\n\n // In case rootSpan is created slightly after setup -> schedule microtask to re-check and notify.\n WINDOW.setTimeout(() => {\n const laterActiveSpan = getActiveSpan();\n const laterRootSpan = laterActiveSpan && getRootSpan(laterActiveSpan);\n if (laterRootSpan) {\n traceLifecycleProfiler.notifyRootSpanActive(laterRootSpan);\n }\n }, 0);\n }\n } else {\n // LEGACY PROFILING (v1)\n if (rootSpan && isAutomatedPageLoadSpan(rootSpan)) {\n if (shouldProfileSpanLegacy(rootSpan)) {\n startProfileForSpan(rootSpan);\n }\n }\n\n client.on('spanStart', (span) => {\n if (span === getRootSpan(span) && shouldProfileSpanLegacy(span)) {\n startProfileForSpan(span);\n }\n });\n\n client.on('beforeEnvelope', (envelope) => {\n // if not profiles are in queue, there is nothing to add to the envelope.\n if (!getActiveProfilesCount()) {\n return;\n }\n\n const profiledTransactionEvents = findProfiledTransactionsFromEnvelope(envelope);\n if (!profiledTransactionEvents.length) {\n return;\n }\n\n const profilesToAddToEnvelope = [];\n\n for (const profiledTransaction of profiledTransactionEvents) {\n const context = profiledTransaction?.contexts;\n const profile_id = context?.profile?.['profile_id'];\n const start_timestamp = context?.profile?.['start_timestamp'];\n\n if (typeof profile_id !== 'string') {\n DEBUG_BUILD && debug.log('[Profiling] cannot find profile for a span without a profile context');\n continue;\n }\n\n if (!profile_id) {\n DEBUG_BUILD && debug.log('[Profiling] cannot find profile for a span without a profile context');\n continue;\n }\n\n // Remove the profile from the span context before sending, relay will take care of the rest.\n if (context?.profile) {\n delete context.profile;\n }\n\n const profile = takeProfileFromGlobalCache(profile_id);\n if (!profile) {\n DEBUG_BUILD && debug.log(`[Profiling] Could not retrieve profile for span: ${profile_id}`);\n continue;\n }\n\n const profileEvent = createProfilingEvent(\n profile_id,\n start_timestamp ,\n profile,\n profiledTransaction ,\n );\n if (profileEvent) {\n profilesToAddToEnvelope.push(profileEvent);\n }\n }\n\n addProfilesToEnvelope(envelope , profilesToAddToEnvelope);\n });\n }\n },\n processEvent(event) {\n return attachProfiledThreadToEvent(event);\n },\n };\n}) ;\n\nconst browserProfilingIntegration = defineIntegration(_browserProfilingIntegration);\n\nexport { browserProfilingIntegration };\n//# sourceMappingURL=integration.js.map\n","import { defineIntegration, _INTERNAL_copyFlagsFromScopeToEvent, _INTERNAL_insertFlagToScope, _INTERNAL_addFeatureFlagToActiveSpan } from '@sentry/core';\n\n/**\n * Sentry integration for capturing feature flag evaluations from LaunchDarkly.\n *\n * See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information.\n *\n * @example\n * ```\n * import * as Sentry from '@sentry/browser';\n * import {launchDarklyIntegration, buildLaunchDarklyFlagUsedInspector} from '@sentry/browser';\n * import * as LaunchDarkly from 'launchdarkly-js-client-sdk';\n *\n * Sentry.init(..., integrations: [launchDarklyIntegration()])\n * const ldClient = LaunchDarkly.initialize(..., {inspectors: [buildLaunchDarklyFlagUsedHandler()]});\n * ```\n */\nconst launchDarklyIntegration = defineIntegration(() => {\n return {\n name: 'LaunchDarkly',\n\n processEvent(event, _hint, _client) {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n };\n}) ;\n\n/**\n * LaunchDarkly hook to listen for and buffer flag evaluations. This needs to\n * be registered as an 'inspector' in LaunchDarkly initialize() options,\n * separately from `launchDarklyIntegration`. Both the hook and the integration\n * are needed to capture LaunchDarkly flags.\n */\nfunction buildLaunchDarklyFlagUsedHandler() {\n return {\n name: 'sentry-flag-auditor',\n type: 'flag-used',\n\n synchronous: true,\n\n /**\n * Handle a flag evaluation by storing its name and value on the current scope.\n */\n method: (flagKey, flagDetail, _context) => {\n _INTERNAL_insertFlagToScope(flagKey, flagDetail.value);\n _INTERNAL_addFeatureFlagToActiveSpan(flagKey, flagDetail.value);\n },\n };\n}\n\nexport { buildLaunchDarklyFlagUsedHandler, launchDarklyIntegration };\n//# sourceMappingURL=integration.js.map\n","import { defineIntegration, _INTERNAL_copyFlagsFromScopeToEvent, _INTERNAL_insertFlagToScope, _INTERNAL_addFeatureFlagToActiveSpan } from '@sentry/core';\n\nconst openFeatureIntegration = defineIntegration(() => {\n return {\n name: 'OpenFeature',\n\n processEvent(event, _hint, _client) {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n };\n}) ;\n\n/**\n * OpenFeature Hook class implementation.\n */\nclass OpenFeatureIntegrationHook {\n /**\n * Successful evaluation result.\n */\n after(_hookContext, evaluationDetails) {\n _INTERNAL_insertFlagToScope(evaluationDetails.flagKey, evaluationDetails.value);\n _INTERNAL_addFeatureFlagToActiveSpan(evaluationDetails.flagKey, evaluationDetails.value);\n }\n\n /**\n * On error evaluation result.\n */\n error(hookContext, _error, _hookHints) {\n _INTERNAL_insertFlagToScope(hookContext.flagKey, hookContext.defaultValue);\n _INTERNAL_addFeatureFlagToActiveSpan(hookContext.flagKey, hookContext.defaultValue);\n }\n}\n\nexport { OpenFeatureIntegrationHook, openFeatureIntegration };\n//# sourceMappingURL=integration.js.map\n","import { defineIntegration, _INTERNAL_copyFlagsFromScopeToEvent, fill, _INTERNAL_insertFlagToScope, _INTERNAL_addFeatureFlagToActiveSpan, debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../../../debug-build.js';\n\n/**\n * Sentry integration for capturing feature flag evaluations from the Unleash SDK.\n *\n * See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information.\n *\n * @example\n * ```\n * import { UnleashClient } from 'unleash-proxy-client';\n * import * as Sentry from '@sentry/browser';\n *\n * Sentry.init({\n * dsn: '___PUBLIC_DSN___',\n * integrations: [Sentry.unleashIntegration({featureFlagClientClass: UnleashClient})],\n * });\n *\n * const unleash = new UnleashClient(...);\n * unleash.start();\n *\n * unleash.isEnabled('my-feature');\n * Sentry.captureException(new Error('something went wrong'));\n * ```\n */\nconst unleashIntegration = defineIntegration(\n ({ featureFlagClientClass: unleashClientClass }) => {\n return {\n name: 'Unleash',\n\n setupOnce() {\n const unleashClientPrototype = unleashClientClass.prototype ;\n fill(unleashClientPrototype, 'isEnabled', _wrappedIsEnabled);\n },\n\n processEvent(event, _hint, _client) {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n };\n },\n) ;\n\n/**\n * Wraps the UnleashClient.isEnabled method to capture feature flag evaluations. Its only side effect is writing to Sentry scope.\n *\n * This wrapper is safe for all isEnabled signatures. If the signature does not match (this: UnleashClient, toggleName: string, ...args: unknown[]) => boolean,\n * we log an error and return the original result.\n *\n * @param original - The original method.\n * @returns Wrapped method. Results should match the original.\n */\nfunction _wrappedIsEnabled(\n original,\n) {\n return function ( ...args) {\n const toggleName = args[0];\n const result = original.apply(this, args);\n\n if (typeof toggleName === 'string' && typeof result === 'boolean') {\n _INTERNAL_insertFlagToScope(toggleName, result);\n _INTERNAL_addFeatureFlagToActiveSpan(toggleName, result);\n } else if (DEBUG_BUILD) {\n debug.error(\n `[Feature Flags] UnleashClient.isEnabled does not match expected signature. arg0: ${toggleName} (${typeof toggleName}), result: ${result} (${typeof result})`,\n );\n }\n return result;\n };\n}\n\nexport { unleashIntegration };\n//# sourceMappingURL=integration.js.map\n","import { growthbookIntegration as growthbookIntegration$1 } from '@sentry/core';\n\n/**\n * Sentry integration for capturing feature flag evaluations from GrowthBook.\n *\n * See the feature flag documentation: https://develop.sentry.dev/sdk/expected-features/#feature-flags\n *\n * @example\n * ```\n * import { GrowthBook } from '@growthbook/growthbook';\n * import * as Sentry from '@sentry/browser';\n *\n * Sentry.init({\n * dsn: '___PUBLIC_DSN___',\n * integrations: [Sentry.growthbookIntegration({ growthbookClass: GrowthBook })],\n * });\n *\n * const gb = new GrowthBook();\n * gb.isOn('my-feature');\n * Sentry.captureException(new Error('something went wrong'));\n * ```\n */\nconst growthbookIntegration = (({ growthbookClass }) =>\n growthbookIntegration$1({ growthbookClass })) ;\n\nexport { growthbookIntegration };\n//# sourceMappingURL=integration.js.map\n","import { defineIntegration, _INTERNAL_copyFlagsFromScopeToEvent, _INTERNAL_insertFlagToScope, _INTERNAL_addFeatureFlagToActiveSpan } from '@sentry/core';\n\n/**\n * Sentry integration for capturing feature flag evaluations from the Statsig js-client SDK.\n *\n * See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information.\n *\n * @example\n * ```\n * import { StatsigClient } from '@statsig/js-client';\n * import * as Sentry from '@sentry/browser';\n *\n * const statsigClient = new StatsigClient();\n *\n * Sentry.init({\n * dsn: '___PUBLIC_DSN___',\n * integrations: [Sentry.statsigIntegration({featureFlagClient: statsigClient})],\n * });\n *\n * await statsigClient.initializeAsync(); // or statsigClient.initializeSync();\n *\n * const result = statsigClient.checkGate('my-feature-gate');\n * Sentry.captureException(new Error('something went wrong'));\n * ```\n */\nconst statsigIntegration = defineIntegration(\n ({ featureFlagClient: statsigClient }) => {\n return {\n name: 'Statsig',\n\n setup(_client) {\n statsigClient.on('gate_evaluation', (event) => {\n _INTERNAL_insertFlagToScope(event.gate.name, event.gate.value);\n _INTERNAL_addFeatureFlagToActiveSpan(event.gate.name, event.gate.value);\n });\n },\n\n processEvent(event, _hint, _client) {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n };\n },\n) ;\n\nexport { statsigIntegration };\n//# sourceMappingURL=integration.js.map\n","import { getClient, suppressTracing } from '@sentry/core';\n\n/**\n * A function to diagnose why the SDK might not be successfully sending data.\n *\n * Possible return values wrapped in a Promise:\n * - `\"no-client-active\"` - There was no active client when the function was called. This possibly means that the SDK was not initialized yet.\n * - `\"sentry-unreachable\"` - The Sentry SaaS servers were not reachable. This likely means that there is an ad blocker active on the page or that there are other connection issues.\n *\n * If the function doesn't detect an issue it resolves to `undefined`.\n */\nasync function diagnoseSdkConnectivity()\n\n {\n const client = getClient();\n\n if (!client) {\n return 'no-client-active';\n }\n\n if (!client.getDsn()) {\n return 'no-dsn-configured';\n }\n\n try {\n await suppressTracing(() =>\n // If fetch throws, there is likely an ad blocker active or there are other connective issues.\n fetch(\n // We are using the\n // - \"sentry-sdks\" org with id 447951 not to pollute any actual organizations.\n // - \"diagnose-sdk-connectivity\" project with id 4509632503087104\n // - the public key of said org/project, which is disabled in the project settings\n // => this DSN: https://c1dfb07d783ad5325c245c1fd3725390@o447951.ingest.us.sentry.io/4509632503087104 (i.e. disabled)\n 'https://o447951.ingest.sentry.io/api/4509632503087104/envelope/?sentry_version=7&sentry_key=c1dfb07d783ad5325c245c1fd3725390&sentry_client=sentry.javascript.browser%2F1.33.7',\n {\n body: '{}',\n method: 'POST',\n mode: 'cors',\n credentials: 'omit',\n },\n ),\n );\n } catch {\n return 'sentry-unreachable';\n }\n}\n\nexport { diagnoseSdkConnectivity };\n//# sourceMappingURL=diagnose-sdk.js.map\n","import { defineIntegration, debug, getClient, isPrimitive, captureEvent, isPlainObject } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { WINDOW } from '../helpers.js';\nimport { _eventFromRejectionWithPrimitive, _getUnhandledRejectionError } from './globalhandlers.js';\n\nconst INTEGRATION_NAME = 'WebWorker';\n\n/**\n * Use this integration to set up Sentry with web workers.\n *\n * IMPORTANT: This integration must be added **before** you start listening to\n * any messages from the worker. Otherwise, your message handlers will receive\n * messages from the Sentry SDK which you need to ignore.\n *\n * This integration only has an effect, if you call `Sentry.registerWebWorker(self)`\n * from within the worker(s) you're adding to the integration.\n *\n * Given that you want to initialize the SDK as early as possible, you most likely\n * want to add this integration **after** initializing the SDK:\n *\n * @example:\n * ```ts filename={main.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // some time earlier:\n * Sentry.init(...)\n *\n * // 1. Initialize the worker\n * const worker = new Worker(new URL('./worker.ts', import.meta.url));\n *\n * // 2. Add the integration\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker });\n * Sentry.addIntegration(webWorkerIntegration);\n *\n * // 3. Register message listeners on the worker\n * worker.addEventListener('message', event => {\n * // ...\n * });\n * ```\n *\n * If you initialize multiple workers at the same time, you can also pass an array of workers\n * to the integration:\n *\n * ```ts filename={main.js}\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker: [worker1, worker2] });\n * Sentry.addIntegration(webWorkerIntegration);\n * ```\n *\n * If you have any additional workers that you initialize at a later point,\n * you can add them to the integration as follows:\n *\n * ```ts filename={main.js}\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker: worker1 });\n * Sentry.addIntegration(webWorkerIntegration);\n *\n * // sometime later:\n * webWorkerIntegration.addWorker(worker2);\n * ```\n *\n * Of course, you can also directly add the integration in Sentry.init:\n * ```ts filename={main.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // 1. Initialize the worker\n * const worker = new Worker(new URL('./worker.ts', import.meta.url));\n *\n * // 2. Initialize the SDK\n * Sentry.init({\n * integrations: [Sentry.webWorkerIntegration({ worker })]\n * });\n *\n * // 3. Register message listeners on the worker\n * worker.addEventListener('message', event => {\n * // ...\n * });\n * ```\n *\n * @param options {WebWorkerIntegrationOptions} Integration options:\n * - `worker`: The worker instance.\n */\nconst webWorkerIntegration = defineIntegration(({ worker }) => ({\n name: INTEGRATION_NAME,\n setupOnce: () => {\n (Array.isArray(worker) ? worker : [worker]).forEach(w => listenForSentryMessages(w));\n },\n addWorker: (worker) => listenForSentryMessages(worker),\n})) ;\n\nfunction listenForSentryMessages(worker) {\n worker.addEventListener('message', event => {\n if (isSentryMessage(event.data)) {\n event.stopImmediatePropagation(); // other listeners should not receive this message\n\n // Handle debug IDs\n if (event.data._sentryDebugIds) {\n DEBUG_BUILD && debug.log('Sentry debugId web worker message received', event.data);\n WINDOW._sentryDebugIds = {\n ...event.data._sentryDebugIds,\n // debugIds of the main thread have precedence over the worker's in case of a collision.\n ...WINDOW._sentryDebugIds,\n };\n }\n\n // Handle unhandled rejections forwarded from worker\n if (event.data._sentryWorkerError) {\n DEBUG_BUILD && debug.log('Sentry worker rejection message received', event.data._sentryWorkerError);\n handleForwardedWorkerRejection(event.data._sentryWorkerError);\n }\n }\n });\n}\n\nfunction handleForwardedWorkerRejection(workerError) {\n const client = getClient();\n if (!client) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n const attachStacktrace = client.getOptions().attachStacktrace;\n\n const error = workerError.reason;\n\n // Follow same pattern as globalHandlers for unhandledrejection\n // Handle both primitives and errors the same way\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n // Add worker-specific context\n if (workerError.filename) {\n event.contexts = {\n ...event.contexts,\n worker: {\n filename: workerError.filename,\n },\n };\n }\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'auto.browser.web_worker.onunhandledrejection',\n },\n });\n\n DEBUG_BUILD && debug.log('Captured worker unhandled rejection', error);\n}\n\n/**\n * Minimal interface for DedicatedWorkerGlobalScope, only requiring the postMessage method.\n * (which is the only thing we need from the worker's global object)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope\n *\n * We can't use the actual type because it breaks everyone who doesn't have {\"lib\": [\"WebWorker\"]}\n * but uses {\"skipLibCheck\": true} in their tsconfig.json.\n */\n\n/**\n * Use this function to register the worker with the Sentry SDK.\n *\n * This function will:\n * - Send debug IDs to the parent thread\n * - Set up a handler for unhandled rejections in the worker\n * - Forward unhandled rejections to the parent thread for capture\n *\n * Note: Synchronous errors in workers are already captured by globalHandlers.\n * This only handles unhandled promise rejections which don't bubble to the parent.\n *\n * @example\n * ```ts filename={worker.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // Do this as early as possible in your worker.\n * Sentry.registerWebWorker({ self });\n *\n * // continue setting up your worker\n * self.postMessage(...)\n * ```\n * @param options {RegisterWebWorkerOptions} Integration options:\n * - `self`: The worker instance you're calling this function from (self).\n */\nfunction registerWebWorker({ self }) {\n // Send debug IDs to parent thread\n self.postMessage({\n _sentryMessage: true,\n _sentryDebugIds: self._sentryDebugIds ?? undefined,\n });\n\n // Set up unhandledrejection handler inside the worker\n // Following the same pattern as globalHandlers\n // unhandled rejections don't bubble to the parent thread, so we need to handle them here\n self.addEventListener('unhandledrejection', (event) => {\n const reason = _getUnhandledRejectionError(event);\n\n // Forward the raw reason to parent thread\n // The parent will handle primitives vs errors the same way globalHandlers does\n const serializedError = {\n reason: reason,\n filename: self.location?.href,\n };\n\n // Forward to parent thread\n self.postMessage({\n _sentryMessage: true,\n _sentryWorkerError: serializedError,\n });\n\n DEBUG_BUILD && debug.log('[Sentry Worker] Forwarding unhandled rejection to parent', serializedError);\n });\n\n DEBUG_BUILD && debug.log('[Sentry Worker] Registered worker with unhandled rejection handling');\n}\n\nfunction isSentryMessage(eventData) {\n if (!isPlainObject(eventData) || eventData._sentryMessage !== true) {\n return false;\n }\n\n // Must have at least one of: debug IDs or worker error\n const hasDebugIds = '_sentryDebugIds' in eventData;\n const hasWorkerError = '_sentryWorkerError' in eventData;\n\n if (!hasDebugIds && !hasWorkerError) {\n return false;\n }\n\n // Validate debug IDs if present\n if (hasDebugIds && !(isPlainObject(eventData._sentryDebugIds) || eventData._sentryDebugIds === undefined)) {\n return false;\n }\n\n // Validate worker error if present\n if (hasWorkerError && !isPlainObject(eventData._sentryWorkerError)) {\n return false;\n }\n\n return true;\n}\n\nexport { INTEGRATION_NAME, registerWebWorker, webWorkerIntegration };\n//# sourceMappingURL=webWorker.js.map\n","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","import { jwtDecode } from \"jwt-decode\";\nimport type { PasskeyOptionsResponse, TokenResponse, UnidyClient } from \"../api\";\nimport { createLogger } from \"../logger\";\nimport type { TokenPayload } from \"./auth\";\nimport { authState, authStore } from \"./store/auth-store\";\n\nconst logger = createLogger(\"PasskeyAuth\");\n\nconst PASSKEY_ERRORS: Record<string, string> = {\n NotSupportedError: \"passkey_not_supported\",\n NotAllowedError: \"passkey_cancelled\",\n SecurityError: \"passkey_security_error\",\n InvalidStateError: \"passkey_invalid_state\",\n};\n\nfunction decodeBase64Url(base64url: string): Uint8Array {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padded = base64 + \"=\".repeat((4 - (base64.length % 4)) % 4);\n return Uint8Array.from(atob(padded), (c) => c.charCodeAt(0));\n}\n\nfunction buildPublicKeyOptions(options: PasskeyOptionsResponse): PublicKeyCredentialRequestOptions {\n return {\n challenge: Uint8Array.from(atob(options.challenge), (c) => c.charCodeAt(0)),\n timeout: options.timeout || 60000,\n rpId: options.rpId,\n userVerification: (options.userVerification as UserVerificationRequirement) || \"required\",\n allowCredentials: options.allowCredentials?.map((cred) => ({\n ...cred,\n id: decodeBase64Url(cred.id),\n })),\n };\n}\n\nfunction formatCredentialForServer(credential: PublicKeyCredential) {\n const response = credential.response as AuthenticatorAssertionResponse;\n return {\n id: credential.id,\n rawId: btoa(String.fromCharCode(...new Uint8Array(credential.rawId))),\n response: {\n authenticatorData: btoa(String.fromCharCode(...new Uint8Array(response.authenticatorData))),\n clientDataJSON: btoa(String.fromCharCode(...new Uint8Array(response.clientDataJSON))),\n signature: btoa(String.fromCharCode(...new Uint8Array(response.signature))),\n },\n type: credential.type,\n };\n}\n\nfunction extractAndSetSignInId(tokenResponse: TokenResponse) {\n if (tokenResponse.sid) {\n authStore.setSignInId(tokenResponse.sid);\n return;\n }\n\n // Fallback: extract sid from JWT token payload\n try {\n const decoded = jwtDecode<TokenPayload>(tokenResponse.jwt);\n if (decoded.sid) {\n authStore.setSignInId(decoded.sid);\n }\n } catch {\n // Failed to decode JWT token to extract sid, continue without it\n }\n}\n\nfunction handlePasskeyError(error: unknown) {\n logger.error(\"Passkey error:\", error);\n\n let errorMessage = \"passkey_error\";\n if (error instanceof DOMException) {\n errorMessage = PASSKEY_ERRORS[error.name] || \"passkey_error\";\n }\n\n authStore.setGlobalError(\"auth\", errorMessage);\n authStore.setLoading(false);\n}\n\nexport async function authenticateWithPasskey(client: UnidyClient, onSuccess: (response: TokenResponse) => void) {\n authStore.setLoading(true);\n authStore.clearErrors();\n\n if (!window.PublicKeyCredential) {\n authStore.setGlobalError(\"auth\", \"passkey_not_supported\");\n authStore.setLoading(false);\n return;\n }\n\n try {\n const [optionsError, options] = await client.auth.getPasskeyOptions(authState.sid || undefined);\n\n if (optionsError || !options) {\n authStore.setGlobalError(\"auth\", optionsError || \"bad_request\");\n authStore.setLoading(false);\n return;\n }\n\n const publicKeyOptions = buildPublicKeyOptions(options as PasskeyOptionsResponse);\n\n const credential = (await navigator.credentials.get({\n publicKey: publicKeyOptions,\n })) as PublicKeyCredential | null;\n\n if (!credential) {\n authStore.setGlobalError(\"auth\", \"passkey_cancelled\");\n authStore.setLoading(false);\n return;\n }\n\n const formattedCredential = formatCredentialForServer(credential);\n\n const [verifyError, tkResponse] = await client.auth.authenticateWithPasskey(formattedCredential);\n\n const tokenResponse = tkResponse as TokenResponse;\n if (verifyError || !tokenResponse) {\n authStore.setGlobalError(\"auth\", verifyError || \"authentication_failed\");\n authStore.setLoading(false);\n return;\n }\n\n authStore.setToken(tokenResponse.jwt);\n extractAndSetSignInId(tokenResponse);\n onSuccess(tokenResponse);\n } catch (error) {\n handlePasskeyError(error);\n }\n}\n","import { authStore, authState } from \"../auth/store/auth-store\";\nimport type { CreateSignInResponse, RequiredFieldsResponse, TokenResponse, UnidyClient } from \"../api\";\nimport type { ProfileRaw } from \"../profile\";\nimport { state as profileState } from \"../profile/store/profile-store\";\nimport { Flash } from \"../shared/store/flash-store\";\nimport { clearUrlParam } from \"../shared/component-utils\";\nimport { t } from \"../i18n\";\nimport { authenticateWithPasskey } from \"./passkey-auth\";\nimport { jwtDecode } from \"jwt-decode\";\nimport type { TokenPayload } from \"./auth\";\nimport { createLogger } from \"../logger\";\n\nexport class AuthHelpers {\n private client: UnidyClient;\n private logger = createLogger(\"AuthHelpers\");\n\n constructor(client: UnidyClient) {\n this.client = client;\n }\n\n async createSignIn(email: string, password?: string, sendMagicCode?: boolean) {\n if (!email) {\n throw new Error(t(\"errors.required_field\", { field: \"Email\" }));\n }\n\n authStore.setLoading(true);\n authStore.clearErrors();\n\n const [error, response] = await this.client.auth.createSignIn(email, password, sendMagicCode);\n\n if (error) {\n this.handleAuthError(error, response);\n return;\n }\n\n if (password) {\n const token = jwtDecode<TokenPayload>((response as TokenResponse).jwt);\n authStore.setSignInId(token.sid);\n authStore.setToken((response as TokenResponse).jwt);\n authStore.setLoading(false);\n authStore.getRootComponentRef()?.onAuth(response as TokenResponse);\n return;\n }\n\n if (sendMagicCode) {\n authStore.setSignInId((response as CreateSignInResponse).sid);\n authStore.setMagicCodeStep(\"sent\");\n authStore.setStep(\"magic-code\");\n authStore.setLoading(false);\n return [error, response] as const;\n }\n const signInResponse = response as CreateSignInResponse;\n authStore.setStep(\"verification\");\n authStore.setEmail(email);\n authStore.setSignInId(signInResponse.sid);\n authStore.setLoginOptions(signInResponse.login_options);\n authStore.setLoading(false);\n }\n\n async authenticateWithPassword(password: string) {\n if (!authState.sid) {\n throw new Error(t(\"errors.no_sign_in_id\"));\n }\n\n if (!password) {\n throw new Error(t(\"errors.required_field\", { field: \"Password\" }));\n }\n\n authStore.setLoading(true);\n authStore.clearErrors();\n\n const [error, response] = await this.client.auth.authenticateWithPassword(authState.sid, password);\n\n if (error) {\n this.handleAuthError(error, response);\n } else {\n authStore.setLoading(false);\n this.handleAuthSuccess(response as TokenResponse);\n return;\n }\n }\n\n private handleAuthError(error: string, response: unknown) {\n if (error === \"account_not_found\") {\n authStore.setFieldError(\"email\", error);\n authStore.setLoading(false);\n return;\n }\n if (error === \"missing_required_fields\") {\n authStore.setMissingFields((response as RequiredFieldsResponse).fields);\n profileState.data = (response as RequiredFieldsResponse).fields as ProfileRaw;\n\n if ((response as RequiredFieldsResponse).sid) {\n authStore.setSignInId((response as RequiredFieldsResponse).sid as string);\n }\n\n authStore.setStep(\"missing-fields\");\n authStore.setLoading(false);\n return;\n }\n if (error === \"account_locked\") {\n authStore.setGlobalError(\"auth\", error);\n } else {\n authStore.setFieldError(\"password\", error);\n }\n authStore.setLoading(false);\n }\n\n async logout() {\n const [error, _] = await this.client.auth.signOut(authState.sid as string);\n\n if (error) {\n authStore.setGlobalError(\"auth\", error);\n }\n\n return [error, _] as const;\n }\n\n async refreshToken() {\n if (authState.step === \"missing-fields\") {\n return;\n }\n this.extractSignInIdFromQuery();\n\n if (!authState.sid) {\n this.logger.warn(\"No sign-in ID in the session\");\n return;\n }\n\n const [error, response] = await this.client.auth.refreshToken(authState.sid);\n\n if (error) {\n authStore.reset();\n authStore.setGlobalError(\"auth\", error);\n } else {\n authStore.setToken((response as TokenResponse).jwt);\n }\n }\n\n handleSocialAuthRedirect(): void {\n // missing required fields flow\n const url = new URL(window.location.href);\n const params = url.searchParams;\n const error = params.get(\"error\");\n\n if (error !== \"missing_required_fields\") {\n return;\n }\n\n const fieldsFromUrl = params.get(\"fields\");\n if (!fieldsFromUrl) {\n return;\n }\n\n const signInId = params.get(\"sid\");\n if (signInId) {\n authStore.setSignInId(signInId);\n } else {\n return;\n }\n\n try {\n const fields = JSON.parse(fieldsFromUrl);\n\n authStore.setMissingFields(fields);\n profileState.data = fields as ProfileRaw;\n authStore.setStep(\"missing-fields\");\n\n params.delete(\"error\");\n params.delete(\"fields\");\n const cleanUrl = `${url.origin}${url.pathname}${url.hash}`;\n window.history.replaceState(null, \"\", cleanUrl);\n } catch (e) {\n this.logger.error(\"Failed to parse missing fields payload:\", e);\n authStore.setGlobalError(\"auth\", \"invalid_required_fields_payload\");\n }\n }\n\n async sendMagicCode() {\n if (!authState.sid && authState.step !== \"single-login\") {\n throw new Error(t(\"errors.no_sign_in_id\"));\n }\n\n authStore.setMagicCodeStep(\"requested\");\n authStore.setLoading(true);\n authStore.clearErrors();\n\n if (authState.step === \"single-login\") {\n const [error, response] = await this.createSignIn(authState.email, undefined, true);\n authStore.setLoading(false);\n return [error, response] as const;\n }\n\n const [error, response] = await this.client.auth.sendMagicCode(authState.sid);\n\n authStore.setLoading(false);\n\n authStore.setStep(\"magic-code\");\n\n if (!error) {\n authStore.setMagicCodeStep(\"sent\");\n\n return [null, response] as const;\n }\n\n authStore.setFieldError(\"magicCode\", error);\n\n if (error === \"magic_code_recently_created\") {\n authStore.setMagicCodeStep(\"sent\");\n }\n\n return [error, response] as const;\n }\n\n async authenticateWithMagicCode(code: string) {\n if (!authState.sid) {\n throw new Error(t(\"errors.no_sign_in_id\"));\n }\n\n if (!code) {\n throw new Error(t(\"errors.magic_code_is_missing\"));\n }\n\n authStore.setLoading(true);\n authStore.clearErrors();\n\n const [error, response] = await this.client.auth.authenticateWithMagicCode(authState.sid, code);\n\n if (!error) {\n this.handleAuthSuccess(response as TokenResponse);\n return;\n }\n\n if (error === \"missing_required_fields\") {\n this.handleMissingFields(response as RequiredFieldsResponse);\n return;\n }\n\n authStore.setLoading(false);\n authStore.setFieldError(\"magicCode\", error);\n }\n\n async sendResetPasswordEmail() {\n if (!authState.sid) {\n throw new Error(t(\"errors.no_sign_in_id\"));\n }\n\n authStore.setLoading(true);\n authStore.setResetPasswordStep(\"requested\");\n\n const [error, _] = await this.client.auth.sendResetPasswordEmail(authState.sid, window.location.href);\n\n if (error) {\n authStore.setFieldError(\"resetPassword\", error);\n } else {\n authStore.setResetPasswordStep(\"sent\");\n authStore.clearErrors();\n }\n\n authStore.setLoading(false);\n }\n\n async handleResetPasswordRedirect(): Promise<boolean> {\n const url = new URL(window.location.href);\n const params = url.searchParams;\n const resetToken = params.get(\"reset_password_token\");\n\n if (!resetToken) {\n return false;\n }\n\n if (authState.sid) {\n authStore.setLoading(true);\n\n const [error] = await this.client.auth.validateResetPasswordToken(authState.sid, resetToken);\n\n if (error) {\n authStore.setFieldError(\"resetPassword\", error);\n authStore.setStep(\"reset-password\");\n authStore.setLoading(false);\n return false;\n }\n }\n\n authStore.setResetToken(resetToken);\n authStore.setStep(\"reset-password\");\n authStore.setLoading(false);\n\n return true;\n }\n\n async resetPassword() {\n if (!authState.resetPassword.token) {\n throw new Error(\"No reset token available\");\n }\n\n if (!authState.resetPassword.newPassword) {\n authStore.setFieldError(\"resetPassword\", \"password_required\");\n return;\n }\n\n if (\n authState.resetPassword.passwordConfirmation &&\n authState.resetPassword.newPassword !== authState.resetPassword.passwordConfirmation\n ) {\n authStore.setFieldError(\"resetPassword\", \"passwords_do_not_match\");\n return;\n }\n\n authStore.setLoading(true);\n authStore.clearErrors();\n\n const [error, response] = await this.client.auth.resetPassword(\n authState.sid as string,\n authState.resetPassword.token,\n authState.resetPassword.newPassword,\n authState.resetPassword.passwordConfirmation,\n );\n\n if (error) {\n authStore.setFieldError(\"resetPassword\", error);\n\n // TODO: add proper password requirements handling --> for now this is fine\n if (error === \"invalid_password\") {\n authStore.setFieldError(\"password\", response.error_details?.password.map((p) => t(`errors.password_requirements.${p}`)).join(\"\\n\"));\n }\n } else {\n authStore.setStep(\"email\");\n authStore.updateResetPassword({\n step: \"completed\",\n token: null,\n newPassword: \"\",\n passwordConfirmation: \"\",\n });\n\n clearUrlParam(\"reset_password_token\");\n Flash.success.addMessage(\"Password reset successfully\");\n }\n\n authStore.setLoading(false);\n }\n\n authenticateWithPasskey() {\n return authenticateWithPasskey(this.client, (response) => this.handleAuthSuccess(response));\n }\n\n private extractSignInIdFromQuery() {\n const sid = clearUrlParam(\"sid\");\n\n if (sid) {\n authStore.setSignInId(sid);\n }\n }\n\n private handleMissingFields(response: RequiredFieldsResponse) {\n authStore.setMissingFields(response.fields);\n profileState.data = response.fields as ProfileRaw;\n authStore.setStep(\"missing-fields\");\n authStore.setLoading(false);\n }\n\n private handleAuthSuccess(response: TokenResponse) {\n authStore.setToken(response.jwt);\n authStore.setLoading(false);\n authStore.getRootComponentRef()?.onAuth(response);\n }\n}\n","import * as Sentry from \"@sentry/browser\";\nimport { jwtDecode } from \"jwt-decode\";\nimport type { UnidyClient } from \"../api\";\nimport { getUnidyClient } from \"../api\";\nimport { t } from \"../i18n\";\nimport { waitForConfig } from \"../shared/store/unidy-store\";\nimport { AuthHelpers } from \"./auth-helpers\";\nimport { authState, authStore } from \"./store/auth-store\";\n\nexport interface TokenPayload {\n sub: string; // unidy id\n sid: string; // sign-in id\n exp: number;\n iat: number;\n iss: string;\n aud: string;\n nonce: string;\n auth_time: number;\n email: string;\n email_verified: boolean;\n [key: string]: unknown;\n}\n\nexport type AuthError = Error & {\n code: \"TOKEN_EXPIRED\" | \"REFRESH_FAILED\" | \"NO_TOKEN\" | \"INVALID_TOKEN\" | \"SIGN_IN_NOT_FOUND\" | \"SIGN_OUT_FAILED\";\n requiresReauth: boolean;\n};\n\nexport class Auth {\n private static instance: Auth;\n\n readonly helpers: AuthHelpers;\n\n private constructor(client: UnidyClient) {\n this.helpers = new AuthHelpers(client);\n this.helpers.handleSocialAuthRedirect();\n this.helpers.handleResetPasswordRedirect();\n }\n\n static Errors = {\n email: {\n NOT_FOUND: \"account_not_found\",\n },\n magicCode: {\n RECENTLY_CREATED: \"magic_code_recently_created\",\n NOT_VALID: \"magic_code_not_valid\",\n EXPIRED: \"magic_code_expired\",\n USED: \"magic_code_used\",\n },\n password: {\n INVALID: \"invalid_password\",\n NOT_SET: \"password_not_set\",\n RESET_PASSWORD_ALREADY_SENT: \"reset_password_already_sent\",\n },\n general: {\n ACCOUNT_LOCKED: \"account_locked\",\n SIGN_IN_EXPIRED: \"sign_in_expired\",\n },\n } as const;\n\n static async getInstance(): Promise<Auth> {\n if (!Auth.isInitialized()) {\n await waitForConfig();\n\n return Auth.initialize(getUnidyClient());\n }\n\n return Auth.instance;\n }\n\n static initialize(client: UnidyClient): Auth {\n Auth.instance = new Auth(client);\n\n if (Auth.instance.isTokenValid(authState.token)) {\n authStore.setAuthenticated(true);\n }\n\n return Auth.instance;\n }\n\n static isInitialized(): boolean {\n return !!Auth.instance;\n }\n\n isTokenValid(token: string | TokenPayload | null): boolean {\n try {\n let decoded: TokenPayload | null;\n\n if (typeof token === \"string\") {\n decoded = jwtDecode<TokenPayload>(token);\n } else {\n decoded = token;\n }\n\n if (!decoded) return false;\n\n const currentTime = Date.now() / 1000;\n return decoded.exp > currentTime;\n } catch (error) {\n Sentry.captureException(error);\n return false;\n }\n }\n\n async isAuthenticated(): Promise<boolean> {\n const token = await this.getToken();\n return typeof token === \"string\";\n }\n\n async getToken(): Promise<string | AuthError> {\n const currentToken = authState.token;\n\n if (currentToken && this.isTokenValid(currentToken)) {\n return currentToken;\n }\n\n await this.helpers.refreshToken();\n\n if (authState.globalErrors.auth || !authState.token) {\n return this.createAuthError(t(\"errors.refresh_failed\"), \"REFRESH_FAILED\", true);\n }\n\n return authState.token as string;\n }\n\n async userData(): Promise<TokenPayload | null> {\n const token = await this.getToken();\n\n if (typeof token !== \"string\") {\n return null;\n }\n\n if (!token) {\n return null;\n }\n\n try {\n return jwtDecode<TokenPayload>(token);\n } catch (error) {\n Sentry.captureException(error);\n return null;\n }\n }\n\n async logout(): Promise<boolean | AuthError> {\n const [error, _] = await this.helpers.logout();\n\n if (error) {\n return this.createAuthError(t(\"errors.sign_out_failed\", { reason: error }), \"SIGN_OUT_FAILED\", false);\n }\n\n authStore.reset();\n\n return true;\n }\n\n getEmail(): string | null {\n return authState.email;\n }\n\n private createAuthError(message: string, code: AuthError[\"code\"], requiresReauth = false): AuthError {\n const error = new Error(message) as AuthError;\n error.code = code;\n error.requiresReauth = requiresReauth;\n\n return error;\n }\n}\n"],"names":["WINDOW","INTEGRATION_NAME","_wrapXHR","_INTERNAL_setSpanForScope","navigator","authState","profileState","Sentry.captureException"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43]}
|