{"version":3,"file":"static/chunks/5481-126922d77d8b1e79.js","mappings":"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","sources":["webpack://_N_E/./node_modules/@sentry/core/esm/version.js","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack://_N_E/./node_modules/@sentry/core/esm/integration.js","webpack://_N_E/./node_modules/@sentry/core/esm/sdk.js","webpack://_N_E/./node_modules/@sentry/utils/esm/stacktrace.js","webpack://_N_E/./node_modules/@sentry/utils/esm/error.js","webpack://_N_E/./node_modules/@sentry/utils/esm/dsn.js","webpack://_N_E/./node_modules/@sentry/utils/esm/memo.js","webpack://_N_E/./node_modules/@sentry/utils/esm/normalize.js","webpack://_N_E/./node_modules/@sentry/utils/esm/envelope.js","webpack://_N_E/./node_modules/@sentry/core/esm/api.js","webpack://_N_E/./node_modules/@sentry/core/esm/envelope.js","webpack://_N_E/./node_modules/@sentry/core/esm/baseclient.js","webpack://_N_E/./node_modules/@sentry/utils/esm/clientreport.js","webpack://_N_E/./node_modules/@sentry/browser/esm/eventbuilder.js","webpack://_N_E/./node_modules/@sentry/browser/esm/helpers.js","webpack://_N_E/./node_modules/@sentry/utils/esm/severity.js","webpack://_N_E/./node_modules/@sentry/utils/esm/url.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack://_N_E/./node_modules/@sentry/browser/esm/client.js","webpack://_N_E/./node_modules/@sentry/browser/esm/stack-parsers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/dedupe.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/httpcontext.js","webpack://_N_E/./node_modules/@sentry/utils/esm/promisebuffer.js","webpack://_N_E/./node_modules/@sentry/utils/esm/ratelimit.js","webpack://_N_E/./node_modules/@sentry/core/esm/transports/base.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/utils.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/fetch.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/xhr.js","webpack://_N_E/./node_modules/@sentry/browser/esm/sdk.js","webpack://_N_E/./node_modules/@sentry/react/esm/sdk.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/hubextensions.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/span.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/transaction.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/idletransaction.js","webpack://_N_E/./node_modules/@sentry/utils/esm/tracing.js","webpack://_N_E/./node_modules/@sentry/utils/esm/baggage.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/types.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/backgroundtab.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/bindReporter.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/getActivationStart.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/initMetric.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/observe.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/onHidden.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getCLS.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getFID.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getLCP.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/metrics/utils.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/metrics/index.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/request.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/router.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/browsertracing.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/index.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/utils.js","webpack://_N_E/./node_modules/@sentry/utils/esm/buildPolyfills/_nullishCoalesce.js","webpack://_N_E/./node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument.js","webpack://_N_E/./node_modules/@sentry/utils/esm/supports.js","webpack://_N_E/./node_modules/next/head.js"],"sourcesContent":["const SDK_VERSION = '7.24.0';\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","import { logger, getEventDescription, stringMatchesSomePattern } from '@sentry/utils';\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 */\n\n/** Inbound filters configurable by the user */\nclass InboundFilters {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'InboundFilters';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = InboundFilters.id;}\n\n constructor( _options = {}) {;this._options = _options;InboundFilters.prototype.__init.call(this);}\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n const eventProcess = (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 eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n} InboundFilters.__initStatic();\n\n/** JSDoc */\nfunction _mergeOptions(\n internalOptions = {},\n clientOptions = {},\n) {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\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 */\nfunction _shouldDropEvent(event, options) {\n if (options.ignoreInternal && _isSentryError(event)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\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 (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\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 (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\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 (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\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, ignoreErrors) {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event) {\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 (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event) {\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 = []) {\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) {\n try {\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 (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nexport { InboundFilters, _mergeOptions, _shouldDropEvent };\n//# sourceMappingURL=inboundfilters.js.map\n","import { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString;\n\n/** Patch toString calls to return proper name for wrapped functions */\nclass FunctionToString {constructor() { FunctionToString.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'FunctionToString';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = FunctionToString.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\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 ( ...args) {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n} FunctionToString.__initStatic();\n\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map\n","import { arrayify, logger } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\nimport { addGlobalEventProcessor } from './scope.js';\n\nconst installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations) {\n const integrationsByName = {};\n\n integrations.forEach(currentInstance => {\n const { name } = currentInstance;\n\n const existingInstance = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.values(integrationsByName);\n}\n\n/** Gets integrations to install */\nfunction getIntegrationsToSetup(options) {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach(integration => {\n integration.isDefaultInstance = true;\n });\n\n let integrations;\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n integrations = arrayify(userIntegrations(defaultIntegrations));\n } else {\n integrations = defaultIntegrations;\n }\n\n const finalIntegrations = filterDuplicates(integrations);\n\n // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n const debugIndex = finalIntegrations.findIndex(integration => integration.name === 'Debug');\n if (debugIndex !== -1) {\n const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n finalIntegrations.push(debugInstance);\n }\n\n return finalIntegrations;\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 */\nfunction setupIntegrations(integrations) {\n const integrationIndex = {};\n\n integrations.forEach(integration => {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);\n }\n });\n\n return integrationIndex;\n}\n\nexport { getIntegrationsToSetup, installedIntegrations, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n","import { logger } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\n\n/** A class object that can instantiate Client objects. */\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 */\nfunction initAndBind(\n clientClass,\n options,\n) {\n if (options.debug === true) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\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\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n\nexport { initAndBind };\n//# sourceMappingURL=sdk.js.map\n","import { _optionalChain } from './buildPolyfills';\n\nconst STACKTRACE_LIMIT = 50;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirst = 0) => {\n const frames = [];\n\n for (const line of stack.split('\\n').slice(skipFirst)) {\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = line.replace(/\\(error: (.*)\\)/, '$1');\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].function || '';\n const lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n// eslint-disable-next-line complexity\nfunction node(getModule) {\n const FILENAME_MATCH = /^\\s*[-]{4,}$/;\n const FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n\n // eslint-disable-next-line complexity\n return (line) => {\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n const lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) {\n return undefined;\n }\n\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.substr(0, methodStart);\n method = functionName.substr(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.substr(objectEnd + 1);\n object = object.substr(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || '';\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n const filename = _optionalChain([lineMatch, 'access', _ => _[2], 'optionalAccess', _2 => _2.startsWith, 'call', _3 => _3('file://')]) ? lineMatch[2].substr(7) : lineMatch[2];\n const isNative = lineMatch[5] === 'native';\n const isInternal =\n isNative || (filename && !filename.startsWith('/') && !filename.startsWith('.') && filename.indexOf(':\\\\') !== 1);\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n const in_app = !isInternal && filename !== undefined && !filename.includes('node_modules/');\n\n return {\n filename,\n module: _optionalChain([getModule, 'optionalCall', _4 => _4(filename)]),\n function: functionName,\n lineno: parseInt(lineMatch[3], 10) || undefined,\n colno: parseInt(lineMatch[4], 10) || undefined,\n in_app,\n };\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","/** An error emitted by Sentry SDKs and related utilities. */\nclass SentryError extends Error {\n /** Display name of this error instance. */\n\n constructor( message, logLevel = 'warn') {\n super(message);this.message = message;;\n\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n\nexport { SentryError };\n//# sourceMappingURL=error.js.map\n","import { SentryError } from './error.js';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents\n */\nfunction dsnFromString(str) {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() ;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn) {\n if (!(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nfunction makeDsn(from) {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n\nexport { dsnFromString, dsnToString, makeDsn };\n//# sourceMappingURL=dsn.js.map\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\nexport { memoBuilder };\n//# sourceMappingURL=memo.js.map\n","import { isNaN, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalize(input, depth = +Infinity, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) {\n return value ;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We're also done if we've reached the max depth\n if (depth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, depth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value );\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${(Object.getPrototypeOf(value) ).constructor.name}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nexport { normalize, normalizeToSize, visit as walk };\n//# sourceMappingURL=normalize.js.map\n","import { normalize } from './normalize.js';\nimport { dropUndefinedKeys } from './object.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n */\nfunction forEachEnvelopeItem(\n envelope,\n callback,\n) {\n const envelopeItems = envelope[1];\n envelopeItems.forEach((envelopeItem) => {\n const envelopeItemType = envelopeItem[0].type;\n callback(envelopeItem, envelopeItemType);\n });\n}\n\nfunction encodeUTF8(input, textEncoder) {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope, textEncoder) {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts = JSON.stringify(envHeaders);\n\n function append(next) {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(\n attachment,\n textEncoder,\n) {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, envelopeItemTypeToDataCategory, forEachEnvelopeItem, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { urlEncode, makeDsn, dsnToString } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\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) {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\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 ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\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 */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(\n dsn,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions = {} ,\n) {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n const sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(\n dsnLike,\n dialogOptions\n\n,\n) {\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 const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n","import { dsnToString, createEnvelope, dropUndefinedKeys } from '@sentry/utils';\n\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(metadata) {\n if (!metadata || !metadata.sdk) {\n return;\n }\n const { name, version } = 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, sdkInfo) {\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 */\nfunction createSessionEnvelope(\n session,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n };\n\n const envelopeItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n event,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const eventType = event.type || 'event';\n\n enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete event.sdkProcessingMetadata;\n\n const eventItem = [{ type: eventType }, event];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nfunction createEventEnvelopeHeaders(\n event,\n sdkInfo,\n tunnel,\n dsn,\n) {\n const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n\n return {\n event_id: event.event_id ,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n ...(event.type === 'transaction' &&\n dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n }),\n };\n}\n\nexport { createEventEnvelope, createSessionEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { makeDsn, logger, checkOrSetAlreadyCaught, isPrimitive, resolvedSyncPromise, addItemToEnvelope, createAttachmentEnvelopeItem, SyncPromise, uuid4, dateTimestampInSeconds, normalize, truncate, rejectedSyncPromise, SentryError, isThenable, isPlainObject } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegrations } from './integration.js';\nimport { Scope } from './scope.js';\nimport { updateSession } from './session.js';\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 options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\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, 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(options);\n * }\n *\n * // ...\n * }\n */\nclass BaseClient {\n /** Options passed to the SDK. */\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n\n /** Array of set up integrations. */\n __init() {this._integrations = {};}\n\n /** Indicates whether this client's integrations have been set up. */\n __init2() {this._integrationsInitialized = false;}\n\n /** Number of calls being processed */\n __init3() {this._numProcessing = 0;}\n\n /** Holds flushable */\n __init4() {this._outcomes = {};}\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {;BaseClient.prototype.__init.call(this);BaseClient.prototype.__init2.call(this);BaseClient.prototype.__init3.call(this);BaseClient.prototype.__init4.call(this);\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('No DSN provided, client will not do anything.');\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n captureException(exception, hint, scope) {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this.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 captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level,\n hint,\n scope,\n ) {\n let eventId = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.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 captureEvent(event, hint, scope) {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = 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 captureSession(session) {\n if (!this._isEnabled()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && 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 updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n flush(timeout) {\n const transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n close(timeout) {\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 setupIntegrations() {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n getIntegrationById(integrationId) {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n try {\n return (this._integrations[integration.id] ) || null;\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint = {}) {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n sendSession(session) {\n if (this._dsn) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n recordDroppedEvent(reason, category, _event) {\n // Note: we use `event` in replay, where we overwrite this hook.\n\n if (this._options.sendClientReports) {\n // We want to track each category (error, 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 // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\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 updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\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 _isClientDoneProcessing(timeout) {\n return new SyncPromise(resolve => {\n let ticked = 0;\n const tick = 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 /** Determines whether this SDK is enabled and a valid Dsn is present. */\n _isEnabled() {\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 _prepareEvent(event, hint, scope) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = this.getOptions();\n const prepared = {\n ...event,\n event_id: event.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.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 //\n // We need to check for the existence of `finalScope.getAttachments`\n // because `getAttachments` can be undefined if users are using an older version\n // of `@sentry/core` that does not have the `getAttachments` method.\n // See: https://github.com/getsentry/sentry-javascript/issues/5229\n if (finalScope && finalScope.getAttachments) {\n // Collect attachments from the hint and scope\n const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\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 (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 _normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n\n const normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\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 _applyClientOptions(event) {\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 _applyIntegrationsMetadata(event) {\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 * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(event, hint = {}, scope) {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason ;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\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 _processEvent(event, hint, scope) {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.', 'log'));\n }\n\n const isTransaction = event.type === 'transaction';\n const beforeSendProcessorName = isTransaction ? 'beforeSendTransaction' : 'beforeSend';\n const beforeSendProcessor = options[beforeSendProcessorName];\n\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 this.recordDroppedEvent('sample_rate', 'error', event);\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', event.type || 'error', event);\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data ).__sentry__ === true;\n if (isInternalException || !beforeSendProcessor) {\n return prepared;\n }\n\n const beforeSendResult = beforeSendProcessor(prepared, hint);\n return _validateBeforeSendResult(beforeSendResult, beforeSendProcessorName);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', event.type || 'error', event);\n throw new SentryError(`\\`${beforeSendProcessorName}\\` returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n changes: [\n ...transactionInfo.changes,\n {\n source,\n // use the same timestamp as the processed event.\n timestamp: processedEvent.timestamp ,\n propagations: transactionInfo.propagations,\n },\n ],\n };\n }\n\n this.sendEvent(processedEvent, hint);\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 ,\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 _process(promise) {\n this._numProcessing++;\n void promise.then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n _sendEnvelope(envelope) {\n if (this._transport && this._dsn) {\n this._transport.send(envelope).then(null, reason => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Error while sending event:', reason);\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult,\n beforeSendProcessorName,\n) {\n const invalidValueError = `\\`${beforeSendProcessorName}\\` must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`\\`${beforeSendProcessorName}\\` rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n const clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { isEvent, extractExceptionKeysForMessage, normalizeToSize, addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject } from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception = {\n type: 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 */\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const 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, normalizeDepth),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception ).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromError(stackParser, ex) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser,\n ex,\n) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(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) {\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) {\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 */\nfunction eventFromException(\n stackParser,\n exception,\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, 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 */\nfunction eventFromUnknownInput(\n stackParser,\n exception,\n syntheticException,\n attachStacktrace,\n isUnhandledRejection,\n) {\n let event;\n\n if (isErrorEvent(exception ) && (exception ).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception ;\n return eventFromError(stackParser, errorEvent.error );\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception ) || isDOMException(exception )) {\n const domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception ;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromString(\n stackParser,\n input,\n syntheticException,\n attachStacktrace,\n) {\n const event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n\nexport { eventFromError, eventFromException, eventFromMessage, eventFromPlainObject, eventFromString, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","import { withScope, captureException } from '@sentry/core';\nimport { GLOBAL_OBJ, getOriginalFunction, addExceptionTypeValue, addExceptionMechanism, markFunctionWrapped, addNonEnumerableProperty } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n fn,\n options\n\n = {},\n before,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n 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 // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped = function () {\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) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope) => {\n scope.addEventProcessor((event) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n 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') ;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\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 */\n\nexport { WINDOW, ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nconst validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nfunction severityFromString(level) {\n return severityLevelFromString(level) ;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nfunction severityLevelFromString(level) {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') ;\n}\n\nexport { severityFromString, severityLevelFromString, validSeverityLevels };\n//# sourceMappingURL=severity.js.map\n","/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url)\n\n {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nfunction stripUrlQueryAndFragment(urlPath) {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nfunction getNumberOfUrlSegments(url) {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\nexport { getNumberOfUrlSegments, parseUrl, stripUrlQueryAndFragment };\n//# sourceMappingURL=url.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, getEventDescription, logger, htmlTreeAsString, severityLevelFromString, safeJoin, parseUrl } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** JSDoc */\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nclass Breadcrumbs {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = BREADCRUMB_INTEGRATION_ID;}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Breadcrumbs.id;}\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n\n /**\n * @inheritDoc\n */\n constructor(options) {;Breadcrumbs.prototype.__init.call(this);\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 * 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 setupOnce() {\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 * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\n addSentryBreadcrumb(event) {\n if (this.options.sentry) {\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} Breadcrumbs.__initStatic();\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) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData) {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n let maxStringLength =\n typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n );\n maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n }\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target , { keyAttrs, maxStringLength })\n : htmlTreeAsString(handlerData.event , { keyAttrs, maxStringLength });\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) {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/6010\n // see: https://github.com/getsentry/sentry-javascript/issues/5916\n for (let i = 0; i < handlerData.args.length; i++) {\n if (handlerData.args[i] === 'ref=Ref<') {\n handlerData.args[i + 1] = 'viewRef';\n break;\n }\n }\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n 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) {\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) {\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: '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) {\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.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\nexport { BREADCRUMB_INTEGRATION_ID, Breadcrumbs };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\nimport { BaseClient, SDK_VERSION, getEnvelopeEndpointWithUrlEncodedAuth } from '@sentry/core';\nimport { logger, createClientReportEnvelope, dsnToString, serializeEnvelope } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs.js';\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\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(options);\n\n if (options.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint) {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) ;\n // We check for definedness of `addSentryBreadcrumb` in case users provided their own integration with id\n // \"Breadcrumbs\" that does not have this function.\n _optionalChain([breadcrumbIntegration, 'optionalAccess', _ => _.addSentryBreadcrumb, 'optionalCall', _2 => _2(event)]);\n\n super.sendEvent(event, hint);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(event, hint, scope) {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Sending outcomes:', outcomes);\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options);\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n try {\n const isRealNavigator = Object.prototype.toString.call(WINDOW && WINDOW.navigator) === '[object Navigator]';\n const hasSendBeacon = isRealNavigator && typeof WINDOW.navigator.sendBeacon === 'function';\n // Make sure beacon is not used if user configures custom transport options\n if (hasSendBeacon && !this._options.transportOptions) {\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 = WINDOW.navigator.sendBeacon.bind(WINDOW.navigator);\n sendBeacon(url, serializeEnvelope(envelope));\n } else {\n // If beacon is not supported or if they are using the tunnel option\n // use our regular transport to send client reports to Sentry.\n this._sendEnvelope(envelope);\n }\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(e);\n }\n }\n}\n\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map\n","import { createStackParser } 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, func, lineno, colno) {\n const frame = {\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 = 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\nconst chromeStackLineParser = [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|safari-extension|safari-web-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 = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nconst geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nconst winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10 = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nconst opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11 = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nconst opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nconst defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nconst defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func, filename) => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser };\n//# sourceMappingURL=stack-parsers.js.map\n","import { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\nimport { WINDOW, wrap } from '../helpers.js';\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\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nclass TryCatch {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'TryCatch';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = TryCatch.id;}\n\n /** JSDoc */\n\n /**\n * @inheritDoc\n */\n constructor(options) {;TryCatch.prototype.__init.call(this);\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 setupOnce() {\n if (this._options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\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} TryCatch.__initStatic();\n\n/** JSDoc */\nfunction _wrapTimeFunction(original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( ...args) {\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) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( callback) {\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) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function ( ...args) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original) {\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) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObject = WINDOW ;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = globalObject[target] && globalObject[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)\n\n {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n eventName,\n fn,\n options,\n ) {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n 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 , {\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,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n eventName,\n fn,\n options,\n ) {\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 ;\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\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, isString, isPrimitive, isErrorEvent, getLocationHref, logger, addExceptionMechanism } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** Global handlers */\nclass GlobalHandlers {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'GlobalHandlers';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = GlobalHandlers.id;}\n\n /** JSDoc */\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 __init2() {this._installFunc = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };}\n\n /** JSDoc */\n constructor(options) {;GlobalHandlers.prototype.__init.call(this);GlobalHandlers.prototype.__init2.call(this);\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n setupOnce() {\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 ];\n if (installFunc && options[key ]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key ] = undefined;\n }\n }\n }\n} GlobalHandlers.__initStatic();\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler() {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\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(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler() {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\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(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = '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) {\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, url, line, column) {\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, url, line, column) {\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) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub, error, event, type) {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions() {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map\n","import { getCurrentHub, addGlobalEventProcessor } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nclass LinkedErrors {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'LinkedErrors';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = LinkedErrors.id;}\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n constructor(options = {}) {;LinkedErrors.prototype.__init.call(this);\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n const client = getCurrentHub().getClient();\n if (!client) {\n return;\n }\n addGlobalEventProcessor((event, hint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n} LinkedErrors.__initStatic();\n\n/**\n * @inheritDoc\n */\nfunction _handler(\n parser,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = _walkErrorTree(parser, limit, hint.originalException , key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nfunction _walkErrorTree(\n parser,\n limit,\n error,\n key,\n stack = [],\n) {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n const exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n\nexport { LinkedErrors, _handler, _walkErrorTree };\n//# sourceMappingURL=linkederrors.js.map\n","import { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nclass Dedupe {constructor() { Dedupe.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Dedupe';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Dedupe.id;}\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n const eventProcessor = currentEvent => {\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 (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && 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 eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n} Dedupe.__initStatic();\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\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, previousEvent) {\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, previousEvent) {\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, previousEvent) {\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 ;\n previousFrames = previousFrames ;\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, previousEvent) {\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 ;\n previousFingerprint = previousFingerprint ;\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) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event) {\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 }\n return undefined;\n}\n\nexport { Dedupe };\n//# sourceMappingURL=dedupe.js.map\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { WINDOW } from '../helpers.js';\n\n/** HttpContext integration collects information about HTTP request headers */\nclass HttpContext {constructor() { HttpContext.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'HttpContext';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = HttpContext.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n addGlobalEventProcessor((event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.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) || (WINDOW.location && WINDOW.location.href);\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.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} HttpContext.__initStatic();\n\nexport { HttpContext };\n//# sourceMappingURL=httpcontext.js.map\n","import { SentryError } from './error.js';\nimport { rejectedSyncPromise, SyncPromise, resolvedSyncPromise } from './syncpromise.js';\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nfunction makePromiseBuffer(limit) {\n const buffer = [];\n\n function isReady() {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task) {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer) {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout) {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n\nexport { makePromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map\n","// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nconst DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nfunction parseRetryAfterHeader(header, now = Date.now()) {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nfunction disabledUntil(limits, category) {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, category, now = Date.now()) {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nfunction updateRateLimits(\n limits,\n { statusCode, headers },\n now = Date.now(),\n) {\n const updatedRateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n//# sourceMappingURL=ratelimit.js.map\n","import { forEachEnvelopeItem, envelopeItemTypeToDataCategory, isRateLimited, resolvedSyncPromise, createEnvelope, serializeEnvelope, logger, updateRateLimits, SentryError, makePromiseBuffer } from '@sentry/utils';\n\nconst DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n options,\n makeRequest,\n buffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n) {\n let rateLimits = {};\n\n const flush = (timeout) => buffer.drain(timeout);\n\n function send(envelope) {\n const filteredEnvelopeItems = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n const event = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory, event);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason) => {\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n const event = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n });\n };\n\n const requestTask = () =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n },\n error => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Failed while sending event:', error);\n recordEnvelopeLoss('network_error');\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n\nfunction getEventForEnvelopeItem(item, type) {\n if (type !== 'event' && type !== 'transaction') {\n return undefined;\n }\n\n return Array.isArray(item) ? (item )[1] : undefined;\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n//# sourceMappingURL=base.js.map\n","import { isNativeFetch, logger } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\n\nlet cachedFetchImpl = undefined;\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 */\nfunction getNativeFetchImplementation() {\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(WINDOW.fetch)) {\n return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n }\n\n const document = WINDOW.document;\n let fetchImpl = WINDOW.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 (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\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(WINDOW));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nfunction clearCachedFetchImplementation() {\n cachedFetchImpl = undefined;\n}\n\nexport { clearCachedFetchImplementation, getNativeFetchImplementation };\n//# sourceMappingURL=utils.js.map\n","import { createTransport } from '@sentry/core';\nimport { rejectedSyncPromise } from '@sentry/utils';\nimport { clearCachedFetchImplementation, getNativeFetchImplementation } from './utils.js';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n options,\n nativeFetch = getNativeFetchImplementation(),\n) {\n function makeRequest(request) {\n const requestOptions = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch), a request with `keepalive: true`\n // and a content length of > 64 kibibytes returns a network error. We will therefore only activate the flag when\n // we're below that limit.\n keepalive: request.body.length <= 65536,\n ...options.fetchOptions,\n };\n\n try {\n return nativeFetch(options.url, requestOptions).then(response => ({\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n }));\n } catch (e) {\n clearCachedFetchImplementation();\n return rejectedSyncPromise(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeFetchTransport };\n//# sourceMappingURL=fetch.js.map\n","import { createTransport } 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\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nfunction makeXHRTransport(options) {\n function makeRequest(request) {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\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(options, makeRequest);\n}\n\nexport { makeXHRTransport };\n//# sourceMappingURL=xhr.js.map\n","import { Integrations, getIntegrationsToSetup, initAndBind, getReportDialogEndpoint, getCurrentHub } from '@sentry/core';\nimport { stackParserFromStackParserOptions, supportsFetch, logger, resolvedSyncPromise, addInstrumentationHandler } from '@sentry/utils';\nimport { BrowserClient } from './client.js';\nimport { WINDOW, wrap as wrap$1 } from './helpers.js';\nimport './integrations/index.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport './transports/index.js';\nimport { TryCatch } from './integrations/trycatch.js';\nimport { Breadcrumbs } from './integrations/breadcrumbs.js';\nimport { GlobalHandlers } from './integrations/globalhandlers.js';\nimport { LinkedErrors } from './integrations/linkederrors.js';\nimport { Dedupe } from './integrations/dedupe.js';\nimport { HttpContext } from './integrations/httpcontext.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { makeXHRTransport } from './transports/xhr.js';\n\nconst defaultIntegrations = [\n new Integrations.InboundFilters(),\n new Integrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * 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 */\nfunction init(options = {}) {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n if (typeof __SENTRY_RELEASE__ === 'string') {\n options.release = __SENTRY_RELEASE__;\n }\n\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 const clientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\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 */\nfunction showReportDialog(options = {}, hub = getCurrentHub()) {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\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\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(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 = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nfunction lastEventId() {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n callback();\n}\n\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 */\nfunction flush(timeout) {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && 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 */\nfunction close(timeout) {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && 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\nfunction wrap(fn) {\n return wrap$1(fn)();\n}\n\nfunction startSessionOnHub(hub) {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n if (typeof WINDOW.document === 'undefined') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n 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\nexport { close, defaultIntegrations, flush, forceLoad, init, lastEventId, onLoad, showReportDialog, wrap };\n//# sourceMappingURL=sdk.js.map\n","import { SDK_VERSION, init as init$1 } from '@sentry/browser';\n\n/**\n * Inits the React SDK\n */\nfunction init(options) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.react',\n packages: [\n {\n name: 'npm:@sentry/react',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n init$1(options);\n}\n\nexport { init };\n//# sourceMappingURL=sdk.js.map\n","import { getMainCarrier } from '@sentry/core';\nimport { logger, isNaN, dynamicRequire, loadModule, isNodeEnv } from '@sentry/utils';\nimport { registerErrorInstrumentation } from './errors.js';\nimport { IdleTransaction } from './idletransaction.js';\nimport { Transaction } from './transaction.js';\nimport { hasTracingEnabled } from './utils.js';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n const scope = this.getScope();\n if (scope) {\n const span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction,\n options,\n samplingContext,\n) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n sampleRate: Number(transaction.sampled),\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate );\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n\n transactionContext,\n customSamplingContext,\n) {\n const client = this.getClient();\n const options = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n transactionContext.sampled = false;\n }\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n hub,\n transactionContext,\n idleTimeout,\n finalTimeout,\n onScope,\n customSamplingContext,\n heartbeatInterval,\n) {\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, heartbeatInterval, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n return transaction;\n}\n\n/**\n * @private\n */\nfunction _addTracingExtensions() {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations() {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n const packageToIntegrationMapping = {\n mongodb() {\n const integration = dynamicRequire(module, './integrations/node/mongo')\n\n;\n return new integration.Mongo();\n },\n mongoose() {\n const integration = dynamicRequire(module, './integrations/node/mongo')\n\n;\n return new integration.Mongo({ mongoose: true });\n },\n mysql() {\n const integration = dynamicRequire(module, './integrations/node/mysql')\n\n;\n return new integration.Mysql();\n },\n pg() {\n const integration = dynamicRequire(module, './integrations/node/postgres')\n\n;\n return new integration.Postgres();\n },\n };\n\n const mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) ;\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nfunction addExtensionMethods() {\n _addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n\nexport { _addTracingExtensions, addExtensionMethods, startIdleTransaction };\n//# sourceMappingURL=hubextensions.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { uuid4, timestampWithMs, logger, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n __init() {this.spans = [];}\n\n constructor(maxlen = 1000) {;SpanRecorder.prototype.__init.call(this);\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n add(span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nclass Span {\n /**\n * @inheritDoc\n */\n __init2() {this.traceId = uuid4();}\n\n /**\n * @inheritDoc\n */\n __init3() {this.spanId = uuid4().substring(16);}\n\n /**\n * @inheritDoc\n */\n\n /**\n * Internal keeper of the status\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * Timestamp in seconds when the span was created.\n */\n __init4() {this.startTimestamp = timestampWithMs();}\n\n /**\n * Timestamp in seconds when the span ended.\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n __init5() {this.tags = {};}\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n __init6() {this.data = {};}\n\n /**\n * List of spans that were finalized\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * The instrumenter that created this span.\n */\n __init7() {this.instrumenter = 'sentry';}\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(spanContext) {;Span.prototype.__init2.call(this);Span.prototype.__init3.call(this);Span.prototype.__init4.call(this);Span.prototype.__init5.call(this);Span.prototype.__init6.call(this);Span.prototype.__init7.call(this);\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n if (spanContext.instrumenter) {\n this.instrumenter = spanContext.instrumenter;\n }\n }\n\n /**\n * @inheritDoc\n */\n startChild(\n spanContext,\n ) {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && childSpan.transaction) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = childSpan.transaction.name || '< unknown name >';\n const idStr = childSpan.transaction.spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n logger.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n setData(key, value) {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setStatus(value) {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setHttpStatus(httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n const spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n isSuccess() {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n if (\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n logger.log((logMessage ).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n }\n\n /**\n * @inheritDoc\n */\n toTraceparent() {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(spanContext) {\n this.data = _nullishCoalesce(spanContext.data, () => ( {}));\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = _nullishCoalesce(spanContext.spanId, () => ( this.spanId));\n this.startTimestamp = _nullishCoalesce(spanContext.startTimestamp, () => ( this.startTimestamp));\n this.status = spanContext.status;\n this.tags = _nullishCoalesce(spanContext.tags, () => ( {}));\n this.traceId = _nullishCoalesce(spanContext.traceId, () => ( this.traceId));\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getTraceContext()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n toJSON()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nfunction spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\nexport { Span, SpanRecorder, spanStatusfromHttpCode };\n//# sourceMappingURL=span.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { getCurrentHub } from '@sentry/core';\nimport { timestampInSeconds, logger, dropUndefinedKeys } from '@sentry/utils';\nimport { Span, SpanRecorder } from './span.js';\n\n/** JSDoc */\nclass Transaction extends Span {\n\n /**\n * The reference to the current hub.\n */\n\n __init() {this._measurements = {};}\n\n __init2() {this._contexts = {};}\n\n __init3() {this._frozenDynamicSamplingContext = undefined;}\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(transactionContext, hub) {\n super(transactionContext);Transaction.prototype.__init.call(this);Transaction.prototype.__init2.call(this);Transaction.prototype.__init3.call(this);;\n\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this.metadata = {\n source: 'custom',\n ...transactionContext.metadata,\n spanMetadata: {},\n changes: [],\n propagations: 0,\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this.metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n /** Getter for `name` property */\n get name() {\n return this._name;\n }\n\n /** Setter for `name` property, which also sets `source` as custom */\n set name(newName) {\n this.setName(newName);\n }\n\n /**\n * JSDoc\n */\n setName(name, source = 'custom') {\n // `source` could change without the name changing if we discover that an unparameterized route is actually\n // parameterized by virtue of having no parameters in its path\n if (name !== this.name || source !== this.metadata.source) {\n this.metadata.changes.push({\n // log previous source\n source: this.metadata.source,\n timestamp: timestampInSeconds(),\n propagations: this.metadata.propagations,\n });\n }\n\n this._name = name;\n this.metadata.source = source;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n initSpanRecorder(maxlen = 1000) {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n */\n setMeasurement(name, value, unit = '') {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * @inheritDoc\n */\n setMetadata(newMetadata) {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n const client = this._hub.getClient();\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev, current) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n const metadata = this.metadata;\n\n const transaction = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n dynamicSamplingContext: this.getDynamicSamplingContext(),\n },\n ...(metadata.source && {\n transaction_info: {\n source: metadata.source,\n changes: metadata.changes,\n propagations: metadata.propagations,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(transactionContext) {\n super.updateWithContext(transactionContext);\n\n this.name = _nullishCoalesce(transactionContext.name, () => ( ''));\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n getDynamicSamplingContext() {\n if (this._frozenDynamicSamplingContext) {\n return this._frozenDynamicSamplingContext;\n }\n\n const hub = this._hub || getCurrentHub();\n const client = hub && hub.getClient();\n\n if (!client) return {};\n\n const { environment, release } = client.getOptions() || {};\n const { publicKey: public_key } = client.getDsn() || {};\n\n const maybeSampleRate = this.metadata.sampleRate;\n const sample_rate = maybeSampleRate !== undefined ? maybeSampleRate.toString() : undefined;\n\n const scope = hub.getScope();\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const source = this.metadata.source;\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const transaction = source && source !== 'url' ? this.name : undefined;\n\n const dsc = dropUndefinedKeys({\n environment,\n release,\n transaction,\n user_segment,\n public_key,\n trace_id: this.traceId,\n sample_rate,\n });\n\n // Uncomment if we want to make DSC immutable\n // this._frozenDynamicSamplingContext = dsc;\n\n return dsc;\n }\n}\n\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map\n","import { timestampWithMs, logger } from '@sentry/utils';\nimport { SpanRecorder } from './span.js';\nimport { Transaction } from './transaction.js';\n\nconst DEFAULT_IDLE_TIMEOUT = 1000;\nconst DEFAULT_FINAL_TIMEOUT = 30000;\nconst DEFAULT_HEARTBEAT_INTERVAL = 5000;\n\n/**\n * @inheritDoc\n */\nclass IdleTransactionSpanRecorder extends SpanRecorder {\n constructor(\n _pushActivity,\n _popActivity,\n transactionSpanId,\n maxlen,\n ) {\n super(maxlen);this._pushActivity = _pushActivity;this._popActivity = _popActivity;this.transactionSpanId = transactionSpanId;;\n }\n\n /**\n * @inheritDoc\n */\n add(span) {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nclass IdleTransaction extends Transaction {\n // Activities store a list of active spans\n __init() {this.activities = {};}\n\n // Track state of activities in previous heartbeat\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n __init2() {this._heartbeatCounter = 0;}\n\n // We should not use heartbeat if we finished a transaction\n __init3() {this._finished = false;}\n\n __init4() {this._beforeFinishCallbacks = [];}\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n\n constructor(\n transactionContext,\n _idleHub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n _idleTimeout = DEFAULT_IDLE_TIMEOUT,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n _finalTimeout = DEFAULT_FINAL_TIMEOUT,\n _heartbeatInterval = DEFAULT_HEARTBEAT_INTERVAL,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope = false,\n ) {\n super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._heartbeatInterval = _heartbeatInterval;this._onScope = _onScope;IdleTransaction.prototype.__init.call(this);IdleTransaction.prototype.__init2.call(this);IdleTransaction.prototype.__init3.call(this);IdleTransaction.prototype.__init4.call(this);;\n\n if (_onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._startIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n finish(endTimestamp = timestampWithMs()) {\n this._finished = true;\n this.activities = {};\n\n if (this.spanRecorder) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n registerBeforeFinishCallback(callback) {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n initSpanRecorder(maxlen) {\n if (!this.spanRecorder) {\n const pushActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idletimeout, if there is one\n */\n _cancelIdleTimeout() {\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n }\n }\n\n /**\n * Creates an idletimeout\n */\n _startIdleTimeout(endTimestamp) {\n this._cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n _pushActivity(spanId) {\n this._cancelIdleTimeout();\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n _popActivity(spanId) {\n if (this.activities[spanId]) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n const endTimestamp = timestampWithMs() + this._idleTimeout / 1000;\n this._startIdleTimeout(endTimestamp);\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n _beat() {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter++;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n _pingHeartbeat() {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub) {\n const scope = hub.getScope();\n if (scope) {\n const transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n}\n\nexport { DEFAULT_FINAL_TIMEOUT, DEFAULT_HEARTBEAT_INTERVAL, DEFAULT_IDLE_TIMEOUT, IdleTransaction, IdleTransactionSpanRecorder };\n//# sourceMappingURL=idletransaction.js.map\n","const TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n\n if (!traceparent || !matches) {\n // empty string or no matches is invalid traceparent data\n return undefined;\n }\n\n let parentSampled;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData };\n//# sourceMappingURL=tracing.js.map\n","import { isString } from './is.js';\nimport { logger } from './logger.js';\n\nconst BAGGAGE_HEADER_NAME = 'baggage';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nfunction baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader,\n) {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n return {\n ...acc,\n ...currBaggageObject,\n };\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext ;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext,\n) {\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader) {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object) {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nexport { WINDOW };\n//# sourceMappingURL=types.js.map\n","import { logger } from '@sentry/utils';\nimport { getActiveTransaction } from '../utils.js';\nimport { WINDOW } from './types.js';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\n if (WINDOW && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n const activeTransaction = getActiveTransaction() ;\n if (WINDOW.document.hidden && activeTransaction) {\n const statusType = 'cancelled';\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n\nexport { registerBackgroundTabDetection };\n//# sourceMappingURL=backgroundtab.js.map\n","const bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n let delta;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nconst generateUniqueID = () => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getNavigationEntryFromPerformanceTiming = () => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n navigationEntry[key] = Math.max((timing[key ] ) - timing.navigationStart, 0);\n }\n }\n return navigationEntry ;\n};\n\nconst getNavigationEntry = () => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n\nexport { getNavigationEntry };\n//# sourceMappingURL=getNavigationEntry.js.map\n","import { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getActivationStart = () => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n\nexport { getActivationStart };\n//# sourceMappingURL=getActivationStart.js.map\n","import { WINDOW } from '../../types.js';\nimport { generateUniqueID } from './generateUniqueID.js';\nimport { getActivationStart } from './getActivationStart.js';\nimport { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst initMetric = (name, value) => {\n const navEntry = getNavigationEntry();\n let navigationType = 'navigate';\n\n if (navEntry) {\n if (WINDOW.document.prerendering || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') ;\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n\nexport { initMetric };\n//# sourceMappingURL=initMetric.js.map\n","/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nconst observe = (\n type,\n callback,\n opts,\n) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() );\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) ,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\nexport { observe };\n//# sourceMappingURL=observe.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst onHidden = (cb, once) => {\n const onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || WINDOW.document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nconst onCLS = (onReport, opts = {}) => {\n const metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n onHidden(() => {\n handleEntries(po.takeRecords() );\n report(true);\n });\n }\n};\n\nexport { onCLS };\n//# sourceMappingURL=getCLS.js.map\n","import { WINDOW } from '../../types.js';\nimport { onHidden } from './onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = () => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n return WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n};\n\nconst trackChanges = () => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nconst getVisibilityWatcher = (\n\n) => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\nexport { getVisibilityWatcher };\n//# sourceMappingURL=getVisibilityWatcher.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nconst onFID = (onReport, opts = {}) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report;\n\n const handleEntry = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries) => {\n (entries ).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() );\n po.disconnect();\n }, true);\n }\n};\n\nexport { onFID };\n//# sourceMappingURL=getFID.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst reportedMetricIDs = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called any time a new `largest-contentful-paint`\n * performance entry is dispatched, or once the final value of the metric has\n * been determined.\n */\nconst onLCP = (onReport, opts = {}) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report;\n\n const handleEntries = (entries) => {\n const lastEntry = entries[entries.length - 1] ;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n const stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n }\n};\n\nexport { onLCP };\n//# sourceMappingURL=getLCP.js.map\n","/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nfunction _startChild(transaction, { startTimestamp, ...ctx }) {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n\nexport { _startChild, isMeasurementValue };\n//# sourceMappingURL=utils.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { browserPerformanceTimeOrigin, logger, htmlTreeAsString } from '@sentry/utils';\nimport { getActiveTransaction, msToSec } from '../../utils.js';\nimport { WINDOW } from '../types.js';\nimport { onCLS } from '../web-vitals/getCLS.js';\nimport { onFID } from '../web-vitals/getFID.js';\nimport { onLCP } from '../web-vitals/getLCP.js';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher.js';\nimport { observe } from '../web-vitals/lib/observe.js';\nimport { _startChild, isMeasurementValue } from './utils.js';\n\nfunction getBrowserPerformanceAPI() {\n return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor = 0;\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\n\n/**\n * Start tracking web vitals\n */\nfunction startTrackingWebVitals(reportAllChanges = false) {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n if (performance.mark) {\n WINDOW.performance.mark('sentry-tracing-init');\n }\n _trackCLS();\n _trackLCP(reportAllChanges);\n _trackFID();\n }\n}\n\n/**\n * Start tracking long tasks.\n */\nfunction startTrackingLongTasks() {\n const entryHandler = (entries) => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n };\n\n observe('longtask', entryHandler);\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS() {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n onCLS(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry ;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(reportAllChanges) {\n onLCP(\n metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry ;\n },\n { reportAllChanges },\n );\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID() {\n onFID(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin );\n const startTime = msToSec(entry.startTime);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nfunction addPerformanceEntries(transaction) {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !WINDOW.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n const performanceEntries = performance.getEntries();\n\n let responseStartTimestamp;\n let requestStartTimestamp;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry) => {\n const startTime = msToSec(entry.startTime);\n const duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n const resourceName = (entry.name ).replace(WINDOW.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n const oldValue = _measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n const delta = normalizedValue - oldValue;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n const fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n op: 'ui.action',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nfunction _addMeasureSpans(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n startTime,\n duration,\n timeOrigin,\n) {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name ,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType ,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n event,\n timeOrigin,\n description,\n eventEnd,\n) {\n const end = eventEnd ? (entry[eventEnd] ) : (entry[`${event}End`] );\n const start = entry[`${event}Start`] ;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: _nullishCoalesce(description, () => ( event)),\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n}\n\n/** Create resource-related spans */\nfunction _addResourceSpans(\n transaction,\n entry,\n resourceName,\n startTime,\n duration,\n timeOrigin,\n) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource.other',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction) {\n const navigator = WINDOW.navigator ;\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction) {\n if (_lcpEntry) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n\nexport { _addMeasureSpans, _addResourceSpans, addPerformanceEntries, startTrackingLongTasks, startTrackingWebVitals };\n//# sourceMappingURL=index.js.map\n","import { addInstrumentationHandler, stringMatchesSomePattern, dynamicSamplingContextToSentryBaggageHeader, isInstanceOf, BAGGAGE_HEADER_NAME } from '@sentry/utils';\nimport { hasTracingEnabled, getActiveTransaction } from '../utils.js';\n\nconst DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\n\nconst defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n // TODO (v8): Remove this property\n tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS,\n tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nfunction instrumentOutgoingRequests(_options) {\n // eslint-disable-next-line deprecation/deprecation\n const { traceFetch, traceXHR, tracePropagationTargets, tracingOrigins, shouldCreateSpanForRequest } = {\n traceFetch: defaultRequestInstrumentationOptions.traceFetch,\n traceXHR: defaultRequestInstrumentationOptions.traceXHR,\n ..._options,\n };\n\n const shouldCreateSpan =\n typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_) => true;\n\n // TODO(v8) Remove tracingOrigins here\n // The only reason we're passing it in here is because this instrumentOutgoingRequests function is publicly exported\n // and we don't want to break the API. We can remove it in v8.\n const shouldAttachHeadersWithTargets = (url) =>\n shouldAttachHeaders(url, tracePropagationTargets || tracingOrigins);\n\n const spans = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData) => {\n fetchCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData) => {\n xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n });\n }\n}\n\n/**\n * A function that determines whether to attach tracing headers to a request.\n * This was extracted from `instrumentOutgoingRequests` to make it easier to test shouldAttachHeaders.\n * We only export this fuction for testing purposes.\n */\nfunction shouldAttachHeaders(url, tracePropagationTargets) {\n return stringMatchesSomePattern(url, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS);\n}\n\n/**\n * Create and track fetch request spans\n */\nfunction fetchCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n) {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...handlerData.fetchData,\n type: 'fetch',\n },\n description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n op: 'http.client',\n });\n\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n\n const request = handlerData.args[0];\n\n // In case the user hasn't set the second argument of a fetch call we default it to `{}`.\n handlerData.args[1] = handlerData.args[1] || {};\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options = handlerData.args[1];\n\n if (shouldAttachHeaders(handlerData.fetchData.url)) {\n options.headers = addTracingHeadersToFetchRequest(\n request,\n activeTransaction.getDynamicSamplingContext(),\n span,\n options,\n );\n\n activeTransaction.metadata.propagations++;\n }\n }\n}\n\nfunction addTracingHeadersToFetchRequest(\n request,\n dynamicSamplingContext,\n span,\n options\n\n,\n) {\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n const sentryTraceHeader = span.toTraceparent();\n\n const headers =\n typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request ).headers : options.headers;\n\n if (!headers) {\n return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };\n } else if (typeof Headers !== 'undefined' && isInstanceOf(headers, Headers)) {\n const newHeaders = new Headers(headers );\n\n newHeaders.append('sentry-trace', sentryTraceHeader);\n\n if (sentryBaggageHeader) {\n // If the same header is appended miultiple times the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n return newHeaders ;\n } else if (Array.isArray(headers)) {\n const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];\n\n if (sentryBaggageHeader) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);\n }\n\n return newHeaders;\n } else {\n const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;\n const newBaggageHeaders = [];\n\n if (Array.isArray(existingBaggageHeader)) {\n newBaggageHeaders.push(...existingBaggageHeader);\n } else if (existingBaggageHeader) {\n newBaggageHeaders.push(existingBaggageHeader);\n }\n\n if (sentryBaggageHeader) {\n newBaggageHeaders.push(sentryBaggageHeader);\n }\n\n return {\n ...(headers ),\n 'sentry-trace': sentryTraceHeader,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n }\n}\n\n/**\n * Create and track xhr request spans\n */\nfunction xhrCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n) {\n if (\n !hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n ) {\n return;\n }\n\n const xhr = handlerData.xhr.__sentry_xhr__;\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n const spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n // if not, create a new span to track it\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...xhr.data,\n type: 'xhr',\n method: xhr.method,\n url: xhr.url,\n },\n description: `${xhr.method} ${xhr.url}`,\n op: 'http.client',\n });\n\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n if (handlerData.xhr.setRequestHeader && shouldAttachHeaders(handlerData.xhr.__sentry_xhr__.url)) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n\n const dynamicSamplingContext = activeTransaction.getDynamicSamplingContext();\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n\n if (sentryBaggageHeader) {\n // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n // We can therefore simply set a baggage header without checking what was there before\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n handlerData.xhr.setRequestHeader(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n activeTransaction.metadata.propagations++;\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n\nexport { DEFAULT_TRACE_PROPAGATION_TARGETS, defaultRequestInstrumentationOptions, fetchCallback, instrumentOutgoingRequests, shouldAttachHeaders, xhrCallback };\n//# sourceMappingURL=request.js.map\n","import { logger, addInstrumentationHandler } from '@sentry/utils';\nimport { WINDOW } from './types.js';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nfunction instrumentRoutingWithDefaults(\n customStartTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n if (!WINDOW || !WINDOW.location) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl = WINDOW.location.href;\n\n let activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'pageload',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'navigation',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n\nexport { instrumentRoutingWithDefaults };\n//# sourceMappingURL=router.js.map\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\nimport { logger, extractTraceparentData, baggageHeaderToDynamicSamplingContext, getDomElement } from '@sentry/utils';\nimport { startIdleTransaction } from '../hubextensions.js';\nimport { DEFAULT_IDLE_TIMEOUT, DEFAULT_FINAL_TIMEOUT, DEFAULT_HEARTBEAT_INTERVAL } from '../idletransaction.js';\nimport '../utils.js';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { startTrackingWebVitals, startTrackingLongTasks, addPerformanceEntries } from './metrics/index.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\nimport { instrumentRoutingWithDefaults } from './router.js';\nimport { WINDOW } from './types.js';\n\nconst BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n idleTimeout: DEFAULT_IDLE_TIMEOUT,\n finalTimeout: DEFAULT_FINAL_TIMEOUT,\n heartbeatInterval: DEFAULT_HEARTBEAT_INTERVAL,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n _experiments: { enableLongTask: true },\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nclass BrowserTracing {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n\n /**\n * @inheritDoc\n */\n __init() {this.name = BROWSER_TRACING_INTEGRATION_ID;}\n\n constructor(_options) {;BrowserTracing.prototype.__init.call(this);\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n };\n\n // TODO (v8): remove this block after tracingOrigins is removed\n // Set tracePropagationTargets to tracingOrigins if specified by the user\n // In case both are specified, tracePropagationTargets takes precedence\n // eslint-disable-next-line deprecation/deprecation\n if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) {\n // eslint-disable-next-line deprecation/deprecation\n this.options.tracePropagationTargets = _options.tracingOrigins;\n }\n\n const { _metricOptions } = this.options;\n startTrackingWebVitals(_metricOptions && _metricOptions._reportAllChanges);\n if (_optionalChain([this, 'access', _2 => _2.options, 'access', _3 => _3._experiments, 'optionalAccess', _4 => _4.enableLongTask])) {\n startTrackingLongTasks();\n }\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n this._getCurrentHub = getCurrentHub;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n shouldCreateSpanForRequest,\n } = this.options;\n\n instrumentRouting(\n (context) => this._createRouteTransaction(context),\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n instrumentOutgoingRequests({\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n shouldCreateSpanForRequest,\n });\n }\n\n /** Create routing idle transaction. */\n _createRouteTransaction(context) {\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n const isPageloadTransaction = context.op === 'pageload';\n\n const sentryTraceMetaTagValue = isPageloadTransaction ? getMetaContent('sentry-trace') : null;\n const baggageMetaTagValue = isPageloadTransaction ? getMetaContent('baggage') : null;\n\n const traceParentData = sentryTraceMetaTagValue ? extractTraceparentData(sentryTraceMetaTagValue) : undefined;\n const dynamicSamplingContext = baggageMetaTagValue\n ? baggageHeaderToDynamicSamplingContext(baggageMetaTagValue)\n : undefined;\n\n const expandedContext = {\n ...context,\n ...traceParentData,\n metadata: {\n ...context.metadata,\n dynamicSamplingContext: traceParentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,\n },\n trimEnd: true,\n };\n\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n if (finalContext.sampled === false) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const hub = this._getCurrentHub();\n const { location } = WINDOW;\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n idleTransaction.registerBeforeFinishCallback(transaction => {\n addPerformanceEntries(transaction);\n });\n\n return idleTransaction ;\n }\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n const metaTag = getDomElement(`meta[name=${metaName}]`);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return metaTag ? metaTag.getAttribute('content') : null;\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing, getMetaContent };\n//# sourceMappingURL=browsertracing.js.map\n","import { addExtensionMethods } from './hubextensions.js';\nexport { addExtensionMethods, startIdleTransaction } from './hubextensions.js';\nimport * as index from './integrations/index.js';\nexport { index as Integrations };\nimport './browser/index.js';\nexport { Span, spanStatusfromHttpCode } from './span.js';\nexport { SpanStatus } from './spanstatus.js';\nexport { Transaction } from './transaction.js';\nexport { IdleTransaction } from './idletransaction.js';\nexport { getActiveTransaction, hasTracingEnabled } from './utils.js';\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing } from './browser/browsertracing.js';\nexport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './browser/request.js';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n;\n;\n\n// Treeshakable guard to remove all code related to tracing\n\n// Guard for tree\nif (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // We are patching the global object with our hub extension methods\n addExtensionMethods();\n}\n//# sourceMappingURL=index.js.map\n","import { getCurrentHub } from '@sentry/core';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nfunction getActiveTransaction(maybeHub) {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope && (scope.getTransaction() );\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time) {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nfunction secToMs(time) {\n return time * 1000;\n}\n\nexport { getActiveTransaction, hasTracingEnabled, msToSec, secToMs };\n//# sourceMappingURL=utils.js.map\n","/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nfunction _nullishCoalesce(lhs, rhsFn) {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n\nexport { _nullishCoalesce };\n//# sourceMappingURL=_nullishCoalesce.js.map\n","/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nfunction _optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] ;\n const fn = ops[i + 1] ;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => (value ).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// const op = ops[i];\n// const fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n\nexport { _optionalChain };\n//# sourceMappingURL=_optionalChain.js.map\n","import { isInstanceOf, isString } from './is.js';\nimport { logger, CONSOLE_LEVELS } from './logger.js';\nimport { fill } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\nimport { supportsNativeFetch, supportsHistory } from './supports.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers = {};\nconst instrumented = {};\n\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in WINDOW)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in WINDOW.console)) {\n return;\n }\n\n fill(WINDOW.console, level, function (originalConsoleMethod) {\n return function (...args) {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(WINDOW.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(WINDOW, 'fetch', function (originalFetch) {\n return function (...args) {\n const handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(WINDOW, args).then(\n (response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs = []) {\n if ('Request' in WINDOW && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs = []) {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in WINDOW && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in WINDOW)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen) {\n return function ( ...args) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const url = args[1];\n const xhrInfo = (xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return function (...readyStateArgs) {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend) {\n return function ( ...args) {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref;\n\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function ( ...args) {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID;\nlet lastCapturedEvent;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target ;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener = false) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in WINDOW)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (WINDOW )[target] && (WINDOW )[target].prototype;\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 (originalAddEventListener) {\n return function (\n\n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this ;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount++;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function (\n\n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this ;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount--;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = WINDOW.onerror;\n\n WINDOW.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = WINDOW.onunhandledrejection;\n\n WINDOW.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n\nexport { addInstrumentationHandler };\n//# sourceMappingURL=instrument.js.map\n","import { logger } from './logger.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsFetch() {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nfunction supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement ) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReportingObserver() {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReferrerPolicy() {\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\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' ,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (WINDOW ).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsHistory, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n//# sourceMappingURL=supports.js.map\n","module.exports = require('./dist/shared/lib/head')\n"],"names":["originalFunctionToString","cachedFetchImpl","SDK_VERSION","DEFAULT_IGNORE_ERRORS","InboundFilters","__initStatic","id","__init","name","constructor","_options","prototype","call","setupOnce","addGlobalEventProcessor","getCurrentHub","eventProcess","hub","self","getIntegration","options","ignoreErrors","client","getClient","clientOptions","getOptions","_shouldDropEvent","_mergeOptions","internalOptions","allowUrls","denyUrls","ignoreInternal","undefined","_isSentryError","event","exception","values","type","e","length","_getPossibleEventMessages","message","value","oO","some","string","U0","_isDeniedUrl","url","_getEventFilterUrl","_isAllowedUrl","frames","stacktrace","_getLastValidUrl","i","frame","filename","FunctionToString","Function","toString","args","context","object","HK","apply","installedIntegrations","createStackParser","parsers","sortedParsers","sort","a","b","map","p","stack","skipFirst","line","split","slice","cleanedLine","replace","parser","push","stripSentryFramesAndReverse","localStack","firstFrameFunction","function","lastFrameFunction","indexOf","reverse","defaultFunctionName","getFunctionName","fn","SentryError","Error","logLevel","Object","setPrototypeOf","DSN_REGEX","dsn_dsnToString","dsn","withPassword","host","path","pass","port","projectId","protocol","publicKey","dsnFromComponents","components","normalize","input","depth","maxProperties","visit","key","memo","memoBuilder","hasWeakSet","WeakSet","inner","obj","has","add","delete","splice","memoize","unmemoize","includes","is","i2","stringified","stringifyValue","_events","__webpack_require__","g","window","document","Cy","String","getPrototypeOf","err","startsWith","valueWithToJSON","toJSON","jsonValue","normalized","Array","isArray","numAdded","visitable","Sh","visitKey","hasOwnProperty","visitValue","ERROR","createEnvelope","headers","items","forEachEnvelopeItem","envelope","callback","envelopeItems","forEach","envelopeItemType","envelopeItem","encodeUTF8","textEncoder","utf8","TextEncoder","encode","serializeEnvelope","envHeaders","parts","JSON","stringify","append","next","item","itemHeaders","payload","Uint8Array","stringifiedPayload","concatBuffers","buffers","merged","reduce","acc","buf","offset","buffer","set","ITEM_TYPE_TO_DATA_CATEGORY_MAP","session","sessions","attachment","transaction","client_report","user_report","getEnvelopeEndpointWithUrlEncodedAuth","tunnelOrOptions","tunnel","sdkInfo","_metadata","sdk","getBaseApiEndpoint","_j","sentry_key","sentry_version","sentry_client","version","getSdkMetadataForEnvelopeHeader","metadata","BaseClient","_integrations","__init2","_integrationsInitialized","__init3","_numProcessing","__init4","_outcomes","from","_dsn","dsnFromString","str","match","exec","lastPath","join","pop","projectMatch","_transport","transport","recordDroppedEvent","bind","transportOptions","captureException","hint","scope","misc","YO","eventId","event_id","_process","eventFromException","then","_captureEvent","result","captureMessage","level","promisedEvent","pt","eventFromMessage","captureEvent","originalException","captureSession","_isEnabled","release","sendSession","esm_session","CT","init","getDsn","getTransport","flush","timeout","_isClientDoneProcessing","clientFinished","transportFlushed","syncpromise","WD","close","enabled","setupIntegrations","integrations","integrationIndex","integration","esm_scope","c","esm_hub","Gd","getIntegrationById","integrationId","_oO","sendEvent","env","createEventEnvelope","eventType","packages","envelopeHeaders","createEventEnvelopeHeaders","dynamicSamplingContext","sdkProcessingMetadata","sent_at","Date","toISOString","trace","Jr","attachments","addItemToEnvelope","newItem","createAttachmentEnvelopeItem","data","content_type","contentType","attachment_type","attachmentType","_sendEnvelope","createSessionEnvelope","reason","category","_event","sendClientReports","_updateSessionFromEvent","crashed","errored","exceptions","ex","mechanism","handled","sessionNonTerminal","status","errors","Number","cW","resolve","ticked","interval","setInterval","clearInterval","_prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","DM","timestamp","time","yW","_applyClientOptions","_applyIntegrationsMetadata","finalScope","captureContext","s","clone","update","getAttachments","applyToEvent","evt","_normalizeEvent","maxBreadth","breadcrumbs","user","contexts","extra","spans","span","environment","dist","maxValueLength","$G","request","integrationsArray","keys","_processEvent","finalEvent","sampleRate","$2","isTransaction","beforeSendProcessorName","beforeSendProcessor","Math","random","__sentry__","_validateBeforeSendResult","beforeSendResult","invalidValueError","J8","PO","processedEvent","getSession","transactionInfo","transaction_info","source","changes","propagations","promise","send","_clearOutcomes","outcomes","quantity","exceptionFromError","stackParser","parseStackFrames","extractMessage","error","eventFromError","popSize","getPopSize","framesToPop","reactMinifiedRegexp","test","eventFromUnknownInput","syntheticException","attachStacktrace","isUnhandledRejection","VW","errorEvent","TX","fm","domException","eventFromString","Db","tags","code","VZ","cO","eventFromPlainObject","zf","__serialized__","normalizeToSize","maxSize","encodeURI","EG","synthetic","helpers_WINDOW","worldwide","n2","ignoreOnError","wrap","before","wrapper","__sentry_wrapped__","sentryWrapped","arguments","wrappedArguments","arg","setTimeout","esm_exports","$e","addEventProcessor","Tb","property","$Q","xp","descriptor","getOwnPropertyDescriptor","configurable","defineProperty","get","validSeverityLevels","parseUrl","query","fragment","relative","BREADCRUMB_INTEGRATION_ID","Breadcrumbs","console","dom","fetch","history","sentry","xhr","instrument","o","_consoleBreadcrumb","handlerData","target","keyAttrs","serializeAttribute","maxStringLength","browser","Rt","addBreadcrumb","global","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","addSentryBreadcrumb","jH","breadcrumb","logger","nK","endTimestamp","__sentry_own_request__","method","status_code","body","__sentry_xhr__","fetchData","response","to","parsedLoc","location","href","parsedFrom","parsedTo","BrowserClient","addEventListener","visibilityState","_flushOutcomes","breadcrumbIntegration","buildPolyfills_optionalChain","x","_","_2","platform","discarded_events","hasSendBeacon","navigator","sendBeacon","createFrame","func","lineno","colno","in_app","chromeRegex","chromeEvalRegex","geckoREgex","geckoEvalRegex","winjsRegex","defaultStackParser","subMatch","extractSafariExtensionDetails","isSafariExtension","isSafariWebExtension","DEFAULT_EVENT_TARGET","TryCatch","XMLHttpRequest","eventTarget","requestAnimationFrame","hl","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","original","originalCallback","handler","originalSend","xmlHttpRequestProps","prop","wrapOptions","originalFunction","proto","globalObject","eventName","handleEvent","originalRemoveEventListener","originalEventHandler","wrappedEventHandler","GlobalHandlers","_installFunc","onerror","_installGlobalOnErrorHandler","onunhandledrejection","_installGlobalOnUnhandledRejectionHandler","stackTraceLimit","installFunc","getHubAndOptions","msg","column","shouldIgnoreOnError","HD","_eventFromIncompleteOnError","groups","_enhanceEventWithInitialFrame","addMechanismAndCapture","detail","ev","ev0","ev0s","ev0sf","isNaN","parseInt","l4","LinkedErrors","_key","_limit","limit","_handler","V9","linkedErrors","_walkErrorTree","Dedupe","eventProcessor","currentEvent","previousEvent","_previousEvent","_isSameMessageEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameExceptionEvent","previousException","_getExceptionFromEvent","currentException","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","fingerprint","previousFingerprint","HttpContext","referrer","userAgent","Referer","createTransport","makeRequest","makePromiseBuffer","remove","task","$","taskProducer","drain","reject","counter","capturedSetTimeout","clearTimeout","bufferSize","rateLimits","filteredEnvelopeItems","envelopeItemDataCategory","isRateLimited","limits","now","disabledUntil","all","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","statusCode","updateRateLimits","updatedRateLimits","rateLimitHeader","retryAfterHeader","trim","retryAfter","categories","headerDelay","delay","parseRetryAfterHeader","header","headerDate","parse","makeFetchTransport","nativeFetch","getNativeFetchImplementation","supports","Du","fetchImpl","createElement","sandbox","hidden","head","appendChild","contentWindow","removeChild","requestOptions","referrerPolicy","keepalive","fetchOptions","makeXHRTransport","onreadystatechange","readyState","getResponseHeader","open","setRequestHeader","defaultIntegrations","startSessionOnHub","startSession","ignoreDuration","sdk_init","__SENTRY_RELEASE__","SENTRY_RELEASE","autoSessionTracking","initAndBind","clientClass","debug","warn","getScope","initialScope","bindClient","getIntegrationsToSetup","userIntegrations","isDefaultInstance","finalIntegrations","filterDuplicates","integrationsByName","currentInstance","existingInstance","lE","debugIndex","findIndex","debugInstance","Ak","startSessionTracking","startIdleTransaction","transactionContext","idleTimeout","finalTimeout","onScope","customSamplingContext","heartbeatInterval","samplingContext","rate","_idletransaction_js__WEBPACK_IMPORTED_MODULE_2__","io","parentSampled","_utils_js__WEBPACK_IMPORTED_MODULE_0__","zu","sampled","setMetadata","tracesSampler","tracesSampleRate","_sentry_utils__WEBPACK_IMPORTED_MODULE_1__","initSpanRecorder","_experiments","maxSpans","SpanRecorder","maxlen","_maxlen","spanRecorder","Span","traceId","spanId","substring","startTimestamp","_I","__init5","__init6","__init7","instrumenter","spanContext","parentSpanId","op","description","startChild","childSpan","setTag","setData","setStatus","setHttpStatus","httpStatus","spanStatus","spanStatusfromHttpCode","isSuccess","finish","toTraceparent","sampledString","toContext","updateWithContext","_nullishCoalesce","h","getTraceContext","parent_span_id","span_id","trace_id","start_timestamp","Transaction","_measurements","_contexts","_frozenDynamicSamplingContext","_hub","_name","spanMetadata","_trimEnd","trimEnd","incomingDynamicSamplingContext","newName","setName","ph","setContext","setMeasurement","unit","newMetadata","finishedSpans","filter","prev","current","getDynamicSamplingContext","measurements","public_key","maybeSampleRate","sample_rate","segment","user_segment","getUser","DEFAULT_IDLE_TIMEOUT","DEFAULT_FINAL_TIMEOUT","DEFAULT_HEARTBEAT_INTERVAL","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","IdleTransaction","activities","_heartbeatCounter","_finished","_beforeFinishCallbacks","_idleHub","_idleTimeout","_finalTimeout","_heartbeatInterval","_onScope","clearActiveTransaction","configureScope","setSpan","_startIdleTimeout","registerBeforeFinishCallback","_pingHeartbeat","_cancelIdleTimeout","_idleTimeoutID","_beat","heartbeatString","_prevHeartbeatString","getTransaction","_lcpEntry","_clsEntry","TRACEPARENT_REGEXP","BAGGAGE_HEADER_NAME","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","dynamicSamplingContextToSentryBaggageHeader","objectToBaggageHeader","entries","baggageHeader","objectKey","objectValue","currentIndex","baggageEntry","encodeURIComponent","newBaggageHeader","dscKey","dscValue","baggageHeaderToObject","keyOrValue","decodeURIComponent","WINDOW","bindReporter","metric","reportAllChanges","prevValue","delta","forceReport","generateUniqueID","floor","getNavigationEntryFromPerformanceTiming","timing","performance","navigation","navigationEntry","entryType","startTime","max","navigationStart","getNavigationEntry","__WEB_VITALS_POLYFILL__","getEntriesByType","getActivationStart","navEntry","activationStart","initMetric","navigationType","prerendering","rating","observe","opts","PerformanceObserver","supportedEntryTypes","po","list","getEntries","assign","buffered","onHidden","cb","once","onHiddenOrPageHide","removeEventListener","onCLS","onReport","report","sessionValue","sessionEntries","handleEntries","entry","hadRecentInput","firstSessionEntry","lastSessionEntry","takeRecords","firstHiddenTime","initHiddenTime","Infinity","trackChanges","timeStamp","getVisibilityWatcher","onFID","visibilityWatcher","handleEntry","processingStart","disconnect","reportedMetricIDs","onLCP","lastEntry","stopListening","capture","isMeasurementValue","isFinite","_startChild","ctx","getBrowserPerformanceAPI","_performanceCursor","_addPerformanceNavigationTiming","timeOrigin","eventEnd","end","start","utils","XL","DEFAULT_TRACE_PROPAGATION_TARGETS","defaultRequestInstrumentationOptions","traceFetch","traceXHR","tracingOrigins","tracePropagationTargets","DEFAULT_BROWSER_TRACING_OPTIONS","idletransaction","nT","mg","hd","markBackgroundTransactions","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","activeTransaction","startingUrl","pathname","enableLongTask","BrowserTracing","_metricOptions","startTrackingWebVitals","Z1","mark","_reportAllChanges","_optionalChain","_3","_4","x1","duration","_getCurrentHub","instrumentRouting","shouldCreateSpanForRequest","_createRouteTransaction","instrumentOutgoingRequests","shouldCreateSpan","shouldAttachHeadersWithTargets","fetchCallback","shouldAttachHeaders","__span","addTracingHeadersToFetchRequest","sentryBaggageHeader","sentryTraceHeader","Request","baggage","Headers","newHeaders","existingBaggageHeader","newBaggageHeaders","xhrCallback","__sentry_xhr_span_id__","beforeNavigate","isPageloadTransaction","sentryTraceMetaTagValue","getMetaContent","baggageMetaTagValue","traceParentData","extractTraceparentData","traceparent","matches","baggageHeaderToDynamicSamplingContext","baggageObject","curr","currBaggageObject","expandedContext","modifiedContext","finalContext","idleTransaction","hubextensions","lb","addPerformanceEntries","responseStartTimestamp","requestStartTimestamp","performanceEntries","requestStart","responseEnd","responseStart","_addMeasureSpans","measureStartTimestamp","firstHidden","shouldRecord","resourceName","origin","_addResourceSpans","initiatorType","transferSize","encodedBodySize","decodedBodySize","_trackNavigator","connection","effectiveType","rtt","deviceMemory","hardwareConcurrency","oldValue","normalizedValue","abs","measurementTimestamp","fidMark","cls","measurementName","element","size","sources","index","node","metaName","metaTag","qT","getAttribute","hasTracingEnabled","maybeOptions","_sentry_core__WEBPACK_IMPORTED_MODULE_0__","getActiveTransaction","maybeHub","msToSec","lhs","rhsFn","ops","lastAccessLHS","lastHref","debounceTimerID","lastCapturedEvent","_worldwide_js__WEBPACK_IMPORTED_MODULE_0__","Rf","handlers","instrumented","addInstrumentationHandler","_logger_js__WEBPACK_IMPORTED_MODULE_1__","RU","_object_js__WEBPACK_IMPORTED_MODULE_2__","originalConsoleMethod","triggerHandlers","instrumentDOM","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","listener","el","__sentry_instrumentation_handlers__","handlerForType","refCount","instrumentXHR","xhrproto","originalOpen","xhrInfo","_is_js__WEBPACK_IMPORTED_MODULE_4__","toUpperCase","onreadystatechangeHandler","readyStateArgs","_supports_js__WEBPACK_IMPORTED_MODULE_3__","t$","originalFetch","getFetchMethod","fetchArgs","getFetchUrl","instrumentHistory","Bf","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","_oldOnErrorHandler","_oldOnUnhandledRejectionHandler","globalListener","shouldSkipDOMEvent","tagName","isContentEditable","shouldShortcircuitPreviousDebounce","previous","supportsFetch","Response","isNativeFetch","supportsNativeFetch","doc","supportsHistory","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","pushState","replaceState","module","exports"],"sourceRoot":""}