{"version":3,"file":"js/6081-2d33a8a2759baad12484.js","mappings":"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","sources":["webpack://artfully-walls/./node_modules/@sentry/core/build/esm/getCurrentHubShim.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integration.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/captureconsole.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/debug.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/dedupe.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/extraerrordata.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/functiontostring.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/inboundfilters.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/metadata.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/rewriteframes.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/sessiontiming.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/third-party-errors-filter.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/zoderrors.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metadata.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/utils.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/envelope.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/instance.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/browser-aggregator.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/constants.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/exports.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/metric-summary.js"],"sourcesContent":["import { addBreadcrumb } from './breadcrumbs.js';\nimport { getCurrentScope, withScope, getClient, getIsolationScope } from './currentScopes.js';\nimport { captureEvent, setUser, setTags, setTag, setExtra, setExtras, setContext, startSession, endSession } from './exports.js';\n\n/**\n * This is for legacy reasons, and returns a proxy object instead of a hub to be used.\n *\n * @deprecated Use the methods directly from the top level Sentry API (e.g. `Sentry.withScope`)\n * For more information see our migration guide for\n * [replacing `getCurrentHub` and `Hub`](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)\n * usage\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction getCurrentHubShim() {\n return {\n bindClient(client) {\n const scope = getCurrentScope();\n scope.setClient(client);\n },\n\n withScope,\n getClient: () => getClient() ,\n getScope: getCurrentScope,\n getIsolationScope,\n captureException: (exception, hint) => {\n return getCurrentScope().captureException(exception, hint);\n },\n captureMessage: (message, level, hint) => {\n return getCurrentScope().captureMessage(message, level, hint);\n },\n captureEvent,\n addBreadcrumb,\n setUser,\n setTags,\n setTag,\n setExtra,\n setExtras,\n setContext,\n\n getIntegration(integration) {\n const client = getClient();\n return (client && client.getIntegrationByName(integration.id)) || null;\n },\n\n startSession,\n endSession,\n captureSession(end) {\n // both send the update and pull the session from the scope\n if (end) {\n return endSession();\n }\n\n // only send the update\n _sendSessionUpdate();\n },\n };\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n *\n * @deprecated Use the respective replacement method directly instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst getCurrentHub = getCurrentHubShim;\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate() {\n const scope = getCurrentScope();\n const client = getClient();\n\n const session = scope.getSession();\n if (client && session) {\n client.captureSession(session);\n }\n}\n\nexport { getCurrentHub, getCurrentHubShim };\n//# sourceMappingURL=getCurrentHubShim.js.map\n","import { getClient } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { logger } from './utils-hoist/logger.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 * preserve 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 const resolvedUserIntegrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(resolvedUserIntegrations) ? resolvedUserIntegrations : [resolvedUserIntegrations];\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(client, integrations) {\n const integrationIndex = {};\n\n integrations.forEach(integration => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(client, integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nfunction afterSetupIntegrations(client, integrations) {\n for (const integration of integrations) {\n // guard against empty provided integrations\n if (integration && integration.afterAllSetup) {\n integration.afterAllSetup(client);\n }\n }\n}\n\n/** Setup a single integration. */\nfunction setupIntegration(client, integration, integrationIndex) {\n if (integrationIndex[integration.name]) {\n DEBUG_BUILD && logger.log(`Integration skipped because it was already installed: ${integration.name}`);\n return;\n }\n integrationIndex[integration.name] = integration;\n\n // `setupOnce` is only called the first time\n if (installedIntegrations.indexOf(integration.name) === -1 && typeof integration.setupOnce === 'function') {\n integration.setupOnce();\n installedIntegrations.push(integration.name);\n }\n\n // `setup` is run for each client\n if (integration.setup && typeof integration.setup === 'function') {\n integration.setup(client);\n }\n\n if (typeof integration.preprocessEvent === 'function') {\n const callback = integration.preprocessEvent.bind(integration) ;\n client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n }\n\n if (typeof integration.processEvent === 'function') {\n const callback = integration.processEvent.bind(integration) ;\n\n const processor = Object.assign((event, hint) => callback(event, hint, client), {\n id: integration.name,\n });\n\n client.addEventProcessor(processor);\n }\n\n DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current scope's client. */\nfunction addIntegration(integration) {\n const client = getClient();\n\n if (!client) {\n DEBUG_BUILD && logger.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n return;\n }\n\n client.addIntegration(integration);\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nfunction defineIntegration(fn) {\n return fn;\n}\n\nexport { addIntegration, afterSetupIntegrations, defineIntegration, getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n","import { getClient, withScope } from '../currentScopes.js';\nimport { captureMessage, captureException } from '../exports.js';\nimport { defineIntegration } from '../integration.js';\nimport { addConsoleInstrumentationHandler } from '../utils-hoist/instrument/console.js';\nimport { CONSOLE_LEVELS } from '../utils-hoist/logger.js';\nimport { addExceptionMechanism } from '../utils-hoist/misc.js';\nimport { severityLevelFromString } from '../utils-hoist/severity.js';\nimport { safeJoin } from '../utils-hoist/string.js';\nimport { GLOBAL_OBJ } from '../utils-hoist/worldwide.js';\n\nconst INTEGRATION_NAME = 'CaptureConsole';\n\nconst _captureConsoleIntegration = ((options = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n // TODO(v9): Flip default value to `true`\n const handled = !!options.handled;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n consoleHandler(args, level, handled);\n });\n },\n };\n}) ;\n\n/**\n * Send Console API calls as Sentry Events.\n */\nconst captureConsoleIntegration = defineIntegration(_captureConsoleIntegration);\n\nfunction consoleHandler(args, level, handled) {\n const captureContext = {\n level: severityLevelFromString(level),\n extra: {\n arguments: args,\n },\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'console';\n\n addExceptionMechanism(event, {\n handled,\n type: 'console',\n });\n\n return event;\n });\n\n if (level === 'assert') {\n if (!args[0]) {\n const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n captureMessage(message, captureContext);\n }\n return;\n }\n\n const error = args.find(arg => arg instanceof Error);\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n const message = safeJoin(args, ' ');\n captureMessage(message, captureContext);\n });\n}\n\nexport { captureConsoleIntegration };\n//# sourceMappingURL=captureconsole.js.map\n","import { defineIntegration } from '../integration.js';\nimport { consoleSandbox } from '../utils-hoist/logger.js';\n\nconst INTEGRATION_NAME = 'Debug';\n\nconst _debugIntegration = ((options = {}) => {\n const _options = {\n debugger: false,\n stringify: false,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n client.on('beforeSendEvent', (event, hint) => {\n if (_options.debugger) {\n // eslint-disable-next-line no-debugger\n debugger;\n }\n\n /* eslint-disable no-console */\n consoleSandbox(() => {\n if (_options.stringify) {\n console.log(JSON.stringify(event, null, 2));\n if (hint && Object.keys(hint).length) {\n console.log(JSON.stringify(hint, null, 2));\n }\n } else {\n console.log(event);\n if (hint && Object.keys(hint).length) {\n console.log(hint);\n }\n }\n });\n /* eslint-enable no-console */\n });\n },\n };\n}) ;\n\n/**\n * Integration to debug sent Sentry events.\n * This integration should not be used in production.\n *\n * @deprecated This integration is deprecated and will be removed in the next major version of the SDK.\n * To log outgoing events, use [Hook Options](https://docs.sentry.io/platforms/javascript/configuration/options/#hooks) (`beforeSend`, `beforeSendTransaction`, ...).\n */\nconst debugIntegration = defineIntegration(_debugIntegration);\n\nexport { debugIntegration };\n//# sourceMappingURL=debug.js.map\n","import { defineIntegration } from '../integration.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { logger } from '../utils-hoist/logger.js';\nimport { getFramesFromEvent } from '../utils-hoist/stacktrace.js';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n let previousEvent;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(currentEvent) {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, previousEvent)) {\n DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n return (previousEvent = currentEvent);\n },\n };\n}) ;\n\n/**\n * Deduplication filter.\n */\nconst dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/** only exported for tests. */\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\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\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\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 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const frameA = previousFrames[i];\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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\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\nfunction _getExceptionFromEvent(event) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\nexport { _shouldDropEvent, dedupeIntegration };\n//# sourceMappingURL=dedupe.js.map\n","import { defineIntegration } from '../integration.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { isError, isPlainObject } from '../utils-hoist/is.js';\nimport { logger } from '../utils-hoist/logger.js';\nimport { normalize } from '../utils-hoist/normalize.js';\nimport { addNonEnumerableProperty } from '../utils-hoist/object.js';\nimport { truncate } from '../utils-hoist/string.js';\n\nconst INTEGRATION_NAME = 'ExtraErrorData';\n\n/**\n * Extract additional data for from original exceptions.\n */\nconst _extraErrorDataIntegration = ((options = {}) => {\n const { depth = 3, captureErrorCause = true } = options;\n return {\n name: INTEGRATION_NAME,\n processEvent(event, hint, client) {\n const { maxValueLength = 250 } = client.getOptions();\n return _enhanceEventWithErrorData(event, hint, depth, captureErrorCause, maxValueLength);\n },\n };\n}) ;\n\nconst extraErrorDataIntegration = defineIntegration(_extraErrorDataIntegration);\n\nfunction _enhanceEventWithErrorData(\n event,\n hint = {},\n depth,\n captureErrorCause,\n maxValueLength,\n) {\n if (!hint.originalException || !isError(hint.originalException)) {\n return event;\n }\n const exceptionName = (hint.originalException ).name || hint.originalException.constructor.name;\n\n const errorData = _extractErrorData(hint.originalException , captureErrorCause, maxValueLength);\n\n if (errorData) {\n const contexts = {\n ...event.contexts,\n };\n\n const normalizedErrorData = normalize(errorData, depth);\n\n if (isPlainObject(normalizedErrorData)) {\n // We mark the error data as \"already normalized\" here, because we don't want other normalization procedures to\n // potentially truncate the data we just already normalized, with a certain depth setting.\n addNonEnumerableProperty(normalizedErrorData, '__sentry_skip_normalization__', true);\n contexts[exceptionName] = normalizedErrorData;\n }\n\n return {\n ...event,\n contexts,\n };\n }\n\n return event;\n}\n\n/**\n * Extract extra information from the Error object\n */\nfunction _extractErrorData(\n error,\n captureErrorCause,\n maxValueLength,\n) {\n // We are trying to enhance already existing event, so no harm done if it won't succeed\n try {\n const nativeKeys = [\n 'name',\n 'message',\n 'stack',\n 'line',\n 'column',\n 'fileName',\n 'lineNumber',\n 'columnNumber',\n 'toJSON',\n ];\n\n const extraErrorInfo = {};\n\n // We want only enumerable properties, thus `getOwnPropertyNames` is redundant here, as we filter keys anyway.\n for (const key of Object.keys(error)) {\n if (nativeKeys.indexOf(key) !== -1) {\n continue;\n }\n const value = error[key];\n extraErrorInfo[key] = isError(value) || typeof value === 'string' ? truncate(`${value}`, maxValueLength) : value;\n }\n\n // Error.cause is a standard property that is non enumerable, we therefore need to access it separately.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n if (captureErrorCause && error.cause !== undefined) {\n extraErrorInfo.cause = isError(error.cause) ? error.cause.toString() : error.cause;\n }\n\n // Check if someone attached `toJSON` method to grab even more properties (eg. axios is doing that)\n if (typeof error.toJSON === 'function') {\n const serializedError = error.toJSON() ;\n\n for (const key of Object.keys(serializedError)) {\n const value = serializedError[key];\n extraErrorInfo[key] = isError(value) ? value.toString() : value;\n }\n }\n\n return extraErrorInfo;\n } catch (oO) {\n DEBUG_BUILD && logger.error('Unable to extract extra data from the Error object:', oO);\n }\n\n return null;\n}\n\nexport { extraErrorDataIntegration };\n//# sourceMappingURL=extraerrordata.js.map\n","import { getClient } from '../currentScopes.js';\nimport { defineIntegration } from '../integration.js';\nimport { getOriginalFunction } from '../utils-hoist/object.js';\n\nlet originalFunctionToString;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _functionToStringIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n Function.prototype.toString = function ( ...args) {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() ) && originalFunction !== undefined ? originalFunction : this;\n return originalFunctionToString.apply(context, args);\n };\n } catch (e) {\n // ignore errors here, just don't patch this\n }\n },\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) ;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * functionToStringIntegration(),\n * ],\n * });\n * ```\n */\nconst functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\nexport { functionToStringIntegration };\n//# sourceMappingURL=functiontostring.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { defineIntegration } from '../integration.js';\nimport { logger } from '../utils-hoist/logger.js';\nimport { getEventDescription } from '../utils-hoist/misc.js';\nimport { stringMatchesSomePattern } from '../utils-hoist/string.js';\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 = [\n /^Script error\\.?$/,\n /^Javascript error: Script error\\.? on line 0$/,\n /^ResizeObserver loop completed with undelivered notifications.$/, // The browser logs this when a ResizeObserver handler takes a bit longer. Usually this is not an actual issue though. It indicates slowness.\n /^Cannot redefine property: googletag$/, // This is thrown when google tag manager is used in combination with an ad blocker\n \"undefined is not an object (evaluating 'a.L')\", // Random error that happens but not actionable or noticeable to end-users.\n 'can\\'t redefine non-configurable property \"solana\"', // Probably a browser extension or custom browser (Brave) throwing this error\n \"vv().getRestrictions is not a function. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)\", // Error thrown by GTM, seemingly not affecting end-users\n \"Can't find variable: _AutofillCallbackHandler\", // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/\n /^Non-Error promise rejection captured with value: Object Not Found Matching Id:\\d+, MethodName:simulateEvent, ParamCount:\\d+$/, // unactionable error from CEFSharp, a .NET library that embeds chromium in .NET apps\n];\n\n/** Options for the InboundFilters integration */\n\nconst INTEGRATION_NAME = 'InboundFilters';\nconst _inboundFiltersIntegration = ((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n processEvent(event, _hint, client) {\n const clientOptions = client.getOptions();\n const mergedOptions = _mergeOptions(options, clientOptions);\n return _shouldDropEvent(event, mergedOptions) ? null : event;\n },\n };\n}) ;\n\nconst inboundFiltersIntegration = defineIntegration(_inboundFiltersIntegration);\n\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 ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\nfunction _shouldDropEvent(event, options) {\n if (options.ignoreInternal && _isSentryError(event)) {\n DEBUG_BUILD &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isUselessError(event)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to not having an error message, error type or stacktrace.\\nEvent: ${getEventDescription(\n event,\n )}`,\n );\n return true;\n }\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n // If event.type, this is not an error\n if (event.type || !ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event, ignoreTransactions) {\n if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\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 const possibleMessages = [];\n\n if (event.message) {\n possibleMessages.push(event.message);\n }\n\n let lastException;\n try {\n // @ts-expect-error Try catching to save bundle size\n lastException = event.exception.values[event.exception.values.length - 1];\n } catch (e) {\n // try catching to save bundle size checking existence of variables\n }\n\n if (lastException) {\n if (lastException.value) {\n possibleMessages.push(lastException.value);\n if (lastException.type) {\n possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n }\n }\n }\n\n return possibleMessages;\n}\n\nfunction _isSentryError(event) {\n try {\n // @ts-expect-error can't be a sentry error if undefined\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-expect-error 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 DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nfunction _isUselessError(event) {\n if (event.type) {\n // event is not an error\n return false;\n }\n\n // We only want to consider events for dropping that actually have recorded exception values.\n if (!event.exception || !event.exception.values || event.exception.values.length === 0) {\n return false;\n }\n\n return (\n // No top-level message\n !event.message &&\n // There are no exception values that have a stacktrace, a non-generic-Error type or value\n !event.exception.values.some(value => value.stacktrace || (value.type && value.type !== 'Error') || value.value)\n );\n}\n\nexport { inboundFiltersIntegration };\n//# sourceMappingURL=inboundfilters.js.map\n","import { defineIntegration } from '../integration.js';\nimport { stripMetadataFromStackFrames, addMetadataToStackFrames } from '../metadata.js';\nimport { forEachEnvelopeItem } from '../utils-hoist/envelope.js';\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n */\nconst moduleMetadataIntegration = defineIntegration(() => {\n return {\n name: 'ModuleMetadata',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item )[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n };\n});\n\nexport { moduleMetadataIntegration };\n//# sourceMappingURL=metadata.js.map\n","import { defineIntegration } from '../integration.js';\nimport { relative, basename } from '../utils-hoist/path.js';\nimport { GLOBAL_OBJ } from '../utils-hoist/worldwide.js';\n\nconst INTEGRATION_NAME = 'RewriteFrames';\n\n/**\n * Rewrite event frames paths.\n */\nconst rewriteFramesIntegration = defineIntegration((options = {}) => {\n const root = options.root;\n const prefix = options.prefix || 'app:///';\n\n const isBrowser = 'window' in GLOBAL_OBJ && GLOBAL_OBJ.window !== undefined;\n\n const iteratee = options.iteratee || generateIteratee({ isBrowser, root, prefix });\n\n /** Process an exception event. */\n function _processExceptionsEvent(event) {\n try {\n return {\n ...event,\n exception: {\n ...event.exception,\n // The check for this is performed inside `process` call itself, safe to skip here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n values: event.exception.values.map(value => ({\n ...value,\n ...(value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) }),\n })),\n },\n };\n } catch (_oO) {\n return event;\n }\n }\n\n /** Process a stack trace. */\n function _processStacktrace(stacktrace) {\n return {\n ...stacktrace,\n frames: stacktrace && stacktrace.frames && stacktrace.frames.map(f => iteratee(f)),\n };\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent) {\n let processedEvent = originalEvent;\n\n if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) {\n processedEvent = _processExceptionsEvent(processedEvent);\n }\n\n return processedEvent;\n },\n };\n});\n\n/**\n * Exported only for tests.\n */\nfunction generateIteratee({\n isBrowser,\n root,\n prefix,\n}\n\n) {\n return (frame) => {\n if (!frame.filename) {\n return frame;\n }\n\n // Determine if this is a Windows frame by checking for a Windows-style prefix such as `C:\\`\n const isWindowsFrame =\n /^[a-zA-Z]:\\\\/.test(frame.filename) ||\n // or the presence of a backslash without a forward slash (which are not allowed on Windows)\n (frame.filename.includes('\\\\') && !frame.filename.includes('/'));\n\n // Check if the frame filename begins with `/`\n const startsWithSlash = /^\\//.test(frame.filename);\n\n if (isBrowser) {\n if (root) {\n const oldFilename = frame.filename;\n if (oldFilename.indexOf(root) === 0) {\n frame.filename = oldFilename.replace(root, prefix);\n }\n }\n } else {\n if (isWindowsFrame || startsWithSlash) {\n const filename = isWindowsFrame\n ? frame.filename\n .replace(/^[a-zA-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/') // replace all `\\\\` instances with `/`\n : frame.filename;\n const base = root ? relative(root, filename) : basename(filename);\n frame.filename = `${prefix}${base}`;\n }\n }\n\n return frame;\n };\n}\n\nexport { generateIteratee, rewriteFramesIntegration };\n//# sourceMappingURL=rewriteframes.js.map\n","import { defineIntegration } from '../integration.js';\nimport { timestampInSeconds } from '../utils-hoist/time.js';\n\nconst INTEGRATION_NAME = 'SessionTiming';\n\nconst _sessionTimingIntegration = (() => {\n const startTime = timestampInSeconds() * 1000;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n const now = timestampInSeconds() * 1000;\n\n return {\n ...event,\n extra: {\n ...event.extra,\n ['session:start']: startTime,\n ['session:duration']: now - startTime,\n ['session:end']: now,\n },\n };\n },\n };\n}) ;\n\n/**\n * This function adds duration since the sessionTimingIntegration was initialized\n * till the time event was sent.\n *\n * @deprecated This integration is deprecated and will be removed in the next major version of the SDK.\n * To capture session durations alongside events, use [Context](https://docs.sentry.io/platforms/javascript/enriching-events/context/) (`Sentry.setContext()`).\n */\nconst sessionTimingIntegration = defineIntegration(_sessionTimingIntegration);\n\nexport { sessionTimingIntegration };\n//# sourceMappingURL=sessiontiming.js.map\n","import { defineIntegration } from '../integration.js';\nimport { stripMetadataFromStackFrames, addMetadataToStackFrames } from '../metadata.js';\nimport { forEachEnvelopeItem } from '../utils-hoist/envelope.js';\nimport { getFramesFromEvent } from '../utils-hoist/stacktrace.js';\n\n/**\n * This integration allows you to filter out, or tag error events that do not come from user code marked with a bundle key via the Sentry bundler plugins.\n */\nconst thirdPartyErrorFilterIntegration = defineIntegration((options) => {\n return {\n name: 'ThirdPartyErrorsFilter',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n // TODO(lforst): Move this cleanup logic into a more central place in the SDK.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item )[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n\n processEvent(event) {\n const frameKeys = getBundleKeysForAllFramesWithFilenames(event);\n\n if (frameKeys) {\n const arrayMethod =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'apply-tag-if-contains-third-party-frames'\n ? 'some'\n : 'every';\n\n const behaviourApplies = frameKeys[arrayMethod](keys => !keys.some(key => options.filterKeys.includes(key)));\n\n if (behaviourApplies) {\n const shouldDrop =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'drop-error-if-exclusively-contains-third-party-frames';\n if (shouldDrop) {\n return null;\n } else {\n event.tags = {\n ...event.tags,\n third_party_code: true,\n };\n }\n }\n }\n\n return event;\n },\n };\n});\n\nfunction getBundleKeysForAllFramesWithFilenames(event) {\n const frames = getFramesFromEvent(event);\n\n if (!frames) {\n return undefined;\n }\n\n return (\n frames\n // Exclude frames without a filename since these are likely native code or built-ins\n .filter(frame => !!frame.filename)\n .map(frame => {\n if (frame.module_metadata) {\n return Object.keys(frame.module_metadata)\n .filter(key => key.startsWith(BUNDLER_PLUGIN_APP_KEY_PREFIX))\n .map(key => key.slice(BUNDLER_PLUGIN_APP_KEY_PREFIX.length));\n }\n return [];\n })\n );\n}\n\nconst BUNDLER_PLUGIN_APP_KEY_PREFIX = '_sentryBundlerPluginAppKey:';\n\nexport { thirdPartyErrorFilterIntegration };\n//# sourceMappingURL=third-party-errors-filter.js.map\n","import { defineIntegration } from '../integration.js';\nimport { isError } from '../utils-hoist/is.js';\nimport { truncate } from '../utils-hoist/string.js';\n\nconst DEFAULT_LIMIT = 10;\nconst INTEGRATION_NAME = 'ZodErrors';\n\n// Simplified ZodIssue type definition\n\nfunction originalExceptionIsZodError(originalException) {\n return (\n isError(originalException) &&\n originalException.name === 'ZodError' &&\n Array.isArray((originalException ).errors)\n );\n}\n\n/**\n * Formats child objects or arrays to a string\n * That is preserved when sent to Sentry\n */\nfunction formatIssueTitle(issue) {\n return {\n ...issue,\n path: 'path' in issue && Array.isArray(issue.path) ? issue.path.join('.') : undefined,\n keys: 'keys' in issue ? JSON.stringify(issue.keys) : undefined,\n unionErrors: 'unionErrors' in issue ? JSON.stringify(issue.unionErrors) : undefined,\n };\n}\n\n/**\n * Zod error message is a stringified version of ZodError.issues\n * This doesn't display well in the Sentry UI. Replace it with something shorter.\n */\nfunction formatIssueMessage(zodError) {\n const errorKeyMap = new Set();\n for (const iss of zodError.issues) {\n if (iss.path && iss.path[0]) {\n errorKeyMap.add(iss.path[0]);\n }\n }\n const errorKeys = Array.from(errorKeyMap);\n\n return `Failed to validate keys: ${truncate(errorKeys.join(', '), 100)}`;\n}\n\n/**\n * Applies ZodError issues to an event extras and replaces the error message\n */\nfunction applyZodErrorsToEvent(limit, event, hint) {\n if (\n !event.exception ||\n !event.exception.values ||\n !hint ||\n !hint.originalException ||\n !originalExceptionIsZodError(hint.originalException) ||\n hint.originalException.issues.length === 0\n ) {\n return event;\n }\n\n return {\n ...event,\n exception: {\n ...event.exception,\n values: [\n {\n ...event.exception.values[0],\n value: formatIssueMessage(hint.originalException),\n },\n ...event.exception.values.slice(1),\n ],\n },\n extra: {\n ...event.extra,\n 'zoderror.issues': hint.originalException.errors.slice(0, limit).map(formatIssueTitle),\n },\n };\n}\n\nconst _zodErrorsIntegration = ((options = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent, hint) {\n const processedEvent = applyZodErrorsToEvent(limit, originalEvent, hint);\n return processedEvent;\n },\n };\n}) ;\n\nconst zodErrorsIntegration = defineIntegration(_zodErrorsIntegration);\n\nexport { applyZodErrorsToEvent, zodErrorsIntegration };\n//# sourceMappingURL=zoderrors.js.map\n","import { GLOBAL_OBJ } from './utils-hoist/worldwide.js';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set();\n\nfunction ensureMetadataStacksAreParsed(parser) {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return;\n }\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n if (parsedStacks.has(stack)) {\n continue;\n }\n\n // Ensure this stack doesn't get parsed again\n parsedStacks.add(stack);\n\n const frames = parser(stack);\n\n // Go through the frames starting from the top of the stack and find the first one with a filename\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n // Save the metadata for this filename\n filenameMetadataMap.set(frame.filename, metadata);\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getMetadataForUrl(parser, filename) {\n ensureMetadataStacksAreParsed(parser);\n return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nfunction addMetadataToStackFrames(parser, event) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n if (!frame.filename || frame.module_metadata) {\n continue;\n }\n\n const metadata = getMetadataForUrl(parser, frame.filename);\n\n if (metadata) {\n frame.module_metadata = metadata;\n }\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Strips metadata from stack frames.\n */\nfunction stripMetadataFromStackFrames(event) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n delete frame.module_metadata;\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\nexport { addMetadataToStackFrames, getMetadataForUrl, stripMetadataFromStackFrames };\n//# sourceMappingURL=metadata.js.map\n","import { dropUndefinedKeys } from '../utils-hoist/object.js';\n\n/**\n * Generate bucket key from metric properties.\n */\nfunction getBucketKey(\n metricType,\n name,\n unit,\n tags,\n) {\n const stringifiedTags = Object.entries(dropUndefinedKeys(tags)).sort((a, b) => a[0].localeCompare(b[0]));\n return `${metricType}${name}${unit}${stringifiedTags}`;\n}\n\n/* eslint-disable no-bitwise */\n/**\n * Simple hash function for strings.\n */\nfunction simpleHash(s) {\n let rv = 0;\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n rv = (rv << 5) - rv + c;\n rv &= rv;\n }\n return rv >>> 0;\n}\n/* eslint-enable no-bitwise */\n\n/**\n * Serialize metrics buckets into a string based on statsd format.\n *\n * Example of format:\n * metric.name@second:1:1.2|d|#a:value,b:anothervalue|T12345677\n * Segments:\n * name: metric.name\n * unit: second\n * value: [1, 1.2]\n * type of metric: d (distribution)\n * tags: { a: value, b: anothervalue }\n * timestamp: 12345677\n */\nfunction serializeMetricBuckets(metricBucketItems) {\n let out = '';\n for (const item of metricBucketItems) {\n const tagEntries = Object.entries(item.tags);\n const maybeTags = tagEntries.length > 0 ? `|#${tagEntries.map(([key, value]) => `${key}:${value}`).join(',')}` : '';\n out += `${item.name}@${item.unit}:${item.metric}|${item.metricType}${maybeTags}|T${item.timestamp}\\n`;\n }\n return out;\n}\n\n/**\n * Sanitizes units\n *\n * These Regex's are straight from the normalisation docs:\n * https://develop.sentry.dev/sdk/metrics/#normalization\n */\nfunction sanitizeUnit(unit) {\n return unit.replace(/[^\\w]+/gi, '_');\n}\n\n/**\n * Sanitizes metric keys\n *\n * These Regex's are straight from the normalisation docs:\n * https://develop.sentry.dev/sdk/metrics/#normalization\n */\nfunction sanitizeMetricKey(key) {\n return key.replace(/[^\\w\\-.]+/gi, '_');\n}\n\n/**\n * Sanitizes metric keys\n *\n * These Regex's are straight from the normalisation docs:\n * https://develop.sentry.dev/sdk/metrics/#normalization\n */\nfunction sanitizeTagKey(key) {\n return key.replace(/[^\\w\\-./]+/gi, '');\n}\n\n/**\n * These Regex's are straight from the normalisation docs:\n * https://develop.sentry.dev/sdk/metrics/#normalization\n */\nconst tagValueReplacements = [\n ['\\n', '\\\\n'],\n ['\\r', '\\\\r'],\n ['\\t', '\\\\t'],\n ['\\\\', '\\\\\\\\'],\n ['|', '\\\\u{7c}'],\n [',', '\\\\u{2c}'],\n];\n\nfunction getCharOrReplacement(input) {\n for (const [search, replacement] of tagValueReplacements) {\n if (input === search) {\n return replacement;\n }\n }\n\n return input;\n}\n\nfunction sanitizeTagValue(value) {\n return [...value].reduce((acc, char) => acc + getCharOrReplacement(char), '');\n}\n\n/**\n * Sanitizes tags.\n */\nfunction sanitizeTags(unsanitizedTags) {\n const tags = {};\n for (const key in unsanitizedTags) {\n if (Object.prototype.hasOwnProperty.call(unsanitizedTags, key)) {\n const sanitizedKey = sanitizeTagKey(key);\n tags[sanitizedKey] = sanitizeTagValue(String(unsanitizedTags[key]));\n }\n }\n return tags;\n}\n\nexport { getBucketKey, sanitizeMetricKey, sanitizeTags, sanitizeUnit, serializeMetricBuckets, simpleHash };\n//# sourceMappingURL=utils.js.map\n","import { dsnToString } from '../utils-hoist/dsn.js';\nimport { createEnvelope } from '../utils-hoist/envelope.js';\nimport { logger } from '../utils-hoist/logger.js';\nimport { serializeMetricBuckets } from './utils.js';\n\n/**\n * Captures aggregated metrics to the supplied client.\n */\nfunction captureAggregateMetrics(client, metricBucketItems) {\n logger.log(`Flushing aggregated metrics, number of metrics: ${metricBucketItems.length}`);\n const dsn = client.getDsn();\n const metadata = client.getSdkMetadata();\n const tunnel = client.getOptions().tunnel;\n\n const metricsEnvelope = createMetricEnvelope(metricBucketItems, dsn, metadata, tunnel);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.sendEnvelope(metricsEnvelope);\n}\n\n/**\n * Create envelope from a metric aggregate.\n */\nfunction createMetricEnvelope(\n metricBucketItems,\n dsn,\n metadata,\n tunnel,\n) {\n const headers = {\n sent_at: new Date().toISOString(),\n };\n\n if (metadata && metadata.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n const item = createMetricEnvelopeItem(metricBucketItems);\n return createEnvelope(headers, [item]);\n}\n\nfunction createMetricEnvelopeItem(metricBucketItems) {\n const payload = serializeMetricBuckets(metricBucketItems);\n const metricHeaders = {\n type: 'statsd',\n length: payload.length,\n };\n return [metricHeaders, payload];\n}\n\nexport { captureAggregateMetrics, createMetricEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { COUNTER_METRIC_TYPE, GAUGE_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, SET_METRIC_TYPE } from './constants.js';\nimport { simpleHash } from './utils.js';\n\n/**\n * A metric instance representing a counter.\n */\nclass CounterMetric {\n constructor( _value) {this._value = _value;}\n\n /** @inheritDoc */\n get weight() {\n return 1;\n }\n\n /** @inheritdoc */\n add(value) {\n this._value += value;\n }\n\n /** @inheritdoc */\n toString() {\n return `${this._value}`;\n }\n}\n\n/**\n * A metric instance representing a gauge.\n */\nclass GaugeMetric {\n\n constructor(value) {\n this._last = value;\n this._min = value;\n this._max = value;\n this._sum = value;\n this._count = 1;\n }\n\n /** @inheritDoc */\n get weight() {\n return 5;\n }\n\n /** @inheritdoc */\n add(value) {\n this._last = value;\n if (value < this._min) {\n this._min = value;\n }\n if (value > this._max) {\n this._max = value;\n }\n this._sum += value;\n this._count++;\n }\n\n /** @inheritdoc */\n toString() {\n return `${this._last}:${this._min}:${this._max}:${this._sum}:${this._count}`;\n }\n}\n\n/**\n * A metric instance representing a distribution.\n */\nclass DistributionMetric {\n\n constructor(first) {\n this._value = [first];\n }\n\n /** @inheritDoc */\n get weight() {\n return this._value.length;\n }\n\n /** @inheritdoc */\n add(value) {\n this._value.push(value);\n }\n\n /** @inheritdoc */\n toString() {\n return this._value.join(':');\n }\n}\n\n/**\n * A metric instance representing a set.\n */\nclass SetMetric {\n\n constructor( first) {this.first = first;\n this._value = new Set([first]);\n }\n\n /** @inheritDoc */\n get weight() {\n return this._value.size;\n }\n\n /** @inheritdoc */\n add(value) {\n this._value.add(value);\n }\n\n /** @inheritdoc */\n toString() {\n return Array.from(this._value)\n .map(val => (typeof val === 'string' ? simpleHash(val) : val))\n .join(':');\n }\n}\n\nconst METRIC_MAP = {\n [COUNTER_METRIC_TYPE]: CounterMetric,\n [GAUGE_METRIC_TYPE]: GaugeMetric,\n [DISTRIBUTION_METRIC_TYPE]: DistributionMetric,\n [SET_METRIC_TYPE]: SetMetric,\n};\n\nexport { CounterMetric, DistributionMetric, GaugeMetric, METRIC_MAP, SetMetric };\n//# sourceMappingURL=instance.js.map\n","import { timestampInSeconds } from '../utils-hoist/time.js';\nimport { updateMetricSummaryOnActiveSpan } from '../utils/spanUtils.js';\nimport { DEFAULT_BROWSER_FLUSH_INTERVAL, SET_METRIC_TYPE } from './constants.js';\nimport { captureAggregateMetrics } from './envelope.js';\nimport { METRIC_MAP } from './instance.js';\nimport { sanitizeMetricKey, sanitizeTags, sanitizeUnit, getBucketKey } from './utils.js';\n\n/**\n * A simple metrics aggregator that aggregates metrics in memory and flushes them periodically.\n * Default flush interval is 5 seconds.\n *\n * @experimental This API is experimental and might change in the future.\n */\nclass BrowserMetricsAggregator {\n // TODO(@anonrig): Use FinalizationRegistry to have a proper way of flushing the buckets\n // when the aggregator is garbage collected.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n\n constructor( _client) {this._client = _client;\n this._buckets = new Map();\n this._interval = setInterval(() => this.flush(), DEFAULT_BROWSER_FLUSH_INTERVAL);\n }\n\n /**\n * @inheritDoc\n */\n add(\n metricType,\n unsanitizedName,\n value,\n unsanitizedUnit = 'none',\n unsanitizedTags = {},\n maybeFloatTimestamp = timestampInSeconds(),\n ) {\n const timestamp = Math.floor(maybeFloatTimestamp);\n const name = sanitizeMetricKey(unsanitizedName);\n const tags = sanitizeTags(unsanitizedTags);\n const unit = sanitizeUnit(unsanitizedUnit );\n\n const bucketKey = getBucketKey(metricType, name, unit, tags);\n\n let bucketItem = this._buckets.get(bucketKey);\n // If this is a set metric, we need to calculate the delta from the previous weight.\n const previousWeight = bucketItem && metricType === SET_METRIC_TYPE ? bucketItem.metric.weight : 0;\n\n if (bucketItem) {\n bucketItem.metric.add(value);\n // TODO(abhi): Do we need this check?\n if (bucketItem.timestamp < timestamp) {\n bucketItem.timestamp = timestamp;\n }\n } else {\n bucketItem = {\n // @ts-expect-error we don't need to narrow down the type of value here, saves bundle size.\n metric: new METRIC_MAP[metricType](value),\n timestamp,\n metricType,\n name,\n unit,\n tags,\n };\n this._buckets.set(bucketKey, bucketItem);\n }\n\n // If value is a string, it's a set metric so calculate the delta from the previous weight.\n const val = typeof value === 'string' ? bucketItem.metric.weight - previousWeight : value;\n updateMetricSummaryOnActiveSpan(metricType, name, val, unit, unsanitizedTags, bucketKey);\n }\n\n /**\n * @inheritDoc\n */\n flush() {\n // short circuit if buckets are empty.\n if (this._buckets.size === 0) {\n return;\n }\n\n const metricBuckets = Array.from(this._buckets.values());\n captureAggregateMetrics(this._client, metricBuckets);\n\n this._buckets.clear();\n }\n\n /**\n * @inheritDoc\n */\n close() {\n clearInterval(this._interval);\n this.flush();\n }\n}\n\nexport { BrowserMetricsAggregator };\n//# sourceMappingURL=browser-aggregator.js.map\n","const COUNTER_METRIC_TYPE = 'c' ;\nconst GAUGE_METRIC_TYPE = 'g' ;\nconst SET_METRIC_TYPE = 's' ;\nconst DISTRIBUTION_METRIC_TYPE = 'd' ;\n\n/**\n * This does not match spec in https://develop.sentry.dev/sdk/metrics\n * but was chosen to optimize for the most common case in browser environments.\n */\nconst DEFAULT_BROWSER_FLUSH_INTERVAL = 5000;\n\n/**\n * SDKs are required to bucket into 10 second intervals (rollup in seconds)\n * which is the current lower bound of metric accuracy.\n */\nconst DEFAULT_FLUSH_INTERVAL = 10000;\n\n/**\n * The maximum number of metrics that should be stored in memory.\n */\nconst MAX_WEIGHT = 10000;\n\nexport { COUNTER_METRIC_TYPE, DEFAULT_BROWSER_FLUSH_INTERVAL, DEFAULT_FLUSH_INTERVAL, DISTRIBUTION_METRIC_TYPE, GAUGE_METRIC_TYPE, MAX_WEIGHT, SET_METRIC_TYPE };\n//# sourceMappingURL=constants.js.map\n","import { getClient } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport '../tracing/errors.js';\nimport { getGlobalSingleton } from '../utils-hoist/worldwide.js';\nimport '../utils-hoist/debug-build.js';\nimport { logger } from '../utils-hoist/logger.js';\nimport { timestampInSeconds } from '../utils-hoist/time.js';\nimport { getActiveSpan, getRootSpan, spanToJSON } from '../utils/spanUtils.js';\nimport { startSpanManual } from '../tracing/trace.js';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors.js';\nimport { COUNTER_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, SET_METRIC_TYPE, GAUGE_METRIC_TYPE } from './constants.js';\n\n/**\n * Gets the metrics aggregator for a given client.\n * @param client The client for which to get the metrics aggregator.\n * @param Aggregator Optional metrics aggregator class to use to create an aggregator if one does not exist.\n */\nfunction getMetricsAggregatorForClient(\n client,\n Aggregator,\n) {\n const globalMetricsAggregators = getGlobalSingleton(\n 'globalMetricsAggregators',\n () => new WeakMap(),\n );\n\n const aggregator = globalMetricsAggregators.get(client);\n if (aggregator) {\n return aggregator;\n }\n\n const newAggregator = new Aggregator(client);\n client.on('flush', () => newAggregator.flush());\n client.on('close', () => newAggregator.close());\n globalMetricsAggregators.set(client, newAggregator);\n\n return newAggregator;\n}\n\nfunction addToMetricsAggregator(\n Aggregator,\n metricType,\n name,\n value,\n data = {},\n) {\n const client = data.client || getClient();\n\n if (!client) {\n return;\n }\n\n const span = getActiveSpan();\n const rootSpan = span ? getRootSpan(span) : undefined;\n const transactionName = rootSpan && spanToJSON(rootSpan).description;\n\n const { unit, tags, timestamp } = data;\n const { release, environment } = client.getOptions();\n const metricTags = {};\n if (release) {\n metricTags.release = release;\n }\n if (environment) {\n metricTags.environment = environment;\n }\n if (transactionName) {\n metricTags.transaction = transactionName;\n }\n\n DEBUG_BUILD && logger.log(`Adding value of ${value} to ${metricType} metric ${name}`);\n\n const aggregator = getMetricsAggregatorForClient(client, Aggregator);\n aggregator.add(metricType, name, value, unit, { ...metricTags, ...tags }, timestamp);\n}\n\n/**\n * Adds a value to a counter metric\n *\n * @deprecated The Sentry metrics beta has ended. This method will be removed in a future release.\n */\nfunction increment(aggregator, name, value = 1, data) {\n addToMetricsAggregator(aggregator, COUNTER_METRIC_TYPE, name, ensureNumber(value), data);\n}\n\n/**\n * Adds a value to a distribution metric\n *\n * @deprecated The Sentry metrics beta has ended. This method will be removed in a future release.\n */\nfunction distribution(aggregator, name, value, data) {\n addToMetricsAggregator(aggregator, DISTRIBUTION_METRIC_TYPE, name, ensureNumber(value), data);\n}\n\n/**\n * Adds a timing metric.\n * The metric is added as a distribution metric.\n *\n * You can either directly capture a numeric `value`, or wrap a callback function in `timing`.\n * In the latter case, the duration of the callback execution will be captured as a span & a metric.\n *\n * @deprecated The Sentry metrics beta has ended. This method will be removed in a future release.\n */\nfunction timing(\n aggregator,\n name,\n value,\n unit = 'second',\n data,\n) {\n // callback form\n if (typeof value === 'function') {\n const startTime = timestampInSeconds();\n\n return startSpanManual(\n {\n op: 'metrics.timing',\n name,\n startTime,\n onlyIfParent: true,\n },\n span => {\n return handleCallbackErrors(\n () => value(),\n () => {\n // no special error handling necessary\n },\n () => {\n const endTime = timestampInSeconds();\n const timeDiff = endTime - startTime;\n // eslint-disable-next-line deprecation/deprecation\n distribution(aggregator, name, timeDiff, { ...data, unit: 'second' });\n span.end(endTime);\n },\n );\n },\n );\n }\n\n // value form\n // eslint-disable-next-line deprecation/deprecation\n distribution(aggregator, name, value, { ...data, unit });\n}\n\n/**\n * Adds a value to a set metric. Value must be a string or integer.\n *\n * @deprecated The Sentry metrics beta has ended. This method will be removed in a future release.\n */\nfunction set(aggregator, name, value, data) {\n addToMetricsAggregator(aggregator, SET_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a gauge metric\n *\n * @deprecated The Sentry metrics beta has ended. This method will be removed in a future release.\n */\nfunction gauge(aggregator, name, value, data) {\n addToMetricsAggregator(aggregator, GAUGE_METRIC_TYPE, name, ensureNumber(value), data);\n}\n\n/**\n * The metrics API is used to capture custom metrics in Sentry.\n *\n * @deprecated The Sentry metrics beta has ended. This export will be removed in a future release.\n */\nconst metrics = {\n increment,\n distribution,\n set,\n gauge,\n timing,\n /**\n * @ignore This is for internal use only.\n */\n getMetricsAggregatorForClient,\n};\n\n// Although this is typed to be a number, we try to handle strings as well here\nfunction ensureNumber(number) {\n return typeof number === 'string' ? parseInt(number) : number;\n}\n\nexport { metrics };\n//# sourceMappingURL=exports.js.map\n","import { dropUndefinedKeys } from '../utils-hoist/object.js';\n\n/**\n * key: bucketKey\n * value: [exportKey, MetricSummary]\n */\n\nconst METRICS_SPAN_FIELD = '_sentryMetrics';\n\n/**\n * Fetches the metric summary if it exists for the passed span\n */\nfunction getMetricSummaryJsonForSpan(span) {\n const storage = (span )[METRICS_SPAN_FIELD];\n\n if (!storage) {\n return undefined;\n }\n const output = {};\n\n for (const [, [exportKey, summary]] of storage) {\n const arr = output[exportKey] || (output[exportKey] = []);\n arr.push(dropUndefinedKeys(summary));\n }\n\n return output;\n}\n\n/**\n * Updates the metric summary on a span.\n */\nfunction updateMetricSummaryOnSpan(\n span,\n metricType,\n sanitizedName,\n value,\n unit,\n tags,\n bucketKey,\n) {\n const existingStorage = (span )[METRICS_SPAN_FIELD];\n const storage =\n existingStorage ||\n ((span )[METRICS_SPAN_FIELD] = new Map());\n\n const exportKey = `${metricType}:${sanitizedName}@${unit}`;\n const bucketItem = storage.get(bucketKey);\n\n if (bucketItem) {\n const [, summary] = bucketItem;\n storage.set(bucketKey, [\n exportKey,\n {\n min: Math.min(summary.min, value),\n max: Math.max(summary.max, value),\n count: (summary.count += 1),\n sum: (summary.sum += value),\n tags: summary.tags,\n },\n ]);\n } else {\n storage.set(bucketKey, [\n exportKey,\n {\n min: value,\n max: value,\n count: 1,\n sum: value,\n tags,\n },\n ]);\n }\n}\n\nexport { getMetricSummaryJsonForSpan, updateMetricSummaryOnSpan };\n//# sourceMappingURL=metric-summary.js.map\n"],"names":["getCurrentHub","bindClient","client","setClient","withScope","getClient","getScope","getIsolationScope","captureException","exception","hint","captureMessage","message","level","captureEvent","addBreadcrumb","setUser","setTags","setTag","setExtra","setExtras","setContext","getIntegration","integration","getIntegrationByName","id","startSession","endSession","captureSession","end","scope","session","getSession","_sendSessionUpdate","installedIntegrations","getIntegrationsToSetup","options","defaultIntegrations","userIntegrations","integrations","forEach","isDefaultInstance","Array","isArray","resolvedUserIntegrations","finalIntegrations","integrationsByName","currentInstance","name","existingInstance","Object","values","filterDuplicates","debugIndex","findIndex","debugInstance","splice","push","setupIntegrations","integrationIndex","setupIntegration","afterSetupIntegrations","afterAllSetup","log","indexOf","setupOnce","setup","preprocessEvent","callback","bind","on","event","processEvent","processor","assign","addEventProcessor","addIntegration","warn","defineIntegration","fn","captureConsoleIntegration","levels","handled","args","includes","captureContext","extra","arguments","logger","type","slice","error","find","arg","Error","consoleHandler","debugIntegration","_options","debugger","stringify","console","JSON","keys","length","dedupeIntegration","previousEvent","currentEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","value","_isSameExceptionEvent","_shouldDropEvent","_oO","currentFrames","previousFrames","i","frameA","frameB","filename","lineno","colno","function","currentFingerprint","fingerprint","previousFingerprint","join","extraErrorDataIntegration","depth","captureErrorCause","maxValueLength","getOptions","originalException","exceptionName","constructor","errorData","nativeKeys","extraErrorInfo","key","undefined","cause","toString","toJSON","serializedError","oO","_extractErrorData","contexts","normalizedErrorData","_enhanceEventWithErrorData","originalFunctionToString","SETUP_CLIENTS","WeakMap","functionToStringIntegration","Function","prototype","originalFunction","this","context","has","apply","e","set","DEFAULT_IGNORE_ERRORS","inboundFiltersIntegration","_hint","clientOptions","mergedOptions","internalOptions","allowUrls","denyUrls","ignoreErrors","disableErrorDefaults","ignoreTransactions","ignoreInternal","_mergeOptions","_isSentryError","possibleMessages","lastException","_getPossibleEventMessages","some","_isIgnoredError","stacktrace","_isUselessError","transaction","_isIgnoredTransaction","url","_getEventFilterUrl","_isDeniedUrl","_isAllowedUrl","frames","frame","_getLastValidUrl","moduleMetadataIntegration","envelope","item","stackParser","rewriteFramesIntegration","root","prefix","isBrowser","window","iteratee","isWindowsFrame","test","startsWithSlash","oldFilename","replace","base","generateIteratee","originalEvent","processedEvent","map","f","_processExceptionsEvent","sessionTimingIntegration","startTime","now","thirdPartyErrorFilterIntegration","frameKeys","filter","module_metadata","startsWith","BUNDLER_PLUGIN_APP_KEY_PREFIX","getBundleKeysForAllFramesWithFilenames","behaviour","filterKeys","tags","third_party_code","formatIssueTitle","issue","path","unionErrors","formatIssueMessage","zodError","errorKeyMap","Set","iss","issues","add","errorKeys","from","applyZodErrorsToEvent","limit","errors","zodErrorsIntegration","filenameMetadataMap","Map","parsedStacks","getMetadataForUrl","parser","_sentryModuleMetadata","stack","metadata","reverse","ensureMetadataStacksAreParsed","get","addMetadataToStackFrames","_","stripMetadataFromStackFrames","sanitizeTagKey","tagValueReplacements","sanitizeTagValue","reduce","acc","char","input","search","replacement","getCharOrReplacement","captureAggregateMetrics","metricBucketItems","metricsEnvelope","dsn","tunnel","headers","sent_at","Date","toISOString","sdk","version","payload","out","tagEntries","entries","maybeTags","unit","metric","metricType","timestamp","serializeMetricBuckets","createMetricEnvelopeItem","createMetricEnvelope","getDsn","getSdkMetadata","sendEnvelope","METRIC_MAP","_value","weight","_last","_min","_max","_sum","_count","first","size","val","s","rv","charCodeAt","simpleHash","BrowserMetricsAggregator","_client","_buckets","_interval","setInterval","flush","unsanitizedName","unsanitizedUnit","unsanitizedTags","maybeFloatTimestamp","time","Math","floor","hasOwnProperty","call","String","sanitizeTags","sanitizeUnit","bucketKey","sort","a","b","localeCompare","getBucketKey","bucketItem","previousWeight","metricBuckets","clear","close","clearInterval","COUNTER_METRIC_TYPE","GAUGE_METRIC_TYPE","SET_METRIC_TYPE","DISTRIBUTION_METRIC_TYPE","DEFAULT_BROWSER_FLUSH_INTERVAL","getMetricsAggregatorForClient","Aggregator","globalMetricsAggregators","aggregator","newAggregator","addToMetricsAggregator","data","span","rootSpan","transactionName","description","release","environment","metricTags","distribution","ensureNumber","metrics","increment","gauge","timing","op","onlyIfParent","endTime","number","parseInt","METRICS_SPAN_FIELD","getMetricSummaryJsonForSpan","storage","output","exportKey","summary","updateMetricSummaryOnSpan","sanitizedName","min","max","count","sum"],"sourceRoot":""}