{"version":3,"file":"commons-94d0efe2bdc04ee73ca5.js","mappings":"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","sources":["webpack://acu-gatsby/./node_modules/@sentry/core/esm/constants.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/debug-build.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/eventProcessors.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/exports.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/hub.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/scope.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/session.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/tracing/dynamicSamplingContext.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/utils/applyScopeDataToEvent.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/utils/getRootSpan.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/utils/prepareEvent.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/utils/spanUtils.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/version.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/baggage.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/browser.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/debug-build.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/is.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/logger.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/misc.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/normalize.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/memo.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/object.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/stacktrace.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/string.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/syncpromise.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/time.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/tracing.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/worldwide.js"],"sourcesContent":["const DEFAULT_ENVIRONMENT = 'production';\n\nexport { DEFAULT_ENVIRONMENT };\n//# sourceMappingURL=constants.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 { SyncPromise, logger, isThenable, getGlobalSingleton } from '@sentry/utils';\nimport { DEBUG_BUILD } from './debug-build.js';\n\n/**\n * Returns the global event processors.\n * @deprecated Global event processors will be removed in v8.\n */\nfunction getGlobalEventProcessors() {\n  return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @deprecated Use `addEventProcessor` instead. Global event processors will be removed in v8.\n */\nfunction addGlobalEventProcessor(callback) {\n  // eslint-disable-next-line deprecation/deprecation\n  getGlobalEventProcessors().push(callback);\n}\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 { addGlobalEventProcessor, getGlobalEventProcessors, notifyEventProcessors };\n//# sourceMappingURL=eventProcessors.js.map\n","import { logger, uuid4, timestampInSeconds, isThenable, GLOBAL_OBJ } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { getCurrentHub, runWithAsyncContext, getIsolationScope } from './hub.js';\nimport { makeSession, updateSession, closeSession } from './session.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(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  exception,\n  hint,\n) {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param exception The exception to capture.\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(\n  message,\n  // eslint-disable-next-line deprecation/deprecation\n  captureContext,\n) {\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  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param exception 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  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n *\n * @deprecated Use getCurrentScope() directly.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction configureScope(callback) {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction addBreadcrumb(breadcrumb, hint) {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().addBreadcrumb(breadcrumb, 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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, deprecation/deprecation\nfunction setContext(name, context) {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().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 */\n// eslint-disable-next-line deprecation/deprecation\nfunction setExtras(extras) {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().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 */\n// eslint-disable-next-line deprecation/deprecation\nfunction setExtra(key, extra) {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().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 */\n// eslint-disable-next-line deprecation/deprecation\nfunction setTags(tags) {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().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 */\n// eslint-disable-next-line deprecation/deprecation\nfunction setTag(key, value) {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().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 */\n// eslint-disable-next-line deprecation/deprecation\nfunction setUser(user) {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setUser(user);\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 * This is essentially a convenience function for:\n *\n *     pushScope();\n *     callback();\n *     popScope();\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  // eslint-disable-next-line deprecation/deprecation\n  const hub = getCurrentHub();\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    if (!scope) {\n      // eslint-disable-next-line deprecation/deprecation\n      return hub.withScope(callback);\n    }\n\n    // eslint-disable-next-line deprecation/deprecation\n    return hub.withScope(() => {\n      // eslint-disable-next-line deprecation/deprecation\n      hub.getStackTop().scope = scope ;\n      return callback(scope );\n    });\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  return hub.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 * @param callback The callback in which the passed isolation scope is active. (Note: In environments without async\n * context strategy, the currently active isolation scope may change within execution of the callback.)\n * @returns The same value that `callback` returns.\n */\nfunction withIsolationScope(callback) {\n  return runWithAsyncContext(() => {\n    return callback(getIsolationScope());\n  });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback.\n *\n * @param span Spans started in the context of the provided callback will be children of this span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nfunction withActiveSpan(span, callback) {\n  return withScope(scope => {\n    // eslint-disable-next-line deprecation/deprecation\n    scope.setSpan(span);\n    return callback(scope);\n  });\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\nfunction startTransaction(\n  context,\n  customSamplingContext,\n  // eslint-disable-next-line deprecation/deprecation\n) {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\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  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      () => {\n        finishCheckIn('error');\n      },\n    );\n  } else {\n    finishCheckIn('ok');\n  }\n\n  return maybePromiseResult;\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 * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n * @deprecated This function will be removed in the next major version of the Sentry SDK.\n */\nfunction lastEventId() {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().lastEventId();\n}\n\n/**\n * Get the currently active client.\n */\nfunction getClient() {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().getClient();\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nfunction isInitialized() {\n  return !!getClient();\n}\n\n/**\n * Get the currently active scope.\n */\nfunction getCurrentScope() {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().getScope();\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 && client.captureSession) {\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 { addBreadcrumb, captureCheckIn, captureEvent, captureException, captureMessage, captureSession, close, configureScope, endSession, flush, getClient, getCurrentScope, isInitialized, lastEventId, setContext, setExtra, setExtras, setTag, setTags, setUser, startSession, startTransaction, withActiveSpan, withIsolationScope, withMonitor, withScope };\n//# sourceMappingURL=exports.js.map\n","import { isThenable, uuid4, dateTimestampInSeconds, consoleSandbox, logger, GLOBAL_OBJ, getGlobalSingleton } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { Scope } from './scope.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\nimport { SDK_VERSION } from './version.js';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nconst API_VERSION = parseFloat(SDK_VERSION);\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * @deprecated The `Hub` class will be removed in version 8 of the SDK in favour of `Scope` and `Client` objects.\n *\n * If you previously used the `Hub` class directly, replace it with `Scope` and `Client` objects. More information:\n * - [Multiple Sentry Instances](https://docs.sentry.io/platforms/javascript/best-practices/multiple-sentry-instances/)\n * - [Browser Extensions](https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/)\n *\n * Some of our APIs are typed with the Hub class instead of the interface (e.g. `getCurrentHub`). Most of them are deprecated\n * themselves and will also be removed in version 8. More information:\n * - [Migration Guide](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)\n */\n// eslint-disable-next-line deprecation/deprecation\nclass Hub  {\n  /** Is a {@link Layer}[] containing the client and scope */\n\n  /** Contains the last event id of a captured event.  */\n\n  /**\n   * Creates a new instance of the hub, will push one {@link Layer} into the\n   * internal stack on creation.\n   *\n   * @param client bound to the hub.\n   * @param scope bound to the hub.\n   * @param version number, higher number means higher priority.\n   *\n   * @deprecated Instantiation of Hub objects is deprecated and the constructor will be removed in version 8 of the SDK.\n   *\n   * If you are currently using the Hub for multi-client use like so:\n   *\n   * ```\n   * // OLD\n   * const hub = new Hub();\n   * hub.bindClient(client);\n   * makeMain(hub)\n   * ```\n   *\n   * instead initialize the client as follows:\n   *\n   * ```\n   * // NEW\n   * Sentry.withIsolationScope(() => {\n   *    Sentry.setCurrentClient(client);\n   *    client.init();\n   * });\n   * ```\n   *\n   * If you are using the Hub to capture events like so:\n   *\n   * ```\n   * // OLD\n   * const client = new Client();\n   * const hub = new Hub(client);\n   * hub.captureException()\n   * ```\n   *\n   * instead capture isolated events as follows:\n   *\n   * ```\n   * // NEW\n   * const client = new Client();\n   * const scope = new Scope();\n   * scope.setClient(client);\n   * scope.captureException();\n   * ```\n   */\n   constructor(\n    client,\n    scope,\n    isolationScope,\n      _version = API_VERSION,\n  ) {this._version = _version;\n    let assignedScope;\n    if (!scope) {\n      assignedScope = new Scope();\n      assignedScope.setClient(client);\n    } else {\n      assignedScope = scope;\n    }\n\n    let assignedIsolationScope;\n    if (!isolationScope) {\n      assignedIsolationScope = new Scope();\n      assignedIsolationScope.setClient(client);\n    } else {\n      assignedIsolationScope = isolationScope;\n    }\n\n    this._stack = [{ scope: assignedScope }];\n\n    if (client) {\n      // eslint-disable-next-line deprecation/deprecation\n      this.bindClient(client);\n    }\n\n    this._isolationScope = assignedIsolationScope;\n  }\n\n  /**\n   * Checks if this hub's version is older than the given version.\n   *\n   * @param version A version number to compare to.\n   * @return True if the given version is newer; otherwise false.\n   *\n   * @deprecated This will be removed in v8.\n   */\n   isOlderThan(version) {\n    return this._version < version;\n  }\n\n  /**\n   * This binds the given client to the current scope.\n   * @param client An SDK client (client) instance.\n   *\n   * @deprecated Use `initAndBind()` directly, or `setCurrentClient()` and/or `client.init()` instead.\n   */\n   bindClient(client) {\n    // eslint-disable-next-line deprecation/deprecation\n    const top = this.getStackTop();\n    top.client = client;\n    top.scope.setClient(client);\n    // eslint-disable-next-line deprecation/deprecation\n    if (client && client.setupIntegrations) {\n      // eslint-disable-next-line deprecation/deprecation\n      client.setupIntegrations();\n    }\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `withScope` instead.\n   */\n   pushScope() {\n    // We want to clone the content of prev scope\n    // eslint-disable-next-line deprecation/deprecation\n    const scope = this.getScope().clone();\n    // eslint-disable-next-line deprecation/deprecation\n    this.getStack().push({\n      // eslint-disable-next-line deprecation/deprecation\n      client: this.getClient(),\n      scope,\n    });\n    return scope;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `withScope` instead.\n   */\n   popScope() {\n    // eslint-disable-next-line deprecation/deprecation\n    if (this.getStack().length <= 1) return false;\n    // eslint-disable-next-line deprecation/deprecation\n    return !!this.getStack().pop();\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.withScope()` instead.\n   */\n   withScope(callback) {\n    // eslint-disable-next-line deprecation/deprecation\n    const scope = this.pushScope();\n\n    let maybePromiseResult;\n    try {\n      maybePromiseResult = callback(scope);\n    } catch (e) {\n      // eslint-disable-next-line deprecation/deprecation\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          // eslint-disable-next-line deprecation/deprecation\n          this.popScope();\n          return res;\n        },\n        e => {\n          // eslint-disable-next-line deprecation/deprecation\n          this.popScope();\n          throw e;\n        },\n      );\n    }\n\n    // eslint-disable-next-line deprecation/deprecation\n    this.popScope();\n    return maybePromiseResult;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.getClient()` instead.\n   */\n   getClient() {\n    // eslint-disable-next-line deprecation/deprecation\n    return this.getStackTop().client ;\n  }\n\n  /**\n   * Returns the scope of the top stack.\n   *\n   * @deprecated Use `Sentry.getCurrentScope()` instead.\n   */\n   getScope() {\n    // eslint-disable-next-line deprecation/deprecation\n    return this.getStackTop().scope;\n  }\n\n  /**\n   * @deprecated Use `Sentry.getIsolationScope()` instead.\n   */\n   getIsolationScope() {\n    return this._isolationScope;\n  }\n\n  /**\n   * Returns the scope stack for domains or the process.\n   * @deprecated This will be removed in v8.\n   */\n   getStack() {\n    return this._stack;\n  }\n\n  /**\n   * Returns the topmost scope layer in the order domain > local > process.\n   * @deprecated This will be removed in v8.\n   */\n   getStackTop() {\n    return this._stack[this._stack.length - 1];\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.captureException()` instead.\n   */\n   captureException(exception, hint) {\n    const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n    const syntheticException = new Error('Sentry syntheticException');\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().captureException(exception, {\n      originalException: exception,\n      syntheticException,\n      ...hint,\n      event_id: eventId,\n    });\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use  `Sentry.captureMessage()` instead.\n   */\n   captureMessage(\n    message,\n    // eslint-disable-next-line deprecation/deprecation\n    level,\n    hint,\n  ) {\n    const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n    const syntheticException = new Error(message);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().captureMessage(message, level, {\n      originalException: message,\n      syntheticException,\n      ...hint,\n      event_id: eventId,\n    });\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.captureEvent()` instead.\n   */\n   captureEvent(event, hint) {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n    if (!event.type) {\n      this._lastEventId = eventId;\n    }\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().captureEvent(event, { ...hint, event_id: eventId });\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated This will be removed in v8.\n   */\n   lastEventId() {\n    return this._lastEventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.addBreadcrumb()` instead.\n   */\n   addBreadcrumb(breadcrumb, hint) {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\n\n    if (!client) return;\n\n    const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n      (client.getOptions && client.getOptions()) || {};\n\n    if (maxBreadcrumbs <= 0) return;\n\n    const timestamp = dateTimestampInSeconds();\n    const mergedBreadcrumb = { timestamp, ...breadcrumb };\n    const finalBreadcrumb = beforeBreadcrumb\n      ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) )\n      : mergedBreadcrumb;\n\n    if (finalBreadcrumb === null) return;\n\n    if (client.emit) {\n      client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n    }\n\n    // TODO(v8): I know this comment doesn't make much sense because the hub will be deprecated but I still wanted to\n    // write it down. In theory, we would have to add the breadcrumbs to the isolation scope here, however, that would\n    // duplicate all of the breadcrumbs. There was the possibility of adding breadcrumbs to both, the isolation scope\n    // and the normal scope, and deduplicating it down the line in the event processing pipeline. However, that would\n    // have been very fragile, because the breadcrumb objects would have needed to keep their identity all throughout\n    // the event processing pipeline.\n    // In the new implementation, the top level `Sentry.addBreadcrumb()` should ONLY write to the isolation scope.\n\n    scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setUser()` instead.\n   */\n   setUser(user) {\n    // TODO(v8): The top level `Sentry.setUser()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setUser(user);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setUser(user);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setTags()` instead.\n   */\n   setTags(tags) {\n    // TODO(v8): The top level `Sentry.setTags()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setTags(tags);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setTags(tags);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setExtras()` instead.\n   */\n   setExtras(extras) {\n    // TODO(v8): The top level `Sentry.setExtras()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setExtras(extras);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setExtras(extras);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setTag()` instead.\n   */\n   setTag(key, value) {\n    // TODO(v8): The top level `Sentry.setTag()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setTag(key, value);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setTag(key, value);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setExtra()` instead.\n   */\n   setExtra(key, extra) {\n    // TODO(v8): The top level `Sentry.setExtra()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setExtra(key, extra);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setExtra(key, extra);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setContext()` instead.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n   setContext(name, context) {\n    // TODO(v8): The top level `Sentry.setContext()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setContext(name, context);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setContext(name, context);\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `getScope()` directly.\n   */\n   configureScope(callback) {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\n    if (client) {\n      callback(scope);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line deprecation/deprecation\n   run(callback) {\n    // eslint-disable-next-line deprecation/deprecation\n    const oldHub = makeMain(this);\n    try {\n      callback(this);\n    } finally {\n      // eslint-disable-next-line deprecation/deprecation\n      makeMain(oldHub);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.getClient().getIntegrationByName()` instead.\n   */\n   getIntegration(integration) {\n    // eslint-disable-next-line deprecation/deprecation\n    const client = this.getClient();\n    if (!client) return null;\n    try {\n      // eslint-disable-next-line deprecation/deprecation\n      return client.getIntegration(integration);\n    } catch (_oO) {\n      DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n      return null;\n    }\n  }\n\n  /**\n   * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n   *\n   * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n   * new child span within the transaction or any span, call the respective `.startChild()` method.\n   *\n   * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n   *\n   * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n   * finished child spans will be sent to Sentry.\n   *\n   * @param context Properties of the new `Transaction`.\n   * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n   * default values). See {@link Options.tracesSampler}.\n   *\n   * @returns The transaction which was just started\n   *\n   * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n   */\n   startTransaction(context, customSamplingContext) {\n    const result = this._callExtensionMethod('startTransaction', context, customSamplingContext);\n\n    if (DEBUG_BUILD && !result) {\n      // eslint-disable-next-line deprecation/deprecation\n      const client = this.getClient();\n      if (!client) {\n        logger.warn(\n          \"Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'\",\n        );\n      } else {\n        logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n      }\n    }\n\n    return result;\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `spanToTraceHeader()` instead.\n   */\n   traceHeaders() {\n    return this._callExtensionMethod('traceHeaders');\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use top level `captureSession` instead.\n   */\n   captureSession(endSession = false) {\n    // both send the update and pull the session from the scope\n    if (endSession) {\n      // eslint-disable-next-line deprecation/deprecation\n      return this.endSession();\n    }\n\n    // only send the update\n    this._sendSessionUpdate();\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use top level `endSession` instead.\n   */\n   endSession() {\n    // eslint-disable-next-line deprecation/deprecation\n    const layer = this.getStackTop();\n    const scope = layer.scope;\n    const session = scope.getSession();\n    if (session) {\n      closeSession(session);\n    }\n    this._sendSessionUpdate();\n\n    // the session is over; take it off of the scope\n    scope.setSession();\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use top level `startSession` instead.\n   */\n   startSession(context) {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\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: scope.getUser(),\n      ...(userAgent && { userAgent }),\n      ...context,\n    });\n\n    // End existing session if there's one\n    const currentSession = scope.getSession && scope.getSession();\n    if (currentSession && currentSession.status === 'ok') {\n      updateSession(currentSession, { status: 'exited' });\n    }\n    // eslint-disable-next-line deprecation/deprecation\n    this.endSession();\n\n    // Afterwards we set the new session on the scope\n    scope.setSession(session);\n\n    return session;\n  }\n\n  /**\n   * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n   * when Tracing is used.\n   *\n   * @deprecated Use top-level `getClient().getOptions().sendDefaultPii` instead. This function\n   * only unnecessarily increased API surface but only wrapped accessing the option.\n   */\n   shouldSendDefaultPii() {\n    // eslint-disable-next-line deprecation/deprecation\n    const client = this.getClient();\n    const options = client && client.getOptions();\n    return Boolean(options && options.sendDefaultPii);\n  }\n\n  /**\n   * Sends the current Session on the scope\n   */\n   _sendSessionUpdate() {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\n\n    const session = scope.getSession();\n    if (session && client && client.captureSession) {\n      client.captureSession(session);\n    }\n  }\n\n  /**\n   * Calls global extension method and binding current instance to the function call\n   */\n  // @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n   _callExtensionMethod(method, ...args) {\n    const carrier = getMainCarrier();\n    const sentry = carrier.__SENTRY__;\n    if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n      return sentry.extensions[method].apply(this, args);\n    }\n    DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n  }\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  GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n    extensions: {},\n    hub: undefined,\n  };\n  return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n *\n * @deprecated Use `setCurrentClient()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction makeMain(hub) {\n  const registry = getMainCarrier();\n  const oldHub = getHubFromCarrier(registry);\n  setHubOnCarrier(registry, hub);\n  return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n *\n * @deprecated Use the respective replacement method directly instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction getCurrentHub() {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n\n  if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n    const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n    if (hub) {\n      return hub;\n    }\n  }\n\n  // Return hub that lives on a global object\n  return getGlobalHub(registry);\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current exection context,\n * meaning that it will remain stable for the same Hub.\n */\nfunction getIsolationScope() {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().getIsolationScope();\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction getGlobalHub(registry = getMainCarrier()) {\n  // If there's no hub, or its an old API, assign a new one\n\n  if (\n    !hasHubOnCarrier(registry) ||\n    // eslint-disable-next-line deprecation/deprecation\n    getHubFromCarrier(registry).isOlderThan(API_VERSION)\n  ) {\n    // eslint-disable-next-line deprecation/deprecation\n    setHubOnCarrier(registry, new Hub());\n  }\n\n  // Return hub that lives on a global object\n  return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction ensureHubOnCarrier(carrier, parent = getGlobalHub()) {\n  // If there's no hub on current domain, or it's an old API, assign a new one\n  if (\n    !hasHubOnCarrier(carrier) ||\n    // eslint-disable-next-line deprecation/deprecation\n    getHubFromCarrier(carrier).isOlderThan(API_VERSION)\n  ) {\n    // eslint-disable-next-line deprecation/deprecation\n    const client = parent.getClient();\n    // eslint-disable-next-line deprecation/deprecation\n    const scope = parent.getScope();\n    // eslint-disable-next-line deprecation/deprecation\n    const isolationScope = parent.getIsolationScope();\n    // eslint-disable-next-line deprecation/deprecation\n    setHubOnCarrier(carrier, new Hub(client, scope.clone(), isolationScope.clone()));\n  }\n}\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  registry.__SENTRY__ = registry.__SENTRY__ || {};\n  registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nfunction runWithAsyncContext(callback, options = {}) {\n  const registry = getMainCarrier();\n\n  if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n    return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n  }\n\n  // if there was no strategy, fallback to just calling the callback\n  return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n  return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction getHubFromCarrier(carrier) {\n  // eslint-disable-next-line deprecation/deprecation\n  return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction setHubOnCarrier(carrier, hub) {\n  if (!carrier) return false;\n  const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n  __SENTRY__.hub = hub;\n  return true;\n}\n\nexport { API_VERSION, Hub, ensureHubOnCarrier, getCurrentHub, getHubFromCarrier, getIsolationScope, getMainCarrier, makeMain, runWithAsyncContext, setAsyncContextStrategy, setHubOnCarrier };\n//# sourceMappingURL=hub.js.map\n","import { isPlainObject, dateTimestampInSeconds, uuid4, logger } from '@sentry/utils';\nimport { getGlobalEventProcessors, notifyEventProcessors } from './eventProcessors.js';\nimport { updateSession } from './session.js';\nimport { applyScopeDataToEvent } from './utils/applyScopeDataToEvent.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * The global scope is kept in this module.\n * When accessing this via `getGlobalScope()` we'll make sure to set one if none is currently present.\n */\nlet globalScope;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nclass Scope  {\n  /** Flag if notifying is happening. */\n\n  /** Callback for client to receive scope changes. */\n\n  /** Callback list that will be called after {@link applyToEvent}. */\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  // eslint-disable-next-line deprecation/deprecation\n\n  /**\n   * Transaction Name\n   */\n\n  /** Span */\n\n  /** Session */\n\n  /** Request Mode Session Status */\n\n  /** The client on this scope */\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 = generatePropagationContext();\n  }\n\n  /**\n   * Inherit values from the parent scope.\n   * @deprecated Use `scope.clone()` and `new Scope()` instead.\n   */\n   static clone(scope) {\n    return scope ? scope.clone() : new Scope();\n  }\n\n  /**\n   * Clone this scope instance.\n   */\n   clone() {\n    const newScope = new Scope();\n    newScope._breadcrumbs = [...this._breadcrumbs];\n    newScope._tags = { ...this._tags };\n    newScope._extra = { ...this._extra };\n    newScope._contexts = { ...this._contexts };\n    newScope._user = this._user;\n    newScope._level = this._level;\n    newScope._span = this._span;\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\n    return newScope;\n  }\n\n  /** Update the client on the scope. */\n   setClient(client) {\n    this._client = client;\n  }\n\n  /**\n   * Get the client assigned to this scope.\n   *\n   * It is generally recommended to use the global function `Sentry.getClient()` instead, unless you know what you are doing.\n   */\n   getClient() {\n    return this._client;\n  }\n\n  /**\n   * Add internal on change listener. Used for sub SDKs that need to store the scope.\n   * @hidden\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      segment: 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   getRequestSession() {\n    return this._requestSession;\n  }\n\n  /**\n   * @inheritDoc\n   */\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(\n    // eslint-disable-next-line deprecation/deprecation\n    level,\n  ) {\n    this._level = level;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the transaction name on the scope for future events.\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   * Sets the Span on the scope.\n   * @param span Span\n   * @deprecated Instead of setting a span on a scope, use `startSpan()`/`startSpanManual()` instead.\n   */\n   setSpan(span) {\n    this._span = span;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Returns the `Span` if there is one.\n   * @deprecated Use `getActiveSpan()` instead.\n   */\n   getSpan() {\n    return this._span;\n  }\n\n  /**\n   * Returns the `Transaction` attached to the scope (if there is one).\n   * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n   */\n   getTransaction() {\n    // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n    // have a pointer to the currently-active transaction.\n    const span = this._span;\n    // Cannot replace with getRootSpan because getRootSpan returns a span, not a transaction\n    // Also, this method will be removed anyway.\n    // eslint-disable-next-line deprecation/deprecation\n    return span && span.transaction;\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    if (scopeToMerge instanceof Scope) {\n      const scopeData = scopeToMerge.getScopeData();\n\n      this._tags = { ...this._tags, ...scopeData.tags };\n      this._extra = { ...this._extra, ...scopeData.extra };\n      this._contexts = { ...this._contexts, ...scopeData.contexts };\n      if (scopeData.user && Object.keys(scopeData.user).length) {\n        this._user = scopeData.user;\n      }\n      if (scopeData.level) {\n        this._level = scopeData.level;\n      }\n      if (scopeData.fingerprint.length) {\n        this._fingerprint = scopeData.fingerprint;\n      }\n      if (scopeToMerge.getRequestSession()) {\n        this._requestSession = scopeToMerge.getRequestSession();\n      }\n      if (scopeData.propagationContext) {\n        this._propagationContext = scopeData.propagationContext;\n      }\n    } else if (isPlainObject(scopeToMerge)) {\n      const scopeContext = captureContext ;\n      this._tags = { ...this._tags, ...scopeContext.tags };\n      this._extra = { ...this._extra, ...scopeContext.extra };\n      this._contexts = { ...this._contexts, ...scopeContext.contexts };\n      if (scopeContext.user) {\n        this._user = scopeContext.user;\n      }\n      if (scopeContext.level) {\n        this._level = scopeContext.level;\n      }\n      if (scopeContext.fingerprint) {\n        this._fingerprint = scopeContext.fingerprint;\n      }\n      if (scopeContext.requestSession) {\n        this._requestSession = scopeContext.requestSession;\n      }\n      if (scopeContext.propagationContext) {\n        this._propagationContext = scopeContext.propagationContext;\n      }\n    }\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   clear() {\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._span = undefined;\n    this._session = undefined;\n    this._notifyScopeListeners();\n    this._attachments = [];\n    this._propagationContext = generatePropagationContext();\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   * @deprecated Use `getScopeData()` instead.\n   */\n   getAttachments() {\n    const data = this.getScopeData();\n\n    return data.attachments;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   clearAttachments() {\n    this._attachments = [];\n    return this;\n  }\n\n  /** @inheritDoc */\n   getScopeData() {\n    const {\n      _breadcrumbs,\n      _attachments,\n      _contexts,\n      _tags,\n      _extra,\n      _user,\n      _level,\n      _fingerprint,\n      _eventProcessors,\n      _propagationContext,\n      _sdkProcessingMetadata,\n      _transactionName,\n      _span,\n    } = this;\n\n    return {\n      breadcrumbs: _breadcrumbs,\n      attachments: _attachments,\n      contexts: _contexts,\n      tags: _tags,\n      extra: _extra,\n      user: _user,\n      level: _level,\n      fingerprint: _fingerprint || [],\n      eventProcessors: _eventProcessors,\n      propagationContext: _propagationContext,\n      sdkProcessingMetadata: _sdkProcessingMetadata,\n      transactionName: _transactionName,\n      span: _span,\n    };\n  }\n\n  /**\n   * Applies data from the scope to the event and runs all event processors on it.\n   *\n   * @param event Event\n   * @param hint Object containing additional information about the original exception, for use by the event processors.\n   * @hidden\n   * @deprecated Use `applyScopeDataToEvent()` directly\n   */\n   applyToEvent(\n    event,\n    hint = {},\n    additionalEventProcessors = [],\n  ) {\n    applyScopeDataToEvent(event, this.getScopeData());\n\n    // TODO (v8): Update this order to be: Global > Client > Scope\n    const eventProcessors = [\n      ...additionalEventProcessors,\n      // eslint-disable-next-line deprecation/deprecation\n      ...getGlobalEventProcessors(),\n      ...this._eventProcessors,\n    ];\n\n    return notifyEventProcessors(eventProcessors, event, hint);\n  }\n\n  /**\n   * Add data which will be accessible during event processing but won't get sent to Sentry\n   */\n   setSDKProcessingMetadata(newData) {\n    this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setPropagationContext(context) {\n    this._propagationContext = context;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getPropagationContext() {\n    return this._propagationContext;\n  }\n\n  /**\n   * Capture an exception for this scope.\n   *\n   * @param exception The exception to capture.\n   * @param hint Optinal additional data to attach to the Sentry event.\n   * @returns the id of the captured Sentry event.\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   * Capture a message for this scope.\n   *\n   * @param message The message to capture.\n   * @param level An optional severity level to report the message with.\n   * @param hint Optional additional data to attach to the Sentry event.\n   * @returns the id of the captured message.\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   * Captures a manually created event for this scope and sends it to Sentry.\n   *\n   * @param exception The event to capture.\n   * @param hint Optional additional data to attach to the Sentry event.\n   * @returns the id of the captured event.\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 * Get the global scope.\n * This scope is applied to _all_ events.\n */\nfunction getGlobalScope() {\n  if (!globalScope) {\n    globalScope = new Scope();\n  }\n\n  return globalScope;\n}\n\n/**\n * This is mainly needed for tests.\n * DO NOT USE this, as this is an internal API and subject to change.\n * @hidden\n */\nfunction setGlobalScope(scope) {\n  globalScope = scope;\n}\n\nfunction generatePropagationContext() {\n  return {\n    traceId: uuid4(),\n    spanId: uuid4().substring(16),\n  };\n}\n\nexport { Scope, getGlobalScope, setGlobalScope };\n//# sourceMappingURL=scope.js.map\n","import { timestampInSeconds, uuid4, dropUndefinedKeys } from '@sentry/utils';\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 { dropUndefinedKeys } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getClient, getCurrentScope } from '../exports.js';\nimport { getRootSpan } from '../utils/getRootSpan.js';\nimport { spanToJSON, spanIsSampled } from '../utils/spanUtils.js';\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(\n  trace_id,\n  client,\n  scope,\n) {\n  const options = client.getOptions();\n\n  const { publicKey: public_key } = client.getDsn() || {};\n  // TODO(v8): Remove segment from User\n  // eslint-disable-next-line deprecation/deprecation\n  const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n  const dsc = dropUndefinedKeys({\n    environment: options.environment || DEFAULT_ENVIRONMENT,\n    release: options.release,\n    user_segment,\n    public_key,\n    trace_id,\n  }) ;\n\n  client.emit && client.emit('createDsc', dsc);\n\n  return dsc;\n}\n\n/**\n * A Span with a frozen dynamic sampling context.\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  // passing emit=false here to only emit later once the DSC is actually populated\n  const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || '', client, getCurrentScope());\n\n  // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n  const txn = getRootSpan(span) ;\n  if (!txn) {\n    return dsc;\n  }\n\n  // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n  // For now we need to avoid breaking users who directly created a txn with a DSC, where this field is still set.\n  // @see Transaction class constructor\n  const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext;\n  if (v7FrozenDsc) {\n    return v7FrozenDsc;\n  }\n\n  // TODO (v8): Replace txn.metadata with txn.attributes[]\n  // We can't do this yet because attributes aren't always set yet.\n  // eslint-disable-next-line deprecation/deprecation\n  const { sampleRate: maybeSampleRate, source } = txn.metadata;\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 jsonSpan = spanToJSON(txn);\n\n  // after JSON conversion, txn.name becomes jsonSpan.description\n  if (source && source !== 'url') {\n    dsc.transaction = jsonSpan.description;\n  }\n\n  dsc.sampled = String(spanIsSampled(txn));\n\n  client.emit && client.emit('createDsc', dsc);\n\n  return dsc;\n}\n\nexport { getDynamicSamplingContextFromClient, getDynamicSamplingContextFromSpan };\n//# sourceMappingURL=dynamicSamplingContext.js.map\n","import { dropUndefinedKeys, arrayify } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext.js';\nimport { getRootSpan } from './getRootSpan.js';\nimport { spanToTraceContext, 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    // eslint-disable-next-line deprecation/deprecation\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  mergeAndOverwriteScopeData(data, 'sdkProcessingMetadata', sdkProcessingMetadata);\n\n  if (level) {\n    data.level = level;\n  }\n\n  if (transactionName) {\n    // eslint-disable-next-line deprecation/deprecation\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  if (mergeVal && Object.keys(mergeVal).length) {\n    // Clone object\n    data[prop] = { ...data[prop] };\n    for (const key in mergeVal) {\n      if (Object.prototype.hasOwnProperty.call(mergeVal, key)) {\n        data[prop][key] = mergeVal[key];\n      }\n    }\n  }\n}\n\nfunction applyDataToEvent(event, data) {\n  const {\n    extra,\n    tags,\n    user,\n    contexts,\n    level,\n    // eslint-disable-next-line deprecation/deprecation\n    transactionName,\n  } = 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  if (transactionName) {\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 = { trace: spanToTraceContext(span), ...event.contexts };\n  const rootSpan = getRootSpan(span);\n  if (rootSpan) {\n    event.sdkProcessingMetadata = {\n      dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n      ...event.sdkProcessingMetadata,\n    };\n    const transactionName = spanToJSON(rootSpan).description;\n    if (transactionName) {\n      event.tags = { transaction: transactionName, ...event.tags };\n    }\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 ? arrayify(event.fingerprint) : [];\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","/**\n * Returns the root span of a given span.\n *\n * As long as we use `Transaction`s internally, the returned root span\n * will be a `Transaction` but be aware that this might change in the future.\n *\n * If the given span has no root span or transaction, `undefined` is returned.\n */\nfunction getRootSpan(span) {\n  // TODO (v8): Remove this check and just return span\n  // eslint-disable-next-line deprecation/deprecation\n  return span.transaction;\n}\n\nexport { getRootSpan };\n//# sourceMappingURL=getRootSpan.js.map\n","import { uuid4, dateTimestampInSeconds, addExceptionMechanism, truncate, GLOBAL_OBJ, normalize } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getGlobalEventProcessors, notifyEventProcessors } from '../eventProcessors.js';\nimport { getGlobalScope, Scope } from '../scope.js';\nimport { mergeScopeData, applyScopeDataToEvent } from './applyScopeDataToEvent.js';\nimport { spanToJSON } from './spanUtils.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 * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\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  // 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 ? client.getEventProcessors() : [];\n\n  // This should be the last thing called, since we want that\n  // {@link Hub.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  // TODO (v8): Update this order to be: Global > Client > Scope\n  const eventProcessors = [\n    ...clientEventProcessors,\n    // eslint-disable-next-line deprecation/deprecation\n    ...getGlobalEventProcessors(),\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 * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event, options) {\n  const { environment, release, dist, maxValueLength = 250 } = options;\n\n  if (!('environment' in event)) {\n    event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n  }\n\n  if (event.release === undefined && release !== undefined) {\n    event.release = release;\n  }\n\n  if (event.dist === undefined && dist !== undefined) {\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\nconst debugIdStackParserCache = new WeakMap();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nfunction applyDebugIds(event, stackParser) {\n  const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n  if (!debugIdMap) {\n    return;\n  }\n\n  let debugIdStackFramesCache;\n  const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n  if (cachedDebugIdStackFrameCache) {\n    debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n  } else {\n    debugIdStackFramesCache = new Map();\n    debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n  }\n\n  // Build a map of filename -> debug_id\n  const filenameDebugIdMap = Object.keys(debugIdMap).reduce((acc, debugIdStackTrace) => {\n    let parsedStack;\n    const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n    if (cachedParsedStack) {\n      parsedStack = cachedParsedStack;\n    } else {\n      parsedStack = stackParser(debugIdStackTrace);\n      debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n    }\n\n    for (let i = parsedStack.length - 1; i >= 0; i--) {\n      const stackFrame = parsedStack[i];\n      if (stackFrame.filename) {\n        acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n        break;\n      }\n    }\n    return acc;\n  }, {});\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 (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.keys(filenameDebugIdMap).forEach(filename => {\n    images.push({\n      type: 'sourcemap',\n      code_file: filename,\n      debug_id: filenameDebugIdMap[filename],\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      const data = spanToJSON(span).data;\n\n      if (data) {\n        // This is a bit weird, as we generally have `Span` instances here, but to be safe we do not assume so\n        // eslint-disable-next-line deprecation/deprecation\n        span.data = normalize(data, depth, maxBreadth);\n      }\n\n      return span;\n    });\n  }\n\n  return normalized;\n}\n\nfunction getFinalScope(scope, captureContext) {\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 { applyDebugIds, applyDebugMeta, parseEventHintOrCaptureContext, prepareEvent };\n//# sourceMappingURL=prepareEvent.js.map\n","import { dropUndefinedKeys, generateSentryTraceHeader, timestampInSeconds } from '@sentry/utils';\n\n// These are aligned with OpenTelemetry trace flags\nconst TRACE_FLAG_NONE = 0x0;\nconst TRACE_FLAG_SAMPLED = 0x1;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n */\nfunction spanToTraceContext(span) {\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  const { data, op, parent_span_id, status, tags, origin } = spanToJSON(span);\n\n  return dropUndefinedKeys({\n    data,\n    op,\n    parent_span_id,\n    span_id,\n    status,\n    tags,\n    trace_id,\n    origin,\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 intp 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 * Note that all fields returned here are optional and need to be guarded against.\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.\n * TODO v8: When we remove the deprecated stuff from `span.ts`, we can remove the circular dependency again.\n */\nfunction spanToJSON(span) {\n  if (spanIsSpanClass(span)) {\n    return span.getSpanJSON();\n  }\n\n  // Fallback: We also check for `.toJSON()` here...\n  // eslint-disable-next-line deprecation/deprecation\n  if (typeof span.toJSON === 'function') {\n    // eslint-disable-next-line deprecation/deprecation\n    return span.toJSON();\n  }\n\n  return {};\n}\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 spanIsSpanClass(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  // eslint-disable-next-line no-bitwise\n  return Boolean(traceFlags & TRACE_FLAG_SAMPLED);\n}\n\nexport { TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, spanIsSampled, spanTimeInputToSeconds, spanToJSON, spanToTraceContext, spanToTraceHeader };\n//# sourceMappingURL=spanUtils.js.map\n","const SDK_VERSION = '7.114.0';\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { isString } from './is.js';\nimport { logger } from './logger.js';\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  if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n    return undefined;\n  }\n\n  // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n  // It is later used to read Sentry-DSC-values from.\n  let baggageObject = {};\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    baggageObject = baggageHeader.reduce((acc, curr) => {\n      const currBaggageObject = baggageHeaderToObject(curr);\n      for (const key of Object.keys(currBaggageObject)) {\n        acc[key] = currBaggageObject[key];\n      }\n      return acc;\n    }, {});\n  } else {\n    // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n    // this is how we choose to handle it)\n    if (!baggageHeader) {\n      return undefined;\n    }\n\n    baggageObject = baggageHeaderToObject(baggageHeader);\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 * 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      acc[key] = value;\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 };\n//# sourceMappingURL=baggage.js.map\n","import { isString } from './is.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\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 '<unknown>';\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 '<unknown>';\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  let className;\n  let classes;\n  let key;\n  let attr;\n  let i;\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 && elem.dataset['sentryComponent']) {\n      return elem.dataset['sentryComponent'];\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    // eslint-disable-next-line prefer-const\n    className = elem.className;\n    if (className && isString(className)) {\n      classes = className.split(/\\s+/);\n      for (i = 0; i < classes.length; i++) {\n        out.push(`.${classes[i]}`);\n      }\n    }\n  }\n  const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n  for (i = 0; i < allowedAttrs.length; i++) {\n    key = allowedAttrs[i];\n    attr = elem.getAttribute(key);\n    if (attr) {\n      out.push(`[${key}=\"${attr}\"]`);\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 existance 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<Element>('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\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` attribute. This attribute is added at build-time\n * 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 && currentElem.dataset['sentryComponent']) {\n      return currentElem.dataset['sentryComponent'];\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      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 is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n  return typeof wat === 'number' && wat !== 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, isNaN, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable, isVueViewModel };\n//# sourceMappingURL=is.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { 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      // eslint-disable-next-line @typescript-eslint/no-explicit-any\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\nconst 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        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 || '<unknown>';\n  }\n  return eventId || '<unknown>';\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\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], 10);\n  const minor = parseInt(match[2], 10);\n  const patch = parseInt(match[3], 10);\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  frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], 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  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (exception && (exception ).__sentry_captured__) {\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\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 */\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 { isNaN, 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 normallized 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  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    (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(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' && value !== value) {\n      return '[NaN]';\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, visit as walk };\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 */\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, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (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  source[name] = wrapped;\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 */\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 */\nfunction urlEncode(object) {\n  return Object.keys(object)\n    .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\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 argurment itself, when value is neither an Event nor\n *  an Error.\n */\nfunction convertToPlainObject(\n  value,\n)\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 '<unknown>';\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  if (!keys.length) {\n    return '[object has no keys]';\n  }\n\n  if (keys[0].length >= maxLength) {\n    return truncate(keys[0], 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.keys(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 (e) {\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    case wat === undefined || wat === null:\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 { node } from './node-stack-trace.js';\nexport { filenameIsInApp } from './node-stack-trace.js';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\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, skipFirst = 0) => {\n    const frames = [];\n    const lines = stack.split('\\n');\n\n    for (let i = skipFirst; 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) {\n        break;\n      }\n    }\n\n    return stripSentryFramesAndReverse(frames);\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(localStack[localStack.length - 1].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(localStack[localStack.length - 1].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(localStack[localStack.length - 1].function || '')) {\n      localStack.pop();\n    }\n  }\n\n  return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n    ...frame,\n    filename: frame.filename || localStack[localStack.length - 1].filename,\n    function: frame.function || '?',\n  }));\n}\n\nconst defaultFunctionName = '<anonymous>';\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 * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n  return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, 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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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\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        // eslint-disable-next-line @typescript-eslint/no-floating-promises\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 * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nconst timestampWithMs = timestampInSeconds;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\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    _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      _browserPerformanceTimeOriginMode = 'timeOrigin';\n      return performance.timeOrigin;\n    } else {\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  _browserPerformanceTimeOriginMode = 'dateNow';\n  return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs };\n//# sourceMappingURL=time.js.map\n","import { baggageHeaderToDynamicSamplingContext } from './baggage.js';\nimport { uuid4 } from './misc.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 tracing context from incoming headers.\n *\n * @deprecated Use `propagationContextFromHeaders` instead.\n */\n// TODO(v8): Remove this function\nfunction tracingContextFromHeaders(\n  sentryTrace,\n  baggage,\n)\n\n {\n  const traceparentData = extractTraceparentData(sentryTrace);\n  const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n  const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n  if (!traceparentData) {\n    return {\n      traceparentData,\n      dynamicSamplingContext: undefined,\n      propagationContext: {\n        traceId: traceId || uuid4(),\n        spanId: uuid4().substring(16),\n      },\n    };\n  } else {\n    return {\n      traceparentData,\n      dynamicSamplingContext: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n      propagationContext: {\n        traceId: traceId || uuid4(),\n        parentSpanId: parentSpanId || uuid4().substring(16),\n        spanId: uuid4().substring(16),\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\n/**\n * Create a propagation context from incoming headers.\n */\nfunction propagationContextFromHeaders(\n  sentryTrace,\n  baggage,\n) {\n  const traceparentData = extractTraceparentData(sentryTrace);\n  const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n  const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n  if (!traceparentData) {\n    return {\n      traceId: traceId || uuid4(),\n      spanId: uuid4().substring(16),\n    };\n  } else {\n    return {\n      traceId: traceId || uuid4(),\n      parentSpanId: parentSpanId || uuid4().substring(16),\n      spanId: uuid4().substring(16),\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/**\n * Create sentry-trace header from span context values.\n */\nfunction generateSentryTraceHeader(\n  traceId = uuid4(),\n  spanId = uuid4().substring(16),\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, tracingContextFromHeaders };\n//# sourceMappingURL=tracing.js.map\n","/** Internal global with common properties and Sentry extensions  */\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj) {\n  return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ =\n  (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n  // eslint-disable-next-line no-restricted-globals\n  (typeof window == 'object' && isGlobalObj(window)) ||\n  (typeof self == 'object' && isGlobalObj(self)) ||\n  (typeof global == 'object' && isGlobalObj(global)) ||\n  (function () {\n    return this;\n  })() ||\n  {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nfunction getGlobalObject() {\n  return GLOBAL_OBJ ;\n}\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 singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n  return singleton;\n}\n\nexport { GLOBAL_OBJ, getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=worldwide.js.map\n"],"names":["DEFAULT_ENVIRONMENT","DEBUG_BUILD","__SENTRY_DEBUG__","getGlobalEventProcessors","addGlobalEventProcessor","callback","push","notifyEventProcessors","processors","event","hint","index","resolve","reject","processor","result","id","log","then","final","captureException","exception","captureMessage","message","captureContext","level","undefined","context","captureEvent","configureScope","addBreadcrumb","breadcrumb","setContext","name","setExtras","extras","setExtra","key","extra","setTags","tags","setTag","value","setUser","user","withScope","rest","hub","length","scope","getStackTop","withIsolationScope","withActiveSpan","span","setSpan","startTransaction","customSamplingContext","async","flush","timeout","client","getClient","warn","Promise","close","lastEventId","isInitialized","getCurrentScope","getScope","startSession","isolationScope","currentScope","release","environment","getOptions","userAgent","navigator","session","getUser","currentSession","getSession","status","endSession","setSession","_sendSessionUpdate","captureSession","end","API_VERSION","parseFloat","DEFAULT_BREADCRUMBS","Hub","constructor","_version","assignedScope","assignedIsolationScope","this","setClient","_stack","bindClient","_isolationScope","isOlderThan","version","top","setupIntegrations","pushScope","clone","getStack","popScope","pop","maybePromiseResult","e","res","getIsolationScope","eventId","_lastEventId","event_id","syntheticException","Error","originalException","type","beforeBreadcrumb","maxBreadcrumbs","mergedBreadcrumb","timestamp","finalBreadcrumb","emit","run","oldHub","makeMain","getIntegration","integration","_oO","_callExtensionMethod","traceHeaders","shouldSendDefaultPii","options","Boolean","sendDefaultPii","method","args","sentry","getMainCarrier","__SENTRY__","extensions","apply","registry","getHubFromCarrier","setHubOnCarrier","getCurrentHub","acs","getGlobalHub","hasHubOnCarrier","runWithAsyncContext","carrier","globalScope","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","_propagationContext","generatePropagationContext","newScope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","_client","addScopeListener","addEventProcessor","email","ip_address","segment","username","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","setFingerprint","fingerprint","setLevel","setTransactionName","getSpan","getTransaction","transaction","update","scopeToMerge","scopeData","getScopeData","contexts","Object","keys","propagationContext","scopeContext","clear","maxCrumbs","breadcrumbs","slice","getLastBreadcrumb","clearBreadcrumbs","addAttachment","attachment","getAttachments","attachments","clearAttachments","eventProcessors","sdkProcessingMetadata","transactionName","applyToEvent","additionalEventProcessors","setSDKProcessingMetadata","newData","setPropagationContext","getPropagationContext","forEach","getGlobalScope","traceId","spanId","substring","makeSession","startingTime","sid","init","started","duration","errors","ignoreDuration","toJSON","Date","toISOString","did","abnormal_mechanism","attrs","ipAddress","user_agent","sessionToJSON","updateSession","closeSession","getDynamicSamplingContextFromClient","trace_id","publicKey","public_key","getDsn","user_segment","dsc","getDynamicSamplingContextFromSpan","txn","v7FrozenDsc","_frozenDynamicSamplingContext","sampleRate","maybeSampleRate","source","metadata","sample_rate","jsonSpan","description","sampled","String","applyScopeDataToEvent","data","cleanedExtra","cleanedTags","cleanedUser","cleanedContexts","applyDataToEvent","trace","rootSpan","dynamicSamplingContext","applySpanToEvent","concat","applyFingerprintToEvent","mergedBreadcrumbs","applyBreadcrumbsToEvent","applySdkMetadataToEvent","mergeScopeData","mergeData","mergeAndOverwriteScopeData","prop","mergeVal","prototype","hasOwnProperty","call","getRootSpan","prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","integrations","map","i","dist","maxValueLength","values","request","url","applyClientOptions","integrationNames","sdk","applyIntegrationsMetadata","stackParser","debugIdMap","_sentryDebugIds","debugIdStackFramesCache","cachedDebugIdStackFrameCache","debugIdStackParserCache","get","Map","set","filenameDebugIdMap","reduce","acc","debugIdStackTrace","parsedStack","cachedParsedStack","stackFrame","filename","stacktrace","frames","frame","debug_id","applyDebugIds","finalScope","getFinalScope","mechanism","clientEventProcessors","getEventProcessors","isolationData","finalScopeData","evt","abs_path","debug_meta","images","code_file","applyDebugMeta","depth","maxBreadth","normalized","b","spans","normalizeEvent","WeakMap","parseEventHintOrCaptureContext","hintIsScopeOrFunction","some","captureContextKeys","includes","hintIsScopeContext","TRACE_FLAG_NONE","TRACE_FLAG_SAMPLED","spanToTraceContext","span_id","spanContext","op","parent_span_id","origin","spanToJSON","spanToTraceHeader","spanIsSampled","spanTimeInputToSeconds","input","ensureTimestampInSeconds","Array","isArray","getTime","getSpanJSON","spanIsSpanClass","traceFlags","SDK_VERSION","BAGGAGE_HEADER_NAME","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","MAX_BAGGAGE_STRING_LENGTH","baggageHeaderToDynamicSamplingContext","baggageHeader","baggageObject","curr","currBaggageObject","baggageHeaderToObject","entries","match","dynamicSamplingContextToSentryBaggageHeader","object","objectKey","objectValue","currentIndex","baggageEntry","encodeURIComponent","newBaggageHeader","objectToBaggageHeader","dscKey","dscValue","split","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","el","className","classes","attr","tagName","HTMLElement","dataset","toLowerCase","keyAttrPairs","filter","keyAttr","getAttribute","keyAttrPair","allowedAttrs","getLocationHref","document","location","href","oO","getDomElement","selector","querySelector","getComponentName","objectToString","toString","isError","wat","isInstanceOf","isBuiltin","isErrorEvent","isDOMError","isDOMException","isString","isParameterizedString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","isSyntheticEvent","isNaN","base","_e","isVueViewModel","__isVue","_isVue","CONSOLE_LEVELS","originalConsoleMethods","consoleSandbox","console","wrappedFuncs","wrappedLevels","originalConsoleMethod","logger","enabled","enable","disable","isEnabled","makeLogger","uuid4","gbl","crypto","msCrypto","getRandomByte","Math","random","randomUUID","replace","getRandomValues","typedArray","Uint8Array","_","c","getFirstException","getEventDescription","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","currentMechanism","handled","mergedData","addContextToFrame","lines","linesOfContext","lineno","maxLines","sourceLine","max","min","pre_context","line","context_line","colno","post_context","checkOrSetAlreadyCaught","__sentry_captured__","err","arrayify","maybeArray","normalize","maxProperties","Infinity","visit","ERROR","normalizeToSize","maxSize","encodeURI","utf8Length","JSON","stringify","memo","hasWeakSet","WeakSet","inner","obj","has","add","delete","splice","memoBuilder","memoize","unmemoize","is","stringified","_events","g","window","objName","getPrototypeOf","getConstructorName","test","stringifyValue","startsWith","remainingDepth","valueWithToJSON","numAdded","visitable","visitKey","visitValue","fill","replacementFactory","original","wrapped","markFunctionWrapped","addNonEnumerableProperty","defineProperty","writable","configurable","o_O","proto","getOriginalFunction","func","__sentry_original__","urlEncode","convertToPlainObject","stack","getOwnProperties","newObj","target","serializeEventTarget","currentTarget","CustomEvent","detail","extractedProps","property","extractExceptionKeysForMessage","maxLength","sort","includedKeys","serialized","dropUndefinedKeys","inputValue","_dropUndefinedKeys","memoizationMap","isPojo","memoVal","returnValue","item","STACKTRACE_FRAME_LIMIT","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","createStackParser","parsers","sortedParsers","a","p","skipFirst","cleanedLine","parser","localStack","from","function","stripSentryFramesAndReverse","stackParserFromStackParserOptions","defaultFunctionName","getFunctionName","fn","truncate","str","snipLine","newLine","lineLength","start","safeJoin","delimiter","output","stringMatchesSomePattern","testString","patterns","requireExactStringMatch","pattern","isMatchingPattern","States","resolvedSyncPromise","SyncPromise","rejectedSyncPromise","reason","executor","__init","__init2","__init3","__init4","_state","PENDING","_handlers","_resolve","_reject","onfulfilled","onrejected","_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","extractTraceparentData","traceparent","matches","parentSampled","parentSpanId","tracingContextFromHeaders","sentryTrace","baggage","traceparentData","propagationContextFromHeaders","generateSentryTraceHeader","sampledString","isGlobalObj","GLOBAL_OBJ","globalThis","self","getGlobalObject","getGlobalSingleton","creator"],"sourceRoot":""}