{"version":3,"sources":["../../../../src/integrations/functiontostring.ts","../../../../src/integrations/inboundfilters.ts","../../../../src/integrations/index.ts","../../../src/index.ts","../../../../src/helpers.ts","../../../../src/sdk.ts","../../../../src/stack-parsers.ts","../../../../src/eventbuilder.ts","../../../src/request.ts","../../../../../src/transports/base.ts","../../../../../src/transports/utils.ts","../../../src/scope.ts","../../../../src/version.ts","../../../../src/exports.ts","../../../../src/index.ts","../../../../src/transports/noop.ts","../../../../../src/integrations/index.ts","../../../../src/backend.ts","../../../../src/client.ts","../../../src/version.ts","../../../../src/transports/base.ts","../../node_modules/.pnpm/@rc-component+portal@1.1.1_react-dom@17.0.2_react@17.0.2/node_modules/@rc-component/portal/es/Context.js","../../node_modules/.pnpm/@rc-component+portal@1.1.1_react-dom@17.0.2_react@17.0.2/node_modules/@rc-component/portal/es/useDom.js","../../node_modules/.pnpm/@rc-component+portal@1.1.1_react-dom@17.0.2_react@17.0.2/node_modules/@rc-component/portal/es/util.js","../../node_modules/.pnpm/@rc-component+portal@1.1.1_react-dom@17.0.2_react@17.0.2/node_modules/@rc-component/portal/es/useScrollLocker.js","../../node_modules/.pnpm/@rc-component+portal@1.1.1_react-dom@17.0.2_react@17.0.2/node_modules/@rc-component/portal/es/mock.js","../../node_modules/.pnpm/@rc-component+portal@1.1.1_react-dom@17.0.2_react@17.0.2/node_modules/@rc-component/portal/es/Portal.js","../../node_modules/.pnpm/@rc-component+portal@1.1.1_react-dom@17.0.2_react@17.0.2/node_modules/@rc-component/portal/es/index.js","../../../../../src/transports/index.ts","../../../../../src/integrations/trycatch.ts","../../../../../src/integrations/breadcrumbs.ts","../../../../../src/integrations/globalhandlers.ts","../../../../../src/integrations/linkederrors.ts","../../../../../src/integrations/dedupe.ts","../../../../../src/integrations/useragent.ts","../../../src/sdk.ts","../../../../../src/transports/new-fetch.ts","../../../../../src/transports/fetch.ts","../../../../../src/transports/new-xhr.ts","../../../../../src/transports/xhr.ts","../../../src/basebackend.ts","../../../src/integration.ts","../../../src/baseclient.ts","../../../src/session.ts","../../../src/flags.ts","../../../src/hub.ts","../../../../src/flags.ts","../../../src/api.ts"],"names":["OrderContext","React","EMPTY_LIST","useDom","render","debug","_React$useState","canUseDom","defaultEle","document","createElement","process","_React$useState2","_slicedToArray","ele","appendedRef","queueCreate","_React$useState3","_React$useState4","queue","setQueue","mergedQueueCreate","current","undefined","appendFn","origin","newQueue","concat","_toConsumableArray","append","parentElement","body","appendChild","cleanup","_ele$parentElement","removeChild","useLayoutEffect","length","forEach","isBodyOverflowing","scrollHeight","window","innerHeight","documentElement","clientHeight","innerWidth","offsetWidth","UNIQUE_ID","Date","now","uuid","useScrollLocker","lock","mergedLock","id","scrollbarSize","getScrollBarSize","isOverflow","updateCSS","removeCSS","inline","inlineMock","nextInline","getPortalContainer","getContainer","querySelector","Portal","props","ref","open","autoLock","_props$autoDestroy","autoDestroy","children","shouldRender","setShouldRender","mergedRender","innerContainer","setInnerContainer","customizeContainer","_useDom","_useDom2","defaultContainer","mergedContainer","childRef","supportRef","_ref","mergedRef","useComposeRef","renderInline","reffedChildren","Provider","value","createPortal"],"mappings":"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","file":"static/js/vendors~main~8b91771a.8cc05e0b.chunk.js","sourcesContent":["import { Integration, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreInternal: boolean;\n\n /** @deprecated use {@link InboundFiltersOptions.allowUrls} instead. */\n whitelistUrls: Array;\n /** @deprecated use {@link InboundFiltersOptions.denyUrls} instead. */\n blacklistUrls: Array;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n\n public constructor(private readonly _options: Partial = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (processor: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((event: Event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n });\n }\n}\n\n/** JSDoc */\nexport function _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [\n // eslint-disable-next-line deprecation/deprecation\n ...(internalOptions.whitelistUrls || []),\n ...(internalOptions.allowUrls || []),\n // eslint-disable-next-line deprecation/deprecation\n ...(clientOptions.whitelistUrls || []),\n ...(clientOptions.allowUrls || []),\n ],\n denyUrls: [\n // eslint-disable-next-line deprecation/deprecation\n ...(internalOptions.blacklistUrls || []),\n ...(internalOptions.denyUrls || []),\n // eslint-disable-next-line deprecation/deprecation\n ...(clientOptions.blacklistUrls || []),\n ...(clientOptions.denyUrls || []),\n ],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nexport function _shouldDropEvent(event: Event, options: Partial): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n IS_DEBUG_BUILD &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n IS_DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n IS_DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n IS_DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message =>\n ignoreErrors.some(pattern => isMatchingPattern(message, pattern)),\n );\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : denyUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : allowUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n IS_DEBUG_BUILD && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n if (event.stacktrace) {\n return _getLastValidUrl(event.stacktrace.frames);\n }\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n IS_DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n","export { FunctionToString } from './functiontostring';\nexport { InboundFilters } from './inboundfilters';\n","export {\n addBreadcrumb,\n captureException,\n captureEvent,\n captureMessage,\n configureScope,\n startTransaction,\n setContext,\n setExtra,\n setExtras,\n setTag,\n setTags,\n setUser,\n withScope,\n} from '@sentry/minimal';\nexport { addGlobalEventProcessor, getCurrentHub, getHubFromCarrier, Hub, makeMain, Scope, Session } from '@sentry/hub';\nexport {\n // eslint-disable-next-line deprecation/deprecation\n API,\n APIDetails,\n getEnvelopeEndpointWithUrlEncodedAuth,\n getStoreEndpointWithUrlEncodedAuth,\n getRequestHeaders,\n initAPIDetails,\n getReportDialogEndpoint,\n} from './api';\nexport { BaseClient } from './baseclient';\nexport { BackendClass, BaseBackend } from './basebackend';\nexport { eventToSentryRequest, sessionToSentryRequest } from './request';\nexport { initAndBind, ClientClass } from './sdk';\nexport { NoopTransport } from './transports/noop';\nexport {\n BaseTransportOptions,\n createTransport,\n NewTransport,\n TransportMakeRequestResponse,\n TransportRequest,\n TransportRequestExecutor,\n} from './transports/base';\nexport { SDK_VERSION } from './version';\n\nimport * as Integrations from './integrations';\n\nexport { Integrations };\n","import { captureException, getReportDialogEndpoint, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getGlobalObject,\n getOriginalFunction,\n logger,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\n\nconst global = getGlobalObject();\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sentryWrapped: WrappedFunction = function (this: any): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n\n/**\n * Injects the Report Dialog script\n * @hidden\n */\nexport function injectReportDialog(options: ReportDialogOptions = {}): void {\n if (!global.document) {\n return;\n }\n\n if (!options.eventId) {\n IS_DEBUG_BUILD && logger.error('Missing eventId option in showReportDialog call');\n return;\n }\n\n if (!options.dsn) {\n IS_DEBUG_BUILD && logger.error('Missing dsn option in showReportDialog call');\n return;\n }\n\n const script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(options.dsn, options);\n\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n\n const injectionPoint = global.document.head || global.document.body;\n\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n }\n}\n","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { Hub } from '@sentry/types';\nimport { addInstrumentationHandler, getGlobalObject, logger, resolvedSyncPromise } from '@sentry/utils';\n\nimport { BrowserOptions } from './backend';\nimport { BrowserClient } from './client';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { ReportDialogOptions, wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, Dedupe, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new UserAgent(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n const window = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n initAndBind(BrowserClient, options);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}): void {\n const hub = getCurrentHub();\n const scope = hub.getScope();\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n const client = hub.getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\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 */\nexport function flush(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n IS_DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(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 */\nexport function close(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n IS_DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n return internalWrap(fn)();\n}\n\nfunction startSessionOnHub(hub: Hub): void {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n const window = getGlobalObject();\n const document = window.document;\n\n if (typeof document === 'undefined') {\n IS_DEBUG_BUILD && logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n const hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n","import { StackFrame } from '@sentry/types';\nimport { StackLineParser, StackLineParserFn } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome: StackLineParserFn = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackParser: StackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n","import { Event, EventHint, Exception, Severity, StackFrame } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n createStackParser,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport {\n chromeStackParser,\n geckoStackParser,\n opera10StackParser,\n opera11StackParser,\n winjsStackParser,\n} from './stack-parsers';\n\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromError(ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n exception: Record,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(syntheticException);\n if (frames.length) {\n event.stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(ex: Error & { framesToPop?: number; stacktrace?: string }): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return createStackParser(\n opera10StackParser,\n opera11StackParser,\n chromeStackParser,\n winjsStackParser,\n geckoStackParser,\n )(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n message: string,\n level: Severity = Severity.Info,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record;\n event = eventFromPlainObject(objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(input: string, syntheticException?: Error, attachStacktrace?: boolean): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(syntheticException);\n if (frames.length) {\n event.stacktrace = { frames };\n }\n }\n\n return event;\n}\n","import {\n Event,\n EventEnvelope,\n EventItem,\n SdkInfo,\n SentryRequest,\n SentryRequestType,\n Session,\n SessionAggregates,\n SessionEnvelope,\n SessionItem,\n} from '@sentry/types';\nimport { createEnvelope, dsnToString, normalize, serializeEnvelope } from '@sentry/utils';\n\nimport { APIDetails, getEnvelopeEndpointWithUrlEncodedAuth, getStoreEndpointWithUrlEncodedAuth } from './api';\n\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(api: APIDetails): SdkInfo | undefined {\n if (!api.metadata || !api.metadata.sdk) {\n return;\n }\n const { name, version } = api.metadata.sdk;\n return { name, version };\n}\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event: Event, sdkInfo?: SdkInfo): Event {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n session: Session | SessionAggregates,\n api: APIDetails,\n): [SessionEnvelope, SentryRequestType] {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),\n };\n\n // I know this is hacky but we don't want to add `sessions` to request type since it's never rate limited\n const type = 'aggregates' in session ? ('sessions' as SentryRequestType) : 'session';\n\n // TODO (v7) Have to cast type because envelope items do not accept a `SentryRequestType`\n const envelopeItem = [{ type } as { type: 'session' | 'sessions' }, session] as SessionItem;\n const envelope = createEnvelope(envelopeHeaders, [envelopeItem]);\n\n return [envelope, type];\n}\n\n/** Creates a SentryRequest from a Session. */\nexport function sessionToSentryRequest(session: Session | SessionAggregates, api: APIDetails): SentryRequest {\n const [envelope, type] = createSessionEnvelope(session, api);\n return {\n body: serializeEnvelope(envelope),\n type,\n url: getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel),\n };\n}\n\n/**\n * Create an Envelope from an event. Note that this is duplicated from below,\n * but on purpose as this will be refactored in v7.\n */\nexport function createEventEnvelope(event: Event, api: APIDetails): EventEnvelope {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n const eventType = event.type || 'event';\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n // TODO: Below is a temporary hack in order to debug a serialization error - see\n // https://github.com/getsentry/sentry-javascript/issues/2809,\n // https://github.com/getsentry/sentry-javascript/pull/4425, and\n // https://github.com/getsentry/sentry-javascript/pull/4574.\n //\n // TL; DR: even though we normalize all events (which should prevent this), something is causing `JSON.stringify` to\n // throw a circular reference error.\n //\n // When it's time to remove it:\n // 1. Delete everything between here and where the request object `req` is created, EXCEPT the line deleting\n // `sdkProcessingMetadata`\n // 2. Restore the original version of the request body, which is commented out\n // 3. Search for either of the PR URLs above and pull out the companion hacks in the browser playwright tests and the\n // baseClient tests in this package\n enhanceEventWithSdkInfo(event, api.metadata.sdk);\n event.tags = event.tags || {};\n event.extra = event.extra || {};\n\n // In theory, all events should be marked as having gone through normalization and so\n // we should never set this tag/extra data\n if (!(event.sdkProcessingMetadata && event.sdkProcessingMetadata.baseClientNormalized)) {\n event.tags.skippedNormalization = true;\n event.extra.normalizeDepth = event.sdkProcessingMetadata ? event.sdkProcessingMetadata.normalizeDepth : 'unset';\n }\n\n // prevent this data from being sent to sentry\n // TODO: This is NOT part of the hack - DO NOT DELETE\n delete event.sdkProcessingMetadata;\n\n const envelopeHeaders = {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),\n };\n const eventItem: EventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n event,\n ];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\n/** Creates a SentryRequest from an event. */\nexport function eventToSentryRequest(event: Event, api: APIDetails): SentryRequest {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n const eventType = event.type || 'event';\n const useEnvelope = eventType === 'transaction' || !!api.tunnel;\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n // TODO: Below is a temporary hack in order to debug a serialization error - see\n // https://github.com/getsentry/sentry-javascript/issues/2809,\n // https://github.com/getsentry/sentry-javascript/pull/4425, and\n // https://github.com/getsentry/sentry-javascript/pull/4574.\n //\n // TL; DR: even though we normalize all events (which should prevent this), something is causing `JSON.stringify` to\n // throw a circular reference error.\n //\n // When it's time to remove it:\n // 1. Delete everything between here and where the request object `req` is created, EXCEPT the line deleting\n // `sdkProcessingMetadata`\n // 2. Restore the original version of the request body, which is commented out\n // 3. Search for either of the PR URLs above and pull out the companion hacks in the browser playwright tests and the\n // baseClient tests in this package\n enhanceEventWithSdkInfo(event, api.metadata.sdk);\n event.tags = event.tags || {};\n event.extra = event.extra || {};\n\n // In theory, all events should be marked as having gone through normalization and so\n // we should never set this tag/extra data\n if (!(event.sdkProcessingMetadata && event.sdkProcessingMetadata.baseClientNormalized)) {\n event.tags.skippedNormalization = true;\n event.extra.normalizeDepth = event.sdkProcessingMetadata ? event.sdkProcessingMetadata.normalizeDepth : 'unset';\n }\n\n // prevent this data from being sent to sentry\n // TODO: This is NOT part of the hack - DO NOT DELETE\n delete event.sdkProcessingMetadata;\n\n let body;\n try {\n // 99.9% of events should get through just fine - no change in behavior for them\n body = JSON.stringify(event);\n } catch (err) {\n // Record data about the error without replacing original event data, then force renormalization\n event.tags.JSONStringifyError = true;\n event.extra.JSONStringifyError = err;\n try {\n body = JSON.stringify(normalize(event));\n } catch (newErr) {\n // At this point even renormalization hasn't worked, meaning something about the event data has gone very wrong.\n // Time to cut our losses and record only the new error. With luck, even in the problematic cases we're trying to\n // debug with this hack, we won't ever land here.\n const innerErr = newErr as Error;\n body = JSON.stringify({\n message: 'JSON.stringify error after renormalization',\n // setting `extra: { innerErr }` here for some reason results in an empty object, so unpack manually\n extra: { message: innerErr.message, stack: innerErr.stack },\n });\n }\n }\n\n const req: SentryRequest = {\n // this is the relevant line of code before the hack was added, to make it easy to undo said hack once we've solved\n // the mystery\n // body: JSON.stringify(sdkInfo ? enhanceEventWithSdkInfo(event, api.metadata.sdk) : event),\n body,\n type: eventType,\n url: useEnvelope\n ? getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel)\n : getStoreEndpointWithUrlEncodedAuth(api.dsn),\n };\n\n // https://develop.sentry.dev/sdk/envelopes/\n\n // Since we don't need to manipulate envelopes nor store them, there is no\n // exported concept of an Envelope with operations including serialization and\n // deserialization. Instead, we only implement a minimal subset of the spec to\n // serialize events inline here.\n if (useEnvelope) {\n const envelopeHeaders = {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),\n };\n const eventItem: EventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n req.body,\n ];\n const envelope = createEnvelope(envelopeHeaders, [eventItem]);\n req.body = serializeEnvelope(envelope);\n }\n\n return req;\n}\n","import {\n APIDetails,\n eventToSentryRequest,\n getEnvelopeEndpointWithUrlEncodedAuth,\n getStoreEndpointWithUrlEncodedAuth,\n initAPIDetails,\n sessionToSentryRequest,\n} from '@sentry/core';\nimport {\n ClientReport,\n Event,\n Outcome,\n Response as SentryResponse,\n SentryRequest,\n SentryRequestType,\n Session,\n Transport,\n TransportOptions,\n} from '@sentry/types';\nimport {\n createClientReportEnvelope,\n disabledUntil,\n dsnToString,\n eventStatusFromHttpCode,\n getGlobalObject,\n isRateLimited,\n logger,\n makePromiseBuffer,\n PromiseBuffer,\n RateLimits,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { sendReport } from './utils';\n\nfunction requestTypeToCategory(ty: SentryRequestType): string {\n const tyStr = ty as string;\n return tyStr === 'event' ? 'error' : tyStr;\n}\n\nconst global = getGlobalObject();\n\n/** Base Transport class implementation */\nexport abstract class BaseTransport implements Transport {\n /**\n * @deprecated\n */\n public url: string;\n\n /** Helper to get Sentry API endpoints. */\n protected readonly _api: APIDetails;\n\n /** A simple buffer holding all requests. */\n protected readonly _buffer: PromiseBuffer = makePromiseBuffer(30);\n\n /** Locks transport after receiving rate limits in a response */\n protected _rateLimits: RateLimits = {};\n\n protected _outcomes: { [key: string]: number } = {};\n\n public constructor(public options: TransportOptions) {\n this._api = initAPIDetails(options.dsn, options._metadata, options.tunnel);\n // eslint-disable-next-line deprecation/deprecation\n this.url = getStoreEndpointWithUrlEncodedAuth(this._api.dsn);\n\n if (this.options.sendClientReports && global.document) {\n global.document.addEventListener('visibilitychange', () => {\n if (global.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session): PromiseLike {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this._buffer.drain(timeout);\n }\n\n /**\n * @inheritDoc\n */\n public recordLostEvent(reason: Outcome, category: SentryRequestType): void {\n if (!this.options.sendClientReports) {\n return;\n }\n // We want to track each category (event, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n const key = `${requestTypeToCategory(category)}:${reason}`;\n IS_DEBUG_BUILD && logger.log(`Adding outcome: ${key}`);\n this._outcomes[key] = (this._outcomes[key] ?? 0) + 1;\n }\n\n /**\n * Send outcomes as an envelope\n */\n protected _flushOutcomes(): void {\n if (!this.options.sendClientReports) {\n return;\n }\n\n const outcomes = this._outcomes;\n this._outcomes = {};\n\n // Nothing to send\n if (!Object.keys(outcomes).length) {\n IS_DEBUG_BUILD && logger.log('No outcomes to flush');\n return;\n }\n\n IS_DEBUG_BUILD && logger.log(`Flushing outcomes:\\n${JSON.stringify(outcomes, null, 2)}`);\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._api.dsn, this._api.tunnel);\n\n const discardedEvents = Object.keys(outcomes).map(key => {\n const [category, reason] = key.split(':');\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n // TODO: Improve types on discarded_events to get rid of cast\n }) as ClientReport['discarded_events'];\n const envelope = createClientReportEnvelope(discardedEvents, this._api.tunnel && dsnToString(this._api.dsn));\n\n try {\n sendReport(url, serializeEnvelope(envelope));\n } catch (e) {\n IS_DEBUG_BUILD && logger.error(e);\n }\n }\n\n /**\n * Handle Sentry repsonse for promise-based transports.\n */\n protected _handleResponse({\n requestType,\n response,\n headers,\n resolve,\n reject,\n }: {\n requestType: SentryRequestType;\n response: Response | XMLHttpRequest;\n headers: Record;\n resolve: (value?: SentryResponse | PromiseLike | null | undefined) => void;\n reject: (reason?: unknown) => void;\n }): void {\n const status = eventStatusFromHttpCode(response.status);\n\n this._rateLimits = updateRateLimits(this._rateLimits, headers);\n // eslint-disable-next-line deprecation/deprecation\n if (this._isRateLimited(requestType)) {\n IS_DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.warn(`Too many ${requestType} requests, backing off until: ${this._disabledUntil(requestType)}`);\n }\n\n if (status === 'success') {\n resolve({ status });\n return;\n }\n\n reject(response);\n }\n\n /**\n * Gets the time that given category is disabled until for rate limiting\n *\n * @deprecated Please use `disabledUntil` from @sentry/utils\n */\n protected _disabledUntil(requestType: SentryRequestType): Date {\n const category = requestTypeToCategory(requestType);\n return new Date(disabledUntil(this._rateLimits, category));\n }\n\n /**\n * Checks if a category is rate limited\n *\n * @deprecated Please use `isRateLimited` from @sentry/utils\n */\n protected _isRateLimited(requestType: SentryRequestType): boolean {\n const category = requestTypeToCategory(requestType);\n return isRateLimited(this._rateLimits, category);\n }\n\n protected abstract _sendRequest(\n sentryRequest: SentryRequest,\n originalPayload: Event | Session,\n ): PromiseLike;\n}\n","import { forget, getGlobalObject, isNativeFetch, logger, supportsFetch } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\n\nconst global = getGlobalObject();\nlet cachedFetchImpl: FetchImpl;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n\n const document = global.document;\n let fetchImpl = global.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n IS_DEBUG_BUILD &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(global));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nexport function sendReport(url: string, body: string): void {\n const isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n const hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\n\n if (hasSendBeacon) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n const sendBeacon = global.navigator.sendBeacon.bind(global.navigator);\n return sendBeacon(url, body);\n }\n\n if (supportsFetch()) {\n const fetch = getNativeFetchImplementation();\n return forget(\n fetch(url, {\n body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }),\n );\n }\n}\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Severity,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, getGlobalSingleton, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n\nimport { Session } from './session';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: Primitive } = {};\n\n /** Extra */\n protected _extra: Extras = {};\n\n /** Contexts */\n protected _contexts: Contexts = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: Severity;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\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 protected _sdkProcessingMetadata?: { [key: string]: unknown } = {};\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n this._session.update({ user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(level: Severity): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n public setTransaction(name?: string): this {\n return this.setTransactionName(name);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\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.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\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 public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\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 return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : 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 this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional information about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint?: EventHint): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\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 (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = this._sdkProcessingMetadata;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._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 public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint?: EventHint,\n index: number = 0,\n ): PromiseLike {\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) as Event | null;\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\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 * 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 */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._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}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","// TODO: Remove in the next major release and rely only on @sentry/core SDK_VERSION and SdkInfo metadata\nexport const SDK_NAME = 'sentry.javascript.browser';\n","export {\n Breadcrumb,\n BreadcrumbHint,\n Request,\n SdkInfo,\n Event,\n EventHint,\n EventStatus,\n Exception,\n Response,\n Severity,\n StackFrame,\n Stacktrace,\n Thread,\n User,\n} from '@sentry/types';\n\nexport { SeverityLevel } from '@sentry/utils';\n\nexport {\n addGlobalEventProcessor,\n addBreadcrumb,\n captureException,\n captureEvent,\n captureMessage,\n configureScope,\n getHubFromCarrier,\n getCurrentHub,\n Hub,\n makeMain,\n Scope,\n Session,\n startTransaction,\n SDK_VERSION,\n setContext,\n setExtra,\n setExtras,\n setTag,\n setTags,\n setUser,\n withScope,\n} from '@sentry/core';\n\nexport { BrowserOptions } from './backend';\nexport { BrowserClient } from './client';\nexport { injectReportDialog, ReportDialogOptions } from './helpers';\nexport { eventFromException, eventFromMessage } from './eventbuilder';\nexport { defaultIntegrations, forceLoad, init, lastEventId, onLoad, showReportDialog, flush, close, wrap } from './sdk';\nexport { SDK_NAME } from './version';\n","export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nconst _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...CoreIntegrations,\n ...BrowserIntegrations,\n};\n\nexport { INTEGRATIONS as Integrations, Transports };\n","import { Event, Response, Transport } from '@sentry/types';\nimport { resolvedSyncPromise } from '@sentry/utils';\n\n/** Noop transport */\nexport class NoopTransport implements Transport {\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike {\n return resolvedSyncPromise({\n reason: 'NoopTransport: Event has been skipped because no Dsn is configured.',\n status: 'skipped',\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(_?: number): PromiseLike {\n return resolvedSyncPromise(true);\n }\n}\n","export { GlobalHandlers } from './globalhandlers';\nexport { TryCatch } from './trycatch';\nexport { Breadcrumbs } from './breadcrumbs';\nexport { LinkedErrors } from './linkederrors';\nexport { UserAgent } from './useragent';\nexport { Dedupe } from './dedupe';\n","import { BaseBackend, getEnvelopeEndpointWithUrlEncodedAuth, initAPIDetails } from '@sentry/core';\nimport { Event, EventHint, Options, Severity, Transport, TransportOptions } from '@sentry/types';\nimport { supportsFetch } from '@sentry/utils';\n\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { FetchTransport, makeNewFetchTransport, makeNewXHRTransport, XHRTransport } from './transports';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see BrowserClient for more information.\n */\nexport interface BrowserOptions extends Options {\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.denyUrls}.\n * By default, all errors will be sent.\n */\n allowUrls?: Array;\n\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To allow certain errors instead, use {@link Options.allowUrls}.\n * By default, all errors will be sent.\n */\n denyUrls?: Array;\n\n /** @deprecated use {@link Options.allowUrls} instead. */\n whitelistUrls?: Array;\n\n /** @deprecated use {@link Options.denyUrls} instead. */\n blacklistUrls?: Array;\n}\n\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nexport class BrowserBackend extends BaseBackend {\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n return eventFromException(exception, hint, this._options.attachStacktrace);\n }\n /**\n * @inheritDoc\n */\n public eventFromMessage(message: string, level: Severity = Severity.Info, hint?: EventHint): PromiseLike {\n return eventFromMessage(message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n protected _setupTransport(): Transport {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return super._setupTransport();\n }\n\n const transportOptions: TransportOptions = {\n ...this._options.transportOptions,\n dsn: this._options.dsn,\n tunnel: this._options.tunnel,\n sendClientReports: this._options.sendClientReports,\n _metadata: this._options._metadata,\n };\n\n const api = initAPIDetails(transportOptions.dsn, transportOptions._metadata, transportOptions.tunnel);\n const url = getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel);\n\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n const requestOptions: RequestInit = { ...transportOptions.fetchParameters };\n this._newTransport = makeNewFetchTransport({ requestOptions, url });\n return new FetchTransport(transportOptions);\n }\n\n this._newTransport = makeNewXHRTransport({\n url,\n headers: transportOptions.headers,\n });\n return new XHRTransport(transportOptions);\n }\n}\n","import { BaseClient, Scope, SDK_VERSION } from '@sentry/core';\nimport { Event, EventHint } from '@sentry/types';\nimport { getGlobalObject, logger } from '@sentry/utils';\n\nimport { BrowserBackend, BrowserOptions } from './backend';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { injectReportDialog, ReportDialogOptions } from './helpers';\nimport { Breadcrumbs } from './integrations';\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserOptions = {}) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(BrowserBackend, options);\n }\n\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n public showReportDialog(options: ReportDialogOptions = {}): void {\n // doesn't work without a document (React Native)\n const document = getGlobalObject().document;\n if (!document) {\n return;\n }\n\n if (!this._isEnabled()) {\n IS_DEBUG_BUILD && logger.error('Trying to call showReportDialog with Sentry Client disabled');\n return;\n }\n\n injectReportDialog({\n ...options,\n dsn: options.dsn || this.getDsn(),\n });\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, scope, hint);\n }\n\n /**\n * @inheritDoc\n */\n protected _sendEvent(event: Event): void {\n const integration = this.getIntegration(Breadcrumbs);\n if (integration) {\n integration.addSentryBreadcrumb(event);\n }\n super._sendEvent(event);\n }\n}\n","export const SDK_VERSION = '6.19.7';\n","import { Envelope, EventStatus } from '@sentry/types';\nimport {\n disabledUntil,\n eventStatusFromHttpCode,\n getEnvelopeType,\n isRateLimited,\n makePromiseBuffer,\n PromiseBuffer,\n RateLimits,\n rejectedSyncPromise,\n resolvedSyncPromise,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nexport const ERROR_TRANSPORT_CATEGORY = 'error';\n\nexport const TRANSACTION_TRANSPORT_CATEGORY = 'transaction';\n\nexport const ATTACHMENT_TRANSPORT_CATEGORY = 'attachment';\n\nexport const SESSION_TRANSPORT_CATEGORY = 'session';\n\ntype TransportCategory =\n | typeof ERROR_TRANSPORT_CATEGORY\n | typeof TRANSACTION_TRANSPORT_CATEGORY\n | typeof ATTACHMENT_TRANSPORT_CATEGORY\n | typeof SESSION_TRANSPORT_CATEGORY;\n\nexport type TransportRequest = {\n body: string;\n category: TransportCategory;\n};\n\nexport type TransportMakeRequestResponse = {\n body?: string;\n headers?: {\n [key: string]: string | null;\n 'x-sentry-rate-limits': string | null;\n 'retry-after': string | null;\n };\n reason?: string;\n statusCode: number;\n};\n\nexport type TransportResponse = {\n status: EventStatus;\n reason?: string;\n};\n\ninterface InternalBaseTransportOptions {\n bufferSize?: number;\n}\n\nexport interface BaseTransportOptions extends InternalBaseTransportOptions {\n // url to send the event\n // transport does not care about dsn specific - client should take care of\n // parsing and figuring that out\n url: string;\n}\n\n// TODO: Move into Browser Transport\nexport interface BrowserTransportOptions extends BaseTransportOptions {\n // options to pass into fetch request\n fetchParams: Record;\n headers?: Record;\n sendClientReports?: boolean;\n}\n\nexport interface NewTransport {\n send(request: Envelope): PromiseLike;\n flush(timeout?: number): PromiseLike;\n}\n\nexport type TransportRequestExecutor = (request: TransportRequest) => PromiseLike;\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates a `NewTransport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n): NewTransport {\n let rateLimits: RateLimits = {};\n\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const envCategory = getEnvelopeType(envelope);\n const category = envCategory === 'event' ? 'error' : (envCategory as TransportCategory);\n const request: TransportRequest = {\n category,\n body: serializeEnvelope(envelope),\n };\n\n // Don't add to buffer if transport is already rate-limited\n if (isRateLimited(rateLimits, category)) {\n return rejectedSyncPromise({\n status: 'rate_limit',\n reason: getRateLimitReason(rateLimits, category),\n });\n }\n\n const requestTask = (): PromiseLike =>\n makeRequest(request).then(({ body, headers, reason, statusCode }): PromiseLike => {\n const status = eventStatusFromHttpCode(statusCode);\n if (headers) {\n rateLimits = updateRateLimits(rateLimits, headers);\n }\n if (status === 'success') {\n return resolvedSyncPromise({ status, reason });\n }\n return rejectedSyncPromise({\n status,\n reason:\n reason ||\n body ||\n (status === 'rate_limit' ? getRateLimitReason(rateLimits, category) : 'Unknown transport error'),\n });\n });\n\n return buffer.add(requestTask);\n }\n\n return {\n send,\n flush,\n };\n}\n\nfunction getRateLimitReason(rateLimits: RateLimits, category: TransportCategory): string {\n return `Too many ${category} requests, backing off until: ${new Date(\n disabledUntil(rateLimits, category),\n ).toISOString()}`;\n}\n","import * as React from 'react';\nvar OrderContext = /*#__PURE__*/React.createContext(null);\nexport default OrderContext;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport OrderContext from \"./Context\";\nvar EMPTY_LIST = [];\n\n/**\n * Will add `div` to document. Nest call will keep order\n * @param render Render DOM in document\n */\nexport default function useDom(render, debug) {\n var _React$useState = React.useState(function () {\n if (!canUseDom()) {\n return null;\n }\n var defaultEle = document.createElement('div');\n if (process.env.NODE_ENV !== 'production' && debug) {\n defaultEle.setAttribute('data-debug', debug);\n }\n return defaultEle;\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n ele = _React$useState2[0];\n\n // ========================== Order ==========================\n var appendedRef = React.useRef(false);\n var queueCreate = React.useContext(OrderContext);\n var _React$useState3 = React.useState(EMPTY_LIST),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n queue = _React$useState4[0],\n setQueue = _React$useState4[1];\n var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {\n setQueue(function (origin) {\n var newQueue = [appendFn].concat(_toConsumableArray(origin));\n return newQueue;\n });\n });\n\n // =========================== DOM ===========================\n function append() {\n if (!ele.parentElement) {\n document.body.appendChild(ele);\n }\n appendedRef.current = true;\n }\n function cleanup() {\n var _ele$parentElement;\n (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);\n appendedRef.current = false;\n }\n useLayoutEffect(function () {\n if (render) {\n if (queueCreate) {\n queueCreate(append);\n } else {\n append();\n }\n } else {\n cleanup();\n }\n return cleanup;\n }, [render]);\n useLayoutEffect(function () {\n if (queue.length) {\n queue.forEach(function (appendFn) {\n return appendFn();\n });\n setQueue(EMPTY_LIST);\n }\n }, [queue]);\n return [ele, mergedQueueCreate];\n}","/**\n * Test usage export. Do not use in your production\n */\nexport function isBodyOverflowing() {\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { updateCSS, removeCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport { isBodyOverflowing } from \"./util\";\nvar UNIQUE_ID = \"rc-util-locker-\".concat(Date.now());\nvar uuid = 0;\nexport default function useScrollLocker(lock) {\n var mergedLock = !!lock;\n var _React$useState = React.useState(function () {\n uuid += 1;\n return \"\".concat(UNIQUE_ID, \"_\").concat(uuid);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n id = _React$useState2[0];\n useLayoutEffect(function () {\n if (mergedLock) {\n var scrollbarSize = getScrollBarSize();\n var isOverflow = isBodyOverflowing();\n updateCSS(\"\\nhtml body {\\n overflow-y: hidden;\\n \".concat(isOverflow ? \"width: calc(100% - \".concat(scrollbarSize, \"px);\") : '', \"\\n}\"), id);\n } else {\n removeCSS(id);\n }\n return function () {\n removeCSS(id);\n };\n }, [mergedLock, id]);\n}","export var inline = false;\nexport function inlineMock(nextInline) {\n if (typeof nextInline === 'boolean') {\n inline = nextInline;\n }\n return inline;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport warning from \"rc-util/es/warning\";\nimport { supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport OrderContext from \"./Context\";\nimport useDom from \"./useDom\";\nimport useScrollLocker from \"./useScrollLocker\";\nimport { inlineMock } from \"./mock\";\nvar getPortalContainer = function getPortalContainer(getContainer) {\n if (getContainer === false) {\n return false;\n }\n if (!canUseDom() || !getContainer) {\n return null;\n }\n if (typeof getContainer === 'string') {\n return document.querySelector(getContainer);\n }\n if (typeof getContainer === 'function') {\n return getContainer();\n }\n return getContainer;\n};\nvar Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var open = props.open,\n autoLock = props.autoLock,\n getContainer = props.getContainer,\n debug = props.debug,\n _props$autoDestroy = props.autoDestroy,\n autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,\n children = props.children;\n var _React$useState = React.useState(open),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n shouldRender = _React$useState2[0],\n setShouldRender = _React$useState2[1];\n var mergedRender = shouldRender || open;\n\n // ========================= Warning =========================\n if (process.env.NODE_ENV !== 'production') {\n warning(canUseDom() || !open, \"Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.\");\n }\n\n // ====================== Should Render ======================\n React.useEffect(function () {\n if (autoDestroy || open) {\n setShouldRender(open);\n }\n }, [open, autoDestroy]);\n\n // ======================== Container ========================\n var _React$useState3 = React.useState(function () {\n return getPortalContainer(getContainer);\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n innerContainer = _React$useState4[0],\n setInnerContainer = _React$useState4[1];\n React.useEffect(function () {\n var customizeContainer = getPortalContainer(getContainer);\n\n // Tell component that we check this in effect which is safe to be `null`\n setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);\n });\n var _useDom = useDom(mergedRender && !innerContainer, debug),\n _useDom2 = _slicedToArray(_useDom, 2),\n defaultContainer = _useDom2[0],\n queueCreate = _useDom2[1];\n var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;\n\n // ========================= Locker ==========================\n useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body));\n\n // =========================== Ref ===========================\n var childRef = null;\n if (children && supportRef(children) && ref) {\n var _ref = children;\n childRef = _ref.ref;\n }\n var mergedRef = useComposeRef(childRef, ref);\n\n // ========================= Render ==========================\n // Do not render when nothing need render\n // When innerContainer is `undefined`, it may not ready since user use ref in the same render\n if (!mergedRender || !canUseDom() || innerContainer === undefined) {\n return null;\n }\n\n // Render inline\n var renderInline = mergedContainer === false || inlineMock();\n var reffedChildren = children;\n if (ref) {\n reffedChildren = /*#__PURE__*/React.cloneElement(children, {\n ref: mergedRef\n });\n }\n return /*#__PURE__*/React.createElement(OrderContext.Provider, {\n value: queueCreate\n }, renderInline ? reffedChildren : /*#__PURE__*/createPortal(reffedChildren, mergedContainer));\n});\nif (process.env.NODE_ENV !== 'production') {\n Portal.displayName = 'Portal';\n}\nexport default Portal;","import Portal from \"./Portal\";\nimport { inlineMock } from \"./mock\";\nexport { inlineMock };\nexport default Portal;","export { BaseTransport } from './base';\nexport { FetchTransport } from './fetch';\nexport { XHRTransport } from './xhr';\n\nexport { makeNewFetchTransport } from './new-fetch';\nexport { makeNewXHRTransport } from './new-xhr';\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getGlobalObject, getOriginalFunction } from '@sentry/utils';\n\nimport { wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** JSDoc */\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /** JSDoc */\n private readonly _options: TryCatchOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n const global = getGlobalObject();\n\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n}\n\n/** JSDoc */\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const global = getGlobalObject() as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = global[target] && global[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: () => void): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Severity } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n getEventDescription,\n getGlobalObject,\n htmlTreeAsString,\n parseUrl,\n safeJoin,\n severityFromString,\n} from '@sentry/utils';\n\n/** JSDoc */\ninterface BreadcrumbsOptions {\n console: boolean;\n dom: boolean | { serializeAttribute: string | string[] };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Breadcrumbs';\n\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /** JSDoc */\n private readonly _options: BreadcrumbsOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Create a breadcrumb of `sentry` from the events themselves\n */\n public addSentryBreadcrumb(event: Event): void {\n if (!this._options.sentry) {\n return;\n }\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this._options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this._options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this._options.dom));\n }\n if (this._options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this._options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this._options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom: BreadcrumbsOptions['dom']): (handlerData: { [key: string]: any }) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node, keyAttrs)\n : htmlTreeAsString(handlerData.event as unknown as Node, keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: Severity.Error,\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n const global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Hub, Integration, Primitive, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\n/** JSDoc */\ntype GlobalHandlersIntegrations = Record;\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n private _installFunc: Record void) | undefined> = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key as GlobalHandlersIntegrationsOptionKeys];\n if (installFunc && options[key as GlobalHandlersIntegrationsOptionKeys]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key as GlobalHandlersIntegrationsOptionKeys] = undefined;\n }\n }\n }\n}\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler(): void {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const [hub, attachStacktrace] = getHubAndAttachStacktrace();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = Severity.Error;\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler(): void {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const [hub, attachStacktrace] = getHubAndAttachStacktrace();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(error, undefined, attachStacktrace, true);\n\n event.level = Severity.Error;\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n IS_DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub: Hub, error: EventHint['originalException'], event: Event, type: string): void {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndAttachStacktrace(): [Hub, boolean | undefined] {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const attachStacktrace = client && client.getOptions().attachStacktrace;\n return [hub, attachStacktrace];\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { exceptionFromError } from '../eventbuilder';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\ninterface LinkedErrorsOptions {\n key: string;\n limit: number;\n}\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n private readonly _key: LinkedErrorsOptions['key'];\n\n /**\n * @inheritDoc\n */\n private readonly _limit: LinkedErrorsOptions['limit'];\n\n /**\n * @inheritDoc\n */\n public constructor(options: Partial = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(self._key, self._limit, event, hint) : event;\n });\n }\n}\n\n/**\n * @inheritDoc\n */\nexport function _handler(key: string, limit: number, event: Event, hint?: EventHint): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = _walkErrorTree(limit, hint.originalException as ExtendedError, key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nexport function _walkErrorTree(limit: number, error: ExtendedError, key: string, stack: Exception[] = []): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n const exception = exceptionFromError(error[key]);\n return _walkErrorTree(limit, error[key], key, [exception, ...stack]);\n}\n","import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((currentEvent: Event) => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n IS_DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n } else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\nimport { getGlobalObject } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/** UserAgent */\nexport class UserAgent implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'UserAgent';\n\n /**\n * @inheritDoc\n */\n public name: string = UserAgent.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(UserAgent)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (global.location && global.location.href);\n const { referrer } = global.document || {};\n const { userAgent } = global.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n}\n","import { getCurrentHub } from '@sentry/hub';\nimport { Client, Options } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(clientClass: ClientClass, options: O): void {\n if (options.debug === true) {\n if (IS_DEBUG_BUILD) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n","import {\n BaseTransportOptions,\n createTransport,\n NewTransport,\n TransportMakeRequestResponse,\n TransportRequest,\n} from '@sentry/core';\n\nimport { FetchImpl, getNativeFetchImplementation } from './utils';\n\nexport interface FetchTransportOptions extends BaseTransportOptions {\n requestOptions?: RequestInit;\n}\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeNewFetchTransport(\n options: FetchTransportOptions,\n nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): NewTransport {\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n ...options.requestOptions,\n };\n\n return nativeFetch(options.url, requestOptions).then(response => {\n return response.text().then(body => ({\n body,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n reason: response.statusText,\n statusCode: response.status,\n }));\n });\n }\n\n return createTransport({ bufferSize: options.bufferSize }, makeRequest);\n}\n","import { Event, Response, SentryRequest, Session, TransportOptions } from '@sentry/types';\nimport { SentryError, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\nimport { FetchImpl, getNativeFetchImplementation } from './utils';\n\n/** `fetch` based transport */\nexport class FetchTransport extends BaseTransport {\n /**\n * Fetch API reference which always points to native browser implementation.\n */\n private _fetch: typeof fetch;\n\n public constructor(options: TransportOptions, fetchImpl: FetchImpl = getNativeFetchImplementation()) {\n super(options);\n this._fetch = fetchImpl;\n }\n\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n protected _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike {\n // eslint-disable-next-line deprecation/deprecation\n if (this._isRateLimited(sentryRequest.type)) {\n this.recordLostEvent('ratelimit_backoff', sentryRequest.type);\n\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n // eslint-disable-next-line deprecation/deprecation\n reason: `Transport for ${sentryRequest.type} requests locked till ${this._disabledUntil(\n sentryRequest.type,\n )} due to too many requests.`,\n status: 429,\n });\n }\n\n const options: RequestInit = {\n body: sentryRequest.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : '') as ReferrerPolicy,\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n\n return this._buffer\n .add(\n () =>\n new SyncPromise((resolve, reject) => {\n void this._fetch(sentryRequest.url, options)\n .then(response => {\n const headers = {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n };\n this._handleResponse({\n requestType: sentryRequest.type,\n response,\n headers,\n resolve,\n reject,\n });\n })\n .catch(reject);\n }),\n )\n .then(undefined, reason => {\n // It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.\n if (reason instanceof SentryError) {\n this.recordLostEvent('queue_overflow', sentryRequest.type);\n } else {\n this.recordLostEvent('network_error', sentryRequest.type);\n }\n throw reason;\n });\n }\n}\n","import {\n BaseTransportOptions,\n createTransport,\n NewTransport,\n TransportMakeRequestResponse,\n TransportRequest,\n} from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\nexport interface XHRTransportOptions extends BaseTransportOptions {\n headers?: { [key: string]: string };\n}\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeNewXHRTransport(options: XHRTransportOptions): NewTransport {\n function makeRequest(request: TransportRequest): PromiseLike {\n return new SyncPromise((resolve, _reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = (): void => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n const response = {\n body: xhr.response,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n reason: xhr.statusText,\n statusCode: xhr.status,\n };\n resolve(response);\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport({ bufferSize: options.bufferSize }, makeRequest);\n}\n","import { Event, Response, SentryRequest, Session } from '@sentry/types';\nimport { SentryError, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\n/** `XHR` based transport */\nexport class XHRTransport extends BaseTransport {\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n protected _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike {\n // eslint-disable-next-line deprecation/deprecation\n if (this._isRateLimited(sentryRequest.type)) {\n this.recordLostEvent('ratelimit_backoff', sentryRequest.type);\n\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n // eslint-disable-next-line deprecation/deprecation\n reason: `Transport for ${sentryRequest.type} requests locked till ${this._disabledUntil(\n sentryRequest.type,\n )} due to too many requests.`,\n status: 429,\n });\n }\n\n return this._buffer\n .add(\n () =>\n new SyncPromise((resolve, reject) => {\n const request = new XMLHttpRequest();\n\n request.onreadystatechange = (): void => {\n if (request.readyState === 4) {\n const headers = {\n 'x-sentry-rate-limits': request.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': request.getResponseHeader('Retry-After'),\n };\n this._handleResponse({ requestType: sentryRequest.type, response: request, headers, resolve, reject });\n }\n };\n\n request.open('POST', sentryRequest.url);\n for (const header in this.options.headers) {\n if (Object.prototype.hasOwnProperty.call(this.options.headers, header)) {\n request.setRequestHeader(header, this.options.headers[header]);\n }\n }\n request.send(sentryRequest.body);\n }),\n )\n .then(undefined, reason => {\n // It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.\n if (reason instanceof SentryError) {\n this.recordLostEvent('queue_overflow', sentryRequest.type);\n } else {\n this.recordLostEvent('network_error', sentryRequest.type);\n }\n throw reason;\n });\n }\n}\n","import { Event, EventHint, Options, Session, Severity, Transport } from '@sentry/types';\nimport { logger, SentryError } from '@sentry/utils';\n\nimport { initAPIDetails } from './api';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { createEventEnvelope, createSessionEnvelope } from './request';\nimport { NewTransport } from './transports/base';\nimport { NoopTransport } from './transports/noop';\n\n/**\n * Internal platform-dependent Sentry SDK Backend.\n *\n * While {@link Client} contains business logic specific to an SDK, the\n * Backend offers platform specific implementations for low-level operations.\n * These are persisting and loading information, sending events, and hooking\n * into the environment.\n *\n * Backends receive a handle to the Client in their constructor. When a\n * Backend automatically generates events, it must pass them to\n * the Client for validation and processing first.\n *\n * Usually, the Client will be of corresponding type, e.g. NodeBackend\n * receives NodeClient. However, higher-level SDKs can choose to instantiate\n * multiple Backends and delegate tasks between them. In this case, an event\n * generated by one backend might very well be sent by another one.\n *\n * The client also provides access to options via {@link Client.getOptions}.\n * @hidden\n */\nexport interface Backend {\n /** Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n eventFromException(exception: any, hint?: EventHint): PromiseLike;\n\n /** Creates an {@link Event} from primitive inputs to `captureMessage`. */\n eventFromMessage(message: string, level?: Severity, hint?: EventHint): PromiseLike;\n\n /** Submits the event to Sentry */\n sendEvent(event: Event): void;\n\n /** Submits the session to Sentry */\n sendSession(session: Session): void;\n\n /**\n * Returns the transport that is used by the backend.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n *\n * @returns The transport.\n */\n getTransport(): Transport;\n}\n\n/**\n * A class object that can instantiate Backend objects.\n * @hidden\n */\nexport type BackendClass = new (options: O) => B;\n\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nexport abstract class BaseBackend implements Backend {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** Cached transport used internally. */\n protected _transport: Transport;\n\n /** New v7 Transport that is initialized alongside the old one */\n protected _newTransport?: NewTransport;\n\n /** Creates a new backend instance. */\n public constructor(options: O) {\n this._options = options;\n if (!this._options.dsn) {\n IS_DEBUG_BUILD && logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public eventFromException(_exception: any, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromException` method');\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(_message: string, _level?: Severity, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): void {\n // TODO(v7): Remove the if-else\n if (\n this._newTransport &&\n this._options.dsn &&\n this._options._experiments &&\n this._options._experiments.newTransport\n ) {\n const api = initAPIDetails(this._options.dsn, this._options._metadata, this._options.tunnel);\n const env = createEventEnvelope(event, api);\n void this._newTransport.send(env).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n } else {\n void this._transport.sendEvent(event).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session): void {\n if (!this._transport.sendSession) {\n IS_DEBUG_BUILD && logger.warn(\"Dropping session because custom transport doesn't implement sendSession\");\n return;\n }\n\n // TODO(v7): Remove the if-else\n if (\n this._newTransport &&\n this._options.dsn &&\n this._options._experiments &&\n this._options._experiments.newTransport\n ) {\n const api = initAPIDetails(this._options.dsn, this._options._metadata, this._options.tunnel);\n const [env] = createSessionEnvelope(session, api);\n void this._newTransport.send(env).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending session:', reason);\n });\n } else {\n void this._transport.sendSession(session).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending session:', reason);\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport {\n return this._transport;\n }\n\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n protected _setupTransport(): Transport {\n return new NoopTransport();\n }\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Integration, Options } from '@sentry/types';\nimport { addNonEnumerableProperty, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n} & { initialized?: boolean };\n\n/**\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n return integrations.reduce((acc, integrations) => {\n if (acc.every(accIntegration => integrations.name !== accIntegration.name)) {\n acc.push(integrations);\n }\n return acc;\n }, [] as Integration[]);\n}\n\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n const userIntegrations = options.integrations;\n\n let integrations: Integration[] = [...filterDuplicates(defaultIntegrations)];\n\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = [\n ...integrations.filter(integrations =>\n userIntegrations.every(userIntegration => userIntegration.name !== integrations.name),\n ),\n // And filter out duplicated user options integrations\n ...filterDuplicates(userIntegrations),\n ];\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n const integrationsNames = integrations.map(i => i.name);\n const alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/** Setup given integration */\nexport function setupIntegration(integration: Integration): void {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n IS_DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options: O): IntegrationIndex {\n const integrations: IntegrationIndex = {};\n getIntegrationsToSetup(options).forEach(integration => {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n // set the `initialized` flag so we don't run through the process again unecessarily; use `Object.defineProperty`\n // because by default it creates a property which is nonenumerable, which we want since `initialized` shouldn't be\n // considered a member of the index the way the actual integrations are\n addNonEnumerableProperty(integrations, 'initialized', true);\n return integrations;\n}\n","/* eslint-disable max-lines */\nimport { Scope, Session } from '@sentry/hub';\nimport {\n Client,\n DsnComponents,\n Event,\n EventHint,\n Integration,\n IntegrationClass,\n Options,\n Severity,\n Transport,\n} from '@sentry/types';\nimport {\n checkOrSetAlreadyCaught,\n dateTimestampInSeconds,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n normalize,\n rejectedSyncPromise,\n resolvedSyncPromise,\n SentryError,\n SyncPromise,\n truncate,\n uuid4,\n} from '@sentry/utils';\n\nimport { Backend, BackendClass } from './basebackend';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { IntegrationIndex, setupIntegrations } from './integration';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /**\n * The backend used to physically interact in the environment. Usually, this\n * will correspond to the client. When composing SDKs, however, the Backend\n * from the root SDK will be used.\n */\n protected readonly _backend: B;\n\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n /** Array of used integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Number of calls being processed */\n protected _numProcessing: number = 0;\n\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n protected constructor(backendClass: BackendClass, options: O) {\n this._backend = new backendClass(options);\n this._options = options;\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n IS_DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._getBackend()\n .eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(String(message), level, hint)\n : this._getBackend().eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n IS_DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!this._isEnabled()) {\n IS_DEBUG_BUILD && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n IS_DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this._sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n session.update({ init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport {\n return this._getBackend().getTransport();\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return this.getTransport()\n .close(timeout)\n .then(transportFlushed => clientFinished && transportFlushed);\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled() && !this._integrations.initialized) {\n this._integrations = setupIntegrations(this._options);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n IS_DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n session.update({\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /** Deliver captured session to Sentry */\n protected _sendSession(session: Session): void {\n this._getBackend().sendSession(session);\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Returns the current backend. */\n protected _getBackend(): B {\n return this._backend;\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = this.getOptions();\n const prepared: Event = {\n ...event,\n event_id: event.event_id || (hint && hint.event_id ? hint.event_id : uuid4()),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\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 let finalScope = scope;\n if (hint && hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (evt) {\n // TODO this is more of the hack trying to solve https://github.com/getsentry/sentry-javascript/issues/2809\n // it is only attached as extra data to the event if the event somehow skips being normalized\n evt.sdkProcessingMetadata = {\n ...evt.sdkProcessingMetadata,\n normalizeDepth: `${normalize(normalizeDepth)} (${typeof normalizeDepth})`,\n };\n }\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\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 */\n protected _normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\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 // 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) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n normalized.contexts.trace = event.contexts.trace;\n }\n\n normalized.sdkProcessingMetadata = { ...normalized.sdkProcessingMetadata, baseClientNormalized: true };\n\n return normalized;\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 */\n protected _applyClientOptions(event: Event): void {\n const options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\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\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 */\n protected _applyIntegrationsMetadata(event: Event): void {\n const integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Tells the backend to send this event\n * @param event The Sentry event to send\n */\n protected _sendEvent(event: Event): void {\n this._getBackend().sendEvent(event);\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint?: EventHint, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n IS_DEBUG_BUILD && logger.error(reason);\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint?: EventHint, scope?: Scope): PromiseLike {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeSend, sampleRate } = this.getOptions();\n const transport = this.getTransport();\n\n type RecordLostEvent = NonNullable;\n type RecordLostEventParams = Parameters;\n\n function recordLostEvent(outcome: RecordLostEventParams[0], category: RecordLostEventParams[1]): void {\n if (transport.recordLostEvent) {\n transport.recordLostEvent(outcome, category);\n }\n }\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.'));\n }\n\n const isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n recordLostEvent('sample_rate', 'event');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n return this._prepareEvent(event, scope, hint)\n .then(prepared => {\n if (prepared === null) {\n recordLostEvent('event_processor', event.type || 'event');\n throw new SentryError('An event processor returned null, will not send event.');\n }\n\n const isInternalException = hint && hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n\n const beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n recordLostEvent('before_send', event.type || 'event');\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n\n const session = scope && scope.getSession && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n this._sendEvent(processedEvent);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv: PromiseLike | Event | null): PromiseLike | Event | null {\n const nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if (isThenable(rv)) {\n return rv.then(\n event => {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n },\n e => {\n throw new SentryError(`beforeSend rejected with ${e}`);\n },\n );\n } else if (!(isPlainObject(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n","import { Session as SessionInterface, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * @inheritdoc\n */\nexport class Session implements SessionInterface {\n public userAgent?: string;\n public errors: number = 0;\n public release?: string;\n public sid: string = uuid4();\n public did?: string;\n public timestamp: number;\n public started: number;\n public duration?: number = 0;\n public status: SessionStatus = 'ok';\n public environment?: string;\n public ipAddress?: string;\n public init: boolean = true;\n public ignoreDuration: boolean = false;\n\n public constructor(context?: Omit) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n this.timestamp = startingTime;\n this.started = startingTime;\n if (context) {\n this.update(context);\n }\n }\n\n /** JSDoc */\n // eslint-disable-next-line complexity\n public update(context: SessionContext = {}): void {\n if (context.user) {\n if (!this.ipAddress && context.user.ip_address) {\n this.ipAddress = context.user.ip_address;\n }\n\n if (!this.did && !context.did) {\n this.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n this.timestamp = context.timestamp || timestampInSeconds();\n if (context.ignoreDuration) {\n this.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n this.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n this.init = context.init;\n }\n if (!this.did && context.did) {\n this.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n this.started = context.started;\n }\n if (this.ignoreDuration) {\n this.duration = undefined;\n } else if (typeof context.duration === 'number') {\n this.duration = context.duration;\n } else {\n const duration = this.timestamp - this.started;\n this.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n this.release = context.release;\n }\n if (context.environment) {\n this.environment = context.environment;\n }\n if (!this.ipAddress && context.ipAddress) {\n this.ipAddress = context.ipAddress;\n }\n if (!this.userAgent && context.userAgent) {\n this.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n this.errors = context.errors;\n }\n if (context.status) {\n this.status = context.status;\n }\n }\n\n /** JSDoc */\n public close(status?: Exclude): void {\n if (status) {\n this.update({ status });\n } else if (this.status === 'ok') {\n this.update({ status: 'exited' });\n } else {\n this.update();\n }\n }\n\n /** JSDoc */\n public toJSON(): {\n init: boolean;\n sid: string;\n did?: string;\n timestamp: string;\n started: string;\n duration?: number;\n status: SessionStatus;\n errors: number;\n attrs?: {\n release?: string;\n environment?: string;\n user_agent?: string;\n ip_address?: string;\n };\n } {\n return dropUndefinedKeys({\n sid: `${this.sid}`,\n init: this.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(this.started * 1000).toISOString(),\n timestamp: new Date(this.timestamp * 1000).toISOString(),\n status: this.status,\n errors: this.errors,\n did: typeof this.did === 'number' || typeof this.did === 'string' ? `${this.did}` : undefined,\n duration: this.duration,\n attrs: {\n release: this.release,\n environment: this.environment,\n ip_address: this.ipAddress,\n user_agent: this.userAgent,\n },\n });\n }\n}\n","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n\ndeclare const __SENTRY_DEBUG__: boolean;\n\n/** Flag that is true for debug builds, false otherwise. */\nexport const IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n SessionContext,\n Severity,\n Span,\n SpanContext,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalObject,\n getGlobalSingleton,\n isNodeEnv,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Scope } from './scope';\nimport { Session } from './session';\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 */\nexport const API_VERSION = 4;\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 * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope?: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n hub?: Hub;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n domain?: { [key: string]: any };\n } & {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @hidden\n * @deprecated Can be removed once `Hub.getActiveDomain` is removed.\n */\nexport interface DomainAsCarrier extends Carrier {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n members: { [key: string]: any }[];\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\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 public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: exception,\n syntheticException,\n };\n }\n\n this._invokeClient('captureException', exception, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: message,\n syntheticException,\n };\n }\n\n this._invokeClient('captureMessage', message, level, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._invokeClient('captureEvent', event, {\n ...hint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\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)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n IS_DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSpan(context: SpanContext): Span {\n return this._callExtensionMethod('startSpan', context);\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const layer = this.getStackTop();\n const scope = layer && layer.scope;\n const session = scope && scope.getSession();\n if (session) {\n session.close();\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const global = getGlobalObject<{ navigator?: { userAgent?: string } }>();\n const { userAgent } = global.navigator || {};\n\n const session = new Session({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n currentSession.update({ status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession && scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _invokeClient(method: M, ...args: any[]): void {\n const { scope, client } = this.getStackTop();\n if (client && client[method]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (client as any)[method](...args, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore 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 private _callExtensionMethod(method: string, ...args: any[]): T {\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 IS_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 **/\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\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 */\nexport function makeMain(hub: Hub): 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 */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Returns the active domain, if one exists\n * @deprecated No longer used; remove in v7\n * @returns The domain, or undefined if there is no active domain\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveDomain(): DomainAsCarrier | undefined {\n IS_DEBUG_BUILD && logger.warn('Function `getActiveDomain` is deprecated and will be removed in a future version.');\n\n const sentry = getMainCarrier().__SENTRY__;\n\n return sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const sentry = getMainCarrier().__SENTRY__;\n const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\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: Carrier): boolean {\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 */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\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 */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n\ndeclare const __SENTRY_DEBUG__: boolean;\n\n/** Flag that is true for debug builds, false otherwise. */\nexport const IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n","import { DsnComponents, DsnLike, SdkMetadata } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/**\n * Stores details about a Sentry SDK\n */\nexport interface APIDetails {\n /** The DSN as passed to Sentry.init() */\n initDsn: DsnLike;\n /** Metadata about the SDK (name, version, etc) for inclusion in envelope headers */\n metadata: SdkMetadata;\n /** The internally used Dsn object. */\n readonly dsn: DsnComponents;\n /** The envelope tunnel to use. */\n readonly tunnel?: string;\n}\n\n/**\n * Helper class to provide urls, headers and metadata that can be used to form\n * different types of requests to Sentry endpoints.\n * Supports both envelopes and regular event requests.\n *\n * @deprecated Please use APIDetails\n **/\nexport class API {\n /** The DSN as passed to Sentry.init() */\n public dsn: DsnLike;\n\n /** Metadata about the SDK (name, version, etc) for inclusion in envelope headers */\n public metadata: SdkMetadata;\n\n /** The internally used Dsn object. */\n private readonly _dsnObject: DsnComponents;\n\n /** The envelope tunnel to use. */\n private readonly _tunnel?: string;\n\n /** Create a new instance of API */\n public constructor(dsn: DsnLike, metadata: SdkMetadata = {}, tunnel?: string) {\n this.dsn = dsn;\n this._dsnObject = makeDsn(dsn);\n this.metadata = metadata;\n this._tunnel = tunnel;\n }\n\n /** Returns the Dsn object. */\n public getDsn(): DsnComponents {\n return this._dsnObject;\n }\n\n /** Does this transport force envelopes? */\n public forceEnvelope(): boolean {\n return !!this._tunnel;\n }\n\n /** Returns the prefix to construct Sentry ingestion API endpoints. */\n public getBaseApiEndpoint(): string {\n return getBaseApiEndpoint(this._dsnObject);\n }\n\n /** Returns the store endpoint URL. */\n public getStoreEndpoint(): string {\n return getStoreEndpoint(this._dsnObject);\n }\n\n /**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n public getStoreEndpointWithUrlEncodedAuth(): string {\n return getStoreEndpointWithUrlEncodedAuth(this._dsnObject);\n }\n\n /**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n public getEnvelopeEndpointWithUrlEncodedAuth(): string {\n return getEnvelopeEndpointWithUrlEncodedAuth(this._dsnObject, this._tunnel);\n }\n}\n\n/** Initializes API Details */\nexport function initAPIDetails(dsn: DsnLike, metadata?: SdkMetadata, tunnel?: string): APIDetails {\n return {\n initDsn: dsn,\n metadata: metadata || {},\n dsn: makeDsn(dsn),\n tunnel,\n } as APIDetails;\n}\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents, target: 'store' | 'envelope'): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/${target}/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n });\n}\n\n/** Returns the store endpoint URL. */\nfunction getStoreEndpoint(dsn: DsnComponents): string {\n return _getIngestEndpoint(dsn, 'store');\n}\n\n/**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getStoreEndpointWithUrlEncodedAuth(dsn: DsnComponents): string {\n return `${getStoreEndpoint(dsn)}?${_encodedAuth(dsn)}`;\n}\n\n/** Returns the envelope endpoint URL. */\nfunction _getEnvelopeEndpoint(dsn: DsnComponents): string {\n return _getIngestEndpoint(dsn, 'envelope');\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string): string {\n return tunnel ? tunnel : `${_getEnvelopeEndpoint(dsn)}?${_encodedAuth(dsn)}`;\n}\n\n/**\n * Returns an object that can be used in request headers.\n * This is needed for node and the old /store endpoint in sentry\n */\nexport function getRequestHeaders(\n dsn: DsnComponents,\n clientName: string,\n clientVersion: string,\n): { [key: string]: string } {\n // CHANGE THIS to use metadata but keep clientName and clientVersion compatible\n const header = [`Sentry sentry_version=${SENTRY_API_VERSION}`];\n header.push(`sentry_client=${clientName}/${clientVersion}`);\n header.push(`sentry_key=${dsn.publicKey}`);\n if (dsn.pass) {\n header.push(`sentry_secret=${dsn.pass}`);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions += `&name=${encodeURIComponent(dialogOptions.user.name)}`;\n }\n if (dialogOptions.user.email) {\n encodedOptions += `&email=${encodeURIComponent(dialogOptions.user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n"],"sourceRoot":""}