{"version":3,"file":"79110.77b7454a59d0a8f99ad5.js","mappings":"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","sources":["webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/defaultScopes.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/asyncContext/index.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/carrier.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/constants.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/currentScopes.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/debug-build.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/exports.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/metrics/metric-summary.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/scope.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/semanticAttributes.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/session.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/tracing/spanstatus.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/baggage.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/browser.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/debug-build.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/is.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/logger.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/misc.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/normalize.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/memo.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/object.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/propagationContext.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/stacktrace.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/string.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/syncpromise.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/time.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/tracing.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/version.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/worldwide.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils/hasTracingEnabled.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils/merge.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/eventProcessors.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils-hoist/debug-ids.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils/applyScopeDataToEvent.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils/prepareEvent.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils/spanOnScope.js","webpack://platform/./node_modules/.pnpm/@sentry+core@8.48.0/node_modules/@sentry/core/build/esm/utils/spanUtils.js"],"sourcesContent":["import { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes.js';\nimport { Scope } from '../scope.js';\nimport { isThenable } from '../utils-hoist/is.js';\nimport { getMainCarrier, getSentryCarrier } from '../carrier.js';\n\n/**\n * This is an object that holds a stack of scopes.\n */\nclass AsyncContextStack {\n\n constructor(scope, isolationScope) {\n let assignedScope;\n if (!scope) {\n assignedScope = new Scope();\n } else {\n assignedScope = scope;\n }\n\n let assignedIsolationScope;\n if (!isolationScope) {\n assignedIsolationScope = new Scope();\n } else {\n assignedIsolationScope = isolationScope;\n }\n\n // scope stack for domains or the process\n this._stack = [{ scope: assignedScope }];\n this._isolationScope = assignedIsolationScope;\n }\n\n /**\n * Fork a scope for the stack.\n */\n withScope(callback) {\n const scope = this._pushScope();\n\n let maybePromiseResult;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n this._popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n // @ts-expect-error - isThenable returns the wrong type\n return maybePromiseResult.then(\n res => {\n this._popScope();\n return res;\n },\n e => {\n this._popScope();\n throw e;\n },\n );\n }\n\n this._popScope();\n return maybePromiseResult;\n }\n\n /**\n * Get the client of the stack.\n */\n getClient() {\n return this.getStackTop().client ;\n }\n\n /**\n * Returns the scope of the top stack.\n */\n getScope() {\n return this.getStackTop().scope;\n }\n\n /**\n * Get the isolation scope for the stack.\n */\n getIsolationScope() {\n return this._isolationScope;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n */\n getStackTop() {\n return this._stack[this._stack.length - 1] ;\n }\n\n /**\n * Push a scope to the stack.\n */\n _pushScope() {\n // We want to clone the content of prev scope\n const scope = this.getScope().clone();\n this._stack.push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * Pop a scope from the stack.\n */\n _popScope() {\n if (this._stack.length <= 1) return false;\n return !!this._stack.pop();\n }\n}\n\n/**\n * Get the global async context stack.\n * This will be removed during the v8 cycle and is only here to make migration easier.\n */\nfunction getAsyncContextStack() {\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n\n return (sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope()));\n}\n\nfunction withScope(callback) {\n return getAsyncContextStack().withScope(callback);\n}\n\nfunction withSetScope(scope, callback) {\n const stack = getAsyncContextStack() ;\n return stack.withScope(() => {\n stack.getStackTop().scope = scope;\n return callback(scope);\n });\n}\n\nfunction withIsolationScope(callback) {\n return getAsyncContextStack().withScope(() => {\n return callback(getAsyncContextStack().getIsolationScope());\n });\n}\n\n/**\n * Get the stack-based async context strategy.\n */\nfunction getStackAsyncContextStrategy() {\n return {\n withIsolationScope,\n withScope,\n withSetScope,\n withSetIsolationScope: (_isolationScope, callback) => {\n return withIsolationScope(callback);\n },\n getCurrentScope: () => getAsyncContextStack().getScope(),\n getIsolationScope: () => getAsyncContextStack().getIsolationScope(),\n };\n}\n\nexport { AsyncContextStack, getStackAsyncContextStrategy };\n//# sourceMappingURL=stackStrategy.js.map\n","import { Scope } from './scope.js';\nimport { getGlobalSingleton } from './utils-hoist/worldwide.js';\n\n/** Get the default current scope. */\nfunction getDefaultCurrentScope() {\n return getGlobalSingleton('defaultCurrentScope', () => new Scope());\n}\n\n/** Get the default isolation scope. */\nfunction getDefaultIsolationScope() {\n return getGlobalSingleton('defaultIsolationScope', () => new Scope());\n}\n\nexport { getDefaultCurrentScope, getDefaultIsolationScope };\n//# sourceMappingURL=defaultScopes.js.map\n","import { getMainCarrier, getSentryCarrier } from '../carrier.js';\nimport { getStackAsyncContextStrategy } from './stackStrategy.js';\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nfunction setAsyncContextStrategy(strategy) {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n sentry.acs = strategy;\n}\n\n/**\n * Get the current async context strategy.\n * If none has been setup, the default will be used.\n */\nfunction getAsyncContextStrategy(carrier) {\n const sentry = getSentryCarrier(carrier);\n\n if (sentry.acs) {\n return sentry.acs;\n }\n\n // Otherwise, use the default one (stack)\n return getStackAsyncContextStrategy();\n}\n\nexport { getAsyncContextStrategy, setAsyncContextStrategy };\n//# sourceMappingURL=index.js.map\n","import { SDK_VERSION } from './utils-hoist/version.js';\nimport { GLOBAL_OBJ } from './utils-hoist/worldwide.js';\n\n/**\n * An object that contains globally accessible properties and maintains a scope stack.\n * @hidden\n */\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n // This ensures a Sentry carrier exists\n getSentryCarrier(GLOBAL_OBJ);\n return GLOBAL_OBJ;\n}\n\n/** Will either get the existing sentry carrier, or create a new one. */\nfunction getSentryCarrier(carrier) {\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n\n // For now: First SDK that sets the .version property wins\n __SENTRY__.version = __SENTRY__.version || SDK_VERSION;\n\n // Intentionally populating and returning the version of \"this\" SDK instance\n // rather than what's set in .version so that \"this\" SDK always gets its carrier\n return (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n}\n\nexport { getMainCarrier, getSentryCarrier };\n//# sourceMappingURL=carrier.js.map\n","const DEFAULT_ENVIRONMENT = 'production';\n\nexport { DEFAULT_ENVIRONMENT };\n//# sourceMappingURL=constants.js.map\n","import { getAsyncContextStrategy } from './asyncContext/index.js';\nimport { getMainCarrier } from './carrier.js';\nimport { Scope } from './scope.js';\nimport { dropUndefinedKeys } from './utils-hoist/object.js';\nimport { getGlobalSingleton } from './utils-hoist/worldwide.js';\n\n/**\n * Get the currently active scope.\n */\nfunction getCurrentScope() {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getCurrentScope();\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current execution context.\n */\nfunction getIsolationScope() {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getIsolationScope();\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nfunction getGlobalScope() {\n return getGlobalSingleton('globalScope', () => new Scope());\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n */\n\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nfunction withScope(\n ...rest\n) {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [scope, callback] = rest;\n\n if (!scope) {\n return acs.withScope(callback);\n }\n\n return acs.withSetScope(scope, callback);\n }\n\n return acs.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n */\n\n/**\n * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback.\n */\nfunction withIsolationScope(\n ...rest\n\n) {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [isolationScope, callback] = rest;\n\n if (!isolationScope) {\n return acs.withIsolationScope(callback);\n }\n\n return acs.withSetIsolationScope(isolationScope, callback);\n }\n\n return acs.withIsolationScope(rest[0]);\n}\n\n/**\n * Get the currently active client.\n */\nfunction getClient() {\n return getCurrentScope().getClient();\n}\n\n/**\n * Get a trace context for the given scope.\n */\nfunction getTraceContextFromScope(scope) {\n const propagationContext = scope.getPropagationContext();\n\n // TODO(v9): Use generateSpanId() instead of spanId\n // eslint-disable-next-line deprecation/deprecation\n const { traceId, spanId, parentSpanId } = propagationContext;\n\n const traceContext = dropUndefinedKeys({\n trace_id: traceId,\n span_id: spanId,\n parent_span_id: parentSpanId,\n });\n\n return traceContext;\n}\n\nexport { getClient, getCurrentScope, getGlobalScope, getIsolationScope, getTraceContextFromScope, withIsolationScope, withScope };\n//# sourceMappingURL=currentScopes.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 { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { getCurrentScope, getIsolationScope, getClient, withIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { makeSession, updateSession, closeSession } from './session.js';\nimport { isThenable } from './utils-hoist/is.js';\nimport { logger } from './utils-hoist/logger.js';\nimport { uuid4 } from './utils-hoist/misc.js';\nimport { timestampInSeconds } from './utils-hoist/time.js';\nimport { GLOBAL_OBJ } from './utils-hoist/worldwide.js';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent.js';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nfunction captureException(exception, hint) {\n return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nfunction captureMessage(message, captureContext) {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentScope().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nfunction captureEvent(event, hint) {\n return getCurrentScope().captureEvent(event, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\nfunction setContext(name, context) {\n getIsolationScope().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n getIsolationScope().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n getIsolationScope().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n getIsolationScope().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n getIsolationScope().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n getIsolationScope().setUser(user);\n}\n\n/**\n * The last error event id of the isolation scope.\n *\n * Warning: This function really returns the last recorded error event id on the current\n * isolation scope. If you call this function after handling a certain error and another error\n * is captured in between, the last one is returned instead of the one you might expect.\n * Also, ids of events that were never sent to Sentry (for example because\n * they were dropped in `beforeSend`) could be returned.\n *\n * @returns The last event id of the isolation scope.\n */\nfunction lastEventId() {\n return getIsolationScope().lastEventId();\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction captureCheckIn(checkIn, upsertMonitorConfig) {\n const scope = getCurrentScope();\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction withMonitor(\n monitorSlug,\n callback,\n upsertMonitorConfig,\n) {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status) {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n\n return withIsolationScope(() => {\n let maybePromiseResult;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn('error');\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n Promise.resolve(maybePromiseResult).then(\n () => {\n finishCheckIn('ok');\n },\n e => {\n finishCheckIn('error');\n throw e;\n },\n );\n } else {\n finishCheckIn('ok');\n }\n\n return maybePromiseResult;\n });\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function flush(timeout) {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function close(timeout) {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nfunction isInitialized() {\n return !!getClient();\n}\n\n/** If the SDK is initialized & enabled. */\nfunction isEnabled() {\n const client = getClient();\n return !!client && client.getOptions().enabled !== false && !!client.getTransport();\n}\n\n/**\n * Add an event processor.\n * This will be added to the current isolation scope, ensuring any event that is processed in the current execution\n * context will have the processor applied.\n */\nfunction addEventProcessor(callback) {\n getIsolationScope().addEventProcessor(callback);\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nfunction startSession(context) {\n const client = getClient();\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: currentScope.getUser() || isolationScope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = isolationScope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n\n endSession();\n\n // Afterwards we set the new session on the scope\n isolationScope.setSession(session);\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession(session);\n\n return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nfunction endSession() {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session) {\n closeSession(session);\n }\n _sendSessionUpdate();\n\n // the session is over; take it off of the scope\n isolationScope.setSession();\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate() {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n const client = getClient();\n // TODO (v8): Remove currentScope and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session && client) {\n client.captureSession(session);\n }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n * Defaults to `false`.\n */\nfunction captureSession(end = false) {\n // both send the update and pull the session from the scope\n if (end) {\n endSession();\n return;\n }\n\n // only send the update\n _sendSessionUpdate();\n}\n\nexport { addEventProcessor, captureCheckIn, captureEvent, captureException, captureMessage, captureSession, close, endSession, flush, isEnabled, isInitialized, lastEventId, setContext, setExtra, setExtras, setTag, setTags, setUser, startSession, withMonitor };\n//# sourceMappingURL=exports.js.map\n","import { dropUndefinedKeys } from '../utils-hoist/object.js';\n\n/**\n * key: bucketKey\n * value: [exportKey, MetricSummary]\n */\n\nconst METRICS_SPAN_FIELD = '_sentryMetrics';\n\n/**\n * Fetches the metric summary if it exists for the passed span\n */\nfunction getMetricSummaryJsonForSpan(span) {\n const storage = (span )[METRICS_SPAN_FIELD];\n\n if (!storage) {\n return undefined;\n }\n const output = {};\n\n for (const [, [exportKey, summary]] of storage) {\n const arr = output[exportKey] || (output[exportKey] = []);\n arr.push(dropUndefinedKeys(summary));\n }\n\n return output;\n}\n\n/**\n * Updates the metric summary on a span.\n */\nfunction updateMetricSummaryOnSpan(\n span,\n metricType,\n sanitizedName,\n value,\n unit,\n tags,\n bucketKey,\n) {\n const existingStorage = (span )[METRICS_SPAN_FIELD];\n const storage =\n existingStorage ||\n ((span )[METRICS_SPAN_FIELD] = new Map());\n\n const exportKey = `${metricType}:${sanitizedName}@${unit}`;\n const bucketItem = storage.get(bucketKey);\n\n if (bucketItem) {\n const [, summary] = bucketItem;\n storage.set(bucketKey, [\n exportKey,\n {\n min: Math.min(summary.min, value),\n max: Math.max(summary.max, value),\n count: (summary.count += 1),\n sum: (summary.sum += value),\n tags: summary.tags,\n },\n ]);\n } else {\n storage.set(bucketKey, [\n exportKey,\n {\n min: value,\n max: value,\n count: 1,\n sum: value,\n tags,\n },\n ]);\n }\n}\n\nexport { getMetricSummaryJsonForSpan, updateMetricSummaryOnSpan };\n//# sourceMappingURL=metric-summary.js.map\n","import { updateSession } from './session.js';\nimport { isPlainObject } from './utils-hoist/is.js';\nimport { logger } from './utils-hoist/logger.js';\nimport { uuid4 } from './utils-hoist/misc.js';\nimport { generateTraceId, generateSpanId } from './utils-hoist/propagationContext.js';\nimport { dateTimestampInSeconds } from './utils-hoist/time.js';\nimport { merge } from './utils/merge.js';\nimport { _setSpanForScope, _getSpanForScope } from './utils/spanOnScope.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information.\n */\nclass ScopeClass {\n /** Flag if notifying is happening. */\n\n /** Callback for client to receive scope changes. */\n\n /** Callback list that will be called during event processing. */\n\n /** Array of breadcrumbs. */\n\n /** User */\n\n /** Tags */\n\n /** Extra */\n\n /** Contexts */\n\n /** Attachments */\n\n /** Propagation Context for distributed tracing */\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n\n /** Fingerprint */\n\n /** Severity */\n\n /**\n * Transaction Name\n *\n * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects.\n * It's purpose is to assign a transaction to the scope that's added to non-transaction events.\n */\n\n /** Session */\n\n /** Request Mode Session Status */\n // eslint-disable-next-line deprecation/deprecation\n\n /** The client on this scope */\n\n /** Contains the last event id of a captured event. */\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = {\n traceId: generateTraceId(),\n spanId: generateSpanId(),\n };\n }\n\n /**\n * @inheritDoc\n */\n clone() {\n const newScope = new ScopeClass();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n if (this._contexts.flags) {\n // We need to copy the `values` array so insertions on a cloned scope\n // won't affect the original array.\n newScope._contexts.flags = {\n values: [...this._contexts.flags.values],\n };\n }\n\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._requestSession = this._requestSession;\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n newScope._lastEventId = this._lastEventId;\n\n _setSpanForScope(newScope, _getSpanForScope(this));\n\n return newScope;\n }\n\n /**\n * @inheritDoc\n */\n setClient(client) {\n this._client = client;\n }\n\n /**\n * @inheritDoc\n */\n setLastEventId(lastEventId) {\n this._lastEventId = lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n getClient() {\n return this._client ;\n }\n\n /**\n * @inheritDoc\n */\n lastEventId() {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n // If null is passed we want to unset everything, but still define keys,\n // so that later down in the pipeline any existing values are cleared.\n this._user = user || {\n email: undefined,\n id: undefined,\n ip_address: undefined,\n username: undefined,\n };\n\n if (this._session) {\n updateSession(this._session, { user });\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getUser() {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n getRequestSession() {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n setRequestSession(requestSession) {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setLevel(level) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSession() {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n\n const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n const [scopeInstance, requestSession] =\n scopeToMerge instanceof Scope\n ? // eslint-disable-next-line deprecation/deprecation\n [scopeToMerge.getScopeData(), scopeToMerge.getRequestSession()]\n : isPlainObject(scopeToMerge)\n ? [captureContext , (captureContext ).requestSession]\n : [];\n\n const { tags, extra, user, contexts, level, fingerprint = [], propagationContext } = scopeInstance || {};\n\n this._tags = { ...this._tags, ...tags };\n this._extra = { ...this._extra, ...extra };\n this._contexts = { ...this._contexts, ...contexts };\n\n if (user && Object.keys(user).length) {\n this._user = user;\n }\n\n if (level) {\n this._level = level;\n }\n\n if (fingerprint.length) {\n this._fingerprint = fingerprint;\n }\n\n if (propagationContext) {\n this._propagationContext = propagationContext;\n }\n\n if (requestSession) {\n this._requestSession = requestSession;\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clear() {\n // client is not cleared here on purpose!\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._session = undefined;\n _setSpanForScope(this, undefined);\n this._attachments = [];\n this.setPropagationContext({ traceId: generateTraceId() });\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n const breadcrumbs = this._breadcrumbs;\n breadcrumbs.push(mergedBreadcrumb);\n this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs;\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getLastBreadcrumb() {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n\n /** @inheritDoc */\n getScopeData() {\n return {\n breadcrumbs: this._breadcrumbs,\n attachments: this._attachments,\n contexts: this._contexts,\n tags: this._tags,\n extra: this._extra,\n user: this._user,\n level: this._level,\n fingerprint: this._fingerprint || [],\n eventProcessors: this._eventProcessors,\n propagationContext: this._propagationContext,\n sdkProcessingMetadata: this._sdkProcessingMetadata,\n transactionName: this._transactionName,\n span: _getSpanForScope(this),\n };\n }\n\n /**\n * @inheritDoc\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = merge(this._sdkProcessingMetadata, newData, 2);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setPropagationContext(\n context,\n ) {\n this._propagationContext = {\n // eslint-disable-next-line deprecation/deprecation\n spanId: generateSpanId(),\n ...context,\n };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getPropagationContext() {\n return this._propagationContext;\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture exception!');\n return eventId;\n }\n\n const syntheticException = new Error('Sentry syntheticException');\n\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(message, level, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture message!');\n return eventId;\n }\n\n const syntheticException = new Error(message);\n\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture event!');\n return eventId;\n }\n\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n return eventId;\n }\n\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n}\n\n/**\n * Holds additional event information.\n */\nconst Scope = ScopeClass;\n\n/**\n * Holds additional event information.\n */\n\nexport { Scope };\n//# sourceMappingURL=scope.js.map\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/** The reason why an idle span finished. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason';\n\n/** The unit of a measurement, which may be stored as a TimedEvent. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit';\n\n/** The value of a measurement, which may be stored as a TimedEvent. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = 'sentry.measurement_value';\n\n/**\n * A custom span name set by users guaranteed to be taken over any automatically\n * inferred name. This attribute is removed before the span is sent.\n *\n * @internal only meant for internal SDK usage\n * @hidden\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name';\n\n/**\n * The id of the profile that this span occurred in.\n */\nconst SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id';\n\nconst SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size';\n\n/** TODO: Remove these once we update to latest semantic conventions */\nconst SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method';\nconst SEMANTIC_ATTRIBUTE_URL_FULL = 'url.full';\n\nexport { SEMANTIC_ATTRIBUTE_CACHE_HIT, SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, SEMANTIC_ATTRIBUTE_CACHE_KEY, SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_URL_FULL };\n//# sourceMappingURL=semanticAttributes.js.map\n","import './utils-hoist/version.js';\nimport './utils-hoist/debug-build.js';\nimport './utils-hoist/logger.js';\nimport { dropUndefinedKeys } from './utils-hoist/object.js';\nimport { timestampInSeconds } from './utils-hoist/time.js';\nimport { uuid4 } from './utils-hoist/misc.js';\nimport './utils-hoist/syncpromise.js';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n abnormal_mechanism: session.abnormal_mechanism,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getClient } from '../currentScopes.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils-hoist/baggage.js';\nimport { dropUndefinedKeys, addNonEnumerableProperty } from '../utils-hoist/object.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\nimport { getRootSpan, spanToJSON, spanIsSampled } from '../utils/spanUtils.js';\n\n/**\n * If you change this value, also update the terser plugin config to\n * avoid minification of the object property!\n */\nconst FROZEN_DSC_FIELD = '_frozenDsc';\n\n/**\n * Freeze the given DSC on the given span.\n */\nfunction freezeDscOnSpan(span, dsc) {\n const spanWithMaybeDsc = span ;\n addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc);\n}\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nfunction getDynamicSamplingContextFromClient(trace_id, client) {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n\n const dsc = dropUndefinedKeys({\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n public_key,\n trace_id,\n }) ;\n\n client.emit('createDsc', dsc);\n\n return dsc;\n}\n\n/**\n * Get the dynamic sampling context for the currently active scopes.\n */\nfunction getDynamicSamplingContextFromScope(client, scope) {\n const propagationContext = scope.getPropagationContext();\n return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client);\n}\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nfunction getDynamicSamplingContextFromSpan(span) {\n const client = getClient();\n if (!client) {\n return {};\n }\n\n const rootSpan = getRootSpan(span);\n\n // For core implementation, we freeze the DSC onto the span as a non-enumerable property\n const frozenDsc = (rootSpan )[FROZEN_DSC_FIELD];\n if (frozenDsc) {\n return frozenDsc;\n }\n\n // For OpenTelemetry, we freeze the DSC on the trace state\n const traceState = rootSpan.spanContext().traceState;\n const traceStateDsc = traceState && traceState.get('sentry.dsc');\n\n // If the span has a DSC, we want it to take precedence\n const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc);\n\n if (dscOnTraceState) {\n return dscOnTraceState;\n }\n\n // Else, we generate it from the span\n const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client);\n const jsonSpan = spanToJSON(rootSpan);\n const attributes = jsonSpan.data || {};\n const maybeSampleRate = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE];\n\n if (maybeSampleRate != null) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n // after JSON conversion, txn.name becomes jsonSpan.description\n const name = jsonSpan.description;\n if (source !== 'url' && name) {\n dsc.transaction = name;\n }\n\n // How can we even land here with hasTracingEnabled() returning false?\n // Otel creates a Non-recording span in Tracing Without Performance mode when handling incoming requests\n // So we end up with an active span that is not sampled (neither positively nor negatively)\n if (hasTracingEnabled()) {\n dsc.sampled = String(spanIsSampled(rootSpan));\n }\n\n client.emit('createDsc', dsc, rootSpan);\n\n return dsc;\n}\n\n/**\n * Convert a Span to a baggage header.\n */\nfunction spanToBaggageHeader(span) {\n const dsc = getDynamicSamplingContextFromSpan(span);\n return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n\nexport { freezeDscOnSpan, getDynamicSamplingContextFromClient, getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan, spanToBaggageHeader };\n//# sourceMappingURL=dynamicSamplingContext.js.map\n","const SPAN_STATUS_UNSET = 0;\nconst SPAN_STATUS_OK = 1;\nconst SPAN_STATUS_ERROR = 2;\n\n/**\n * Converts a HTTP status code into a sentry status with a message.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\n// https://develop.sentry.dev/sdk/event-payloads/span/\nfunction getSpanStatusFromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return { code: SPAN_STATUS_OK };\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return { code: SPAN_STATUS_ERROR, message: 'unauthenticated' };\n case 403:\n return { code: SPAN_STATUS_ERROR, message: 'permission_denied' };\n case 404:\n return { code: SPAN_STATUS_ERROR, message: 'not_found' };\n case 409:\n return { code: SPAN_STATUS_ERROR, message: 'already_exists' };\n case 413:\n return { code: SPAN_STATUS_ERROR, message: 'failed_precondition' };\n case 429:\n return { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' };\n case 499:\n return { code: SPAN_STATUS_ERROR, message: 'cancelled' };\n default:\n return { code: SPAN_STATUS_ERROR, message: 'invalid_argument' };\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return { code: SPAN_STATUS_ERROR, message: 'unimplemented' };\n case 503:\n return { code: SPAN_STATUS_ERROR, message: 'unavailable' };\n case 504:\n return { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' };\n default:\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n }\n }\n\n return { code: SPAN_STATUS_ERROR, message: 'unknown_error' };\n}\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nfunction setHttpStatus(span, httpStatus) {\n span.setAttribute('http.response.status_code', httpStatus);\n\n const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n if (spanStatus.message !== 'unknown_error') {\n span.setStatus(spanStatus);\n }\n}\n\nexport { SPAN_STATUS_ERROR, SPAN_STATUS_OK, SPAN_STATUS_UNSET, getSpanStatusFromHttpCode, setHttpStatus };\n//# sourceMappingURL=spanstatus.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { isString } from './is.js';\nimport { logger } from './logger.js';\n\n/**\n * @deprecated Use a `\"baggage\"` string directly\n */\nconst BAGGAGE_HEADER_NAME = 'baggage';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nfunction baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader,\n) {\n const baggageObject = parseBaggageHeader(baggageHeader);\n\n if (!baggageObject) {\n return undefined;\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext ;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext,\n) {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Take a baggage header and parse it into an object.\n */\nfunction parseBaggageHeader(\n baggageHeader,\n) {\n if (!baggageHeader || (!isString(baggageHeader) && !Array.isArray(baggageHeader))) {\n return undefined;\n }\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n return baggageHeader.reduce((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n Object.entries(currBaggageObject).forEach(([key, value]) => {\n acc[key] = value;\n });\n return acc;\n }, {});\n }\n\n return baggageHeaderToObject(baggageHeader);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader) {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce((acc, [key, value]) => {\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object) {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n DEBUG_BUILD &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader, parseBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n","import { isString } from './is.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(\n elem,\n options = {},\n) {\n if (!elem) {\n return '';\n }\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n const elem = el\n\n;\n\n const out = [];\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n // @ts-expect-error WINDOW has HTMLElement\n if (WINDOW.HTMLElement) {\n // If using the component name annotation plugin, this value may be available on the DOM node\n if (elem instanceof HTMLElement && elem.dataset) {\n if (elem.dataset['sentryComponent']) {\n return elem.dataset['sentryComponent'];\n }\n if (elem.dataset['sentryElement']) {\n return elem.dataset['sentryElement'];\n }\n }\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n const className = elem.className;\n if (className && isString(className)) {\n const classes = className.split(/\\s+/);\n for (const c of classes) {\n out.push(`.${c}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (const k of allowedAttrs) {\n const attr = elem.getAttribute(k);\n if (attr) {\n out.push(`[${k}=\"${attr}\"]`);\n }\n }\n\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existence of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n *\n * @deprecated This method is deprecated and will be removed in the next major version.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getDomElement(selector) {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) ;\n }\n return null;\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking\n * precedence. This attribute is added at build-time by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nfunction getComponentName(elem) {\n // @ts-expect-error WINDOW has HTMLElement\n if (!WINDOW.HTMLElement) {\n return null;\n }\n\n let currentElem = elem ;\n const MAX_TRAVERSE_HEIGHT = 5;\n for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n if (!currentElem) {\n return null;\n }\n\n if (currentElem instanceof HTMLElement) {\n if (currentElem.dataset['sentryComponent']) {\n return currentElem.dataset['sentryComponent'];\n }\n if (currentElem.dataset['sentryElement']) {\n return currentElem.dataset['sentryElement'];\n }\n }\n\n currentElem = currentElem.parentNode;\n }\n\n return null;\n}\n\nexport { getComponentName, getDomElement, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.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","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object WebAssembly.Exception]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isParameterizedString(wat) {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isVueViewModel(wat) {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n return !!(typeof wat === 'object' && wat !== null && ((wat ).__isVue || (wat )._isVue));\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable, isVueViewModel };\n//# sourceMappingURL=is.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { getGlobalSingleton, GLOBAL_OBJ } from './worldwide.js';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nconst CONSOLE_LEVELS = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] ;\n\n/** This may be mutated by the console instrumentation. */\nconst originalConsoleMethods\n\n = {};\n\n/** JSDoc */\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console ;\n const wrappedFuncs = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) ;\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level] ;\n wrappedFuncs[level] = console[level] ;\n console[level] = originalConsoleMethod;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] ;\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n const logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n isEnabled: () => enabled,\n };\n\n if (DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\n/**\n * This is a logger singleton which either logs things or no-ops if logging is not enabled.\n * The logger is a singleton on the carrier, to ensure that a consistent logger is used throughout the SDK.\n */\nconst logger = getGlobalSingleton('logger', makeLogger);\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger, originalConsoleMethods };\n//# sourceMappingURL=logger.js.map\n","import { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n const gbl = GLOBAL_OBJ ;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n let getRandomByte = () => Math.random() * 16;\n try {\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n if (crypto && crypto.getRandomValues) {\n getRandomByte = () => {\n // crypto.getRandomValues might return undefined instead of the typed array\n // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n // However, `typedArray` is still filled in-place.\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n const typedArray = new Uint8Array(1);\n crypto.getRandomValues(typedArray);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return typedArray[0];\n };\n }\n } catch (_) {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\nfunction _parseInt(input) {\n return parseInt(input || '', 10);\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = _parseInt(match[1]);\n const minor = _parseInt(match[2]);\n const patch = _parseInt(match[3]);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n // We guard here to ensure this is not larger than the existing number of lines\n const lineIndex = Math.min(maxLines - 1, sourceLine);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n frame.context_line = snipLine(lines[lineIndex], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n if (isAlreadyCaptured(exception)) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\nfunction isAlreadyCaptured(exception) {\n try {\n return (exception ).__sentry_captured__;\n } catch (e) {} // eslint-disable-line no-empty\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n *\n * @deprecated This function has been deprecated and will not be replaced.\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { isVueViewModel, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normalized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalize(input, depth = 100, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n // eslint-disable-next-line deprecation/deprecation\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n ['boolean', 'string'].includes(typeof value) ||\n (typeof value === 'number' && Number.isFinite(value))\n ) {\n return value ;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value )['__sentry_override_normalization_depth__'] === 'number'\n ? ((value )['__sentry_override_normalization_depth__'] )\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value );\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n if (isVueViewModel(value)) {\n return '[VueViewModel]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && !Number.isFinite(value)) {\n return `[${value}]`;\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value) {\n const prototype = Object.getPrototypeOf(value);\n\n return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nfunction normalizeUrlToBase(url, basePath) {\n const escapedBase = basePath\n // Backslash to forward\n .replace(/\\\\/g, '/')\n // Escape RegExp special characters\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n let newUrl = url;\n try {\n newUrl = decodeURI(url);\n } catch (_Oo) {\n // Sometime this breaks\n }\n return (\n newUrl\n .replace(/\\\\/g, '/')\n .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n );\n}\n\nexport { normalize, normalizeToSize, normalizeUrlToBase };\n//# sourceMappingURL=normalize.js.map\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Helper to decycle json objects\n *\n * @deprecated This function is deprecated and will be removed in the next major version.\n */\n// TODO(v9): Move this function into normalize() directly\nfunction memoBuilder() {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\nexport { memoBuilder };\n//# sourceMappingURL=memo.js.map\n","import { htmlTreeAsString } from './browser.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { logger } from './logger.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] ;\n const wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n markFunctionWrapped(wrapped, original);\n }\n\n try {\n source[name] = wrapped;\n } catch (e) {\n DEBUG_BUILD && logger.log(`Failed to replace method \"${name}\" in object`, source);\n }\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n } catch (o_O) {\n DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n *\n * @deprecated This function is deprecated and will be removed in the next major version of the SDK.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction urlEncode(object) {\n return Object.entries(object)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argument itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(value)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n const firstKey = keys[0];\n\n if (!firstKey) {\n return '[object has no keys]';\n }\n\n if (firstKey.length >= maxLength) {\n return truncate(firstKey, maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPojo(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.getOwnPropertyNames(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\nfunction isPojo(input) {\n if (!isPlainObject(input)) {\n return false;\n }\n\n try {\n const name = (Object.getPrototypeOf(input) ).constructor.name;\n return !name || name === 'Object';\n } catch (e2) {\n return true;\n }\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n // this will catch both undefined and null\n case wat == undefined:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","import { uuid4 } from './misc.js';\n\n/**\n * Returns a new minimal propagation context.\n *\n * @deprecated Use `generateTraceId` and `generateSpanId` instead.\n */\nfunction generatePropagationContext() {\n return {\n traceId: generateTraceId(),\n spanId: generateSpanId(),\n };\n}\n\n/**\n * Generate a random, valid trace ID.\n */\nfunction generateTraceId() {\n return uuid4();\n}\n\n/**\n * Generate a random, valid span ID.\n */\nfunction generateSpanId() {\n return uuid4().substring(16);\n}\n\nexport { generatePropagationContext, generateSpanId, generateTraceId };\n//# sourceMappingURL=propagationContext.js.map\n","const STACKTRACE_FRAME_LIMIT = 50;\nconst UNKNOWN_FUNCTION = '?';\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirstLines = 0, framesToPop = 0) => {\n const frames = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirstLines; i < lines.length; i++) {\n const line = lines[i] ;\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames.slice(framesToPop));\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (/sentryWrapped/.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION,\n }));\n}\n\nfunction getLastStackFrame(arr) {\n return arr[arr.length - 1] || {};\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Get's stack frames from an event without needing to check for undefined properties.\n */\nfunction getFramesFromEvent(event) {\n const exception = event.exception;\n\n if (exception) {\n const frames = [];\n try {\n // @ts-expect-error Object could be undefined\n exception.values.forEach(value => {\n // @ts-expect-error Value could be undefined\n if (value.stacktrace.frames) {\n // @ts-expect-error Value could be undefined\n frames.push(...value.stacktrace.frames);\n }\n });\n return frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n\nexport { UNKNOWN_FUNCTION, createStackParser, getFramesFromEvent, getFunctionName, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { isVueViewModel, isString, isRegExp } from './is.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/8981\n if (isVueViewModel(value)) {\n output.push('[VueViewModel]');\n } else {\n output.push(String(value));\n }\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nfunction isMatchingPattern(\n value,\n pattern,\n requireExactStringMatch = false,\n) {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nfunction stringMatchesSomePattern(\n testString,\n patterns = [],\n requireExactStringMatch = false,\n) {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate };\n//# sourceMappingURL=string.js.map\n","import { isThenable } from './is.js';\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n /** Pending */\n const PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n /** Resolved / OK */\n const RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n /** Rejected / Error */\n const REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n\n constructor(\n executor,\n ) {SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);\n this._state = States.PENDING;\n this._handlers = [];\n\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n then(\n onfulfilled,\n onrejected,\n ) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result );\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n catch(\n onrejected,\n ) {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val );\n });\n });\n }\n\n /** JSDoc */\n __init() {this._resolve = (value) => {\n this._setResult(States.RESOLVED, value);\n };}\n\n /** JSDoc */\n __init2() {this._reject = (reason) => {\n this._setResult(States.REJECTED, reason);\n };}\n\n /** JSDoc */\n __init3() {this._setResult = (state, value) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value ).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };}\n\n /** JSDoc */\n __init4() {this._executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n handler[1](this._value );\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };}\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","import { GLOBAL_OBJ } from './worldwide.js';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n *\n * TODO(v8): Return type should be rounded.\n */\nfunction dateTimestampInSeconds() {\n return Date.now() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc() {\n const { performance } = GLOBAL_OBJ ;\n if (!performance || !performance.now) {\n return dateTimestampInSeconds;\n }\n\n // Some browser and environments don't have a timeOrigin, so we fallback to\n // using Date.now() to compute the starting time.\n const approxStartingTimeOrigin = Date.now() - performance.now();\n const timeOrigin = performance.timeOrigin == undefined ? approxStartingTimeOrigin : performance.timeOrigin;\n\n // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n //\n // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n // correct for this.\n // See: https://github.com/getsentry/sentry-javascript/issues/2590\n // See: https://github.com/mdn/content/issues/4713\n // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n return () => {\n return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n };\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nconst timestampInSeconds = createUnixTimestampInSecondsFunc();\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n *\n * @deprecated This variable will be removed in the next major version.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nconst browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = GLOBAL_OBJ ;\n if (!performance || !performance.now) {\n // eslint-disable-next-line deprecation/deprecation\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n // eslint-disable-next-line deprecation/deprecation\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n // eslint-disable-next-line deprecation/deprecation\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n // eslint-disable-next-line deprecation/deprecation\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds };\n//# sourceMappingURL=time.js.map\n","import { baggageHeaderToDynamicSamplingContext } from './baggage.js';\nimport { generateTraceId, generateSpanId } from './propagationContext.js';\n\n// eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- RegExp is used for readability here\nconst TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create a propagation context from incoming headers or\n * creates a minimal new one if the headers are undefined.\n */\nfunction propagationContextFromHeaders(\n sentryTrace,\n baggage,\n) {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n if (!traceparentData || !traceparentData.traceId) {\n return { traceId: generateTraceId(), spanId: generateSpanId() };\n }\n\n const { traceId, parentSpanId, parentSampled } = traceparentData;\n\n const virtualSpanId = generateSpanId();\n\n return {\n traceId,\n parentSpanId,\n spanId: virtualSpanId,\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n };\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nfunction generateSentryTraceHeader(\n traceId = generateTraceId(),\n spanId = generateSpanId(),\n sampled,\n) {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, propagationContextFromHeaders };\n//# sourceMappingURL=tracing.js.map\n","// This is a magic string replaced by rollup\n\nconst SDK_VERSION = \"8.48.0\" ;\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","import { SDK_VERSION } from './version.js';\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ = globalThis ;\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__[]` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n const gbl = (obj || GLOBAL_OBJ) ;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const versionedCarrier = (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n return versionedCarrier[name] || (versionedCarrier[name] = creator());\n}\n\nexport { GLOBAL_OBJ, getGlobalSingleton };\n//# sourceMappingURL=worldwide.js.map\n","import { getClient } from '../currentScopes.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getClient();\n const options = maybeOptions || (client && client.getOptions());\n // eslint-disable-next-line deprecation/deprecation\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\nexport { hasTracingEnabled };\n//# sourceMappingURL=hasTracingEnabled.js.map\n","/**\n * Shallow merge two objects.\n * Does not mutate the passed in objects.\n * Undefined/empty values in the merge object will overwrite existing values.\n *\n * By default, this merges 2 levels deep.\n */\nfunction merge(initialObj, mergeObj, levels = 2) {\n // If the merge value is not an object, or we have no merge levels left,\n // we just set the value to the merge value\n if (!mergeObj || typeof mergeObj !== 'object' || levels <= 0) {\n return mergeObj;\n }\n\n // If the merge object is an empty object, and the initial object is not undefined, we return the initial object\n if (initialObj && mergeObj && Object.keys(mergeObj).length === 0) {\n return initialObj;\n }\n\n // Clone object\n const output = { ...initialObj };\n\n // Merge values into output, resursively\n for (const key in mergeObj) {\n if (Object.prototype.hasOwnProperty.call(mergeObj, key)) {\n output[key] = merge(output[key], mergeObj[key], levels - 1);\n }\n }\n\n return output;\n}\n\nexport { merge };\n//# sourceMappingURL=merge.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { isThenable } from './utils-hoist/is.js';\nimport { logger } from './utils-hoist/logger.js';\nimport { SyncPromise } from './utils-hoist/syncpromise.js';\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nfunction notifyEventProcessors(\n processors,\n event,\n hint,\n index = 0,\n) {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) ;\n\n DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n}\n\nexport { notifyEventProcessors };\n//# sourceMappingURL=eventProcessors.js.map\n","import { GLOBAL_OBJ } from './worldwide.js';\n\nlet parsedStackResults;\nlet lastKeysCount;\nlet cachedFilenameDebugIds;\n\n/**\n * Returns a map of filenames to debug identifiers.\n */\nfunction getFilenameToDebugIdMap(stackParser) {\n const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n if (!debugIdMap) {\n return {};\n }\n\n const debugIdKeys = Object.keys(debugIdMap);\n\n // If the count of registered globals hasn't changed since the last call, we\n // can just return the cached result.\n if (cachedFilenameDebugIds && debugIdKeys.length === lastKeysCount) {\n return cachedFilenameDebugIds;\n }\n\n lastKeysCount = debugIdKeys.length;\n\n // Build a map of filename -> debug_id.\n cachedFilenameDebugIds = debugIdKeys.reduce((acc, stackKey) => {\n if (!parsedStackResults) {\n parsedStackResults = {};\n }\n\n const result = parsedStackResults[stackKey];\n\n if (result) {\n acc[result[0]] = result[1];\n } else {\n const parsedStack = stackParser(stackKey);\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n const filename = stackFrame && stackFrame.filename;\n const debugId = debugIdMap[stackKey];\n\n if (filename && debugId) {\n acc[filename] = debugId;\n parsedStackResults[stackKey] = [filename, debugId];\n break;\n }\n }\n }\n\n return acc;\n }, {});\n\n return cachedFilenameDebugIds;\n}\n\n/**\n * Returns a list of debug images for the given resources.\n */\nfunction getDebugImagesForResources(\n stackParser,\n resource_paths,\n) {\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n if (!filenameDebugIdMap) {\n return [];\n }\n\n const images = [];\n for (const path of resource_paths) {\n if (path && filenameDebugIdMap[path]) {\n images.push({\n type: 'sourcemap',\n code_file: path,\n debug_id: filenameDebugIdMap[path] ,\n });\n }\n }\n\n return images;\n}\n\nexport { getDebugImagesForResources, getFilenameToDebugIdMap };\n//# sourceMappingURL=debug-ids.js.map\n","import { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext.js';\nimport { dropUndefinedKeys } from '../utils-hoist/object.js';\nimport { merge } from './merge.js';\nimport { spanToTraceContext, getRootSpan, spanToJSON } from './spanUtils.js';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nfunction applyScopeDataToEvent(event, data) {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n // Apply general data\n applyDataToEvent(event, data);\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (span) {\n applySpanToEvent(event, span);\n }\n\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nfunction mergeScopeData(data, mergeData) {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n transactionName,\n span,\n } = mergeData;\n\n mergeAndOverwriteScopeData(data, 'extra', extra);\n mergeAndOverwriteScopeData(data, 'tags', tags);\n mergeAndOverwriteScopeData(data, 'user', user);\n mergeAndOverwriteScopeData(data, 'contexts', contexts);\n\n data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2);\n\n if (level) {\n data.level = level;\n }\n\n if (transactionName) {\n data.transactionName = transactionName;\n }\n\n if (span) {\n data.span = span;\n }\n\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nfunction mergeAndOverwriteScopeData\n\n(data, prop, mergeVal) {\n data[prop] = merge(data[prop], mergeVal, 1);\n}\n\nfunction applyDataToEvent(event, data) {\n const { extra, tags, user, contexts, level, transactionName } = data;\n\n const cleanedExtra = dropUndefinedKeys(extra);\n if (cleanedExtra && Object.keys(cleanedExtra).length) {\n event.extra = { ...cleanedExtra, ...event.extra };\n }\n\n const cleanedTags = dropUndefinedKeys(tags);\n if (cleanedTags && Object.keys(cleanedTags).length) {\n event.tags = { ...cleanedTags, ...event.tags };\n }\n\n const cleanedUser = dropUndefinedKeys(user);\n if (cleanedUser && Object.keys(cleanedUser).length) {\n event.user = { ...cleanedUser, ...event.user };\n }\n\n const cleanedContexts = dropUndefinedKeys(contexts);\n if (cleanedContexts && Object.keys(cleanedContexts).length) {\n event.contexts = { ...cleanedContexts, ...event.contexts };\n }\n\n if (level) {\n event.level = level;\n }\n\n // transaction events get their `transaction` from the root span name\n if (transactionName && event.type !== 'transaction') {\n event.transaction = transactionName;\n }\n}\n\nfunction applyBreadcrumbsToEvent(event, breadcrumbs) {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event, sdkProcessingMetadata) {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event, span) {\n event.contexts = {\n trace: spanToTraceContext(span),\n ...event.contexts,\n };\n\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata,\n };\n\n const rootSpan = getRootSpan(span);\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName && !event.transaction && event.type === 'transaction') {\n event.transaction = transactionName;\n }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event, fingerprint) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n\nexport { applyScopeDataToEvent, mergeAndOverwriteScopeData, mergeScopeData };\n//# sourceMappingURL=applyScopeDataToEvent.js.map\n","import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getGlobalScope } from '../currentScopes.js';\nimport { notifyEventProcessors } from '../eventProcessors.js';\nimport { Scope } from '../scope.js';\nimport { getFilenameToDebugIdMap } from '../utils-hoist/debug-ids.js';\nimport { uuid4, addExceptionMechanism } from '../utils-hoist/misc.js';\nimport { normalize } from '../utils-hoist/normalize.js';\nimport { truncate } from '../utils-hoist/string.js';\nimport { dateTimestampInSeconds } from '../utils-hoist/time.js';\nimport { mergeScopeData, applyScopeDataToEvent } from './applyScopeDataToEvent.js';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nfunction prepareEvent(\n options,\n event,\n hint,\n scope,\n client,\n isolationScope,\n) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options;\n const prepared = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n if (client) {\n client.emit('applyFrameMetadata', event);\n }\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n const finalScope = getFinalScope(scope, hint.captureContext);\n\n if (hint.mechanism) {\n addExceptionMechanism(prepared, hint.mechanism);\n }\n\n const clientEventProcessors = client ? client.getEventProcessors() : [];\n\n // This should be the last thing called, since we want that\n // {@link Scope.addEventProcessor} gets the finished prepared event.\n // Merge scope data together\n const data = getGlobalScope().getScopeData();\n\n if (isolationScope) {\n const isolationData = isolationScope.getScopeData();\n mergeScopeData(data, isolationData);\n }\n\n if (finalScope) {\n const finalScopeData = finalScope.getScopeData();\n mergeScopeData(data, finalScopeData);\n }\n\n const attachments = [...(hint.attachments || []), ...data.attachments];\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n applyScopeDataToEvent(prepared, data);\n\n const eventProcessors = [\n ...clientEventProcessors,\n // Run scope event processors _after_ all other processors\n ...data.eventProcessors,\n ];\n\n const result = notifyEventProcessors(eventProcessors, prepared, hint);\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n *\n * Only exported for tests.\n *\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event, options) {\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n // empty strings do not make sense for environment, release, and dist\n // so we handle them the same as if they were not provided\n event.environment = event.environment || environment || DEFAULT_ENVIRONMENT;\n\n if (!event.release && release) {\n event.release = release;\n }\n\n if (!event.dist && dist) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n}\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nfunction applyDebugIds(event, stackParser) {\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (filenameDebugIdMap && frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nfunction applyDebugMeta(event) {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap = {};\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id,\n });\n });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event, integrationNames) {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n\n const normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n return {\n ...span,\n ...(span.data && {\n data: normalize(span.data, depth, maxBreadth),\n }),\n };\n });\n }\n\n // event.contexts.flags (FeatureFlagContext) stores context for our feature\n // flag integrations. It has a greater nesting depth than our other typed\n // Contexts, so we re-normalize with a fixed depth of 3 here. We do not want\n // to skip this in case of conflicting, user-provided context.\n if (event.contexts && event.contexts.flags && normalized.contexts) {\n normalized.contexts.flags = normalize(event.contexts.flags, 3, maxBreadth);\n }\n\n return normalized;\n}\n\nfunction getFinalScope(\n scope,\n captureContext,\n) {\n if (!captureContext) {\n return scope;\n }\n\n const finalScope = scope ? scope.clone() : new Scope();\n finalScope.update(captureContext);\n return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nfunction parseEventHintOrCaptureContext(\n hint,\n) {\n if (!hint) {\n return undefined;\n }\n\n // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n if (hintIsScopeOrFunction(hint)) {\n return { captureContext: hint };\n }\n\n if (hintIsScopeContext(hint)) {\n return {\n captureContext: hint,\n };\n }\n\n return hint;\n}\n\nfunction hintIsScopeOrFunction(\n hint,\n) {\n return hint instanceof Scope || typeof hint === 'function';\n}\n\nconst captureContextKeys = [\n 'user',\n 'level',\n 'extra',\n 'contexts',\n 'tags',\n 'fingerprint',\n 'requestSession',\n 'propagationContext',\n] ;\n\nfunction hintIsScopeContext(hint) {\n return Object.keys(hint).some(key => captureContextKeys.includes(key ));\n}\n\nexport { applyClientOptions, applyDebugIds, applyDebugMeta, parseEventHintOrCaptureContext, prepareEvent };\n//# sourceMappingURL=prepareEvent.js.map\n","import { addNonEnumerableProperty } from '../utils-hoist/object.js';\n\nconst SCOPE_SPAN_FIELD = '_sentrySpan';\n\n/**\n * Set the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nfunction _setSpanForScope(scope, span) {\n if (span) {\n addNonEnumerableProperty(scope , SCOPE_SPAN_FIELD, span);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (scope )[SCOPE_SPAN_FIELD];\n }\n}\n\n/**\n * Get the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nfunction _getSpanForScope(scope) {\n return scope[SCOPE_SPAN_FIELD];\n}\n\nexport { _getSpanForScope, _setSpanForScope };\n//# sourceMappingURL=spanOnScope.js.map\n","import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getCurrentScope } from '../currentScopes.js';\nimport { getMetricSummaryJsonForSpan, updateMetricSummaryOnSpan } from '../metrics/metric-summary.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME } from '../semanticAttributes.js';\nimport { SPAN_STATUS_UNSET, SPAN_STATUS_OK } from '../tracing/spanstatus.js';\nimport { consoleSandbox } from '../utils-hoist/logger.js';\nimport { dropUndefinedKeys, addNonEnumerableProperty } from '../utils-hoist/object.js';\nimport { generateSpanId } from '../utils-hoist/propagationContext.js';\nimport { timestampInSeconds } from '../utils-hoist/time.js';\nimport { generateSentryTraceHeader } from '../utils-hoist/tracing.js';\nimport { _getSpanForScope } from './spanOnScope.js';\n\n// These are aligned with OpenTelemetry trace flags\nconst TRACE_FLAG_NONE = 0x0;\nconst TRACE_FLAG_SAMPLED = 0x1;\n\n// todo(v9): Remove this once we've stopped dropping spans via `beforeSendSpan`\nlet hasShownSpanDropWarning = false;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n * By default, this will only include trace_id, span_id & parent_span_id.\n * If `includeAllData` is true, it will also include data, op, status & origin.\n */\nfunction spanToTransactionTraceContext(span) {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, origin } = spanToJSON(span);\n\n return dropUndefinedKeys({\n parent_span_id,\n span_id,\n trace_id,\n data,\n op,\n status,\n origin,\n });\n}\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in a non-transaction event.\n */\nfunction spanToTraceContext(span) {\n const { spanId, traceId: trace_id, isRemote } = span.spanContext();\n\n // If the span is remote, we use a random/virtual span as span_id to the trace context,\n // and the remote span as parent_span_id\n const parent_span_id = isRemote ? spanId : spanToJSON(span).parent_span_id;\n const span_id = isRemote ? generateSpanId() : spanId;\n\n return dropUndefinedKeys({\n parent_span_id,\n span_id,\n trace_id,\n });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nfunction spanToTraceHeader(span) {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input into a timestamp in seconds.\n */\nfunction spanTimeInputToSeconds(input) {\n if (typeof input === 'number') {\n return ensureTimestampInSeconds(input);\n }\n\n if (Array.isArray(input)) {\n // See {@link HrTime} for the array-based time format\n return input[0] + input[1] / 1e9;\n }\n\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n\n return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp) {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n */\n// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n// And `spanToJSON` needs the Span class from `span.ts` to check here.\nfunction spanToJSON(span) {\n if (spanIsSentrySpan(span)) {\n return span.getSpanJSON();\n }\n\n try {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n\n // Handle a span from @opentelemetry/sdk-base-trace's `Span` class\n if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n const { attributes, startTime, name, endTime, parentSpanId, status } = span;\n\n return dropUndefinedKeys({\n span_id,\n trace_id,\n data: attributes,\n description: name,\n parent_span_id: parentSpanId,\n start_timestamp: spanTimeInputToSeconds(startTime),\n // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n timestamp: spanTimeInputToSeconds(endTime) || undefined,\n status: getStatusMessage(status),\n op: attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n origin: attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ,\n _metrics_summary: getMetricSummaryJsonForSpan(span),\n });\n }\n\n // Finally, at least we have `spanContext()`....\n return {\n span_id,\n trace_id,\n };\n } catch (e) {\n return {};\n }\n}\n\nfunction spanIsOpenTelemetrySdkTraceBaseSpan(span) {\n const castSpan = span ;\n return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\n\n/** Exported only for tests. */\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSentrySpan(span) {\n return typeof (span ).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nfunction spanIsSampled(span) {\n // We align our trace flags with the ones OpenTelemetry use\n // So we also check for sampled the same way they do.\n const { traceFlags } = span.spanContext();\n return traceFlags === TRACE_FLAG_SAMPLED;\n}\n\n/** Get the status message to use for a JSON representation of a span. */\nfunction getStatusMessage(status) {\n if (!status || status.code === SPAN_STATUS_UNSET) {\n return undefined;\n }\n\n if (status.code === SPAN_STATUS_OK) {\n return 'ok';\n }\n\n return status.message || 'unknown_error';\n}\n\nconst CHILD_SPANS_FIELD = '_sentryChildSpans';\nconst ROOT_SPAN_FIELD = '_sentryRootSpan';\n\n/**\n * Adds an opaque child span reference to a span.\n */\nfunction addChildSpanToSpan(span, childSpan) {\n // We store the root span reference on the child span\n // We need this for `getRootSpan()` to work\n const rootSpan = span[ROOT_SPAN_FIELD] || span;\n addNonEnumerableProperty(childSpan , ROOT_SPAN_FIELD, rootSpan);\n\n // We store a list of child spans on the parent span\n // We need this for `getSpanDescendants()` to work\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].add(childSpan);\n } else {\n addNonEnumerableProperty(span, CHILD_SPANS_FIELD, new Set([childSpan]));\n }\n}\n\n/** This is only used internally by Idle Spans. */\nfunction removeChildSpanFromSpan(span, childSpan) {\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].delete(childSpan);\n }\n}\n\n/**\n * Returns an array of the given span and all of its descendants.\n */\nfunction getSpanDescendants(span) {\n const resultSet = new Set();\n\n function addSpanChildren(span) {\n // This exit condition is required to not infinitely loop in case of a circular dependency.\n if (resultSet.has(span)) {\n return;\n // We want to ignore unsampled spans (e.g. non recording spans)\n } else if (spanIsSampled(span)) {\n resultSet.add(span);\n const childSpans = span[CHILD_SPANS_FIELD] ? Array.from(span[CHILD_SPANS_FIELD]) : [];\n for (const childSpan of childSpans) {\n addSpanChildren(childSpan);\n }\n }\n }\n\n addSpanChildren(span);\n\n return Array.from(resultSet);\n}\n\n/**\n * Returns the root span of a given span.\n */\nfunction getRootSpan(span) {\n return span[ROOT_SPAN_FIELD] || span;\n}\n\n/**\n * Returns the currently active span.\n */\nfunction getActiveSpan() {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.getActiveSpan) {\n return acs.getActiveSpan();\n }\n\n return _getSpanForScope(getCurrentScope());\n}\n\n/**\n * Updates the metric summary on the currently active span\n */\nfunction updateMetricSummaryOnActiveSpan(\n metricType,\n sanitizedName,\n value,\n unit,\n tags,\n bucketKey,\n) {\n const span = getActiveSpan();\n if (span) {\n updateMetricSummaryOnSpan(span, metricType, sanitizedName, value, unit, tags, bucketKey);\n }\n}\n\n/**\n * Logs a warning once if `beforeSendSpan` is used to drop spans.\n *\n * todo(v9): Remove this once we've stopped dropping spans via `beforeSendSpan`.\n */\nfunction showSpanDropWarning() {\n if (!hasShownSpanDropWarning) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Sentry] Deprecation warning: Returning null from `beforeSendSpan` will be disallowed from SDK version 9.0.0 onwards. The callback will only support mutating spans. To drop certain spans, configure the respective integrations directly.',\n );\n });\n hasShownSpanDropWarning = true;\n }\n}\n\n/**\n * Updates the name of the given span and ensures that the span name is not\n * overwritten by the Sentry SDK.\n *\n * Use this function instead of `span.updateName()` if you want to make sure that\n * your name is kept. For some spans, for example root `http.server` spans the\n * Sentry SDK would otherwise overwrite the span name with a high-quality name\n * it infers when the span ends.\n *\n * Use this function in server code or when your span is started on the server\n * and on the client (browser). If you only update a span name on the client,\n * you can also use `span.updateName()` the SDK does not overwrite the name.\n *\n * @param span - The span to update the name of.\n * @param name - The name to set on the span.\n */\nfunction updateSpanName(span, name) {\n span.updateName(name);\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name,\n });\n}\n\nexport { TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, addChildSpanToSpan, getActiveSpan, getRootSpan, getSpanDescendants, getStatusMessage, removeChildSpanFromSpan, showSpanDropWarning, spanIsSampled, spanTimeInputToSeconds, spanToJSON, spanToTraceContext, spanToTraceHeader, spanToTransactionTraceContext, updateMetricSummaryOnActiveSpan, updateSpanName };\n//# sourceMappingURL=spanUtils.js.map\n"],"names":["AsyncContextStack","constructor","scope","isolationScope","assignedScope","assignedIsolationScope","this","_stack","_isolationScope","withScope","callback","_pushScope","maybePromiseResult","e","_popScope","is","then","res","getClient","getStackTop","client","getScope","getIsolationScope","length","clone","push","pop","getAsyncContextStack","registry","sentry","stack","withSetScope","withIsolationScope","getAsyncContextStrategy","carrier","acs","withSetIsolationScope","getCurrentScope","getMainCarrier","getSentryCarrier","__SENTRY__","version","DEFAULT_ENVIRONMENT","getGlobalScope","rest","getTraceContextFromScope","propagationContext","getPropagationContext","traceId","spanId","parentSpanId","trace_id","span_id","parent_span_id","DEBUG_BUILD","captureException","exception","hint","captureMessage","message","captureContext","level","undefined","context","captureEvent","event","setContext","name","setExtra","key","extra","setUser","user","isEnabled","getOptions","enabled","getTransport","addEventProcessor","startSession","currentScope","release","environment","userAgent","navigator","session","getUser","currentSession","getSession","status","endSession","setSession","_sendSessionUpdate","captureSession","end","METRICS_SPAN_FIELD","getMetricSummaryJsonForSpan","span","storage","output","exportKey","summary","ScopeClass","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","_propagationContext","newScope","flags","values","_level","_session","_transactionName","_fingerprint","_requestSession","_client","_lastEventId","setClient","setLastEventId","lastEventId","addScopeListener","email","id","ip_address","username","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","setTags","tags","setTag","value","setExtras","extras","setFingerprint","fingerprint","setLevel","setTransactionName","update","scopeToMerge","scopeInstance","Scope","getScopeData","contexts","Object","keys","clear","setPropagationContext","addBreadcrumb","breadcrumb","maxBreadcrumbs","maxCrumbs","mergedBreadcrumb","timestamp","breadcrumbs","slice","getLastBreadcrumb","clearBreadcrumbs","addAttachment","attachment","clearAttachments","attachments","eventProcessors","sdkProcessingMetadata","transactionName","setSDKProcessingMetadata","newData","eventId","event_id","warn","syntheticException","Error","originalException","forEach","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE","SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME","SEMANTIC_ATTRIBUTE_PROFILE_ID","SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME","makeSession","startingTime","sid","init","started","duration","errors","ignoreDuration","toJSON","Date","toISOString","did","abnormal_mechanism","attrs","ipAddress","user_agent","sessionToJSON","updateSession","closeSession","FROZEN_DSC_FIELD","freezeDscOnSpan","dsc","spanWithMaybeDsc","getDynamicSamplingContextFromClient","options","publicKey","public_key","getDsn","emit","getDynamicSamplingContextFromScope","getDynamicSamplingContextFromSpan","rootSpan","frozenDsc","traceState","spanContext","traceStateDsc","get","dscOnTraceState","jsonSpan","attributes","data","maybeSampleRate","sample_rate","source","description","transaction","sampled","String","SPAN_STATUS_UNSET","SPAN_STATUS_OK","SPAN_STATUS_ERROR","setHttpStatus","httpStatus","setAttribute","spanStatus","code","getSpanStatusFromHttpCode","setStatus","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","MAX_BAGGAGE_STRING_LENGTH","baggageHeaderToDynamicSamplingContext","baggageHeader","baggageObject","Array","isArray","reduce","acc","curr","currBaggageObject","baggageHeaderToObject","entries","parseBaggageHeader","dynamicSamplingContext","match","dynamicSamplingContextToSentryBaggageHeader","object","objectKey","objectValue","currentIndex","baggageEntry","encodeURIComponent","newBaggageHeader","objectToBaggageHeader","dscKey","dscValue","split","map","keyOrValue","decodeURIComponent","trim","WINDOW","DEFAULT_MAX_STRING_LENGTH","htmlTreeAsString","elem","currentElem","MAX_TRAVERSE_HEIGHT","out","height","len","separator","sepLength","nextStr","keyAttrs","maxStringLength","_htmlElementAsString","parentNode","reverse","join","_oO","el","tagName","HTMLElement","dataset","toLowerCase","keyAttrPairs","filter","keyAttr","getAttribute","keyAttrPair","className","classes","c","allowedAttrs","k","attr","getLocationHref","document","location","href","oO","getDomElement","selector","querySelector","getComponentName","i","objectToString","prototype","toString","isError","wat","call","isInstanceOf","isBuiltin","isErrorEvent","isDOMError","isDOMException","isString","isParameterizedString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","Boolean","isSyntheticEvent","base","_e","isVueViewModel","__isVue","_isVue","CONSOLE_LEVELS","originalConsoleMethods","consoleSandbox","console","wrappedFuncs","wrappedLevels","originalConsoleMethod","logger","enable","disable","args","uuid4","gbl","crypto","msCrypto","getRandomByte","Math","random","randomUUID","replace","getRandomValues","typedArray","Uint8Array","_","getFirstException","getEventDescription","firstException","type","addExceptionTypeValue","addExceptionMechanism","newMechanism","currentMechanism","mechanism","handled","mergedData","checkOrSetAlreadyCaught","__sentry_captured__","isAlreadyCaptured","err","normalize","input","depth","maxProperties","visit","ERROR","normalizeToSize","maxSize","normalized","encodeURI","utf8Length","JSON","stringify","memo","hasWeakSet","WeakSet","inner","obj","has","add","delete","splice","memoBuilder","memoize","unmemoize","includes","Number","isFinite","stringified","_events","global","window","objName","getPrototypeOf","getConstructorName","test","stringifyValue","startsWith","remainingDepth","valueWithToJSON","numAdded","visitable","visitKey","hasOwnProperty","visitValue","fill","replacementFactory","original","wrapped","markFunctionWrapped","log","addNonEnumerableProperty","defineProperty","writable","configurable","o_O","proto","getOriginalFunction","func","__sentry_original__","convertToPlainObject","getOwnProperties","newObj","target","serializeEventTarget","currentTarget","CustomEvent","detail","extractedProps","property","extractExceptionKeysForMessage","maxLength","sort","firstKey","includedKeys","serialized","dropUndefinedKeys","inputValue","_dropUndefinedKeys","Map","memoizationMap","e2","isPojo","memoVal","returnValue","set","getOwnPropertyNames","item","generateTraceId","generateSpanId","substring","STACKTRACE_FRAME_LIMIT","UNKNOWN_FUNCTION","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","createStackParser","parsers","sortedParsers","a","b","p","skipFirstLines","framesToPop","frames","lines","line","cleanedLine","parser","frame","localStack","from","getLastStackFrame","function","filename","stripSentryFramesAndReverse","stackParserFromStackParserOptions","stackParser","arr","defaultFunctionName","getFunctionName","fn","getFramesFromEvent","stacktrace","truncate","str","max","safeJoin","delimiter","stringMatchesSomePattern","testString","patterns","requireExactStringMatch","some","pattern","isMatchingPattern","States","resolvedSyncPromise","SyncPromise","resolve","rejectedSyncPromise","reason","reject","executor","__init","__init2","__init3","__init4","_state","PENDING","_handlers","_resolve","_reject","onfulfilled","onrejected","result","_executeHandlers","val","onfinally","isRejected","_setResult","RESOLVED","REJECTED","state","_value","cachedHandlers","handler","ONE_SECOND_IN_MS","dateTimestampInSeconds","now","timestampInSeconds","performance","approxStartingTimeOrigin","timeOrigin","createUnixTimestampInSecondsFunc","_browserPerformanceTimeOriginMode","browserPerformanceTimeOrigin","threshold","performanceNow","dateNow","timeOriginDelta","abs","timeOriginIsReliable","navigationStart","timing","navigationStartDelta","TRACEPARENT_REGEXP","RegExp","propagationContextFromHeaders","sentryTrace","baggage","traceparentData","traceparent","matches","parentSampled","extractTraceparentData","generateSentryTraceHeader","sampledString","SDK_VERSION","GLOBAL_OBJ","globalThis","getGlobalSingleton","creator","versionedCarrier","hasTracingEnabled","maybeOptions","__SENTRY_TRACING__","enableTracing","merge","initialObj","mergeObj","levels","notifyEventProcessors","processors","index","processor","final","parsedStackResults","lastKeysCount","cachedFilenameDebugIds","mergeScopeData","mergeData","mergeAndOverwriteScopeData","prop","mergeVal","prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","integrations","dist","maxValueLength","request","url","applyClientOptions","integrationNames","sdk","applyIntegrationsMetadata","filenameDebugIdMap","debugIdMap","_sentryDebugIds","debugIdKeys","stackKey","parsedStack","stackFrame","debugId","getFilenameToDebugIdMap","debug_id","applyDebugIds","finalScope","getFinalScope","clientEventProcessors","getEventProcessors","cleanedExtra","cleanedTags","cleanedUser","cleanedContexts","applyDataToEvent","trace","applySpanToEvent","concat","applyFingerprintToEvent","mergedBreadcrumbs","applyBreadcrumbsToEvent","applySdkMetadataToEvent","applyScopeDataToEvent","evt","abs_path","debug_meta","images","code_file","applyDebugMeta","maxBreadth","spans","normalizeEvent","parseEventHintOrCaptureContext","hintIsScopeOrFunction","captureContextKeys","hintIsScopeContext","SCOPE_SPAN_FIELD","_setSpanForScope","_getSpanForScope","TRACE_FLAG_NONE","TRACE_FLAG_SAMPLED","hasShownSpanDropWarning","spanToTransactionTraceContext","op","origin","spanToJSON","spanToTraceContext","isRemote","spanToTraceHeader","spanIsSampled","spanTimeInputToSeconds","ensureTimestampInSeconds","getTime","getSpanJSON","spanIsSentrySpan","castSpan","startTime","endTime","spanIsOpenTelemetrySdkTraceBaseSpan","start_timestamp","getStatusMessage","_metrics_summary","g","traceFlags","CHILD_SPANS_FIELD","ROOT_SPAN_FIELD","addChildSpanToSpan","childSpan","Set","removeChildSpanFromSpan","getSpanDescendants","resultSet","addSpanChildren","childSpans","getRootSpan","getActiveSpan","showSpanDropWarning"],"sourceRoot":""}