{"version":3,"file":"index.mjs","sources":["../../../../../../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../../../../../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../../../../../libs/helpers/resolve-props/src/index.js","../../../../../../../libs/helpers/can-use-dom/src/index.ts","../../../../../../../libs/helpers/envs/src/index.js","../../../../../../../libs/helpers/release/src/index.js","../../../../../../../../../node_modules/@sentry/hub/node_modules/@sentry/utils/esm/node.js","../../../../../../../../../node_modules/@sentry/hub/node_modules/@sentry/utils/esm/env.js","../../../../../../../../../node_modules/@sentry/hub/node_modules/@sentry/utils/esm/global.js","../../../../../../../../../node_modules/@sentry/hub/node_modules/@sentry/utils/esm/is.js","../../../../../../../../../node_modules/@sentry/hub/node_modules/@sentry/utils/esm/logger.js","../../../../../../../../../node_modules/@sentry/hub/node_modules/@sentry/utils/esm/object.js","../../../../../../../../../node_modules/@sentry/hub/node_modules/@sentry/utils/esm/misc.js","../../../../../../../../../node_modules/@sentry/hub/node_modules/@sentry/utils/esm/syncpromise.js","../../../../../../../../../node_modules/@sentry/hub/node_modules/@sentry/utils/esm/time.js","../../../../../../../../../node_modules/@sentry/hub/esm/session.js","../../../../../../../../../node_modules/@sentry/hub/esm/scope.js","../../../../../../../../../node_modules/@sentry/hub/esm/hub.js","../../../../../../../../../node_modules/@sentry/hub/esm/exports.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/node.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/env.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/global.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/is.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/browser.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/error.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/dsn.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/logger.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/string.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/object.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/stacktrace.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/supports.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/instrument.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/misc.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/normalize.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/memo.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/syncpromise.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/promisebuffer.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/url.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/time.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/envelope.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/ratelimit.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/api.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/envelope.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/baggage.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/integration.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/baseclient.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/transports/base.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/integrations/functiontostring.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/integrations/inboundfilters.js","../../../../../../../../../node_modules/@sentry/browser/esm/eventbuilder.js","../../../../../../../../../node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/severity.js","../../../../../../../../../node_modules/@sentry/browser/esm/transports/utils.js","../../../../../../../../../node_modules/@sentry/browser/esm/client.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/clientreport.js","../../../../../../../../../node_modules/@sentry/browser/esm/transports/fetch.js","../../../../../../../../../node_modules/@sentry/browser/esm/transports/xhr.js","../../../../../../../../../node_modules/@sentry/browser/esm/stack-parsers.js","../../../../../../../../../node_modules/@sentry/browser/esm/helpers.js","../../../../../../../../../node_modules/@sentry/browser/esm/integrations/globalhandlers.js","../../../../../../../../../node_modules/@sentry/browser/esm/integrations/trycatch.js","../../../../../../../../../node_modules/@sentry/browser/esm/integrations/linkederrors.js","../../../../../../../../../node_modules/@sentry/browser/esm/integrations/httpcontext.js","../../../../../../../../../node_modules/@sentry/browser/esm/integrations/dedupe.js","../../../../../../../../../node_modules/@sentry/browser/esm/sdk.js","../../../../../../../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/sdk.js","../../../../../../../../../node_modules/@sentry/browser/esm/index.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/node.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/env.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/global.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/is.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/browser.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/logger.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/string.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/object.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/buildPolyfills/_nullishCoalesce.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/stacktrace.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/supports.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/instrument.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/misc.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/time.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/tracing.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/baggage.js","../../../../../../../../../node_modules/@sentry/tracing/esm/utils.js","../../../../../../../../../node_modules/@sentry/tracing/esm/errors.js","../../../../../../../../../node_modules/@sentry/tracing/esm/span.js","../../../../../../../../../node_modules/@sentry/tracing/esm/idletransaction.js","../../../../../../../../../node_modules/@sentry/tracing/esm/hubextensions.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/backgroundtab.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/web-vitals/lib/bindReporter.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/web-vitals/lib/observe.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/web-vitals/lib/onHidden.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/web-vitals/getCLS.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/web-vitals/getFID.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/web-vitals/getLCP.js","../../../../../../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../../../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/metrics/utils.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/metrics/index.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/request.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/router.js","../../../../../../../../../node_modules/@sentry/tracing/esm/browser/browsertracing.js","../../../../../../../../../node_modules/@sentry/tracing/node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js","../../../../../../../../../node_modules/@sentry/tracing/esm/index.js","../../../../src/index.js"],"sourcesContent":["export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","/**\n * Given an single pathref, resolve to the value of the given data object\n * @param {string} pathArr single property path\n * @param {object} obj object of data to resolve\n * @returns {object} object containing resolved data\n */\nexport function resolveProp(pathArr, obj) {\n if (arguments.length === 1) {\n return (objHolder) => resolveProp(pathArr, objHolder);\n }\n if (obj === null || obj === undefined) {\n return undefined;\n }\n let willReturn = obj;\n let counter = 0;\n\n const pathArrValue = typeof pathArr === 'string' ? pathArr.split('.') : pathArr;\n\n while (counter < pathArrValue.length) {\n if (willReturn === null || willReturn === undefined) {\n return undefined;\n }\n willReturn = willReturn[pathArrValue[counter]];\n counter += 1;\n }\n\n return willReturn;\n}\n\n/**\n * Given an object of object property paths and an object, resolves the paths to the values in the object\n * @param {object} paths object of property paths\n * @param {object} data object of data to resolve\n * @returns {object} object containing resolved data\n */\n\nfunction resolveProps(paths, data) {\n return Object.keys(paths).reduce((resolvedData, prop) => {\n const pathRef = paths[prop];\n return {\n ...resolvedData,\n [prop]: resolveProp(pathRef, data),\n };\n }, {});\n}\n\nexport default resolveProps;\n","export default () => !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n","import { resolveProp } from '@clearscore-group/lib.helpers.resolve-props';\nimport canUseDom from '@clearscore-group/lib.helpers.can-use-dom';\n\nconst CACHE_NAME = '__cs__';\nconst LOCAL_NAMESPACE = 'local';\nexport const RESET_MARKET_ENVS = {\n local: {},\n};\n\n/**\n * Returns an env after providing a object path\n * @param path\n * @return {*}\n */\n\nfunction getSingleEnv(path) {\n if (!canUseDom()) return ''; // @todo: [PM] get envs on the server\n let envs;\n\n if (window[CACHE_NAME] && window[CACHE_NAME].env) {\n envs = window[CACHE_NAME].env;\n } else {\n envs = window.env;\n }\n\n return resolveProp(`${LOCAL_NAMESPACE}.${path}`, envs) || resolveProp(path, envs);\n}\n\nexport const getEnvs = () => {\n if (!canUseDom()) return '';\n return window[CACHE_NAME].env || window.env;\n};\n\n/**\n * Set envs\n * @param envs - new market envs\n * @return void\n */\n\nexport const setEnvs = (envs = {}) => {\n if (window[CACHE_NAME] && window[CACHE_NAME].env) {\n window[CACHE_NAME].env = Object.assign(window[CACHE_NAME].env, envs);\n } else {\n window.env = Object.assign(window.env, envs);\n }\n};\n\n/**\n * Returns an env after providing a object path or array of multiple object paths\n * @param paths\n * @return {*}\n */\n\nexport default function getEnv(paths) {\n if (Array.isArray(paths)) {\n return paths.map((path) => getSingleEnv(path));\n }\n return getSingleEnv(paths);\n}\n","import canUseDom from '@clearscore-group/lib.helpers.can-use-dom';\n\nconst CACHE_NAME = '__cs__';\n\nexport default function getRelease() {\n if (!canUseDom() || !window[CACHE_NAME] || !window[CACHE_NAME].release) return {};\n return window[CACHE_NAME].release;\n}\n","import { isBrowserBundle } from './env.js';\n\n/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\nfunction dynamicRequire(mod, request) {\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n let mod;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n\nexport { dynamicRequire, isNodeEnv, loadModule };\n//# sourceMappingURL=node.js.map\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\nexport { isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import { isNodeEnv } from './node.js';\n\n/** Internal */\n\nvar fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nfunction getGlobalObject() {\n return (\n isNodeEnv()\n ? global\n : typeof window !== 'undefined' ? window : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `getGlobalObject`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n var global = (obj || getGlobalObject()) ;\n var __SENTRY__ = (global.__SENTRY__ = global.__SENTRY__ || {});\n var singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\nexport { getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=global.js.map\n","var objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable };\n//# sourceMappingURL=is.js.map\n","import { getGlobalObject, getGlobalSingleton } from './global.js';\n\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n\nvar CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n var global = getGlobalObject();\n\n if (!('console' in global)) {\n return callback();\n }\n\n var originalConsole = global.console ;\n var wrappedLevels = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n var originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] ).__sentry_original__;\n if (level in global.console && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] ;\n originalConsole[level] = originalWrappedFunc ;\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level ];\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n var logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n global.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger;\nif ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger };\n//# sourceMappingURL=logger.js.map\n","import { htmlTreeAsString } from './browser.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n var original = source[name] ;\n var wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n var proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(\n value,\n)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n var newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n var extractedProps = {};\n for (var property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n var keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n var serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n var memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (var key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","import { getGlobalObject } from './global.js';\nimport { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n var global = getGlobalObject() ;\n var crypto = (global.crypto || global.msCrypto) ;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n var getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n var firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n var exception = (event.exception = event.exception || {});\n var values = (exception.values = exception.values || []);\n var firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n var firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n var defaultMechanism = { type: 'generic', handled: true };\n var currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n var mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n var match = input.match(SEMVER_REGEXP) || [];\n var major = parseInt(match[1], 10);\n var minor = parseInt(match[2], 10);\n var patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n var lineno = frame.lineno || 0;\n var maxLines = lines.length;\n var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { isThenable } from './is.js';\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n /** Pending */\n var PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n /** Resolved / OK */\n var RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n /** Rejected / Error */\n var REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n __init() {this._state = States.PENDING;}\n __init2() {this._handlers = [];}\n \n\n constructor(\n executor,\n ) {;SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);SyncPromise.prototype.__init5.call(this);SyncPromise.prototype.__init6.call(this);\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n then(\n onfulfilled,\n onrejected,\n ) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result );\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n catch(\n onrejected,\n ) {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val );\n });\n });\n }\n\n /** JSDoc */\n __init3() {this._resolve = (value) => {\n this._setResult(States.RESOLVED, value);\n };}\n\n /** JSDoc */\n __init4() {this._reject = (reason) => {\n this._setResult(States.REJECTED, reason);\n };}\n\n /** JSDoc */\n __init5() {this._setResult = (state, value) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value ).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };}\n\n /** JSDoc */\n __init6() {this._executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n var cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n handler[1](this._value );\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };}\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","import { getGlobalObject } from './global.js';\nimport { dynamicRequire, isNodeEnv } from './node.js';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nvar dateTimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n var timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n try {\n var perfHooks = dynamicRequire(module, 'perf_hooks') ;\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nvar platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nvar timestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nvar dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nvar timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nvar timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nvar usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nvar browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n var threshold = 3600 * 1000;\n var performanceNow = performance.now();\n var dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n var timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n var timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n var navigationStart = performance.timing && performance.timing.navigationStart;\n var hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n var navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n var navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs, usingPerformanceAPI };\n//# sourceMappingURL=time.js.map\n","import { timestampInSeconds, uuid4, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n var startingTime = timestampInSeconds();\n\n var session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n var duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","import { isPlainObject, dateTimestampInSeconds, getGlobalSingleton, SyncPromise, logger, isThenable, arrayify } from '@sentry/utils';\nimport { updateSession } from './session.js';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nvar MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nclass Scope {\n /** Flag if notifying is happening. */\n \n\n /** Callback for client to receive scope changes. */\n \n\n /** Callback list that will be called after {@link applyToEvent}. */\n \n\n /** Array of breadcrumbs. */\n \n\n /** User */\n \n\n /** Tags */\n \n\n /** Extra */\n \n\n /** Contexts */\n \n\n /** Attachments */\n \n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n \n\n /** Fingerprint */\n \n\n /** Severity */\n \n\n /** Transaction Name */\n \n\n /** Span */\n \n\n /** Session */\n \n\n /** Request Mode Session Status */\n \n\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n static clone(scope) {\n var newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getUser() {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n getRequestSession() {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n setRequestSession(requestSession) {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setLevel(\n level,\n ) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setSpan(span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSpan() {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n getTransaction() {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n var span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSession() {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n var updatedScope = (captureContext )(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n captureContext = captureContext ;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clear() {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n var maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n var mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getAttachments() {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n */\n applyToEvent(event, hint = {}) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n var transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...this._sdkProcessingMetadata };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n _notifyEventProcessors(\n processors,\n event,\n hint,\n index = 0,\n ) {\n return new SyncPromise((resolve, reject) => {\n var processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n var result = processor({ ...event }, hint) ;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n _applyFingerprint(event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nfunction addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n\nexport { Scope, addGlobalEventProcessor };\n//# sourceMappingURL=scope.js.map\n","import { uuid4, dateTimestampInSeconds, consoleSandbox, logger, getGlobalObject, getGlobalSingleton, isNodeEnv } from '@sentry/utils';\nimport { Scope } from './scope.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nvar API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nvar DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\n\n/**\n * @inheritDoc\n */\nclass Hub {\n /** Is a {@link Layer}[] containing the client and scope */\n __init() {this._stack = [{}];}\n\n /** Contains the last event id of a captured event. */\n \n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n constructor(client, scope = new Scope(), _version = API_VERSION) {;this._version = _version;Hub.prototype.__init.call(this);\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n isOlderThan(version) {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n bindClient(client) {\n var top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n pushScope() {\n // We want to clone the content of prev scope\n var scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n popScope() {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n withScope(callback) {\n var scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n getClient() {\n return this.getStackTop().client ;\n }\n\n /** Returns the scope of the top stack. */\n getScope() {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n getStack() {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n getStackTop() {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint) {\n var eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n var syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n level,\n hint,\n ) {\n var eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n var syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint) {\n var eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n lastEventId() {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, hint) {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n var timestamp = dateTimestampInSeconds();\n var mergedBreadcrumb = { timestamp, ...breadcrumb };\n var finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) )\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n var scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n var scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n var scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n var scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n var scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n setContext(name, context) {\n var scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n configureScope(callback) {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n run(callback) {\n var oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n var client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n startTransaction(context, customSamplingContext) {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n traceHeaders() {\n return this._callExtensionMethod('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n captureSession(endSession = false) {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n endSession() {\n var layer = this.getStackTop();\n var scope = layer && layer.scope;\n var session = scope && scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n startSession(context) {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n var global = getGlobalObject();\n const { userAgent } = global.navigator || {};\n\n var session = makeSession({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n var currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n shouldSendDefaultPii() {\n var client = this.getClient();\n var options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n _sendSessionUpdate() {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n var session = scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n _withClient(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n _callExtensionMethod(method, ...args) {\n var carrier = getMainCarrier();\n var sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n var carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nfunction makeMain(hub) {\n var registry = getMainCarrier();\n var oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nfunction getCurrentHub() {\n // Get main carrier (global for every environment)\n var registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry) {\n try {\n var sentry = getMainCarrier().__SENTRY__;\n var activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n var registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nfunction getHubFromCarrier(carrier) {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nfunction setHubOnCarrier(carrier, hub) {\n if (!carrier) return false;\n var __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n\nexport { API_VERSION, Hub, getCurrentHub, getHubFromCarrier, getMainCarrier, makeMain, setHubOnCarrier };\n//# sourceMappingURL=hub.js.map\n","import { getCurrentHub } from './hub.js';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\nfunction captureException(exception, captureContext) {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nfunction captureMessage(\n message,\n captureContext,\n) {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n var level = typeof captureContext === 'string' ? captureContext : undefined;\n var context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nfunction captureEvent(event, hint) {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nfunction configureScope(callback) {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nfunction addBreadcrumb(breadcrumb) {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\nfunction setContext(name, context) {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nfunction withScope(callback) {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nfunction startTransaction(\n context,\n customSamplingContext,\n) {\n return getCurrentHub().startTransaction(\n {\n metadata: { source: 'custom' },\n ...context,\n },\n customSamplingContext,\n );\n}\n\nexport { addBreadcrumb, captureEvent, captureException, captureMessage, configureScope, setContext, setExtra, setExtras, setTag, setTags, setUser, startTransaction, withScope };\n//# sourceMappingURL=exports.js.map\n","import { isBrowserBundle } from './env.js';\n\n/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\nfunction dynamicRequire(mod, request) {\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n let mod;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n\nexport { dynamicRequire, isNodeEnv, loadModule };\n//# sourceMappingURL=node.js.map\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\nexport { isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import { isNodeEnv } from './node.js';\n\n/** Internal */\n\nvar fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nfunction getGlobalObject() {\n return (\n isNodeEnv()\n ? global\n : typeof window !== 'undefined' ? window : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `getGlobalObject`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n var global = (obj || getGlobalObject()) ;\n var __SENTRY__ = (global.__SENTRY__ = global.__SENTRY__ || {});\n var singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\nexport { getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=global.js.map\n","var objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable };\n//# sourceMappingURL=is.js.map\n","import { getGlobalObject } from './global.js';\nimport { isString } from './is.js';\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(elem, keyAttrs) {\n \n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n var MAX_TRAVERSE_HEIGHT = 5;\n var MAX_OUTPUT_LEN = 80;\n var out = [];\n let height = 0;\n let len = 0;\n var separator = ' > ';\n var sepLength = separator.length;\n let nextStr;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n var elem = el \n\n;\n\n var out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n var keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n var allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n var global = getGlobalObject();\n try {\n return global.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `var element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\nfunction getDomElement(selector) {\n var global = getGlobalObject();\n if (global.document && global.document.querySelector) {\n return global.document.querySelector(selector) ;\n }\n return null;\n}\n\nexport { getDomElement, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n","/** An error emitted by Sentry SDKs and related utilities. */\nclass SentryError extends Error {\n /** Display name of this error instance. */\n \n\n constructor( message, logLevel = 'warn') {\n super(message);this.message = message;;\n\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n\nexport { SentryError };\n//# sourceMappingURL=error.js.map\n","import { SentryError } from './error.js';\n\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents\n */\nfunction dsnFromString(str) {\n var match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n var split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() ;\n }\n\n if (projectId) {\n var projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn) {\n if (!(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n var requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nfunction makeDsn(from) {\n var components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n\nexport { dsnFromString, dsnToString, makeDsn };\n//# sourceMappingURL=dsn.js.map\n","import { getGlobalObject, getGlobalSingleton } from './global.js';\n\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n\nvar CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n var global = getGlobalObject();\n\n if (!('console' in global)) {\n return callback();\n }\n\n var originalConsole = global.console ;\n var wrappedLevels = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n var originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] ).__sentry_original__;\n if (level in global.console && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] ;\n originalConsole[level] = originalWrappedFunc ;\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level ];\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n var logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n global.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger;\nif ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger };\n//# sourceMappingURL=logger.js.map\n","import { isString, isRegExp } from './is.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n let newLine = line;\n var lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n\n var output = [];\n for (let i = 0; i < input.length; i++) {\n var value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nfunction isMatchingPattern(value, pattern) {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nfunction escapeStringForRegex(regexString) {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n\nexport { escapeStringForRegex, isMatchingPattern, safeJoin, snipLine, truncate };\n//# sourceMappingURL=string.js.map\n","import { htmlTreeAsString } from './browser.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n var original = source[name] ;\n var wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n var proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(\n value,\n)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n var newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n var extractedProps = {};\n for (var property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n var keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n var serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n var memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (var key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","import { _optionalChain } from './buildPolyfills';\n\nvar STACKTRACE_LIMIT = 50;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n var sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirst = 0) => {\n var frames = [];\n\n for (var line of stack.split('\\n').slice(skipFirst)) {\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n var cleanedLine = line.replace(/\\(error: (.*)\\)/, '$1');\n\n for (var parser of sortedParsers) {\n var frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n var firstFrameFunction = localStack[0].function || '';\n var lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nvar defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\nfunction node(getModule) {\n var FILENAME_MATCH = /^\\s*[-]{4,}$/;\n var FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n\n return (line) => {\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n var lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) {\n return undefined;\n }\n\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.substr(0, methodStart);\n method = functionName.substr(methodStart + 1);\n var objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.substr(objectEnd + 1);\n object = object.substr(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || '';\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n var filename = _optionalChain([lineMatch, 'access', _ => _[2], 'optionalAccess', _2 => _2.startsWith, 'call', _3 => _3('file://')]) ? lineMatch[2].substr(7) : lineMatch[2];\n var isNative = lineMatch[5] === 'native';\n var isInternal =\n isNative || (filename && !filename.startsWith('/') && !filename.startsWith('.') && filename.indexOf(':\\\\') !== 1);\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n var in_app = !isInternal && filename !== undefined && !filename.includes('node_modules/');\n\n return {\n filename,\n module: _optionalChain([getModule, 'optionalCall', _4 => _4(filename)]),\n function: functionName,\n lineno: parseInt(lineMatch[3], 10) || undefined,\n colno: parseInt(lineMatch[4], 10) || undefined,\n in_app,\n };\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { getGlobalObject } from './global.js';\nimport { logger } from './logger.js';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nfunction supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n\n var global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n var doc = global.document;\n if (doc && typeof (doc.createElement ) === 'function') {\n try {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReportingObserver() {\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' ,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = getGlobalObject();\n var chrome = (global ).chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsHistory, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n//# sourceMappingURL=supports.js.map\n","import { getGlobalObject } from './global.js';\nimport { isInstanceOf, isString } from './is.js';\nimport { logger, CONSOLE_LEVELS } from './logger.js';\nimport { fill } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\nimport { supportsNativeFetch, supportsHistory } from './supports.js';\n\nvar global = getGlobalObject();\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nvar handlers = {};\nvar instrumented = {};\n\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (var handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function (originalConsoleMethod) {\n return function (...args) {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function (originalFetch) {\n return function (...args) {\n var handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n return originalFetch.apply(global, args).then(\n (response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs = []) {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs = []) {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n var xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen) {\n return function ( ...args) {\n var xhr = this;\n var url = args[1];\n var xhrInfo = (xhr.__sentry_xhr__ = {\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n var onreadystatechangeHandler = function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return function (...readyStateArgs) {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend) {\n return function ( ...args) {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref;\n\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function ( ...args) {\n var to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n var from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n var url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n var from = lastHref;\n var to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\nvar debounceDuration = 1000;\nlet debounceTimerID;\nlet lastCapturedEvent;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n var target = event.target ;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener = false) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n var name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n var triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n var globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n var proto = (global )[target] && (global )[target].prototype;\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function (\n \n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this ;\n var handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n var handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n var handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function (\n \n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this ;\n var handlers = el.__sentry_instrumentation_handlers__ || {};\n var handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n\nexport { addInstrumentationHandler };\n//# sourceMappingURL=instrument.js.map\n","import { getGlobalObject } from './global.js';\nimport { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n var global = getGlobalObject() ;\n var crypto = (global.crypto || global.msCrypto) ;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n var getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n var firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n var exception = (event.exception = event.exception || {});\n var values = (exception.values = exception.values || []);\n var firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n var firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n var defaultMechanism = { type: 'generic', handled: true };\n var currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n var mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n var match = input.match(SEMVER_REGEXP) || [];\n var major = parseInt(match[1], 10);\n var minor = parseInt(match[2], 10);\n var patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n var lineno = frame.lineno || 0;\n var maxLines = lines.length;\n var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { isNaN, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\nfunction normalize(input, depth = +Infinity, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n var normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) {\n return value ;\n }\n\n var stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We're also done if we've reached the max depth\n if (depth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n var valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n var jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, depth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n var normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n var visitable = convertToPlainObject(value );\n\n for (var visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n var visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n\n numAdded += 1;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${(Object.getPrototypeOf(value) ).constructor.name}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nexport { normalize, normalizeToSize, visit as walk };\n//# sourceMappingURL=normalize.js.map\n","/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n var hasWeakSet = typeof WeakSet === 'function';\n var inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n for (let i = 0; i < inner.length; i++) {\n var value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\nexport { memoBuilder };\n//# sourceMappingURL=memo.js.map\n","import { isThenable } from './is.js';\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n /** Pending */\n var PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n /** Resolved / OK */\n var RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n /** Rejected / Error */\n var REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n __init() {this._state = States.PENDING;}\n __init2() {this._handlers = [];}\n \n\n constructor(\n executor,\n ) {;SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);SyncPromise.prototype.__init5.call(this);SyncPromise.prototype.__init6.call(this);\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n then(\n onfulfilled,\n onrejected,\n ) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result );\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n catch(\n onrejected,\n ) {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val );\n });\n });\n }\n\n /** JSDoc */\n __init3() {this._resolve = (value) => {\n this._setResult(States.RESOLVED, value);\n };}\n\n /** JSDoc */\n __init4() {this._reject = (reason) => {\n this._setResult(States.REJECTED, reason);\n };}\n\n /** JSDoc */\n __init5() {this._setResult = (state, value) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value ).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };}\n\n /** JSDoc */\n __init6() {this._executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n var cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n handler[1](this._value );\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };}\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","import { 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 var 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 var 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 var 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","/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url)\n\n {\n if (!url) {\n return {};\n }\n\n var 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 var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nfunction stripUrlQueryAndFragment(urlPath) {\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nfunction getNumberOfUrlSegments(url) {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\nexport { getNumberOfUrlSegments, parseUrl, stripUrlQueryAndFragment };\n//# sourceMappingURL=url.js.map\n","import { getGlobalObject } from './global.js';\nimport { dynamicRequire, isNodeEnv } from './node.js';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nvar dateTimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n var timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n try {\n var perfHooks = dynamicRequire(module, 'perf_hooks') ;\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nvar platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nvar timestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nvar dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nvar timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nvar timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nvar usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nvar browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n var threshold = 3600 * 1000;\n var performanceNow = performance.now();\n var dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n var timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n var timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n var navigationStart = performance.timing && performance.timing.navigationStart;\n var hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n var navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n var navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs, usingPerformanceAPI };\n//# sourceMappingURL=time.js.map\n","import { dropUndefinedKeys } from './object.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n */\nfunction forEachEnvelopeItem(\n envelope,\n callback,\n) {\n var envelopeItems = envelope[1];\n envelopeItems.forEach((envelopeItem) => {\n var envelopeItemType = envelopeItem[0].type;\n callback(envelopeItem, envelopeItemType);\n });\n}\n\nfunction encodeUTF8(input, textEncoder) {\n var utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope, textEncoder) {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts = JSON.stringify(envHeaders);\n\n function append(next) {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (var item of items) {\n const [itemHeaders, payload] = item ;\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n append(typeof payload === 'string' || payload instanceof Uint8Array ? payload : JSON.stringify(payload));\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n var totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n var merged = new Uint8Array(totalLength);\n let offset = 0;\n for (var buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(\n attachment,\n textEncoder,\n) {\n var buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nvar ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, envelopeItemTypeToDataCategory, forEachEnvelopeItem, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n","// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nvar DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nfunction parseRetryAfterHeader(header, now = Date.now()) {\n var headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n var headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nfunction disabledUntil(limits, category) {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, category, now = Date.now()) {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nfunction updateRateLimits(\n limits,\n { statusCode, headers },\n now = Date.now(),\n) {\n var updatedRateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n var rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n var retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (var limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n var headerDelay = parseInt(retryAfter, 10);\n var delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (var category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n//# sourceMappingURL=ratelimit.js.map\n","import { urlEncode, makeDsn, dsnToString } from '@sentry/utils';\n\nvar SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n var protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n var port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(\n dsn,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions = {} ,\n) {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n var tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n var sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(\n dsnLike,\n dialogOptions\n\n,\n) {\n var dsn = makeDsn(dsnLike);\n var endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (var key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n var user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n","import { dsnToString, createEnvelope, dropUndefinedKeys, getSentryBaggageItems } from '@sentry/utils';\n\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(metadata) {\n if (!metadata || !metadata.sdk) {\n return;\n }\n const { name, version } = metadata.sdk;\n return { name, version };\n}\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n session,\n dsn,\n metadata,\n tunnel,\n) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n var envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n };\n\n var envelopeItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n event,\n dsn,\n metadata,\n tunnel,\n) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n var eventType = event.type || 'event';\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n var envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete event.sdkProcessingMetadata;\n\n var eventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n event,\n ];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nfunction createEventEnvelopeHeaders(\n event,\n sdkInfo,\n tunnel,\n dsn,\n) {\n var baggage = event.sdkProcessingMetadata && event.sdkProcessingMetadata.baggage;\n var dynamicSamplingContext = baggage && getSentryBaggageItems(baggage);\n\n return {\n event_id: event.event_id ,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n ...(event.type === 'transaction' &&\n dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }) ,\n }),\n };\n}\n\nexport { createEventEnvelope, createSessionEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { isString } from './is.js';\nimport { logger } from './logger.js';\n\nvar BAGGAGE_HEADER_NAME = 'baggage';\n\nvar SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nvar SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nvar MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/** Create an instance of Baggage */\nfunction createBaggage(initItems, baggageString = '', mutable = true) {\n return [{ ...initItems }, baggageString, mutable];\n}\n\n/** Get a value from baggage */\nfunction getBaggageValue(baggage, key) {\n return baggage[0][key];\n}\n\n/** Add a value to baggage */\nfunction setBaggageValue(baggage, key, value) {\n if (isBaggageMutable(baggage)) {\n baggage[0][key] = value;\n }\n}\n\n/** Check if the Sentry part of the passed baggage (i.e. the first element in the tuple) is empty */\nfunction isSentryBaggageEmpty(baggage) {\n return Object.keys(baggage[0]).length === 0;\n}\n\n/** Returns Sentry specific baggage values */\nfunction getSentryBaggageItems(baggage) {\n return baggage[0];\n}\n\n/**\n * Returns 3rd party baggage string of @param baggage\n * @param baggage\n */\nfunction getThirdPartyBaggage(baggage) {\n return baggage[1];\n}\n\n/**\n * Checks if baggage is mutable\n * @param baggage\n * @returns true if baggage is mutable, else false\n */\nfunction isBaggageMutable(baggage) {\n return baggage[2];\n}\n\n/**\n * Sets the passed baggage immutable\n * @param baggage\n */\nfunction setBaggageImmutable(baggage) {\n baggage[2] = false;\n}\n\n/** Serialize a baggage object */\nfunction serializeBaggage(baggage) {\n return Object.keys(baggage[0]).reduce((prev, key) => {\n var val = baggage[0][key] ;\n var baggageEntry = `${SENTRY_BAGGAGE_KEY_PREFIX}${encodeURIComponent(key)}=${encodeURIComponent(val)}`;\n var newVal = prev === '' ? baggageEntry : `${prev},${baggageEntry}`;\n if (newVal.length > MAX_BAGGAGE_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`Not adding key: ${key} with val: ${val} to baggage due to exceeding baggage size limits.`);\n return prev;\n } else {\n return newVal;\n }\n }, baggage[1]);\n}\n\n/**\n * Parse a baggage header from a string or a string array and return a Baggage object\n *\n * If @param includeThirdPartyEntries is set to true, third party baggage entries are added to the Baggage object\n * (This is necessary for merging potentially pre-existing baggage headers in outgoing requests with\n * our `sentry-` values)\n */\nfunction parseBaggageHeader(\n inputBaggageValue,\n includeThirdPartyEntries = false,\n) {\n // Adding this check here because we got reports of this function failing due to the input value\n // not being a string. This debug log might help us determine what's going on here.\n if ((!Array.isArray(inputBaggageValue) && !isString(inputBaggageValue)) || typeof inputBaggageValue === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n '[parseBaggageHeader] Received input value of incompatible type: ',\n typeof inputBaggageValue,\n inputBaggageValue,\n );\n\n // Gonna early-return an empty baggage object so that we don't fail later on\n return createBaggage({}, '');\n }\n\n var baggageEntries = (isString(inputBaggageValue) ? inputBaggageValue : inputBaggageValue.join(','))\n .split(',')\n .map(entry => entry.trim())\n .filter(entry => entry !== '' && (includeThirdPartyEntries || SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(entry)));\n\n return baggageEntries.reduce(\n ([baggageObj, baggageString], curr) => {\n const [key, val] = curr.split('=');\n if (SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(key)) {\n var baggageKey = decodeURIComponent(key.split('-')[1]);\n return [\n {\n ...baggageObj,\n [baggageKey]: decodeURIComponent(val),\n },\n baggageString,\n true,\n ];\n } else {\n return [baggageObj, baggageString === '' ? curr : `${baggageString},${curr}`, true];\n }\n },\n [{}, '', true],\n );\n}\n\n/**\n * Merges the baggage header we saved from the incoming request (or meta tag) with\n * a possibly created or modified baggage header by a third party that's been added\n * to the outgoing request header.\n *\n * In case @param headerBaggageString exists, we can safely add the the 3rd party part of @param headerBaggage\n * with our @param incomingBaggage. This is possible because if we modified anything beforehand,\n * it would only affect parts of the sentry baggage (@see Baggage interface).\n *\n * @param incomingBaggage the baggage header of the incoming request that might contain sentry entries\n * @param thirdPartyBaggageHeader possibly existing baggage header string or string[] added from a third\n * party to the request headers\n *\n * @return a merged and serialized baggage string to be propagated with the outgoing request\n */\nfunction mergeAndSerializeBaggage(incomingBaggage, thirdPartyBaggageHeader) {\n if (!incomingBaggage && !thirdPartyBaggageHeader) {\n return '';\n }\n\n var headerBaggage = (thirdPartyBaggageHeader && parseBaggageHeader(thirdPartyBaggageHeader, true)) || undefined;\n var thirdPartyHeaderBaggage = headerBaggage && getThirdPartyBaggage(headerBaggage);\n\n var finalBaggage = createBaggage((incomingBaggage && incomingBaggage[0]) || {}, thirdPartyHeaderBaggage || '');\n return serializeBaggage(finalBaggage);\n}\n\n/**\n * Helper function that takes a raw baggage value (if available) and the processed sentry-trace header\n * data (if available), parses the baggage value and creates a Baggage object. If there is no baggage\n * value, it will create an empty Baggage object.\n *\n * In a second step, this functions determines if the created Baggage object should be set immutable\n * to prevent mutation of the Sentry data. It does this by looking at the processed sentry-trace header.\n *\n * @param rawBaggageValue baggage value from header\n * @param sentryTraceHeader processed Sentry trace header returned from `extractTraceparentData`\n */\nfunction parseBaggageSetMutability(\n rawBaggageValue,\n sentryTraceHeader,\n) {\n var baggage = parseBaggageHeader(rawBaggageValue || '');\n\n // Because we are always creating a Baggage object by calling `parseBaggageHeader` above\n // (either a filled one or an empty one, even if we didn't get a `baggage` header),\n // we only need to check if we have a sentry-trace header or not. As soon as we have it,\n // we set baggage immutable. In case we don't get a sentry-trace header, we can assume that\n // this SDK is the head of the trace and thus we still permit mutation at this time.\n // There is one exception though, which is that we get a baggage-header with `sentry-`\n // items but NO sentry-trace header. In this case we also set the baggage immutable for now\n // but if something like this would ever happen, we should revisit this and determine\n // what this would actually mean for the trace (i.e. is this SDK the head?, what happened\n // before that we don't have a sentry-trace header?, etc)\n (sentryTraceHeader || !isSentryBaggageEmpty(baggage)) && setBaggageImmutable(baggage);\n\n return baggage;\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, createBaggage, getBaggageValue, getSentryBaggageItems, getThirdPartyBaggage, isBaggageMutable, isSentryBaggageEmpty, mergeAndSerializeBaggage, parseBaggageHeader, parseBaggageSetMutability, serializeBaggage, setBaggageImmutable, setBaggageValue };\n//# sourceMappingURL=baggage.js.map\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n\nvar installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * @private\n */\nfunction filterDuplicates(integrations) {\n return integrations.reduce((acc, integrations) => {\n if (acc.every(accIntegration => integrations.name !== accIntegration.name)) {\n acc.push(integrations);\n }\n return acc;\n }, [] );\n}\n\n/** Gets integration to install */\nfunction getIntegrationsToSetup(options) {\n var defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n var userIntegrations = options.integrations;\n\n let integrations = [...filterDuplicates(defaultIntegrations)];\n\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = [\n ...integrations.filter(integrations =>\n userIntegrations.every(userIntegration => userIntegration.name !== integrations.name),\n ),\n // And filter out duplicated user options integrations\n ...filterDuplicates(userIntegrations),\n ];\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n var integrationsNames = integrations.map(i => i.name);\n var alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nfunction setupIntegrations(integrations) {\n var integrationIndex = {};\n\n integrations.forEach(integration => {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);\n }\n });\n\n return integrationIndex;\n}\n\nexport { getIntegrationsToSetup, installedIntegrations, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n","import { updateSession, Scope } from '@sentry/hub';\nimport { makeDsn, logger, checkOrSetAlreadyCaught, isPrimitive, resolvedSyncPromise, addItemToEnvelope, createAttachmentEnvelopeItem, SyncPromise, uuid4, dateTimestampInSeconds, normalize, truncate, rejectedSyncPromise, SentryError, isThenable, isPlainObject } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegrations } from './integration.js';\n\nvar ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass BaseClient {\n /** Options passed to the SDK. */\n \n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n \n\n /** Array of set up integrations. */\n __init() {this._integrations = {};}\n\n /** Indicates whether this client's integrations have been set up. */\n __init2() {this._integrationsInitialized = false;}\n\n /** Number of calls being processed */\n __init3() {this._numProcessing = 0;}\n\n /** Holds flushable */\n __init4() {this._outcomes = {};}\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {;BaseClient.prototype.__init.call(this);BaseClient.prototype.__init2.call(this);BaseClient.prototype.__init3.call(this);BaseClient.prototype.__init4.call(this);\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n var url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('No DSN provided, client will not do anything.');\n }\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint, scope) {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n level,\n hint,\n scope,\n ) {\n let eventId = hint && hint.event_id;\n\n var promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, scope) {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureSession(session) {\n if (!this._isEnabled()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n flush(timeout) {\n var transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n close(timeout) {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n setupIntegrations() {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n getIntegrationById(integrationId) {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n try {\n return (this._integrations[integration.id] ) || null;\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint = {}) {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (var attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n sendSession(session) {\n if (this._dsn) {\n var env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n recordDroppedEvent(reason, category) {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n var key = `${reason}:${category}`;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n let crashed = false;\n let errored = false;\n var exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (var ex of exceptions) {\n var mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n var sessionNonTerminal = session.status === 'ok';\n var shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n _isClientDoneProcessing(timeout) {\n return new SyncPromise(resolve => {\n let ticked = 0;\n var tick = 1;\n\n var interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(event, hint, scope) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = this.getOptions();\n var prepared = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // Collect attachments from the hint and scope\n var attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n _normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n\n var normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n }\n\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n _applyClientOptions(event) {\n var options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n var exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n var request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n _applyIntegrationsMetadata(event) {\n var integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(event, hint = {}, scope) {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n var sentryError = reason ;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(event, hint, scope) {\n const { beforeSend, sampleRate } = this.getOptions();\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.', 'log'));\n }\n\n var isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', event.type || 'error');\n throw new SentryError('An event processor returned null, will not send event.', 'log');\n }\n\n var isInternalException = hint.data && (hint.data ).__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n\n var beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', event.type || 'error');\n throw new SentryError('`beforeSend` returned `null`, will not send event.', 'log');\n }\n\n var session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason ,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(promise) {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n _sendEnvelope(envelope) {\n if (this._transport && this._dsn) {\n this._transport.send(envelope).then(null, reason => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Error while sending event:', reason);\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n var outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n \n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv) {\n var nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if (isThenable(rv)) {\n return rv.then(\n event => {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n },\n e => {\n throw new SentryError(`beforeSend rejected with ${e}`);\n },\n );\n } else if (!(isPlainObject(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map\n","import { makePromiseBuffer, forEachEnvelopeItem, envelopeItemTypeToDataCategory, isRateLimited, resolvedSyncPromise, createEnvelope, serializeEnvelope, logger, updateRateLimits, SentryError } from '@sentry/utils';\n\nvar DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n options,\n makeRequest,\n buffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n) {\n let rateLimits = {};\n\n var flush = (timeout) => buffer.drain(timeout);\n\n function send(envelope) {\n var filteredEnvelopeItems = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n var envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory);\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 var filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n // Creates client report for each item in an envelope\n var recordEnvelopeLoss = (reason) => {\n forEachEnvelopeItem(filteredEnvelope, (_, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n var requestTask = () =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n },\n error => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Failed while sending event:', error);\n recordEnvelopeLoss('network_error');\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n//# sourceMappingURL=base.js.map\n","import { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString;\n\n/** Patch toString calls to return proper name for wrapped functions */\nclass FunctionToString {constructor() { FunctionToString.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'FunctionToString';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = FunctionToString.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n originalFunctionToString = Function.prototype.toString;\n\n Function.prototype.toString = function ( ...args) {\n var context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n} FunctionToString.__initStatic();\n\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map\n","import { logger, getEventDescription, isMatchingPattern } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\n\n/** Inbound filters configurable by the user */\nclass InboundFilters {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'InboundFilters';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = InboundFilters.id;}\n\n constructor( _options = {}) {;this._options = _options;InboundFilters.prototype.__init.call(this);}\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n var eventProcess = (event) => {\n var hub = getCurrentHub();\n if (hub) {\n var self = hub.getIntegration(InboundFilters);\n if (self) {\n var client = hub.getClient();\n var clientOptions = client ? client.getOptions() : {};\n var options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n} InboundFilters.__initStatic();\n\n/** JSDoc */\nfunction _mergeOptions(\n internalOptions = {},\n clientOptions = {},\n) {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(event, options) {\n if (options.ignoreInternal && _isSentryError(event)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message =>\n ignoreErrors.some(pattern => isMatchingPattern(message, pattern)),\n );\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n var url = _getEventFilterUrl(event);\n return !url ? false : denyUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n var url = _getEventFilterUrl(event);\n return !url ? true : allowUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _getPossibleEventMessages(event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event) {\n try {\n // @ts-ignore can't be a sentry error if undefined\n 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 var frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event) {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nexport { InboundFilters, _mergeOptions, _shouldDropEvent };\n//# sourceMappingURL=inboundfilters.js.map\n","import { isEvent, extractExceptionKeysForMessage, normalizeToSize, addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject } from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n var frames = parseStackFrames(stackParser, ex);\n\n var 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 var event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n var 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 var stacktrace = ex.stacktrace || ex.stack || '';\n\n var 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\nvar 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 var 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 var syntheticException = (hint && hint.syntheticException) || undefined;\n var 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 level = 'info',\n hint,\n attachStacktrace,\n) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var 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 var 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 var domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n var name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n var message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n var objectException = exception ;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromString(\n stackParser,\n input,\n syntheticException,\n attachStacktrace,\n) {\n var event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n var frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n\nexport { eventFromError, eventFromException, eventFromMessage, eventFromPlainObject, eventFromString, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, htmlTreeAsString, severityLevelFromString, safeJoin, getGlobalObject, parseUrl } from '@sentry/utils';\n\n/** JSDoc */\n\nvar BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nclass Breadcrumbs {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = BREADCRUMB_INTEGRATION_ID;}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Breadcrumbs.id;}\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n \n\n /**\n * @inheritDoc\n */\n constructor(options) {;Breadcrumbs.prototype.__init.call(this);\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n setupOnce() {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n} Breadcrumbs.__initStatic();\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _domBreadcrumb(dom) {\n function _innerDomBreadcrumb(handlerData) {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target , keyAttrs)\n : htmlTreeAsString(handlerData.event , keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _consoleBreadcrumb(handlerData) {\n var breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _xhrBreadcrumb(handlerData) {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _fetchBreadcrumb(handlerData) {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: 'error',\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _historyBreadcrumb(handlerData) {\n var global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n var parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n var parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n\nexport { BREADCRUMB_INTEGRATION_ID, Breadcrumbs };\n//# sourceMappingURL=breadcrumbs.js.map\n","// 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\nvar 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","import { getGlobalObject, isNativeFetch, logger, supportsFetch } from '@sentry/utils';\n\nvar global = getGlobalObject();\nlet cachedFetchImpl;\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 * var f = window.fetch;\n * window.fetch = function () {\n * var 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 // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n\n var document = global.document;\n let fetchImpl = global.fetch;\n if (document && typeof document.createElement === 'function') {\n try {\n var sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n var contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(global));\n }\n\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nfunction sendReport(url, body) {\n var isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n var hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\n\n if (hasSendBeacon) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n var sendBeacon = global.navigator.sendBeacon.bind(global.navigator);\n sendBeacon(url, body);\n } else if (supportsFetch()) {\n var fetch = getNativeFetchImplementation();\n fetch(url, {\n body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }).then(null, error => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(error);\n });\n }\n}\n\nexport { getNativeFetchImplementation, sendReport };\n//# sourceMappingURL=utils.js.map\n","import { BaseClient, SDK_VERSION, getCurrentHub, getEnvelopeEndpointWithUrlEncodedAuth } from '@sentry/core';\nimport { getGlobalObject, getEventDescription, logger, createClientReportEnvelope, dsnToString, serializeEnvelope } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs.js';\nimport { sendReport } from './transports/utils.js';\n\nvar globalObject = getGlobalObject();\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && globalObject.document) {\n globalObject.document.addEventListener('visibilitychange', () => {\n if (globalObject.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 level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint) {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n var breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) ;\n if (\n breadcrumbIntegration &&\n // We check for definedness of `options`, even though it is not strictly necessary, because that access to\n // `.sentry` below does not throw, in case users provided their own integration with id \"Breadcrumbs\" that does\n // not have an`options` field\n breadcrumbIntegration.options &&\n breadcrumbIntegration.options.sentry\n ) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(event, hint, scope) {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n var outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Sending outcomes:', outcomes);\n\n var url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options);\n var envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n try {\n sendReport(url, serializeEnvelope(envelope));\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(e);\n }\n }\n}\n\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map\n","import { 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 var 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 { createTransport } from '@sentry/core';\nimport { getNativeFetchImplementation } from './utils.js';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n options,\n nativeFetch = getNativeFetchImplementation(),\n) {\n function makeRequest(request) {\n var requestOptions = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n ...options.fetchOptions,\n };\n\n return nativeFetch(options.url, requestOptions).then(response => ({\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n }));\n }\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 */\nvar 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 var 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 (var 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\nvar UNKNOWN_FUNCTION = '?';\n\nvar OPERA10_PRIORITY = 10;\nvar OPERA11_PRIORITY = 20;\nvar CHROME_PRIORITY = 30;\nvar WINJS_PRIORITY = 40;\nvar GECKO_PRIORITY = 50;\n\nfunction createFrame(filename, func, lineno, colno) {\n var frame = {\n filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nvar chromeRegex =\n /^\\s*at (?:(.*\\).*?|.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nvar chrome = line => {\n var parts = chromeRegex.exec(line);\n\n if (parts) {\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n var 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\nvar chromeStackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nvar geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|safari-extension|safari-web-extension|capacitor)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nvar gecko = line => {\n var parts = geckoREgex.exec(line);\n\n if (parts) {\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n var 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\nvar geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nvar winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nvar winjs = line => {\n var 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\nvar winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nvar opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nvar opera10 = line => {\n var parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nvar opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nvar opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nvar opera11 = line => {\n var parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nvar opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nvar defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nvar 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 */\nvar extractSafariExtensionDetails = (func, filename) => {\n var isSafariExtension = func.indexOf('safari-extension') !== -1;\n var 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 { withScope, captureException } from '@sentry/core';\nimport { getOriginalFunction, addExceptionTypeValue, addExceptionMechanism, markFunctionWrapped, addNonEnumerableProperty } from '@sentry/utils';\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 += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. 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 ) {\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 var 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 // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n var sentryWrapped = function () {\n var args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n var 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 \n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (var property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} \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 var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') ;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\n return fn.name;\n },\n });\n }\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\n\nexport { ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, isString, isPrimitive, isErrorEvent, getLocationHref, logger, addExceptionMechanism } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\n/** Global handlers */\nclass GlobalHandlers {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'GlobalHandlers';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = GlobalHandlers.id;}\n\n /** JSDoc */\n \n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n __init2() {this._installFunc = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };}\n\n /** JSDoc */\n constructor(options) {;GlobalHandlers.prototype.__init.call(this);GlobalHandlers.prototype.__init2.call(this);\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n setupOnce() {\n Error.stackTraceLimit = 50;\n var options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n for (var key in options) {\n var installFunc = this._installFunc[key ];\n if (installFunc && options[key ]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key ] = undefined;\n }\n }\n }\n} GlobalHandlers.__initStatic();\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler() {\n addInstrumentationHandler(\n 'error',\n (data) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n var event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler() {\n addInstrumentationHandler(\n 'unhandledrejection',\n (e) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n var event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\nfunction _eventFromIncompleteOnError(msg, url, line, column) {\n var 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 var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n var event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\nfunction _enhanceEventWithInitialFrame(event, url, line, column) {\n // event.exception\n var e = (event.exception = event.exception || {});\n // event.exception.values\n var ev = (e.values = e.values || []);\n // event.exception.values[0]\n var ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n var ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n var ev0sf = (ev0s.frames = ev0s.frames || []);\n\n var colno = isNaN(parseInt(column, 10)) ? undefined : column;\n var lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n var filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub, error, event, type) {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions() {\n var hub = getCurrentHub();\n var client = hub.getClient();\n var options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map\n","import { getGlobalObject, fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\nimport { wrap } from '../helpers.js';\n\nvar DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nclass TryCatch {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'TryCatch';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = TryCatch.id;}\n\n /** JSDoc */\n \n\n /**\n * @inheritDoc\n */\n constructor(options) {;TryCatch.prototype.__init.call(this);\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n setupOnce() {\n var global = getGlobalObject();\n\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n var eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n var eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n} TryCatch.__initStatic();\n\n/** JSDoc */\nfunction _wrapTimeFunction(original) {\n return function ( ...args) {\n var originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapRAF(original) {\n return function ( callback) {\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend) {\n return function ( ...args) {\n var xhr = this;\n var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n fill(xhr, prop, function (original) {\n var wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n var originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target) {\n var global = getGlobalObject() ;\n var proto = global[target] && global[target].prototype;\n\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original)\n\n {\n return function (\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 fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n wrap(fn , {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener,\n ) {\n return function (\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 var wrappedEventHandler = fn ;\n try {\n var originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map\n","import { getCurrentHub, addGlobalEventProcessor } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nclass LinkedErrors {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'LinkedErrors';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = LinkedErrors.id;}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n constructor(options = {}) {;LinkedErrors.prototype.__init.call(this);\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n var client = getCurrentHub().getClient();\n if (!client) {\n return;\n }\n addGlobalEventProcessor((event, hint) => {\n var self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n} LinkedErrors.__initStatic();\n\n/**\n * @inheritDoc\n */\nfunction _handler(\n parser,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n var linkedErrors = _walkErrorTree(parser, limit, hint.originalException , key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nfunction _walkErrorTree(\n parser,\n limit,\n error,\n key,\n stack = [],\n) {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n var exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n\nexport { LinkedErrors, _handler, _walkErrorTree };\n//# sourceMappingURL=linkederrors.js.map\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nvar global = getGlobalObject();\n\n/** HttpContext integration collects information about HTTP request headers */\nclass HttpContext {constructor() { HttpContext.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'HttpContext';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = HttpContext.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n addGlobalEventProcessor((event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n var url = (event.request && event.request.url) || (global.location && global.location.href);\n const { referrer } = global.document || {};\n const { userAgent } = global.navigator || {};\n\n var headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n var request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n} HttpContext.__initStatic();\n\nexport { HttpContext };\n//# sourceMappingURL=httpcontext.js.map\n","import { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nclass Dedupe {constructor() { Dedupe.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Dedupe';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Dedupe.id;}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n var eventProcessor = currentEvent => {\n var self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n} Dedupe.__initStatic();\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n var currentMessage = currentEvent.message;\n var previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n var previousException = _getExceptionFromEvent(previousEvent);\n var currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames ;\n previousFrames = previousFrames ;\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n var frameA = previousFrames[i];\n var frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint ;\n previousFingerprint = previousFingerprint ;\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event) {\n var exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n\nexport { Dedupe };\n//# sourceMappingURL=dedupe.js.map\n","import { Integrations, getIntegrationsToSetup, initAndBind, getCurrentHub, getReportDialogEndpoint } from '@sentry/core';\nimport { getGlobalObject, stackParserFromStackParserOptions, supportsFetch, logger, resolvedSyncPromise, addInstrumentationHandler } from '@sentry/utils';\nimport { BrowserClient } from './client.js';\nimport { wrap as wrap$1 } from './helpers.js';\nimport './integrations/index.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport './transports/index.js';\nimport { TryCatch } from './integrations/trycatch.js';\nimport { Breadcrumbs } from './integrations/breadcrumbs.js';\nimport { GlobalHandlers } from './integrations/globalhandlers.js';\nimport { LinkedErrors } from './integrations/linkederrors.js';\nimport { Dedupe } from './integrations/dedupe.js';\nimport { HttpContext } from './integrations/httpcontext.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { makeXHRTransport } from './transports/xhr.js';\n\nvar defaultIntegrations = [\n new Integrations.InboundFilters(),\n new Integrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nfunction init(options = {}) {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n var window = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n var clientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nfunction showReportDialog(options = {}, hub = getCurrentHub()) {\n // doesn't work without a document (React Native)\n var global = getGlobalObject();\n if (!global.document) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n var dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n var script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n var injectionPoint = global.document.head || global.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nfunction lastEventId() {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nfunction flush(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nfunction close(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\nfunction wrap(fn) {\n return wrap$1(fn)();\n}\n\nfunction startSessionOnHub(hub) {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n var window = getGlobalObject();\n var document = window.document;\n\n if (typeof document === 'undefined') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n var hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n\nexport { close, defaultIntegrations, flush, forceLoad, init, lastEventId, onLoad, showReportDialog, wrap };\n//# sourceMappingURL=sdk.js.map\n","import { getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n\n/** A class object that can instantiate Client objects. */\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nfunction initAndBind(\n clientClass,\n options,\n) {\n if (options.debug === true) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n var hub = getCurrentHub();\n var scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n\n var client = new clientClass(options);\n hub.bindClient(client);\n}\n\nexport { initAndBind };\n//# sourceMappingURL=sdk.js.map\n","import './exports.js';\nimport { Integrations } from '@sentry/core';\nexport { FunctionToString, Hub, InboundFilters, SDK_VERSION, Scope, addBreadcrumb, addGlobalEventProcessor, captureEvent, captureException, captureMessage, configureScope, createTransport, getCurrentHub, getHubFromCarrier, makeMain, setContext, setExtra, setExtras, setTag, setTags, setUser, startTransaction, withScope } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nimport * as index from './integrations/index.js';\nexport { BrowserClient } from './client.js';\nexport { makeFetchTransport } from './transports/fetch.js';\nexport { makeXHRTransport } from './transports/xhr.js';\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser } from './stack-parsers.js';\nexport { close, defaultIntegrations, flush, forceLoad, init, lastEventId, onLoad, showReportDialog, wrap } from './sdk.js';\nexport { GlobalHandlers } from './integrations/globalhandlers.js';\nexport { TryCatch } from './integrations/trycatch.js';\nexport { Breadcrumbs } from './integrations/breadcrumbs.js';\nexport { LinkedErrors } from './integrations/linkederrors.js';\nexport { HttpContext } from './integrations/httpcontext.js';\nexport { Dedupe } from './integrations/dedupe.js';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nvar _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n\nvar INTEGRATIONS = {\n ...windowIntegrations,\n ...Integrations,\n ...index,\n};\n\nexport { INTEGRATIONS as Integrations };\n//# sourceMappingURL=index.js.map\n","import { isBrowserBundle } from './env.js';\n\n/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\nfunction dynamicRequire(mod, request) {\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n let mod;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n\nexport { dynamicRequire, isNodeEnv, loadModule };\n//# sourceMappingURL=node.js.map\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\nexport { isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import { isNodeEnv } from './node.js';\n\n/** Internal */\n\nvar fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nfunction getGlobalObject() {\n return (\n isNodeEnv()\n ? global\n : typeof window !== 'undefined' ? window : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `getGlobalObject`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n var global = (obj || getGlobalObject()) ;\n var __SENTRY__ = (global.__SENTRY__ = global.__SENTRY__ || {});\n var singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\nexport { getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=global.js.map\n","var objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable };\n//# sourceMappingURL=is.js.map\n","import { getGlobalObject } from './global.js';\nimport { isString } from './is.js';\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(elem, keyAttrs) {\n \n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n var MAX_TRAVERSE_HEIGHT = 5;\n var MAX_OUTPUT_LEN = 80;\n var out = [];\n let height = 0;\n let len = 0;\n var separator = ' > ';\n var sepLength = separator.length;\n let nextStr;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n var elem = el \n\n;\n\n var out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n var keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n var allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n var global = getGlobalObject();\n try {\n return global.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `var element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\nfunction getDomElement(selector) {\n var global = getGlobalObject();\n if (global.document && global.document.querySelector) {\n return global.document.querySelector(selector) ;\n }\n return null;\n}\n\nexport { getDomElement, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n","import { getGlobalObject, getGlobalSingleton } from './global.js';\n\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n\nvar CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n var global = getGlobalObject();\n\n if (!('console' in global)) {\n return callback();\n }\n\n var originalConsole = global.console ;\n var wrappedLevels = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n var originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] ).__sentry_original__;\n if (level in global.console && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] ;\n originalConsole[level] = originalWrappedFunc ;\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level ];\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n var logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n global.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger;\nif ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger };\n//# sourceMappingURL=logger.js.map\n","import { isString, isRegExp } from './is.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n let newLine = line;\n var lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n\n var output = [];\n for (let i = 0; i < input.length; i++) {\n var value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nfunction isMatchingPattern(value, pattern) {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nfunction escapeStringForRegex(regexString) {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n\nexport { escapeStringForRegex, isMatchingPattern, safeJoin, snipLine, truncate };\n//# sourceMappingURL=string.js.map\n","import { htmlTreeAsString } from './browser.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n var original = source[name] ;\n var wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n var proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(\n value,\n)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n var newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n var extractedProps = {};\n for (var property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n var keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n var serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n var memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (var key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nfunction _nullishCoalesce(lhs, rhsFn) {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n\nexport { _nullishCoalesce };\n//# sourceMappingURL=_nullishCoalesce.js.map\n","import { _optionalChain } from './buildPolyfills';\n\nvar STACKTRACE_LIMIT = 50;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n var sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirst = 0) => {\n var frames = [];\n\n for (var line of stack.split('\\n').slice(skipFirst)) {\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n var cleanedLine = line.replace(/\\(error: (.*)\\)/, '$1');\n\n for (var parser of sortedParsers) {\n var frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n var firstFrameFunction = localStack[0].function || '';\n var lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nvar defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\nfunction node(getModule) {\n var FILENAME_MATCH = /^\\s*[-]{4,}$/;\n var FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n\n return (line) => {\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n var lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) {\n return undefined;\n }\n\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.substr(0, methodStart);\n method = functionName.substr(methodStart + 1);\n var objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.substr(objectEnd + 1);\n object = object.substr(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || '';\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n var filename = _optionalChain([lineMatch, 'access', _ => _[2], 'optionalAccess', _2 => _2.startsWith, 'call', _3 => _3('file://')]) ? lineMatch[2].substr(7) : lineMatch[2];\n var isNative = lineMatch[5] === 'native';\n var isInternal =\n isNative || (filename && !filename.startsWith('/') && !filename.startsWith('.') && filename.indexOf(':\\\\') !== 1);\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n var in_app = !isInternal && filename !== undefined && !filename.includes('node_modules/');\n\n return {\n filename,\n module: _optionalChain([getModule, 'optionalCall', _4 => _4(filename)]),\n function: functionName,\n lineno: parseInt(lineMatch[3], 10) || undefined,\n colno: parseInt(lineMatch[4], 10) || undefined,\n in_app,\n };\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { getGlobalObject } from './global.js';\nimport { logger } from './logger.js';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nfunction supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n\n var global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n var doc = global.document;\n if (doc && typeof (doc.createElement ) === 'function') {\n try {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReportingObserver() {\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' ,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = getGlobalObject();\n var chrome = (global ).chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsHistory, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n//# sourceMappingURL=supports.js.map\n","import { getGlobalObject } from './global.js';\nimport { isInstanceOf, isString } from './is.js';\nimport { logger, CONSOLE_LEVELS } from './logger.js';\nimport { fill } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\nimport { supportsNativeFetch, supportsHistory } from './supports.js';\n\nvar global = getGlobalObject();\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nvar handlers = {};\nvar instrumented = {};\n\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (var handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function (originalConsoleMethod) {\n return function (...args) {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function (originalFetch) {\n return function (...args) {\n var handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n return originalFetch.apply(global, args).then(\n (response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs = []) {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs = []) {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n var xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen) {\n return function ( ...args) {\n var xhr = this;\n var url = args[1];\n var xhrInfo = (xhr.__sentry_xhr__ = {\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n var onreadystatechangeHandler = function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return function (...readyStateArgs) {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend) {\n return function ( ...args) {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref;\n\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function ( ...args) {\n var to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n var from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n var url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n var from = lastHref;\n var to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\nvar debounceDuration = 1000;\nlet debounceTimerID;\nlet lastCapturedEvent;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n var target = event.target ;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener = false) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n var name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n var triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n var globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n var proto = (global )[target] && (global )[target].prototype;\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function (\n \n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this ;\n var handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n var handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n var handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function (\n \n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this ;\n var handlers = el.__sentry_instrumentation_handlers__ || {};\n var handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n\nexport { addInstrumentationHandler };\n//# sourceMappingURL=instrument.js.map\n","import { getGlobalObject } from './global.js';\nimport { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n var global = getGlobalObject() ;\n var crypto = (global.crypto || global.msCrypto) ;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n var getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n var firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n var exception = (event.exception = event.exception || {});\n var values = (exception.values = exception.values || []);\n var firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n var firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n var defaultMechanism = { type: 'generic', handled: true };\n var currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n var mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n var match = input.match(SEMVER_REGEXP) || [];\n var major = parseInt(match[1], 10);\n var minor = parseInt(match[2], 10);\n var patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n var lineno = frame.lineno || 0;\n var maxLines = lines.length;\n var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { getGlobalObject } from './global.js';\nimport { dynamicRequire, isNodeEnv } from './node.js';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nvar dateTimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n var timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n try {\n var perfHooks = dynamicRequire(module, 'perf_hooks') ;\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nvar platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nvar timestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nvar dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nvar timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nvar timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nvar usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nvar browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n var threshold = 3600 * 1000;\n var performanceNow = performance.now();\n var dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n var timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n var timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n var navigationStart = performance.timing && performance.timing.navigationStart;\n var hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n var navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n var navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs, usingPerformanceAPI };\n//# sourceMappingURL=time.js.map\n","var TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n var matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n let parentSampled;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n }\n return undefined;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData };\n//# sourceMappingURL=tracing.js.map\n","import { isString } from './is.js';\nimport { logger } from './logger.js';\n\nvar BAGGAGE_HEADER_NAME = 'baggage';\n\nvar SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nvar SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nvar MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/** Create an instance of Baggage */\nfunction createBaggage(initItems, baggageString = '', mutable = true) {\n return [{ ...initItems }, baggageString, mutable];\n}\n\n/** Get a value from baggage */\nfunction getBaggageValue(baggage, key) {\n return baggage[0][key];\n}\n\n/** Add a value to baggage */\nfunction setBaggageValue(baggage, key, value) {\n if (isBaggageMutable(baggage)) {\n baggage[0][key] = value;\n }\n}\n\n/** Check if the Sentry part of the passed baggage (i.e. the first element in the tuple) is empty */\nfunction isSentryBaggageEmpty(baggage) {\n return Object.keys(baggage[0]).length === 0;\n}\n\n/** Returns Sentry specific baggage values */\nfunction getSentryBaggageItems(baggage) {\n return baggage[0];\n}\n\n/**\n * Returns 3rd party baggage string of @param baggage\n * @param baggage\n */\nfunction getThirdPartyBaggage(baggage) {\n return baggage[1];\n}\n\n/**\n * Checks if baggage is mutable\n * @param baggage\n * @returns true if baggage is mutable, else false\n */\nfunction isBaggageMutable(baggage) {\n return baggage[2];\n}\n\n/**\n * Sets the passed baggage immutable\n * @param baggage\n */\nfunction setBaggageImmutable(baggage) {\n baggage[2] = false;\n}\n\n/** Serialize a baggage object */\nfunction serializeBaggage(baggage) {\n return Object.keys(baggage[0]).reduce((prev, key) => {\n var val = baggage[0][key] ;\n var baggageEntry = `${SENTRY_BAGGAGE_KEY_PREFIX}${encodeURIComponent(key)}=${encodeURIComponent(val)}`;\n var newVal = prev === '' ? baggageEntry : `${prev},${baggageEntry}`;\n if (newVal.length > MAX_BAGGAGE_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`Not adding key: ${key} with val: ${val} to baggage due to exceeding baggage size limits.`);\n return prev;\n } else {\n return newVal;\n }\n }, baggage[1]);\n}\n\n/**\n * Parse a baggage header from a string or a string array and return a Baggage object\n *\n * If @param includeThirdPartyEntries is set to true, third party baggage entries are added to the Baggage object\n * (This is necessary for merging potentially pre-existing baggage headers in outgoing requests with\n * our `sentry-` values)\n */\nfunction parseBaggageHeader(\n inputBaggageValue,\n includeThirdPartyEntries = false,\n) {\n // Adding this check here because we got reports of this function failing due to the input value\n // not being a string. This debug log might help us determine what's going on here.\n if ((!Array.isArray(inputBaggageValue) && !isString(inputBaggageValue)) || typeof inputBaggageValue === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n '[parseBaggageHeader] Received input value of incompatible type: ',\n typeof inputBaggageValue,\n inputBaggageValue,\n );\n\n // Gonna early-return an empty baggage object so that we don't fail later on\n return createBaggage({}, '');\n }\n\n var baggageEntries = (isString(inputBaggageValue) ? inputBaggageValue : inputBaggageValue.join(','))\n .split(',')\n .map(entry => entry.trim())\n .filter(entry => entry !== '' && (includeThirdPartyEntries || SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(entry)));\n\n return baggageEntries.reduce(\n ([baggageObj, baggageString], curr) => {\n const [key, val] = curr.split('=');\n if (SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(key)) {\n var baggageKey = decodeURIComponent(key.split('-')[1]);\n return [\n {\n ...baggageObj,\n [baggageKey]: decodeURIComponent(val),\n },\n baggageString,\n true,\n ];\n } else {\n return [baggageObj, baggageString === '' ? curr : `${baggageString},${curr}`, true];\n }\n },\n [{}, '', true],\n );\n}\n\n/**\n * Merges the baggage header we saved from the incoming request (or meta tag) with\n * a possibly created or modified baggage header by a third party that's been added\n * to the outgoing request header.\n *\n * In case @param headerBaggageString exists, we can safely add the the 3rd party part of @param headerBaggage\n * with our @param incomingBaggage. This is possible because if we modified anything beforehand,\n * it would only affect parts of the sentry baggage (@see Baggage interface).\n *\n * @param incomingBaggage the baggage header of the incoming request that might contain sentry entries\n * @param thirdPartyBaggageHeader possibly existing baggage header string or string[] added from a third\n * party to the request headers\n *\n * @return a merged and serialized baggage string to be propagated with the outgoing request\n */\nfunction mergeAndSerializeBaggage(incomingBaggage, thirdPartyBaggageHeader) {\n if (!incomingBaggage && !thirdPartyBaggageHeader) {\n return '';\n }\n\n var headerBaggage = (thirdPartyBaggageHeader && parseBaggageHeader(thirdPartyBaggageHeader, true)) || undefined;\n var thirdPartyHeaderBaggage = headerBaggage && getThirdPartyBaggage(headerBaggage);\n\n var finalBaggage = createBaggage((incomingBaggage && incomingBaggage[0]) || {}, thirdPartyHeaderBaggage || '');\n return serializeBaggage(finalBaggage);\n}\n\n/**\n * Helper function that takes a raw baggage value (if available) and the processed sentry-trace header\n * data (if available), parses the baggage value and creates a Baggage object. If there is no baggage\n * value, it will create an empty Baggage object.\n *\n * In a second step, this functions determines if the created Baggage object should be set immutable\n * to prevent mutation of the Sentry data. It does this by looking at the processed sentry-trace header.\n *\n * @param rawBaggageValue baggage value from header\n * @param sentryTraceHeader processed Sentry trace header returned from `extractTraceparentData`\n */\nfunction parseBaggageSetMutability(\n rawBaggageValue,\n sentryTraceHeader,\n) {\n var baggage = parseBaggageHeader(rawBaggageValue || '');\n\n // Because we are always creating a Baggage object by calling `parseBaggageHeader` above\n // (either a filled one or an empty one, even if we didn't get a `baggage` header),\n // we only need to check if we have a sentry-trace header or not. As soon as we have it,\n // we set baggage immutable. In case we don't get a sentry-trace header, we can assume that\n // this SDK is the head of the trace and thus we still permit mutation at this time.\n // There is one exception though, which is that we get a baggage-header with `sentry-`\n // items but NO sentry-trace header. In this case we also set the baggage immutable for now\n // but if something like this would ever happen, we should revisit this and determine\n // what this would actually mean for the trace (i.e. is this SDK the head?, what happened\n // before that we don't have a sentry-trace header?, etc)\n (sentryTraceHeader || !isSentryBaggageEmpty(baggage)) && setBaggageImmutable(baggage);\n\n return baggage;\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, createBaggage, getBaggageValue, getSentryBaggageItems, getThirdPartyBaggage, isBaggageMutable, isSentryBaggageEmpty, mergeAndSerializeBaggage, parseBaggageHeader, parseBaggageSetMutability, serializeBaggage, setBaggageImmutable, setBaggageValue };\n//# sourceMappingURL=baggage.js.map\n","import { getCurrentHub } from '@sentry/hub';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n var client = getCurrentHub().getClient();\n var options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nfunction getActiveTransaction(maybeHub) {\n var hub = maybeHub || getCurrentHub();\n var scope = hub.getScope();\n return scope && (scope.getTransaction() );\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time) {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nfunction secToMs(time) {\n return time * 1000;\n}\n\nexport { getActiveTransaction, hasTracingEnabled, msToSec, secToMs };\n//# sourceMappingURL=utils.js.map\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\nimport { getActiveTransaction } from './utils.js';\n\n/**\n * Configures global error listeners\n */\nfunction registerErrorInstrumentation() {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var status = 'internal_error';\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\nexport { registerErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { uuid4, timestampWithMs, logger, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n __init() {this.spans = [];}\n\n constructor(maxlen = 1000) {;SpanRecorder.prototype.__init.call(this);\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n add(span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nclass Span {\n /**\n * @inheritDoc\n */\n __init2() {this.traceId = uuid4();}\n\n /**\n * @inheritDoc\n */\n __init3() {this.spanId = uuid4().substring(16);}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * Internal keeper of the status\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * Timestamp in seconds when the span was created.\n */\n __init4() {this.startTimestamp = timestampWithMs();}\n\n /**\n * Timestamp in seconds when the span ended.\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n __init5() {this.tags = {};}\n\n /**\n * @inheritDoc\n */\n __init6() {this.data = {};}\n\n /**\n * List of spans that were finalized\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(spanContext) {;Span.prototype.__init2.call(this);Span.prototype.__init3.call(this);Span.prototype.__init4.call(this);Span.prototype.__init5.call(this);Span.prototype.__init6.call(this);\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n\n /**\n * @inheritDoc\n */\n startChild(\n spanContext,\n ) {\n var childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && childSpan.transaction) {\n var opStr = (spanContext && spanContext.op) || '< unknown op >';\n var nameStr = childSpan.transaction.name || '< unknown name >';\n var idStr = childSpan.transaction.spanId;\n\n var logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n logger.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setData(key, value) {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setStatus(value) {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setHttpStatus(httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n var spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n isSuccess() {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n if (\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n logger.log((logMessage ).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n }\n\n /**\n * @inheritDoc\n */\n toTraceparent() {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(spanContext) {\n this.data = _nullishCoalesce(spanContext.data, () => ( {}));\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = _nullishCoalesce(spanContext.spanId, () => ( this.spanId));\n this.startTimestamp = _nullishCoalesce(spanContext.startTimestamp, () => ( this.startTimestamp));\n this.status = spanContext.status;\n this.tags = _nullishCoalesce(spanContext.tags, () => ( {}));\n this.traceId = _nullishCoalesce(spanContext.traceId, () => ( this.traceId));\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getTraceContext()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n toJSON()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nfunction spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\nexport { Span, SpanRecorder, spanStatusfromHttpCode };\n//# sourceMappingURL=span.js.map\n","import { timestampWithMs, logger } from '@sentry/utils';\nimport { SpanRecorder } from './span.js';\nimport { Transaction } from './transaction.js';\n\nvar DEFAULT_IDLE_TIMEOUT = 1000;\nvar DEFAULT_FINAL_TIMEOUT = 30000;\nvar HEARTBEAT_INTERVAL = 5000;\n\n/**\n * @inheritDoc\n */\nclass IdleTransactionSpanRecorder extends SpanRecorder {\n constructor(\n _pushActivity,\n _popActivity,\n transactionSpanId,\n maxlen,\n ) {\n super(maxlen);this._pushActivity = _pushActivity;this._popActivity = _popActivity;this.transactionSpanId = transactionSpanId;;\n }\n\n /**\n * @inheritDoc\n */\n add(span) {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nclass IdleTransaction extends Transaction {\n // Activities store a list of active spans\n __init() {this.activities = {};}\n\n // Track state of activities in previous heartbeat\n \n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n __init2() {this._heartbeatCounter = 0;}\n\n // We should not use heartbeat if we finished a transaction\n __init3() {this._finished = false;}\n\n __init4() {this._beforeFinishCallbacks = [];}\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n \n\n constructor(\n transactionContext,\n _idleHub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n _idleTimeout = DEFAULT_IDLE_TIMEOUT,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n _finalTimeout = DEFAULT_FINAL_TIMEOUT,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope = false,\n ) {\n super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._onScope = _onScope;IdleTransaction.prototype.__init.call(this);IdleTransaction.prototype.__init2.call(this);IdleTransaction.prototype.__init3.call(this);IdleTransaction.prototype.__init4.call(this);;\n\n if (_onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._startIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n finish(endTimestamp = timestampWithMs()) {\n this._finished = true;\n this.activities = {};\n\n if (this.spanRecorder) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (var callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n var keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n registerBeforeFinishCallback(callback) {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n initSpanRecorder(maxlen) {\n if (!this.spanRecorder) {\n var pushActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n var popActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idletimeout, if there is one\n */\n _cancelIdleTimeout() {\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n }\n }\n\n /**\n * Creates an idletimeout\n */\n _startIdleTimeout(endTimestamp) {\n this._cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n _pushActivity(spanId) {\n this._cancelIdleTimeout();\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n _popActivity(spanId) {\n if (this.activities[spanId]) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] popActivity ${spanId}`);\n delete this.activities[spanId];\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n var endTimestamp = timestampWithMs() + this._idleTimeout / 1000;\n this._startIdleTimeout(endTimestamp);\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n _beat() {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n var heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n _pingHeartbeat() {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, HEARTBEAT_INTERVAL);\n }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub) {\n var scope = hub.getScope();\n if (scope) {\n var transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n}\n\nexport { DEFAULT_FINAL_TIMEOUT, DEFAULT_IDLE_TIMEOUT, HEARTBEAT_INTERVAL, IdleTransaction, IdleTransactionSpanRecorder };\n//# sourceMappingURL=idletransaction.js.map\n","import { getMainCarrier } from '@sentry/hub';\nimport { logger, isNaN, dynamicRequire, loadModule, isNodeEnv } from '@sentry/utils';\nimport { registerErrorInstrumentation } from './errors.js';\nimport { IdleTransaction } from './idletransaction.js';\nimport { Transaction } from './transaction.js';\nimport { hasTracingEnabled } from './utils.js';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n var scope = this.getScope();\n if (scope) {\n var span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction,\n options,\n samplingContext,\n) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n transactionSampling: { method: 'explicitly_set' },\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_sampler',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.setMetadata({\n transactionSampling: { method: 'inheritance' },\n });\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_rate',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate );\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n \n transactionContext,\n customSamplingContext,\n) {\n var client = this.getClient();\n var options = (client && client.getOptions()) || {};\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n hub,\n transactionContext,\n idleTimeout,\n finalTimeout,\n onScope,\n customSamplingContext,\n) {\n var client = hub.getClient();\n var options = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n return transaction;\n}\n\n/**\n * @private\n */\nfunction _addTracingExtensions() {\n var carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations() {\n var carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n var packageToIntegrationMapping = {\n mongodb() {\n var integration = dynamicRequire(module, './integrations/node/mongo') \n\n;\n return new integration.Mongo();\n },\n mongoose() {\n var integration = dynamicRequire(module, './integrations/node/mongo') \n\n;\n return new integration.Mongo({ mongoose: true });\n },\n mysql() {\n var integration = dynamicRequire(module, './integrations/node/mysql') \n\n;\n return new integration.Mysql();\n },\n pg() {\n var integration = dynamicRequire(module, './integrations/node/postgres') \n\n;\n return new integration.Postgres();\n },\n };\n\n var mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) ;\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nfunction addExtensionMethods() {\n _addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n\nexport { _addTracingExtensions, addExtensionMethods, startIdleTransaction };\n//# sourceMappingURL=hubextensions.js.map\n","import { getGlobalObject, logger } from '@sentry/utils';\nimport { getActiveTransaction } from '../utils.js';\n\nvar global = getGlobalObject();\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\n if (global && global.document) {\n global.document.addEventListener('visibilitychange', () => {\n var activeTransaction = getActiveTransaction() ;\n if (global.document.hidden && activeTransaction) {\n var statusType = 'cancelled';\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n\nexport { registerBackgroundTabDetection };\n//# sourceMappingURL=backgroundtab.js.map\n","var bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n metric.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 (metric.delta || prevValue === undefined) {\n prevValue = metric.value;\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nvar generateUniqueID = () => {\n return `v2-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.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 * 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 */\nvar observe = (type, callback) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n // More extensive feature detect needed for Firefox due to:\n // https://github.com/GoogleChrome/web-vitals/issues/142\n if (type === 'first-input' && !('PerformanceEventTiming' in self)) {\n return;\n }\n\n var po = new PerformanceObserver(l => l.getEntries().map(callback));\n\n po.observe({ type, buffered: true });\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\nexport { observe };\n//# sourceMappingURL=observe.js.map\n","import { getGlobalObject } from '@sentry/utils';\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\nvar onHidden = (cb, once) => {\n var onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || getGlobalObject().document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// https://wicg.github.io/layout-instability/#sec-layout-shift\n\nvar getCLS = (onReport, reportAllChanges) => {\n var metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n var entryHandler = (entry) => {\n // Only count layout shifts without recent user input.\n // TODO: Figure out why entry can be undefined\n if (entry && !entry.hadRecentInput) {\n var firstSessionEntry = sessionEntries[0];\n var 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 var po = observe('layout-shift', entryHandler );\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n onHidden(() => {\n po.takeRecords().map(entryHandler );\n report(true);\n });\n }\n};\n\nexport { getCLS };\n//# sourceMappingURL=getCLS.js.map\n","import { getGlobalObject } from '@sentry/utils';\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\nvar initHiddenTime = () => {\n return getGlobalObject().document.visibilityState === 'hidden' ? 0 : Infinity;\n};\n\nvar trackChanges = () => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nvar getVisibilityWatcher = (\n\n) => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\nexport { getVisibilityWatcher };\n//# sourceMappingURL=getVisibilityWatcher.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar getFID = (onReport, reportAllChanges) => {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('FID');\n let report;\n\n var entryHandler = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (report && entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n var po = observe('first-input', entryHandler );\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(() => {\n po.takeRecords().map(entryHandler );\n po.disconnect();\n }, true);\n }\n};\n\nexport { getFID };\n//# sourceMappingURL=getFID.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// https://wicg.github.io/largest-contentful-paint/#sec-largest-contentful-paint-interface\n\nvar reportedMetricIDs = {};\n\nvar getLCP = (onReport, reportAllChanges) => {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('LCP');\n let report;\n\n var entryHandler = (entry) => {\n // The startTime attribute returns the value of the renderTime if it is not 0,\n // and the value of the loadTime otherwise.\n var value = entry.startTime;\n\n // If the page was hidden prior to paint time of the entry,\n // ignore it and mark the metric as final, otherwise add the entry.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries.push(entry);\n }\n\n if (report) {\n report();\n }\n };\n\n var po = observe('largest-contentful-paint', entryHandler);\n\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n var stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n po.takeRecords().map(entryHandler );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n }\n};\n\nexport { getLCP };\n//# sourceMappingURL=getLCP.js.map\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nfunction _startChild(transaction, { startTimestamp, ...ctx }) {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n\nexport { _startChild, isMeasurementValue };\n//# sourceMappingURL=utils.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { getGlobalObject, browserPerformanceTimeOrigin, logger, htmlTreeAsString } from '@sentry/utils';\nimport { getActiveTransaction, msToSec } from '../../utils.js';\nimport { getCLS } from '../web-vitals/getCLS.js';\nimport { getFID } from '../web-vitals/getFID.js';\nimport { getLCP } from '../web-vitals/getLCP.js';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher.js';\nimport { observe } from '../web-vitals/lib/observe.js';\nimport { _startChild, isMeasurementValue } from './utils.js';\n\nvar global = getGlobalObject();\n\nfunction getBrowserPerformanceAPI() {\n return global && global.addEventListener && global.performance;\n}\n\nlet _performanceCursor = 0;\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\n\n/**\n * Start tracking web vitals\n */\nfunction startTrackingWebVitals(reportAllChanges = false) {\n var performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n if (performance.mark) {\n global.performance.mark('sentry-tracing-init');\n }\n _trackCLS();\n _trackLCP(reportAllChanges);\n _trackFID();\n }\n}\n\n/**\n * Start tracking long tasks.\n */\nfunction startTrackingLongTasks() {\n var entryHandler = (entry) => {\n var transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n var startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n var duration = msToSec(entry.duration);\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n };\n\n observe('longtask', entryHandler);\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS() {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n getCLS(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry ;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(reportAllChanges) {\n getLCP(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry ;\n }, reportAllChanges);\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID() {\n getFID(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n var timeOrigin = msToSec(browserPerformanceTimeOrigin );\n var startTime = msToSec(entry.startTime);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nfunction addPerformanceEntries(transaction) {\n var performance = getBrowserPerformanceAPI();\n if (!performance || !global.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n var performanceEntries = performance.getEntries();\n\n let responseStartTimestamp;\n let requestStartTimestamp;\n\n performanceEntries.slice(_performanceCursor).forEach((entry) => {\n var startTime = msToSec(entry.startTime);\n var duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n var firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n var shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n var resourceName = (entry.name ).replace(global.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n var oldValue = _measurements[name].value;\n var measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n var normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n var delta = normalizedValue - oldValue;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n var fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n op: 'web.vitals',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nfunction _addMeasureSpans(\n transaction,\n entry,\n startTime,\n duration,\n timeOrigin,\n) {\n var measureStartTimestamp = timeOrigin + startTime;\n var measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name ,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType ,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\nfunction _addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction,\n entry,\n event,\n timeOrigin,\n description,\n eventEnd,\n) {\n var end = eventEnd ? (entry[eventEnd] ) : (entry[`${event}End`] );\n var start = entry[`${event}Start`] ;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: _nullishCoalesce(description, () => ( event)),\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\nfunction _addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n}\n\n/** Create resource-related spans */\nfunction _addResourceSpans(\n transaction,\n entry,\n resourceName,\n startTime,\n duration,\n timeOrigin,\n) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n var data = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n\n var startTimestamp = timeOrigin + startTime;\n var endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction) {\n var navigator = global.navigator ;\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n var connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n\n if (isMeasurementValue(connection.downlink)) {\n _measurements['connection.downlink'] = { value: connection.downlink, unit: '' }; // unit is empty string for now, while relay doesn't support download speed units\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction) {\n if (_lcpEntry) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n\nexport { _addMeasureSpans, _addResourceSpans, addPerformanceEntries, startTrackingLongTasks, startTrackingWebVitals };\n//# sourceMappingURL=index.js.map\n","import { isMatchingPattern, addInstrumentationHandler, isInstanceOf, BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage } from '@sentry/utils';\nimport { hasTracingEnabled, getActiveTransaction } from '../utils.js';\n\nvar DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\n\nvar defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nfunction instrumentOutgoingRequests(_options) {\n const { traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest } = {\n ...defaultRequestInstrumentationOptions,\n ..._options,\n };\n\n // We should cache url -> decision so that we don't have to compute\n // regexp everytime we create a request.\n var urlMap = {};\n\n var defaultShouldCreateSpan = (url) => {\n if (urlMap[url]) {\n return urlMap[url];\n }\n var origins = tracingOrigins;\n urlMap[url] =\n origins.some((origin) => isMatchingPattern(url, origin)) &&\n !isMatchingPattern(url, 'sentry_key');\n return urlMap[url];\n };\n\n // We want that our users don't have to re-implement shouldCreateSpanForRequest themselves\n // That's why we filter out already unwanted Spans from tracingOrigins\n let shouldCreateSpan = defaultShouldCreateSpan;\n if (typeof shouldCreateSpanForRequest === 'function') {\n shouldCreateSpan = (url) => {\n return defaultShouldCreateSpan(url) && shouldCreateSpanForRequest(url);\n };\n }\n\n var spans = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData) => {\n fetchCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData) => {\n xhrCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n}\n\n/**\n * Create and track fetch request spans\n */\nfunction fetchCallback(\n handlerData,\n shouldCreateSpan,\n spans,\n) {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n\n if (handlerData.endTimestamp) {\n var spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n var span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n delete spans[spanId];\n }\n return;\n }\n\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: {\n ...handlerData.fetchData,\n type: 'fetch',\n },\n description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n op: 'http.client',\n });\n\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n\n var request = (handlerData.args[0] = handlerData.args[0] );\n var options = (handlerData.args[1] = (handlerData.args[1] ) || {});\n options.headers = addTracingHeaders(request, activeTransaction.getBaggage(), span, options);\n }\n}\n\nfunction addTracingHeaders(\n request,\n incomingBaggage,\n span,\n options,\n) {\n let headers = options.headers;\n\n if (isInstanceOf(request, Request)) {\n headers = (request ).headers;\n }\n\n if (headers) {\n if (typeof headers.append === 'function') {\n headers.append('sentry-trace', span.toTraceparent());\n headers.append(BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage(incomingBaggage, headers.get(BAGGAGE_HEADER_NAME)));\n } else if (Array.isArray(headers)) {\n const [, headerBaggageString] = headers.find(([key, _]) => key === BAGGAGE_HEADER_NAME);\n headers = [\n ...headers,\n ['sentry-trace', span.toTraceparent()],\n [BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage(incomingBaggage, headerBaggageString)],\n ];\n } else {\n headers = {\n ...headers,\n 'sentry-trace': span.toTraceparent(),\n baggage: mergeAndSerializeBaggage(incomingBaggage, headers.baggage),\n };\n }\n } else {\n headers = { 'sentry-trace': span.toTraceparent(), baggage: mergeAndSerializeBaggage(incomingBaggage) };\n }\n return headers;\n}\n\n/**\n * Create and track xhr request spans\n */\nfunction xhrCallback(\n handlerData,\n shouldCreateSpan,\n spans,\n) {\n if (\n !hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n ) {\n return;\n }\n\n var xhr = handlerData.xhr.__sentry_xhr__;\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n var spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n var span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n\n delete spans[spanId];\n }\n return;\n }\n\n // if not, create a new span to track it\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: {\n ...xhr.data,\n type: 'xhr',\n method: xhr.method,\n url: xhr.url,\n },\n description: `${xhr.method} ${xhr.url}`,\n op: 'http.client',\n });\n\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n if (handlerData.xhr.setRequestHeader) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n\n var headerBaggageString =\n handlerData.xhr.getRequestHeader && handlerData.xhr.getRequestHeader(BAGGAGE_HEADER_NAME);\n\n handlerData.xhr.setRequestHeader(\n BAGGAGE_HEADER_NAME,\n mergeAndSerializeBaggage(activeTransaction.getBaggage(), headerBaggageString),\n );\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n\nexport { DEFAULT_TRACING_ORIGINS, defaultRequestInstrumentationOptions, fetchCallback, instrumentOutgoingRequests, xhrCallback };\n//# sourceMappingURL=request.js.map\n","import { getGlobalObject, logger, addInstrumentationHandler } from '@sentry/utils';\n\nvar global = getGlobalObject();\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nfunction instrumentRoutingWithDefaults(\n customStartTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n if (!global || !global.location) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl = global.location.href;\n\n let activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: global.location.pathname,\n op: 'pageload',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: global.location.pathname,\n op: 'navigation',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n\nexport { instrumentRoutingWithDefaults };\n//# sourceMappingURL=router.js.map\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\nimport { logger, getGlobalObject, extractTraceparentData, parseBaggageSetMutability, getDomElement } from '@sentry/utils';\nimport { startIdleTransaction } from '../hubextensions.js';\nimport { DEFAULT_IDLE_TIMEOUT, DEFAULT_FINAL_TIMEOUT } from '../idletransaction.js';\nimport '../utils.js';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { startTrackingWebVitals, startTrackingLongTasks, addPerformanceEntries } from './metrics/index.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\nimport { instrumentRoutingWithDefaults } from './router.js';\n\nvar BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\n\nvar DEFAULT_BROWSER_TRACING_OPTIONS = {\n idleTimeout: DEFAULT_IDLE_TIMEOUT,\n finalTimeout: DEFAULT_FINAL_TIMEOUT,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n _experiments: { enableLongTask: true },\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nclass BrowserTracing {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n \n\n /**\n * @inheritDoc\n */\n __init() {this.name = BROWSER_TRACING_INTEGRATION_ID;}\n\n constructor(_options) {;BrowserTracing.prototype.__init.call(this);\n let tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;\n // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances\n if (_options) {\n if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins)) {\n tracingOrigins = _options.tracingOrigins;\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && (this._emitOptionsWarning = true);\n }\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n tracingOrigins,\n };\n\n const { _metricOptions } = this.options;\n startTrackingWebVitals(_metricOptions && _metricOptions._reportAllChanges);\n if (_optionalChain([this, 'access', _2 => _2.options, 'access', _3 => _3._experiments, 'optionalAccess', _4 => _4.enableLongTask])) {\n startTrackingLongTasks();\n }\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n this._getCurrentHub = getCurrentHub;\n\n if (this._emitOptionsWarning) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n '[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.',\n );\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] We added a reasonable default for you: ${defaultRequestInstrumentationOptions.tracingOrigins}`,\n );\n }\n\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n tracingOrigins,\n shouldCreateSpanForRequest,\n } = this.options;\n\n instrumentRouting(\n (context) => this._createRouteTransaction(context),\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n instrumentOutgoingRequests({ traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest });\n }\n\n /** Create routing idle transaction. */\n _createRouteTransaction(context) {\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n const { beforeNavigate, idleTimeout, finalTimeout } = this.options;\n\n var parentContextFromHeader = context.op === 'pageload' ? extractTraceDataFromMetaTags() : undefined;\n\n var expandedContext = {\n ...context,\n ...parentContextFromHeader,\n ...(parentContextFromHeader && {\n metadata: {\n ...context.metadata,\n ...parentContextFromHeader.metadata,\n },\n }),\n trimEnd: true,\n };\n var modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n var finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n if (finalContext.sampled === false) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n var hub = this._getCurrentHub();\n const { location } = getGlobalObject() ;\n\n var idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n );\n idleTransaction.registerBeforeFinishCallback(transaction => {\n addPerformanceEntries(transaction);\n transaction.setTag(\n 'sentry_reportAllChanges',\n Boolean(this.options._metricOptions && this.options._metricOptions._reportAllChanges),\n );\n });\n\n return idleTransaction ;\n }\n}\n\n/**\n * Gets transaction context data from `sentry-trace` and `baggage` tags.\n * @returns Transaction context data or undefined neither tag exists or has valid data\n */\nfunction extractTraceDataFromMetaTags() {\n var sentrytraceValue = getMetaContent('sentry-trace');\n var baggageValue = getMetaContent('baggage');\n\n var sentrytraceData = sentrytraceValue ? extractTraceparentData(sentrytraceValue) : undefined;\n var baggage = parseBaggageSetMutability(baggageValue, sentrytraceValue);\n\n // TODO more extensive checks for baggage validity/emptyness?\n if (sentrytraceData || baggage) {\n return {\n ...(sentrytraceData && sentrytraceData),\n ...(baggage && { metadata: { baggage } }),\n };\n }\n\n return undefined;\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n var metaTag = getDomElement(`meta[name=${metaName}]`);\n return metaTag ? metaTag.getAttribute('content') : null;\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing, extractTraceDataFromMetaTags, getMetaContent };\n//# sourceMappingURL=browsertracing.js.map\n","/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nfunction _optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n var op = ops[i] ;\n var fn = ops[i + 1] ;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => (value ).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// var op = ops[i];\n// var fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n\nexport { _optionalChain };\n//# sourceMappingURL=_optionalChain.js.map\n","import { addExtensionMethods } from './hubextensions.js';\nexport { addExtensionMethods, startIdleTransaction } from './hubextensions.js';\nimport * as index from './integrations/index.js';\nexport { index as Integrations };\nimport './browser/index.js';\nexport { Span, spanStatusfromHttpCode } from './span.js';\nexport { SpanStatus } from './spanstatus.js';\nexport { Transaction } from './transaction.js';\nexport { IdleTransaction } from './idletransaction.js';\nexport { getActiveTransaction, hasTracingEnabled } from './utils.js';\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing } from './browser/browsertracing.js';\nexport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './browser/request.js';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n;\n;\n\n// Treeshakable guard to remove all code related to tracing\n\n// Guard for tree\nif (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // We are patching the global object with our hub extension methods\n addExtensionMethods();\n}\n//# sourceMappingURL=index.js.map\n","import getEnv from '@clearscore-group/lib.helpers.envs';\nimport getRelease from '@clearscore-group/lib.helpers.release';\nimport * as Sentry from '@sentry/browser';\nimport { Integrations } from '@sentry/tracing';\n\nconst GLOBAL_NAMESPACE = '__cs__';\n\nconst EXCLUDED_EXCEPTIONS = [\n /**\n * Thrown from Glassbox SDK\n * Very old browsers w/o performance API support\n * @see https://sentry.io/organizations/clearscore-technology-ltd/issues/2075457217\n */\n 'e.performance.clearResourceTimings is not a function',\n /**\n * Thrown from Iovation SDK\n * Some browsers block getBattery for privacy reasons\n * @see https://sentry.io/organizations/clearscore-technology-ltd/issues/2353104888\n */\n \"Failed to execute 'getBattery' on 'Navigator': Illegal invocation\",\n /**\n * Thrown from Branch.io SDK via @clearscore-group/lib.helpers.branch\n *\n * Can happen if there are external errors from branch API (unresponsiveness) or the\n * requests are blocked at browser level by an adblocker etc. but since error names\n * are not consistent per browser, we must block all branch errors by default (quota)\n * @see https://sentry.io/organizations/clearscore-technology-ltd/issues/2481499515\n */\n /^\\[helpers\\.branch\\]/,\n];\n\n// eslint-disable-next-line max-len\nconst apps = ['app', 'beta', 'webviews', 'nova', 'adana', 'www', 'partner', 'ds', 'drivescore', 'auth'];\nexport const productionRegExp = new RegExp(\n `https?://((cdn|cdn2|cdn2-fs|${apps.join('|')}).)?(clearscore|drivescore).com`,\n);\nexport const devRegExp = new RegExp(`https?://(${apps.join('|')})-(ci|stg).cs55.co.uk`);\nexport const fluxRegExp = /https?:\\/\\/(admin|admin-ci|admin-stg)\\.flux\\.clearsccore\\.io/;\n\nwindow.Sentry = Sentry;\n\n// only available when SENTRY_ID is passed\nif (getEnv('SENTRY_ID') && window.Sentry) {\n const release = getRelease();\n const configuration = {\n dsn: `https://${getEnv('SENTRY_ID')}`,\n integrations: [new Integrations.BrowserTracing()],\n // Send performance tracing for 10% of transactions (lower quota consumption)\n tracesSampleRate: 0.1,\n ignoreErrors: EXCLUDED_EXCEPTIONS,\n denyUrls: [\n /**\n * Errors in this file are handled in `@clearscore-group/lib.helpers.branch` but are still reported to\n * sentry with `handled: yes` tag. We want to avoid that to preserve quota\n */\n /(cdn|api2)\\.branch\\.io/i,\n ],\n allowUrls: [productionRegExp, devRegExp, fluxRegExp],\n shouldSendCallback() {\n return !/^(.*CloudFlare-AlwaysOnline.*|.+undead.+)$/.test(window.navigator.userAgent);\n },\n };\n\n if (release && release.release) configuration.release = release.release;\n if (release && release.env) configuration.environment = release.env;\n if (getEnv('SENTRY_MAX_BREADCRUMBS')) configuration.maxBreadcrumbs = getEnv('SENTRY_MAX_BREADCRUMBS');\n if (getEnv('SENTRY_DEBUG')) configuration.debug = getEnv('SENTRY_DEBUG');\n if (typeof getEnv('SENTRY_SAMPLE_RATE') !== 'undefined') {\n configuration.sampleRate = getEnv('SENTRY_SAMPLE_RATE');\n }\n if (typeof getEnv('SENTRY_TRACE_SAMPLE_RATE') !== 'undefined') {\n configuration.tracesSampleRate = getEnv('SENTRY_TRACE_SAMPLE_RATE');\n }\n\n // https://docs.sentry.io/error-reporting/configuration/?platform=browsernpm\n Sentry.init(configuration);\n\n const monitoring = {};\n\n /**\n * attach helpers to global namespace __cs__.monitoring\n */\n if (window[GLOBAL_NAMESPACE] && !window[GLOBAL_NAMESPACE].monitoring)\n window[GLOBAL_NAMESPACE].monitoring = monitoring;\n\n /**\n * set user properties\n * @param {any} uuid\n * @summary https://docs.sentry.io/enriching-error-data/context/?platform=browsernpm#capturing-the-user\n */\n monitoring.identity = (uuid) => {\n if (uuid) {\n Sentry.configureScope((scope) => {\n scope.setUser({ id: uuid });\n });\n }\n };\n\n /**\n * set tag against user\n * @param {object} name\n * @param {object} value\n * @summary https://docs.sentry.io/enriching-error-data/context/?platform=browsernpm#tagging-events\n */\n monitoring.tag = (name, value) => {\n if (name && value) {\n Sentry.configureScope((scope) => {\n scope.setTag(name, value);\n });\n }\n };\n\n /**\n * set a property name to show against logging\n * @param {object} name\n * @param {object} value\n * @summary https://docs.sentry.io/enriching-error-data/context/?platform=browsernpm#extra-context\n */\n monitoring.property = (name, value) => {\n if (name && value) {\n Sentry.configureScope((scope) => {\n scope.setExtra(name, value);\n });\n }\n };\n\n /**\n * add use breadcrumb to logging\n * @param {object} data\n * @param {object} data.category\n * @param {object} data.message\n * @param {object} data.level\n * @summary https://docs.sentry.io/enriching-error-data/breadcrumbs/?platform=browsernpm\n * @example\n * {\n * category: 'auth',\n * message: `Authenticated user`,\n * level: 'info',\n * }\n */\n monitoring.addBreadcrumb = (data) => {\n if (data) {\n Sentry.addBreadcrumb({\n level: 'info',\n ...data,\n });\n }\n };\n\n /**\n * log an error\n * @param {*} err\n * @summary https://docs.sentry.io/error-reporting/capturing/?platform=browser#capturing-errors--exceptions\n */\n monitoring.error = (err) => {\n if (err) {\n Sentry.captureException(err);\n }\n };\n\n /**\n * log a message\n * @param {string} msg\n * @summary https://docs.sentry.io/error-reporting/capturing/?platform=browser#capturing-messages\n */\n monitoring.log = (msg) => {\n if (msg) {\n Sentry.captureMessage(msg);\n }\n };\n\n /**\n * log a message\n * @param {string} msg\n * @summary https://docs.sentry.io/error-reporting/capturing/?platform=browser#capturing-messages\n */\n monitoring.withScope = (func) => {\n if (func) {\n Sentry.withScope(func);\n }\n };\n\n /**\n * Set vendor and core versions as searchable tags against all logs\n */\n if (release.core) monitoring.tag('core', release.core);\n if (release.vendor) monitoring.tag('vendor', release.vendor);\n}\n"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","resolveProp","pathArr","objHolder","willReturn","counter","pathArrValue","split","canUseDom","window","document","createElement","CACHE_NAME","LOCAL_NAMESPACE","getSingleEnv","path","envs","env","getEnv","paths","Array","isArray","map","__SENTRY_BROWSER_BUNDLE__","prototype","toString","call","process","fallbackGlobalObject","isNodeEnv","global","self","getGlobalObject","__SENTRY__","name","creator","objectToString","wat","className","isBuiltin","Boolean","then","callback","originalConsole","console","wrappedLevels","CONSOLE_LEVELS","level","originalWrappedFunc","__sentry_original__","makeLogger","enabled","logger","enable","disable","__SENTRY_DEBUG__","args","consoleSandbox","_dropUndefinedKeys","inputValue","Map","memoizationMap","isPlainObject","undefined","memoVal","get","returnValue","set","item","crypto","msCrypto","randomUUID","replace","getRandomByte","getRandomValues","Uint8Array","Math","random","c","States","getGlobalSingleton","SyncPromise","__init","this","_state","PENDING","__init2","_handlers","constructor","executor","__init3","__init4","__init5","__init6","_resolve","_reject","e","onfulfilled","onrejected","resolve","reject","result","reason","_executeHandlers","val","onfinally","isRejected","_setResult","RESOLVED","REJECTED","state","isThenable","_value","cachedHandlers","slice","handler","dateTimestampSource","nowSeconds","Date","now","platformPerformance","module","mod","require","request","performance","_","getNodePerformance","timeOrigin","getBrowserPerformance","timestampSource","startingTime","timestampInSeconds","session","sid","uuid4","init","timestamp","started","duration","status","errors","ignoreDuration","toJSON","dropUndefinedKeys","toISOString","did","attrs","release","environment","ip_address","ipAddress","user_agent","userAgent","sessionToJSON","context","updateSession","user","id","email","username","threshold","performanceNow","dateNow","timeOriginDelta","abs","timeOriginIsReliable","navigationStart","timing","navigationStartDelta","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","clone","scope","newScope","Scope","_objectSpread","_level","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","addEventProcessor","setUser","_notifyScopeListeners","getUser","getRequestSession","setRequestSession","requestSession","setTags","tags","setTag","setExtras","extras","setExtra","extra","setFingerprint","fingerprint","setLevel","setTransactionName","setContext","setSpan","span","getSpan","getTransaction","transaction","setSession","getSession","update","captureContext","updatedScope","contexts","clear","addBreadcrumb","breadcrumb","maxBreadcrumbs","maxCrumbs","min","mergedBreadcrumb","dateTimestampInSeconds","clearBreadcrumbs","addAttachment","attachment","getAttachments","clearAttachments","applyToEvent","event","hint","trace","getTraceContext","transactionName","_applyFingerprint","breadcrumbs","sdkProcessingMetadata","_notifyEventProcessors","getGlobalEventProcessors","setSDKProcessingMetadata","newData","processors","index","processor","log","final","maybeArray","concat","DEFAULT_BREADCRUMBS","_stack","client","_version","API_VERSION","Hub","getStackTop","bindClient","isOlderThan","version","setupIntegrations","pushScope","getScope","getStack","getClient","popScope","pop","withScope","captureException","exception","eventId","_lastEventId","event_id","syntheticException","Error","_withClient","originalException","captureMessage","message","captureEvent","type","lastEventId","beforeBreadcrumb","getOptions","finalBreadcrumb","configureScope","run","oldHub","makeMain","getIntegration","integration","_oO","warn","startTransaction","customSamplingContext","_callExtensionMethod","traceHeaders","captureSession","endSession","_sendSessionUpdate","layer","closeSession","startSession","navigator","makeSession","currentSession","shouldSendDefaultPii","options","sendDefaultPii","method","sentry","getMainCarrier","extensions","carrier","hub","registry","getHubFromCarrier","setHubOnCarrier","hasHubOnCarrier","activeDomain","domain","active","registryHubTopStack","_Oo","getHubFromActiveDomain","getCurrentHub","isInstanceOf","Event","base","_e","currentElem","elem","out","height","len","nextStr","_htmlElementAsString","keyAttrs","separator","parentNode","reverse","join","el","classes","attr","tagName","toLowerCase","keyAttrPairs","keyAttr","getAttribute","keyAttrPair","isString","allowedAttrs","logLevel","super","setPrototypeOf","DSN_REGEX","host","pass","port","projectId","protocol","publicKey","dsn","withPassword","dsnFromComponents","components","from","match","exec","str","SentryError","lastPath","projectMatch","dsnFromString","component","isValidProtocol","isNaN","parseInt","validateDsn","max","substr","input","output","String","delimiter","pattern","test","indexOf","original","wrapped","replacementFactory","markFunctionWrapped","proto","addNonEnumerableProperty","func","convertToPlainObject","isError","stack","getOwnProperties","isEvent","newObj","serializeEventTarget","currentTarget","CustomEvent","detail","Element","htmlTreeAsString","extractedProps","property","hasOwnProperty","sort","maxLength","truncate","includedKeys","serialized","STACKTRACE_LIMIT","defaultFunctionName","Headers","Request","Response","handlers","instrumented","instrument","fill","originalConsoleMethod","triggerHandlers","instrumentConsole","triggerDOMHandler","bind","globalDOMEventHandler","makeDOMEventHandler","addEventListener","originalAddEventListener","listener","__sentry_instrumentation_handlers__","handlerForType","refCount","originalRemoveEventListener","instrumentDOM","xhrproto","XMLHttpRequest","originalOpen","xhr","url","xhrInfo","__sentry_xhr__","toUpperCase","__sentry_own_request__","onreadystatechangeHandler","readyState","status_code","endTimestamp","startTimestamp","onreadystatechange","readyStateArgs","originalSend","body","instrumentXHR","supportsFetch","isNativeFetch","fetch","doc","sandbox","hidden","head","appendChild","contentWindow","removeChild","err","supportsNativeFetch","originalFetch","handlerData","fetchData","getFetchMethod","getFetchUrl","response","error","instrumentFetch","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","history","pushState","replaceState","supportsHistory","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","lastHref","to","location","href","instrumentHistory","_oldOnErrorHandler","onerror","msg","line","column","_oldOnUnhandledRejectionHandler","onunhandledrejection","data","getFunctionName","fetchArgs","debounceDuration","debounceTimerID","lastCapturedEvent","globalListener","isContentEditable","shouldSkipDOMEvent","previous","current","shouldShortcircuitPreviousDebounce","clearTimeout","setTimeout","getFirstException","values","firstException","currentMechanism","mechanism","handled","newMechanism","mergedData","__sentry_captured__","visit","depth","maxProperties","ERROR","maxSize","normalized","normalize","encodeURI","utf8Length","JSON","stringify","normalizeToSize","Infinity","memo","hasWeakSet","WeakSet","inner","has","add","delete","splice","memoBuilder","memoize","unmemoize","includes","stringified","_events","isSyntheticEvent","getPrototypeOf","stringifyValue","startsWith","valueWithToJSON","numAdded","visitable","visitKey","visitValue","buffer","remove","task","$","taskProducer","limit","rejectedSyncPromise","drain","timeout","capturedSetTimeout","resolvedSyncPromise","parseUrl","query","fragment","relative","headers","items","envelope","newItem","envelopeItem","envelopeItemType","encodeUTF8","textEncoder","TextEncoder","encode","envHeaders","parts","append","next","itemHeaders","payload","buffers","totalLength","reduce","acc","buf","merged","offset","concatBuffers","filename","content_type","contentType","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","sessions","client_report","user_report","updateRateLimits","limits","statusCode","updatedRateLimits","rateLimitHeader","retryAfterHeader","trim","retryAfter","categories","headerDelay","delay","category","all","header","headerDate","parse","DEFAULT_RETRY_AFTER","parseRetryAfterHeader","SENTRY_API_VERSION","getBaseApiEndpoint","_encodedAuth","sdkInfo","sentry_key","sentry_version","sentry_client","encodeURIComponent","tunnelOrOptions","tunnel","_metadata","sdk","_getIngestEndpoint","getSdkMetadataForEnvelopeHeader","metadata","createEventEnvelope","eventType","transactionSampling","samplingMethod","rate","sampleRate","integrations","packages","enhanceEventWithSdkInfo","envelopeHeaders","baggage","dynamicSamplingContext","getSentryBaggageItems","sent_at","dsnToString","createEventEnvelopeHeaders","createEnvelope","sample_rates","filterDuplicates","every","accIntegration","defaultIntegrations","userIntegrations","userIntegration","integrationsNames","alwaysLastToRun","ALREADY_SEEN_ERROR","_integrations","_integrationsInitialized","_numProcessing","_outcomes","BaseClient","_options","_dsn","makeDsn","getEnvelopeEndpointWithUrlEncodedAuth","_transport","transport","recordDroppedEvent","transportOptions","checkOrSetAlreadyCaught","_process","eventFromException","_captureEvent","promisedEvent","isPrimitive","eventFromMessage","_isEnabled","sendSession","getDsn","getTransport","flush","_isClientDoneProcessing","clientFinished","transportFlushed","close","integrationIndex","installedIntegrations","setupOnce","addGlobalEventProcessor","getIntegrationById","integrationId","sendEvent","attachments","addItemToEnvelope","createAttachmentEnvelopeItem","_sendEnvelope","createSessionEnvelope","sendClientReports","_updateSessionFromEvent","crashed","errored","exceptions","ex","sessionNonTerminal","Number","ticked","interval","setInterval","clearInterval","_prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","_applyClientOptions","_applyIntegrationsMetadata","finalScope","evt","_normalizeEvent","maxBreadth","b","spans","dist","maxValueLength","integrationsArray","_processEvent","finalEvent","sentryError","beforeSend","isTransaction","__sentry__","rv","nullErr","_ensureBeforeSendRv","processedEvent","promise","send","_clearOutcomes","outcomes","quantity","createTransport","makeRequest","makePromiseBuffer","bufferSize","DEFAULT_TRANSPORT_BUFFER_SIZE","rateLimits","filteredEnvelopeItems","forEachEnvelopeItem","envelopeItemDataCategory","envelopeItemTypeToDataCategory","disabledUntil","isRateLimited","filteredEnvelope","recordEnvelopeLoss","serializeEnvelope","originalFunctionToString","__initStatic","FunctionToString","Function","getOriginalFunction","DEFAULT_IGNORE_ERRORS","InboundFilters","eventProcess","clientOptions","internalOptions","allowUrls","denyUrls","ignoreErrors","ignoreInternal","_mergeOptions","_isSentryError","getEventDescription","oO","_getPossibleEventMessages","some","isMatchingPattern","_isIgnoredError","_getEventFilterUrl","_isDeniedUrl","_isAllowedUrl","_shouldDropEvent","frames","stacktrace","frame","_getLastValidUrl","parseStackFrames","stackParser","extractMessage","exceptionFromError","popSize","framesToPop","reactMinifiedRegexp","getPopSize","attachStacktrace","isUnhandledRejection","isErrorEvent","eventFromError","isDOMError","domException","eventFromString","addExceptionTypeValue","code","extractExceptionKeysForMessage","__serialized__","eventFromPlainObject","addExceptionMechanism","synthetic","BREADCRUMB_INTEGRATION_ID","Breadcrumbs","dom","addInstrumentationHandler","_consoleBreadcrumb","_innerDomBreadcrumb","serializeAttribute","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","validSeverityLevels","safeJoin","parsedLoc","parsedFrom","parsedTo","cachedFetchImpl","fetchImpl","globalObject","SDK_VERSION","visibilityState","_flushOutcomes","eventFromUnknownInput","breadcrumbIntegration","platform","discarded_events","sendBeacon","getNativeFetchImplementation","credentials","keepalive","sendReport","makeFetchTransport","nativeFetch","requestOptions","referrerPolicy","fetchOptions","XHR_READYSTATE_DONE","getResponseHeader","open","setRequestHeader","UNKNOWN_FUNCTION","createFrame","lineno","colno","function","in_app","chromeRegex","chromeEvalRegex","subMatch","extractSafariExtensionDetails","geckoREgex","geckoEvalRegex","winjsRegex","opera10Regex","opera11Regex","isSafariExtension","isSafariWebExtension","ignoreOnError","wrap","fn","before","wrapper","__sentry_wrapped__","sentryWrapped","wrappedArguments","arg","GlobalHandlers","_installFunc","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","stackTraceLimit","installFunc","getHubAndOptions","shouldIgnoreOnError","ERROR_TYPES_RE","groups","_enhanceEventWithInitialFrame","_eventFromIncompleteOnError","addMechanismAndCapture","ev","ev0","ev0s","ev0sf","getLocationHref","DEFAULT_EVENT_TARGET","TryCatch","eventTarget","requestAnimationFrame","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","prop","wrapOptions","originalFunction","eventName","handleEvent","wrappedEventHandler","originalEventHandler","LinkedErrors","_key","_limit","parser","linkedErrors","_walkErrorTree","_handler","HttpContext","referrer","Referer","Dedupe","eventProcessor","currentEvent","previousEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","_previousEvent","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","previousFingerprint","Integrations.InboundFilters","Integrations.FunctionToString","SENTRY_RELEASE","autoSessionTracking","defaultStackParser","getIntegrationsToSetup","makeXHRTransport","clientClass","debug","initialScope","initAndBind","BrowserClient","startSessionOnHub","startSessionTracking","windowIntegrations","_window","Sentry","Integrations","INTEGRATIONS","script","async","src","dsnLike","dialogOptions","endpoint","encodedOptions","getReportDialogEndpoint","onLoad","onload","injectionPoint","wrap$1","lhs","rhsFn","dynamicRequire","initItems","baggageString","mutable","parseBaggageHeader","inputBaggageValue","includeThirdPartyEntries","createBaggage","entry","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","baggageObj","curr","baggageKey","decodeURIComponent","incomingBaggage","thirdPartyBaggageHeader","headerBaggage","thirdPartyHeaderBaggage","prev","baggageEntry","SENTRY_BAGGAGE_KEY_PREFIX","newVal","MAX_BAGGAGE_STRING_LENGTH","serializeBaggage","rawBaggageValue","sentryTraceHeader","isSentryBaggageEmpty","setBaggageImmutable","hasTracingEnabled","maybeOptions","maybeHub","time","errorCallback","activeTransaction","getActiveTransaction","setStatus","_pushActivity","_popActivity","transactionSpanId","maxlen","spanId","finish","timestampWithMs","activities","_heartbeatCounter","_finished","_beforeFinishCallbacks","transactionContext","_idleHub","_idleTimeout","_finalTimeout","_onScope","IdleTransaction","clearActiveTransaction","_startIdleTimeout","spanRecorder","op","keepSpan","registerBeforeFinishCallback","initSpanRecorder","IdleTransactionSpanRecorder","_pingHeartbeat","_cancelIdleTimeout","_idleTimeoutID","_beat","heartbeatString","_prevHeartbeatString","toTraceparent","sample","samplingContext","sampled","setMetadata","tracesSampler","parentSampled","tracesSampleRate","isValidSampleRate","_startTransaction","Transaction","_experiments","maxSpans","_autoloadDatabaseIntegrations","packageToIntegrationMapping","mongodb","Mongo","mongoose","mysql","Mysql","pg","Postgres","mappedPackages","moduleName","cwd","loadModule","pkg","p","bindReporter","metric","reportAllChanges","prevValue","forceReport","delta","floor","PerformanceObserver","supportedEntryTypes","po","l","getEntries","observe","buffered","onHiddenOrPageHide","cb","once","removeEventListener","initMetric","report","sessionValue","sessionEntries","entryHandler","hadRecentInput","firstSessionEntry","lastSessionEntry","startTime","entries","onReport","onHidden","takeRecords","firstHiddenTime","getVisibilityWatcher","timeStamp","visibilityWatcher","processingStart","disconnect","reportedMetricIDs","stopListening","capture","_objectWithoutProperties","excluded","sourceKeys","objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","isFinite","startChild","ctx","getBrowserPerformanceAPI","_lcpEntry","_clsEntry","_performanceCursor","_measurements","resourceName","_addPerformanceNavigationTiming","description","eventEnd","traceFetch","traceXHR","tracingOrigins","shouldCreateSpanForRequest","defaultRequestInstrumentationOptions","urlMap","defaultShouldCreateSpan","origins","origin","shouldCreateSpan","__span","setHttpStatus","BAGGAGE_HEADER_NAME","mergeAndSerializeBaggage","headerBaggageString","find","addTracingHeaders","getBaggage","fetchCallback","__sentry_xhr_span_id__","getRequestHeader","xhrCallback","DEFAULT_BROWSER_TRACING_OPTIONS","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","pathname","lastAccessLHS","ops","statusType","matches","traceparent","TRACEPARENT_REGEXP","traceId","parentSpanId","idleTimeout","finalTimeout","onScope","querySelector","selector","__SENTRY_TRACING__","GLOBAL_NAMESPACE","EXCLUDED_EXCEPTIONS","apps","productionRegExp","RegExp","devRegExp","fluxRegExp","configuration","shouldSendCallback","monitoring","identity","uuid","tag","core","vendor"],"mappings":"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"}