{"version":3,"file":"17-b6c750a54d53208faec1.js","mappings":"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","sources":["webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/bindReporter.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getActivationStart.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/initMetric.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/observe.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getCLS.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getFID.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/polyfills/interactionCountPolyfill.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getINP.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getLCP.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/onTTFB.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/instrument.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/types.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/onHidden.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/common/debug-build.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/aggregate-errors.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/eventbuilder.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/integrations/linkederrors.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/index.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/metadata.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/integrations/metadata.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/instrument/globalError.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/instrument/globalUnhandledRejection.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/tracing/utils.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/tracing/errors.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/utils/handleCallbackErrors.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/utils/hasTracingEnabled.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/tracing/trace.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/metrics/metric-summary.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/tracing/spanstatus.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/tracing/span.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/tracing/transaction.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/tracing/idletransaction.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/tracing/sampling.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/tracing/hubextensions.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/promisebuffer.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/transports/base.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/transports/multiplexed.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/metrics/instance.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/metrics/browser-aggregator.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/metrics/constants.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/metrics/integration.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/metrics/exports.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/utils/parameterize.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/sdk.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/tracing/measurement.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/helpers.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/debug-build.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/eventbuilder.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/userfeedback.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/client.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/utils/sdkMetadata.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/clientreport.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/transports/utils.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/transports/fetch.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/transports/xhr.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/stack-parsers.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/instrument/console.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/severity.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/url.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/integrations/dedupe.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/integrations/httpcontext.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/sdk.js","webpack://acu-gatsby/./node_modules/@sentry-internal/replay-canvas/esm/index.js","webpack://acu-gatsby/./node_modules/@sentry-internal/feedback/esm/index.js","webpack://acu-gatsby/./node_modules/@sentry/integrations/esm/captureconsole.js","webpack://acu-gatsby/./node_modules/@sentry/integrations/esm/contextlines.js","webpack://acu-gatsby/./node_modules/@sentry/integrations/esm/debug.js","webpack://acu-gatsby/./node_modules/@sentry/integrations/esm/debug-build.js","webpack://acu-gatsby/./node_modules/@sentry/integrations/esm/dedupe.js","webpack://acu-gatsby/./node_modules/@sentry/integrations/esm/extraerrordata.js","webpack://acu-gatsby/./node_modules/@sentry/integrations/esm/httpclient.js","webpack://acu-gatsby/./node_modules/@sentry/integrations/esm/reportingobserver.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/path.js","webpack://acu-gatsby/./node_modules/@sentry/integrations/esm/rewriteframes.js","webpack://acu-gatsby/./node_modules/@sentry/integrations/esm/sessiontiming.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/backgroundtab.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/span.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/metrics/utils.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/metrics/index.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/common/fetch.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/request.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/browsertracing.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/router.js","webpack://acu-gatsby/./node_modules/@sentry-internal/tracing/esm/browser/browserTracingIntegration.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/transports/offline.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/transports/offline.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/profiling/utils.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/profiling/hubextensions.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/profiling/integration.js","webpack://acu-gatsby/./node_modules/@sentry/browser/esm/index.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/api.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/metrics/envelope.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/baseclient.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/envelope.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/integration.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/metrics/utils.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/semanticAttributes.js","webpack://acu-gatsby/./node_modules/@sentry/core/esm/utils/isSentryRequestUrl.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/buildPolyfills/_nullishCoalesce.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/dsn.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/env.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/envelope.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/error.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/instrument/_handlers.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/instrument/dom.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/instrument/fetch.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/vendor/supportsHistory.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/instrument/history.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/instrument/xhr.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/isBrowser.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/node.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/ratelimit.js","webpack://acu-gatsby/./node_modules/@sentry/utils/esm/supports.js"],"sourcesContent":["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","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 && 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 * 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","/**\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 { 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 = (\n onReport,\n options = {},\n) => {\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, options.reportAllChanges);\n\n const stopListening = () => {\n handleEntries(po.takeRecords() );\n report(true);\n };\n\n onHidden(stopListening);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onCLS };\n//# sourceMappingURL=getCLS.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) => {\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);\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 { observe } from '../observe.js';\n\nlet interactionCountEstimate = 0;\nlet minKnownInteractionId = Infinity;\nlet maxKnownInteractionId = 0;\n\nconst updateEstimate = (entries) => {\n (entries ).forEach(e => {\n if (e.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, e.interactionId);\n maxKnownInteractionId = Math.max(maxKnownInteractionId, e.interactionId);\n\n interactionCountEstimate = maxKnownInteractionId ? (maxKnownInteractionId - minKnownInteractionId) / 7 + 1 : 0;\n }\n });\n};\n\nlet po;\n\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nconst getInteractionCount = () => {\n return po ? interactionCountEstimate : performance.interactionCount || 0;\n};\n\n/**\n * Feature detects native support or initializes the polyfill if needed.\n */\nconst initInteractionCountPolyfill = () => {\n if ('interactionCount' in performance || po) return;\n\n po = observe('event', updateEstimate, {\n type: 'event',\n buffered: true,\n durationThreshold: 0,\n } );\n};\n\nexport { getInteractionCount, initInteractionCountPolyfill };\n//# sourceMappingURL=interactionCountPolyfill.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';\nimport { initInteractionCountPolyfill, getInteractionCount } from './lib/polyfills/interactionCountPolyfill.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\n/**\n * Returns the interaction count since the last bfcache restore (or for the\n * full page lifecycle if there were no bfcache restores).\n */\nconst getInteractionCountForNavigation = () => {\n return getInteractionCount();\n};\n\n// To prevent unnecessary memory usage on pages with lots of interactions,\n// store at most 10 of the longest interactions to consider as INP candidates.\nconst MAX_INTERACTIONS_TO_CONSIDER = 10;\n\n// A list of longest interactions on the page (by latency) sorted so the\n// longest one is first. The list is as most MAX_INTERACTIONS_TO_CONSIDER long.\nconst longestInteractionList = [];\n\n// A mapping of longest interactions by their interaction ID.\n// This is used for faster lookup.\nconst longestInteractionMap = {};\n\n/**\n * Takes a performance entry and adds it to the list of worst interactions\n * if its duration is long enough to make it among the worst. If the\n * entry is part of an existing interaction, it is merged and the latency\n * and entries list is updated as needed.\n */\nconst processEntry = (entry) => {\n // The least-long of the 10 longest interactions.\n const minLongestInteraction = longestInteractionList[longestInteractionList.length - 1];\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const existingInteraction = longestInteractionMap[entry.interactionId];\n\n // Only process the entry if it's possibly one of the ten longest,\n // or if it's part of an existing interaction.\n if (\n existingInteraction ||\n longestInteractionList.length < MAX_INTERACTIONS_TO_CONSIDER ||\n entry.duration > minLongestInteraction.latency\n ) {\n // If the interaction already exists, update it. Otherwise create one.\n if (existingInteraction) {\n existingInteraction.entries.push(entry);\n existingInteraction.latency = Math.max(existingInteraction.latency, entry.duration);\n } else {\n const interaction = {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n id: entry.interactionId,\n latency: entry.duration,\n entries: [entry],\n };\n longestInteractionMap[interaction.id] = interaction;\n longestInteractionList.push(interaction);\n }\n\n // Sort the entries by latency (descending) and keep only the top ten.\n longestInteractionList.sort((a, b) => b.latency - a.latency);\n longestInteractionList.splice(MAX_INTERACTIONS_TO_CONSIDER).forEach(i => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete longestInteractionMap[i.id];\n });\n }\n};\n\n/**\n * Returns the estimated p98 longest interaction based on the stored\n * interaction candidates and the interaction count for the current page.\n */\nconst estimateP98LongestInteraction = () => {\n const candidateInteractionIndex = Math.min(\n longestInteractionList.length - 1,\n Math.floor(getInteractionCountForNavigation() / 50),\n );\n\n return longestInteractionList[candidateInteractionIndex];\n};\n\n/**\n * Calculates the [INP](https://web.dev/responsiveness/) value for the current\n * page and calls the `callback` function once the value is ready, along with\n * the `event` performance entries reported for that interaction. The reported\n * value is a `DOMHighResTimeStamp`.\n *\n * A custom `durationThreshold` configuration option can optionally be passed to\n * control what `event-timing` entries are considered for INP reporting. The\n * default threshold is `40`, which means INP scores of less than 40 are\n * reported as 0. Note that this will not affect your 75th percentile INP value\n * unless that value is also less than 40 (well below the recommended\n * [good](https://web.dev/inp/#what-is-a-good-inp-score) threshold).\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:** INP 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 onINP = (onReport, opts) => {\n // Set defaults\n // eslint-disable-next-line no-param-reassign\n opts = opts || {};\n\n // https://web.dev/inp/#what's-a-%22good%22-inp-value\n // const thresholds = [200, 500];\n\n // TODO(philipwalton): remove once the polyfill is no longer needed.\n initInteractionCountPolyfill();\n\n const metric = initMetric('INP');\n // eslint-disable-next-line prefer-const\n let report;\n\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n if (entry.interactionId) {\n processEntry(entry);\n }\n\n // Entries of type `first-input` don't currently have an `interactionId`,\n // so to consider them in INP we have to first check that an existing\n // entry doesn't match the `duration` and `startTime`.\n // Note that this logic assumes that `event` entries are dispatched\n // before `first-input` entries. This is true in Chrome but it is not\n // true in Firefox; however, Firefox doesn't support interactionId, so\n // it's not an issue at the moment.\n // TODO(philipwalton): remove once crbug.com/1325826 is fixed.\n if (entry.entryType === 'first-input') {\n const noMatchingEntry = !longestInteractionList.some(interaction => {\n return interaction.entries.some(prevEntry => {\n return entry.duration === prevEntry.duration && entry.startTime === prevEntry.startTime;\n });\n });\n if (noMatchingEntry) {\n processEntry(entry);\n }\n }\n });\n\n const inp = estimateP98LongestInteraction();\n\n if (inp && inp.latency !== metric.value) {\n metric.value = inp.latency;\n metric.entries = inp.entries;\n report();\n }\n };\n\n const po = observe('event', handleEntries, {\n // Event Timing entries have their durations rounded to the nearest 8ms,\n // so a duration of 40ms would be any event that spans 2.5 or more frames\n // at 60Hz. This threshold is chosen to strike a balance between usefulness\n // and performance. Running this callback for any interaction that spans\n // just one or two frames is likely not worth the insight that could be\n // gained.\n durationThreshold: opts.durationThreshold || 40,\n } );\n\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n if (po) {\n // Also observe entries of type `first-input`. This is useful in cases\n // where the first interaction is less than the `durationThreshold`.\n po.observe({ type: 'first-input', buffered: true });\n\n onHidden(() => {\n handleEntries(po.takeRecords() );\n\n // If the interaction count shows that there were interactions but\n // none were captured by the PerformanceObserver, report a latency of 0.\n if (metric.value < 0 && getInteractionCountForNavigation() > 0) {\n metric.value = 0;\n metric.entries = [];\n }\n\n report(true);\n });\n }\n};\n\nexport { onINP };\n//# sourceMappingURL=getINP.js.map\n","import { WINDOW } from '../types.js';\nimport { 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 */\nconst onLCP = (onReport) => {\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);\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 if (WINDOW.document) {\n addEventListener(type, stopListening, { once: true, capture: true });\n }\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onLCP };\n//# sourceMappingURL=getLCP.js.map\n","import { WINDOW } from '../types.js';\nimport { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getNavigationEntry } from './lib/getNavigationEntry.js';\nimport { initMetric } from './lib/initMetric.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 * Runs in the next task after the page is done loading and/or prerendering.\n * @param callback\n */\nconst whenReady = (callback) => {\n if (!WINDOW.document) {\n return;\n }\n\n if (WINDOW.document.prerendering) {\n addEventListener('prerenderingchange', () => whenReady(callback), true);\n } else if (WINDOW.document.readyState !== 'complete') {\n addEventListener('load', () => whenReady(callback), true);\n } else {\n // Queue a task so the callback runs after `loadEventEnd`.\n setTimeout(callback, 0);\n }\n};\n\n/**\n * Calculates the [TTFB](https://web.dev/time-to-first-byte/) value for the\n * current page and calls the `callback` function once the page has loaded,\n * along with the relevant `navigation` performance entry used to determine the\n * value. The reported value is a `DOMHighResTimeStamp`.\n *\n * Note, this function waits until after the page is loaded to call `callback`\n * in order to ensure all properties of the `navigation` entry are populated.\n * This is useful if you want to report on other metrics exposed by the\n * [Navigation Timing API](https://w3c.github.io/navigation-timing/). For\n * example, the TTFB metric starts from the page's [time\n * origin](https://www.w3.org/TR/hr-time-2/#sec-time-origin), which means it\n * includes time spent on DNS lookup, connection negotiation, network latency,\n * and server processing time.\n */\nconst onTTFB = (onReport, opts) => {\n // Set defaults\n // eslint-disable-next-line no-param-reassign\n opts = opts || {};\n\n // https://web.dev/ttfb/#what-is-a-good-ttfb-score\n // const thresholds = [800, 1800];\n\n const metric = initMetric('TTFB');\n const report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n whenReady(() => {\n const navEntry = getNavigationEntry() ;\n\n if (navEntry) {\n // The activationStart reference is used because TTFB should be\n // relative to page activation rather than navigation start if the\n // page was prerendered. But in cases where `activationStart` occurs\n // after the first byte is received, this time should be clamped at 0.\n metric.value = Math.max(navEntry.responseStart - getActivationStart(), 0);\n\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n if (metric.value < 0 || metric.value > performance.now()) return;\n\n metric.entries = [navEntry];\n\n report(true);\n }\n });\n};\n\nexport { onTTFB };\n//# sourceMappingURL=onTTFB.js.map\n","import { logger, getFunctionName } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../common/debug-build.js';\nimport { onCLS } from './web-vitals/getCLS.js';\nimport { onFID } from './web-vitals/getFID.js';\nimport { onINP } from './web-vitals/getINP.js';\nimport { onLCP } from './web-vitals/getLCP.js';\nimport { observe } from './web-vitals/lib/observe.js';\nimport { onTTFB } from './web-vitals/onTTFB.js';\n\nconst handlers = {};\nconst instrumented = {};\n\nlet _previousCls;\nlet _previousFid;\nlet _previousLcp;\nlet _previousTtfb;\nlet _previousInp;\n\n/**\n * Add a callback that will be triggered when a CLS metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called.\n * This will lead to the CLS being finalized and frozen.\n */\nfunction addClsInstrumentationHandler(\n callback,\n stopOnCallback = false,\n) {\n return addMetricObserver('cls', callback, instrumentCls, _previousCls, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a LCP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called.\n * This will lead to the LCP being finalized and frozen.\n */\nfunction addLcpInstrumentationHandler(\n callback,\n stopOnCallback = false,\n) {\n return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n */\nfunction addTtfbInstrumentationHandler(callback) {\n return addMetricObserver('ttfb', callback, instrumentTtfb, _previousTtfb);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addFidInstrumentationHandler(callback) {\n return addMetricObserver('fid', callback, instrumentFid, _previousFid);\n}\n\n/**\n * Add a callback that will be triggered when a INP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addInpInstrumentationHandler(\n callback,\n) {\n return addMetricObserver('inp', callback, instrumentInp, _previousInp);\n}\n\n/**\n * Add a callback that will be triggered when a performance observer is triggered,\n * and receives the entries of the observer.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addPerformanceInstrumentationHandler(\n type,\n callback,\n) {\n addHandler(type, callback);\n\n if (!instrumented[type]) {\n instrumentPerformanceObserver(type);\n instrumented[type] = true;\n }\n\n return getCleanupCallback(type, callback);\n}\n\n/** Trigger all handlers of a given type. */\nfunction triggerHandlers(type, data) {\n const typeHandlers = handlers[type];\n\n if (!typeHandlers || !typeHandlers.length) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\nfunction instrumentCls() {\n return onCLS(\n metric => {\n triggerHandlers('cls', {\n metric,\n });\n _previousCls = metric;\n },\n { reportAllChanges: true },\n );\n}\n\nfunction instrumentFid() {\n return onFID(metric => {\n triggerHandlers('fid', {\n metric,\n });\n _previousFid = metric;\n });\n}\n\nfunction instrumentLcp() {\n return onLCP(metric => {\n triggerHandlers('lcp', {\n metric,\n });\n _previousLcp = metric;\n });\n}\n\nfunction instrumentTtfb() {\n return onTTFB(metric => {\n triggerHandlers('ttfb', {\n metric,\n });\n _previousTtfb = metric;\n });\n}\n\nfunction instrumentInp() {\n return onINP(metric => {\n triggerHandlers('inp', {\n metric,\n });\n _previousInp = metric;\n });\n}\n\nfunction addMetricObserver(\n type,\n callback,\n instrumentFn,\n previousValue,\n stopOnCallback = false,\n) {\n addHandler(type, callback);\n\n let stopListening;\n\n if (!instrumented[type]) {\n stopListening = instrumentFn();\n instrumented[type] = true;\n }\n\n if (previousValue) {\n callback({ metric: previousValue });\n }\n\n return getCleanupCallback(type, callback, stopOnCallback ? stopListening : undefined);\n}\n\nfunction instrumentPerformanceObserver(type) {\n const options = {};\n\n // Special per-type options we want to use\n if (type === 'event') {\n options.durationThreshold = 0;\n }\n\n observe(\n type,\n entries => {\n triggerHandlers(type, { entries });\n },\n options,\n );\n}\n\nfunction addHandler(type, handler) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(handler);\n}\n\n// Get a callback which can be called to remove the instrumentation handler\nfunction getCleanupCallback(\n type,\n callback,\n stopListening,\n) {\n return () => {\n if (stopListening) {\n stopListening();\n }\n\n const typeHandlers = handlers[type];\n\n if (!typeHandlers) {\n return;\n }\n\n const index = typeHandlers.indexOf(callback);\n if (index !== -1) {\n typeHandlers.splice(index, 1);\n }\n };\n}\n\nexport { addClsInstrumentationHandler, addFidInstrumentationHandler, addInpInstrumentationHandler, addLcpInstrumentationHandler, addPerformanceInstrumentationHandler, addTtfbInstrumentationHandler };\n//# sourceMappingURL=instrument.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ\n\n;\n\nexport { WINDOW };\n//# sourceMappingURL=types.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 // eslint-disable-next-line deprecation/deprecation\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 { 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 if (WINDOW.document && WINDOW.document.visibilityState) {\n firstHiddenTime = WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n }\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 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 { 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\n if (WINDOW.document) {\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};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { getOriginalFunction } from '@sentry/utils';\nimport { getClient } from '../exports.js';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration.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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * @deprecated Use `functionToStringIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst FunctionToString = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n functionToStringIntegration,\n) ;\n\n// eslint-disable-next-line deprecation/deprecation\n\nexport { FunctionToString, functionToStringIntegration };\n//# sourceMappingURL=functiontostring.js.map\n","import { logger, getEventDescription, stringMatchesSomePattern } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration.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.$/,\n /^Cannot redefine property: googletag$/,\n];\n\nconst DEFAULT_IGNORE_TRANSACTIONS = [\n /^.*\\/healthcheck$/,\n /^.*\\/healthy$/,\n /^.*\\/live$/,\n /^.*\\/ready$/,\n /^.*\\/heartbeat$/,\n /^.*\\/health$/,\n /^.*\\/healthz$/,\n];\n\n/** Options for the InboundFilters integration */\n\nconst INTEGRATION_NAME = 'InboundFilters';\nconst _inboundFiltersIntegration = ((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\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\n/**\n * Inbound filters configurable by the user.\n * @deprecated Use `inboundFiltersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst InboundFilters = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n inboundFiltersIntegration,\n)\n\n;\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: [\n ...(internalOptions.ignoreTransactions || []),\n ...(clientOptions.ignoreTransactions || []),\n ...(internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS),\n ],\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 (_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 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\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 if (DEBUG_BUILD && possibleMessages.length === 0) {\n logger.error(`Could not extract message for event ${getEventDescription(event)}`);\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 // 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-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\nexport { InboundFilters, inboundFiltersIntegration };\n//# sourceMappingURL=inboundfilters.js.map\n","import { isInstanceOf } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nfunction applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation,\n parser,\n maxValueLimit = 250,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = truncateAggregateExceptions(\n aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException ,\n key,\n event.exception.values,\n originalException,\n 0,\n ),\n maxValueLimit,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error,\n key,\n prevExceptions,\n exception,\n exceptionId,\n) {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n // Recursively call this function in order to walk down a chain of errors\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, error[key]);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key],\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (Array.isArray(error.errors)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, childError);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception, exceptionId) {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception,\n source,\n exceptionId,\n parentId,\n) {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions, maxValueLength) {\n return exceptions.map(exception => {\n if (exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n return exception;\n });\n}\n\nexport { applyAggregateErrorsToEvent };\n//# sourceMappingURL=aggregate-errors.js.map\n","import { isError, isPlainObject, isParameterizedString } from './is.js';\nimport { addExceptionTypeValue, addExceptionMechanism } from './misc.js';\nimport { normalizeToSize } from './normalize.js';\nimport { extractExceptionKeysForMessage } from './object.js';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nfunction parseStackFrames(stackParser, error) {\n return stackParser(error.stack || '', 1);\n}\n\n/**\n * Extracts stack frames from the error and builds a Sentry Exception\n */\nfunction exceptionFromError(stackParser, error) {\n const exception = {\n type: error.name || error.constructor.name,\n value: error.message,\n };\n\n const frames = parseStackFrames(stackParser, error);\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n return exception;\n}\n\nfunction getMessageForObject(exception) {\n if ('name' in exception && typeof exception.name === 'string') {\n let message = `'${exception.name}' captured as exception`;\n\n if ('message' in exception && typeof exception.message === 'string') {\n message += ` with message '${exception.message}'`;\n }\n\n return message;\n } else if ('message' in exception && typeof exception.message === 'string') {\n return exception.message;\n } else {\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n return `Object captured as exception with keys: ${extractExceptionKeysForMessage(\n exception ,\n )}`;\n }\n}\n\n/**\n * Builds and Event from a Exception\n *\n * TODO(v8): Remove getHub fallback\n * @hidden\n */\nfunction eventFromUnknownInput(\n // eslint-disable-next-line deprecation/deprecation\n getHubOrClient,\n stackParser,\n exception,\n hint,\n) {\n const client =\n typeof getHubOrClient === 'function'\n ? // eslint-disable-next-line deprecation/deprecation\n getHubOrClient().getClient()\n : getHubOrClient;\n\n let ex = exception;\n const providedMechanism =\n hint && hint.data && (hint.data ).mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic',\n };\n\n let extras;\n\n if (!isError(exception)) {\n if (isPlainObject(exception)) {\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n extras = { ['__serialized__']: normalizeToSize(exception , normalizeDepth) };\n\n const message = getMessageForObject(exception);\n ex = (hint && hint.syntheticException) || new Error(message);\n (ex ).message = message;\n } else {\n // This handles when someone does: `throw \"something awesome\";`\n // We use synthesized Error here so we can extract a (rough) stack trace.\n ex = (hint && hint.syntheticException) || new Error(exception );\n (ex ).message = exception ;\n }\n mechanism.synthetic = true;\n }\n\n const event = {\n exception: {\n values: [exceptionFromError(stackParser, ex )],\n },\n };\n\n if (extras) {\n event.extra = extras;\n }\n\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, mechanism);\n\n return {\n ...event,\n event_id: hint && hint.event_id,\n };\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 event = {\n event_id: hint && hint.event_id,\n level,\n };\n\n if (attachStacktrace && hint && hint.syntheticException) {\n const frames = parseStackFrames(stackParser, hint.syntheticException);\n if (frames.length) {\n event.exception = {\n values: [\n {\n value: message,\n stacktrace: { frames },\n },\n ],\n };\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nexport { eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","import { applyAggregateErrorsToEvent, exceptionFromError } from '@sentry/utils';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n key,\n limit,\n event,\n hint,\n );\n },\n };\n}) ;\n\nconst linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\n/**\n * Adds SDK info to an event.\n * @deprecated Use `linkedErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration)\n\n;\n\nexport { LinkedErrors, linkedErrorsIntegration };\n//# sourceMappingURL=linkederrors.js.map\n","export { addTracingExtensions, startIdleTransaction } from './tracing/hubextensions.js';\nexport { IdleTransaction, TRACING_DEFAULTS } from './tracing/idletransaction.js';\nexport { Span } from './tracing/span.js';\nexport { Transaction } from './tracing/transaction.js';\nexport { extractTraceparentData, getActiveTransaction } from './tracing/utils.js';\nexport { SpanStatus, getSpanStatusFromHttpCode, setHttpStatus, spanStatusfromHttpCode } from './tracing/spanstatus.js';\nexport { continueTrace, getActiveSpan, startActiveSpan, startInactiveSpan, startSpan, startSpanManual, trace } from './tracing/trace.js';\nexport { getDynamicSamplingContextFromClient, getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext.js';\nexport { setMeasurement } from './tracing/measurement.js';\nexport { isValidSampleRate } from './tracing/sampling.js';\nexport { SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from './semanticAttributes.js';\nexport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nexport { addBreadcrumb, captureCheckIn, captureEvent, captureException, captureMessage, captureSession, close, configureScope, endSession, flush, getClient, getCurrentScope, isInitialized, lastEventId, setContext, setExtra, setExtras, setTag, setTags, setUser, startSession, startTransaction, withActiveSpan, withIsolationScope, withMonitor, withScope } from './exports.js';\nexport { Hub, ensureHubOnCarrier, getCurrentHub, getHubFromCarrier, getIsolationScope, getMainCarrier, makeMain, runWithAsyncContext, setAsyncContextStrategy, setHubOnCarrier } from './hub.js';\nexport { closeSession, makeSession, updateSession } from './session.js';\nexport { SessionFlusher } from './sessionflusher.js';\nexport { Scope, getGlobalScope, setGlobalScope } from './scope.js';\nexport { addGlobalEventProcessor, notifyEventProcessors } from './eventProcessors.js';\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint } from './api.js';\nexport { BaseClient, addEventProcessor } from './baseclient.js';\nexport { ServerRuntimeClient } from './server-runtime-client.js';\nexport { initAndBind, setCurrentClient } from './sdk.js';\nexport { createTransport } from './transports/base.js';\nexport { makeOfflineTransport } from './transports/offline.js';\nexport { makeMultiplexedTransport } from './transports/multiplexed.js';\nexport { SDK_VERSION } from './version.js';\nexport { addIntegration, convertIntegrationFnToClass, defineIntegration, getIntegrationsToSetup } from './integration.js';\nexport { applyScopeDataToEvent, mergeScopeData } from './utils/applyScopeDataToEvent.js';\nexport { prepareEvent } from './utils/prepareEvent.js';\nexport { createCheckInEnvelope } from './checkin.js';\nexport { createSpanEnvelope } from './span.js';\nexport { hasTracingEnabled } from './utils/hasTracingEnabled.js';\nexport { isSentryRequestUrl } from './utils/isSentryRequestUrl.js';\nexport { handleCallbackErrors } from './utils/handleCallbackErrors.js';\nexport { parameterize } from './utils/parameterize.js';\nexport { spanIsSampled, spanToJSON, spanToTraceContext, spanToTraceHeader } from './utils/spanUtils.js';\nexport { getRootSpan } from './utils/getRootSpan.js';\nexport { applySdkMetadata } from './utils/sdkMetadata.js';\nexport { DEFAULT_ENVIRONMENT } from './constants.js';\nexport { ModuleMetadata, moduleMetadataIntegration } from './integrations/metadata.js';\nexport { RequestData, requestDataIntegration } from './integrations/requestdata.js';\nexport { InboundFilters, inboundFiltersIntegration } from './integrations/inboundfilters.js';\nexport { FunctionToString, functionToStringIntegration } from './integrations/functiontostring.js';\nexport { LinkedErrors, linkedErrorsIntegration } from './integrations/linkederrors.js';\nimport * as index from './integrations/index.js';\nexport { metrics } from './metrics/exports.js';\n\n/** @deprecated Import the integration function directly, e.g. `inboundFiltersIntegration()` instead of `new Integrations.InboundFilter(). */\nconst Integrations = index;\n\nexport { Integrations };\n//# sourceMappingURL=index.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\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) {\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 { forEachEnvelopeItem } from '@sentry/utils';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration.js';\nimport { stripMetadataFromStackFrames, addMetadataToStackFrames } from '../metadata.js';\n\nconst INTEGRATION_NAME = 'ModuleMetadata';\n\nconst _moduleMetadataIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n setup(client) {\n if (typeof client.on !== 'function') {\n return;\n }\n\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\n processEvent(event, _hint, client) {\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n return event;\n },\n };\n}) ;\n\nconst moduleMetadataIntegration = defineIntegration(_moduleMetadataIntegration);\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `_experiments.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 *\n * @deprecated Use `moduleMetadataIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst ModuleMetadata = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n moduleMetadataIntegration,\n)\n\n;\n\nexport { ModuleMetadata, moduleMetadataIntegration };\n//# sourceMappingURL=metadata.js.map\n","import { GLOBAL_OBJ } from '../worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers.js';\n\nlet _oldOnErrorHandler = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addGlobalErrorInstrumentationHandler(handler) {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError() {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n GLOBAL_OBJ.onerror = function (\n msg,\n url,\n line,\n column,\n error,\n ) {\n const handlerData = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalErrorInstrumentationHandler };\n//# sourceMappingURL=globalError.js.map\n","import { GLOBAL_OBJ } from '../worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers.js';\n\nlet _oldOnUnhandledRejectionHandler = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addGlobalUnhandledRejectionInstrumentationHandler(\n handler,\n) {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n GLOBAL_OBJ.onunhandledrejection = function (e) {\n const handlerData = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalUnhandledRejectionInstrumentationHandler };\n//# sourceMappingURL=globalUnhandledRejection.js.map\n","import { extractTraceparentData as extractTraceparentData$1 } from '@sentry/utils';\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\nimport { getCurrentHub } from '../hub.js';\n\n/**\n * Grabs active transaction off scope.\n *\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction getActiveTransaction(maybeHub) {\n // eslint-disable-next-line deprecation/deprecation\n const hub = maybeHub || getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const scope = hub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n return scope.getTransaction() ;\n}\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n *\n * @deprecated Import this function from `@sentry/utils` instead\n */\nconst extractTraceparentData = extractTraceparentData$1;\n\nexport { extractTraceparentData, getActiveTransaction };\n//# sourceMappingURL=utils.js.map\n","import { addGlobalErrorInstrumentationHandler, addGlobalUnhandledRejectionInstrumentationHandler, logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getActiveTransaction } from './utils.js';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nfunction registerErrorInstrumentation() {\n if (errorsInstrumented) {\n return;\n }\n\n errorsInstrumented = true;\n addGlobalErrorInstrumentationHandler(errorCallback);\n addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n // eslint-disable-next-line deprecation/deprecation\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status = 'internal_error';\n DEBUG_BUILD && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n\nexport { registerErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n","import { isThenable } from '@sentry/utils';\n\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nfunction handleCallbackErrors\n\n(\n fn,\n onError,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onFinally = () => {},\n) {\n let maybePromiseResult;\n try {\n maybePromiseResult = fn();\n } catch (e) {\n onError(e);\n onFinally();\n throw e;\n }\n\n return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n * Other than this, it will generally return the given value as-is.\n */\nfunction maybeHandlePromiseRejection(\n value,\n onError,\n onFinally,\n) {\n if (isThenable(value)) {\n // @ts-expect-error - the isThenable check returns the \"wrong\" type here\n return value.then(\n res => {\n onFinally();\n return res;\n },\n e => {\n onError(e);\n onFinally();\n throw e;\n },\n );\n }\n\n onFinally();\n return value;\n}\n\nexport { handleCallbackErrors };\n//# sourceMappingURL=handleCallbackErrors.js.map\n","import { getClient } from '../exports.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\nexport { hasTracingEnabled };\n//# sourceMappingURL=hasTracingEnabled.js.map\n","import { tracingContextFromHeaders, logger, dropUndefinedKeys, addNonEnumerableProperty } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getCurrentHub, runWithAsyncContext, getIsolationScope } from '../hub.js';\nimport { spanToJSON, spanIsSampled, spanTimeInputToSeconds } from '../utils/spanUtils.js';\nimport './errors.js';\nimport './spanstatus.js';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext.js';\nimport { getCurrentScope, withScope } from '../exports.js';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n *\n * This function is meant to be used internally and may break at any time. Use at your own risk.\n *\n * @internal\n * @private\n *\n * @deprecated Use `startSpan` instead.\n */\nfunction trace(\n context,\n callback,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onError = () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n afterFinish = () => {},\n) {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const scope = getCurrentScope();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const spanContext = normalizeContext(context);\n const activeSpan = createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: false,\n scope,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(activeSpan);\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n error => {\n activeSpan && activeSpan.setStatus('internal_error');\n onError(error, activeSpan);\n },\n () => {\n activeSpan && activeSpan.end();\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(parentSpan);\n afterFinish();\n },\n );\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nfunction startSpan(context, callback) {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n () => {\n // Only update the span status if it hasn't been changed yet\n if (activeSpan) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n () => activeSpan && activeSpan.end(),\n );\n });\n });\n}\n\n/**\n * @deprecated Use {@link startSpan} instead.\n */\nconst startActiveSpan = startSpan;\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nfunction startSpanManual(\n context,\n callback,\n) {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n function finishAndSetSpan() {\n activeSpan && activeSpan.end();\n }\n\n return handleCallbackErrors(\n () => callback(activeSpan, finishAndSetSpan),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n if (activeSpan && activeSpan.isRecording()) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n );\n });\n });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate` or `tracesSampler`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nfunction startInactiveSpan(context) {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const spanContext = normalizeContext(context);\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const parentSpan = context.scope\n ? // eslint-disable-next-line deprecation/deprecation\n context.scope.getSpan()\n : getActiveSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n\n if (shouldSkipSpan) {\n return undefined;\n }\n\n const scope = context.scope || getCurrentScope();\n\n // Even though we don't actually want to make this span active on the current scope,\n // we need to make it active on a temporary scope that we use for event processing\n // as otherwise, it won't pick the correct span for the event when processing it\n const temporaryScope = (scope ).clone();\n\n return createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope: temporaryScope,\n });\n}\n\n/**\n * Returns the currently active span.\n */\nfunction getActiveSpan() {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentScope().getSpan();\n}\n\nconst continueTrace = (\n {\n sentryTrace,\n baggage,\n }\n\n,\n callback,\n) => {\n // TODO(v8): Change this function so it doesn't do anything besides setting the propagation context on the current scope:\n /*\n return withScope((scope) => {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n scope.setPropagationContext(propagationContext);\n return callback();\n })\n */\n\n const currentScope = getCurrentScope();\n\n // eslint-disable-next-line deprecation/deprecation\n const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n sentryTrace,\n baggage,\n );\n\n currentScope.setPropagationContext(propagationContext);\n\n if (DEBUG_BUILD && traceparentData) {\n logger.log(`[Tracing] Continuing trace ${traceparentData.traceId}.`);\n }\n\n const transactionContext = {\n ...traceparentData,\n metadata: dropUndefinedKeys({\n dynamicSamplingContext,\n }),\n };\n\n if (!callback) {\n return transactionContext;\n }\n\n return runWithAsyncContext(() => {\n return callback(transactionContext);\n });\n};\n\nfunction createChildSpanOrTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub,\n {\n parentSpan,\n spanContext,\n forceTransaction,\n scope,\n }\n\n,\n) {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const isolationScope = getIsolationScope();\n\n let span;\n if (parentSpan && !forceTransaction) {\n // eslint-disable-next-line deprecation/deprecation\n span = parentSpan.startChild(spanContext);\n } else if (parentSpan) {\n // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n const sampled = spanIsSampled(parentSpan);\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n } else {\n const { traceId, dsc, parentSpanId, sampled } = {\n ...isolationScope.getPropagationContext(),\n ...scope.getPropagationContext(),\n };\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n }\n\n // We always set this as active span on the scope\n // In the case of this being an inactive span, we ensure to pass a detached scope in here in the first place\n // But by having this here, we can ensure that the lookup through `getCapturedScopesOnSpan` results in the correct scope & span combo\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(span);\n\n setCapturedScopesOnSpan(span, scope, isolationScope);\n\n return span;\n}\n\n/**\n * This converts StartSpanOptions to TransactionContext.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n *\n * Eventually the StartSpanOptions will be more aligned with OpenTelemetry.\n */\nfunction normalizeContext(context) {\n if (context.startTime) {\n const ctx = { ...context };\n ctx.startTimestamp = spanTimeInputToSeconds(context.startTime);\n delete ctx.startTime;\n return ctx;\n }\n\n return context;\n}\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\nfunction setCapturedScopesOnSpan(span, scope, isolationScope) {\n if (span) {\n addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, isolationScope);\n addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n */\nfunction getCapturedScopesOnSpan(span) {\n return {\n scope: (span )[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: (span )[ISOLATION_SCOPE_ON_START_SPAN_FIELD],\n };\n}\n\nexport { continueTrace, getActiveSpan, getCapturedScopesOnSpan, startActiveSpan, startInactiveSpan, startSpan, startSpanManual, trace };\n//# sourceMappingURL=trace.js.map\n","import { dropUndefinedKeys } from '@sentry/utils';\nimport '../debug-build.js';\nimport '../tracing/errors.js';\nimport '../tracing/spanstatus.js';\nimport { getActiveSpan } from '../tracing/trace.js';\n\n/**\n * key: bucketKey\n * value: [exportKey, MetricSummary]\n */\n\nlet SPAN_METRIC_SUMMARY;\n\nfunction getMetricStorageForSpan(span) {\n return SPAN_METRIC_SUMMARY ? SPAN_METRIC_SUMMARY.get(span) : undefined;\n}\n\n/**\n * Fetches the metric summary if it exists for the passed span\n */\nfunction getMetricSummaryJsonForSpan(span) {\n const storage = getMetricStorageForSpan(span);\n\n if (!storage) {\n return undefined;\n }\n const output = {};\n\n for (const [, [exportKey, summary]] of storage) {\n if (!output[exportKey]) {\n output[exportKey] = [];\n }\n\n output[exportKey].push(dropUndefinedKeys(summary));\n }\n\n return output;\n}\n\n/**\n * Updates the metric summary on the currently active span\n */\nfunction updateMetricSummaryOnActiveSpan(\n metricType,\n sanitizedName,\n value,\n unit,\n tags,\n bucketKey,\n) {\n const span = getActiveSpan();\n if (span) {\n const storage = getMetricStorageForSpan(span) || 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 if (!SPAN_METRIC_SUMMARY) {\n SPAN_METRIC_SUMMARY = new WeakMap();\n }\n\n SPAN_METRIC_SUMMARY.set(span, storage);\n }\n}\n\nexport { getMetricSummaryJsonForSpan, updateMetricSummaryOnActiveSpan };\n//# sourceMappingURL=metric-summary.js.map\n","/** The status of an Span.\n *\n * @deprecated Use string literals - if you require type casting, cast to SpanStatusType type\n */\nvar SpanStatus; (function (SpanStatus) {\n /** The operation completed successfully. */\n const Ok = 'ok'; SpanStatus[\"Ok\"] = Ok;\n /** Deadline expired before operation could complete. */\n const DeadlineExceeded = 'deadline_exceeded'; SpanStatus[\"DeadlineExceeded\"] = DeadlineExceeded;\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n const Unauthenticated = 'unauthenticated'; SpanStatus[\"Unauthenticated\"] = Unauthenticated;\n /** 403 Forbidden */\n const PermissionDenied = 'permission_denied'; SpanStatus[\"PermissionDenied\"] = PermissionDenied;\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n const NotFound = 'not_found'; SpanStatus[\"NotFound\"] = NotFound;\n /** 429 Too Many Requests */\n const ResourceExhausted = 'resource_exhausted'; SpanStatus[\"ResourceExhausted\"] = ResourceExhausted;\n /** Client specified an invalid argument. 4xx. */\n const InvalidArgument = 'invalid_argument'; SpanStatus[\"InvalidArgument\"] = InvalidArgument;\n /** 501 Not Implemented */\n const Unimplemented = 'unimplemented'; SpanStatus[\"Unimplemented\"] = Unimplemented;\n /** 503 Service Unavailable */\n const Unavailable = 'unavailable'; SpanStatus[\"Unavailable\"] = Unavailable;\n /** Other/generic 5xx. */\n const InternalError = 'internal_error'; SpanStatus[\"InternalError\"] = InternalError;\n /** Unknown. Any non-standard HTTP status code. */\n const UnknownError = 'unknown_error'; SpanStatus[\"UnknownError\"] = UnknownError;\n /** The operation was cancelled (typically by the user). */\n const Cancelled = 'cancelled'; SpanStatus[\"Cancelled\"] = Cancelled;\n /** Already exists (409) */\n const AlreadyExists = 'already_exists'; SpanStatus[\"AlreadyExists\"] = AlreadyExists;\n /** Operation was rejected because the system is not in a state required for the operation's */\n const FailedPrecondition = 'failed_precondition'; SpanStatus[\"FailedPrecondition\"] = FailedPrecondition;\n /** The operation was aborted, typically due to a concurrency issue. */\n const Aborted = 'aborted'; SpanStatus[\"Aborted\"] = Aborted;\n /** Operation was attempted past the valid range. */\n const OutOfRange = 'out_of_range'; SpanStatus[\"OutOfRange\"] = OutOfRange;\n /** Unrecoverable data loss or corruption */\n const DataLoss = 'data_loss'; SpanStatus[\"DataLoss\"] = DataLoss;\n})(SpanStatus || (SpanStatus = {}));\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 getSpanStatusFromHttpCode(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\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @deprecated Use {@link spanStatusFromHttpCode} instead.\n * This export will be removed in v8 as the signature contains a typo.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nconst spanStatusfromHttpCode = getSpanStatusFromHttpCode;\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nfunction setHttpStatus(span, httpStatus) {\n // TODO (v8): Remove these calls\n // Relay does not require us to send the status code as a tag\n // For now, just because users might expect it to land as a tag we keep sending it.\n // Same with data.\n // In v8, we replace both, simply with\n // span.setAttribute('http.response.status_code', httpStatus);\n\n // eslint-disable-next-line deprecation/deprecation\n span.setTag('http.status_code', String(httpStatus));\n // eslint-disable-next-line deprecation/deprecation\n span.setData('http.response.status_code', httpStatus);\n\n const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n span.setStatus(spanStatus);\n }\n}\n\nexport { SpanStatus, getSpanStatusFromHttpCode, setHttpStatus, spanStatusfromHttpCode };\n//# sourceMappingURL=spanstatus.js.map\n","import { uuid4, timestampInSeconds, logger, dropUndefinedKeys } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_PROFILE_ID } from '../semanticAttributes.js';\nimport { getRootSpan } from '../utils/getRootSpan.js';\nimport { TRACE_FLAG_SAMPLED, TRACE_FLAG_NONE, spanToJSON, spanTimeInputToSeconds, spanToTraceHeader, spanToTraceContext } from '../utils/spanUtils.js';\nimport { setHttpStatus } from './spanstatus.js';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n\n constructor(maxlen = 1000) {\n this._maxlen = maxlen;\n this.spans = [];\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 // eslint-disable-next-line deprecation/deprecation\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 * Tags for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n\n /**\n * Data for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n /**\n * List of spans that were finalized\n *\n * @deprecated This property will no longer be public. Span recording will be handled internally.\n */\n\n /**\n * @inheritDoc\n * @deprecated Use top level `Sentry.getRootSpan()` instead\n */\n\n /**\n * The instrumenter that created this span.\n *\n * TODO (v8): This can probably be replaced by an `instanceOf` check of the span class.\n * the instrumenter can only be sentry or otel so we can check the span instance\n * to verify which one it is and remove this field entirely.\n *\n * @deprecated This field will be removed.\n */\n\n /** Epoch timestamp in seconds when the span started. */\n\n /** Epoch timestamp in seconds when the span ended. */\n\n /** Internal keeper of the status */\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 = {}) {\n this._traceId = spanContext.traceId || uuid4();\n this._spanId = spanContext.spanId || uuid4().substring(16);\n this._startTime = spanContext.startTimestamp || timestampInSeconds();\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags ? { ...spanContext.tags } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data ? { ...spanContext.data } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.instrumenter = spanContext.instrumenter || 'sentry';\n\n this._attributes = {};\n this.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanContext.origin || 'manual',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n ...spanContext.attributes,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\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.status) {\n this._status = spanContext.status;\n }\n if (spanContext.endTimestamp) {\n this._endTime = spanContext.endTimestamp;\n }\n if (spanContext.exclusiveTime !== undefined) {\n this._exclusiveTime = spanContext.exclusiveTime;\n }\n this._measurements = spanContext.measurements ? { ...spanContext.measurements } : {};\n }\n\n // This rule conflicts with another eslint rule :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * An alias for `description` of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n get name() {\n return this._name || '';\n }\n\n /**\n * Update the name of the span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n set name(name) {\n this.updateName(name);\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n get description() {\n return this._name;\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n set description(description) {\n this._name = description;\n }\n\n /**\n * The ID of the trace.\n * @deprecated Use `spanContext().traceId` instead.\n */\n get traceId() {\n return this._traceId;\n }\n\n /**\n * The ID of the trace.\n * @deprecated You cannot update the traceId of a span after span creation.\n */\n set traceId(traceId) {\n this._traceId = traceId;\n }\n\n /**\n * The ID of the span.\n * @deprecated Use `spanContext().spanId` instead.\n */\n get spanId() {\n return this._spanId;\n }\n\n /**\n * The ID of the span.\n * @deprecated You cannot update the spanId of a span after span creation.\n */\n set spanId(spanId) {\n this._spanId = spanId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `startSpan` functions instead.\n */\n set parentSpanId(string) {\n this._parentSpanId = string;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).parent_span_id` instead.\n */\n get parentSpanId() {\n return this._parentSpanId;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated Use `isRecording()` instead.\n */\n get sampled() {\n return this._sampled;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated You cannot update the sampling decision of a span after span creation.\n */\n set sampled(sampled) {\n this._sampled = sampled;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n get attributes() {\n return this._attributes;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `setAttributes()` instead.\n */\n set attributes(attributes) {\n this._attributes = attributes;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated Use `spanToJSON()` instead.\n */\n get startTimestamp() {\n return this._startTime;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated In v8, you will not be able to update the span start time after creation.\n */\n set startTimestamp(startTime) {\n this._startTime = startTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Use `spanToJSON()` instead.\n */\n get endTimestamp() {\n return this._endTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Set the end time via `span.end()` instead.\n */\n set endTimestamp(endTime) {\n this._endTime = endTime;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `spanToJSON().status` instead to get the status.\n */\n get status() {\n return this._status;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `.setStatus()` instead to set or update the status.\n */\n set status(status) {\n this._status = status;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `spanToJSON().op` to read the op instead.\n */\n get op() {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] ;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `startSpan()` functions to set or `span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'op')\n * to update the span instead.\n */\n set op(op) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `spanToJSON().origin` to read the origin instead.\n */\n get origin() {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ;\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `startSpan()` functions to set the origin instead.\n */\n set origin(origin) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /** @inheritdoc */\n spanContext() {\n const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n return {\n spanId,\n traceId,\n traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n };\n }\n\n /**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * Also the `sampled` decision will be inherited.\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\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 // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder = this.spanRecorder;\n // eslint-disable-next-line deprecation/deprecation\n if (childSpan.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder.add(childSpan);\n }\n\n const rootSpan = getRootSpan(this);\n // TODO: still set span.transaction here until we have a more permanent solution\n // Probably similarly to the weakmap we hold in node-experimental\n // eslint-disable-next-line deprecation/deprecation\n childSpan.transaction = rootSpan ;\n\n if (DEBUG_BUILD && rootSpan) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = spanToJSON(childSpan).description || '< unknown name >';\n const idStr = rootSpan.spanContext().spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n logger.log(logMessage);\n this._logMessage = logMessage;\n }\n\n return childSpan;\n }\n\n /**\n * Sets the tag attribute on the current span.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key Tag key\n * @param value Tag value\n * @deprecated Use `setAttribute()` instead.\n */\n setTag(key, value) {\n // eslint-disable-next-line deprecation/deprecation\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * Sets the data attribute on the current span\n * @param key Data key\n * @param value Data value\n * @deprecated Use `setAttribute()` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setData(key, value) {\n // eslint-disable-next-line deprecation/deprecation\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /** @inheritdoc */\n setAttribute(key, value) {\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n } else {\n this._attributes[key] = value;\n }\n }\n\n /** @inheritdoc */\n setAttributes(attributes) {\n Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n }\n\n /**\n * @inheritDoc\n */\n setStatus(value) {\n this._status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top-level `setHttpStatus()` instead.\n */\n setHttpStatus(httpStatus) {\n setHttpStatus(this, httpStatus);\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @deprecated Use `.updateName()` instead.\n */\n setName(name) {\n this.updateName(name);\n }\n\n /**\n * @inheritDoc\n */\n updateName(name) {\n this._name = name;\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).status === 'ok'` instead.\n */\n isSuccess() {\n return this._status === 'ok';\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `.end()` instead.\n */\n finish(endTimestamp) {\n return this.end(endTimestamp);\n }\n\n /** @inheritdoc */\n end(endTimestamp) {\n // If already ended, skip\n if (this._endTime) {\n return;\n }\n const rootSpan = getRootSpan(this);\n if (\n DEBUG_BUILD &&\n // Don't call this for transactions\n rootSpan &&\n rootSpan.spanContext().spanId !== this._spanId\n ) {\n const logMessage = this._logMessage;\n if (logMessage) {\n logger.log((logMessage ).replace('Starting', 'Finishing'));\n }\n }\n\n this._endTime = spanTimeInputToSeconds(endTimestamp);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceHeader()` instead.\n */\n toTraceparent() {\n return spanToTraceHeader(this);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON()` or access the fields directly instead.\n */\n toContext() {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n endTimestamp: this._endTime,\n // eslint-disable-next-line deprecation/deprecation\n op: this.op,\n parentSpanId: this._parentSpanId,\n sampled: this._sampled,\n spanId: this._spanId,\n startTimestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n traceId: this._traceId,\n });\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Update the fields directly instead.\n */\n updateWithContext(spanContext) {\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data || {};\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\n this._endTime = spanContext.endTimestamp;\n // eslint-disable-next-line deprecation/deprecation\n this.op = spanContext.op;\n this._parentSpanId = spanContext.parentSpanId;\n this._sampled = spanContext.sampled;\n this._spanId = spanContext.spanId || this._spanId;\n this._startTime = spanContext.startTimestamp || this._startTime;\n this._status = spanContext.status;\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags || {};\n this._traceId = spanContext.traceId || this._traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceContext()` util function instead.\n */\n getTraceContext() {\n return spanToTraceContext(this);\n }\n\n /**\n * Get JSON representation of this span.\n *\n * @hidden\n * @internal This method is purely for internal purposes and should not be used outside\n * of SDK code. If you need to get a JSON representation of a span,\n * use `spanToJSON(span)` instead.\n */\n getSpanJSON() {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] ,\n parent_span_id: this._parentSpanId,\n span_id: this._spanId,\n start_timestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this._endTime,\n trace_id: this._traceId,\n origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ,\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] ,\n exclusive_time: this._exclusiveTime,\n measurements: Object.keys(this._measurements).length > 0 ? this._measurements : undefined,\n });\n }\n\n /** @inheritdoc */\n isRecording() {\n return !this._endTime && !!this._sampled;\n }\n\n /**\n * Convert the object to JSON.\n * @deprecated Use `spanToJSON(span)` instead.\n */\n toJSON() {\n return this.getSpanJSON();\n }\n\n /**\n * Get the merged data for this span.\n * For now, this combines `data` and `attributes` together,\n * until eventually we can ingest `attributes` directly.\n */\n _getData()\n\n {\n // eslint-disable-next-line deprecation/deprecation\n const { data, _attributes: attributes } = this;\n\n const hasData = Object.keys(data).length > 0;\n const hasAttributes = Object.keys(attributes).length > 0;\n\n if (!hasData && !hasAttributes) {\n return undefined;\n }\n\n if (hasData && hasAttributes) {\n return {\n ...data,\n ...attributes,\n };\n }\n\n return hasData ? data : attributes;\n }\n}\n\nexport { Span, SpanRecorder };\n//# sourceMappingURL=span.js.map\n","import { dropUndefinedKeys, logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getCurrentHub } from '../hub.js';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '../semanticAttributes.js';\nimport { spanTimeInputToSeconds, spanToJSON, spanToTraceContext } from '../utils/spanUtils.js';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext.js';\nimport { Span, SpanRecorder } from './span.js';\nimport { getCapturedScopesOnSpan } from './trace.js';\n\n/** JSDoc */\nclass Transaction extends Span {\n /**\n * The reference to the current hub.\n */\n // eslint-disable-next-line deprecation/deprecation\n\n // DO NOT yet remove this property, it is used in a hack for v7 backwards compatibility.\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 * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n constructor(transactionContext, hub) {\n super(transactionContext);\n this._contexts = {};\n\n // eslint-disable-next-line deprecation/deprecation\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this._metadata = {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.metadata,\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n // TODO (v8): Replace this with another way to set the root span\n // eslint-disable-next-line deprecation/deprecation\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 // This sadly conflicts with the getter/setter ordering :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * Getter for `name` property.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n get name() {\n return this._name;\n }\n\n /**\n * Setter for `name` property, which also sets `source` as custom.\n * @deprecated Use `updateName()` and `setMetadata()` instead.\n */\n set name(newName) {\n // eslint-disable-next-line deprecation/deprecation\n this.setName(newName);\n }\n\n /**\n * Get the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n get metadata() {\n // We merge attributes in for backwards compatibility\n return {\n // Defaults\n // eslint-disable-next-line deprecation/deprecation\n source: 'custom',\n spanMetadata: {},\n\n // Legacy metadata\n ...this._metadata,\n\n // From attributes\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] && {\n source: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] ,\n }),\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] && {\n sampleRate: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ,\n }),\n };\n }\n\n /**\n * Update the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n set metadata(metadata) {\n this._metadata = metadata;\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /**\n * Setter for `name` property, which also sets `source` on the metadata.\n *\n * @deprecated Use `.updateName()` and `.setAttribute()` instead.\n */\n setName(name, source = 'custom') {\n this._name = name;\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n }\n\n /** @inheritdoc */\n updateName(name) {\n this._name = name;\n return this;\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 // eslint-disable-next-line deprecation/deprecation\n if (!this.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Set the context of a transaction event.\n * @deprecated Use either `.setAttribute()`, or set the context on the scope before creating the transaction.\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 * @deprecated Use top-level `setMeasurement()` instead.\n */\n setMeasurement(name, value, unit = '') {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * Store metadata on this transaction.\n * @deprecated Use attributes or store data on the scope instead.\n */\n setMetadata(newMetadata) {\n this._metadata = { ...this._metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n end(endTimestamp) {\n const timestampInS = spanTimeInputToSeconds(endTimestamp);\n const transaction = this._finishTransaction(timestampInS);\n if (!transaction) {\n return undefined;\n }\n // eslint-disable-next-line deprecation/deprecation\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n // eslint-disable-next-line deprecation/deprecation\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 // eslint-disable-next-line deprecation/deprecation\n super.updateWithContext(transactionContext);\n\n this._name = transactionContext.name || '';\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n *\n * @deprecated Use top-level `getDynamicSamplingContextFromSpan` instead.\n */\n getDynamicSamplingContext() {\n return getDynamicSamplingContextFromSpan(this);\n }\n\n /**\n * Override the current hub with a new one.\n * Used if you want another hub to finish the transaction.\n *\n * @internal\n */\n // eslint-disable-next-line deprecation/deprecation\n setHub(hub) {\n this._hub = hub;\n }\n\n /**\n * Get the profile id of the transaction.\n */\n getProfileId() {\n if (this._contexts !== undefined && this._contexts['profile'] !== undefined) {\n return this._contexts['profile'].profile_id ;\n }\n return undefined;\n }\n\n /**\n * Finish the transaction & prepare the event to send to Sentry.\n */\n _finishTransaction(endTimestamp) {\n // This transaction is already finished, so we should not flush it again.\n if (this._endTime !== undefined) {\n return undefined;\n }\n\n if (!this._name) {\n DEBUG_BUILD && logger.warn('Transaction has no name, falling back to ``.');\n this._name = '';\n }\n\n // just sets the end timestamp\n super.end(endTimestamp);\n\n // eslint-disable-next-line deprecation/deprecation\n const client = this._hub.getClient();\n if (client && client.emit) {\n client.emit('finishTransaction', this);\n }\n\n if (this._sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const finishedSpans = this.spanRecorder\n ? // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.spans.filter(span => span !== this && spanToJSON(span).timestamp)\n : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n const endTimes = finishedSpans.map(span => spanToJSON(span).timestamp).filter(Boolean) ;\n this._endTime = endTimes.reduce((prev, current) => {\n return prev > current ? prev : current;\n });\n }\n\n const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n // eslint-disable-next-line deprecation/deprecation\n const { metadata } = this;\n // eslint-disable-next-line deprecation/deprecation\n const { source } = metadata;\n\n const transaction = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: spanToTraceContext(this),\n },\n // TODO: Pass spans serialized via `spanToJSON()` here instead in v8.\n spans: finishedSpans,\n start_timestamp: this._startTime,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n timestamp: this._endTime,\n transaction: this._name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n capturedSpanScope,\n capturedSpanIsolationScope,\n ...dropUndefinedKeys({\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n }),\n },\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n DEBUG_BUILD &&\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 // eslint-disable-next-line deprecation/deprecation\n DEBUG_BUILD && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`);\n\n return transaction;\n }\n}\n\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map\n","import { logger, timestampInSeconds } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils.js';\nimport { SpanRecorder } from './span.js';\nimport { Transaction } from './transaction.js';\n\nconst TRACING_DEFAULTS = {\n idleTimeout: 1000,\n finalTimeout: 30000,\n heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n 'heartbeatFailed',\n 'idleTimeout',\n 'documentHidden',\n 'finalTimeout',\n 'externalFinish',\n 'cancelled',\n];\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 * @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.spanContext().spanId !== this.transactionSpanId) {\n // We patch span.end() to pop an activity after setting an endTimestamp.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const originalEnd = span.end;\n span.end = (...rest) => {\n this._popActivity(span.spanContext().spanId);\n return originalEnd.apply(span, rest);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (spanToJSON(span).timestamp === undefined) {\n this._pushActivity(span.spanContext().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\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\n // We should not use heartbeat if we finished a transaction\n\n // Idle timeout was canceled and we should finish the transaction with the last span end.\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n\n /**\n * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n constructor(\n transactionContext,\n // eslint-disable-next-line deprecation/deprecation\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 = TRACING_DEFAULTS.idleTimeout,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n _finalTimeout = TRACING_DEFAULTS.finalTimeout,\n _heartbeatInterval = TRACING_DEFAULTS.heartbeatInterval,\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 * When set to `true`, will disable the idle timeout (`_idleTimeout` option) and heartbeat mechanisms (`_heartbeatInterval`\n * option) until the `sendAutoFinishSignal()` method is called. The final timeout mechanism (`_finalTimeout` option)\n * will not be affected by this option, meaning the transaction will definitely be finished when the final timeout is\n * reached, no matter what this option is configured to.\n *\n * Defaults to `false`.\n */\n delayAutoFinishUntilSignal = false,\n ) {\n super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._heartbeatInterval = _heartbeatInterval;this._onScope = _onScope;\n this.activities = {};\n this._heartbeatCounter = 0;\n this._finished = false;\n this._idleTimeoutCanceledPermanently = false;\n this._beforeFinishCallbacks = [];\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];\n this._autoFinishAllowed = !delayAutoFinishUntilSignal;\n\n if (_onScope) {\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 DEBUG_BUILD && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanContext().spanId}`);\n // eslint-disable-next-line deprecation/deprecation\n _idleHub.getScope().setSpan(this);\n }\n\n if (!delayAutoFinishUntilSignal) {\n this._restartIdleTimeout();\n }\n\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n this.end();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n end(endTimestamp) {\n const endTimestampInS = spanTimeInputToSeconds(endTimestamp);\n\n this._finished = true;\n this.activities = {};\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.op === 'ui.action.click') {\n this.setAttribute(FINISH_REASON_TAG, this._finishReason);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.spanRecorder) {\n DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestampInS * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestampInS);\n }\n\n // eslint-disable-next-line deprecation/deprecation\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.spanContext().spanId === this.spanContext().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 (!spanToJSON(span).timestamp) {\n span.setStatus('cancelled');\n span.end(endTimestampInS);\n DEBUG_BUILD &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const { start_timestamp: startTime, timestamp: endTime } = spanToJSON(span);\n const spanStartedBeforeTransactionFinish = startTime && startTime < endTimestampInS;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = endTime && startTime && endTime - startTime < timeoutWithMarginOfError;\n\n if (DEBUG_BUILD) {\n const stringifiedSpan = JSON.stringify(span, undefined, 2);\n if (!spanStartedBeforeTransactionFinish) {\n logger.log('[Tracing] discarding Span since it happened after Transaction was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n logger.log('[Tracing] discarding Span since it finished after Transaction final timeout', stringifiedSpan);\n }\n }\n\n return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout;\n });\n\n DEBUG_BUILD && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n DEBUG_BUILD && 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 // eslint-disable-next-line deprecation/deprecation\n const scope = this._idleHub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n if (scope.getTransaction() === this) {\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(undefined);\n }\n }\n\n return super.end(endTimestamp);\n }\n\n /**\n * Register a callback function that gets executed 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 // eslint-disable-next-line deprecation/deprecation\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 // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanContext().spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n DEBUG_BUILD && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idle timeout, if there is one.\n * @param restartOnChildSpanChange Default is `true`.\n * If set to false the transaction will end\n * with the last child span.\n */\n cancelIdleTimeout(\n endTimestamp,\n {\n restartOnChildSpanChange,\n }\n\n = {\n restartOnChildSpanChange: true,\n },\n ) {\n this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n\n if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n }\n }\n\n /**\n * Temporary method used to externally set the transaction's `finishReason`\n *\n * ** WARNING**\n * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n *\n * @internal\n *\n */\n setFinishReason(reason) {\n this._finishReason = reason;\n }\n\n /**\n * Permits the IdleTransaction to automatically end itself via the idle timeout and heartbeat mechanisms when the `delayAutoFinishUntilSignal` option was set to `true`.\n */\n sendAutoFinishSignal() {\n if (!this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Received finish signal for idle transaction.');\n this._restartIdleTimeout();\n this._autoFinishAllowed = true;\n }\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n _restartIdleTimeout(endTimestamp) {\n this.cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n this.end(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(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n DEBUG_BUILD && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n DEBUG_BUILD && 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 DEBUG_BUILD && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const endTimestamp = timestampInSeconds();\n if (this._idleTimeoutCanceledPermanently) {\n if (this._autoFinishAllowed) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n } else {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampInSeconds is in seconds, timeout is in ms\n this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n }\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 if (this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n this.end();\n }\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n _pingHeartbeat() {\n DEBUG_BUILD && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n\nexport { IdleTransaction, IdleTransactionSpanRecorder, TRACING_DEFAULTS };\n//# sourceMappingURL=idletransaction.js.map\n","import { isNaN, logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '../semanticAttributes.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\nimport { spanToJSON } from '../utils/spanUtils.js';\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 * This method muttes the given `transaction` and will set the `sampled` value on it.\n * It returns the same transaction, for convenience.\n */\nfunction sampleTransaction(\n transaction,\n options,\n samplingContext,\n) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n // eslint-disable-next-line deprecation/deprecation\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 // eslint-disable-next-line deprecation/deprecation\n if (transaction.sampled !== undefined) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(transaction.sampled));\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` 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.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else {\n // When `enableTracing === true`, we use a sample rate of 100%\n sampleRate = 1;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, sampleRate);\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 DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n // eslint-disable-next-line deprecation/deprecation\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 DEBUG_BUILD &&\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 // eslint-disable-next-line deprecation/deprecation\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 // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = Math.random() < (sampleRate );\n\n // if we're not going to keep it, we're done\n // eslint-disable-next-line deprecation/deprecation\n if (!transaction.sampled) {\n DEBUG_BUILD &&\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 DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log(`[Tracing] starting ${transaction.op} transaction - ${spanToJSON(transaction).description}`);\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 DEBUG_BUILD &&\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 DEBUG_BUILD &&\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\nexport { isValidSampleRate, sampleTransaction };\n//# sourceMappingURL=sampling.js.map\n","import { logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getMainCarrier } from '../hub.js';\nimport { spanToTraceHeader } from '../utils/spanUtils.js';\nimport { registerErrorInstrumentation } from './errors.js';\nimport { IdleTransaction } from './idletransaction.js';\nimport { sampleTransaction } from './sampling.js';\nimport { Transaction } from './transaction.js';\n\n/** Returns all trace headers that are currently on the top scope. */\n// eslint-disable-next-line deprecation/deprecation\nfunction traceHeaders() {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const span = scope.getSpan();\n\n return span\n ? {\n 'sentry-trace': spanToTraceHeader(span),\n }\n : {};\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 // eslint-disable-next-line deprecation/deprecation\n\n transactionContext,\n customSamplingContext,\n) {\n // eslint-disable-next-line deprecation/deprecation\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 DEBUG_BUILD &&\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 // eslint-disable-next-line deprecation/deprecation\n transactionContext.sampled = false;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new Transaction(transactionContext, this);\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub,\n transactionContext,\n idleTimeout,\n finalTimeout,\n onScope,\n customSamplingContext,\n heartbeatInterval,\n delayAutoFinishUntilSignal = false,\n) {\n // eslint-disable-next-line deprecation/deprecation\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {};\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new IdleTransaction(\n transactionContext,\n hub,\n idleTimeout,\n finalTimeout,\n heartbeatInterval,\n onScope,\n delayAutoFinishUntilSignal,\n );\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\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 registerErrorInstrumentation();\n}\n\nexport { addTracingExtensions, startIdleTransaction };\n//# sourceMappingURL=hubextensions.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","import { makePromiseBuffer, forEachEnvelopeItem, envelopeItemTypeToDataCategory, isRateLimited, resolvedSyncPromise, createEnvelope, SentryError, logger, serializeEnvelope, updateRateLimits } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\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(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n) {\n let rateLimits = {};\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 dataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, dataCategory)) {\n const event = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent('ratelimit_backoff', dataCategory, 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 DEBUG_BUILD && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n DEBUG_BUILD && 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 // We use this to identifify if the transport is the base transport\n // TODO (v8): Remove this again as we'll no longer need it\n send.__sentry__baseTransport__ = true;\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 { createEnvelope, dsnFromString, forEachEnvelopeItem } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from '../api.js';\n\n/**\n * Gets an event from an envelope.\n *\n * This is only exported for use in the tests\n */\nfunction eventFromEnvelope(env, types) {\n let event;\n\n forEachEnvelopeItem(env, (item, type) => {\n if (types.includes(type)) {\n event = Array.isArray(item) ? (item )[1] : undefined;\n }\n // bail out if we found an event\n return !!event;\n });\n\n return event;\n}\n\n/**\n * Creates a transport that overrides the release on all events.\n */\nfunction makeOverrideReleaseTransport(\n createTransport,\n release,\n) {\n return options => {\n const transport = createTransport(options);\n\n return {\n ...transport,\n send: async (envelope) => {\n const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']);\n\n if (event) {\n event.release = release;\n }\n return transport.send(envelope);\n },\n };\n };\n}\n\n/** Overrides the DSN in the envelope header */\nfunction overrideDsn(envelope, dsn) {\n return createEnvelope(\n dsn\n ? {\n ...envelope[0],\n dsn,\n }\n : envelope[0],\n envelope[1],\n );\n}\n\n/**\n * Creates a transport that can send events to different DSNs depending on the envelope contents.\n */\nfunction makeMultiplexedTransport(\n createTransport,\n matcher,\n) {\n return options => {\n const fallbackTransport = createTransport(options);\n const otherTransports = new Map();\n\n function getTransport(dsn, release) {\n // We create a transport for every unique dsn/release combination as there may be code from multiple releases in\n // use at the same time\n const key = release ? `${dsn}:${release}` : dsn;\n\n let transport = otherTransports.get(key);\n\n if (!transport) {\n const validatedDsn = dsnFromString(dsn);\n if (!validatedDsn) {\n return undefined;\n }\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel);\n\n transport = release\n ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url })\n : createTransport({ ...options, url });\n\n otherTransports.set(key, transport);\n }\n\n return [dsn, transport];\n }\n\n async function send(envelope) {\n function getEvent(types) {\n const eventTypes = types && types.length ? types : ['event'];\n return eventFromEnvelope(envelope, eventTypes);\n }\n\n const transports = matcher({ envelope, getEvent })\n .map(result => {\n if (typeof result === 'string') {\n return getTransport(result, undefined);\n } else {\n return getTransport(result.dsn, result.release);\n }\n })\n .filter((t) => !!t);\n\n // If we have no transports to send to, use the fallback transport\n if (transports.length === 0) {\n // Don't override the DSN in the header for the fallback transport. '' is falsy\n transports.push(['', fallbackTransport]);\n }\n\n const results = await Promise.all(\n transports.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))),\n );\n\n return results[0];\n }\n\n async function flush(timeout) {\n const promises = [await fallbackTransport.flush(timeout)];\n for (const [, transport] of otherTransports) {\n promises.push(await transport.flush(timeout));\n }\n\n return promises.every(r => r);\n }\n\n return {\n send,\n flush,\n };\n };\n}\n\nexport { eventFromEnvelope, makeMultiplexedTransport };\n//# sourceMappingURL=multiplexed.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 '@sentry/utils';\nimport { DEFAULT_BROWSER_FLUSH_INTERVAL, SET_METRIC_TYPE } from './constants.js';\nimport { METRIC_MAP } from './instance.js';\nimport { updateMetricSummaryOnActiveSpan } from './metric-summary.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 if (this._client.captureAggregateMetrics) {\n // TODO(@anonrig): Use Object.values() when we support ES6+\n const metricBuckets = Array.from(this._buckets).map(([, bucketItem]) => bucketItem);\n this._client.captureAggregateMetrics(metricBuckets);\n }\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 { convertIntegrationFnToClass, defineIntegration } from '../integration.js';\nimport { BrowserMetricsAggregator } from './browser-aggregator.js';\n\nconst INTEGRATION_NAME = 'MetricsAggregator';\n\nconst _metricsAggregatorIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n setup(client) {\n client.metricsAggregator = new BrowserMetricsAggregator(client);\n },\n };\n}) ;\n\nconst metricsAggregatorIntegration = defineIntegration(_metricsAggregatorIntegration);\n\n/**\n * Enables Sentry metrics monitoring.\n *\n * @experimental This API is experimental and might having breaking changes in the future.\n * @deprecated Use `metricsAggegratorIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst MetricsAggregator = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n metricsAggregatorIntegration,\n) ;\n\nexport { MetricsAggregator, metricsAggregatorIntegration };\n//# sourceMappingURL=integration.js.map\n","import { logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getClient, getCurrentScope } from '../exports.js';\nimport { spanToJSON } from '../utils/spanUtils.js';\nimport { COUNTER_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, SET_METRIC_TYPE, GAUGE_METRIC_TYPE } from './constants.js';\nimport { MetricsAggregator, metricsAggregatorIntegration } from './integration.js';\n\nfunction addToMetricsAggregator(\n metricType,\n name,\n value,\n data = {},\n) {\n const client = getClient();\n const scope = getCurrentScope();\n if (client) {\n if (!client.metricsAggregator) {\n DEBUG_BUILD &&\n logger.warn('No metrics aggregator enabled. Please add the MetricsAggregator integration to use metrics APIs');\n return;\n }\n const { unit, tags, timestamp } = data;\n const { release, environment } = client.getOptions();\n // eslint-disable-next-line deprecation/deprecation\n const transaction = scope.getTransaction();\n const metricTags = {};\n if (release) {\n metricTags.release = release;\n }\n if (environment) {\n metricTags.environment = environment;\n }\n if (transaction) {\n metricTags.transaction = spanToJSON(transaction).description || '';\n }\n\n DEBUG_BUILD && logger.log(`Adding value of ${value} to ${metricType} metric ${name}`);\n client.metricsAggregator.add(metricType, name, value, unit, { ...metricTags, ...tags }, timestamp);\n }\n}\n\n/**\n * Adds a value to a counter metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction increment(name, value = 1, data) {\n addToMetricsAggregator(COUNTER_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a distribution metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction distribution(name, value, data) {\n addToMetricsAggregator(DISTRIBUTION_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a set metric. Value must be a string or integer.\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction set(name, value, data) {\n addToMetricsAggregator(SET_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a gauge metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction gauge(name, value, data) {\n addToMetricsAggregator(GAUGE_METRIC_TYPE, name, value, data);\n}\n\nconst metrics = {\n increment,\n distribution,\n set,\n gauge,\n /** @deprecated Use `metrics.metricsAggregratorIntegration()` instead. */\n // eslint-disable-next-line deprecation/deprecation\n MetricsAggregator,\n metricsAggregatorIntegration,\n};\n\nexport { distribution, gauge, increment, metrics, set };\n//# sourceMappingURL=exports.js.map\n","/**\n * Tagged template function which returns paramaterized representation of the message\n * For example: parameterize`This is a log statement with ${x} and ${y} params`, would return:\n * \"__sentry_template_string__\": 'This is a log statement with %s and %s params',\n * \"__sentry_template_values__\": ['first', 'second']\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n * @returns String with template information in __sentry_template_string__ and __sentry_template_values__ properties\n */\nfunction parameterize(strings, ...values) {\n const formatted = new String(String.raw(strings, ...values)) ;\n formatted.__sentry_template_string__ = strings.join('\\x00').replace(/%/g, '%%').replace(/\\0/g, '%s');\n formatted.__sentry_template_values__ = values;\n return formatted;\n}\n\nexport { parameterize };\n//# sourceMappingURL=parameterize.js.map\n","import { logger, consoleSandbox } from '@sentry/utils';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { getCurrentScope } from './exports.js';\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 (DEBUG_BUILD) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n consoleSandbox(() => {\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 }\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n setCurrentClient(client);\n initializeClient(client);\n}\n\n/**\n * Make the given client the current client.\n */\nfunction setCurrentClient(client) {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const top = hub.getStackTop();\n top.client = client;\n top.scope.setClient(client);\n}\n\n/**\n * Initialize the client for the current scope.\n * Make sure to call this after `setCurrentClient()`.\n */\nfunction initializeClient(client) {\n if (client.init) {\n client.init();\n // TODO v8: Remove this fallback\n // eslint-disable-next-line deprecation/deprecation\n } else if (client.setupIntegrations) {\n // eslint-disable-next-line deprecation/deprecation\n client.setupIntegrations();\n }\n}\n\nexport { initAndBind, setCurrentClient };\n//# sourceMappingURL=sdk.js.map\n","import { getActiveTransaction } from './utils.js';\n\n/**\n * Adds a measurement to the current active transaction.\n */\nfunction setMeasurement(name, value, unit) {\n // eslint-disable-next-line deprecation/deprecation\n const transaction = getActiveTransaction();\n if (transaction) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.setMeasurement(name, value, unit);\n }\n}\n\nexport { setMeasurement };\n//# sourceMappingURL=measurement.js.map\n","import '@sentry-internal/tracing';\nimport { withScope, captureException } from '@sentry/core';\nimport { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, addExceptionTypeValue, addExceptionMechanism } 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\nexport { WINDOW, ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { getClient } from '@sentry/core';\nimport { addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, isParameterizedString, normalizeToSize, extractExceptionKeysForMessage } 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 client = 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: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\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 // eslint-disable-next-line deprecation/deprecation\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 message,\n syntheticException,\n attachStacktrace,\n) {\n const event = {};\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: message, stacktrace: { frames } }],\n };\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception,\n { isUnhandledRejection },\n) {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch (e) {\n // ignore errors here\n }\n}\n\nexport { eventFromError, eventFromException, eventFromMessage, eventFromPlainObject, eventFromString, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","import { dsnToString, createEnvelope } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nfunction createUserFeedbackEnvelope(\n feedback,\n {\n metadata,\n tunnel,\n dsn,\n }\n\n,\n) {\n const headers = {\n event_id: feedback.event_id,\n sent_at: new Date().toISOString(),\n ...(metadata &&\n metadata.sdk && {\n sdk: {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n },\n }),\n ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n };\n const item = createUserFeedbackEnvelopeItem(feedback);\n\n return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback) {\n const feedbackHeaders = {\n type: 'user_report',\n };\n return [feedbackHeaders, feedback];\n}\n\nexport { createUserFeedbackEnvelope };\n//# sourceMappingURL=userfeedback.js.map\n","import { BaseClient, applySdkMetadata } from '@sentry/core';\nimport { getSDKSource, logger, createClientReportEnvelope, dsnToString } from '@sentry/utils';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\nimport { createUserFeedbackEnvelope } from './userfeedback.js';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\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 const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n applySdkMetadata(options, 'browser', ['browser'], sdkSource);\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 * Sends user feedback to Sentry.\n */\n captureUserFeedback(feedback) {\n if (!this._isEnabled()) {\n DEBUG_BUILD && logger.warn('SDK not enabled, will not capture user feedback.');\n return;\n }\n\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this.getSdkMetadata(),\n dsn: this.getDsn(),\n tunnel: this.getOptions().tunnel,\n });\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\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 DEBUG_BUILD && logger.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\n }\n}\n\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map\n","import { SDK_VERSION } from '../version.js';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nfunction applySdkMetadata(options, name, names = [name], source = 'npm') {\n const metadata = options._metadata || {};\n\n if (!metadata.sdk) {\n metadata.sdk = {\n name: `sentry.javascript.${name}`,\n packages: names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n })),\n version: SDK_VERSION,\n };\n }\n\n options._metadata = metadata;\n}\n\nexport { applySdkMetadata };\n//# sourceMappingURL=sdkMetadata.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 { isNativeFetch, logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\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 DEBUG_BUILD && 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 { getNativeFetchImplementation, clearCachedFetchImplementation } 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 let pendingBodySize = 0;\n let pendingCount = 0;\n\n function makeRequest(request) {\n const requestSize = request.body.length;\n pendingBodySize += requestSize;\n pendingCount++;\n\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):\n // If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n // We will therefore only activate the flag when we're below that limit.\n // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n keepalive: pendingBodySize <= 60000 && pendingCount < 15,\n ...options.fetchOptions,\n };\n\n try {\n return nativeFetch(options.url, requestOptions).then(response => {\n pendingBodySize -= requestSize;\n pendingCount--;\n return {\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 });\n } catch (e) {\n clearCachedFetchImplementation();\n pendingBodySize -= requestSize;\n pendingCount--;\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 { 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 in_app: true, // All browser frames are considered in_app\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 )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn = 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, chromeStackParserFn];\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*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[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 = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\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 { CONSOLE_LEVELS, originalConsoleMethods } from '../logger.js';\nimport { fill } from '../object.js';\nimport { GLOBAL_OBJ } from '../worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers.js';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addConsoleInstrumentationHandler(handler) {\n const type = 'console';\n addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole() {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod) {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args) {\n const handlerData = { args, level };\n triggerHandlers('console', handlerData);\n\n const log = originalConsoleMethods[level];\n log && log.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n\nexport { addConsoleInstrumentationHandler };\n//# sourceMappingURL=console.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 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 search: query,\n hash: fragment,\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\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span description\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nfunction getSanitizedUrlString(url) {\n const { protocol, host, path } = url;\n\n const filteredHost =\n (host &&\n host\n // Always filter out authority\n .replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n // TODO: Use new URL global if it exists\n .replace(/(:80)$/, '')\n .replace(/(:443)$/, '')) ||\n '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\nexport { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment };\n//# sourceMappingURL=url.js.map\n","import { defineIntegration, convertIntegrationFnToClass, getClient, addBreadcrumb } from '@sentry/core';\nimport { addConsoleInstrumentationHandler, addClickKeypressInstrumentationHandler, addXhrInstrumentationHandler, addFetchInstrumentationHandler, addHistoryInstrumentationHandler, getEventDescription, logger, htmlTreeAsString, getComponentName, severityLevelFromString, safeJoin, SENTRY_XHR_DATA_KEY, parseUrl } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\n/* eslint-disable max-lines */\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst INTEGRATION_NAME = 'Breadcrumbs';\n\nconst _breadcrumbsIntegration = ((options = {}) => {\n const _options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n setup(client) {\n if (_options.console) {\n addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client));\n }\n if (_options.dom) {\n addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n }\n if (_options.xhr) {\n addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n }\n if (_options.fetch) {\n addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n }\n if (_options.history) {\n addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n }\n if (_options.sentry && client.on) {\n client.on('beforeSendEvent', _getSentryBreadcrumbHandler(client));\n }\n },\n };\n}) ;\n\nconst breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\n\n/**\n * Default Breadcrumbs instrumentations\n *\n * @deprecated Use `breadcrumbsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst Breadcrumbs = convertIntegrationFnToClass(INTEGRATION_NAME, breadcrumbsIntegration)\n\n;\n\n/**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\nfunction _getSentryBreadcrumbHandler(client) {\n return function addSentryBreadcrumb(event) {\n if (getClient() !== client) {\n return;\n }\n\n addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n };\n}\n\n/**\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 */\nfunction _getDomBreadcrumbHandler(\n client,\n dom,\n) {\n return function _innerDomBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n let target;\n let componentName;\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 DEBUG_BUILD &&\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 const event = handlerData.event ;\n const element = _isEvent(event) ? event.target : event;\n\n target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n componentName = getComponentName(element);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n const breadcrumb = {\n category: `ui.${handlerData.name}`,\n message: target,\n };\n\n if (componentName) {\n breadcrumb.data = { 'ui.component_name': componentName };\n }\n\n addBreadcrumb(breadcrumb, {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _getConsoleBreadcrumbHandler(client) {\n return function _consoleBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\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 addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _getXhrBreadcrumbHandler(client) {\n return function _xhrBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n // We only capture complete, non-sentry requests\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return;\n }\n\n const { method, url, status_code, body } = sentryXhrData;\n\n const data = {\n method,\n url,\n status_code,\n };\n\n const hint = {\n xhr: handlerData.xhr,\n input: body,\n startTimestamp,\n endTimestamp,\n };\n\n addBreadcrumb(\n {\n category: 'xhr',\n data,\n type: 'http',\n },\n hint,\n );\n };\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _getFetchBreadcrumbHandler(client) {\n return function _fetchBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete fetch requests\n if (!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 const data = handlerData.fetchData;\n const hint = {\n data: handlerData.error,\n input: handlerData.args,\n startTimestamp,\n endTimestamp,\n };\n\n addBreadcrumb(\n {\n category: 'fetch',\n data,\n level: 'error',\n type: 'http',\n },\n hint,\n );\n } else {\n const response = handlerData.response ;\n const data = {\n ...handlerData.fetchData,\n status_code: response && response.status,\n };\n const hint = {\n input: handlerData.args,\n response,\n startTimestamp,\n endTimestamp,\n };\n addBreadcrumb(\n {\n category: 'fetch',\n data,\n type: 'http',\n },\n hint,\n );\n }\n };\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _getHistoryBreadcrumbHandler(client) {\n return function _historyBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = from ? parseUrl(from) : undefined;\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom || !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 addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n };\n}\n\nfunction _isEvent(event) {\n return !!event && !!(event ).target;\n}\n\nexport { Breadcrumbs, breadcrumbsIntegration };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { defineIntegration, convertIntegrationFnToClass } from '@sentry/core';\nimport { logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n let previousEvent;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\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\nconst dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/**\n * Deduplication filter.\n * @deprecated Use `dedupeIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst Dedupe = convertIntegrationFnToClass(INTEGRATION_NAME, dedupeIntegration)\n\n;\n\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 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\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\nfunction _getFramesFromEvent(event) {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-expect-error 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, dedupeIntegration };\n//# sourceMappingURL=dedupe.js.map\n","import { defineIntegration, convertIntegrationFnToClass, getClient, captureEvent } from '@sentry/core';\nimport { addGlobalErrorInstrumentationHandler, isString, addGlobalUnhandledRejectionInstrumentationHandler, isPrimitive, isErrorEvent, getLocationHref, logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\nconst INTEGRATION_NAME = 'GlobalHandlers';\n\nconst _globalHandlersIntegration = ((options = {}) => {\n const _options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n Error.stackTraceLimit = 50;\n },\n setup(client) {\n if (_options.onerror) {\n _installGlobalOnErrorHandler(client);\n globalHandlerLog('onerror');\n }\n if (_options.onunhandledrejection) {\n _installGlobalOnUnhandledRejectionHandler(client);\n globalHandlerLog('onunhandledrejection');\n }\n },\n };\n}) ;\n\nconst globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\n\n/**\n * Global handlers.\n * @deprecated Use `globalHandlersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst GlobalHandlers = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n globalHandlersIntegration,\n)\n\n;\n\nfunction _installGlobalOnErrorHandler(client) {\n addGlobalErrorInstrumentationHandler(data => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const { msg, url, line, column, error } = data;\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 captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'onerror',\n },\n });\n });\n}\n\nfunction _installGlobalOnUnhandledRejectionHandler(client) {\n addGlobalUnhandledRejectionInstrumentationHandler(e => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const error = _getUnhandledRejectionError(e );\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'onunhandledrejection',\n },\n });\n });\n}\n\nfunction _getUnhandledRejectionError(error) {\n if (isPrimitive(error)) {\n return error;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const e = error ;\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 return e.reason;\n }\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 return e.detail.reason;\n }\n } catch (e2) {} // eslint-disable-line no-empty\n\n return error;\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// 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 DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction getOptions() {\n const client = getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return options;\n}\n\nexport { GlobalHandlers, globalHandlersIntegration };\n//# sourceMappingURL=globalhandlers.js.map\n","import { defineIntegration, convertIntegrationFnToClass } from '@sentry/core';\nimport { WINDOW } from '../helpers.js';\n\nconst INTEGRATION_NAME = 'HttpContext';\n\nconst _httpContextIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n preprocessEvent(event) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return;\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 = { ...event.request, ...(url && { url }), headers };\n\n event.request = request;\n },\n };\n}) ;\n\nconst httpContextIntegration = defineIntegration(_httpContextIntegration);\n\n/**\n * HttpContext integration collects information about HTTP request headers.\n * @deprecated Use `httpContextIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst HttpContext = convertIntegrationFnToClass(INTEGRATION_NAME, httpContextIntegration)\n\n;\n\nexport { HttpContext, httpContextIntegration };\n//# sourceMappingURL=httpcontext.js.map\n","import { defineIntegration, convertIntegrationFnToClass } from '@sentry/core';\nimport { applyAggregateErrorsToEvent } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(\n // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n key,\n limit,\n event,\n hint,\n );\n },\n };\n}) ;\n\nconst linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\n/**\n * Aggregrate linked errors in an event.\n * @deprecated Use `linkedErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration)\n\n;\n\nexport { LinkedErrors, linkedErrorsIntegration };\n//# sourceMappingURL=linkederrors.js.map\n","import { defineIntegration, convertIntegrationFnToClass } from '@sentry/core';\nimport { 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 'BroadcastChannel',\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 'SharedWorker',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\nconst INTEGRATION_NAME = 'TryCatch';\n\nconst _browserApiErrorsIntegration = ((options = {}) => {\n const _options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n // TODO: This currently only works for the first client this is setup\n // We may want to adjust this to check for client etc.\n setupOnce() {\n if (_options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (_options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (_options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (_options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = _options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n },\n };\n}) ;\n\nconst browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\n\n/**\n * Wrap timer functions and event targets to catch errors and provide better meta data.\n * @deprecated Use `browserApiErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst TryCatch = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n browserApiErrorsIntegration,\n)\n\n;\n\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: false,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\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: false,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\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: false,\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\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: false,\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: false,\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, browserApiErrorsIntegration };\n//# sourceMappingURL=trycatch.js.map\n","import { inboundFiltersIntegration, functionToStringIntegration, getIntegrationsToSetup, initAndBind, getReportDialogEndpoint, getCurrentHub, startSession, captureSession, getClient } from '@sentry/core';\nimport { stackParserFromStackParserOptions, supportsFetch, logger, addHistoryInstrumentationHandler } from '@sentry/utils';\nimport { BrowserClient } from './client.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { WINDOW, wrap as wrap$1 } from './helpers.js';\nimport { breadcrumbsIntegration } from './integrations/breadcrumbs.js';\nimport { dedupeIntegration } from './integrations/dedupe.js';\nimport { globalHandlersIntegration } from './integrations/globalhandlers.js';\nimport { httpContextIntegration } from './integrations/httpcontext.js';\nimport { linkedErrorsIntegration } from './integrations/linkederrors.js';\nimport { browserApiErrorsIntegration } from './integrations/trycatch.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { makeXHRTransport } from './transports/xhr.js';\n\n/** @deprecated Use `getDefaultIntegrations(options)` instead. */\nconst defaultIntegrations = [\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n browserApiErrorsIntegration(),\n breadcrumbsIntegration(),\n globalHandlersIntegration(),\n linkedErrorsIntegration(),\n dedupeIntegration(),\n httpContextIntegration(),\n];\n\n/** Get the default integrations for the browser SDK. */\nfunction getDefaultIntegrations(_options) {\n // We return a copy of the defaultIntegrations here to avoid mutating this\n return [\n // eslint-disable-next-line deprecation/deprecation\n ...defaultIntegrations,\n ];\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 = getDefaultIntegrations();\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\nconst showReportDialog = (\n // eslint-disable-next-line deprecation/deprecation\n options = {},\n // eslint-disable-next-line deprecation/deprecation\n hub = getCurrentHub(),\n) => {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n DEBUG_BUILD && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n DEBUG_BUILD && 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 // TODO(v8): Remove this entire if statement. `eventId` will be a required option.\n // eslint-disable-next-line deprecation/deprecation\n if (!options.eventId) {\n // eslint-disable-next-line deprecation/deprecation\n options.eventId = hub.lastEventId();\n }\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.crossOrigin = 'anonymous';\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n const { onClose } = options;\n if (onClose) {\n const reportDialogClosedMessageHandler = (event) => {\n if (event.data === '__sentry_reportdialog_closed__') {\n try {\n onClose();\n } finally {\n WINDOW.removeEventListener('message', reportDialogClosedMessageHandler);\n }\n }\n };\n WINDOW.addEventListener('message', reportDialogClosedMessageHandler);\n }\n\n const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n DEBUG_BUILD && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\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 * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @deprecated This function will be removed in v8.\n * It is not part of Sentry's official API and it's easily replaceable by using a try/catch block\n * and calling Sentry.captureException.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// TODO(v8): Remove this function\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction wrap(fn) {\n return wrap$1(fn)();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n if (typeof WINDOW.document === 'undefined') {\n DEBUG_BUILD && logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\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 startSession({ ignoreDuration: true });\n captureSession();\n\n // We want to create a session for every navigation as well\n addHistoryInstrumentationHandler(({ 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 startSession({ ignoreDuration: true });\n captureSession();\n }\n });\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n */\nfunction captureUserFeedback(feedback) {\n const client = getClient();\n if (client) {\n client.captureUserFeedback(feedback);\n }\n}\n\nexport { captureUserFeedback, defaultIntegrations, forceLoad, getDefaultIntegrations, init, onLoad, showReportDialog, wrap };\n//# sourceMappingURL=sdk.js.map\n","import { _optionalChain } from '@sentry/utils';\nimport { defineIntegration, convertIntegrationFnToClass } from '@sentry/core';\n\nvar NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType || (NodeType = {}));\nfunction elementClassMatchesRegex(el, regex) {\n for (let eIndex = el.classList.length; eIndex--;) {\n const className = el.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n return false;\n}\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\n if (!node)\n return -1;\n if (node.nodeType !== node.ELEMENT_NODE)\n return -1;\n if (distance > limit)\n return -1;\n if (matchPredicate(node))\n return distance;\n return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\n}\nfunction createMatchPredicate(className, selector) {\n return (node) => {\n const el = node;\n if (el === null)\n return false;\n try {\n if (className) {\n if (typeof className === 'string') {\n if (el.matches(`.${className}`))\n return true;\n }\n else if (elementClassMatchesRegex(el, className)) {\n return true;\n }\n }\n if (selector && el.matches(selector))\n return true;\n return false;\n }\n catch (e2) {\n return false;\n }\n };\n}\n\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\n '\\r\\n' +\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n '\\r\\n' +\n 'or you can use record.mirror to access the mirror instance during recording.';\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === 'map') {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(target, key, isRevoked\n ? d\n : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n },\n });\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original,\n },\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n }\n catch (e2) {\n return () => {\n };\n }\n}\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) ;\nfunction closestElementOfNode(node) {\n if (!node) {\n return null;\n }\n const el = node.nodeType === node.ELEMENT_NODE\n ? node\n : node.parentElement;\n return el;\n}\nfunction isBlocked(node, blockClass, blockSelector, unblockSelector, checkAncestors) {\n if (!node) {\n return false;\n }\n const el = closestElementOfNode(node);\n if (!el) {\n return false;\n }\n const blockedPredicate = createMatchPredicate(blockClass, blockSelector);\n if (!checkAncestors) {\n const isUnblocked = unblockSelector && el.matches(unblockSelector);\n return blockedPredicate(el) && !isUnblocked;\n }\n const blockDistance = distanceToMatch(el, blockedPredicate);\n let unblockDistance = -1;\n if (blockDistance < 0) {\n return false;\n }\n if (unblockSelector) {\n unblockDistance = distanceToMatch(el, createMatchPredicate(null, unblockSelector));\n }\n if (blockDistance > -1 && unblockDistance < 0) {\n return true;\n }\n return blockDistance < unblockDistance;\n}\nconst cachedImplementations = {};\nfunction getImplementation(name) {\n const cached = cachedImplementations[name];\n if (cached) {\n return cached;\n }\n const document = window.document;\n let impl = window[name];\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[name]) {\n impl =\n contentWindow[name];\n }\n document.head.removeChild(sandbox);\n }\n catch (e) {\n }\n }\n return (cachedImplementations[name] = impl.bind(window));\n}\nfunction onRequestAnimationFrame(...rest) {\n return getImplementation('requestAnimationFrame')(...rest);\n}\nfunction setTimeout(...rest) {\n return getImplementation('setTimeout')(...rest);\n}\n\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\n\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = ((...rest) => {\n try {\n return cb(...rest);\n }\n catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return () => {\n };\n }\n throw error;\n }\n });\n return rrwebWrapped;\n};\n\n/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\n\nconst canvasVarMap = new Map();\nfunction variableListFor(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value ||\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\n return;\n const name = value.constructor.name;\n const list = variableListFor(ctx, name);\n let index = list.indexOf(value);\n if (index === -1) {\n index = list.length;\n list.push(value);\n }\n return index;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n }\n else if (value === null) {\n return value;\n }\n else if (value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Uint8Array ||\n value instanceof Uint16Array ||\n value instanceof Int16Array ||\n value instanceof Int8Array ||\n value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)],\n };\n }\n else if (value instanceof ArrayBuffer) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64,\n };\n }\n else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength,\n ],\n };\n }\n else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src,\n };\n }\n else if (value instanceof HTMLCanvasElement) {\n const name = 'HTMLImageElement';\n const src = value.toDataURL();\n return {\n rr_type: name,\n src,\n };\n }\n else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\n };\n }\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n const name = value.constructor.name;\n const index = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index,\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n 'WebGLActiveInfo',\n 'WebGLBuffer',\n 'WebGLFramebuffer',\n 'WebGLProgram',\n 'WebGLRenderbuffer',\n 'WebGLShader',\n 'WebGLShaderPrecisionFormat',\n 'WebGLTexture',\n 'WebGLUniformLocation',\n 'WebGLVertexArrayObject',\n 'WebGLVertexArrayObjectOES',\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\n};\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector, unblockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\n continue;\n }\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\n return function (...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, unblockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: recordArgs,\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n });\n handlers.push(restoreHandler);\n }\n catch (e) {\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n set(v) {\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\n\nfunction getNormalizedContextName(contextType) {\n return contextType === 'experimental-webgl' ? 'webgl' : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\n return function (contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, unblockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!('__context' in this))\n this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue &&\n ['webgl', 'webgl2'].includes(ctxName)) {\n if (args[0] && typeof args[0] === 'object') {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n }\n else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true,\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n });\n handlers.push(restoreHandler);\n }\n catch (e) {\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, unblockSelector, mirror, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if ([\n 'isContextLost',\n 'canvas',\n 'drawingBufferWidth',\n 'drawingBufferHeight',\n ].includes(prop)) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== 'function') {\n continue;\n }\n const restoreHandler = patch(prototype, prop, function (original) {\n return function (...args) {\n const result = original.apply(this, args);\n saveWebGLVar(result, win, this);\n if ('tagName' in this.canvas &&\n !isBlocked(this.canvas, blockClass, blockSelector, unblockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs,\n };\n cb(this.canvas, mutation);\n }\n return result;\n };\n });\n handlers.push(restoreHandler);\n }\n catch (e) {\n const hookHandler = hookSetter(prototype, prop, {\n set(v) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, unblockSelector, mirror) {\n const handlers = [];\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, unblockSelector, mirror, win));\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, unblockSelector, mirror, win));\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\n\nvar r = `for(var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",t=\"undefined\"==typeof Uint8Array?[]:new Uint8Array(256),a=0;a<64;a++)t[e.charCodeAt(a)]=a;var n=function(t){var a,n=new Uint8Array(t),r=n.length,s=\"\";for(a=0;a>2],s+=e[(3&n[a])<<4|n[a+1]>>4],s+=e[(15&n[a+1])<<2|n[a+2]>>6],s+=e[63&n[a+2]];return r%3==2?s=s.substring(0,s.length-1)+\"=\":r%3==1&&(s=s.substring(0,s.length-2)+\"==\"),s};const r=new Map,s=new Map;const i=self;i.onmessage=async function(e){if(!(\"OffscreenCanvas\"in globalThis))return i.postMessage({id:e.data.id});{const{id:t,bitmap:a,width:o,height:f,maxCanvasSize:c,dataURLOptions:g}=e.data,u=async function(e,t,a){const r=e+\"-\"+t;if(\"OffscreenCanvas\"in globalThis){if(s.has(r))return s.get(r);const i=new OffscreenCanvas(e,t);i.getContext(\"2d\");const o=await i.convertToBlob(a),f=await o.arrayBuffer(),c=n(f);return s.set(r,c),c}return\"\"}(o,f,g),[h,d]=function(e,t,a){if(!a)return[e,t];const[n,r]=a;if(e<=n&&t<=r)return[e,t];let s=e,i=t;return s>n&&(i=Math.floor(n*t/e),s=n),i>r&&(s=Math.floor(r*e/t),i=r),[s,i]}(o,f,c),l=new OffscreenCanvas(h,d),w=l.getContext(\"bitmaprenderer\"),p=h===o&&d===f?a:await createImageBitmap(a,{resizeWidth:h,resizeHeight:d,resizeQuality:\"low\"});w.transferFromImageBitmap(p),a.close();const y=await l.convertToBlob(g),v=y.type,b=await y.arrayBuffer(),m=n(b);if(p.close(),!r.has(t)&&await u===m)return r.set(t,m),i.postMessage({id:t});if(r.get(t)===m)return i.postMessage({id:t});i.postMessage({id:t,type:v,base64:m,width:o,height:f}),r.set(t,m)}};`;\n\nfunction t(){const t=new Blob([r]);return URL.createObjectURL(t)}\n\nclass CanvasManager {\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n constructor(options) {\n this.pendingCanvasMutations = new Map();\n this.rafStamps = { latestId: 0, invokeId: null };\n this.frozen = false;\n this.locked = false;\n this.processMutation = (target, mutation) => {\n const newFrame = this.rafStamps.invokeId &&\n this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n };\n const { sampling = 'all', win, blockClass, blockSelector, unblockSelector, maxCanvasSize, recordCanvas, dataURLOptions, errorHandler, } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n this.options = options;\n if (errorHandler) {\n registerErrorHandler(errorHandler);\n }\n if (options.enableManualSnapshot) {\n return;\n }\n callbackWrapper(() => {\n if (recordCanvas && sampling === 'all')\n this.initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector);\n if (recordCanvas && typeof sampling === 'number')\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, {\n dataURLOptions,\n });\n })();\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, options) {\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, true);\n const rafId = this.takeSnapshot(false, fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, options.dataURLOptions);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, false);\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector);\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector, this.mirror);\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n snapshot(canvasElement) {\n const { options } = this;\n const rafId = this.takeSnapshot(true, options.sampling === 'all' ? 2 : options.sampling || 2, options.win, options.blockClass, options.blockSelector, options.unblockSelector, options.maxCanvasSize, options.dataURLOptions, canvasElement);\n this.resetObservers = () => {\n cancelAnimationFrame(rafId);\n };\n }\n takeSnapshot(isManualSnapshot, fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, dataURLOptions, canvasElement) {\n const snapshotInProgressMap = new Map();\n const worker = new Worker(t());\n worker.onmessage = (e) => {\n const data = e.data;\n const { id } = data;\n snapshotInProgressMap.set(id, false);\n if (!('base64' in data))\n return;\n const { base64, type, width, height } = data;\n this.mutationCb({\n id,\n type: CanvasContext['2D'],\n commands: [\n {\n property: 'clearRect',\n args: [0, 0, width, height],\n },\n {\n property: 'drawImage',\n args: [\n {\n rr_type: 'ImageBitmap',\n args: [\n {\n rr_type: 'Blob',\n data: [{ rr_type: 'ArrayBuffer', base64 }],\n type,\n },\n ],\n },\n 0,\n 0,\n width,\n height,\n ],\n },\n ],\n });\n };\n const timeBetweenSnapshots = 1000 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = (canvasElement) => {\n if (canvasElement) {\n return [canvasElement];\n }\n const matchedCanvas = [];\n win.document.querySelectorAll('canvas').forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, unblockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime &&\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas(canvasElement).forEach((canvas) => {\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id))\n return;\n if (!canvas.width || !canvas.height)\n return;\n snapshotInProgressMap.set(id, true);\n if (!isManualSnapshot &&\n ['webgl', 'webgl2'].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (_optionalChain([context, 'optionalAccess', _ => _.getContextAttributes, 'call', _2 => _2(), 'optionalAccess', _3 => _3.preserveDrawingBuffer]) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n createImageBitmap(canvas)\n .then((bitmap) => {\n worker.postMessage({\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions,\n maxCanvasSize,\n }, [bitmap]);\n })\n .catch((error) => {\n callbackWrapper(() => {\n throw error;\n })();\n });\n });\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\n return rafId;\n }\n startPendingCanvasMutationFlusher() {\n onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n onRequestAnimationFrame(setLatestRAFTimestamp);\n };\n onRequestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach((values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n });\n onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1)\n return;\n const values = valuesWithType.map((value) => {\n const { type, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\n\nconst CANVAS_QUALITY = {\n low: {\n sampling: {\n canvas: 1,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.25,\n },\n },\n medium: {\n sampling: {\n canvas: 2,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.4,\n },\n },\n high: {\n sampling: {\n canvas: 4,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.5,\n },\n },\n};\n\nconst INTEGRATION_NAME = 'ReplayCanvas';\nconst DEFAULT_MAX_CANVAS_SIZE = 1280;\n\n/** Exported only for type safe tests. */\nconst _replayCanvasIntegration = ((options = {}) => {\n const [maxCanvasWidth, maxCanvasHeight] = options.maxCanvasSize || [];\n const _canvasOptions = {\n quality: options.quality || 'medium',\n enableManualSnapshot: options.enableManualSnapshot,\n maxCanvasSize: [\n maxCanvasWidth ? Math.min(maxCanvasWidth, DEFAULT_MAX_CANVAS_SIZE) : DEFAULT_MAX_CANVAS_SIZE,\n maxCanvasHeight ? Math.min(maxCanvasHeight, DEFAULT_MAX_CANVAS_SIZE) : DEFAULT_MAX_CANVAS_SIZE,\n ] ,\n };\n\n let canvasManagerResolve;\n const _canvasManager = new Promise(resolve => (canvasManagerResolve = resolve));\n\n return {\n name: INTEGRATION_NAME,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setupOnce() {},\n getOptions() {\n const { quality, enableManualSnapshot, maxCanvasSize } = _canvasOptions;\n\n return {\n enableManualSnapshot,\n recordCanvas: true,\n getCanvasManager: (getCanvasManagerOptions) => {\n const manager = new CanvasManager({\n ...getCanvasManagerOptions,\n enableManualSnapshot,\n maxCanvasSize,\n errorHandler: (err) => {\n try {\n if (typeof err === 'object') {\n (err ).__rrweb__ = true;\n }\n } catch (error) {\n // ignore errors here\n // this can happen if the error is frozen or does not allow mutation for other reasons\n }\n },\n });\n canvasManagerResolve(manager);\n return manager;\n },\n ...(CANVAS_QUALITY[quality || 'medium'] || CANVAS_QUALITY.medium),\n };\n },\n async snapshot(canvasElement) {\n const canvasManager = await _canvasManager;\n canvasManager.snapshot(canvasElement);\n },\n };\n}) ;\n\n/**\n * Add this in addition to `replayIntegration()` to enable canvas recording.\n */\nconst replayCanvasIntegration = defineIntegration(_replayCanvasIntegration);\n\n/**\n * @deprecated Use `replayCanvasIntegration()` instead\n */\n// eslint-disable-next-line deprecation/deprecation\nconst ReplayCanvas = convertIntegrationFnToClass(INTEGRATION_NAME, replayCanvasIntegration)\n\n;\n\nexport { ReplayCanvas, replayCanvasIntegration };\n//# sourceMappingURL=index.js.map\n","import { GLOBAL_OBJ, getLocationHref, logger, isBrowser } from '@sentry/utils';\nimport { prepareEvent, getIsolationScope, getClient, withScope, createEventEnvelope, getCurrentScope } from '@sentry/core';\n\n// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`\n// prevents the browser package from being bundled in the CDN bundle, and avoids a\n// circular dependency between the browser and feedback packages\nconst WINDOW = GLOBAL_OBJ ;\n\nconst LIGHT_BACKGROUND = '#ffffff';\nconst INHERIT = 'inherit';\nconst SUBMIT_COLOR = 'rgba(108, 95, 199, 1)';\nconst LIGHT_THEME = {\n fontFamily: \"system-ui, 'Helvetica Neue', Arial, sans-serif\",\n fontSize: '14px',\n\n background: LIGHT_BACKGROUND,\n backgroundHover: '#f6f6f7',\n foreground: '#2b2233',\n border: '1.5px solid rgba(41, 35, 47, 0.13)',\n borderRadius: '25px',\n boxShadow: '0px 4px 24px 0px rgba(43, 34, 51, 0.12)',\n\n success: '#268d75',\n error: '#df3338',\n\n submitBackground: 'rgba(88, 74, 192, 1)',\n submitBackgroundHover: SUBMIT_COLOR,\n submitBorder: SUBMIT_COLOR,\n submitOutlineFocus: '#29232f',\n submitForeground: LIGHT_BACKGROUND,\n submitForegroundHover: LIGHT_BACKGROUND,\n\n cancelBackground: 'transparent',\n cancelBackgroundHover: 'var(--background-hover)',\n cancelBorder: 'var(--border)',\n cancelOutlineFocus: 'var(--input-outline-focus)',\n cancelForeground: 'var(--foreground)',\n cancelForegroundHover: 'var(--foreground)',\n\n inputBackground: INHERIT,\n inputForeground: INHERIT,\n inputBorder: 'var(--border)',\n inputOutlineFocus: SUBMIT_COLOR,\n\n formBorderRadius: '20px',\n formContentBorderRadius: '6px',\n};\n\nconst DEFAULT_THEME = {\n light: LIGHT_THEME,\n dark: {\n ...LIGHT_THEME,\n\n background: '#29232f',\n backgroundHover: '#352f3b',\n foreground: '#ebe6ef',\n border: '1.5px solid rgba(235, 230, 239, 0.15)',\n\n success: '#2da98c',\n error: '#f55459',\n },\n};\n\nconst ACTOR_LABEL = 'Report a Bug';\nconst CANCEL_BUTTON_LABEL = 'Cancel';\nconst SUBMIT_BUTTON_LABEL = 'Send Bug Report';\nconst FORM_TITLE = 'Report a Bug';\nconst EMAIL_PLACEHOLDER = 'your.email@example.org';\nconst EMAIL_LABEL = 'Email';\nconst MESSAGE_PLACEHOLDER = \"What's the bug? What did you expect?\";\nconst MESSAGE_LABEL = 'Description';\nconst NAME_PLACEHOLDER = 'Your Name';\nconst NAME_LABEL = 'Name';\nconst IS_REQUIRED_LABEL = '(required)';\nconst SUCCESS_MESSAGE_TEXT = 'Thank you for your report!';\n\nconst FEEDBACK_WIDGET_SOURCE = 'widget';\nconst FEEDBACK_API_SOURCE = 'api';\n\n/**\n * Prepare a feedback event & enrich it with the SDK metadata.\n */\nasync function prepareFeedbackEvent({\n client,\n scope,\n event,\n}) {\n const eventHint = {};\n if (client.emit) {\n client.emit('preprocessEvent', event, eventHint);\n }\n\n const preparedEvent = (await prepareEvent(\n client.getOptions(),\n event,\n eventHint,\n scope,\n client,\n getIsolationScope(),\n )) ;\n\n if (preparedEvent === null) {\n // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n client.recordDroppedEvent('event_processor', 'feedback', event);\n return null;\n }\n\n // This normally happens in browser client \"_prepareEvent\"\n // but since we do not use this private method from the client, but rather the plain import\n // we need to do this manually.\n preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n return preparedEvent;\n}\n\n/**\n * Send feedback using transport\n */\nasync function sendFeedbackRequest(\n { feedback: { message, email, name, source, url } },\n { includeReplay = true } = {},\n) {\n const client = getClient();\n const transport = client && client.getTransport();\n const dsn = client && client.getDsn();\n\n if (!client || !transport || !dsn) {\n return;\n }\n\n const baseEvent = {\n contexts: {\n feedback: {\n contact_email: email,\n name,\n message,\n url,\n source,\n },\n },\n type: 'feedback',\n };\n\n return withScope(async scope => {\n // No use for breadcrumbs in feedback\n scope.clearBreadcrumbs();\n\n if ([FEEDBACK_API_SOURCE, FEEDBACK_WIDGET_SOURCE].includes(String(source))) {\n scope.setLevel('info');\n }\n\n const feedbackEvent = await prepareFeedbackEvent({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n scope: scope ,\n client,\n event: baseEvent,\n });\n\n if (!feedbackEvent) {\n return;\n }\n\n if (client.emit) {\n client.emit('beforeSendFeedback', feedbackEvent, { includeReplay: Boolean(includeReplay) });\n }\n\n const envelope = createEventEnvelope(feedbackEvent, dsn, client.getOptions()._metadata, client.getOptions().tunnel);\n\n let response;\n\n try {\n response = await transport.send(envelope);\n } catch (err) {\n const error = new Error('Unable to send Feedback');\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch (e) {\n // nothing to do\n }\n throw error;\n }\n\n // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n if (!response) {\n return;\n }\n\n // Require valid status codes, otherwise can assume feedback was not sent successfully\n if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n throw new Error('Unable to send Feedback');\n }\n\n return response;\n });\n}\n\n/*\n * For reference, the fully built event looks something like this:\n * {\n * \"type\": \"feedback\",\n * \"event_id\": \"d2132d31b39445f1938d7e21b6bf0ec4\",\n * \"timestamp\": 1597977777.6189718,\n * \"dist\": \"1.12\",\n * \"platform\": \"javascript\",\n * \"environment\": \"production\",\n * \"release\": 42,\n * \"tags\": {\"transaction\": \"/organizations/:orgId/performance/:eventSlug/\"},\n * \"sdk\": {\"name\": \"name\", \"version\": \"version\"},\n * \"user\": {\n * \"id\": \"123\",\n * \"username\": \"user\",\n * \"email\": \"user@site.com\",\n * \"ip_address\": \"192.168.11.12\",\n * },\n * \"request\": {\n * \"url\": None,\n * \"headers\": {\n * \"user-Agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15\"\n * },\n * },\n * \"contexts\": {\n * \"feedback\": {\n * \"message\": \"test message\",\n * \"contact_email\": \"test@example.com\",\n * \"type\": \"feedback\",\n * },\n * \"trace\": {\n * \"trace_id\": \"4C79F60C11214EB38604F4AE0781BFB2\",\n * \"span_id\": \"FA90FDEAD5F74052\",\n * \"type\": \"trace\",\n * },\n * \"replay\": {\n * \"replay_id\": \"e2d42047b1c5431c8cba85ee2a8ab25d\",\n * },\n * },\n * }\n */\n\n/**\n * Public API to send a Feedback item to Sentry\n */\nfunction sendFeedback(\n { name, email, message, source = FEEDBACK_API_SOURCE, url = getLocationHref() },\n options = {},\n) {\n if (!message) {\n throw new Error('Unable to submit feedback with empty message');\n }\n\n return sendFeedbackRequest(\n {\n feedback: {\n name,\n email,\n message,\n url,\n source,\n },\n },\n options,\n );\n}\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\n/**\n * Quick and dirty deep merge for the Feedback integration options\n */\nfunction mergeOptions(\n defaultOptions,\n optionOverrides,\n) {\n return {\n ...defaultOptions,\n ...optionOverrides,\n themeDark: {\n ...defaultOptions.themeDark,\n ...optionOverrides.themeDark,\n },\n themeLight: {\n ...defaultOptions.themeLight,\n ...optionOverrides.themeLight,\n },\n };\n}\n\n/**\n * Creates