{"version":3,"file":"static/chunks/pages/_app-04626788d713e344.js","mappings":"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","sources":["webpack://_N_E/./node_modules/@sentry/browser/esm/stack-parsers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/eventbuilder.js","webpack://_N_E/./node_modules/@sentry/browser/esm/flags.js","webpack://_N_E/./node_modules/@sentry/browser/esm/helpers.js","webpack://_N_E/./node_modules/@sentry/utils/esm/enums.js","webpack://_N_E/./node_modules/@sentry/utils/esm/severity.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/dedupe.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/useragent.js","webpack://_N_E/./node_modules/@sentry/core/esm/integration.js","webpack://_N_E/./node_modules/@sentry/core/esm/baseclient.js","webpack://_N_E/./node_modules/@sentry/utils/esm/envelope.js","webpack://_N_E/./node_modules/@sentry/core/esm/request.js","webpack://_N_E/./node_modules/@sentry/core/esm/transports/noop.js","webpack://_N_E/./node_modules/@sentry/core/esm/basebackend.js","webpack://_N_E/./node_modules/@sentry/utils/esm/promisebuffer.js","webpack://_N_E/./node_modules/@sentry/utils/esm/ratelimit.js","webpack://_N_E/./node_modules/@sentry/utils/esm/status.js","webpack://_N_E/./node_modules/@sentry/core/esm/transports/base.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/utils.js","webpack://_N_E/./node_modules/@sentry/utils/esm/async.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/base.js","webpack://_N_E/./node_modules/@sentry/utils/esm/clientreport.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/fetch.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/xhr.js","webpack://_N_E/./node_modules/@sentry/browser/esm/backend.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/new-fetch.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/new-xhr.js","webpack://_N_E/./node_modules/@sentry/browser/esm/client.js","webpack://_N_E/./node_modules/@sentry/browser/esm/sdk.js","webpack://_N_E/./node_modules/@sentry/core/esm/sdk.js","webpack://_N_E/./node_modules/@sentry/core/esm/api.js","webpack://_N_E/./node_modules/@sentry/core/esm/flags.js","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack://_N_E/./node_modules/@sentry/core/esm/version.js","webpack://_N_E/./node_modules/@sentry/hub/esm/flags.js","webpack://_N_E/./node_modules/@sentry/hub/esm/session.js","webpack://_N_E/./node_modules/@sentry/hub/esm/hub.js","webpack://_N_E/./node_modules/@sentry/hub/esm/scope.js","webpack://_N_E/./node_modules/@sentry/minimal/esm/index.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/constants.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/flags.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/errors.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/hubextensions.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/idletransaction.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/span.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/transaction.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/utils.js","webpack://_N_E/./node_modules/@sentry/types/esm/severity.js","webpack://_N_E/./node_modules/@sentry/utils/esm/browser.js","webpack://_N_E/./node_modules/@sentry/utils/esm/dsn.js","webpack://_N_E/./node_modules/@sentry/utils/esm/polyfill.js","webpack://_N_E/./node_modules/@sentry/utils/esm/error.js","webpack://_N_E/./node_modules/@sentry/utils/esm/flags.js","webpack://_N_E/./node_modules/@sentry/utils/esm/global.js","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument.js","webpack://_N_E/./node_modules/@sentry/utils/esm/is.js","webpack://_N_E/./node_modules/@sentry/utils/esm/logger.js","webpack://_N_E/./node_modules/@sentry/utils/esm/misc.js","webpack://_N_E/./node_modules/@sentry/utils/esm/node.js","webpack://_N_E/./node_modules/@sentry/utils/esm/env.js","webpack://_N_E/./node_modules/@sentry/utils/esm/normalize.js","webpack://_N_E/./node_modules/@sentry/utils/esm/memo.js","webpack://_N_E/./node_modules/@sentry/utils/esm/object.js","webpack://_N_E/./node_modules/@sentry/utils/esm/stacktrace.js","webpack://_N_E/./node_modules/@sentry/utils/esm/string.js","webpack://_N_E/./node_modules/@sentry/utils/esm/supports.js","webpack://_N_E/./node_modules/@sentry/utils/esm/syncpromise.js","webpack://_N_E/./node_modules/@sentry/utils/esm/time.js","webpack://_N_E/./node_modules/@sentry/webpack-plugin/src/sentry-webpack.module.js","webpack://_N_E/./node_modules/next-themes/dist/index.modern.js","webpack://_N_E/./node_modules/next/dist/build/polyfills/process.js","webpack://_N_E/?4b4c","webpack://_N_E/./components/Link.tsx","webpack://_N_E/./components/SectionContainer.tsx","webpack://_N_E/./components/social-icons/mail.svg","webpack://_N_E/./components/social-icons/github.svg","webpack://_N_E/./components/social-icons/facebook.svg","webpack://_N_E/./components/social-icons/youtube.svg","webpack://_N_E/./components/social-icons/linkedin.svg","webpack://_N_E/./components/social-icons/twitter.svg","webpack://_N_E/./components/social-icons/index.tsx","webpack://_N_E/./data/siteMetadata.js","webpack://_N_E/./node_modules/next/dist/client/link.js","webpack://_N_E/./node_modules/next/dist/client/use-intersection.js","webpack://_N_E/./data/headerNavLinks.ts","webpack://_N_E/./components/Footer.tsx","webpack://_N_E/./components/MobileNav.tsx","webpack://_N_E/./components/ThemeSwitch.tsx","webpack://_N_E/./components/LayoutWrapper.tsx","webpack://_N_E/./lib/useScrollRestoration.ts","webpack://_N_E/./pages/_app.tsx","webpack://_N_E/./node_modules/@sentry/browser/esm/index.js","webpack://_N_E/./node_modules/@sentry/utils/esm/tracing.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/backgroundtab.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/bindReporter.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/initMetric.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/observe.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/onHidden.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getLCP.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/metrics.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getCLS.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getFID.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/request.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/router.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/browsertracing.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/index.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/performance/client.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/utils/userIntegrations.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/index.client.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/utils/metadata.js","webpack://_N_E/./node_modules/@sentry/nextjs/node_modules/@sentry/react/esm/sdk.js","webpack://_N_E/./sentry.client.config.js","webpack://_N_E/./node_modules/next/dist/compiled/process/browser.js","webpack://_N_E/./node_modules/next/head.js","webpack://_N_E/./node_modules/next/link.js","webpack://_N_E/./node_modules/next/router.js","webpack://_N_E/./node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","webpack://_N_E/./node_modules/tslib/tslib.es6.js"],"sourcesContent":["import { __read } from \"tslib\";\n// global reference to slice\nvar UNKNOWN_FUNCTION = '?';\nvar OPERA10_PRIORITY = 10;\nvar OPERA11_PRIORITY = 20;\nvar CHROME_PRIORITY = 30;\nvar WINJS_PRIORITY = 40;\nvar GECKO_PRIORITY = 50;\nfunction createFrame(filename, func, lineno, colno) {\n var frame = {\n filename: filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n if (colno !== undefined) {\n frame.colno = colno;\n }\n return frame;\n}\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nvar chromeRegex = /^\\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+))\\)/;\nvar chrome = function (line) {\n var parts = chromeRegex.exec(line);\n if (parts) {\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval) {\n var subMatch = chromeEvalRegex.exec(parts[2]);\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 // 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 var _a = __read(extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]), 2), func = _a[0], filename = _a[1];\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n return;\n};\nexport var chromeStackParser = [CHROME_PRIORITY, chrome];\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 = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nvar gecko = function (line) {\n var _a;\n var parts = geckoREgex.exec(line);\n if (parts) {\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n var subMatch = geckoEvalRegex.exec(parts[3]);\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 var filename = parts[3];\n var func = parts[1] || UNKNOWN_FUNCTION;\n _a = __read(extractSafariExtensionDetails(func, filename), 2), func = _a[0], filename = _a[1];\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n return;\n};\nexport var geckoStackParser = [GECKO_PRIORITY, gecko];\nvar winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nvar winjs = function (line) {\n var parts = winjsRegex.exec(line);\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\nexport var winjsStackParser = [WINJS_PRIORITY, winjs];\nvar opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\nvar opera10 = function (line) {\n var parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\nexport var opera10StackParser = [OPERA10_PRIORITY, opera10];\nvar opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\nvar opera11 = function (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};\nexport var opera11StackParser = [OPERA11_PRIORITY, opera11];\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 = function (func, filename) {\n var isSafariExtension = func.indexOf('safari-extension') !== -1;\n var isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\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//# sourceMappingURL=stack-parsers.js.map","import { __assign } from \"tslib\";\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addExceptionTypeValue, createStackParser, extractExceptionKeysForMessage, isDOMError, isDOMException, isError, isErrorEvent, isEvent, isPlainObject, normalizeToSize, resolvedSyncPromise, } from '@sentry/utils';\nimport { chromeStackParser, geckoStackParser, opera10StackParser, opera11StackParser, winjsStackParser, } from './stack-parsers';\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromError(ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n var frames = parseStackFrames(ex);\n var exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n if (frames.length) {\n exception.stacktrace = { frames: frames };\n }\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n return exception;\n}\n/**\n * @hidden\n */\nexport function eventFromPlainObject(exception, syntheticException, isUnhandledRejection) {\n var event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: \"Non-Error \" + (isUnhandledRejection ? 'promise rejection' : 'exception') + \" captured with keys: \" + extractExceptionKeysForMessage(exception),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n if (syntheticException) {\n var frames_1 = parseStackFrames(syntheticException);\n if (frames_1.length) {\n event.stacktrace = { frames: frames_1 };\n }\n }\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromError(ex) {\n return {\n exception: {\n values: [exceptionFromError(ex)],\n },\n };\n}\n/** Parses stack frames from an error */\nexport function parseStackFrames(ex) {\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 var popSize = getPopSize(ex);\n try {\n return createStackParser(opera10StackParser, opera11StackParser, chromeStackParser, winjsStackParser, geckoStackParser)(stacktrace, popSize);\n }\n catch (e) {\n // no-empty\n }\n return [];\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;\nfunction getPopSize(ex) {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n return 0;\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 * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(exception, hint, attachStacktrace) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromUnknownInput(exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(message, level, hint, attachStacktrace) {\n if (level === void 0) { level = Severity.Info; }\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromString(message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(exception, syntheticException, attachStacktrace, isUnhandledRejection) {\n var event;\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(errorEvent.error);\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 if ('stack' in exception) {\n event = eventFromError(exception);\n }\n else {\n var name_1 = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n var message = domException.message ? name_1 + \": \" + domException.message : name_1;\n event = eventFromString(message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = __assign(__assign({}, event.tags), { 'DOMException.code': \"\" + domException.code });\n }\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n var objectException = exception;\n event = eventFromPlainObject(objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, \"\" + exception, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromString(input, syntheticException, attachStacktrace) {\n var event = {\n message: input,\n };\n if (attachStacktrace && syntheticException) {\n var frames_2 = parseStackFrames(syntheticException);\n if (frames_2.length) {\n event.stacktrace = { frames: frames_2 };\n }\n }\n return event;\n}\n//# sourceMappingURL=eventbuilder.js.map","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n/** Flag that is true for debug builds, false otherwise. */\nexport var IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n//# sourceMappingURL=flags.js.map","import { __assign } from \"tslib\";\nimport { captureException, getReportDialogEndpoint, withScope } from '@sentry/core';\nimport { addExceptionMechanism, addExceptionTypeValue, addNonEnumerableProperty, getGlobalObject, getOriginalFunction, logger, markFunctionWrapped, } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from './flags';\nvar global = getGlobalObject();\nvar ignoreOnError = 0;\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n/**\n * @hidden\n */\nexport function ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(function () {\n ignoreOnError -= 1;\n });\n}\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(fn, options, before) {\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 if (options === void 0) { options = {}; }\n if (typeof fn !== 'function') {\n return fn;\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 // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\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 /* eslint-disable prefer-rest-params */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sentryWrapped = function () {\n var args = Array.prototype.slice.call(arguments);\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n var wrappedArguments = args.map(function (arg) { return wrap(arg, options); });\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 }\n catch (ex) {\n ignoreNextOnError();\n withScope(function (scope) {\n scope.addEventProcessor(function (event) {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n event.extra = __assign(__assign({}, event.extra), { arguments: args });\n return event;\n });\n captureException(ex);\n });\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\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 }\n catch (_oO) { } // eslint-disable-line no-empty\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 addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\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: function () {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n }\n catch (_oO) { }\n return sentryWrapped;\n}\n/**\n * Injects the Report Dialog script\n * @hidden\n */\nexport function injectReportDialog(options) {\n if (options === void 0) { options = {}; }\n if (!global.document) {\n return;\n }\n if (!options.eventId) {\n IS_DEBUG_BUILD && logger.error('Missing eventId option in showReportDialog call');\n return;\n }\n if (!options.dsn) {\n IS_DEBUG_BUILD && logger.error('Missing dsn option in showReportDialog call');\n return;\n }\n var script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(options.dsn, options);\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n var injectionPoint = global.document.head || global.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n }\n}\n//# sourceMappingURL=helpers.js.map","export var SeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug', 'critical'];\n//# sourceMappingURL=enums.js.map","import { Severity } from '@sentry/types';\nimport { SeverityLevels } from './enums';\nfunction isSupportedSeverity(level) {\n return SeverityLevels.indexOf(level) !== -1;\n}\n/**\n * Converts a string-based level into a {@link Severity}.\n *\n * @param level string representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level) {\n if (level === 'warn')\n return Severity.Warning;\n if (isSupportedSeverity(level)) {\n return level;\n }\n return Severity.Log;\n}\n//# sourceMappingURL=severity.js.map","import { __assign } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addInstrumentationHandler, getEventDescription, getGlobalObject, htmlTreeAsString, parseUrl, safeJoin, severityFromString, } from '@sentry/utils';\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nvar Breadcrumbs = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function Breadcrumbs(options) {\n /**\n * @inheritDoc\n */\n this.name = Breadcrumbs.id;\n this._options = __assign({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options);\n }\n /**\n * Create a breadcrumb of `sentry` from the events themselves\n */\n Breadcrumbs.prototype.addSentryBreadcrumb = function (event) {\n if (!this._options.sentry) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"sentry.\" + (event.type === 'transaction' ? 'transaction' : 'event'),\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n }, {\n event: event,\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 Breadcrumbs.prototype.setupOnce = function () {\n if (this._options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this._options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this._options.dom));\n }\n if (this._options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this._options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this._options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n };\n /**\n * @inheritDoc\n */\n Breadcrumbs.id = 'Breadcrumbs';\n return Breadcrumbs;\n}());\nexport { Breadcrumbs };\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData) {\n var target;\n var keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\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 }\n catch (e) {\n target = '';\n }\n if (target.length === 0) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"ui.\" + handlerData.name,\n message: target,\n }, {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n });\n }\n return _innerDomBreadcrumb;\n}\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData) {\n var breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n 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 }\n else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData) {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n var _a = handlerData.xhr.__sentry_xhr__ || {}, method = _a.method, url = _a.url, status_code = _a.status_code, body = _a.body;\n getCurrentHub().addBreadcrumb({\n category: 'xhr',\n data: {\n method: method,\n url: url,\n status_code: status_code,\n },\n type: 'http',\n }, {\n xhr: handlerData.xhr,\n input: body,\n });\n return;\n }\n}\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData) {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n 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 if (handlerData.error) {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: handlerData.fetchData,\n level: Severity.Error,\n type: 'http',\n }, {\n data: handlerData.error,\n input: handlerData.args,\n });\n }\n else {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: __assign(__assign({}, handlerData.fetchData), { status_code: handlerData.response.status }),\n type: 'http',\n }, {\n input: handlerData.args,\n response: handlerData.response,\n });\n }\n}\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData) {\n var global = getGlobalObject();\n var from = handlerData.from;\n var to = handlerData.to;\n var parsedLoc = parseUrl(global.location.href);\n var parsedFrom = parseUrl(from);\n var parsedTo = parseUrl(to);\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\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 getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from: from,\n to: to,\n },\n });\n}\n//# sourceMappingURL=breadcrumbs.js.map","import { logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from '../flags';\n/** Deduplication filter */\nvar Dedupe = /** @class */ (function () {\n function Dedupe() {\n /**\n * @inheritDoc\n */\n this.name = Dedupe.id;\n }\n /**\n * @inheritDoc\n */\n Dedupe.prototype.setupOnce = function (addGlobalEventProcessor, getCurrentHub) {\n addGlobalEventProcessor(function (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 IS_DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n }\n catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n };\n /**\n * @inheritDoc\n */\n Dedupe.id = 'Dedupe';\n return Dedupe;\n}());\nexport { Dedupe };\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n return false;\n}\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n var currentMessage = currentEvent.message;\n var previousMessage = previousEvent.message;\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\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 if (currentMessage !== previousMessage) {\n return false;\n }\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n return true;\n}\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n var previousException = _getExceptionFromEvent(previousEvent);\n var currentException = _getExceptionFromEvent(currentEvent);\n if (!previousException || !currentException) {\n return false;\n }\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n return true;\n}\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n var currentFrames = _getFramesFromEvent(currentEvent);\n var previousFrames = _getFramesFromEvent(previousEvent);\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\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 currentFrames = currentFrames;\n previousFrames = previousFrames;\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n // Otherwise, compare the two\n for (var i = 0; i < previousFrames.length; i++) {\n var frameA = previousFrames[i];\n var frameB = currentFrames[i];\n if (frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function) {\n return false;\n }\n }\n return true;\n}\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n var currentFingerprint = currentEvent.fingerprint;\n var previousFingerprint = previousEvent.fingerprint;\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\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 currentFingerprint = currentFingerprint;\n previousFingerprint = previousFingerprint;\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n }\n catch (_oO) {\n return false;\n }\n}\n/** JSDoc */\nfunction _getExceptionFromEvent(event) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n/** JSDoc */\nfunction _getFramesFromEvent(event) {\n var exception = event.exception;\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n }\n catch (_oO) {\n return undefined;\n }\n }\n else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n}\n//# sourceMappingURL=dedupe.js.map","import { __assign, __read } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addInstrumentationHandler, getLocationHref, isErrorEvent, isPrimitive, isString, logger, } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { shouldIgnoreOnError } from '../helpers';\n/** Global handlers */\nvar GlobalHandlers = /** @class */ (function () {\n /** JSDoc */\n function GlobalHandlers(options) {\n /**\n * @inheritDoc\n */\n this.name = GlobalHandlers.id;\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 this._installFunc = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n this._options = __assign({ onerror: true, onunhandledrejection: true }, options);\n }\n /**\n * @inheritDoc\n */\n GlobalHandlers.prototype.setupOnce = function () {\n Error.stackTraceLimit = 50;\n var options = this._options;\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (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 /**\n * @inheritDoc\n */\n GlobalHandlers.id = 'GlobalHandlers';\n return GlobalHandlers;\n}());\nexport { GlobalHandlers };\n/** JSDoc */\nfunction _installGlobalOnErrorHandler() {\n addInstrumentationHandler('error', \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function (data) {\n var _a = __read(getHubAndAttachStacktrace(), 2), hub = _a[0], attachStacktrace = _a[1];\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n var msg = data.msg, url = data.url, line = data.line, column = data.column, error = data.error;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n var event = error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(eventFromUnknownInput(error || msg, undefined, attachStacktrace, false), url, line, column);\n event.level = Severity.Error;\n addMechanismAndCapture(hub, error, event, 'onerror');\n });\n}\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler() {\n addInstrumentationHandler('unhandledrejection', \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function (e) {\n var _a = __read(getHubAndAttachStacktrace(), 2), hub = _a[0], attachStacktrace = _a[1];\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n var error = e;\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 }\n catch (_oO) {\n // no-empty\n }\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n var event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(error, undefined, attachStacktrace, true);\n event.level = Severity.Error;\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\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 * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg, url, line, column) {\n var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n // If 'message' is ErrorEvent, get real message from inside\n var message = isErrorEvent(msg) ? msg.message : msg;\n var name = 'Error';\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n var event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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 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 // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno: colno,\n filename: filename,\n function: '?',\n in_app: true,\n lineno: lineno,\n });\n }\n return event;\n}\nfunction globalHandlerLog(type) {\n IS_DEBUG_BUILD && logger.log(\"Global Handler attached: \" + type);\n}\nfunction addMechanismAndCapture(hub, error, event, type) {\n addExceptionMechanism(event, {\n handled: false,\n type: type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\nfunction getHubAndAttachStacktrace() {\n var hub = getCurrentHub();\n var client = hub.getClient();\n var attachStacktrace = client && client.getOptions().attachStacktrace;\n return [hub, attachStacktrace];\n}\n//# sourceMappingURL=globalhandlers.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder';\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n/** Adds SDK info to an event. */\nvar LinkedErrors = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function LinkedErrors(options) {\n if (options === void 0) { options = {}; }\n /**\n * @inheritDoc\n */\n this.name = LinkedErrors.id;\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event, hint) {\n var self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(self._key, self._limit, event, hint) : event;\n });\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.id = 'LinkedErrors';\n return LinkedErrors;\n}());\nexport { LinkedErrors };\n/**\n * @inheritDoc\n */\nexport function _handler(key, limit, event, hint) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n var linkedErrors = _walkErrorTree(limit, hint.originalException, key);\n event.exception.values = __spread(linkedErrors, event.exception.values);\n return event;\n}\n/**\n * JSDOC\n */\nexport function _walkErrorTree(limit, error, key, stack) {\n if (stack === void 0) { stack = []; }\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n var exception = exceptionFromError(error[key]);\n return _walkErrorTree(limit, error[key], key, __spread([exception], stack));\n}\n//# sourceMappingURL=linkederrors.js.map","import { __assign } from \"tslib\";\nimport { fill, getFunctionName, getGlobalObject, getOriginalFunction } from '@sentry/utils';\nimport { wrap } from '../helpers';\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/** Wrap timer functions and event targets to catch errors and provide better meta data */\nvar TryCatch = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function TryCatch(options) {\n /**\n * @inheritDoc\n */\n this.name = TryCatch.id;\n this._options = __assign({ XMLHttpRequest: true, eventTarget: true, requestAnimationFrame: true, setInterval: true, setTimeout: true }, options);\n }\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n TryCatch.prototype.setupOnce = function () {\n var global = getGlobalObject();\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\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 /**\n * @inheritDoc\n */\n TryCatch.id = 'TryCatch';\n return TryCatch;\n}());\nexport { TryCatch };\n/** JSDoc */\nfunction _wrapTimeFunction(original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\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/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (callback) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n/** JSDoc */\nfunction _wrapXHR(originalSend) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n xmlHttpRequestProps.forEach(function (prop) {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original) {\n var wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\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 // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n return originalSend.apply(this, args);\n };\n}\n/** JSDoc */\nfunction _wrapEventTarget(target) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var global = getGlobalObject();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n try {\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n }\n catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n fill(proto, 'removeEventListener', function (originalRemoveEventListener) {\n return function (eventName, fn, options) {\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 }\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//# sourceMappingURL=trycatch.js.map","import { __assign } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nvar global = getGlobalObject();\n/** UserAgent */\nvar UserAgent = /** @class */ (function () {\n function UserAgent() {\n /**\n * @inheritDoc\n */\n this.name = UserAgent.id;\n }\n /**\n * @inheritDoc\n */\n UserAgent.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n if (getCurrentHub().getIntegration(UserAgent)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n // 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 var referrer = (global.document || {}).referrer;\n var userAgent = (global.navigator || {}).userAgent;\n var headers = __assign(__assign(__assign({}, (event.request && event.request.headers)), (referrer && { Referer: referrer })), (userAgent && { 'User-Agent': userAgent }));\n var request = __assign(__assign({}, (url && { url: url })), { headers: headers });\n return __assign(__assign({}, event), { request: request });\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n UserAgent.id = 'UserAgent';\n return UserAgent;\n}());\nexport { UserAgent };\n//# sourceMappingURL=useragent.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { addNonEnumerableProperty, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from './flags';\nexport var installedIntegrations = [];\n/**\n * @private\n */\nfunction filterDuplicates(integrations) {\n return integrations.reduce(function (acc, integrations) {\n if (acc.every(function (accIntegration) { return integrations.name !== accIntegration.name; })) {\n acc.push(integrations);\n }\n return acc;\n }, []);\n}\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options) {\n var defaultIntegrations = (options.defaultIntegrations && __spread(options.defaultIntegrations)) || [];\n var userIntegrations = options.integrations;\n var integrations = __spread(filterDuplicates(defaultIntegrations));\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = __spread(integrations.filter(function (integrations) {\n return userIntegrations.every(function (userIntegration) { return userIntegration.name !== integrations.name; });\n }), filterDuplicates(userIntegrations));\n }\n else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n // Make sure that if present, `Debug` integration will always run last\n var integrationsNames = integrations.map(function (i) { return i.name; });\n var alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push.apply(integrations, __spread(integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1)));\n }\n return integrations;\n}\n/** Setup given integration */\nexport function setupIntegration(integration) {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n IS_DEBUG_BUILD && logger.log(\"Integration installed: \" + integration.name);\n}\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options) {\n var integrations = {};\n getIntegrationsToSetup(options).forEach(function (integration) {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n // set the `initialized` flag so we don't run through the process again unecessarily; use `Object.defineProperty`\n // because by default it creates a property which is nonenumerable, which we want since `initialized` shouldn't be\n // considered a member of the index the way the actual integrations are\n addNonEnumerableProperty(integrations, 'initialized', true);\n return integrations;\n}\n//# sourceMappingURL=integration.js.map","import { __assign, __read, __spread, __values } from \"tslib\";\n/* eslint-disable max-lines */\nimport { Scope } from '@sentry/hub';\nimport { checkOrSetAlreadyCaught, dateTimestampInSeconds, isPlainObject, isPrimitive, isThenable, logger, makeDsn, normalize, rejectedSyncPromise, resolvedSyncPromise, SentryError, SyncPromise, truncate, uuid4, } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { setupIntegrations } from './integration';\nvar ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nvar BaseClient = /** @class */ (function () {\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n function BaseClient(backendClass, options) {\n /** Array of used integrations. */\n this._integrations = {};\n /** Number of calls being processed */\n this._numProcessing = 0;\n this._backend = new backendClass(options);\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n }\n }\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n BaseClient.prototype.captureException = function (exception, hint, scope) {\n var _this = this;\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n IS_DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n var eventId = hint && hint.event_id;\n this._process(this._getBackend()\n .eventFromException(exception, hint)\n .then(function (event) { return _this._captureEvent(event, hint, scope); })\n .then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureMessage = function (message, level, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n var promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(String(message), level, hint)\n : this._getBackend().eventFromException(message, hint);\n this._process(promisedEvent\n .then(function (event) { return _this._captureEvent(event, hint, scope); })\n .then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureEvent = function (event, hint, scope) {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n IS_DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n var eventId = hint && hint.event_id;\n this._process(this._captureEvent(event, hint, scope).then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureSession = function (session) {\n if (!this._isEnabled()) {\n IS_DEBUG_BUILD && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n if (!(typeof session.release === 'string')) {\n IS_DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n }\n else {\n this._sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n session.update({ init: false });\n }\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getDsn = function () {\n return this._dsn;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getOptions = function () {\n return this._options;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getTransport = function () {\n return this._getBackend().getTransport();\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.flush = function (timeout) {\n var _this = this;\n return this._isClientDoneProcessing(timeout).then(function (clientFinished) {\n return _this.getTransport()\n .close(timeout)\n .then(function (transportFlushed) { return clientFinished && transportFlushed; });\n });\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.close = function (timeout) {\n var _this = this;\n return this.flush(timeout).then(function (result) {\n _this.getOptions().enabled = false;\n return result;\n });\n };\n /**\n * Sets up the integrations\n */\n BaseClient.prototype.setupIntegrations = function () {\n if (this._isEnabled() && !this._integrations.initialized) {\n this._integrations = setupIntegrations(this._options);\n }\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getIntegration = function (integration) {\n try {\n return this._integrations[integration.id] || null;\n }\n catch (_oO) {\n IS_DEBUG_BUILD && logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Client\");\n return null;\n }\n };\n /** Updates existing session based on the provided event */\n BaseClient.prototype._updateSessionFromEvent = function (session, event) {\n var e_1, _a;\n var crashed = false;\n var errored = false;\n var exceptions = event.exception && event.exception.values;\n if (exceptions) {\n errored = true;\n try {\n for (var exceptions_1 = __values(exceptions), exceptions_1_1 = exceptions_1.next(); !exceptions_1_1.done; exceptions_1_1 = exceptions_1.next()) {\n var ex = exceptions_1_1.value;\n var mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (exceptions_1_1 && !exceptions_1_1.done && (_a = exceptions_1.return)) _a.call(exceptions_1);\n }\n finally { if (e_1) throw e_1.error; }\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 if (shouldUpdateAndSend) {\n session.update(__assign(__assign({}, (crashed && { status: 'crashed' })), { errors: session.errors || Number(errored || crashed) }));\n this.captureSession(session);\n }\n };\n /** Deliver captured session to Sentry */\n BaseClient.prototype._sendSession = function (session) {\n this._getBackend().sendSession(session);\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 BaseClient.prototype._isClientDoneProcessing = function (timeout) {\n var _this = this;\n return new SyncPromise(function (resolve) {\n var ticked = 0;\n var tick = 1;\n var interval = setInterval(function () {\n if (_this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n }\n else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n };\n /** Returns the current backend. */\n BaseClient.prototype._getBackend = function () {\n return this._backend;\n };\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n BaseClient.prototype._isEnabled = function () {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\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 BaseClient.prototype._prepareEvent = function (event, scope, hint) {\n var _this = this;\n var _a = this.getOptions(), _b = _a.normalizeDepth, normalizeDepth = _b === void 0 ? 3 : _b, _c = _a.normalizeMaxBreadth, normalizeMaxBreadth = _c === void 0 ? 1000 : _c;\n var prepared = __assign(__assign({}, event), { event_id: event.event_id || (hint && hint.event_id ? hint.event_id : uuid4()), timestamp: event.timestamp || dateTimestampInSeconds() });\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\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 var finalScope = scope;\n if (hint && hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n // We prepare the result here with a resolved Event.\n var result = resolvedSyncPromise(prepared);\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n return result.then(function (evt) {\n if (evt) {\n // TODO this is more of the hack trying to solve https://github.com/getsentry/sentry-javascript/issues/2809\n // it is only attached as extra data to the event if the event somehow skips being normalized\n evt.sdkProcessingMetadata = __assign(__assign({}, evt.sdkProcessingMetadata), { normalizeDepth: normalize(normalizeDepth) + \" (\" + typeof normalizeDepth + \")\" });\n }\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return _this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\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 BaseClient.prototype._normalizeEvent = function (event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n var normalized = __assign(__assign(__assign(__assign(__assign({}, event), (event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(function (b) { return (__assign(__assign({}, b), (b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }))); }),\n })), (event.user && {\n user: normalize(event.user, depth, maxBreadth),\n })), (event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n })), (event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }));\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n normalized.contexts.trace = event.contexts.trace;\n }\n normalized.sdkProcessingMetadata = __assign(__assign({}, normalized.sdkProcessingMetadata), { baseClientNormalized: true });\n return normalized;\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 BaseClient.prototype._applyClientOptions = function (event) {\n var options = this.getOptions();\n var environment = options.environment, release = options.release, dist = options.dist, _a = options.maxValueLength, maxValueLength = _a === void 0 ? 250 : _a;\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\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 var request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\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 BaseClient.prototype._applyIntegrationsMetadata = function (event) {\n var integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = __spread((event.sdk.integrations || []), integrationsArray);\n }\n };\n /**\n * Tells the backend to send this event\n * @param event The Sentry event to send\n */\n BaseClient.prototype._sendEvent = function (event) {\n this._getBackend().sendEvent(event);\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 BaseClient.prototype._captureEvent = function (event, hint, scope) {\n return this._processEvent(event, hint, scope).then(function (finalEvent) {\n return finalEvent.event_id;\n }, function (reason) {\n IS_DEBUG_BUILD && logger.error(reason);\n return undefined;\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 BaseClient.prototype._processEvent = function (event, hint, scope) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = this.getOptions(), beforeSend = _a.beforeSend, sampleRate = _a.sampleRate;\n var transport = this.getTransport();\n function recordLostEvent(outcome, category) {\n if (transport.recordLostEvent) {\n transport.recordLostEvent(outcome, category);\n }\n }\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.'));\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 recordLostEvent('sample_rate', 'event');\n return rejectedSyncPromise(new SentryError(\"Discarding event because it's not included in the random sample (sampling rate = \" + sampleRate + \")\"));\n }\n return this._prepareEvent(event, scope, hint)\n .then(function (prepared) {\n if (prepared === null) {\n recordLostEvent('event_processor', event.type || 'event');\n throw new SentryError('An event processor returned null, will not send event.');\n }\n var isInternalException = hint && hint.data && hint.data.__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n var beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(function (processedEvent) {\n if (processedEvent === null) {\n recordLostEvent('before_send', event.type || 'event');\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n var session = scope && scope.getSession && scope.getSession();\n if (!isTransaction && session) {\n _this._updateSessionFromEvent(session, processedEvent);\n }\n _this._sendEvent(processedEvent);\n return processedEvent;\n })\n .then(null, function (reason) {\n if (reason instanceof SentryError) {\n throw reason;\n }\n _this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\"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 * Occupies the client with processing and event\n */\n BaseClient.prototype._process = function (promise) {\n var _this = this;\n this._numProcessing += 1;\n void promise.then(function (value) {\n _this._numProcessing -= 1;\n return value;\n }, function (reason) {\n _this._numProcessing -= 1;\n return reason;\n });\n };\n return BaseClient;\n}());\nexport { BaseClient };\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(function (event) {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n }, function (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//# sourceMappingURL=baseclient.js.map","import { __read, __spread } from \"tslib\";\nimport { isPrimitive } from './is';\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 */\nexport function createEnvelope(headers, items) {\n if (items === void 0) { items = []; }\n return [headers, items];\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 */\nexport function addItemToEnvelope(envelope, newItem) {\n var _a = __read(envelope, 2), headers = _a[0], items = _a[1];\n return [headers, __spread(items, [newItem])];\n}\n/**\n * Get the type of the envelope. Grabs the type from the first envelope item.\n */\nexport function getEnvelopeType(envelope) {\n var _a = __read(envelope, 2), _b = __read(_a[1], 1), _c = __read(_b[0], 1), firstItemHeader = _c[0];\n return firstItemHeader.type;\n}\n/**\n * Serializes an envelope into a string.\n */\nexport function serializeEnvelope(envelope) {\n var _a = __read(envelope, 2), headers = _a[0], items = _a[1];\n var serializedHeaders = JSON.stringify(headers);\n // Have to cast items to any here since Envelope is a union type\n // Fixed in Typescript 4.2\n // TODO: Remove any[] cast when we upgrade to TS 4.2\n // https://github.com/microsoft/TypeScript/issues/36390\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return items.reduce(function (acc, item) {\n var _a = __read(item, 2), itemHeaders = _a[0], payload = _a[1];\n // We do not serialize payloads that are primitives\n var serializedPayload = isPrimitive(payload) ? String(payload) : JSON.stringify(payload);\n return acc + \"\\n\" + JSON.stringify(itemHeaders) + \"\\n\" + serializedPayload;\n }, serializedHeaders);\n}\n//# sourceMappingURL=envelope.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { createEnvelope, dsnToString, normalize, serializeEnvelope } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth, getStoreEndpointWithUrlEncodedAuth } from './api';\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(api) {\n if (!api.metadata || !api.metadata.sdk) {\n return;\n }\n var _a = api.metadata.sdk, name = _a.name, version = _a.version;\n return { name: name, version: version };\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 = __spread((event.sdk.integrations || []), (sdkInfo.integrations || []));\n event.sdk.packages = __spread((event.sdk.packages || []), (sdkInfo.packages || []));\n return event;\n}\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(session, api) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n var envelopeHeaders = __assign(__assign({ sent_at: new Date().toISOString() }, (sdkInfo && { sdk: sdkInfo })), (!!api.tunnel && { dsn: dsnToString(api.dsn) }));\n // I know this is hacky but we don't want to add `sessions` to request type since it's never rate limited\n var type = 'aggregates' in session ? 'sessions' : 'session';\n // TODO (v7) Have to cast type because envelope items do not accept a `SentryRequestType`\n var envelopeItem = [{ type: type }, session];\n var envelope = createEnvelope(envelopeHeaders, [envelopeItem]);\n return [envelope, type];\n}\n/** Creates a SentryRequest from a Session. */\nexport function sessionToSentryRequest(session, api) {\n var _a = __read(createSessionEnvelope(session, api), 2), envelope = _a[0], type = _a[1];\n return {\n body: serializeEnvelope(envelope),\n type: type,\n url: getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel),\n };\n}\n/**\n * Create an Envelope from an event. Note that this is duplicated from below,\n * but on purpose as this will be refactored in v7.\n */\nexport function createEventEnvelope(event, api) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n var eventType = event.type || 'event';\n var transactionSampling = (event.sdkProcessingMetadata || {}).transactionSampling;\n var _a = transactionSampling || {}, samplingMethod = _a.method, sampleRate = _a.rate;\n // TODO: Below is a temporary hack in order to debug a serialization error - see\n // https://github.com/getsentry/sentry-javascript/issues/2809,\n // https://github.com/getsentry/sentry-javascript/pull/4425, and\n // https://github.com/getsentry/sentry-javascript/pull/4574.\n //\n // TL; DR: even though we normalize all events (which should prevent this), something is causing `JSON.stringify` to\n // throw a circular reference error.\n //\n // When it's time to remove it:\n // 1. Delete everything between here and where the request object `req` is created, EXCEPT the line deleting\n // `sdkProcessingMetadata`\n // 2. Restore the original version of the request body, which is commented out\n // 3. Search for either of the PR URLs above and pull out the companion hacks in the browser playwright tests and the\n // baseClient tests in this package\n enhanceEventWithSdkInfo(event, api.metadata.sdk);\n event.tags = event.tags || {};\n event.extra = event.extra || {};\n // In theory, all events should be marked as having gone through normalization and so\n // we should never set this tag/extra data\n if (!(event.sdkProcessingMetadata && event.sdkProcessingMetadata.baseClientNormalized)) {\n event.tags.skippedNormalization = true;\n event.extra.normalizeDepth = event.sdkProcessingMetadata ? event.sdkProcessingMetadata.normalizeDepth : 'unset';\n }\n // prevent this data from being sent to sentry\n // TODO: This is NOT part of the hack - DO NOT DELETE\n delete event.sdkProcessingMetadata;\n var envelopeHeaders = __assign(__assign({ event_id: event.event_id, sent_at: new Date().toISOString() }, (sdkInfo && { sdk: sdkInfo })), (!!api.tunnel && { dsn: dsnToString(api.dsn) }));\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/** Creates a SentryRequest from an event. */\nexport function eventToSentryRequest(event, api) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n var eventType = event.type || 'event';\n var useEnvelope = eventType === 'transaction' || !!api.tunnel;\n var transactionSampling = (event.sdkProcessingMetadata || {}).transactionSampling;\n var _a = transactionSampling || {}, samplingMethod = _a.method, sampleRate = _a.rate;\n // TODO: Below is a temporary hack in order to debug a serialization error - see\n // https://github.com/getsentry/sentry-javascript/issues/2809,\n // https://github.com/getsentry/sentry-javascript/pull/4425, and\n // https://github.com/getsentry/sentry-javascript/pull/4574.\n //\n // TL; DR: even though we normalize all events (which should prevent this), something is causing `JSON.stringify` to\n // throw a circular reference error.\n //\n // When it's time to remove it:\n // 1. Delete everything between here and where the request object `req` is created, EXCEPT the line deleting\n // `sdkProcessingMetadata`\n // 2. Restore the original version of the request body, which is commented out\n // 3. Search for either of the PR URLs above and pull out the companion hacks in the browser playwright tests and the\n // baseClient tests in this package\n enhanceEventWithSdkInfo(event, api.metadata.sdk);\n event.tags = event.tags || {};\n event.extra = event.extra || {};\n // In theory, all events should be marked as having gone through normalization and so\n // we should never set this tag/extra data\n if (!(event.sdkProcessingMetadata && event.sdkProcessingMetadata.baseClientNormalized)) {\n event.tags.skippedNormalization = true;\n event.extra.normalizeDepth = event.sdkProcessingMetadata ? event.sdkProcessingMetadata.normalizeDepth : 'unset';\n }\n // prevent this data from being sent to sentry\n // TODO: This is NOT part of the hack - DO NOT DELETE\n delete event.sdkProcessingMetadata;\n var body;\n try {\n // 99.9% of events should get through just fine - no change in behavior for them\n body = JSON.stringify(event);\n }\n catch (err) {\n // Record data about the error without replacing original event data, then force renormalization\n event.tags.JSONStringifyError = true;\n event.extra.JSONStringifyError = err;\n try {\n body = JSON.stringify(normalize(event));\n }\n catch (newErr) {\n // At this point even renormalization hasn't worked, meaning something about the event data has gone very wrong.\n // Time to cut our losses and record only the new error. With luck, even in the problematic cases we're trying to\n // debug with this hack, we won't ever land here.\n var innerErr = newErr;\n body = JSON.stringify({\n message: 'JSON.stringify error after renormalization',\n // setting `extra: { innerErr }` here for some reason results in an empty object, so unpack manually\n extra: { message: innerErr.message, stack: innerErr.stack },\n });\n }\n }\n var req = {\n // this is the relevant line of code before the hack was added, to make it easy to undo said hack once we've solved\n // the mystery\n // body: JSON.stringify(sdkInfo ? enhanceEventWithSdkInfo(event, api.metadata.sdk) : event),\n body: body,\n type: eventType,\n url: useEnvelope\n ? getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel)\n : getStoreEndpointWithUrlEncodedAuth(api.dsn),\n };\n // https://develop.sentry.dev/sdk/envelopes/\n // Since we don't need to manipulate envelopes nor store them, there is no\n // exported concept of an Envelope with operations including serialization and\n // deserialization. Instead, we only implement a minimal subset of the spec to\n // serialize events inline here.\n if (useEnvelope) {\n var envelopeHeaders = __assign(__assign({ event_id: event.event_id, sent_at: new Date().toISOString() }, (sdkInfo && { sdk: sdkInfo })), (!!api.tunnel && { dsn: dsnToString(api.dsn) }));\n var eventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n req.body,\n ];\n var envelope = createEnvelope(envelopeHeaders, [eventItem]);\n req.body = serializeEnvelope(envelope);\n }\n return req;\n}\n//# sourceMappingURL=request.js.map","import { resolvedSyncPromise } from '@sentry/utils';\n/** Noop transport */\nvar NoopTransport = /** @class */ (function () {\n function NoopTransport() {\n }\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.sendEvent = function (_) {\n return resolvedSyncPromise({\n reason: 'NoopTransport: Event has been skipped because no Dsn is configured.',\n status: 'skipped',\n });\n };\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.close = function (_) {\n return resolvedSyncPromise(true);\n };\n return NoopTransport;\n}());\nexport { NoopTransport };\n//# sourceMappingURL=noop.js.map","import { __read } from \"tslib\";\nimport { logger, SentryError } from '@sentry/utils';\nimport { initAPIDetails } from './api';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { createEventEnvelope, createSessionEnvelope } from './request';\nimport { NoopTransport } from './transports/noop';\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nvar BaseBackend = /** @class */ (function () {\n /** Creates a new backend instance. */\n function BaseBackend(options) {\n this._options = options;\n if (!this._options.dsn) {\n IS_DEBUG_BUILD && logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n BaseBackend.prototype.eventFromException = function (_exception, _hint) {\n throw new SentryError('Backend has to implement `eventFromException` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.sendEvent = function (event) {\n // TODO(v7): Remove the if-else\n if (this._newTransport &&\n this._options.dsn &&\n this._options._experiments &&\n this._options._experiments.newTransport) {\n var api = initAPIDetails(this._options.dsn, this._options._metadata, this._options.tunnel);\n var env = createEventEnvelope(event, api);\n void this._newTransport.send(env).then(null, function (reason) {\n IS_DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n }\n else {\n void this._transport.sendEvent(event).then(null, function (reason) {\n IS_DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n }\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.sendSession = function (session) {\n if (!this._transport.sendSession) {\n IS_DEBUG_BUILD && logger.warn(\"Dropping session because custom transport doesn't implement sendSession\");\n return;\n }\n // TODO(v7): Remove the if-else\n if (this._newTransport &&\n this._options.dsn &&\n this._options._experiments &&\n this._options._experiments.newTransport) {\n var api = initAPIDetails(this._options.dsn, this._options._metadata, this._options.tunnel);\n var _a = __read(createSessionEnvelope(session, api), 1), env = _a[0];\n void this._newTransport.send(env).then(null, function (reason) {\n IS_DEBUG_BUILD && logger.error('Error while sending session:', reason);\n });\n }\n else {\n void this._transport.sendSession(session).then(null, function (reason) {\n IS_DEBUG_BUILD && logger.error('Error while sending session:', reason);\n });\n }\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.getTransport = function () {\n return this._transport;\n };\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n BaseBackend.prototype._setupTransport = function () {\n return new NoopTransport();\n };\n return BaseBackend;\n}());\nexport { BaseBackend };\n//# sourceMappingURL=basebackend.js.map","import { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\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 */\nexport function makePromiseBuffer(limit) {\n var buffer = [];\n function isReady() {\n return limit === undefined || buffer.length < limit;\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 * 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 due to buffer limit reached.'));\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(function () { return 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, function () {\n return remove(task).then(null, function () {\n // We have to add another catch here because `remove()` starts a new promise chain.\n });\n });\n return task;\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(function (resolve, reject) {\n var counter = buffer.length;\n if (!counter) {\n return resolve(true);\n }\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n var capturedSetTimeout = setTimeout(function () {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(function (item) {\n void resolvedSyncPromise(item).then(function () {\n // eslint-disable-next-line no-plusplus\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n return {\n $: buffer,\n add: add,\n drain: drain,\n };\n}\n//# sourceMappingURL=promisebuffer.js.map","import { __assign, __values } from \"tslib\";\nexport var DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\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 */\nexport function parseRetryAfterHeader(header, now) {\n if (now === void 0) { now = Date.now(); }\n var headerDelay = parseInt(\"\" + header, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n var headerDate = Date.parse(\"\" + header);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n return DEFAULT_RETRY_AFTER;\n}\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nexport function disabledUntil(limits, category) {\n return limits[category] || limits.all || 0;\n}\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits, category, now) {\n if (now === void 0) { now = Date.now(); }\n return disabledUntil(limits, category) > now;\n}\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nexport function updateRateLimits(limits, headers, now) {\n var e_1, _a, e_2, _b;\n if (now === void 0) { now = Date.now(); }\n var updatedRateLimits = __assign({}, limits);\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n var rateLimitHeader = headers['x-sentry-rate-limits'];\n var retryAfterHeader = headers['retry-after'];\n if (rateLimitHeader) {\n try {\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 _c = __values(rateLimitHeader.trim().split(',')), _d = _c.next(); !_d.done; _d = _c.next()) {\n var limit = _d.value;\n var parameters = limit.split(':', 2);\n var headerDelay = parseInt(parameters[0], 10);\n var delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!parameters[1]) {\n updatedRateLimits.all = now + delay;\n }\n else {\n try {\n for (var _e = (e_2 = void 0, __values(parameters[1].split(';'))), _f = _e.next(); !_f.done; _f = _e.next()) {\n var category = _f.value;\n updatedRateLimits[category] = now + delay;\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n }\n return updatedRateLimits;\n}\n//# sourceMappingURL=ratelimit.js.map","/**\n * Converts an HTTP status code to sentry status {@link EventStatus}.\n *\n * @param code number HTTP status code\n * @returns EventStatus\n */\nexport function eventStatusFromHttpCode(code) {\n if (code >= 200 && code < 300) {\n return 'success';\n }\n if (code === 429) {\n return 'rate_limit';\n }\n if (code >= 400 && code < 500) {\n return 'invalid';\n }\n if (code >= 500) {\n return 'failed';\n }\n return 'unknown';\n}\n//# sourceMappingURL=status.js.map","import { disabledUntil, eventStatusFromHttpCode, getEnvelopeType, isRateLimited, makePromiseBuffer, rejectedSyncPromise, resolvedSyncPromise, serializeEnvelope, updateRateLimits, } from '@sentry/utils';\nexport var ERROR_TRANSPORT_CATEGORY = 'error';\nexport var TRANSACTION_TRANSPORT_CATEGORY = 'transaction';\nexport var ATTACHMENT_TRANSPORT_CATEGORY = 'attachment';\nexport var SESSION_TRANSPORT_CATEGORY = 'session';\nexport var DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n/**\n * Creates a `NewTransport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(options, makeRequest, buffer) {\n if (buffer === void 0) { buffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE); }\n var rateLimits = {};\n var flush = function (timeout) { return buffer.drain(timeout); };\n function send(envelope) {\n var envCategory = getEnvelopeType(envelope);\n var category = envCategory === 'event' ? 'error' : envCategory;\n var request = {\n category: category,\n body: serializeEnvelope(envelope),\n };\n // Don't add to buffer if transport is already rate-limited\n if (isRateLimited(rateLimits, category)) {\n return rejectedSyncPromise({\n status: 'rate_limit',\n reason: getRateLimitReason(rateLimits, category),\n });\n }\n var requestTask = function () {\n return makeRequest(request).then(function (_a) {\n var body = _a.body, headers = _a.headers, reason = _a.reason, statusCode = _a.statusCode;\n var status = eventStatusFromHttpCode(statusCode);\n if (headers) {\n rateLimits = updateRateLimits(rateLimits, headers);\n }\n if (status === 'success') {\n return resolvedSyncPromise({ status: status, reason: reason });\n }\n return rejectedSyncPromise({\n status: status,\n reason: reason ||\n body ||\n (status === 'rate_limit' ? getRateLimitReason(rateLimits, category) : 'Unknown transport error'),\n });\n });\n };\n return buffer.add(requestTask);\n }\n return {\n send: send,\n flush: flush,\n };\n}\nfunction getRateLimitReason(rateLimits, category) {\n return \"Too many \" + category + \" requests, backing off until: \" + new Date(disabledUntil(rateLimits, category)).toISOString();\n}\n//# sourceMappingURL=base.js.map","import { forget, getGlobalObject, isNativeFetch, logger, supportsFetch } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from '../flags';\nvar global = getGlobalObject();\nvar cachedFetchImpl;\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation() {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n /* eslint-disable @typescript-eslint/unbound-method */\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n var document = global.document;\n var fetchImpl = global.fetch;\n // eslint-disable-next-line deprecation/deprecation\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 }\n catch (e) {\n IS_DEBUG_BUILD &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n return (cachedFetchImpl = fetchImpl.bind(global));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nexport function sendReport(url, body) {\n var isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n var hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\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 return sendBeacon(url, body);\n }\n if (supportsFetch()) {\n var fetch_1 = getNativeFetchImplementation();\n return forget(fetch_1(url, {\n body: body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }));\n }\n}\n//# sourceMappingURL=utils.js.map","/**\n * Consumes the promise and logs the error when it rejects.\n * @param promise A promise to forget.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function forget(promise) {\n void promise.then(null, function (e) {\n // TODO: Use a better logging mechanism\n // eslint-disable-next-line no-console\n console.error(e);\n });\n}\n//# sourceMappingURL=async.js.map","import { __read } from \"tslib\";\nimport { eventToSentryRequest, getEnvelopeEndpointWithUrlEncodedAuth, getStoreEndpointWithUrlEncodedAuth, initAPIDetails, sessionToSentryRequest, } from '@sentry/core';\nimport { createClientReportEnvelope, disabledUntil, dsnToString, eventStatusFromHttpCode, getGlobalObject, isRateLimited, logger, makePromiseBuffer, serializeEnvelope, updateRateLimits, } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { sendReport } from './utils';\nfunction requestTypeToCategory(ty) {\n var tyStr = ty;\n return tyStr === 'event' ? 'error' : tyStr;\n}\nvar global = getGlobalObject();\n/** Base Transport class implementation */\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport(options) {\n var _this = this;\n this.options = options;\n /** A simple buffer holding all requests. */\n this._buffer = makePromiseBuffer(30);\n /** Locks transport after receiving rate limits in a response */\n this._rateLimits = {};\n this._outcomes = {};\n this._api = initAPIDetails(options.dsn, options._metadata, options.tunnel);\n // eslint-disable-next-line deprecation/deprecation\n this.url = getStoreEndpointWithUrlEncodedAuth(this._api.dsn);\n if (this.options.sendClientReports && global.document) {\n global.document.addEventListener('visibilitychange', function () {\n if (global.document.visibilityState === 'hidden') {\n _this._flushOutcomes();\n }\n });\n }\n }\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.sendEvent = function (event) {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n };\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.sendSession = function (session) {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n };\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.close = function (timeout) {\n return this._buffer.drain(timeout);\n };\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.recordLostEvent = function (reason, category) {\n var _a;\n if (!this.options.sendClientReports) {\n return;\n }\n // We want to track each category (event, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n var key = requestTypeToCategory(category) + \":\" + reason;\n IS_DEBUG_BUILD && logger.log(\"Adding outcome: \" + key);\n this._outcomes[key] = (_a = this._outcomes[key], (_a !== null && _a !== void 0 ? _a : 0)) + 1;\n };\n /**\n * Send outcomes as an envelope\n */\n BaseTransport.prototype._flushOutcomes = function () {\n if (!this.options.sendClientReports) {\n return;\n }\n var outcomes = this._outcomes;\n this._outcomes = {};\n // Nothing to send\n if (!Object.keys(outcomes).length) {\n IS_DEBUG_BUILD && logger.log('No outcomes to flush');\n return;\n }\n IS_DEBUG_BUILD && logger.log(\"Flushing outcomes:\\n\" + JSON.stringify(outcomes, null, 2));\n var url = getEnvelopeEndpointWithUrlEncodedAuth(this._api.dsn, this._api.tunnel);\n var discardedEvents = Object.keys(outcomes).map(function (key) {\n var _a = __read(key.split(':'), 2), category = _a[0], reason = _a[1];\n return {\n reason: reason,\n category: category,\n quantity: outcomes[key],\n };\n // TODO: Improve types on discarded_events to get rid of cast\n });\n var envelope = createClientReportEnvelope(discardedEvents, this._api.tunnel && dsnToString(this._api.dsn));\n try {\n sendReport(url, serializeEnvelope(envelope));\n }\n catch (e) {\n IS_DEBUG_BUILD && logger.error(e);\n }\n };\n /**\n * Handle Sentry repsonse for promise-based transports.\n */\n BaseTransport.prototype._handleResponse = function (_a) {\n var requestType = _a.requestType, response = _a.response, headers = _a.headers, resolve = _a.resolve, reject = _a.reject;\n var status = eventStatusFromHttpCode(response.status);\n this._rateLimits = updateRateLimits(this._rateLimits, headers);\n // eslint-disable-next-line deprecation/deprecation\n if (this._isRateLimited(requestType)) {\n IS_DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.warn(\"Too many \" + requestType + \" requests, backing off until: \" + this._disabledUntil(requestType));\n }\n if (status === 'success') {\n resolve({ status: status });\n return;\n }\n reject(response);\n };\n /**\n * Gets the time that given category is disabled until for rate limiting\n *\n * @deprecated Please use `disabledUntil` from @sentry/utils\n */\n BaseTransport.prototype._disabledUntil = function (requestType) {\n var category = requestTypeToCategory(requestType);\n return new Date(disabledUntil(this._rateLimits, category));\n };\n /**\n * Checks if a category is rate limited\n *\n * @deprecated Please use `isRateLimited` from @sentry/utils\n */\n BaseTransport.prototype._isRateLimited = function (requestType) {\n var category = requestTypeToCategory(requestType);\n return isRateLimited(this._rateLimits, category);\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\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 */\nexport function createClientReportEnvelope(discarded_events, dsn, timestamp) {\n var clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events: discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn: dsn } : {}, [clientReportItem]);\n}\n//# sourceMappingURL=clientreport.js.map","import { __extends } from \"tslib\";\nimport { SentryError, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\nimport { getNativeFetchImplementation } from './utils';\n/** `fetch` based transport */\nvar FetchTransport = /** @class */ (function (_super) {\n __extends(FetchTransport, _super);\n function FetchTransport(options, fetchImpl) {\n if (fetchImpl === void 0) { fetchImpl = getNativeFetchImplementation(); }\n var _this = _super.call(this, options) || this;\n _this._fetch = fetchImpl;\n return _this;\n }\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n FetchTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {\n var _this = this;\n // eslint-disable-next-line deprecation/deprecation\n if (this._isRateLimited(sentryRequest.type)) {\n this.recordLostEvent('ratelimit_backoff', sentryRequest.type);\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n // eslint-disable-next-line deprecation/deprecation\n reason: \"Transport for \" + sentryRequest.type + \" requests locked till \" + this._disabledUntil(sentryRequest.type) + \" due to too many requests.\",\n status: 429,\n });\n }\n var options = {\n body: sentryRequest.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : ''),\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n return this._buffer\n .add(function () {\n return new SyncPromise(function (resolve, reject) {\n void _this._fetch(sentryRequest.url, options)\n .then(function (response) {\n var headers = {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n };\n _this._handleResponse({\n requestType: sentryRequest.type,\n response: response,\n headers: headers,\n resolve: resolve,\n reject: reject,\n });\n })\n .catch(reject);\n });\n })\n .then(undefined, function (reason) {\n // It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.\n if (reason instanceof SentryError) {\n _this.recordLostEvent('queue_overflow', sentryRequest.type);\n }\n else {\n _this.recordLostEvent('network_error', sentryRequest.type);\n }\n throw reason;\n });\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","import { __extends } from \"tslib\";\nimport { SentryError, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\n/** `XHR` based transport */\nvar XHRTransport = /** @class */ (function (_super) {\n __extends(XHRTransport, _super);\n function XHRTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n XHRTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {\n var _this = this;\n // eslint-disable-next-line deprecation/deprecation\n if (this._isRateLimited(sentryRequest.type)) {\n this.recordLostEvent('ratelimit_backoff', sentryRequest.type);\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n // eslint-disable-next-line deprecation/deprecation\n reason: \"Transport for \" + sentryRequest.type + \" requests locked till \" + this._disabledUntil(sentryRequest.type) + \" due to too many requests.\",\n status: 429,\n });\n }\n return this._buffer\n .add(function () {\n return new SyncPromise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n var headers = {\n 'x-sentry-rate-limits': request.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': request.getResponseHeader('Retry-After'),\n };\n _this._handleResponse({ requestType: sentryRequest.type, response: request, headers: headers, resolve: resolve, reject: reject });\n }\n };\n request.open('POST', sentryRequest.url);\n for (var header in _this.options.headers) {\n if (Object.prototype.hasOwnProperty.call(_this.options.headers, header)) {\n request.setRequestHeader(header, _this.options.headers[header]);\n }\n }\n request.send(sentryRequest.body);\n });\n })\n .then(undefined, function (reason) {\n // It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.\n if (reason instanceof SentryError) {\n _this.recordLostEvent('queue_overflow', sentryRequest.type);\n }\n else {\n _this.recordLostEvent('network_error', sentryRequest.type);\n }\n throw reason;\n });\n };\n return XHRTransport;\n}(BaseTransport));\nexport { XHRTransport };\n//# sourceMappingURL=xhr.js.map","import { __assign, __extends } from \"tslib\";\nimport { BaseBackend, getEnvelopeEndpointWithUrlEncodedAuth, initAPIDetails } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { supportsFetch } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { FetchTransport, makeNewFetchTransport, makeNewXHRTransport, XHRTransport } from './transports';\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nvar BrowserBackend = /** @class */ (function (_super) {\n __extends(BrowserBackend, _super);\n function BrowserBackend() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromException = function (exception, hint) {\n return eventFromException(exception, hint, this._options.attachStacktrace);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromMessage = function (message, level, hint) {\n if (level === void 0) { level = Severity.Info; }\n return eventFromMessage(message, level, hint, this._options.attachStacktrace);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype._setupTransport = function () {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return _super.prototype._setupTransport.call(this);\n }\n var transportOptions = __assign(__assign({}, this._options.transportOptions), { dsn: this._options.dsn, tunnel: this._options.tunnel, sendClientReports: this._options.sendClientReports, _metadata: this._options._metadata });\n var api = initAPIDetails(transportOptions.dsn, transportOptions._metadata, transportOptions.tunnel);\n var url = getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel);\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n var requestOptions = __assign({}, transportOptions.fetchParameters);\n this._newTransport = makeNewFetchTransport({ requestOptions: requestOptions, url: url });\n return new FetchTransport(transportOptions);\n }\n this._newTransport = makeNewXHRTransport({\n url: url,\n headers: transportOptions.headers,\n });\n return new XHRTransport(transportOptions);\n };\n return BrowserBackend;\n}(BaseBackend));\nexport { BrowserBackend };\n//# sourceMappingURL=backend.js.map","import { __assign } from \"tslib\";\nimport { createTransport, } from '@sentry/core';\nimport { getNativeFetchImplementation } from './utils';\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeNewFetchTransport(options, nativeFetch) {\n if (nativeFetch === void 0) { nativeFetch = getNativeFetchImplementation(); }\n function makeRequest(request) {\n var requestOptions = __assign({ body: request.body, method: 'POST', referrerPolicy: 'origin' }, options.requestOptions);\n return nativeFetch(options.url, requestOptions).then(function (response) {\n return response.text().then(function (body) { return ({\n body: body,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n reason: response.statusText,\n statusCode: response.status,\n }); });\n });\n }\n return createTransport({ bufferSize: options.bufferSize }, makeRequest);\n}\n//# sourceMappingURL=new-fetch.js.map","import { createTransport, } from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\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 * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeNewXHRTransport(options) {\n function makeRequest(request) {\n return new SyncPromise(function (resolve, _reject) {\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n var response = {\n body: xhr.response,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n reason: xhr.statusText,\n statusCode: xhr.status,\n };\n resolve(response);\n }\n };\n xhr.open('POST', options.url);\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 xhr.send(request.body);\n });\n }\n return createTransport({ bufferSize: options.bufferSize }, makeRequest);\n}\n//# sourceMappingURL=new-xhr.js.map","import { __assign, __extends } from \"tslib\";\nimport { BaseClient, SDK_VERSION } from '@sentry/core';\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { BrowserBackend } from './backend';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { injectReportDialog } from './helpers';\nimport { Breadcrumbs } from './integrations';\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nvar BrowserClient = /** @class */ (function (_super) {\n __extends(BrowserClient, _super);\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n function BrowserClient(options) {\n if (options === void 0) { options = {}; }\n var _this = this;\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 _this = _super.call(this, BrowserBackend, options) || this;\n return _this;\n }\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n BrowserClient.prototype.showReportDialog = function (options) {\n if (options === void 0) { options = {}; }\n // doesn't work without a document (React Native)\n var document = getGlobalObject().document;\n if (!document) {\n return;\n }\n if (!this._isEnabled()) {\n IS_DEBUG_BUILD && logger.error('Trying to call showReportDialog with Sentry Client disabled');\n return;\n }\n injectReportDialog(__assign(__assign({}, options), { dsn: options.dsn || this.getDsn() }));\n };\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._prepareEvent = function (event, scope, hint) {\n event.platform = event.platform || 'javascript';\n return _super.prototype._prepareEvent.call(this, event, scope, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._sendEvent = function (event) {\n var integration = this.getIntegration(Breadcrumbs);\n if (integration) {\n integration.addSentryBreadcrumb(event);\n }\n _super.prototype._sendEvent.call(this, event);\n };\n return BrowserClient;\n}(BaseClient));\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map","import { __assign } from \"tslib\";\nimport { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { addInstrumentationHandler, getGlobalObject, logger, resolvedSyncPromise } from '@sentry/utils';\nimport { BrowserClient } from './client';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, Dedupe, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\nexport var defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new UserAgent(),\n];\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options) {\n if (options === void 0) { options = {}; }\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n var window_1 = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window_1.SENTRY_RELEASE && window_1.SENTRY_RELEASE.id) {\n options.release = window_1.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 initAndBind(BrowserClient, options);\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options) {\n if (options === void 0) { options = {}; }\n var hub = getCurrentHub();\n var scope = hub.getScope();\n if (scope) {\n options.user = __assign(__assign({}, scope.getUser()), options.user);\n }\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n var client = hub.getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId() {\n return getCurrentHub().lastEventId();\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad() {\n // Noop\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback) {\n callback();\n}\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function flush(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n IS_DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function close(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n IS_DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn) {\n return internalWrap(fn)();\n}\nfunction startSessionOnHub(hub) {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\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 if (typeof document === 'undefined') {\n IS_DEBUG_BUILD && logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n var hub = getCurrentHub();\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 // 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 // We want to create a session for every navigation as well\n addInstrumentationHandler('history', function (_a) {\n var from = _a.from, to = _a.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//# sourceMappingURL=sdk.js.map","import { getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from './flags';\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(clientClass, options) {\n if (options.debug === true) {\n if (IS_DEBUG_BUILD) {\n logger.enable();\n }\n else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n var hub = getCurrentHub();\n var scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n var client = new clientClass(options);\n hub.bindClient(client);\n}\n//# sourceMappingURL=sdk.js.map","import { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\nvar SENTRY_API_VERSION = '7';\n/**\n * Helper class to provide urls, headers and metadata that can be used to form\n * different types of requests to Sentry endpoints.\n * Supports both envelopes and regular event requests.\n *\n * @deprecated Please use APIDetails\n **/\nvar API = /** @class */ (function () {\n /** Create a new instance of API */\n function API(dsn, metadata, tunnel) {\n if (metadata === void 0) { metadata = {}; }\n this.dsn = dsn;\n this._dsnObject = makeDsn(dsn);\n this.metadata = metadata;\n this._tunnel = tunnel;\n }\n /** Returns the Dsn object. */\n API.prototype.getDsn = function () {\n return this._dsnObject;\n };\n /** Does this transport force envelopes? */\n API.prototype.forceEnvelope = function () {\n return !!this._tunnel;\n };\n /** Returns the prefix to construct Sentry ingestion API endpoints. */\n API.prototype.getBaseApiEndpoint = function () {\n return getBaseApiEndpoint(this._dsnObject);\n };\n /** Returns the store endpoint URL. */\n API.prototype.getStoreEndpoint = function () {\n return getStoreEndpoint(this._dsnObject);\n };\n /**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n API.prototype.getStoreEndpointWithUrlEncodedAuth = function () {\n return getStoreEndpointWithUrlEncodedAuth(this._dsnObject);\n };\n /**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n API.prototype.getEnvelopeEndpointWithUrlEncodedAuth = function () {\n return getEnvelopeEndpointWithUrlEncodedAuth(this._dsnObject, this._tunnel);\n };\n return API;\n}());\nexport { API };\n/** Initializes API Details */\nexport function initAPIDetails(dsn, metadata, tunnel) {\n return {\n initDsn: dsn,\n metadata: metadata || {},\n dsn: makeDsn(dsn),\n tunnel: tunnel,\n };\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/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn, target) {\n return \"\" + getBaseApiEndpoint(dsn) + dsn.projectId + \"/\" + target + \"/\";\n}\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn) {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n });\n}\n/** Returns the store endpoint URL. */\nfunction getStoreEndpoint(dsn) {\n return _getIngestEndpoint(dsn, 'store');\n}\n/**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getStoreEndpointWithUrlEncodedAuth(dsn) {\n return getStoreEndpoint(dsn) + \"?\" + _encodedAuth(dsn);\n}\n/** Returns the envelope endpoint URL. */\nfunction _getEnvelopeEndpoint(dsn) {\n return _getIngestEndpoint(dsn, 'envelope');\n}\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn, tunnel) {\n return tunnel ? tunnel : _getEnvelopeEndpoint(dsn) + \"?\" + _encodedAuth(dsn);\n}\n/**\n * Returns an object that can be used in request headers.\n * This is needed for node and the old /store endpoint in sentry\n */\nexport function getRequestHeaders(dsn, clientName, clientVersion) {\n // CHANGE THIS to use metadata but keep clientName and clientVersion compatible\n var header = [\"Sentry sentry_version=\" + SENTRY_API_VERSION];\n header.push(\"sentry_client=\" + clientName + \"/\" + clientVersion);\n header.push(\"sentry_key=\" + dsn.publicKey);\n if (dsn.pass) {\n header.push(\"sentry_secret=\" + dsn.pass);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n}\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(dsnLike, dialogOptions) {\n var dsn = makeDsn(dsnLike);\n var endpoint = getBaseApiEndpoint(dsn) + \"embed/error-page/\";\n var encodedOptions = \"dsn=\" + dsnToString(dsn);\n for (var key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions += \"&name=\" + encodeURIComponent(dialogOptions.user.name);\n }\n if (dialogOptions.user.email) {\n encodedOptions += \"&email=\" + encodeURIComponent(dialogOptions.user.email);\n }\n }\n else {\n encodedOptions += \"&\" + encodeURIComponent(key) + \"=\" + encodeURIComponent(dialogOptions[key]);\n }\n }\n return endpoint + \"?\" + encodedOptions;\n}\n//# sourceMappingURL=api.js.map","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n/** Flag that is true for debug builds, false otherwise. */\nexport var IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n//# sourceMappingURL=flags.js.map","import { getOriginalFunction } from '@sentry/utils';\nvar originalFunctionToString;\n/** Patch toString calls to return proper name for wrapped functions */\nvar FunctionToString = /** @class */ (function () {\n function FunctionToString() {\n /**\n * @inheritDoc\n */\n this.name = FunctionToString.id;\n }\n /**\n * @inheritDoc\n */\n FunctionToString.prototype.setupOnce = function () {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n };\n /**\n * @inheritDoc\n */\n FunctionToString.id = 'FunctionToString';\n return FunctionToString;\n}());\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map","import { __read, __spread } from \"tslib\";\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from '../flags';\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/** Inbound filters configurable by the user */\nvar InboundFilters = /** @class */ (function () {\n function InboundFilters(_options) {\n if (_options === void 0) { _options = {}; }\n this._options = _options;\n /**\n * @inheritDoc\n */\n this.name = InboundFilters.id;\n }\n /**\n * @inheritDoc\n */\n InboundFilters.prototype.setupOnce = function (addGlobalEventProcessor, getCurrentHub) {\n addGlobalEventProcessor(function (event) {\n var hub = getCurrentHub();\n if (hub) {\n var self_1 = hub.getIntegration(InboundFilters);\n if (self_1) {\n var client = hub.getClient();\n var clientOptions = client ? client.getOptions() : {};\n var options = _mergeOptions(self_1._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n InboundFilters.id = 'InboundFilters';\n return InboundFilters;\n}());\nexport { InboundFilters };\n/** JSDoc */\nexport function _mergeOptions(internalOptions, clientOptions) {\n if (internalOptions === void 0) { internalOptions = {}; }\n if (clientOptions === void 0) { clientOptions = {}; }\n return {\n allowUrls: __spread((internalOptions.whitelistUrls || []), (internalOptions.allowUrls || []), (clientOptions.whitelistUrls || []), (clientOptions.allowUrls || [])),\n denyUrls: __spread((internalOptions.blacklistUrls || []), (internalOptions.denyUrls || []), (clientOptions.blacklistUrls || []), (clientOptions.denyUrls || [])),\n ignoreErrors: __spread((internalOptions.ignoreErrors || []), (clientOptions.ignoreErrors || []), DEFAULT_IGNORE_ERRORS),\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n/** JSDoc */\nexport function _shouldDropEvent(event, options) {\n if (options.ignoreInternal && _isSentryError(event)) {\n IS_DEBUG_BUILD &&\n logger.warn(\"Event dropped due to being internal Sentry Error.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n IS_DEBUG_BUILD &&\n logger.warn(\"Event dropped due to being matched by `ignoreErrors` option.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n IS_DEBUG_BUILD &&\n logger.warn(\"Event dropped due to being matched by `denyUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + _getEventFilterUrl(event));\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n IS_DEBUG_BUILD &&\n logger.warn(\"Event dropped due to not being matched by `allowUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + _getEventFilterUrl(event));\n return true;\n }\n return false;\n}\nfunction _isIgnoredError(event, ignoreErrors) {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n return _getPossibleEventMessages(event).some(function (message) {\n return ignoreErrors.some(function (pattern) { return isMatchingPattern(message, pattern); });\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(function (pattern) { return isMatchingPattern(url, pattern); });\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(function (pattern) { return isMatchingPattern(url, pattern); });\n}\nfunction _getPossibleEventMessages(event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n var _a = (event.exception.values && event.exception.values[0]) || {}, _b = _a.type, type = _b === void 0 ? '' : _b, _c = _a.value, value = _c === void 0 ? '' : _c;\n return [\"\" + value, type + \": \" + value];\n }\n catch (oO) {\n IS_DEBUG_BUILD && logger.error(\"Cannot extract message for event \" + getEventDescription(event));\n return [];\n }\n }\n return [];\n}\nfunction _isSentryError(event) {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n }\n catch (e) {\n // ignore\n }\n return false;\n}\nfunction _getLastValidUrl(frames) {\n if (frames === void 0) { frames = []; }\n for (var i = frames.length - 1; i >= 0; i--) {\n var frame = frames[i];\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n return null;\n}\nfunction _getEventFilterUrl(event) {\n try {\n if (event.stacktrace) {\n return _getLastValidUrl(event.stacktrace.frames);\n }\n var frames_1;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames_1 = event.exception.values[0].stacktrace.frames;\n }\n catch (e) {\n // ignore\n }\n return frames_1 ? _getLastValidUrl(frames_1) : null;\n }\n catch (oO) {\n IS_DEBUG_BUILD && logger.error(\"Cannot extract url for event \" + getEventDescription(event));\n return null;\n }\n}\n//# sourceMappingURL=inboundfilters.js.map","export var SDK_VERSION = '6.19.7';\n//# sourceMappingURL=version.js.map","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n/** Flag that is true for debug builds, false otherwise. */\nexport var IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n//# sourceMappingURL=flags.js.map","import { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n/**\n * @inheritdoc\n */\nvar Session = /** @class */ (function () {\n function Session(context) {\n this.errors = 0;\n this.sid = uuid4();\n this.duration = 0;\n this.status = 'ok';\n this.init = true;\n this.ignoreDuration = false;\n // Both timestamp and started are in seconds since the UNIX epoch.\n var startingTime = timestampInSeconds();\n this.timestamp = startingTime;\n this.started = startingTime;\n if (context) {\n this.update(context);\n }\n }\n /** JSDoc */\n // eslint-disable-next-line complexity\n Session.prototype.update = function (context) {\n if (context === void 0) { context = {}; }\n if (context.user) {\n if (!this.ipAddress && context.user.ip_address) {\n this.ipAddress = context.user.ip_address;\n }\n if (!this.did && !context.did) {\n this.did = context.user.id || context.user.email || context.user.username;\n }\n }\n this.timestamp = context.timestamp || timestampInSeconds();\n if (context.ignoreDuration) {\n this.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n this.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n this.init = context.init;\n }\n if (!this.did && context.did) {\n this.did = \"\" + context.did;\n }\n if (typeof context.started === 'number') {\n this.started = context.started;\n }\n if (this.ignoreDuration) {\n this.duration = undefined;\n }\n else if (typeof context.duration === 'number') {\n this.duration = context.duration;\n }\n else {\n var duration = this.timestamp - this.started;\n this.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n this.release = context.release;\n }\n if (context.environment) {\n this.environment = context.environment;\n }\n if (!this.ipAddress && context.ipAddress) {\n this.ipAddress = context.ipAddress;\n }\n if (!this.userAgent && context.userAgent) {\n this.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n this.errors = context.errors;\n }\n if (context.status) {\n this.status = context.status;\n }\n };\n /** JSDoc */\n Session.prototype.close = function (status) {\n if (status) {\n this.update({ status: status });\n }\n else if (this.status === 'ok') {\n this.update({ status: 'exited' });\n }\n else {\n this.update();\n }\n };\n /** JSDoc */\n Session.prototype.toJSON = function () {\n return dropUndefinedKeys({\n sid: \"\" + this.sid,\n init: this.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(this.started * 1000).toISOString(),\n timestamp: new Date(this.timestamp * 1000).toISOString(),\n status: this.status,\n errors: this.errors,\n did: typeof this.did === 'number' || typeof this.did === 'string' ? \"\" + this.did : undefined,\n duration: this.duration,\n attrs: {\n release: this.release,\n environment: this.environment,\n ip_address: this.ipAddress,\n user_agent: this.userAgent,\n },\n });\n };\n return Session;\n}());\nexport { Session };\n//# sourceMappingURL=session.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { consoleSandbox, dateTimestampInSeconds, getGlobalObject, getGlobalSingleton, isNodeEnv, logger, uuid4, } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Scope } from './scope';\nimport { Session } from './session';\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport var API_VERSION = 4;\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 * @inheritDoc\n */\nvar Hub = /** @class */ (function () {\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 function Hub(client, scope, _version) {\n if (scope === void 0) { scope = new Scope(); }\n if (_version === void 0) { _version = API_VERSION; }\n this._version = _version;\n /** Is a {@link Layer}[] containing the client and scope */\n this._stack = [{}];\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n /**\n * @inheritDoc\n */\n Hub.prototype.isOlderThan = function (version) {\n return this._version < version;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.bindClient = function (client) {\n var top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.pushScope = function () {\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: scope,\n });\n return scope;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.popScope = function () {\n if (this.getStack().length <= 1)\n return false;\n return !!this.getStack().pop();\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.withScope = function (callback) {\n var scope = this.pushScope();\n try {\n callback(scope);\n }\n finally {\n this.popScope();\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.getClient = function () {\n return this.getStackTop().client;\n };\n /** Returns the scope of the top stack. */\n Hub.prototype.getScope = function () {\n return this.getStackTop().scope;\n };\n /** Returns the scope stack for domains or the process. */\n Hub.prototype.getStack = function () {\n return this._stack;\n };\n /** Returns the topmost scope layer in the order domain > local > process. */\n Hub.prototype.getStackTop = function () {\n return this._stack[this._stack.length - 1];\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n Hub.prototype.captureException = function (exception, hint) {\n var eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n var finalHint = hint;\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n var syntheticException = void 0;\n try {\n throw new Error('Sentry syntheticException');\n }\n catch (exception) {\n syntheticException = exception;\n }\n finalHint = {\n originalException: exception,\n syntheticException: syntheticException,\n };\n }\n this._invokeClient('captureException', exception, __assign(__assign({}, finalHint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureMessage = function (message, level, hint) {\n var eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n var finalHint = hint;\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n var syntheticException = void 0;\n try {\n throw new Error(message);\n }\n catch (exception) {\n syntheticException = exception;\n }\n finalHint = {\n originalException: message,\n syntheticException: syntheticException,\n };\n }\n this._invokeClient('captureMessage', message, level, __assign(__assign({}, finalHint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureEvent = function (event, hint) {\n var eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n this._invokeClient('captureEvent', event, __assign(__assign({}, hint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.lastEventId = function () {\n return this._lastEventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.addBreadcrumb = function (breadcrumb, hint) {\n var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n if (!scope || !client)\n return;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _b = (client.getOptions && client.getOptions()) || {}, _c = _b.beforeBreadcrumb, beforeBreadcrumb = _c === void 0 ? null : _c, _d = _b.maxBreadcrumbs, maxBreadcrumbs = _d === void 0 ? DEFAULT_BREADCRUMBS : _d;\n if (maxBreadcrumbs <= 0)\n return;\n var timestamp = dateTimestampInSeconds();\n var mergedBreadcrumb = __assign({ timestamp: timestamp }, breadcrumb);\n var finalBreadcrumb = beforeBreadcrumb\n ? consoleSandbox(function () { return beforeBreadcrumb(mergedBreadcrumb, hint); })\n : mergedBreadcrumb;\n if (finalBreadcrumb === null)\n return;\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setUser = function (user) {\n var scope = this.getScope();\n if (scope)\n scope.setUser(user);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTags = function (tags) {\n var scope = this.getScope();\n if (scope)\n scope.setTags(tags);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtras = function (extras) {\n var scope = this.getScope();\n if (scope)\n scope.setExtras(extras);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTag = function (key, value) {\n var scope = this.getScope();\n if (scope)\n scope.setTag(key, value);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtra = function (key, extra) {\n var scope = this.getScope();\n if (scope)\n scope.setExtra(key, extra);\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype.setContext = function (name, context) {\n var scope = this.getScope();\n if (scope)\n scope.setContext(name, context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.configureScope = function (callback) {\n var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n if (scope && client) {\n callback(scope);\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.run = function (callback) {\n var oldHub = makeMain(this);\n try {\n callback(this);\n }\n finally {\n makeMain(oldHub);\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.getIntegration = function (integration) {\n var client = this.getClient();\n if (!client)\n return null;\n try {\n return client.getIntegration(integration);\n }\n catch (_oO) {\n IS_DEBUG_BUILD && logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Hub\");\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.startSpan = function (context) {\n return this._callExtensionMethod('startSpan', context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.startTransaction = function (context, customSamplingContext) {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.traceHeaders = function () {\n return this._callExtensionMethod('traceHeaders');\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureSession = function (endSession) {\n if (endSession === void 0) { endSession = false; }\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n // only send the update\n this._sendSessionUpdate();\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.endSession = function () {\n var layer = this.getStackTop();\n var scope = layer && layer.scope;\n var session = scope && scope.getSession();\n if (session) {\n session.close();\n }\n this._sendSessionUpdate();\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.startSession = function (context) {\n var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n var _b = (client && client.getOptions()) || {}, release = _b.release, environment = _b.environment;\n // Will fetch userAgent if called from browser sdk\n var global = getGlobalObject();\n var userAgent = (global.navigator || {}).userAgent;\n var session = new Session(__assign(__assign(__assign({ release: release,\n environment: environment }, (scope && { user: scope.getUser() })), (userAgent && { userAgent: userAgent })), context));\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 currentSession.update({ status: 'exited' });\n }\n this.endSession();\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n return session;\n };\n /**\n * Sends the current Session on the scope\n */\n Hub.prototype._sendSessionUpdate = function () {\n var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n if (!scope)\n return;\n var session = scope.getSession && scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n };\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype._invokeClient = function (method) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var _b = this.getStackTop(), scope = _b.scope, client = _b.client;\n if (client && client[method]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (_a = client)[method].apply(_a, __spread(args, [scope]));\n }\n };\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype._callExtensionMethod = function (method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\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 IS_DEBUG_BUILD && logger.warn(\"Extension method \" + method + \" couldn't be found, doing nothing.\");\n };\n return Hub;\n}());\nexport { Hub };\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier() {\n var carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub) {\n var registry = getMainCarrier();\n var oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub() {\n // Get main carrier (global for every environment)\n var registry = getMainCarrier();\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 // 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 * Returns the active domain, if one exists\n * @deprecated No longer used; remove in v7\n * @returns The domain, or undefined if there is no active domain\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveDomain() {\n IS_DEBUG_BUILD && logger.warn('Function `getActiveDomain` is deprecated and will be removed in a future version.');\n var sentry = getMainCarrier().__SENTRY__;\n return sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\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 // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\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 // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n }\n catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\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 * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier) {\n return getGlobalSingleton('hub', function () { return new Hub(); }, carrier);\n}\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier, hub) {\n if (!carrier)\n return false;\n var __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n//# sourceMappingURL=hub.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { dateTimestampInSeconds, getGlobalSingleton, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\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 * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nvar Scope = /** @class */ (function () {\n function Scope() {\n /** Flag if notifying is happening. */\n this._notifyingListeners = false;\n /** Callback for client to receive scope changes. */\n this._scopeListeners = [];\n /** Callback list that will be called after {@link applyToEvent}. */\n this._eventProcessors = [];\n /** Array of breadcrumbs. */\n this._breadcrumbs = [];\n /** User */\n this._user = {};\n /** Tags */\n this._tags = {};\n /** Extra */\n this._extra = {};\n /** Contexts */\n this._contexts = {};\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 this._sdkProcessingMetadata = {};\n }\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n Scope.clone = function (scope) {\n var newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = __spread(scope._breadcrumbs);\n newScope._tags = __assign({}, scope._tags);\n newScope._extra = __assign({}, scope._extra);\n newScope._contexts = __assign({}, 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 = __spread(scope._eventProcessors);\n newScope._requestSession = scope._requestSession;\n }\n return newScope;\n };\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n Scope.prototype.addScopeListener = function (callback) {\n this._scopeListeners.push(callback);\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addEventProcessor = function (callback) {\n this._eventProcessors.push(callback);\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setUser = function (user) {\n this._user = user || {};\n if (this._session) {\n this._session.update({ user: user });\n }\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getUser = function () {\n return this._user;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getRequestSession = function () {\n return this._requestSession;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setRequestSession = function (requestSession) {\n this._requestSession = requestSession;\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTags = function (tags) {\n this._tags = __assign(__assign({}, this._tags), tags);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTag = function (key, value) {\n var _a;\n this._tags = __assign(__assign({}, this._tags), (_a = {}, _a[key] = value, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtras = function (extras) {\n this._extra = __assign(__assign({}, this._extra), extras);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtra = function (key, extra) {\n var _a;\n this._extra = __assign(__assign({}, this._extra), (_a = {}, _a[key] = extra, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setFingerprint = function (fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setLevel = function (level) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTransactionName = function (name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n Scope.prototype.setTransaction = function (name) {\n return this.setTransactionName(name);\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setContext = function (key, context) {\n var _a;\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n }\n else {\n this._contexts = __assign(__assign({}, this._contexts), (_a = {}, _a[key] = context, _a));\n }\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setSpan = function (span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getSpan = function () {\n return this._span;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getTransaction = function () {\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 * @inheritDoc\n */\n Scope.prototype.setSession = function (session) {\n if (!session) {\n delete this._session;\n }\n else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getSession = function () {\n return this._session;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.update = function (captureContext) {\n if (!captureContext) {\n return this;\n }\n if (typeof captureContext === 'function') {\n var updatedScope = captureContext(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n if (captureContext instanceof Scope) {\n this._tags = __assign(__assign({}, this._tags), captureContext._tags);\n this._extra = __assign(__assign({}, this._extra), captureContext._extra);\n this._contexts = __assign(__assign({}, 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 }\n else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext;\n this._tags = __assign(__assign({}, this._tags), captureContext.tags);\n this._extra = __assign(__assign({}, this._extra), captureContext.extra);\n this._contexts = __assign(__assign({}, 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 return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clear = function () {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addBreadcrumb = function (breadcrumb, maxBreadcrumbs) {\n var maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n var mergedBreadcrumb = __assign({ timestamp: dateTimestampInSeconds() }, breadcrumb);\n this._breadcrumbs = __spread(this._breadcrumbs, [mergedBreadcrumb]).slice(-maxCrumbs);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clearBreadcrumbs = function () {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n };\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional information about the original exception.\n * @hidden\n */\n Scope.prototype.applyToEvent = function (event, hint) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = __assign(__assign({}, this._extra), event.extra);\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = __assign(__assign({}, this._tags), event.tags);\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = __assign(__assign({}, this._user), event.user);\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = __assign(__assign({}, this._contexts), event.contexts);\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = __assign({ trace: this._span.getTraceContext() }, event.contexts);\n var transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = __assign({ transaction: transactionName }, event.tags);\n }\n }\n this._applyFingerprint(event);\n event.breadcrumbs = __spread((event.breadcrumbs || []), this._breadcrumbs);\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n event.sdkProcessingMetadata = this._sdkProcessingMetadata;\n return this._notifyEventProcessors(__spread(getGlobalEventProcessors(), this._eventProcessors), event, hint);\n };\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n Scope.prototype.setSDKProcessingMetadata = function (newData) {\n this._sdkProcessingMetadata = __assign(__assign({}, this._sdkProcessingMetadata), newData);\n return this;\n };\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n Scope.prototype._notifyEventProcessors = function (processors, event, hint, index) {\n var _this = this;\n if (index === void 0) { index = 0; }\n return new SyncPromise(function (resolve, reject) {\n var processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n }\n else {\n var result = processor(__assign({}, event), hint);\n if (isThenable(result)) {\n void result\n .then(function (final) { return _this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve); })\n .then(null, reject);\n }\n else {\n void _this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n };\n /**\n * This will be called on every set call.\n */\n Scope.prototype._notifyScopeListeners = function () {\n var _this = this;\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(function (callback) {\n callback(_this);\n });\n this._notifyingListeners = false;\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 Scope.prototype._applyFingerprint = function (event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n // 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 // 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 return Scope;\n}());\nexport { Scope };\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n return getGlobalSingleton('globalEventProcessors', function () { return []; });\n}\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n//# sourceMappingURL=scope.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { getCurrentHub } from '@sentry/hub';\n/**\n * This calls a function on the current hub.\n * @param method function to call on hub.\n * @param args to pass to function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction callOnHub(method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var hub = getCurrentHub();\n if (hub && hub[method]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return hub[method].apply(hub, __spread(args));\n }\n throw new Error(\"No hub defined or \" + method + \" was not found on the hub, please open a bug report.\");\n}\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception, captureContext) {\n var syntheticException = new Error('Sentry syntheticException');\n return callOnHub('captureException', exception, {\n captureContext: captureContext,\n originalException: exception,\n syntheticException: syntheticException,\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 */\nexport function captureMessage(message, captureContext) {\n var syntheticException = new Error(message);\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: captureContext } : undefined;\n return callOnHub('captureMessage', message, level, __assign({ originalException: message, syntheticException: syntheticException }, context));\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 */\nexport function captureEvent(event) {\n return callOnHub('captureEvent', event);\n}\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback) {\n callOnHub('configureScope', callback);\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 */\nexport function addBreadcrumb(breadcrumb) {\n callOnHub('addBreadcrumb', breadcrumb);\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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name, context) {\n callOnHub('setContext', name, context);\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 */\nexport function setExtras(extras) {\n callOnHub('setExtras', extras);\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 */\nexport function setTags(tags) {\n callOnHub('setTags', tags);\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 */\nexport function setExtra(key, extra) {\n callOnHub('setExtra', key, extra);\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 */\nexport function setTag(key, value) {\n callOnHub('setTag', key, value);\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 */\nexport function setUser(user) {\n callOnHub('setUser', user);\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 */\nexport function withScope(callback) {\n callOnHub('withScope', callback);\n}\n/**\n * Calls a function on the latest client. Use this with caution, it's meant as\n * in \"internal\" helper so we don't need to expose every possible function in\n * the shim. It is not guaranteed that the client actually implements the\n * function.\n *\n * @param method The method to call on the client/client.\n * @param args Arguments to pass to the client/fontend.\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _callOnClient(method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n callOnHub.apply(void 0, __spread(['_invokeClient', method], args));\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 * @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 */\nexport function startTransaction(context, customSamplingContext) {\n return callOnHub('startTransaction', __assign({}, context), customSamplingContext);\n}\n//# sourceMappingURL=index.js.map","// Store finish reasons in tuple to save on bundle size\n// Readonly type should enforce that this is not mutated.\nexport var FINISH_REASON_TAG = 'finishReason';\nexport var IDLE_TRANSACTION_FINISH_REASONS = ['heartbeatFailed', 'idleTimeout', 'documentHidden'];\n//# sourceMappingURL=constants.js.map","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n/** Flag that is true for debug builds, false otherwise. */\nexport var IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n//# sourceMappingURL=flags.js.map","import { addInstrumentationHandler, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { getActiveTransaction } from './utils';\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation() {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\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_1 = 'internal_error';\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Transaction: \" + status_1 + \" -> Global error occured\");\n activeTransaction.setStatus(status_1);\n }\n}\n//# sourceMappingURL=errors.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { getMainCarrier } from '@sentry/hub';\nimport { dynamicRequire, isNaN, isNodeEnv, loadModule, logger } from '@sentry/utils';\nimport { registerErrorInstrumentation } from './errors';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\nimport { hasTracingEnabled } from './utils';\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 * 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(transaction, options, samplingContext) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\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 // 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 var 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 }\n else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.setMetadata({\n transactionSampling: { method: 'inheritance' },\n });\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 // 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 IS_DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\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 IS_DEBUG_BUILD &&\n logger.log(\"[Tracing] Discarding transaction because \" + (typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'));\n transaction.sampled = false;\n return transaction;\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 // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n IS_DEBUG_BUILD &&\n logger.log(\"[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = \" + Number(sampleRate) + \")\");\n return transaction;\n }\n IS_DEBUG_BUILD && logger.log(\"[Tracing] starting \" + transaction.op + \" transaction - \" + transaction.name);\n return transaction;\n}\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n IS_DEBUG_BUILD &&\n logger.warn(\"[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got \" + JSON.stringify(rate) + \" of type \" + JSON.stringify(typeof rate) + \".\");\n return false;\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 IS_DEBUG_BUILD &&\n logger.warn(\"[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got \" + rate + \".\");\n return false;\n }\n return true;\n}\n/**\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(transactionContext, customSamplingContext) {\n var client = this.getClient();\n var options = (client && client.getOptions()) || {};\n var transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, __assign({ parentSampled: transactionContext.parentSampled, transactionContext: transactionContext }, customSamplingContext));\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && options._experiments.maxSpans);\n }\n return transaction;\n}\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(hub, transactionContext, idleTimeout, onScope, customSamplingContext) {\n var client = hub.getClient();\n var options = (client && client.getOptions()) || {};\n var transaction = new IdleTransaction(transactionContext, hub, idleTimeout, onScope);\n transaction = sample(transaction, options, __assign({ parentSampled: transactionContext.parentSampled, transactionContext: transactionContext }, customSamplingContext));\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && options._experiments.maxSpans);\n }\n return transaction;\n}\n/**\n * @private\n */\nexport function _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 * @private\n */\nfunction _autoloadDatabaseIntegrations() {\n var carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n var packageToIntegrationMapping = {\n mongodb: function () {\n var integration = dynamicRequire(module, './integrations/node/mongo');\n return new integration.Mongo();\n },\n mongoose: function () {\n var integration = dynamicRequire(module, './integrations/node/mongo');\n return new integration.Mongo({ mongoose: true });\n },\n mysql: function () {\n var integration = dynamicRequire(module, './integrations/node/mysql');\n return new integration.Mysql();\n },\n pg: function () {\n var integration = dynamicRequire(module, './integrations/node/postgres');\n return new integration.Postgres();\n },\n };\n var mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(function (moduleName) { return !!loadModule(moduleName); })\n .map(function (pkg) {\n try {\n return packageToIntegrationMapping[pkg]();\n }\n catch (e) {\n return undefined;\n }\n })\n .filter(function (p) { return p; });\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = __spread((carrier.__SENTRY__.integrations || []), mappedPackages);\n }\n}\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods() {\n _addTracingExtensions();\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n//# sourceMappingURL=hubextensions.js.map","import { __extends, __values } from \"tslib\";\nimport { logger, timestampWithMs } from '@sentry/utils';\nimport { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from './constants';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { SpanRecorder } from './span';\nimport { Transaction } from './transaction';\nexport var DEFAULT_IDLE_TIMEOUT = 1000;\nexport var HEARTBEAT_INTERVAL = 5000;\n/**\n * @inheritDoc\n */\nvar IdleTransactionSpanRecorder = /** @class */ (function (_super) {\n __extends(IdleTransactionSpanRecorder, _super);\n function IdleTransactionSpanRecorder(_pushActivity, _popActivity, transactionSpanId, maxlen) {\n if (transactionSpanId === void 0) { transactionSpanId = ''; }\n var _this = _super.call(this, maxlen) || this;\n _this._pushActivity = _pushActivity;\n _this._popActivity = _popActivity;\n _this.transactionSpanId = transactionSpanId;\n return _this;\n }\n /**\n * @inheritDoc\n */\n IdleTransactionSpanRecorder.prototype.add = function (span) {\n var _this = this;\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 = function (endTimestamp) {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n _this._popActivity(span.spanId);\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 _super.prototype.add.call(this, span);\n };\n return IdleTransactionSpanRecorder;\n}(SpanRecorder));\nexport { IdleTransactionSpanRecorder };\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 */\nvar IdleTransaction = /** @class */ (function (_super) {\n __extends(IdleTransaction, _super);\n function IdleTransaction(transactionContext, _idleHub, \n /**\n * The time to wait in ms until the idle transaction will be finished.\n * @default 1000\n */\n _idleTimeout, \n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope) {\n if (_idleTimeout === void 0) { _idleTimeout = DEFAULT_IDLE_TIMEOUT; }\n if (_onScope === void 0) { _onScope = false; }\n var _this = _super.call(this, transactionContext, _idleHub) || this;\n _this._idleHub = _idleHub;\n _this._idleTimeout = _idleTimeout;\n _this._onScope = _onScope;\n // Activities store a list of active spans\n _this.activities = {};\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n _this._heartbeatCounter = 0;\n // We should not use heartbeat if we finished a transaction\n _this._finished = false;\n _this._beforeFinishCallbacks = [];\n if (_idleHub && _onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\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 IS_DEBUG_BUILD && logger.log(\"Setting idle transaction on scope. Span ID: \" + _this.spanId);\n _idleHub.configureScope(function (scope) { return scope.setSpan(_this); });\n }\n _this._initTimeout = setTimeout(function () {\n if (!_this._finished) {\n _this.finish();\n }\n }, _this._idleTimeout);\n return _this;\n }\n /** {@inheritDoc} */\n IdleTransaction.prototype.finish = function (endTimestamp) {\n var e_1, _a;\n var _this = this;\n if (endTimestamp === void 0) { endTimestamp = timestampWithMs(); }\n this._finished = true;\n this.activities = {};\n if (this.spanRecorder) {\n IS_DEBUG_BUILD &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n try {\n for (var _b = __values(this._beforeFinishCallbacks), _c = _b.next(); !_c.done; _c = _b.next()) {\n var callback = _c.value;\n callback(this, endTimestamp);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.spanRecorder.spans = this.spanRecorder.spans.filter(function (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 // 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 IS_DEBUG_BUILD &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n var keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n IS_DEBUG_BUILD &&\n logger.log('[Tracing] discarding Span since it happened after Transaction was finished', JSON.stringify(span, undefined, 2));\n }\n return keepSpan;\n });\n IS_DEBUG_BUILD && logger.log('[Tracing] flushing IdleTransaction');\n }\n else {\n IS_DEBUG_BUILD && logger.log('[Tracing] No active IdleTransaction');\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 return _super.prototype.finish.call(this, endTimestamp);\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 IdleTransaction.prototype.registerBeforeFinishCallback = function (callback) {\n this._beforeFinishCallbacks.push(callback);\n };\n /**\n * @inheritDoc\n */\n IdleTransaction.prototype.initSpanRecorder = function (maxlen) {\n var _this = this;\n if (!this.spanRecorder) {\n var pushActivity = function (id) {\n if (_this._finished) {\n return;\n }\n _this._pushActivity(id);\n };\n var popActivity = function (id) {\n if (_this._finished) {\n return;\n }\n _this._popActivity(id);\n };\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n // Start heartbeat so that transactions do not run forever.\n IS_DEBUG_BUILD && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n };\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n IdleTransaction.prototype._pushActivity = function (spanId) {\n if (this._initTimeout) {\n clearTimeout(this._initTimeout);\n this._initTimeout = undefined;\n }\n IS_DEBUG_BUILD && logger.log(\"[Tracing] pushActivity: \" + spanId);\n this.activities[spanId] = true;\n IS_DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n };\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n IdleTransaction.prototype._popActivity = function (spanId) {\n var _this = this;\n if (this.activities[spanId]) {\n IS_DEBUG_BUILD && logger.log(\"[Tracing] popActivity \" + spanId);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n IS_DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n if (Object.keys(this.activities).length === 0) {\n var timeout = this._idleTimeout;\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 end_1 = timestampWithMs() + timeout / 1000;\n setTimeout(function () {\n if (!_this._finished) {\n _this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[1]);\n _this.finish(end_1);\n }\n }, timeout);\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 IdleTransaction.prototype._beat = function () {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n var heartbeatString = Object.keys(this.activities).join('');\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n }\n else {\n this._heartbeatCounter = 1;\n }\n this._prevHeartbeatString = heartbeatString;\n if (this._heartbeatCounter >= 3) {\n IS_DEBUG_BUILD && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[0]);\n this.finish();\n }\n else {\n this._pingHeartbeat();\n }\n };\n /**\n * Pings the heartbeat\n */\n IdleTransaction.prototype._pingHeartbeat = function () {\n var _this = this;\n IS_DEBUG_BUILD && logger.log(\"pinging Heartbeat -> current counter: \" + this._heartbeatCounter);\n setTimeout(function () {\n _this._beat();\n }, HEARTBEAT_INTERVAL);\n };\n return IdleTransaction;\n}(Transaction));\nexport { IdleTransaction };\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub) {\n if (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}\n//# sourceMappingURL=idletransaction.js.map","import { __assign } from \"tslib\";\nimport { dropUndefinedKeys, timestampWithMs, uuid4 } from '@sentry/utils';\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nvar SpanRecorder = /** @class */ (function () {\n function SpanRecorder(maxlen) {\n if (maxlen === void 0) { maxlen = 1000; }\n this.spans = [];\n this._maxlen = maxlen;\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 SpanRecorder.prototype.add = function (span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n }\n else {\n this.spans.push(span);\n }\n };\n return SpanRecorder;\n}());\nexport { SpanRecorder };\n/**\n * Span contains all data about a span\n */\nvar Span = /** @class */ (function () {\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 function Span(spanContext) {\n /**\n * @inheritDoc\n */\n this.traceId = uuid4();\n /**\n * @inheritDoc\n */\n this.spanId = uuid4().substring(16);\n /**\n * Timestamp in seconds when the span was created.\n */\n this.startTimestamp = timestampWithMs();\n /**\n * @inheritDoc\n */\n this.tags = {};\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.data = {};\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 * @inheritDoc\n * @deprecated\n */\n Span.prototype.child = function (spanContext) {\n return this.startChild(spanContext);\n };\n /**\n * @inheritDoc\n */\n Span.prototype.startChild = function (spanContext) {\n var childSpan = new Span(__assign(__assign({}, spanContext), { parentSpanId: this.spanId, sampled: this.sampled, traceId: this.traceId }));\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n childSpan.transaction = this.transaction;\n return childSpan;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setTag = function (key, value) {\n var _a;\n this.tags = __assign(__assign({}, this.tags), (_a = {}, _a[key] = value, _a));\n return this;\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n Span.prototype.setData = function (key, value) {\n var _a;\n this.data = __assign(__assign({}, this.data), (_a = {}, _a[key] = value, _a));\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setStatus = function (value) {\n this.status = value;\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setHttpStatus = function (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 * @inheritDoc\n */\n Span.prototype.isSuccess = function () {\n return this.status === 'ok';\n };\n /**\n * @inheritDoc\n */\n Span.prototype.finish = function (endTimestamp) {\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toTraceparent = function () {\n var sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return this.traceId + \"-\" + this.spanId + sampledString;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toContext = function () {\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 * @inheritDoc\n */\n Span.prototype.updateWithContext = function (spanContext) {\n var _a, _b, _c, _d, _e;\n this.data = (_a = spanContext.data, (_a !== null && _a !== void 0 ? _a : {}));\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 = (_b = spanContext.spanId, (_b !== null && _b !== void 0 ? _b : this.spanId));\n this.startTimestamp = (_c = spanContext.startTimestamp, (_c !== null && _c !== void 0 ? _c : this.startTimestamp));\n this.status = spanContext.status;\n this.tags = (_d = spanContext.tags, (_d !== null && _d !== void 0 ? _d : {}));\n this.traceId = (_e = spanContext.traceId, (_e !== null && _e !== void 0 ? _e : this.traceId));\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.getTraceContext = function () {\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 * @inheritDoc\n */\n Span.prototype.toJSON = function () {\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 return Span;\n}());\nexport { Span };\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 */\nexport function spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\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 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 return 'unknown_error';\n}\n//# sourceMappingURL=span.js.map","import { __assign, __extends } from \"tslib\";\nimport { getCurrentHub, Hub } from '@sentry/hub';\nimport { dropUndefinedKeys, isInstanceOf, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Span as SpanClass, SpanRecorder } from './span';\n/** JSDoc */\nvar Transaction = /** @class */ (function (_super) {\n __extends(Transaction, _super);\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n function Transaction(transactionContext, hub) {\n var _this = _super.call(this, transactionContext) || this;\n _this._measurements = {};\n /**\n * The reference to the current hub.\n */\n _this._hub = getCurrentHub();\n if (isInstanceOf(hub, Hub)) {\n _this._hub = hub;\n }\n _this.name = transactionContext.name || '';\n _this.metadata = transactionContext.metadata || {};\n _this._trimEnd = transactionContext.trimEnd;\n // this is because transactions are also spans, and spans have a transaction pointer\n _this.transaction = _this;\n return _this;\n }\n /**\n * JSDoc\n */\n Transaction.prototype.setName = function (name) {\n this.name = name;\n };\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n Transaction.prototype.initSpanRecorder = function (maxlen) {\n if (maxlen === void 0) { maxlen = 1000; }\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n };\n /**\n * Set observed measurements for this transaction.\n * @hidden\n */\n Transaction.prototype.setMeasurements = function (measurements) {\n this._measurements = __assign({}, measurements);\n };\n /**\n * Set metadata for this transaction.\n * @hidden\n */\n Transaction.prototype.setMetadata = function (newMetadata) {\n this.metadata = __assign(__assign({}, this.metadata), newMetadata);\n };\n /**\n * @inheritDoc\n */\n Transaction.prototype.finish = function (endTimestamp) {\n var _this = this;\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n if (!this.name) {\n IS_DEBUG_BUILD && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n // just sets the end timestamp\n _super.prototype.finish.call(this, endTimestamp);\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n IS_DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n var client = this._hub.getClient();\n var transport = client && client.getTransport && client.getTransport();\n if (transport && transport.recordLostEvent) {\n transport.recordLostEvent('sample_rate', 'transaction');\n }\n return undefined;\n }\n var finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(function (s) { return s !== _this && s.endTimestamp; }) : [];\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce(function (prev, current) {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n var transaction = {\n contexts: {\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: this.metadata,\n };\n var hasMeasurements = Object.keys(this._measurements).length > 0;\n if (hasMeasurements) {\n IS_DEBUG_BUILD &&\n logger.log('[Measurements] Adding measurements to transaction', JSON.stringify(this._measurements, undefined, 2));\n transaction.measurements = this._measurements;\n }\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Finishing \" + this.op + \" transaction: \" + this.name + \".\");\n return this._hub.captureEvent(transaction);\n };\n /**\n * @inheritDoc\n */\n Transaction.prototype.toContext = function () {\n var spanContext = _super.prototype.toContext.call(this);\n return dropUndefinedKeys(__assign(__assign({}, spanContext), { name: this.name, trimEnd: this._trimEnd }));\n };\n /**\n * @inheritDoc\n */\n Transaction.prototype.updateWithContext = function (transactionContext) {\n var _a;\n _super.prototype.updateWithContext.call(this, transactionContext);\n this.name = (_a = transactionContext.name, (_a !== null && _a !== void 0 ? _a : ''));\n this._trimEnd = transactionContext.trimEnd;\n return this;\n };\n return Transaction;\n}(SpanClass));\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map","import { getCurrentHub } from '@sentry/hub';\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * TODO(v7): Reorganize these exports\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n */\nexport { TRACEPARENT_REGEXP, extractTraceparentData } from '@sentry/utils';\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 */\nexport function hasTracingEnabled(maybeOptions) {\n var client = getCurrentHub().getClient();\n var options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction(maybeHub) {\n var hub = maybeHub || getCurrentHub();\n var scope = hub.getScope();\n return scope && scope.getTransaction();\n}\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nexport function msToSec(time) {\n return time / 1000;\n}\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nexport function secToMs(time) {\n return time * 1000;\n}\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n//# sourceMappingURL=utils.js.map","/**\n * TODO(v7): Remove this enum and replace with SeverityLevel\n */\nexport var Severity;\n(function (Severity) {\n /** JSDoc */\n Severity[\"Fatal\"] = \"fatal\";\n /** JSDoc */\n Severity[\"Error\"] = \"error\";\n /** JSDoc */\n Severity[\"Warning\"] = \"warning\";\n /** JSDoc */\n Severity[\"Log\"] = \"log\";\n /** JSDoc */\n Severity[\"Info\"] = \"info\";\n /** JSDoc */\n Severity[\"Debug\"] = \"debug\";\n /** JSDoc */\n Severity[\"Critical\"] = \"critical\";\n})(Severity || (Severity = {}));\n// TODO: in v7, these can disappear, because they now also exist in `@sentry/utils`. (Having them there rather than here\n// is nice because then it enforces the idea that only types are exported from `@sentry/types`.)\nexport var SeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug', 'critical'];\n//# sourceMappingURL=severity.js.map","import { getGlobalObject } from './global';\nimport { isString } from './is';\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 */\nexport function htmlTreeAsString(elem, keyAttrs) {\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 var currentElem = elem;\n var MAX_TRAVERSE_HEIGHT = 5;\n var MAX_OUTPUT_LEN = 80;\n var out = [];\n var height = 0;\n var len = 0;\n var separator = ' > ';\n var sepLength = separator.length;\n var nextStr = void 0;\n // eslint-disable-next-line no-plusplus\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 out.push(nextStr);\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n return out.reverse().join(separator);\n }\n catch (_oO) {\n return '';\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 var out = [];\n var className;\n var classes;\n var key;\n var attr;\n var i;\n if (!elem || !elem.tagName) {\n return '';\n }\n out.push(elem.tagName.toLowerCase());\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n var keyAttrPairs = keyAttrs && keyAttrs.length\n ? keyAttrs.filter(function (keyAttr) { return elem.getAttribute(keyAttr); }).map(function (keyAttr) { return [keyAttr, elem.getAttribute(keyAttr)]; })\n : null;\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(function (keyAttrPair) {\n out.push(\"[\" + keyAttrPair[0] + \"=\\\"\" + keyAttrPair[1] + \"\\\"]\");\n });\n }\n else {\n if (elem.id) {\n out.push(\"#\" + elem.id);\n }\n // eslint-disable-next-line prefer-const\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 * A safe form of location.href\n */\nexport function getLocationHref() {\n var global = getGlobalObject();\n try {\n return global.document.location.href;\n }\n catch (oO) {\n return '';\n }\n}\n//# sourceMappingURL=browser.js.map","import { __read } from \"tslib\";\nimport { SentryError } from './error';\nimport { IS_DEBUG_BUILD } from './flags';\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\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 */\nexport function dsnToString(dsn, withPassword) {\n if (withPassword === void 0) { withPassword = false; }\n var host = dsn.host, path = dsn.path, pass = dsn.pass, port = dsn.port, projectId = dsn.projectId, protocol = dsn.protocol, publicKey = dsn.publicKey;\n return (protocol + \"://\" + publicKey + (withPassword && pass ? \":\" + pass : '') +\n (\"@\" + host + (port ? \":\" + port : '') + \"/\" + (path ? path + \"/\" : path) + projectId));\n}\nfunction dsnFromString(str) {\n var match = DSN_REGEX.exec(str);\n if (!match) {\n throw new SentryError(\"Invalid Sentry Dsn: \" + str);\n }\n var _a = __read(match.slice(1), 6), protocol = _a[0], publicKey = _a[1], _b = _a[2], pass = _b === void 0 ? '' : _b, host = _a[3], _c = _a[4], port = _c === void 0 ? '' : _c, lastPath = _a[5];\n var path = '';\n var projectId = lastPath;\n var split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop();\n }\n if (projectId) {\n var projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n return dsnFromComponents({ host: host, pass: pass, path: path, projectId: projectId, port: port, protocol: protocol, publicKey: publicKey });\n}\nfunction dsnFromComponents(components) {\n // TODO this is for backwards compatibility, and can be removed in a future version\n if ('user' in components && !('publicKey' in components)) {\n components.publicKey = components.user;\n }\n return {\n user: components.publicKey || '',\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}\nfunction validateDsn(dsn) {\n if (!IS_DEBUG_BUILD) {\n return;\n }\n var port = dsn.port, projectId = dsn.projectId, protocol = dsn.protocol;\n var requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(function (component) {\n if (!dsn[component]) {\n throw new SentryError(\"Invalid Sentry Dsn: \" + component + \" missing\");\n }\n });\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(\"Invalid Sentry Dsn: Invalid projectId \" + projectId);\n }\n if (!isValidProtocol(protocol)) {\n throw new SentryError(\"Invalid Sentry Dsn: Invalid protocol \" + protocol);\n }\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(\"Invalid Sentry Dsn: Invalid port \" + port);\n }\n return true;\n}\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport function makeDsn(from) {\n var components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n//# sourceMappingURL=dsn.js.map","export var setPrototypeOf = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties);\n/**\n * setPrototypeOf polyfill using __proto__\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction setProtoOf(obj, proto) {\n // @ts-ignore __proto__ does not exist on obj\n obj.__proto__ = proto;\n return obj;\n}\n/**\n * setPrototypeOf polyfill using mixin\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction mixinProperties(obj, proto) {\n for (var prop in proto) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n // @ts-ignore typescript complains about indexing so we remove\n obj[prop] = proto[prop];\n }\n }\n return obj;\n}\n//# sourceMappingURL=polyfill.js.map","import { __extends } from \"tslib\";\nimport { setPrototypeOf } from './polyfill';\n/** An error emitted by Sentry SDKs and related utilities. */\nvar SentryError = /** @class */ (function (_super) {\n __extends(SentryError, _super);\n function SentryError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _newTarget.prototype.constructor.name;\n setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return SentryError;\n}(Error));\nexport { SentryError };\n//# sourceMappingURL=error.js.map","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n/** Flag that is true for debug builds, false otherwise. */\nexport var IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n//# sourceMappingURL=flags.js.map","/**\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 */\nimport { isNodeEnv } from './node';\nvar fallbackGlobalObject = {};\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject() {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined' // eslint-disable-line no-restricted-globals\n ? window // eslint-disable-line no-restricted-globals\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject);\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 */\nexport function 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//# sourceMappingURL=global.js.map","import { __assign, __values } from \"tslib\";\nimport { IS_DEBUG_BUILD } from './flags';\nimport { getGlobalObject } from './global';\nimport { isInstanceOf, isString } from './is';\nimport { CONSOLE_LEVELS, logger } from './logger';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\nvar global = getGlobalObject();\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 */\nvar handlers = {};\nvar instrumented = {};\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n instrumented[type] = true;\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 IS_DEBUG_BUILD && logger.warn('unknown instrumentation type:', type);\n return;\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 */\nexport function addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n handlers[type].push(callback);\n instrument(type);\n}\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n var e_1, _a;\n if (!type || !handlers[type]) {\n return;\n }\n try {\n for (var _b = __values(handlers[type] || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var handler = _c.value;\n try {\n handler(data);\n }\n catch (e) {\n IS_DEBUG_BUILD &&\n logger.error(\"Error while triggering instrumentation handler.\\nType: \" + type + \"\\nName: \" + getFunctionName(handler) + \"\\nError:\", e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n}\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n fill(global.console, level, function (originalConsoleMethod) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n triggerHandlers('console', { args: args, level: level });\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(global.console, args);\n }\n };\n });\n });\n}\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n fill(global, 'fetch', function (originalFetch) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var handlerData = {\n args: args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n triggerHandlers('fetch', __assign({}, handlerData));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(function (response) {\n triggerHandlers('fetch', __assign(__assign({}, handlerData), { endTimestamp: Date.now(), response: response }));\n return response;\n }, function (error) {\n triggerHandlers('fetch', __assign(__assign({}, handlerData), { endTimestamp: Date.now(), error: error }));\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/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs) {\n if (fetchArgs === void 0) { 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/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs) {\n if (fetchArgs === void 0) { 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/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n var xhrproto = XMLHttpRequest.prototype;\n fill(xhrproto, 'open', function (originalOpen) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var url = args[1];\n var xhrInfo = (xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n 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 }\n catch (e) {\n /* do nothing */\n }\n triggerHandlers('xhr', {\n args: args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr: xhr,\n });\n }\n };\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return function () {\n var readyStateArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n readyStateArgs[_i] = arguments[_i];\n }\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n }\n else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n return originalOpen.apply(xhr, args);\n };\n });\n fill(xhrproto, 'send', function (originalSend) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n triggerHandlers('xhr', {\n args: args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n return originalSend.apply(this, args);\n };\n });\n}\nvar lastHref;\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\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: from,\n to: 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 }\n catch (_oO) {\n // no-empty\n }\n }\n };\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\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: from,\n to: to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\nvar debounceDuration = 1000;\nvar debounceTimerID;\nvar lastCapturedEvent;\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 // 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 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 }\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 // 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 * 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 try {\n var target = event.target;\n if (!target || !target.tagName) {\n return true;\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 }\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 return true;\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) {\n if (globalListener === void 0) { globalListener = false; }\n return function (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 // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n var name = event.type === 'keypress' ? 'input' : event.type;\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: 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: name,\n global: globalListener,\n });\n lastCapturedEvent = event;\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(function () {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\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 // 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(function (target) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function (type, listener, options) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this;\n var handlers_1 = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n var handlerForType = (handlers_1[type] = handlers_1[type] || { refCount: 0 });\n if (!handlerForType.handler) {\n var handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n handlerForType.refCount += 1;\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 return originalAddEventListener.call(this, type, listener, options);\n };\n });\n fill(proto, 'removeEventListener', function (originalRemoveEventListener) {\n return function (type, listener, options) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this;\n var handlers_2 = el.__sentry_instrumentation_handlers__ || {};\n var handlerForType = handlers_2[type];\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_2[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers_2).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\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 return originalRemoveEventListener.call(this, type, listener, options);\n };\n });\n });\n}\nvar _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column: column,\n error: error,\n line: line,\n msg: msg,\n url: url,\n });\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n return false;\n };\n}\nvar _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n return true;\n };\n}\n//# sourceMappingURL=instrument.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n// eslint-disable-next-line @typescript-eslint/unbound-method\nvar objectToString = Object.prototype.toString;\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 */\nexport function 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}\nfunction isBuiltin(wat, ty) {\n return objectToString.call(wat) === \"[object \" + ty + \"]\";\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 */\nexport function isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\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 */\nexport function isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\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 */\nexport function isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\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 */\nexport function isString(wat) {\n return isBuiltin(wat, 'String');\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 */\nexport function isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\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 */\nexport function isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\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 */\nexport function isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\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 */\nexport function isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\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 */\nexport function isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\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 */\nexport function isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\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 */\nexport function isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\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 */\nexport function isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n }\n catch (_e) {\n return false;\n }\n}\n//# sourceMappingURL=is.js.map","import { __read, __spread } from \"tslib\";\nimport { IS_DEBUG_BUILD } from './flags';\nimport { getGlobalObject, getGlobalSingleton } from './global';\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\nexport var CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\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 */\nexport function consoleSandbox(callback) {\n var global = getGlobalObject();\n if (!('console' in global)) {\n return callback();\n }\n var originalConsole = global.console;\n var wrappedLevels = {};\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(function (level) {\n // TODO(v7): Remove this check as it's only needed for Node 6\n var originalWrappedFunc = 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 try {\n return callback();\n }\n finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(function (level) {\n originalConsole[level] = wrappedLevels[level];\n });\n }\n}\nfunction makeLogger() {\n var enabled = false;\n var logger = {\n enable: function () {\n enabled = true;\n },\n disable: function () {\n enabled = false;\n },\n };\n if (IS_DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(function (name) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (enabled) {\n consoleSandbox(function () {\n var _a;\n (_a = global.console)[name].apply(_a, __spread([PREFIX + \"[\" + name + \"]:\"], args));\n });\n }\n };\n });\n }\n else {\n CONSOLE_LEVELS.forEach(function (name) {\n logger[name] = function () { return undefined; };\n });\n }\n return logger;\n}\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nvar logger;\nif (IS_DEBUG_BUILD) {\n logger = getGlobalSingleton('logger', makeLogger);\n}\nelse {\n logger = makeLogger();\n}\nexport { logger };\n//# sourceMappingURL=logger.js.map","import { __assign } from \"tslib\";\nimport { getGlobalObject } from './global';\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4() {\n var global = getGlobalObject();\n var crypto = global.crypto || global.msCrypto;\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n var pad = function (num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = \"0\" + v;\n }\n return v;\n };\n return (pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]));\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n // eslint-disable-next-line no-bitwise\n var r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n var v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\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 */\nexport function parseUrl(url) {\n if (!url) {\n return {};\n }\n var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n if (!match) {\n return {};\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,\n };\n}\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\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 */\nexport function getEventDescription(event) {\n var message = event.message, eventId = event.event_id;\n if (message) {\n return message;\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 * 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 */\nexport function 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 * 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 */\nexport function addExceptionMechanism(event, newMechanism) {\n var firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n var defaultMechanism = { type: 'generic', handled: true };\n var currentMechanism = firstException.mechanism;\n firstException.mechanism = __assign(__assign(__assign({}, defaultMechanism), currentMechanism), newMechanism);\n if (newMechanism && 'data' in newMechanism) {\n var mergedData = __assign(__assign({}, (currentMechanism && currentMechanism.data)), newMechanism.data);\n firstException.mechanism.data = mergedData;\n }\n}\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar SEMVER_REGEXP = /^(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 * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function 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 * 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 */\nexport function addContextToFrame(lines, frame, linesOfContext) {\n if (linesOfContext === void 0) { 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 frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map(function (line) { return snipLine(line, 0); });\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map(function (line) { return snipLine(line, 0); });\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 */\nexport function stripUrlQueryAndFragment(urlPath) {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\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 */\nexport function checkOrSetAlreadyCaught(exception) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && exception.__sentry_captured__) {\n return true;\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 }\n catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n return false;\n}\n//# sourceMappingURL=misc.js.map","/**\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 */\nimport { isBrowserBundle } from './env';\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (!isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]');\n}\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod, request) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\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 */\nexport function loadModule(moduleName) {\n var mod;\n try {\n mod = dynamicRequire(module, moduleName);\n }\n catch (e) {\n // no-empty\n }\n try {\n var cwd = dynamicRequire(module, 'process').cwd;\n mod = dynamicRequire(module, cwd() + \"/node_modules/\" + moduleName);\n }\n catch (e) {\n // no-empty\n }\n return mod;\n}\n//# sourceMappingURL=node.js.map","/*\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 * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n//# sourceMappingURL=env.js.map","import { __read } from \"tslib\";\nimport { isError, isEvent, isNaN, isSyntheticEvent } from './is';\nimport { memoBuilder } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\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 */\nexport function normalize(input, depth, maxProperties) {\n if (depth === void 0) { depth = +Infinity; }\n if (maxProperties === void 0) { maxProperties = +Infinity; }\n try {\n // since we're at the outermost level, there is no key\n return visit('', input, depth, maxProperties);\n }\n catch (err) {\n return { ERROR: \"**non-serializable** (\" + err + \")\" };\n }\n}\n/** JSDoc */\nexport function normalizeToSize(object, \n// Default Node.js REPL depth\ndepth, \n// 100kB, as 200kB is max payload size, so half sounds reasonable\nmaxSize) {\n if (depth === void 0) { depth = 3; }\n if (maxSize === void 0) { maxSize = 100 * 1024; }\n var normalized = normalize(object, depth);\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n return normalized;\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(key, value, depth, maxProperties, memo) {\n if (depth === void 0) { depth = +Infinity; }\n if (maxProperties === void 0) { maxProperties = +Infinity; }\n if (memo === void 0) { memo = memoBuilder(); }\n var _a = __read(memo, 2), memoize = _a[0], unmemoize = _a[1];\n // If the value has a `toJSON` method, see if we can bail and let it do the work\n var valueWithToJSON = value;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n return valueWithToJSON.toJSON();\n }\n catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\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 var stringified = stringifyValue(key, value);\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 // 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 // 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 // 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 var numAdded = 0;\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 = (isError(value) || isEvent(value) ? convertToPlainObject(value) : value);\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 if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n // Recursively visit all the child nodes\n var visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n numAdded += 1;\n }\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n // Return accumulated values\n return normalized;\n}\n// TODO remove this in v7 (this means the method will no longer be exported, under any name)\nexport { visit as walk };\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(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\nvalue) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && value._events) {\n return '[Domain]';\n }\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\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 if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\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 if (typeof value === 'function') {\n return \"[Function: \" + getFunctionName(value) + \"]\";\n }\n if (typeof value === 'symbol') {\n return \"[\" + String(value) + \"]\";\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 // 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 }\n catch (err) {\n return \"**non-serializable** (\" + err + \")\";\n }\n}\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n/** Calculates bytes size of input object */\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n//# sourceMappingURL=normalize.js.map","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Helper to decycle json objects\n */\nexport function 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 // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var 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 function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n }\n else {\n for (var 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//# sourceMappingURL=memo.js.map","import { __assign, __values } from \"tslib\";\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { truncate } from './string';\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 */\nexport function fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n var original = source[name];\n var wrapped = replacementFactory(original);\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 }\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 source[name] = wrapped;\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 */\nexport function 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 * 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 */\nexport function markFunctionWrapped(wrapped, original) {\n var proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\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 */\nexport function getOriginalFunction(func) {\n return func.__sentry_original__;\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 */\nexport function urlEncode(object) {\n return Object.keys(object)\n .map(function (key) { return encodeURIComponent(key) + \"=\" + encodeURIComponent(object[key]); })\n .join('&');\n}\n/**\n * Transforms any object into an object literal with all its attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n */\nexport function convertToPlainObject(value) {\n var newObj = value;\n if (isError(value)) {\n newObj = __assign({ message: value.message, name: value.name, stack: value.stack }, getOwnProperties(value));\n }\n else if (isEvent(value)) {\n var event_1 = value;\n newObj = __assign({ type: event_1.type, target: serializeEventTarget(event_1.target), currentTarget: serializeEventTarget(event_1.currentTarget) }, getOwnProperties(event_1));\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = event_1.detail;\n }\n }\n return newObj;\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 }\n catch (_oO) {\n return '';\n }\n}\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\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}\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 */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function extractExceptionKeysForMessage(exception, maxLength) {\n if (maxLength === void 0) { maxLength = 40; }\n var keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n if (!keys.length) {\n return '[object has no keys]';\n }\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n for (var 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 return '';\n}\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val) {\n var e_1, _a;\n if (isPlainObject(val)) {\n var rv = {};\n try {\n for (var _b = __values(Object.keys(val)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (typeof val[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(val[key]);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return rv;\n }\n if (Array.isArray(val)) {\n return val.map(dropUndefinedKeys);\n }\n return val;\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 */\nexport function objectify(wat) {\n var objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\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 // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new wat.constructor(wat);\n break;\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//# sourceMappingURL=object.js.map","import { __assign, __values } from \"tslib\";\nvar STACKTRACE_LIMIT = 50;\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 */\nexport function createStackParser() {\n var parsers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n parsers[_i] = arguments[_i];\n }\n var sortedParsers = parsers.sort(function (a, b) { return a[0] - b[0]; }).map(function (p) { return p[1]; });\n return function (stack, skipFirst) {\n var e_1, _a, e_2, _b;\n if (skipFirst === void 0) { skipFirst = 0; }\n var frames = [];\n try {\n for (var _c = __values(stack.split('\\n').slice(skipFirst)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var line = _d.value;\n try {\n for (var sortedParsers_1 = (e_2 = void 0, __values(sortedParsers)), sortedParsers_1_1 = sortedParsers_1.next(); !sortedParsers_1_1.done; sortedParsers_1_1 = sortedParsers_1.next()) {\n var parser = sortedParsers_1_1.value;\n var frame = parser(line);\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (sortedParsers_1_1 && !sortedParsers_1_1.done && (_b = sortedParsers_1.return)) _b.call(sortedParsers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return stripSentryFramesAndReverse(frames);\n };\n}\n/**\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n var localStack = stack;\n var firstFrameFunction = localStack[0].function || '';\n var lastFrameFunction = localStack[localStack.length - 1].function || '';\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 // 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 // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(function (frame) { return (__assign(__assign({}, frame), { filename: frame.filename || localStack[0].filename, function: frame.function || '?' })); })\n .reverse();\n}\nvar defaultFunctionName = '';\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\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 return defaultFunctionName;\n }\n}\n//# sourceMappingURL=stacktrace.js.map","import { isRegExp, isString } from './is';\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 */\nexport function truncate(str, max) {\n if (max === void 0) { 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 * 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 */\nexport function snipLine(line, colno) {\n var newLine = line;\n var lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n var start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n var 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 newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = \"'{snip} \" + newLine;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n return newLine;\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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n var output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var i = 0; i < input.length; i++) {\n var value = input[i];\n try {\n output.push(String(value));\n }\n catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n return output.join(delimiter);\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 */\nexport function isMatchingPattern(value, pattern) {\n if (!isString(value)) {\n return false;\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 * 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 */\nexport function 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//# sourceMappingURL=string.js.map","import { IS_DEBUG_BUILD } from './flags';\nimport { getGlobalObject } from './global';\nimport { logger } from './logger';\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function 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 }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException() {\n try {\n new DOMException('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\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 */\nexport function supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n var global = getGlobalObject();\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\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 var result = false;\n var doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\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 // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n }\n catch (err) {\n IS_DEBUG_BUILD &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n return result;\n}\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver() {\n return 'ReportingObserver' in getGlobalObject();\n}\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function 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 if (!supportsFetch()) {\n return false;\n }\n try {\n new Request('_', {\n referrerPolicy: 'origin',\n });\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function 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 /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var chrome = global.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n return !isChromePackagedApp && hasHistoryApi;\n}\n//# sourceMappingURL=supports.js.map","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\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 */\nexport function resolvedSyncPromise(value) {\n return new SyncPromise(function (resolve) {\n resolve(value);\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 */\nexport function rejectedSyncPromise(reason) {\n return new SyncPromise(function (_, reject) {\n reject(reason);\n });\n}\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nvar SyncPromise = /** @class */ (function () {\n function SyncPromise(executor) {\n var _this = this;\n this._state = 0 /* PENDING */;\n this._handlers = [];\n /** JSDoc */\n this._resolve = function (value) {\n _this._setResult(1 /* RESOLVED */, value);\n };\n /** JSDoc */\n this._reject = function (reason) {\n _this._setResult(2 /* REJECTED */, reason);\n };\n /** JSDoc */\n this._setResult = function (state, value) {\n if (_this._state !== 0 /* PENDING */) {\n return;\n }\n if (isThenable(value)) {\n void value.then(_this._resolve, _this._reject);\n return;\n }\n _this._state = state;\n _this._value = value;\n _this._executeHandlers();\n };\n /** JSDoc */\n this._executeHandlers = function () {\n if (_this._state === 0 /* PENDING */) {\n return;\n }\n var cachedHandlers = _this._handlers.slice();\n _this._handlers = [];\n cachedHandlers.forEach(function (handler) {\n if (handler[0]) {\n return;\n }\n if (_this._state === 1 /* RESOLVED */) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](_this._value);\n }\n if (_this._state === 2 /* REJECTED */) {\n handler[2](_this._value);\n }\n handler[0] = true;\n });\n };\n try {\n executor(this._resolve, this._reject);\n }\n catch (e) {\n this._reject(e);\n }\n }\n /** JSDoc */\n SyncPromise.prototype.then = function (onfulfilled, onrejected) {\n var _this = this;\n return new SyncPromise(function (resolve, reject) {\n _this._handlers.push([\n false,\n function (result) {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result);\n }\n else {\n try {\n resolve(onfulfilled(result));\n }\n catch (e) {\n reject(e);\n }\n }\n },\n function (reason) {\n if (!onrejected) {\n reject(reason);\n }\n else {\n try {\n resolve(onrejected(reason));\n }\n catch (e) {\n reject(e);\n }\n }\n },\n ]);\n _this._executeHandlers();\n });\n };\n /** JSDoc */\n SyncPromise.prototype.catch = function (onrejected) {\n return this.then(function (val) { return val; }, onrejected);\n };\n /** JSDoc */\n SyncPromise.prototype.finally = function (onfinally) {\n var _this = this;\n return new SyncPromise(function (resolve, reject) {\n var val;\n var isRejected;\n return _this.then(function (value) {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n }, function (reason) {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n }).then(function () {\n if (isRejected) {\n reject(val);\n return;\n }\n resolve(val);\n });\n });\n };\n return SyncPromise;\n}());\nexport { SyncPromise };\n//# sourceMappingURL=syncpromise.js.map","import { getGlobalObject } from './global';\nimport { dynamicRequire, isNodeEnv } from './node';\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: function () { return Date.now() / 1000; },\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 var performance = getGlobalObject().performance;\n if (!performance || !performance.now) {\n return undefined;\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 return {\n now: function () { return performance.now(); },\n timeOrigin: timeOrigin,\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 }\n catch (_) {\n return undefined;\n }\n}\n/**\n * The Performance API implementation for the current platform, if available.\n */\nvar platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\nvar timestampSource = platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: function () { return (platformPerformance.timeOrigin + platformPerformance.now()) / 1000; },\n };\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport var dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\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 */\nexport var timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n// Re-exported with an old name for backwards-compatibility.\nexport var timestampWithMs = timestampInSeconds;\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport var usingPerformanceAPI = platformPerformance !== undefined;\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport var _browserPerformanceTimeOriginMode;\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 */\nexport var browserPerformanceTimeOrigin = (function () {\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 var performance = getGlobalObject().performance;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n var threshold = 3600 * 1000;\n var performanceNow = performance.now();\n var dateNow = Date.now();\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 // 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 // eslint-disable-next-line deprecation/deprecation\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 if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n }\n else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\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//# sourceMappingURL=time.js.map","var _global = (typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}); _global.SENTRY_RELEASE={id:\"oqvZ0G4UDLUsHDxB_itaJ\"};","import e,{createContext as t,useContext as n,useState as r,useCallback as o,useRef as i,useEffect as a,memo as c}from\"react\";import m from\"next/head\";var s=t({setTheme:function(e){},themes:[]}),d=function(){return n(s)},u=[\"light\",\"dark\"],l=\"(prefers-color-scheme: dark)\",f=function(t){var n=t.forcedTheme,c=t.disableTransitionOnChange,m=void 0!==c&&c,d=t.enableSystem,f=void 0===d||d,g=t.enableColorScheme,T=void 0===g||g,w=t.storageKey,S=void 0===w?\"theme\":w,b=t.themes,E=void 0===b?[\"light\",\"dark\"]:b,k=t.defaultTheme,x=void 0===k?f?\"system\":\"light\":k,L=t.attribute,I=void 0===L?\"data-theme\":L,C=t.value,M=t.children,_=r(function(){return v(S,x)}),O=_[0],H=_[1],K=r(function(){return v(S)}),N=K[0],j=K[1],A=C?Object.values(C):E,J=o(function(e){var t=p(e);j(t),\"system\"!==O||n||z(t,!1)},[O,n]),P=i(J);P.current=J;var z=o(function(e,t,n){void 0===t&&(t=!0),void 0===n&&(n=!0);var r=(null==C?void 0:C[e])||e,o=m&&n?y():null;if(t)try{localStorage.setItem(S,e)}catch(e){}if(\"system\"===e&&f){var i=p();r=(null==C?void 0:C[i])||i}if(n){var a,c=document.documentElement;\"class\"===I?((a=c.classList).remove.apply(a,A),c.classList.add(r)):c.setAttribute(I,r),null==o||o()}},[]);a(function(){var e=function(){return P.current.apply(P,[].slice.call(arguments))},t=window.matchMedia(l);return t.addListener(e),e(t),function(){return t.removeListener(e)}},[]);var V=o(function(e){n?z(e,!0,!1):z(e),H(e)},[n]);return a(function(){var e=function(e){e.key===S&&V(e.newValue)};return window.addEventListener(\"storage\",e),function(){return window.removeEventListener(\"storage\",e)}},[V]),a(function(){if(T){var e=n&&u.includes(n)?n:O&&u.includes(O)?O:\"system\"===O&&N||null;document.documentElement.style.setProperty(\"color-scheme\",e)}},[T,O,N,n]),e.createElement(s.Provider,{value:{theme:O,setTheme:V,forcedTheme:n,resolvedTheme:\"system\"===O?N:O,themes:f?[].concat(E,[\"system\"]):E,systemTheme:f?N:void 0}},e.createElement(h,{forcedTheme:n,storageKey:S,attribute:I,value:C,enableSystem:f,defaultTheme:x,attrs:A}),M)},h=c(function(t){var n=t.forcedTheme,r=t.storageKey,o=t.attribute,i=t.enableSystem,a=t.defaultTheme,c=t.value,s=\"class\"===o?\"var d=document.documentElement.classList;d.remove(\"+t.attrs.map(function(e){return\"'\"+e+\"'\"}).join(\",\")+\");\":\"var d=document.documentElement;\",d=function(e,t){e=(null==c?void 0:c[e])||e;var n=t?e:\"'\"+e+\"'\";return\"class\"===o?\"d.add(\"+n+\")\":\"d.setAttribute('\"+o+\"', \"+n+\")\"},u=\"system\"===a;return e.createElement(m,null,e.createElement(\"script\",n?{key:\"next-themes-script\",dangerouslySetInnerHTML:{__html:\"!function(){\"+s+d(n)+\"}()\"}}:i?{key:\"next-themes-script\",dangerouslySetInnerHTML:{__html:\"!function(){try {\"+s+\"var e=localStorage.getItem('\"+r+\"');\"+(u?\"\":d(a)+\";\")+'if(\"system\"===e||(!e&&'+u+')){var t=\"'+l+'\",m=window.matchMedia(t);m.media!==t||m.matches?'+d(\"dark\")+\":\"+d(\"light\")+\"}else if(e) \"+(c?\"var x=\"+JSON.stringify(c)+\";\":\"\")+d(c?\"x[e]\":\"e\",!0)+\"}catch(e){}}()\"}}:{key:\"next-themes-script\",dangerouslySetInnerHTML:{__html:\"!function(){try{\"+s+'var e=localStorage.getItem(\"'+r+'\");if(e){'+(c?\"var x=\"+JSON.stringify(c)+\";\":\"\")+d(c?\"x[e]\":\"e\",!0)+\"}else{\"+d(a)+\";}}catch(t){}}();\"}}))},function(e,t){return e.forcedTheme===t.forcedTheme}),v=function(e,t){if(\"undefined\"!=typeof window){var n;try{n=localStorage.getItem(e)||void 0}catch(e){}return n||t}},y=function(){var e=document.createElement(\"style\");return e.appendChild(document.createTextNode(\"*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\")),document.head.appendChild(e),function(){window.getComputedStyle(document.body),setTimeout(function(){document.head.removeChild(e)},1)}},p=function(e){return e||(e=window.matchMedia(l)),e.matches?\"dark\":\"light\"};export{f as ThemeProvider,d as useTheme};\n","\"use strict\";\nvar ref, ref1;\nmodule.exports = ((ref = global.process) === null || ref === void 0 ? void 0 : ref.env) && typeof ((ref1 = global.process) === null || ref1 === void 0 ? void 0 : ref1.env) === 'object' ? global.process : require('../../compiled/process');\n\n//# sourceMappingURL=process.js.map","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_app\",\n function () {\n return require(\"private-next-pages/_app.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_app\"])\n });\n }\n ","/* eslint-disable jsx-a11y/anchor-has-content */\nimport Link from 'next/link'\nimport { AnchorHTMLAttributes, DetailedHTMLProps } from 'react'\n\nconst CustomLink = ({\n href,\n ...rest\n}: DetailedHTMLProps, HTMLAnchorElement>) => {\n const isInternalLink = href && href.startsWith('/')\n const isAnchorLink = href && href.startsWith('#')\n\n if (isInternalLink) {\n return (\n \n \n \n )\n }\n\n if (isAnchorLink) {\n return \n }\n\n return \n}\n\nexport default CustomLink\n","import { ReactNode } from 'react'\n\ninterface Props {\n children: ReactNode\n}\n\nexport default function SectionContainer({ children }: Props) {\n return
{children}
\n}\n","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgMail = function SvgMail(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.003 5.884 10 9.882l7.997-3.998A2 2 0 0 0 16 4H4a2 2 0 0 0-1.997 1.884z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m18 8.118-8 4-8-4V14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8.118z\"\n })));\n};\n\nexport default SvgMail;","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgGithub = function SvgGithub(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\n })));\n};\n\nexport default SvgGithub;","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgFacebook = function SvgFacebook(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z\"\n })));\n};\n\nexport default SvgFacebook;","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgYoutube = function SvgYoutube(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.499 6.203a3.008 3.008 0 0 0-2.089-2.089c-1.87-.501-9.4-.501-9.4-.501s-7.509-.01-9.399.501a3.008 3.008 0 0 0-2.088 2.09A31.258 31.26 0 0 0 0 12.01a31.258 31.26 0 0 0 .523 5.785 3.008 3.008 0 0 0 2.088 2.089c1.869.502 9.4.502 9.4.502s7.508 0 9.399-.502a3.008 3.008 0 0 0 2.089-2.09 31.258 31.26 0 0 0 .5-5.784 31.258 31.26 0 0 0-.5-5.808zm-13.891 9.4V8.407l6.266 3.604z\"\n })));\n};\n\nexport default SvgYoutube;","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgLinkedin = function SvgLinkedin(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\"\n })));\n};\n\nexport default SvgLinkedin;","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgTwitter = function SvgTwitter(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.953 4.57a10 10 0 0 1-2.825.775 4.958 4.958 0 0 0 2.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 0 0-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 0 0-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 0 1-2.228-.616v.06a4.923 4.923 0 0 0 3.946 4.827 4.996 4.996 0 0 1-2.212.085 4.936 4.936 0 0 0 4.604 3.417 9.867 9.867 0 0 1-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 0 0 7.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0 0 24 4.59z\"\n })));\n};\n\nexport default SvgTwitter;","import Mail from './mail.svg'\nimport Github from './github.svg'\nimport Facebook from './facebook.svg'\nimport Youtube from './youtube.svg'\nimport Linkedin from './linkedin.svg'\nimport Twitter from './twitter.svg'\n\n// Icons taken from: https://simpleicons.org/\n\nconst components = {\n mail: Mail,\n github: Github,\n facebook: Facebook,\n youtube: Youtube,\n linkedin: Linkedin,\n twitter: Twitter,\n}\n\nconst SocialIcon = ({ kind, href, size = 8 }) => {\n if (!href || (kind === 'mail' && !/^mailto:\\w+([.-]?\\w+)@\\w+([.-]?\\w+)(.\\w{2,3})+$/.test(href)))\n return null\n\n const SocialSvg = components[kind]\n\n return (\n \n {kind}\n \n
\n )\n}\n\nexport default SocialIcon\n","const siteMetadata = {\n title: 'Learn Edge SEO and level up your game',\n author: 'Lucjan Suski',\n description:\n \"Don't let platforms hold back your SEO. Meet world-class experts in Edge SEO, learn from the best and solve your SEO problems in no time.\",\n language: 'en-us',\n theme: 'system', // system, dark or light\n siteUrl: 'https://edgeseo.pro',\n siteLogo: '/static/images/logo.png',\n image: '/static/images/avatar.jpg',\n socialBanner: '/static/images/twitter-card-v2.png',\n email: 'lucjan@edgeseo.pro',\n github: 'https://github.com/methyl',\n twitter: 'https://twitter.com/Twitter',\n facebook: 'https://www.facebook.com/groups/1406109103192594',\n youtube: 'https://youtube.com',\n linkedin: 'https://www.linkedin.com/in/lucjansuski',\n locale: 'en-US',\n // analytics: {\n // // If you want to use an analytics provider you have to add it to the\n // // content security policy in the `next.config.js` file.\n // // supports plausible, simpleAnalytics, umami or googleAnalytics\n // plausibleDataDomain: '', // e.g. tailwind-nextjs-starter-blog.vercel.app\n // simpleAnalytics: false, // true or false\n // umamiWebsiteId: '', // e.g. 123e4567-e89b-12d3-a456-426614174000\n // googleAnalyticsId: '', // e.g. UA-000000-2 or G-XXXXXXX\n // },\n // newsletter: {\n // // supports mailchimp, buttondown, convertkit, klaviyo, revue\n // // Please add your .env file and modify it according to your selection\n // provider: 'convertkit',\n // },\n // comment: {\n // // If you want to use an analytics provider you have to add it to the\n // // content security policy in the `next.config.js` file.\n // // Select a provider and use the environment variables associated to it\n // // https://vercel.com/docs/environment-variables\n // provider: 'giscus', // supported providers: giscus, utterances, disqus\n // giscusConfig: {\n // // Visit the link below, and follow the steps in the 'configuration' section\n // // https://giscus.app/\n // repo: process.env.NEXT_PUBLIC_GISCUS_REPO,\n // repositoryId: process.env.NEXT_PUBLIC_GISCUS_REPOSITORY_ID,\n // category: process.env.NEXT_PUBLIC_GISCUS_CATEGORY,\n // categoryId: process.env.NEXT_PUBLIC_GISCUS_CATEGORY_ID,\n // mapping: 'pathname', // supported options: pathname, url, title\n // reactions: '1', // Emoji reactions: 1 = enable / 0 = disable\n // // Send discussion metadata periodically to the parent window: 1 = enable / 0 = disable\n // metadata: '0',\n // // theme example: light, dark, dark_dimmed, dark_high_contrast\n // // transparent_dark, preferred_color_scheme, custom\n // theme: 'light',\n // // theme when dark mode\n // darkTheme: 'transparent_dark',\n // // If the theme option above is set to 'custom`\n // // please provide a link below to your custom theme css file.\n // // example: https://giscus.app/themes/custom_example.css\n // themeURL: '',\n // },\n // utterancesConfig: {\n // // Visit the link below, and follow the steps in the 'configuration' section\n // // https://utteranc.es/\n // repo: process.env.NEXT_PUBLIC_UTTERANCES_REPO,\n // issueTerm: '', // supported options: pathname, url, title\n // label: '', // label (optional): Comment 💬\n // // theme example: github-light, github-dark, preferred-color-scheme\n // // github-dark-orange, icy-dark, dark-blue, photon-dark, boxy-light\n // theme: '',\n // // theme when dark mode\n // darkTheme: '',\n // },\n // disqusConfig: {\n // // https://help.disqus.com/en/articles/1717111-what-s-a-shortname\n // shortname: process.env.NEXT_PUBLIC_DISQUS_SHORTNAME,\n // },\n // },\n}\n\nmodule.exports = siteMetadata\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _router = require(\"../shared/lib/router/router\");\nvar _router1 = require(\"./router\");\nvar _useIntersection = require(\"./use-intersection\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst prefetched = {};\nfunction prefetch(router, href, as, options) {\n if (typeof window === 'undefined' || !router) return;\n if (!(0, _router).isLocalURL(href)) return;\n // Prefetch the JSON page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n router.prefetch(href, as, options).catch((err)=>{\n if (process.env.NODE_ENV !== 'production') {\n // rethrow to show invalid URL errors\n throw err;\n }\n });\n const curLocale = options && typeof options.locale !== 'undefined' ? options.locale : router && router.locale;\n // Join on an invalid URI character\n prefetched[href + '%' + as + (curLocale ? '%' + curLocale : '')] = true;\n}\nfunction isModifiedEvent(event) {\n const { target } = event.currentTarget;\n return target && target !== '_self' || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.nativeEvent && event.nativeEvent.which === 2;\n}\nfunction linkClicked(e, router, href, as, replace, shallow, scroll, locale) {\n const { nodeName } = e.currentTarget;\n // anchors inside an svg have a lowercase nodeName\n const isAnchorNodeName = nodeName.toUpperCase() === 'A';\n if (isAnchorNodeName && (isModifiedEvent(e) || !(0, _router).isLocalURL(href))) {\n // ignore click for browser’s default behavior\n return;\n }\n e.preventDefault();\n // replace state instead of push if prop is present\n router[replace ? 'replace' : 'push'](href, as, {\n shallow,\n locale,\n scroll\n });\n}\nfunction Link(props) {\n if (process.env.NODE_ENV !== 'production') {\n function createPropError(args) {\n return new Error(`Failed prop type: The prop \\`${args.key}\\` expects a ${args.expected} in \\`\\`, but got \\`${args.actual}\\` instead.` + (typeof window !== 'undefined' ? \"\\nOpen your browser's console to view the Component stack trace.\" : ''));\n }\n // TypeScript trick for type-guarding:\n const requiredPropsGuard = {\n href: true\n };\n const requiredProps = Object.keys(requiredPropsGuard);\n requiredProps.forEach((key)=>{\n if (key === 'href') {\n if (props[key] == null || typeof props[key] !== 'string' && typeof props[key] !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: props[key] === null ? 'null' : typeof props[key]\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // TypeScript trick for type-guarding:\n const optionalPropsGuard = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n locale: true\n };\n const optionalProps = Object.keys(optionalPropsGuard);\n optionalProps.forEach((key)=>{\n const valType = typeof props[key];\n if (key === 'as') {\n if (props[key] && valType !== 'string' && valType !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: valType\n });\n }\n } else if (key === 'locale') {\n if (props[key] && valType !== 'string') {\n throw createPropError({\n key,\n expected: '`string`',\n actual: valType\n });\n }\n } else if (key === 'replace' || key === 'scroll' || key === 'shallow' || key === 'passHref' || key === 'prefetch') {\n if (props[key] != null && valType !== 'boolean') {\n throw createPropError({\n key,\n expected: '`boolean`',\n actual: valType\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasWarned = _react.default.useRef(false);\n if (props.prefetch && !hasWarned.current) {\n hasWarned.current = true;\n console.warn('Next.js auto-prefetches automatically based on viewport. The prefetch attribute is no longer needed. More: https://nextjs.org/docs/messages/prefetch-true-deprecated');\n }\n }\n const p = props.prefetch !== false;\n const router = (0, _router1).useRouter();\n const { href , as } = _react.default.useMemo(()=>{\n const [resolvedHref, resolvedAs] = (0, _router).resolveHref(router, props.href, true);\n return {\n href: resolvedHref,\n as: props.as ? (0, _router).resolveHref(router, props.as) : resolvedAs || resolvedHref\n };\n }, [\n router,\n props.href,\n props.as\n ]);\n let { children , replace , shallow , scroll , locale } = props;\n if (typeof children === 'string') {\n children = /*#__PURE__*/ _react.default.createElement(\"a\", null, children);\n }\n // This will return the first child, if multiple are provided it will throw an error\n let child;\n if (process.env.NODE_ENV === 'development') {\n try {\n child = _react.default.Children.only(children);\n } catch (err) {\n if (!children) {\n throw new Error(`No children were passed to with \\`href\\` of \\`${props.href}\\` but one child is required https://nextjs.org/docs/messages/link-no-children`);\n }\n throw new Error(`Multiple children were passed to with \\`href\\` of \\`${props.href}\\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children` + (typeof window !== 'undefined' ? \" \\nOpen your browser's console to view the Component stack trace.\" : ''));\n }\n } else {\n child = _react.default.Children.only(children);\n }\n const childRef = child && typeof child === 'object' && child.ref;\n const [setIntersectionRef, isVisible] = (0, _useIntersection).useIntersection({\n rootMargin: '200px'\n });\n const setRef = _react.default.useCallback((el)=>{\n setIntersectionRef(el);\n if (childRef) {\n if (typeof childRef === 'function') childRef(el);\n else if (typeof childRef === 'object') {\n childRef.current = el;\n }\n }\n }, [\n childRef,\n setIntersectionRef\n ]);\n _react.default.useEffect(()=>{\n const shouldPrefetch = isVisible && p && (0, _router).isLocalURL(href);\n const curLocale = typeof locale !== 'undefined' ? locale : router && router.locale;\n const isPrefetched = prefetched[href + '%' + as + (curLocale ? '%' + curLocale : '')];\n if (shouldPrefetch && !isPrefetched) {\n prefetch(router, href, as, {\n locale: curLocale\n });\n }\n }, [\n as,\n href,\n isVisible,\n locale,\n p,\n router\n ]);\n const childProps = {\n ref: setRef,\n onClick: (e)=>{\n if (process.env.NODE_ENV !== 'production') {\n if (!e) {\n throw new Error(`Component rendered inside next/link has to pass click event to \"onClick\" prop.`);\n }\n }\n if (child.props && typeof child.props.onClick === 'function') {\n child.props.onClick(e);\n }\n if (!e.defaultPrevented) {\n linkClicked(e, router, href, as, replace, shallow, scroll, locale);\n }\n }\n };\n childProps.onMouseEnter = (e)=>{\n if (child.props && typeof child.props.onMouseEnter === 'function') {\n child.props.onMouseEnter(e);\n }\n if ((0, _router).isLocalURL(href)) {\n prefetch(router, href, as, {\n priority: true\n });\n }\n };\n // If child is an tag and doesn't have a href attribute, or if the 'passHref' property is\n // defined, we specify the current 'href', so that repetition is not needed by the user\n if (props.passHref || child.type === 'a' && !('href' in child.props)) {\n const curLocale = typeof locale !== 'undefined' ? locale : router && router.locale;\n // we only render domain locales if we are currently on a domain locale\n // so that locale links are still visitable in development/preview envs\n const localeDomain = router && router.isLocaleDomain && (0, _router).getDomainLocale(as, curLocale, router && router.locales, router && router.domainLocales);\n childProps.href = localeDomain || (0, _router).addBasePath((0, _router).addLocale(as, curLocale, router && router.defaultLocale));\n }\n return(/*#__PURE__*/ _react.default.cloneElement(child, childProps));\n}\nvar _default = Link;\nexports.default = _default;\n\n//# sourceMappingURL=link.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.useIntersection = useIntersection;\nvar _react = require(\"react\");\nvar _requestIdleCallback = require(\"./request-idle-callback\");\nconst hasIntersectionObserver = typeof IntersectionObserver !== 'undefined';\nfunction useIntersection({ rootRef , rootMargin , disabled }) {\n const isDisabled = disabled || !hasIntersectionObserver;\n const unobserve = (0, _react).useRef();\n const [visible, setVisible] = (0, _react).useState(false);\n const [root, setRoot] = (0, _react).useState(rootRef ? rootRef.current : null);\n const setRef = (0, _react).useCallback((el)=>{\n if (unobserve.current) {\n unobserve.current();\n unobserve.current = undefined;\n }\n if (isDisabled || visible) return;\n if (el && el.tagName) {\n unobserve.current = observe(el, (isVisible)=>isVisible && setVisible(isVisible)\n , {\n root,\n rootMargin\n });\n }\n }, [\n isDisabled,\n root,\n rootMargin,\n visible\n ]);\n (0, _react).useEffect(()=>{\n if (!hasIntersectionObserver) {\n if (!visible) {\n const idleCallback = (0, _requestIdleCallback).requestIdleCallback(()=>setVisible(true)\n );\n return ()=>(0, _requestIdleCallback).cancelIdleCallback(idleCallback)\n ;\n }\n }\n }, [\n visible\n ]);\n (0, _react).useEffect(()=>{\n if (rootRef) setRoot(rootRef.current);\n }, [\n rootRef\n ]);\n return [\n setRef,\n visible\n ];\n}\nfunction observe(element, callback, options) {\n const { id , observer , elements } = createObserver(options);\n elements.set(element, callback);\n observer.observe(element);\n return function unobserve() {\n elements.delete(element);\n observer.unobserve(element);\n // Destroy observer when there's nothing left to watch:\n if (elements.size === 0) {\n observer.disconnect();\n observers.delete(id);\n let index = idList.findIndex((obj)=>obj.root === id.root && obj.margin === id.margin\n );\n if (index > -1) {\n idList.splice(index, 1);\n }\n }\n };\n}\nconst observers = new Map();\nconst idList = [];\nfunction createObserver(options) {\n const id = {\n root: options.root || null,\n margin: options.rootMargin || ''\n };\n let existing = idList.find((obj)=>obj.root === id.root && obj.margin === id.margin\n );\n let instance;\n if (existing) {\n instance = observers.get(existing);\n } else {\n instance = observers.get(id);\n idList.push(id);\n }\n if (instance) {\n return instance;\n }\n const elements = new Map();\n const observer = new IntersectionObserver((entries)=>{\n entries.forEach((entry)=>{\n const callback = elements.get(entry.target);\n const isVisible = entry.isIntersecting || entry.intersectionRatio > 0;\n if (callback && isVisible) {\n callback(isVisible);\n }\n });\n }, options);\n observers.set(id, instance = {\n id,\n observer,\n elements\n });\n return instance;\n}\n\n//# sourceMappingURL=use-intersection.js.map","const headerNavLinks = [{ href: '/blog', title: 'Blog' }]\n\nexport default headerNavLinks\n","import Link from './Link'\nimport siteMetadata from '@/data/siteMetadata'\nimport SocialIcon from '@/components/social-icons'\n\nexport default function Footer() {\n return (\n
\n
\n
\n \n \n \n
\n
\n
{siteMetadata.author}
\n
{` • `}
\n
{`© ${new Date().getFullYear()}`}
\n
{` • `}
\n {siteMetadata.title}\n
\n
\n
\n )\n}\n","import { useState } from 'react'\nimport Link from './Link'\nimport headerNavLinks from '@/data/headerNavLinks'\n\nconst MobileNav = () => {\n const [navShow, setNavShow] = useState(false)\n\n const onToggleNav = () => {\n setNavShow((status) => {\n if (status) {\n document.body.style.overflow = 'auto'\n } else {\n // Prevent scrolling\n document.body.style.overflow = 'hidden'\n }\n return !status\n })\n }\n\n return (\n
\n \n \n {navShow ? (\n \n ) : (\n \n )}\n \n \n \n \n \n
\n \n )\n}\n\nexport default MobileNav\n","import { useEffect, useState } from 'react'\nimport { useTheme } from 'next-themes'\n\nconst ThemeSwitch = () => {\n const [mounted, setMounted] = useState(false)\n const { theme, setTheme, resolvedTheme } = useTheme()\n\n // When mounted on client, now we can show the UI\n useEffect(() => setMounted(true), [])\n\n return (\n setTheme(theme === 'dark' || resolvedTheme === 'dark' ? 'light' : 'dark')}\n >\n \n {mounted && (theme === 'dark' || resolvedTheme === 'dark') ? (\n \n ) : (\n \n )}\n \n \n )\n}\n\nexport default ThemeSwitch\n","import siteMetadata from '@/data/siteMetadata'\nimport headerNavLinks from '@/data/headerNavLinks'\nimport Logo from '@/data/logo.svg'\nimport Link from './Link'\nimport SectionContainer from './SectionContainer'\nimport Footer from './Footer'\nimport MobileNav from './MobileNav'\nimport ThemeSwitch from './ThemeSwitch'\nimport { ReactNode } from 'react'\n\ninterface Props {\n children: ReactNode\n}\n\nconst LayoutWrapper = ({ children }: Props) => {\n return (\n \n
\n
\n
\n \n
\n
\n EdgeSEO\n .pro\n
\n
\n \n
\n
\n
\n {headerNavLinks.map((link) => (\n \n {link.title}\n \n ))}\n
\n \n \n
\n
\n
{children}
\n
\n
\n
\n )\n}\n\nexport default LayoutWrapper\n","/**\n * Based on https://gist.github.com/claus/992a5596d6532ac91b24abe24e10ae81\n * - see https://github.com/vercel/next.js/issues/3303#issuecomment-628400930\n * - see https://github.com/vercel/next.js/issues/12530#issuecomment-628864374\n */\nimport { useEffect } from 'react'\nimport Router, { NextRouter } from 'next/router'\n\nfunction saveScrollPos(asPath: string) {\n sessionStorage.setItem(\n `scrollPos:${asPath}`,\n JSON.stringify({ x: window.scrollX, y: window.scrollY })\n )\n}\n\nfunction restoreScrollPos(asPath: string) {\n const json = sessionStorage.getItem(`scrollPos:${asPath}`)\n const scrollPos = json ? JSON.parse(json) : undefined\n if (scrollPos) {\n window.scrollTo(scrollPos.x, scrollPos.y)\n }\n}\n\nexport function useScrollRestoration(router: NextRouter) {\n useEffect(() => {\n if (!('scrollRestoration' in window.history)) return\n let shouldScrollRestore = false\n window.history.scrollRestoration = 'manual'\n restoreScrollPos(router.asPath)\n\n const onBeforeUnload = (event: BeforeUnloadEvent) => {\n saveScrollPos(router.asPath)\n delete event['returnValue']\n }\n\n const onRouteChangeStart = () => {\n saveScrollPos(router.asPath)\n }\n\n const onRouteChangeComplete = (url: string) => {\n if (shouldScrollRestore) {\n shouldScrollRestore = false\n /**\n * Calling with relative url, not expected asPath, so this\n * will break if there is a basePath or locale path prefix.\n */\n restoreScrollPos(url)\n }\n }\n\n window.addEventListener('beforeunload', onBeforeUnload)\n Router.events.on('routeChangeStart', onRouteChangeStart)\n Router.events.on('routeChangeComplete', onRouteChangeComplete)\n Router.beforePopState(() => {\n shouldScrollRestore = true\n return true\n })\n\n return () => {\n window.removeEventListener('beforeunload', onBeforeUnload)\n Router.events.off('routeChangeStart', onRouteChangeStart)\n Router.events.off('routeChangeComplete', onRouteChangeComplete)\n Router.beforePopState(() => true)\n }\n }, [router])\n}\n","import '@/css/tailwind.css'\nimport '@/css/prism.css'\nimport 'katex/dist/katex.css'\n\nimport '@fontsource/inter/variable-full.css'\n\nimport { ThemeProvider } from 'next-themes'\nimport type { AppProps } from 'next/app'\nimport Head from 'next/head'\n\nimport siteMetadata from '@/data/siteMetadata'\nimport Analytics from '@/components/analytics'\nimport LayoutWrapper from '@/components/LayoutWrapper'\nimport { useScrollRestoration } from '@/lib/useScrollRestoration'\n\nexport default function App({ Component, pageProps, router }: AppProps) {\n useScrollRestoration(router)\n\n return (\n \n \n \n \n \n \n \n \n )\n}\n","import { __assign } from \"tslib\";\nexport * from './exports';\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\nvar windowIntegrations = {};\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}\nvar INTEGRATIONS = __assign(__assign(__assign({}, windowIntegrations), CoreIntegrations), BrowserIntegrations);\nexport { INTEGRATIONS as Integrations, Transports };\n//# sourceMappingURL=index.js.map","export var TRACEPARENT_REGEXP = new RegExp('^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$');\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 */\nexport function extractTraceparentData(traceparent) {\n var matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n var parentSampled = void 0;\n if (matches[3] === '1') {\n parentSampled = true;\n }\n else if (matches[3] === '0') {\n parentSampled = false;\n }\n return {\n traceId: matches[1],\n parentSampled: parentSampled,\n parentSpanId: matches[2],\n };\n }\n return undefined;\n}\n//# sourceMappingURL=tracing.js.map","import { getGlobalObject, logger } from '@sentry/utils';\nimport { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from '../constants';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { getActiveTransaction } from '../utils';\nvar global = getGlobalObject();\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection() {\n if (global && global.document) {\n global.document.addEventListener('visibilitychange', function () {\n var activeTransaction = getActiveTransaction();\n if (global.document.hidden && activeTransaction) {\n var statusType = 'cancelled';\n IS_DEBUG_BUILD &&\n logger.log(\"[Tracing] Transaction: \" + statusType + \" -> since tab moved to the background, op: \" + activeTransaction.op);\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.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[2]);\n activeTransaction.finish();\n }\n });\n }\n else {\n IS_DEBUG_BUILD && logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n//# sourceMappingURL=backgroundtab.js.map","/*\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 */\nexport var bindReporter = function (callback, metric, reportAllChanges) {\n var prevValue;\n return function (forceReport) {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n metric.delta = metric.value - (prevValue || 0);\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//# sourceMappingURL=bindReporter.js.map","/*\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 */\nimport { generateUniqueID } from './generateUniqueID';\nexport var initMetric = function (name, value) {\n return {\n name: name,\n value: (value !== null && value !== void 0 ? value : -1),\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n };\n};\n//# sourceMappingURL=initMetric.js.map","/*\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 * 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 */\nexport var generateUniqueID = function () {\n return \"v2-\" + Date.now() + \"-\" + (Math.floor(Math.random() * (9e12 - 1)) + 1e12);\n};\n//# sourceMappingURL=generateUniqueID.js.map","/*\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 * 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 */\nexport var observe = function (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 var po = new PerformanceObserver(function (l) { return l.getEntries().map(callback); });\n po.observe({ type: type, buffered: true });\n return po;\n }\n }\n catch (e) {\n // Do nothing.\n }\n return;\n};\n//# sourceMappingURL=observe.js.map","/*\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 */\nimport { getGlobalObject } from '@sentry/utils';\nexport var onHidden = function (cb, once) {\n var onHiddenOrPageHide = function (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//# sourceMappingURL=onHidden.js.map","/*\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 */\nimport { getGlobalObject } from '@sentry/utils';\nimport { onHidden } from './onHidden';\nvar firstHiddenTime = -1;\nvar initHiddenTime = function () {\n return getGlobalObject().document.visibilityState === 'hidden' ? 0 : Infinity;\n};\nvar trackChanges = function () {\n // Update the time if/when the document becomes hidden.\n onHidden(function (_a) {\n var timeStamp = _a.timeStamp;\n firstHiddenTime = timeStamp;\n }, true);\n};\nexport var getVisibilityWatcher = function () {\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//# sourceMappingURL=getVisibilityWatcher.js.map","/*\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 */\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nvar reportedMetricIDs = {};\nexport var getLCP = function (onReport, reportAllChanges) {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('LCP');\n var report;\n var entryHandler = function (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 // 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 if (report) {\n report();\n }\n };\n var po = observe('largest-contentful-paint', entryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n var stopListening_1 = function () {\n if (!reportedMetricIDs[metric.id]) {\n po.takeRecords().map(entryHandler);\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\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(function (type) {\n addEventListener(type, stopListening_1, { once: true, capture: true });\n });\n onHidden(stopListening_1, true);\n }\n};\n//# sourceMappingURL=getLCP.js.map","import { __assign, __rest } from \"tslib\";\nimport { browserPerformanceTimeOrigin, getGlobalObject, htmlTreeAsString, isNodeEnv, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { msToSec } from '../utils';\nimport { getCLS } from './web-vitals/getCLS';\nimport { getFID } from './web-vitals/getFID';\nimport { getLCP } from './web-vitals/getLCP';\nimport { getVisibilityWatcher } from './web-vitals/lib/getVisibilityWatcher';\nvar global = getGlobalObject();\n/** Class tracking metrics */\nvar MetricsInstrumentation = /** @class */ (function () {\n function MetricsInstrumentation(_reportAllChanges) {\n if (_reportAllChanges === void 0) { _reportAllChanges = false; }\n this._reportAllChanges = _reportAllChanges;\n this._measurements = {};\n this._performanceCursor = 0;\n if (!isNodeEnv() && global && global.performance && global.document) {\n if (global.performance.mark) {\n global.performance.mark('sentry-tracing-init');\n }\n this._trackCLS();\n this._trackLCP();\n this._trackFID();\n }\n }\n /** Add performance related spans to a transaction */\n MetricsInstrumentation.prototype.addPerformanceEntries = function (transaction) {\n var _this = this;\n if (!global || !global.performance || !global.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n IS_DEBUG_BUILD && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n var responseStartTimestamp;\n var requestStartTimestamp;\n global.performance\n .getEntries()\n .slice(this._performanceCursor)\n .forEach(function (entry) {\n var startTime = msToSec(entry.startTime);\n var duration = msToSec(entry.duration);\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\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 var startTimestamp = addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\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 if (entry.name === 'first-paint' && shouldRecord) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding FP');\n _this._measurements['fp'] = { value: entry.startTime };\n _this._measurements['mark.fp'] = { value: startTimestamp };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding FCP');\n _this._measurements['fcp'] = { value: entry.startTime };\n _this._measurements['mark.fcp'] = { value: startTimestamp };\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 this._performanceCursor = Math.max(performance.getEntries().length - 1, 0);\n this._trackNavigator(transaction);\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // normalize applicable web vital values to be relative to transaction.startTimestamp\n var timeOrigin_1 = msToSec(browserPerformanceTimeOrigin);\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 IS_DEBUG_BUILD && logger.log('[Measurements] Adding TTFB');\n this._measurements['ttfb'] = { value: (responseStartTimestamp - transaction.startTimestamp) * 1000 };\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 this._measurements['ttfb.requestTime'] = { value: (responseStartTimestamp - requestStartTimestamp) * 1000 };\n }\n }\n ['fcp', 'fp', 'lcp'].forEach(function (name) {\n if (!_this._measurements[name] || timeOrigin_1 >= 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 = _this._measurements[name].value;\n var measurementTimestamp = timeOrigin_1 + msToSec(oldValue);\n // normalizedValue should be in milliseconds\n var normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n var delta = normalizedValue - oldValue;\n IS_DEBUG_BUILD &&\n logger.log(\"[Measurements] Normalized \" + name + \" from \" + oldValue + \" to \" + normalizedValue + \" (\" + delta + \")\");\n _this._measurements[name].value = normalizedValue;\n });\n if (this._measurements['mark.fid'] && this._measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: this._measurements['mark.fid'].value + msToSec(this._measurements['fid'].value),\n op: 'web.vitals',\n startTimestamp: this._measurements['mark.fid'].value,\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 this._measurements)) {\n delete this._measurements.cls;\n }\n transaction.setMeasurements(this._measurements);\n tagMetricInfo(transaction, this._lcpEntry, this._clsEntry);\n transaction.setTag('sentry_reportAllChanges', this._reportAllChanges);\n }\n };\n /**\n * Capture the information of the user agent.\n */\n MetricsInstrumentation.prototype._trackNavigator = function (transaction) {\n var navigator = global.navigator;\n if (!navigator) {\n return;\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 if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n if (isMeasurementValue(connection.rtt)) {\n this._measurements['connection.rtt'] = { value: connection.rtt };\n }\n if (isMeasurementValue(connection.downlink)) {\n this._measurements['connection.downlink'] = { value: connection.downlink };\n }\n }\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', String(navigator.deviceMemory));\n }\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n };\n /** Starts tracking the Cumulative Layout Shift on the current page. */\n MetricsInstrumentation.prototype._trackCLS = function () {\n var _this = this;\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n getCLS(function (metric) {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding CLS');\n _this._measurements['cls'] = { value: metric.value };\n _this._clsEntry = entry;\n });\n };\n /** Starts tracking the Largest Contentful Paint on the current page. */\n MetricsInstrumentation.prototype._trackLCP = function () {\n var _this = this;\n getLCP(function (metric) {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n var startTime = msToSec(entry.startTime);\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding LCP');\n _this._measurements['lcp'] = { value: metric.value };\n _this._measurements['mark.lcp'] = { value: timeOrigin + startTime };\n _this._lcpEntry = entry;\n }, this._reportAllChanges);\n };\n /** Starts tracking the First Input Delay on the current page. */\n MetricsInstrumentation.prototype._trackFID = function () {\n var _this = this;\n getFID(function (metric) {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n var startTime = msToSec(entry.startTime);\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding FID');\n _this._measurements['fid'] = { value: metric.value };\n _this._measurements['mark.fid'] = { value: timeOrigin + startTime };\n });\n };\n return MetricsInstrumentation;\n}());\nexport { MetricsInstrumentation };\n/** Instrument navigation entries */\nfunction addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(function (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/** Create measure related spans */\nfunction addMeasureSpans(transaction, entry, startTime, duration, timeOrigin) {\n var measureStartTimestamp = timeOrigin + startTime;\n var measureEndTimestamp = measureStartTimestamp + duration;\n _startChild(transaction, {\n description: entry.name,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType,\n startTimestamp: measureStartTimestamp,\n });\n return measureStartTimestamp;\n}\n/** Create resource-related spans */\nexport function addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin) {\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 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 var startTimestamp = timeOrigin + startTime;\n var endTimestamp = startTimestamp + duration;\n _startChild(transaction, {\n description: resourceName,\n endTimestamp: endTimestamp,\n op: entry.initiatorType ? \"resource.\" + entry.initiatorType : 'resource',\n startTimestamp: startTimestamp,\n data: data,\n });\n}\n/** Create performance navigation related spans */\nfunction addPerformanceNavigationTiming(transaction, entry, event, timeOrigin, description, eventEnd) {\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: (description !== null && description !== void 0 ? description : event),\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\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 _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd),\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 */\nexport function _startChild(transaction, _a) {\n var startTimestamp = _a.startTimestamp, ctx = __rest(_a, [\"startTimestamp\"]);\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n return transaction.startChild(__assign({ startTimestamp: startTimestamp }, ctx));\n}\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/** Add LCP / CLS data to transaction to allow debugging */\nfunction tagMetricInfo(transaction, lcpEntry, clsEntry) {\n if (lcpEntry) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding LCP Data');\n // Capture Properties of the LCP element that contributes to the LCP.\n if (lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(lcpEntry.element));\n }\n if (lcpEntry.id) {\n transaction.setTag('lcp.id', lcpEntry.id);\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 transaction.setTag('lcp.size', lcpEntry.size);\n }\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (clsEntry && clsEntry.sources) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding CLS Data');\n clsEntry.sources.forEach(function (source, index) {\n return transaction.setTag(\"cls.source.\" + (index + 1), htmlTreeAsString(source.node));\n });\n }\n}\n//# sourceMappingURL=metrics.js.map","/*\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 */\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nexport var getCLS = function (onReport, reportAllChanges) {\n var metric = initMetric('CLS', 0);\n var report;\n var sessionValue = 0;\n var sessionEntries = [];\n var entryHandler = function (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 // 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 (sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n }\n else {\n sessionValue = entry.value;\n sessionEntries = [entry];\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 var po = observe('layout-shift', entryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(function () {\n po.takeRecords().map(entryHandler);\n report(true);\n });\n }\n};\n//# sourceMappingURL=getCLS.js.map","/*\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 */\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nexport var getFID = function (onReport, reportAllChanges) {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('FID');\n var report;\n var entryHandler = function (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 var po = observe('first-input', entryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(function () {\n po.takeRecords().map(entryHandler);\n po.disconnect();\n }, true);\n }\n};\n//# sourceMappingURL=getFID.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { addInstrumentationHandler, isInstanceOf, isMatchingPattern } from '@sentry/utils';\nimport { getActiveTransaction, hasTracingEnabled } from '../utils';\nexport var DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\nexport var defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS,\n};\n/** Registers span creators for xhr and fetch requests */\nexport function instrumentOutgoingRequests(_options) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = __assign(__assign({}, defaultRequestInstrumentationOptions), _options), traceFetch = _a.traceFetch, traceXHR = _a.traceXHR, tracingOrigins = _a.tracingOrigins, shouldCreateSpanForRequest = _a.shouldCreateSpanForRequest;\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 var defaultShouldCreateSpan = function (url) {\n if (urlMap[url]) {\n return urlMap[url];\n }\n var origins = tracingOrigins;\n urlMap[url] =\n origins.some(function (origin) { return isMatchingPattern(url, origin); }) &&\n !isMatchingPattern(url, 'sentry_key');\n return urlMap[url];\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 var shouldCreateSpan = defaultShouldCreateSpan;\n if (typeof shouldCreateSpanForRequest === 'function') {\n shouldCreateSpan = function (url) {\n return defaultShouldCreateSpan(url) && shouldCreateSpanForRequest(url);\n };\n }\n var spans = {};\n if (traceFetch) {\n addInstrumentationHandler('fetch', function (handlerData) {\n fetchCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n if (traceXHR) {\n addInstrumentationHandler('xhr', function (handlerData) {\n xhrCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n}\n/**\n * Create and track fetch request spans\n */\nexport function fetchCallback(handlerData, shouldCreateSpan, spans) {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n if (handlerData.endTimestamp) {\n var spanId = handlerData.fetchData.__span;\n if (!spanId)\n return;\n var span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n }\n else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: __assign(__assign({}, handlerData.fetchData), { type: 'fetch' }),\n description: handlerData.fetchData.method + \" \" + handlerData.fetchData.url,\n op: 'http.client',\n });\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n var request = (handlerData.args[0] = handlerData.args[0]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var options = (handlerData.args[1] = handlerData.args[1] || {});\n var headers = options.headers;\n if (isInstanceOf(request, Request)) {\n headers = request.headers;\n }\n if (headers) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (typeof headers.append === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n headers.append('sentry-trace', span.toTraceparent());\n }\n else if (Array.isArray(headers)) {\n headers = __spread(headers, [['sentry-trace', span.toTraceparent()]]);\n }\n else {\n headers = __assign(__assign({}, headers), { 'sentry-trace': span.toTraceparent() });\n }\n }\n else {\n headers = { 'sentry-trace': span.toTraceparent() };\n }\n options.headers = headers;\n }\n}\n/**\n * Create and track xhr request spans\n */\nexport function xhrCallback(handlerData, shouldCreateSpan, spans) {\n if (!hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))) {\n return;\n }\n var xhr = handlerData.xhr.__sentry_xhr__;\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)\n return;\n var span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\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: __assign(__assign({}, xhr.data), { type: 'xhr', method: xhr.method, url: xhr.url }),\n description: xhr.method + \" \" + xhr.url,\n op: 'http.client',\n });\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n if (handlerData.xhr.setRequestHeader) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n }\n catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n//# sourceMappingURL=request.js.map","import { addInstrumentationHandler, getGlobalObject, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from '../flags';\nvar global = getGlobalObject();\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults(customStartTransaction, startTransactionOnPageLoad, startTransactionOnLocationChange) {\n if (startTransactionOnPageLoad === void 0) { startTransactionOnPageLoad = true; }\n if (startTransactionOnLocationChange === void 0) { startTransactionOnLocationChange = true; }\n if (!global || !global.location) {\n IS_DEBUG_BUILD && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n var startingUrl = global.location.href;\n var activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({ name: global.location.pathname, op: 'pageload' });\n }\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', function (_a) {\n var to = _a.to, from = _a.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 if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n IS_DEBUG_BUILD && 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({ name: global.location.pathname, op: 'navigation' });\n }\n });\n }\n}\n//# sourceMappingURL=router.js.map","import { __assign } from \"tslib\";\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { startIdleTransaction } from '../hubextensions';\nimport { DEFAULT_IDLE_TIMEOUT } from '../idletransaction';\nimport { extractTraceparentData, secToMs } from '../utils';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { MetricsInstrumentation } from './metrics';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests, } from './request';\nimport { instrumentRoutingWithDefaults } from './router';\nexport var DEFAULT_MAX_TRANSACTION_DURATION_SECONDS = 600;\nvar DEFAULT_BROWSER_TRACING_OPTIONS = __assign({ idleTimeout: DEFAULT_IDLE_TIMEOUT, markBackgroundTransactions: true, maxTransactionDuration: DEFAULT_MAX_TRANSACTION_DURATION_SECONDS, routingInstrumentation: instrumentRoutingWithDefaults, startTransactionOnLocationChange: true, startTransactionOnPageLoad: true }, defaultRequestInstrumentationOptions);\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 */\nvar BrowserTracing = /** @class */ (function () {\n function BrowserTracing(_options) {\n /**\n * @inheritDoc\n */\n this.name = BrowserTracing.id;\n /** Store configured idle timeout so that it can be added as a tag to transactions */\n this._configuredIdleTimeout = undefined;\n var tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;\n // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances\n if (_options) {\n this._configuredIdleTimeout = _options.idleTimeout;\n if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins) && _options.tracingOrigins.length !== 0) {\n tracingOrigins = _options.tracingOrigins;\n }\n else {\n IS_DEBUG_BUILD && (this._emitOptionsWarning = true);\n }\n }\n this.options = __assign(__assign(__assign({}, DEFAULT_BROWSER_TRACING_OPTIONS), _options), { tracingOrigins: tracingOrigins });\n var _metricOptions = this.options._metricOptions;\n this._metrics = new MetricsInstrumentation(_metricOptions && _metricOptions._reportAllChanges);\n }\n /**\n * @inheritDoc\n */\n BrowserTracing.prototype.setupOnce = function (_, getCurrentHub) {\n var _this = this;\n this._getCurrentHub = getCurrentHub;\n if (this._emitOptionsWarning) {\n IS_DEBUG_BUILD &&\n logger.warn('[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.');\n IS_DEBUG_BUILD &&\n logger.warn(\"[Tracing] We added a reasonable default for you: \" + defaultRequestInstrumentationOptions.tracingOrigins);\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = this.options, instrumentRouting = _a.routingInstrumentation, startTransactionOnLocationChange = _a.startTransactionOnLocationChange, startTransactionOnPageLoad = _a.startTransactionOnPageLoad, markBackgroundTransactions = _a.markBackgroundTransactions, traceFetch = _a.traceFetch, traceXHR = _a.traceXHR, tracingOrigins = _a.tracingOrigins, shouldCreateSpanForRequest = _a.shouldCreateSpanForRequest;\n instrumentRouting(function (context) { return _this._createRouteTransaction(context); }, startTransactionOnPageLoad, startTransactionOnLocationChange);\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n instrumentOutgoingRequests({ traceFetch: traceFetch, traceXHR: traceXHR, tracingOrigins: tracingOrigins, shouldCreateSpanForRequest: shouldCreateSpanForRequest });\n };\n /** Create routing idle transaction. */\n BrowserTracing.prototype._createRouteTransaction = function (context) {\n var _this = this;\n if (!this._getCurrentHub) {\n IS_DEBUG_BUILD &&\n logger.warn(\"[Tracing] Did not create \" + context.op + \" transaction because _getCurrentHub is invalid.\");\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = this.options, beforeNavigate = _a.beforeNavigate, idleTimeout = _a.idleTimeout, maxTransactionDuration = _a.maxTransactionDuration;\n var parentContextFromHeader = context.op === 'pageload' ? getHeaderContext() : undefined;\n var expandedContext = __assign(__assign(__assign({}, context), parentContextFromHeader), { trimEnd: true });\n var modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\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 ? __assign(__assign({}, expandedContext), { sampled: false }) : modifiedContext;\n if (finalContext.sampled === false) {\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Will not send \" + finalContext.op + \" transaction because of beforeNavigate.\");\n }\n IS_DEBUG_BUILD && logger.log(\"[Tracing] Starting \" + finalContext.op + \" transaction on scope\");\n var hub = this._getCurrentHub();\n var location = getGlobalObject().location;\n var idleTransaction = startIdleTransaction(hub, finalContext, idleTimeout, true, { location: location });\n idleTransaction.registerBeforeFinishCallback(function (transaction, endTimestamp) {\n _this._metrics.addPerformanceEntries(transaction);\n adjustTransactionDuration(secToMs(maxTransactionDuration), transaction, endTimestamp);\n });\n idleTransaction.setTag('idleTimeout', this._configuredIdleTimeout);\n return idleTransaction;\n };\n /**\n * @inheritDoc\n */\n BrowserTracing.id = 'BrowserTracing';\n return BrowserTracing;\n}());\nexport { BrowserTracing };\n/**\n * Gets transaction context from a sentry-trace meta.\n *\n * @returns Transaction context data from the header or undefined if there's no header or the header is malformed\n */\nexport function getHeaderContext() {\n var header = getMetaContent('sentry-trace');\n if (header) {\n return extractTraceparentData(header);\n }\n return undefined;\n}\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName) {\n var el = getGlobalObject().document.querySelector(\"meta[name=\" + metaName + \"]\");\n return el ? el.getAttribute('content') : null;\n}\n/** Adjusts transaction value based on max transaction duration */\nfunction adjustTransactionDuration(maxDuration, transaction, endTimestamp) {\n var diff = endTimestamp - transaction.startTimestamp;\n var isOutdatedTransaction = endTimestamp && (diff > maxDuration || diff < 0);\n if (isOutdatedTransaction) {\n transaction.setStatus('deadline_exceeded');\n transaction.setTag('maxTransactionDurationExceeded', 'true');\n }\n}\n//# sourceMappingURL=browsertracing.js.map","import { addExtensionMethods } from './hubextensions';\nimport * as Integrations from './integrations';\nexport { Integrations };\n// This is already exported as part of `Integrations` above (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n//\n// Previously we expected users to import tracing integrations like\n//\n// import { Integrations } from '@sentry/tracing';\n// const instance = new Integrations.BrowserTracing();\n//\n// This makes the integrations unable to be treeshaken though. To address this, we now have\n// this individual export. We now expect users to consume BrowserTracing like so:\n//\n// import { BrowserTracing } from '@sentry/tracing';\n// const instance = new BrowserTracing();\n//\n// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts\nexport { BrowserTracing } from './browser';\nexport { Span, spanStatusfromHttpCode } from './span';\n// eslint-disable-next-line deprecation/deprecation\nexport { SpanStatus } from './spanstatus';\nexport { Transaction } from './transaction';\nexport { \n// TODO deprecate old name in v7\ninstrumentOutgoingRequests as registerRequestInstrumentation, defaultRequestInstrumentationOptions, } from './browser';\nexport { IdleTransaction } from './idletransaction';\nexport { startIdleTransaction } from './hubextensions';\n// We are patching the global object with our hub extension methods\naddExtensionMethods();\nexport { addExtensionMethods };\nexport { extractTraceparentData, getActiveTransaction, hasTracingEnabled, stripUrlQueryAndFragment, TRACEPARENT_REGEXP, } from './utils';\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { __assign, __read, __spread } from \"tslib\";\nimport { fill, getGlobalObject, stripUrlQueryAndFragment } from '@sentry/utils';\nimport { default as Router } from 'next/router';\nvar global = getGlobalObject();\nvar DEFAULT_TAGS = {\n 'routing.instrumentation': 'next-router',\n};\nvar activeTransaction = undefined;\nvar prevTransactionName = undefined;\nvar startTransaction = undefined;\n/**\n * Creates routing instrumention for Next Router. Only supported for\n * client side routing. Works for Next >= 10.\n *\n * Leverages the SingletonRouter from the `next/router` to\n * generate pageload/navigation transactions and parameterize\n * transaction names.\n */\nexport function nextRouterInstrumentation(startTransactionCb, startTransactionOnPageLoad, startTransactionOnLocationChange) {\n if (startTransactionOnPageLoad === void 0) { startTransactionOnPageLoad = true; }\n if (startTransactionOnLocationChange === void 0) { startTransactionOnLocationChange = true; }\n startTransaction = startTransactionCb;\n Router.ready(function () {\n // We can only start the pageload transaction when we have access to the parameterized\n // route name. Setting the transaction name after the transaction is started could lead\n // to possible race conditions with the router, so this approach was taken.\n if (startTransactionOnPageLoad) {\n prevTransactionName = Router.route !== null ? stripUrlQueryAndFragment(Router.route) : global.location.pathname;\n activeTransaction = startTransactionCb({\n name: prevTransactionName,\n op: 'pageload',\n tags: DEFAULT_TAGS,\n });\n }\n // Spans that aren't attached to any transaction are lost; so if transactions aren't\n // created (besides potentially the onpageload transaction), no need to wrap the router.\n if (!startTransactionOnLocationChange)\n return;\n // `withRouter` uses `useRouter` underneath:\n // https://github.com/vercel/next.js/blob/de42719619ae69fbd88e445100f15701f6e1e100/packages/next/client/with-router.tsx#L21\n // Router events also use the router:\n // https://github.com/vercel/next.js/blob/de42719619ae69fbd88e445100f15701f6e1e100/packages/next/client/router.ts#L92\n // `Router.changeState` handles the router state changes, so it may be enough to only wrap it\n // (instead of wrapping all of the Router's functions).\n var routerPrototype = Object.getPrototypeOf(Router.router);\n fill(routerPrototype, 'changeState', changeStateWrapper);\n });\n}\n/**\n * Wraps Router.changeState()\n * https://github.com/vercel/next.js/blob/da97a18dafc7799e63aa7985adc95f213c2bf5f3/packages/next/next-server/lib/router/router.ts#L1204\n * Start a navigation transaction every time the router changes state.\n */\nfunction changeStateWrapper(originalChangeStateWrapper) {\n var wrapper = function (method, \n // The parameterized url, ex. posts/[id]/[comment]\n url, \n // The actual url, ex. posts/85/my-comment\n as, options) {\n // At the moment there are no additional arguments (meaning the rest parameter is empty).\n // This is meant to protect from future additions to Next.js API, especially since this is an\n // internal API.\n var args = [];\n for (\n // At the moment there are no additional arguments (meaning the rest parameter is empty).\n // This is meant to protect from future additions to Next.js API, especially since this is an\n // internal API.\n var _i = 4; \n // At the moment there are no additional arguments (meaning the rest parameter is empty).\n // This is meant to protect from future additions to Next.js API, especially since this is an\n // internal API.\n _i < arguments.length; \n // At the moment there are no additional arguments (meaning the rest parameter is empty).\n // This is meant to protect from future additions to Next.js API, especially since this is an\n // internal API.\n _i++) {\n // At the moment there are no additional arguments (meaning the rest parameter is empty).\n // This is meant to protect from future additions to Next.js API, especially since this is an\n // internal API.\n args[_i - 4] = arguments[_i];\n }\n var newTransactionName = stripUrlQueryAndFragment(url);\n // do not start a transaction if it's from the same page\n if (startTransaction !== undefined && prevTransactionName !== newTransactionName) {\n if (activeTransaction) {\n activeTransaction.finish();\n }\n var tags = __assign(__assign(__assign({}, DEFAULT_TAGS), { method: method }), options);\n if (prevTransactionName) {\n tags.from = prevTransactionName;\n }\n prevTransactionName = newTransactionName;\n activeTransaction = startTransaction({\n name: prevTransactionName,\n op: 'navigation',\n tags: tags,\n });\n }\n return originalChangeStateWrapper.call.apply(originalChangeStateWrapper, __spread([this, method, url, as, options], args));\n };\n return wrapper;\n}\n//# sourceMappingURL=client.js.map","import { __read, __spread } from \"tslib\";\n/**\n * Recursively traverses an object to update an existing nested key.\n * Note: The provided key path must include existing properties,\n * the function will not create objects while traversing.\n *\n * @param obj An object to update\n * @param value The value to update the nested key with\n * @param keyPath The path to the key to update ex. fizz.buzz.foo\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setNestedKey(obj, keyPath, value) {\n // Ex. foo.bar.zoop will extract foo and bar.zoop\n var match = keyPath.match(/([a-z]+)\\.(.*)/i);\n if (match === null) {\n obj[keyPath] = value;\n }\n else {\n setNestedKey(obj[match[1]], match[2], value);\n }\n}\n/**\n * Retrieves the patched integrations with the provided integration.\n *\n * The integration must be present in the final user integrations, and they are compared\n * by integration name. If the user has defined one, there's nothing to patch; if not,\n * the provided integration is added.\n *\n * @param integration The integration to patch, if necessary.\n * @param userIntegrations Integrations defined by the user.\n * @param options options to update for a particular integration\n * @returns Final integrations, patched if necessary.\n */\nexport function addIntegration(integration, userIntegrations, options) {\n if (options === void 0) { options = {}; }\n if (Array.isArray(userIntegrations)) {\n return addIntegrationToArray(integration, userIntegrations, options);\n }\n else {\n return addIntegrationToFunction(integration, userIntegrations, options);\n }\n}\nfunction addIntegrationToArray(integration, userIntegrations, options) {\n var includesName = false;\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var x = 0; x < userIntegrations.length; x++) {\n if (userIntegrations[x].name === integration.name) {\n includesName = true;\n }\n var op = options[userIntegrations[x].name];\n if (op) {\n setNestedKey(userIntegrations[x], op.keyPath, op.value);\n }\n }\n if (includesName) {\n return userIntegrations;\n }\n return __spread(userIntegrations, [integration]);\n}\nfunction addIntegrationToFunction(integration, userIntegrationsFunc, options) {\n var wrapper = function (defaultIntegrations) {\n var userFinalIntegrations = userIntegrationsFunc(defaultIntegrations);\n return addIntegrationToArray(integration, userFinalIntegrations, options);\n };\n return wrapper;\n}\n//# sourceMappingURL=userIntegrations.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { configureScope, init as reactInit, Integrations as BrowserIntegrations } from '@sentry/react';\nimport { BrowserTracing, defaultRequestInstrumentationOptions } from '@sentry/tracing';\nimport { nextRouterInstrumentation } from './performance/client';\nimport { buildMetadata } from './utils/metadata';\nimport { addIntegration } from './utils/userIntegrations';\nexport * from '@sentry/react';\nexport { nextRouterInstrumentation } from './performance/client';\nexport var Integrations = __assign(__assign({}, BrowserIntegrations), { BrowserTracing: BrowserTracing });\n// This is already exported as part of `Integrations` above (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n//\n// Previously we expected users to import `BrowserTracing` like this:\n//\n// import { Integrations } from '@sentry/nextjs';\n// const instance = new Integrations.BrowserTracing();\n//\n// This makes the integrations unable to be treeshaken though. To address this, we now have\n// this individual export. We now expect users to consume BrowserTracing like so:\n//\n// import { BrowserTracing } from '@sentry/nextjs';\n// const instance = new BrowserTracing();\nexport { BrowserTracing };\n/** Inits the Sentry NextJS SDK on the browser with the React SDK. */\nexport function init(options) {\n buildMetadata(options, ['nextjs', 'react']);\n options.environment = options.environment || process.env.NODE_ENV;\n // Only add BrowserTracing if a tracesSampleRate or tracesSampler is set\n var integrations = options.tracesSampleRate === undefined && options.tracesSampler === undefined\n ? options.integrations\n : createClientIntegrations(options.integrations);\n reactInit(__assign(__assign({}, options), { integrations: integrations }));\n configureScope(function (scope) {\n scope.setTag('runtime', 'browser');\n scope.addEventProcessor(function (event) { return (event.type === 'transaction' && event.transaction === '/404' ? null : event); });\n });\n}\nvar defaultBrowserTracingIntegration = new BrowserTracing({\n tracingOrigins: __spread(defaultRequestInstrumentationOptions.tracingOrigins, [/^(api\\/)/]),\n routingInstrumentation: nextRouterInstrumentation,\n});\nfunction createClientIntegrations(integrations) {\n if (integrations) {\n return addIntegration(defaultBrowserTracingIntegration, integrations, {\n BrowserTracing: { keyPath: 'options.routingInstrumentation', value: nextRouterInstrumentation },\n });\n }\n else {\n return [defaultBrowserTracingIntegration];\n }\n}\n//# sourceMappingURL=index.client.js.map","import { SDK_VERSION } from '@sentry/core';\nvar PACKAGE_NAME_PREFIX = 'npm:@sentry/';\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n * @param options sdk options object that gets mutated\n * @param names list of package names\n */\nexport function buildMetadata(options, names) {\n options._metadata = options._metadata || {};\n options._metadata.sdk =\n options._metadata.sdk ||\n {\n name: 'sentry.javascript.nextjs',\n packages: names.map(function (name) { return ({\n name: \"\" + PACKAGE_NAME_PREFIX + name,\n version: SDK_VERSION,\n }); }),\n version: SDK_VERSION,\n };\n}\n//# sourceMappingURL=metadata.js.map","import { init as browserInit, SDK_VERSION } from '@sentry/browser';\n/**\n * Inits the React SDK\n */\nexport function init(options) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.react',\n packages: [\n {\n name: 'npm:@sentry/react',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n browserInit(options);\n}\n//# sourceMappingURL=sdk.js.map","// This file configures the initialization of Sentry on the browser.\n// The config you add here will be used whenever a page is visited.\n// https://docs.sentry.io/platforms/javascript/guides/nextjs/\n\nimport * as Sentry from '@sentry/nextjs'\n\nconst SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN\n\nSentry.init({\n dsn: SENTRY_DSN || 'https://7202cd4544204bd7ab151dd3b41fcad0@o1259111.ingest.sentry.io/6433531',\n // Adjust this value in production, or use tracesSampler for greater control\n tracesSampleRate: 1.0,\n // ...\n // Note: if you want to override the automatic release value, do not set a\n // `release` value here - use the environment variable `SENTRY_RELEASE`, so\n // that it will also get attached to your source maps\n})\n","(function(){var e={162:function(e){var t=e.exports={};var r;var n;function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}(function(){try{if(typeof setTimeout===\"function\"){r=setTimeout}else{r=defaultSetTimout}}catch(e){r=defaultSetTimout}try{if(typeof clearTimeout===\"function\"){n=clearTimeout}else{n=defaultClearTimeout}}catch(e){n=defaultClearTimeout}})();function runTimeout(e){if(r===setTimeout){return setTimeout(e,0)}if((r===defaultSetTimout||!r)&&setTimeout){r=setTimeout;return setTimeout(e,0)}try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}function runClearTimeout(e){if(n===clearTimeout){return clearTimeout(e)}if((n===defaultClearTimeout||!n)&&clearTimeout){n=clearTimeout;return clearTimeout(e)}try{return n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}var i=[];var o=false;var u;var a=-1;function cleanUpNextTick(){if(!o||!u){return}o=false;if(u.length){i=u.concat(i)}else{a=-1}if(i.length){drainQueue()}}function drainQueue(){if(o){return}var e=runTimeout(cleanUpNextTick);o=true;var t=i.length;while(t){u=i;i=[];while(++a1){for(var r=1;r= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n"],"names":["UNKNOWN_FUNCTION","createFrame","filename","func","lineno","colno","frame","function","in_app","undefined","chromeRegex","chromeEvalRegex","chromeStackParser","line","parts","exec","indexOf","subMatch","_a","extractSafariExtensionDetails","geckoREgex","geckoEvalRegex","geckoStackParser","winjsRegex","winjsStackParser","opera10Regex","opera10StackParser","opera11Regex","opera11StackParser","isSafariExtension","isSafariWebExtension","split","exceptionFromError","ex","frames","parseStackFrames","exception","type","name","value","extractMessage","length","stacktrace","eventFromError","values","stack","popSize","framesToPop","reactMinifiedRegexp","test","message","getPopSize","e","error","eventFromException","hint","attachStacktrace","event","eventFromUnknownInput","syntheticException","level","event_id","eventFromMessage","eventFromString","isUnhandledRejection","is","domException","name_1","tags","code","constructor","extra","__serialized__","normalize","frames_1","eventFromPlainObject","synthetic","input","frames_2","IS_DEBUG_BUILD","__SENTRY_DEBUG__","global","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","setTimeout","wrap","fn","options","before","wrapper","__sentry_wrapped__","sentryWrapped","args","Array","prototype","slice","call","arguments","apply","this","wrappedArguments","map","arg","scope","addEventProcessor","mechanism","property","Object","hasOwnProperty","_oO","getOwnPropertyDescriptor","configurable","defineProperty","get","injectReportDialog","document","eventId","dsn","script","createElement","async","src","onLoad","onload","injectionPoint","head","body","appendChild","SeverityLevels","severityFromString","isSupportedSeverity","Breadcrumbs","id","_options","console","dom","fetch","history","sentry","xhr","addSentryBreadcrumb","addBreadcrumb","category","setupOnce","_consoleBreadcrumb","_innerDomBreadcrumb","handlerData","target","keyAttrs","serializeAttribute","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","breadcrumb","data","logger","endTimestamp","__sentry_own_request__","__sentry_xhr__","method","url","status_code","fetchData","match","response","status","from","to","parsedLoc","location","href","parsedFrom","parsedTo","path","protocol","host","relative","Dedupe","addGlobalEventProcessor","getCurrentHub","currentEvent","self","getIntegration","previousEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","_shouldDropEvent","_previousEvent","currentFrames","_getFramesFromEvent","previousFrames","i","frameA","frameB","currentFingerprint","fingerprint","previousFingerprint","join","GlobalHandlers","_installFunc","onerror","_installGlobalOnErrorHandler","onunhandledrejection","_installGlobalOnUnhandledRejectionHandler","Error","stackTraceLimit","key","installFunc","log","getHubAndAttachStacktrace","hub","msg","column","ERROR_TYPES_RE","groups","_enhanceEventWithInitialFrame","_eventFromIncompleteOnError","addMechanismAndCapture","reason","detail","String","ev","ev0","ev0s","ev0sf","isNaN","parseInt","push","handled","captureEvent","originalException","client","getClient","getOptions","LinkedErrors","_key","_limit","limit","linkedErrors","_walkErrorTree","_handler","DEFAULT_EVENT_TARGET","TryCatch","XMLHttpRequest","eventTarget","requestAnimationFrame","setInterval","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","isArray","forEach","_wrapEventTarget","original","_i","originalCallback","callback","handler","originalSend","xmlHttpRequestProps","prop","wrapOptions","originalFunction","proto","eventName","handleEvent","bind","err","originalRemoveEventListener","wrappedEventHandler","originalEventHandler","UserAgent","navigator","request","referrer","userAgent","headers","Referer","installedIntegrations","filterDuplicates","integrations","reduce","acc","every","accIntegration","setupIntegrations","defaultIntegrations","userIntegrations","filter","userIntegration","integrationsNames","alwaysLastToRun","splice","getIntegrationsToSetup","integration","setupIntegration","ALREADY_SEEN_ERROR","BaseClient","backendClass","_integrations","_numProcessing","_backend","_dsn","captureException","_this","_process","_getBackend","then","_captureEvent","result","captureMessage","promisedEvent","captureSession","session","_isEnabled","release","_sendSession","update","init","getDsn","getTransport","flush","timeout","_isClientDoneProcessing","clientFinished","close","transportFlushed","enabled","initialized","_updateSessionFromEvent","e_1","crashed","errored","exceptions","exceptions_1","exceptions_1_1","next","done","e_1_1","return","sessionNonTerminal","errors","Number","sendSession","resolve","ticked","interval","clearInterval","_prepareEvent","_b","normalizeDepth","_c","normalizeMaxBreadth","prepared","timestamp","_applyClientOptions","_applyIntegrationsMetadata","finalScope","captureContext","applyToEvent","evt","sdkProcessingMetadata","_normalizeEvent","depth","maxBreadth","normalized","breadcrumbs","b","user","contexts","trace","baseClientNormalized","environment","dist","maxValueLength","integrationsArray","keys","sdk","_sendEvent","sendEvent","_processEvent","finalEvent","beforeSend","sampleRate","transport","recordLostEvent","outcome","isTransaction","Math","random","__sentry__","rv","nullErr","_ensureBeforeSendRv","processedEvent","getSession","promise","createEnvelope","items","serializeEnvelope","envelope","serializedHeaders","JSON","stringify","item","itemHeaders","payload","serializedPayload","getSdkMetadataForEnvelopeHeader","api","metadata","version","enhanceEventWithSdkInfo","sdkInfo","packages","createSessionEnvelope","sent_at","Date","toISOString","tunnel","NoopTransport","_","BaseBackend","_transport","_setupTransport","_exception","_hint","_message","_level","_newTransport","_experiments","newTransport","env","eventType","transactionSampling","samplingMethod","rate","skippedNormalization","sample_rates","createEventEnvelope","_metadata","send","makePromiseBuffer","buffer","remove","task","$","add","taskProducer","drain","reject","counter","capturedSetTimeout","clearTimeout","disabledUntil","limits","all","isRateLimited","now","updateRateLimits","e_2","updatedRateLimits","rateLimitHeader","retryAfterHeader","trim","_d","parameters","headerDelay","delay","_e","_f","e_2_1","header","headerDate","parse","parseRetryAfterHeader","eventStatusFromHttpCode","createTransport","makeRequest","bufferSize","rateLimits","envCategory","getEnvelopeType","getRateLimitReason","statusCode","cachedFetchImpl","getNativeFetchImplementation","fetchImpl","sandbox","hidden","contentWindow","removeChild","sendReport","toString","sendBeacon","supports","fetch_1","credentials","keepalive","requestTypeToCategory","ty","BaseTransport","_buffer","_rateLimits","_outcomes","_api","sendClientReports","addEventListener","visibilityState","_flushOutcomes","_sendRequest","useEnvelope","JSONStringifyError","newErr","innerErr","req","eventToSentryRequest","sessionToSentryRequest","outcomes","discarded_events","createClientReportEnvelope","quantity","_handleResponse","requestType","_isRateLimited","_disabledUntil","FetchTransport","_super","_fetch","sentryRequest","originalPayload","Promise","referrerPolicy","fetchParameters","assign","catch","XHRTransport","onreadystatechange","readyState","getResponseHeader","open","setRequestHeader","BrowserBackend","nativeFetch","transportOptions","requestOptions","text","statusText","_reject","makeNewXHRTransport","BrowserClient","showReportDialog","platform","window_1","SENTRY_RELEASE","autoSessionTracking","clientClass","debug","warn","getScope","initialScope","bindClient","initAndBind","startSessionOnHub","startSessionTracking","startSession","ignoreDuration","API","_dsnObject","_tunnel","forceEnvelope","getBaseApiEndpoint","getStoreEndpoint","getStoreEndpointWithUrlEncodedAuth","getEnvelopeEndpointWithUrlEncodedAuth","initAPIDetails","initDsn","port","_getIngestEndpoint","projectId","_encodedAuth","sentry_key","publicKey","sentry_version","_getEnvelopeEndpoint","getReportDialogEndpoint","dsnLike","dialogOptions","endpoint","encodedOptions","encodeURIComponent","email","originalFunctionToString","FunctionToString","Function","context","DEFAULT_IGNORE_ERRORS","InboundFilters","self_1","clientOptions","internalOptions","allowUrls","whitelistUrls","denyUrls","blacklistUrls","ignoreErrors","ignoreInternal","_mergeOptions","_isSentryError","oO","_getPossibleEventMessages","some","pattern","_isIgnoredError","_getEventFilterUrl","_isDeniedUrl","_isAllowedUrl","_getLastValidUrl","SDK_VERSION","Session","sid","duration","startingTime","time","started","ipAddress","ip_address","did","username","toJSON","attrs","user_agent","Hub","_version","_stack","getStackTop","isOlderThan","pushScope","getStack","popScope","pop","withScope","_lastEventId","finalHint","_invokeClient","lastEventId","beforeBreadcrumb","maxBreadcrumbs","mergedBreadcrumb","finalBreadcrumb","setUser","setTags","setExtras","extras","setTag","setExtra","setContext","configureScope","run","oldHub","makeMain","startSpan","_callExtensionMethod","startTransaction","customSamplingContext","traceHeaders","endSession","_sendSessionUpdate","layer","setSession","getUser","currentSession","carrier","getMainCarrier","__SENTRY__","extensions","registry","getHubFromCarrier","setHubOnCarrier","hasHubOnCarrier","activeDomain","domain","active","registryHubTopStack","_Oo","getHubFromActiveDomain","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","clone","newScope","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","setFingerprint","setLevel","setTransactionName","setTransaction","setSpan","span","getSpan","getTransaction","transaction","updatedScope","clear","maxCrumbs","min","clearBreadcrumbs","getTraceContext","transactionName","_applyFingerprint","_notifyEventProcessors","getGlobalEventProcessors","setSDKProcessingMetadata","newData","processors","index","processor","final","concat","callOnHub","FINISH_REASON_TAG","IDLE_TRANSACTION_FINISH_REASONS","errorCallback","activeTransaction","status_1","setStatus","toTraceparent","sample","samplingContext","sampled","setMetadata","tracesSampler","parentSampled","tracesSampleRate","isValidSampleRate","op","_startTransaction","transactionContext","initSpanRecorder","maxSpans","startIdleTransaction","idleTimeout","onScope","addExtensionMethods","_addTracingExtensions","packageToIntegrationMapping","mongodb","module","Mongo","mongoose","mysql","Mysql","pg","Postgres","mappedPackages","moduleName","pkg","p","_autoloadDatabaseIntegrations","DEFAULT_IDLE_TIMEOUT","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","maxlen","spanId","finish","IdleTransaction","_idleHub","_idleTimeout","_onScope","activities","_heartbeatCounter","_finished","_beforeFinishCallbacks","clearActiveTransaction","_initTimeout","spanRecorder","spans","keepSpan","startTimestamp","registerBeforeFinishCallback","_pingHeartbeat","end_1","_beat","heartbeatString","_prevHeartbeatString","SpanRecorder","_maxlen","Span","spanContext","traceId","substring","parentSpanId","description","child","startChild","childSpan","setData","setHttpStatus","httpStatus","spanStatus","spanStatusfromHttpCode","isSuccess","sampledString","toContext","updateWithContext","parent_span_id","span_id","trace_id","start_timestamp","Transaction","_measurements","_hub","_trimEnd","trimEnd","setName","setMeasurements","measurements","newMetadata","finishedSpans","s","prev","current","hasTracingEnabled","maybeOptions","getActiveTransaction","maybeHub","msToSec","secToMs","Severity","htmlTreeAsString","elem","currentElem","out","height","len","sepLength","nextStr","_htmlElementAsString","parentNode","reverse","el","className","classes","attr","tagName","toLowerCase","keyAttrPairs","keyAttr","getAttribute","keyAttrPair","allowedAttrs","getLocationHref","DSN_REGEX","dsnToString","withPassword","pass","dsnFromComponents","components","makeDsn","str","projectMatch","dsnFromString","component","isValidProtocol","validateDsn","setPrototypeOf","__proto__","obj","SentryError","_newTarget","fallbackGlobalObject","getGlobalObject","g","window","getGlobalSingleton","creator","lastHref","handlers","instrumented","instrument","originalConsoleMethod","triggerHandlers","instrumentConsole","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","listener","handlers_1","__sentry_instrumentation_handlers__","handlerForType","refCount","handlers_2","instrumentDOM","xhrproto","originalOpen","xhrInfo","toUpperCase","onreadystatechangeHandler","readyStateArgs","instrumentXHR","originalFetch","getFetchMethod","getFetchUrl","instrumentFetch","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","instrumentHistory","_oldOnErrorHandler","_oldOnUnhandledRejectionHandler","addInstrumentationHandler","fetchArgs","Request","debounceTimerID","lastCapturedEvent","globalListener","isContentEditable","shouldSkipDOMEvent","previous","shouldShortcircuitPreviousDebounce","objectToString","isError","wat","isInstanceOf","isBuiltin","isErrorEvent","isDOMError","isDOMException","isString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","Boolean","isSyntheticEvent","base","PREFIX","CONSOLE_LEVELS","consoleSandbox","originalConsole","wrappedLevels","originalWrappedFunc","__sentry_original__","makeLogger","enable","disable","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","replace","c","r","parseUrl","query","fragment","getFirstException","getEventDescription","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","currentMechanism","mergedData","stripUrlQueryAndFragment","urlPath","checkOrSetAlreadyCaught","__sentry_captured__","isNodeEnv","__SENTRY_BROWSER_BUNDLE__","process","dynamicRequire","mod","require","loadModule","cwd","maxProperties","Infinity","visit","ERROR","normalizeToSize","object","maxSize","encodeURI","utf8Length","memo","hasWeakSet","WeakSet","inner","has","delete","memoBuilder","memoize","unmemoize","valueWithToJSON","includes","stringified","_events","getPrototypeOf","stringifyValue","startsWith","numAdded","visitable","visitKey","visitValue","fill","source","replacementFactory","wrapped","markFunctionWrapped","addNonEnumerableProperty","writable","getOriginalFunction","urlEncode","convertToPlainObject","newObj","getOwnProperties","event_1","serializeEventTarget","currentTarget","CustomEvent","extractedProps","extractExceptionKeysForMessage","maxLength","sort","includedKeys","serialized","dropUndefinedKeys","val","createStackParser","parsers","sortedParsers","a","skipFirst","sortedParsers_1","sortedParsers_1_1","parser","stripSentryFramesAndReverse","localStack","firstFrameFunction","lastFrameFunction","defaultFunctionName","getFunctionName","truncate","max","substr","safeJoin","delimiter","output","isMatchingPattern","supportsFetch","Headers","Response","isNativeFetch","supportsNativeFetch","doc","supportsReferrerPolicy","supportsHistory","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","pushState","replaceState","resolvedSyncPromise","SyncPromise","rejectedSyncPromise","executor","_state","_handlers","_resolve","_setResult","state","_value","_executeHandlers","cachedHandlers","onfulfilled","onrejected","finally","onfinally","isRejected","dateTimestampSource","nowSeconds","platformPerformance","performance","getNodePerformance","timeOrigin","getBrowserPerformance","timestampSource","dateTimestampInSeconds","timestampInSeconds","timestampWithMs","browserPerformanceTimeOrigin","threshold","performanceNow","dateNow","timeOriginDelta","abs","timeOriginIsReliable","navigationStart","timing","navigationStartDelta","setTheme","themes","d","u","l","f","t","n","forcedTheme","disableTransitionOnChange","m","enableSystem","enableColorScheme","T","w","storageKey","S","E","k","defaultTheme","x","L","attribute","I","C","M","children","O","H","K","N","j","A","J","z","P","o","y","localStorage","setItem","documentElement","classList","setAttribute","matchMedia","addListener","removeListener","V","newValue","removeEventListener","style","setProperty","Provider","theme","resolvedTheme","systemTheme","h","dangerouslySetInnerHTML","__html","getItem","createTextNode","getComputedStyle","matches","ref","ref1","exports","__NEXT_P","rest","isInternalLink","isAnchorLink","Link","rel","SectionContainer","div","_path","_path2","_extends","mail","props","xmlns","viewBox","github","facebook","youtube","linkedin","twitter","kind","size","SocialSvg","title","author","language","siteUrl","siteLogo","image","socialBanner","locale","_react","__esModule","default","_router","_router1","_useIntersection","prefetched","prefetch","router","as","isLocalURL","curLocale","_default","useRouter","useMemo","resolveHref","resolvedHref","resolvedAs","shallow","scroll","childRef","Children","only","useIntersection","rootMargin","setIntersectionRef","isVisible","setRef","useCallback","useEffect","shouldPrefetch","isPrefetched","childProps","onClick","defaultPrevented","nodeName","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","isModifiedEvent","preventDefault","linkClicked","onMouseEnter","priority","passHref","localeDomain","isLocaleDomain","getDomainLocale","locales","domainLocales","addBasePath","addLocale","defaultLocale","cloneElement","rootRef","isDisabled","disabled","hasIntersectionObserver","unobserve","useRef","useState","visible","setVisible","root","setRoot","element","createObserver","instance","margin","existing","idList","find","observers","elements","Map","observer","IntersectionObserver","entries","entry","isIntersecting","intersectionRatio","set","observe","disconnect","findIndex","idleCallback","_requestIdleCallback","requestIdleCallback","cancelIdleCallback","Footer","footer","SocialIcon","siteMetadata","getFullYear","onToggleNav","setNavShow","overflow","button","aria-label","svg","navShow","fillRule","clipRule","nav","headerNavLinks","link","useTheme","setMounted","mounted","ThemeSwitch","MobileNav","main","saveScrollPos","asPath","sessionStorage","scrollX","scrollY","restoreScrollPos","json","scrollPos","scrollTo","App","Component","pageProps","shouldScrollRestore","scrollRestoration","onBeforeUnload","onRouteChangeStart","onRouteChangeComplete","Router","useScrollRestoration","ThemeProvider","Head","meta","content","LayoutWrapper","windowIntegrations","_window","Sentry","Integrations","INTEGRATIONS","TRACEPARENT_REGEXP","RegExp","bindReporter","metric","reportAllChanges","prevValue","forceReport","delta","initMetric","floor","PerformanceObserver","supportedEntryTypes","po","getEntries","buffered","onHidden","cb","once","onHiddenOrPageHide","firstHiddenTime","getVisibilityWatcher","timeStamp","reportedMetricIDs","MetricsInstrumentation","_reportAllChanges","_performanceCursor","mark","_trackCLS","_trackLCP","_trackFID","addPerformanceEntries","responseStartTimestamp","requestStartTimestamp","startTime","entryType","addPerformanceNavigationTiming","_startChild","requestStart","responseEnd","responseStart","addRequest","addNavigationSpans","measureStartTimestamp","measureEndTimestamp","addMeasureSpans","firstHidden","shouldRecord","resourceName","origin","initiatorType","transferSize","encodedBodySize","decodedBodySize","addResourceSpans","_trackNavigator","timeOrigin_1","oldValue","measurementTimestamp","normalizedValue","cls","lcpEntry","clsEntry","sources","node","tagMetricInfo","_lcpEntry","_clsEntry","connection","effectiveType","isMeasurementValue","rtt","downlink","deviceMemory","hardwareConcurrency","onReport","report","sessionValue","sessionEntries","entryHandler","hadRecentInput","firstSessionEntry","lastSessionEntry","takeRecords","getCLS","visibilityWatcher","stopListening_1","capture","getLCP","processingStart","getFID","eventEnd","end","start","ctx","isFinite","defaultRequestInstrumentationOptions","traceFetch","traceXHR","tracingOrigins","instrumentOutgoingRequests","shouldCreateSpanForRequest","urlMap","defaultShouldCreateSpan","origins","shouldCreateSpan","__span","append","fetchCallback","__sentry_xhr_span_id__","xhrCallback","DEFAULT_BROWSER_TRACING_OPTIONS","markBackgroundTransactions","maxTransactionDuration","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","pathname","BrowserTracing","_configuredIdleTimeout","_emitOptionsWarning","_metricOptions","_metrics","_getCurrentHub","instrumentRouting","_createRouteTransaction","statusType","beforeNavigate","parentContextFromHeader","metaName","querySelector","getMetaContent","traceparent","extractTraceparentData","getHeaderContext","expandedContext","modifiedContext","finalContext","idleTransaction","maxDuration","diff","adjustTransactionDuration","DEFAULT_TAGS","prevTransactionName","nextRouterInstrumentation","startTransactionCb","routerPrototype","changeStateWrapper","originalChangeStateWrapper","newTransactionName","setNestedKey","keyPath","addIntegration","addIntegrationToArray","userIntegrationsFunc","userFinalIntegrations","addIntegrationToFunction","includesName","defaultBrowserTracingIntegration","names","buildMetadata","createClientIntegrations","SENTRY_DSN","NEXT_PUBLIC_SENTRY_DSN","defaultSetTimout","defaultClearTimeout","runTimeout","cleanUpNextTick","drainQueue","runClearTimeout","Item","fun","array","noop","nextTick","browser","argv","versions","on","off","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","chdir","umask","__nccwpck_require__","ab","__dirname","__k","__","__b","__e","__d","__c","__h","__v","__source","__self","defaultProps","extendStatics","__extends","create","__assign","__rest","getOwnPropertySymbols","propertyIsEnumerable","__values","Symbol","iterator","TypeError","__read","ar","__spread"],"sourceRoot":""}